ummary
Development
Recreate simplified schools calculator Create more engaging “request a quote” form
Misc
Fix white loading screen glitch Remove broken “free quote” link in footer Remove calculator section with broken link on
Calculator
Simple landing page with “Get Started” button
Clicking “Get Started” button reveals questions and scrolls to section
One question visible at a time. Cannot continue if slider = 0. If click next and value is 0, a popup appears.
After completing questions “SEE RESULTS” button becomes visible
Clicking “SEE RESULTS” button reveals pricing table
“Show savings” button are at bottom of each 3 pricing tiers. Also “SHOW my roi” button in CTA section under pricing table.
Clicking show savings/roi button reveals and scrolls to ROI section
Energy savings, absence savings, total cost, total benefit are show. Numbers can be changed by selecting 1-5 year button. Default is 3.
There is “how we calculate” button under ROI columns. Clicking triggers a popup with mor info
Under ROI is CTA button to request quote.
Also visible are case studies.
Clicking request quote button reveals and scrolls to contact form.
Link: https://envelo.solutions/school-pricing-calculator/
Need short summaries for each plan on pricing table Add teacher fee adjustment Tidy up sizes, styling, spacing. Change pricing tier text & list Polish pricing calculations Text for “How we calculate” popup Setup formbackend and emails
Calculations:
spaces = value from communal space slider
classrooms = value from classrooms slider
restrooms = value from restrooms slider
years = (default: 3) value from contract years selector on ROI section
// Set Variables
students = classrooms * 30; (Assuming 30 students on average per classroom)
sickdays = 3; (3 sick days per year)
energysavings = 0.2 (20% energy savings)
studentenergycost = $150 (Average energy cost per student)
tempteachercost = $160 (Average cost per temporary teacher)
// Vape Calculations
vapeYear1 = restrooms * 1110; (Combined install + service price)
vapeYear2 = restrooms * 200; (Service only price)
vapeTotalCost = vapeYear1 + vapeYear2 * (years - 1);
vapeEnergy = 0;
vapeAbsence = 0;
vapeTotalBenefit = vapeEnergy + vapeAbsence;
vapeRoi = calculateROI(vapeTotalBenefit, vapeTotalCost);
// Base Calculations
baseYear1 = (classrooms + spaces) * 400; (Combined install + service price)
baseYear2 = (classrooms + spaces) * 150; (Service only price)
baseTotalCost = baseYear1 + baseYear2 * (years - 1);
baseEnergy = students * studentenergycost * energysavings; (20% of total students * average energy cost)
baseAbsence = classrooms * sickdays * tempteachercost; (3 x classrooms x cost)
baseTotalBenefit = baseEnergy + baseAbsence * years;
baseRoi = calculateROI(baseTotalBenefit, baseTotalCost);
// Premium Calculations
premiumYear1 = (classrooms + spaces + restrooms) * 990; (Combined install + service price)
premiumYear2 = (classrooms + spaces + restrooms) * 170; (Service only price)
premiumTotalCost = premiumYear1 + premiumYear2 * (years - 1);
premiumEnergy = students * studentenergycost * energysavings; (20% of total students * average energy cost)
premiumAbsence = classrooms * sickdays * tempteachercost; (3 x classrooms x cost)
premiumTotalBenefit = premiumEnergy + premiumAbsence * years;
premiumRoi = calculateROI(premiumTotalBenefit, premiumTotalCost);
Notes:
1.? ?Occupany Sensor, Air Quality Sensor, and Occupancy Sensor are not included in the calculations.
scripts.js
____
// Retrieve elements for sliders
const communal_value = document.getElementById("communal_slider"),
communal_thumb = document.getElementById("communal_thumb"),
communal_line = document.getElementById("communal_line");
const classroom_value = document.getElementById("classroom_slider"),
classroom_thumb = document.getElementById("classroom_thumb"),
classroom_line = document.getElementById("classroom_line");
const restroom_value = document.getElementById("restroom_slider"),
restroom_thumb = document.getElementById("restroom_thumb"),
restroom_line = document.getElementById("restroom_line");
// Function to update the display of slider values and position the thumb
function showSliderValue(value, thumb, line) {
thumb.innerHTML = value.value;
const bulletPosition = value.value / value.max;
const space = value.offsetWidth - thumb.offsetWidth;
thumb.style.left = bulletPosition * space + "px";
line.style.width = value.value + "%";
updateTotal();
}
// Set up each slider with event listeners for input changes and window resize
function setupSlider(value, thumb, line) {
showSliderValue(value, thumb, line); // Initialize slider display
window.addEventListener("resize", () => showSliderValue(value, thumb, line)); // Update on resize
value.addEventListener("input", () => showSliderValue(value, thumb, line)); // Update on slider move
}
// Update total calculations based on slider values and selected year
function updateTotal() {
const spaces = parseInt(communal_value.value);
const classrooms = parseInt(classroom_value.value);
const restrooms = parseInt(restroom_value.value);
const years = parseInt(
document.querySelector('input[name="years"]:checked')?.value || 1,
);
// Set Variables
const students = classrooms * 30;