diff options
| author | Hsieh Chin Fan <pham@topo.tw> | 2024-10-26 00:30:00 +0800 |
|---|---|---|
| committer | Hsieh Chin Fan <pham@topo.tw> | 2024-10-26 15:15:51 +0800 |
| commit | 30509b9bb858fa443fbb5b3d909278957b458c61 (patch) | |
| tree | 04c2ba9015351ef60c7fc5480c117a39809c6a76 | |
| parent | 2a2acc8e31aef538a8e68e6b53cacafb38841c26 (diff) | |
feat: add menu item to change path of leader-line
| -rw-r--r-- | src/Link.mjs | 3 | ||||
| -rw-r--r-- | src/MenuItem.mjs | 19 | ||||
| -rw-r--r-- | src/dumbymap.mjs | 5 |
3 files changed, 26 insertions, 1 deletions
diff --git a/src/Link.mjs b/src/Link.mjs index 031b125..590942c 100644 --- a/src/Link.mjs +++ b/src/Link.mjs | |||
| @@ -64,6 +64,7 @@ export const GeoLink = (link) => { | |||
| 64 | hide: true, | 64 | hide: true, |
| 65 | middleLabel: labelText, | 65 | middleLabel: labelText, |
| 66 | path: 'magnet', | 66 | path: 'magnet', |
| 67 | path: link.dataset.linePath ?? 'magnet', | ||
| 67 | }) | 68 | }) |
| 68 | line.show('draw', { duration: 300 }) | 69 | line.show('draw', { duration: 300 }) |
| 69 | 70 | ||
| @@ -181,7 +182,7 @@ export const DocLink = (link) => { | |||
| 181 | fontWeight: 'bold', | 182 | fontWeight: 'bold', |
| 182 | }), | 183 | }), |
| 183 | hide: true, | 184 | hide: true, |
| 184 | path: 'magnet', | 185 | path: link.dataset.linePath ?? 'magnet', |
| 185 | }) | 186 | }) |
| 186 | link.lines.push(line) | 187 | link.lines.push(line) |
| 187 | line.show('draw', { duration: 300 }) | 188 | line.show('draw', { duration: 300 }) |
diff --git a/src/MenuItem.mjs b/src/MenuItem.mjs index 4769817..7c617cc 100644 --- a/src/MenuItem.mjs +++ b/src/MenuItem.mjs | |||
| @@ -474,3 +474,22 @@ export const setGeoLinkType = (link) => new Folder({ | |||
| 474 | }) | 474 | }) |
| 475 | }), | 475 | }), |
| 476 | }) | 476 | }) |
| 477 | |||
| 478 | /** | ||
| 479 | * set type of leader-line | ||
| 480 | * | ||
| 481 | * @param {GeoLink | DocLink} link | ||
| 482 | */ | ||
| 483 | export const setLeaderLineType = (link) => new Folder({ | ||
| 484 | text: 'Line Type', | ||
| 485 | items: ['magnet', 'straight', 'grid', 'fluid'] | ||
| 486 | .map(path => new Item({ | ||
| 487 | text: path, | ||
| 488 | className: ['keep-menu'], | ||
| 489 | onclick: () => { | ||
| 490 | link.dataset.linePath = path | ||
| 491 | removeLeaderLines(link) | ||
| 492 | link.onmouseover() | ||
| 493 | }, | ||
| 494 | })), | ||
| 495 | }) | ||
diff --git a/src/dumbymap.mjs b/src/dumbymap.mjs index f1e971b..3315a03 100644 --- a/src/dumbymap.mjs +++ b/src/dumbymap.mjs | |||
| @@ -532,6 +532,7 @@ export const generateMaps = (container, { | |||
| 532 | const map = e.target.closest('.mapclay') | 532 | const map = e.target.closest('.mapclay') |
| 533 | const block = e.target.closest('.dumby-block') | 533 | const block = e.target.closest('.dumby-block') |
| 534 | const geoLink = e.target.closest('.geolink') | 534 | const geoLink = e.target.closest('.geolink') |
| 535 | const linkWithLine = e.target.closest('.with-leader-line') | ||
| 535 | if (!block && !map && !geoLink) return | 536 | if (!block && !map && !geoLink) return |
| 536 | e.preventDefault() | 537 | e.preventDefault() |
| 537 | 538 | ||
| @@ -551,6 +552,10 @@ export const generateMaps = (container, { | |||
| 551 | }).observe(menu, { childList: true }) | 552 | }).observe(menu, { childList: true }) |
| 552 | menu.timer = setTimeout(() => menu.remove(), 100) | 553 | menu.timer = setTimeout(() => menu.remove(), 100) |
| 553 | 554 | ||
| 555 | if (linkWithLine) { | ||
| 556 | menu.appendChild(menuItem.setLeaderLineType(linkWithLine)) | ||
| 557 | } | ||
| 558 | |||
| 554 | // Menu Items for GeoLink | 559 | // Menu Items for GeoLink |
| 555 | if (geoLink) { | 560 | if (geoLink) { |
| 556 | if (geoLink.classList.contains('from-text')) { | 561 | if (geoLink.classList.contains('from-text')) { |