diff options
| -rw-r--r-- | src/MenuItem.mjs | 35 | ||||
| -rw-r--r-- | src/css/dumbymap.css | 49 | ||||
| -rw-r--r-- | src/dumbymap.mjs | 13 |
3 files changed, 82 insertions, 15 deletions
diff --git a/src/MenuItem.mjs b/src/MenuItem.mjs index 5604ef1..b4d4650 100644 --- a/src/MenuItem.mjs +++ b/src/MenuItem.mjs | |||
| @@ -171,7 +171,38 @@ export const renderResults = (dumbymap, map) => | |||
| 171 | modal.closeByEscKey = false; | 171 | modal.closeByEscKey = false; |
| 172 | // HACK find another way to override inline style | 172 | // HACK find another way to override inline style |
| 173 | document.querySelector('.plainmodal-overlay-force').style.position = | 173 | document.querySelector('.plainmodal-overlay-force').style.position = |
| 174 | 'static'; | 174 | 'relative'; |
| 175 | console.log(map.renderer.results) | 175 | map.renderer.results.forEach(result => |
| 176 | printObject( | ||
| 177 | result, | ||
| 178 | dumbymap.modalContent, | ||
| 179 | `${result.func.name} (${result.state})`, | ||
| 180 | ), | ||
| 181 | ); | ||
| 176 | }, | 182 | }, |
| 177 | }); | 183 | }); |
| 184 | |||
| 185 | function printObject(obj, parentElement, name) { | ||
| 186 | const detailsEle = document.createElement('details'); | ||
| 187 | const details = name ?? Object.values(obj)[0]; | ||
| 188 | detailsEle.innerHTML = `<summary>${details}</summary`; | ||
| 189 | parentElement.appendChild(detailsEle); | ||
| 190 | |||
| 191 | detailsEle.onclick = () => { | ||
| 192 | if (detailsEle.children.length > 1) return; | ||
| 193 | |||
| 194 | Object.entries(obj).forEach(([key, value]) => { | ||
| 195 | if (typeof value === 'object') { | ||
| 196 | printObject(value, detailsEle, key); | ||
| 197 | } else { | ||
| 198 | let valueString = | ||
| 199 | typeof value === 'function' | ||
| 200 | ? `<pre>${value}</pre>` | ||
| 201 | : value ?? typeof value; | ||
| 202 | const propertyElement = document.createElement('p'); | ||
| 203 | propertyElement.innerHTML = `<strong>${key}</strong>: ${valueString}`; | ||
| 204 | detailsEle.appendChild(propertyElement); | ||
| 205 | } | ||
| 206 | }); | ||
| 207 | }; | ||
| 208 | } | ||
diff --git a/src/css/dumbymap.css b/src/css/dumbymap.css index 822353f..999dab5 100644 --- a/src/css/dumbymap.css +++ b/src/css/dumbymap.css | |||
| @@ -659,6 +659,8 @@ root { | |||
| 659 | .sub-menu { | 659 | .sub-menu { |
| 660 | overflow: scroll; | 660 | overflow: scroll; |
| 661 | width: fit-content; | 661 | width: fit-content; |
| 662 | min-width: 6rem; | ||
| 663 | max-height: 40vh; | ||
| 662 | 664 | ||
| 663 | position: absolute; | 665 | position: absolute; |
| 664 | z-index: 100; | 666 | z-index: 100; |
| @@ -667,12 +669,53 @@ root { | |||
| 667 | border-radius: 6px; | 669 | border-radius: 6px; |
| 668 | 670 | ||
| 669 | background: white; | 671 | background: white; |
| 670 | min-width: 6rem; | ||
| 671 | max-height: 40vh; | ||
| 672 | 672 | ||
| 673 | .menu-item { | 673 | .menu-item { |
| 674 | min-width: 5em; | ||
| 674 | margin: 0 auto; | 675 | margin: 0 auto; |
| 675 | padding-inline: 0.5em; | 676 | padding-inline: 0.5em; |
| 676 | min-width: 5em; | 677 | } |
| 678 | } | ||
| 679 | |||
| 680 | .plainoverlay-body { | ||
| 681 | position: absolute; | ||
| 682 | } | ||
| 683 | |||
| 684 | .plainmodal-content { | ||
| 685 | width: 700px; | ||
| 686 | height: 80%; | ||
| 687 | padding: 1em; | ||
| 688 | |||
| 689 | position: absolute; | ||
| 690 | left: 50vw; | ||
| 691 | top: 50vh; | ||
| 692 | |||
| 693 | background: white; | ||
| 694 | |||
| 695 | transform: translate(-50%, -50%); | ||
| 696 | overflow-y: scroll; | ||
| 697 | |||
| 698 | details { | ||
| 699 | margin-bottom: 0.5em; | ||
| 700 | } | ||
| 701 | |||
| 702 | summary { | ||
| 703 | cursor: pointer; | ||
| 704 | } | ||
| 705 | |||
| 706 | details > :not(summary) { | ||
| 707 | padding-left: 1em; | ||
| 708 | } | ||
| 709 | |||
| 710 | p { | ||
| 711 | margin: 0.3em; | ||
| 712 | white-space: nowrap; | ||
| 713 | overflow-x: scroll; | ||
| 714 | } | ||
| 715 | |||
| 716 | pre { | ||
| 717 | padding: 0.5em; | ||
| 718 | |||
| 719 | background: #f0f0f0; | ||
| 677 | } | 720 | } |
| 678 | } | 721 | } |
diff --git a/src/dumbymap.mjs b/src/dumbymap.mjs index b9b9fa2..c7bdc92 100644 --- a/src/dumbymap.mjs +++ b/src/dumbymap.mjs | |||
| @@ -167,6 +167,7 @@ export const generateMaps = (container, { delay, mapCallback }) => { | |||
| 167 | showcase, | 167 | showcase, |
| 168 | blocks, | 168 | blocks, |
| 169 | modal, | 169 | modal, |
| 170 | modalContent, | ||
| 170 | utils: { | 171 | utils: { |
| 171 | ...utils, | 172 | ...utils, |
| 172 | renderedMaps: () => | 173 | renderedMaps: () => |
| @@ -531,19 +532,11 @@ export const generateMaps = (container, { delay, mapCallback }) => { | |||
| 531 | const menu = document.createElement('div'); | 532 | const menu = document.createElement('div'); |
| 532 | menu.className = 'menu'; | 533 | menu.className = 'menu'; |
| 533 | menu.onclick = () => (menu.style.display = 'none'); | 534 | menu.onclick = () => (menu.style.display = 'none'); |
| 534 | new MutationObserver(() => { | ||
| 535 | if (menu.style.display === 'none') { | ||
| 536 | menu.style.cssText = ''; | ||
| 537 | menu.replaceChildren(); | ||
| 538 | } | ||
| 539 | }).observe(menu, { | ||
| 540 | attributes: true, | ||
| 541 | attributeFilter: ['style'], | ||
| 542 | }); | ||
| 543 | container.appendChild(menu); | 535 | container.appendChild(menu); |
| 544 | 536 | ||
| 545 | // Menu Items | 537 | // Menu Items |
| 546 | container.oncontextmenu = e => { | 538 | container.oncontextmenu = e => { |
| 539 | menu.replaceChildren(); | ||
| 547 | e.preventDefault(); | 540 | e.preventDefault(); |
| 548 | 541 | ||
| 549 | // GeoLinks | 542 | // GeoLinks |
| @@ -558,7 +551,7 @@ export const generateMaps = (container, { delay, mapCallback }) => { | |||
| 558 | 551 | ||
| 559 | // Print Map Results | 552 | // Print Map Results |
| 560 | const map = e.target.closest('.mapclay'); | 553 | const map = e.target.closest('.mapclay'); |
| 561 | if (map) { | 554 | if (map?.renderer?.results) { |
| 562 | menu.appendChild(menuItem.renderResults(dumbymap, map)); | 555 | menu.appendChild(menuItem.renderResults(dumbymap, map)); |
| 563 | } | 556 | } |
| 564 | 557 | ||