diff options
Diffstat (limited to 'src/MenuItem.mjs')
-rw-r--r-- | src/MenuItem.mjs | 35 |
1 files changed, 33 insertions, 2 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 | } | ||