From e5a718f1f8ae0a3e0a8c24bf8d3d57776a882848 Mon Sep 17 00:00:00 2001 From: Dave Hunt Date: Wed, 6 Mar 2024 11:23:47 +0000 Subject: [PATCH 1/3] Load values from URL --- docs/calculator.html | 58 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/docs/calculator.html b/docs/calculator.html index bbf39d6..2b97053 100644 --- a/docs/calculator.html +++ b/docs/calculator.html @@ -327,6 +327,58 @@

low

.querySelector("form") .addEventListener("reset", () => setTimeout(refreshScore, 0)); + function populateFormFromURL() { + var queryString = window.location.search; + var urlParams = new URLSearchParams(queryString); + + var platforms = urlParams.get('platform'); + if (platforms) { + platforms = platforms.split(","); + platforms.forEach(function(platform) { + document.getElementById("platform-" + platform.trim()).checked = true; + }); + } + + var impactOnBrowser = urlParams.get('browser'); + if (impactOnBrowser) { + document.getElementById("browser-" + impactOnBrowser).checked = true; + } + + var impactOnSite = urlParams.get('site'); + if (impactOnSite) { + document.getElementById("site-" + impactOnSite).checked = true; + } + + var configuration = urlParams.get('config'); + if (configuration) { + document.getElementById("scenario-" + configuration).checked = true; + } + + var pageLoadImpact = urlParams.get('pageload'); + if (pageLoadImpact) { + document.getElementById("pageload-" + pageLoadImpact).checked = true; + } + + var pagesAffected = urlParams.get('pages'); + if (pagesAffected) { + document.getElementById("pages-" + pagesAffected).checked = true; + } + + var resourceImpact = urlParams.get('resource'); + if (resourceImpact) { + document.getElementById("resource-" + resourceImpact).checked = true; + } + + document.getElementById("animation").checked = (urlParams.get('animation') === 'true'); + document.getElementById("reproducible").checked = (urlParams.get('reproducible') === 'true'); + document.getElementById("multiple-sites").checked = (urlParams.get('multiple-sites') === 'true'); + document.getElementById("multiple-reporters").checked = (urlParams.get('multiple-reporters') === 'true'); + document.getElementById("chrome").checked = (urlParams.get('chrome') === 'true'); + + // Refresh the score after populating the form + refreshScore(); + } + function generateDebug() { for (const input of document.querySelectorAll( "[data-basescore], [data-multiplier]" @@ -510,8 +562,10 @@

low

navigator.clipboard.writeText(document.querySelector("#keywords").value); } - generateDebug(); - refreshScore(); + window.onload = function() { + generateDebug(); + populateFormFromURL(); + }; From 499b4378b104b84487da9f313013174bd20841c3 Mon Sep 17 00:00:00 2001 From: Dave Hunt Date: Wed, 6 Mar 2024 11:45:52 +0000 Subject: [PATCH 2/3] Generate and update URL when filling in form --- docs/calculator.html | 47 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/docs/calculator.html b/docs/calculator.html index 2b97053..aa8f3c9 100644 --- a/docs/calculator.html +++ b/docs/calculator.html @@ -379,6 +379,51 @@

low

refreshScore(); } + function generateURLFromForm() { + var params = []; + + // Get the values of the platform checkboxes that are checked + var platforms = document.querySelectorAll('input[type=checkbox][id^=platform]:checked'); + if (platforms.length > 0) { + var platformValues = []; + platforms.forEach(function(platform) { + platformValues.push(platform.id.replace('platform-', '')); + }); + params.push('platform=' + platformValues.join(',')); + } + + var impactOnBrowser = document.querySelector('input[type=radio][name=affects-browser]:checked'); + params.push('browser=' + impactOnBrowser.id.replace('browser-', '')); + + var impactOnSite = document.querySelector('input[type=radio][name=affects-site]:checked'); + params.push('site=' + impactOnSite.id.replace('site-', '')); + + var configuration = document.querySelector('input[type=radio][name=affects-scenario]:checked'); + params.push('config=' + configuration.id.replace('scenario-', '')); + + var pageLoadImpact = document.querySelector('input[type=radio][name=pageload-impact]:checked'); + params.push('pageload=' + pageLoadImpact.id.replace('pageload-', '')); + + var pagesAffected = document.querySelector('input[type=radio][name=pages-affected]:checked'); + params.push('pages=' + pagesAffected.id.replace('pages-', '')); + + var resourceImpact = document.querySelector('input[type=radio][name=resource-impact]:checked'); + params.push('resource=' + resourceImpact.id.replace('resource-', '')); + + var additionalCheckboxes = document.querySelectorAll('input[type=checkbox]:checked'); + additionalCheckboxes.forEach(function(checkbox) { + params.push(checkbox.id + '=true'); + }); + + // Combine all parameters into a single URL string + var url = window.location.origin + window.location.pathname; + if (params.length > 0) { + url += '?' + params.join('&'); + } + + return url; + } + function generateDebug() { for (const input of document.querySelectorAll( "[data-basescore], [data-multiplier]" @@ -459,6 +504,8 @@

low

document.querySelector("#impact").textContent = impact; document.querySelector("#keywords").value = keywords.size == 0 ? "(none)" : [...keywords].join(", "); + var newURL = generateURLFromForm(); + window.history.replaceState(null, null, newURL); } function getGroups() { From d94f55815d61e7c12297454561919484fe69c4da Mon Sep 17 00:00:00 2001 From: Dave Hunt Date: Wed, 6 Mar 2024 11:54:13 +0000 Subject: [PATCH 3/3] Include URL params in link to calculator from bugzilla comment --- docs/calculator.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/calculator.html b/docs/calculator.html index aa8f3c9..d78a0bb 100644 --- a/docs/calculator.html +++ b/docs/calculator.html @@ -556,7 +556,7 @@

low

function computeTextSummary() { const { impact, score, scoreInterval } = computeScore(); const summaryLines = [ - `The [Performance Impact Calculator](https://mozilla.github.io/perf-triage/calculator.html) has determined this bug's performance impact to be **${impact}**. If you'd like to request re-triage, you can reset the Performance Impact flag to "?" or needinfo the triage sheriff.`, + `The [Performance Impact Calculator](${generateURLFromForm()}) has determined this bug's performance impact to be **${impact}**. If you'd like to request re-triage, you can reset the Performance Impact flag to "?" or needinfo the triage sheriff.`, "" ]; const groups = getGroups();