From 7d571d240d0930a45e57cf6d9a3fb5b239b5c262 Mon Sep 17 00:00:00 2001 From: Peter Edmond Date: Sat, 31 May 2025 21:59:15 +0100 Subject: [PATCH] Added code to dynamically update the qualifiers from the Qualtrics database --- insertQualifiers.js | 94 +++++++++++++++++++++++++++++++++++++++++++++ reportTemplate.html | 21 +++------- 2 files changed, 100 insertions(+), 15 deletions(-) create mode 100644 insertQualifiers.js diff --git a/insertQualifiers.js b/insertQualifiers.js new file mode 100644 index 0000000..561130b --- /dev/null +++ b/insertQualifiers.js @@ -0,0 +1,94 @@ + +function insertQualifiers(){ + //alert("qualifying...."); + + surveyId = document.getElementById("surveyId").value; + if (/^SV_[a-zA-Z0-9]+$/.test(surveyId)) { + console.log("Valid: starts with SV_ and followed by letters/numbers only"); + console.log(surveyId); + } else { + console.log("Invalid: must start with SV_ and be followed by only letters or numbers"); + alert("Invalid survey ID"); + return; + } + + + // Create the form data object + const formData = new FormData(); + formData.append('surveyId', surveyId); + + // Send the form data using fetch + fetch('get_qualifiers.php', { + method: 'POST', + body: formData + }) + .then(response => response.text()) + .then(data => { + // Output result + console.log(data); + const parsed = JSON.parse(data); + console.log (parsed["1"]); + document.querySelector('label[for="location"]').textContent = parsed["1"][0]; + + // .shift(); // + parsed["1"][0] = "Any"; + select = document.getElementById('location'); + optionCount = select.options.length; + if (optionCount > 1) {return;} + select.innerHTML = ''; // removes all option elements inside + + parsed["1"].forEach((loc, index) => { + const option = document.createElement("option"); + option.value = index; + option.textContent = loc; + select.appendChild(option); + }); + + document.querySelector('label[for="level"]').textContent = "New question 2"; + + // .shift(); // + parsed["2"][0] = "Any"; + select = document.getElementById('level'); + optionCount = select.options.length; + if (optionCount > 1) {return;} + select.innerHTML = ''; // removes all option elements inside + + parsed["2"].forEach((loc, index) => { + const option = document.createElement("option"); + option.value = index; + option.textContent = loc; + select.appendChild(option); + }); + + document.querySelector('label[for="gov"]').textContent = "New question 3"; + parsed["3"][0] = "Any"; + select = document.getElementById('gov'); + optionCount = select.options.length; + if (optionCount > 1) {return;} + select.innerHTML = ''; // removes all option elements inside + + parsed["3"].forEach((loc, index) => { + const option = document.createElement("option"); + option.value = index; + option.textContent = loc; + select.appendChild(option); + }); + + + + /*document.getElementById("record_no").textContent = total; + if (total < 9){ + return; + }*/ + // return data; // Should be an array like [{ value: -3, count: 2 }, ..., { value: 3, count: 5 }] + + }) + .catch(error => { + console.error('Error:', error); + }); +} + + + + + diff --git a/reportTemplate.html b/reportTemplate.html index a515817..2a3b59a 100644 --- a/reportTemplate.html +++ b/reportTemplate.html @@ -9,6 +9,7 @@ +