Results
++ This is where you'd see the results of the analysis. Coming soon! +
+ + +diff --git a/src/core/ExtensionManager.js b/src/core/ExtensionManager.js index 58de51d..8d78c35 100644 --- a/src/core/ExtensionManager.js +++ b/src/core/ExtensionManager.js @@ -69,12 +69,24 @@ class ExtensionManager { } } + removeVisiblePanels() { + const panels = document.querySelectorAll('.cv-panel.cv-panel--visible'); + if (!panels.length) return; + + panels.forEach((panel) => { + panel.classList.remove('cv-panel--visible'); + setTimeout(() => { + panel.remove(); + }, 300); + }); + } + async togglePanel(panelType) { try { - const panel = this.panels.get(panelType); + const visiblePanels = document.querySelectorAll('.cv-panel.cv-panel--visible'); - if (panel && panel.isVisible) { - this.closePanel(panelType); + if (visiblePanels.length) { + this.removeVisiblePanels(); } else { await this.openPanel(panelType); } @@ -98,6 +110,8 @@ class ExtensionManager { } async openPanel(panelType, data = {}) { + this.removeVisiblePanels(); + let panel = this.panels.get(panelType); // Create a new panel if one does not already exist @@ -111,10 +125,10 @@ class ExtensionManager { await panel.show(); } - closePanel(panelType) { + async closePanel(panelType) { const panel = this.panels.get(panelType); if (panel) { - panel.hide(); + await panel.hide(); } } @@ -137,3 +151,5 @@ class ExtensionManager { } export { ExtensionManager }; + +export const extensionManager = new ExtensionManager(); diff --git a/src/core/Panel.js b/src/core/Panel.js index faef7a3..466fb20 100644 --- a/src/core/Panel.js +++ b/src/core/Panel.js @@ -16,8 +16,15 @@ class Panel { cssFile: 'src/styles/styles.css', jsFile: 'src/panels/welcome/welcome.js', containerId: 'carbon-visualizer-welcome-panel', - className: 'cv cv-panel--welcome' - } + className: 'cv-panel--welcome' + }, + results: { + htmlFile: 'src/panels/results/results.html', + cssFile: 'src/panels/results/results.css', + jsFile: 'src/panels/results/results.js', + containerId: 'carbon-visualizer-results-panel', + className: 'cv-panel--results' + }, }; return configs[type] || configs.welcome; @@ -119,8 +126,9 @@ class Panel { while (retries < maxRetries) { const analyzeBtn = this.container.querySelector('#analyze-page-btn'); + const backToWelcomeBtn = this.container.querySelector('#back-to-welcome-btn'); - if (analyzeBtn) { + if (analyzeBtn || backToWelcomeBtn) { return; // Element found, we're good to go } diff --git a/src/panels/results/results.html b/src/panels/results/results.html new file mode 100644 index 0000000..4359767 --- /dev/null +++ b/src/panels/results/results.html @@ -0,0 +1,30 @@ + + +
+ + + + ++ This is where you'd see the results of the analysis. Coming soon! +
+ + ++
Assess your website's carbon footprint using Lighthouse performance metrics and CO2.js calculations.
-