aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/MenuItem.mjs
diff options
context:
space:
mode:
authorHsieh Chin Fan <pham@topo.tw>2024-10-01 11:25:55 +0800
committerHsieh Chin Fan <pham@topo.tw>2024-10-01 12:30:07 +0800
commitcca746babcf70cc98dd8a282e9f9236133c04e49 (patch)
treed138343eade773f68834ae7b817be8fee4845948 /src/MenuItem.mjs
parent5f26194f7a285a2743a84056deb3b494bde9f7f5 (diff)
feat: print details of renderer result (finally)
Diffstat (limited to 'src/MenuItem.mjs')
-rw-r--r--src/MenuItem.mjs35
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
185function 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}