😇Digital SAT® Score Calculator (ok)
https://www.albert.io/blog/sat-score-calculator/
Last updated
Was this helpful?
https://www.albert.io/blog/sat-score-calculator/
Last updated
Was this helpful?
<div id="calculator_tabs59" class="scld-calculator-tabs-container ">
<h1 class="scld-calculator-title">SAT® Score Calculator <a class="round-link"
href="https://www.albert.io/subjects/high-school/act-sat/sat?utm_source=blog&utm_medium=blog&utm_campaign=sat-score-calculator"
style="background-color: #6565c6">
<img src="https://assets.albert.io/canary-assets/subject-icons/19b8e13d-3ec5-4346-872e-50f8635aa2a5.svg" class="scld-calculator-icon">
</a>
</h1>
<div class="calulator-title">
<h2 class="scld-calculator-subtitle">Enter your scores</h2>
<h2 class="scld-result-title">Results</h2>
</div>
<div id="calculator_59_0" class="scld-calculator-tabs-sat scld-calculator__wrapper">
<div id="tab_59_0" class="scld-calculator scld-calculator__input__container">
<div id="59_0" class="scld-calculate">
<p><label>Reading and Writing Module 1</label></p>
<p class="calculator__item">
<input type="range" min="0" max="27" value="14" data-part="Reading_and_Writing_Score"
data-subject="Reading_and_Writing_Module_1" data-id="59_0">
<input type="number" min="0" max="27" value="14" data-part="Reading_and_Writing_Score"
data-subject="Reading_and_Writing_Module_1" data-id="59_0">
<span class="scld-out-of-correct-number">/27</span>
</p>
<p><label>Reading and Writing Module 2</label></p>
<p class="calculator__item">
<input type="range" min="0" max="27" value="14" data-part="Reading_and_Writing_Score"
data-subject="Reading_and_Writing_Module_2" data-id="59_0">
<input type="number" min="0" max="27" value="14" data-part="Reading_and_Writing_Score"
data-subject="Reading_and_Writing_Module_2" data-id="59_0">
<span class="scld-out-of-correct-number">/27</span>
</p>
<p><label>Math Module 1</label></p>
<p class="calculator__item">
<input type="range" min="0" max="22" value="11" data-part="Math_Score" data-subject="Math_Module_1"
data-id="59_0">
<input type="number" min="0" max="22" value="11" data-part="Math_Score" data-subject="Math_Module_1"
data-id="59_0">
<span class="scld-out-of-correct-number">/22</span>
</p>
<p><label>Math Module 2</label></p>
<p class="calculator__item">
<input type="range" min="0" max="22" value="11" data-part="Math_Score" data-subject="Math_Module_2"
data-id="59_0">
<input type="number" min="0" max="22" value="11" data-part="Math_Score" data-subject="Math_Module_2"
data-id="59_0">
<span class="scld-out-of-correct-number">/22</span>
</p>
</div>
</div>
<div id="results_59_0" style="float: left" class="scld-calculator__result__container">
<div class="scld-result-container"><span>Reading and Writing Score</span>
<div class="scld-result-score shown-result">
<output data-insert="Reading_and_Writing_Module_1" data-score="0" data-part="Reading_and_Writing_Score"
class="scld-result-output-wc subject-result">430</output>
</div>
</div>
<div style="display: none"><span>Reading and Writing Score</span>
<div class=" hidden-result">
<output data-insert="Reading_and_Writing_Module_2" data-part="Reading_and_Writing_Score">190</output>
</div>
</div>
<div class="scld-result-container"><span>Math Score</span>
<div class="scld-result-score shown-result">
<output data-insert="Math_Module_1" data-score="0" data-part="Math_Score"
class="scld-result-output-wc subject-result">430</output>
</div>
</div>
<div style="display: none"><span>Math Score</span>
<div class=" hidden-result">
<output data-insert="Math_Module_2" data-part="Math_Score">190</output>
</div>
</div>
<div class="scld-result-container"><span class="scld-result-predicted scld-result-last">Total SAT® Score</span>
<div class="scld-result-score change-color" style="background-color: rgb(157, 105, 27);">
<output data-insert="total" data-sat-max="1590" class="scld-result-output-wc">860</output>
</div>
</div>
</div>
</div>
<div id="calculator_59_1" class="scld-calculator-tabs-sat scld-calculator__wrapper" style="display: none">
<div id="tab_59_1" class="scld-calculator scld-calculator__input__container">
<div id="59_1" class="scld-calculate">
<p><label>SAT® Reading Section</label></p>
<p class="calculator__item">
<input type="range" min="0" max="52" value="26" data-part="Reading_&_Writing_Section_Score"
data-subject="SAT®_Reading_Section" data-id="59_1">
<input type="number" min="0" max="52" value="26" data-part="Reading_&_Writing_Section_Score"
data-subject="SAT®_Reading_Section" data-id="59_1">
<span class="scld-out-of-correct-number">/52</span>
</p>
<p><label>SAT® Writing Section</label></p>
<p class="calculator__item">
<input type="range" min="0" max="44" value="22" data-part="Reading_&_Writing_Section_Score"
data-subject="SAT®_Writing_Section" data-id="59_1">
<input type="number" min="0" max="44" value="22" data-part="Reading_&_Writing_Section_Score"
data-subject="SAT®_Writing_Section" data-id="59_1">
<span class="scld-out-of-correct-number">/44</span>
</p>
<p><label>SAT® Math Section</label></p>
<p class="calculator__item">
<input type="range" min="0" max="58" value="29" data-part="" data-subject="SAT®_Math_Section" data-id="59_1">
<input type="number" min="0" max="58" value="29" data-part="" data-subject="SAT®_Math_Section" data-id="59_1">
<span class="scld-out-of-correct-number">/58</span>
</p>
</div>
</div>
<div id="results_59_1" style="float: left" class="scld-calculator__result__container">
<div class="scld-result-container"><span>Reading & Writing Section Score</span>
<div class="scld-result-score shown-result">
<output data-insert="SAT®_Reading_Section" data-score="0" data-part="Reading_&_Writing_Section_Score"
class="scld-result-output-wc subject-result">490</output>
</div>
</div>
<div style="display: none"><span>Reading & Writing Section Score</span>
<div class=" hidden-result">
<output data-insert="SAT®_Writing_Section" data-part="Reading_&_Writing_Section_Score">240</output>
</div>
</div>
<div class="scld-result-container"><span>SAT® Math Section</span>
<div class="scld-result-score shown-result">
<output data-insert="SAT®_Math_Section" data-score="0" data-part=""
class="scld-result-output-wc subject-result">520</output>
</div>
</div>
<div class="scld-result-container"><span class="scld-result-predicted scld-result-last">Total SAT® Score</span>
<div class="scld-result-score change-color" style="background-color: rgb(157, 105, 27);">
<output data-insert="total" data-sat-max="1600" class="scld-result-output-wc">1010</output>
</div>
</div>
</div>
</div>
<div class="calc-switcher-container">
<div>
<h3 class="scld-tab-switcher-title">Choose your score curve</h3>
<p>
<input type="radio" name="calculator_tab_59_0">
<a href="#" class="scld-calculator-tab-button scld-selected-tab-button" data-tab-id="59"
data-calculator-id="59_0">Digital SAT®</a>
<input type="radio" name="calculator_tab_59_1">
<a href="#" class="scld-calculator-tab-button " data-tab-id="59" data-calculator-id="59_1">Legacy
Pen-and-Paper</a>
</p>
</div>
<div class="scld-calculator__author">
<a
href="https://www.albert.io/subjects/high-school/act-sat/sat?utm_source=blog&utm_medium=blog&utm_campaign=sat-score-calculator">Try
our practice tests!</a>
</div>
</div>
</div>
C:\xampp82\htdocs\satscore\index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script src="./calculator.js"></script>
<link rel="stylesheet" href="./calc-style.css">
<title>Document</title>
</head>
<body>
<div id="calculator_tabs59" class="scld-calculator-tabs-container ">
<h1 class="scld-calculator-title">SAT® Score Calculator <a class="round-link"
href="https://www.albert.io/subjects/high-school/act-sat/sat?utm_source=blog&utm_medium=blog&utm_campaign=sat-score-calculator"
style="background-color: #6565c6">
<img src="https://assets.albert.io/canary-assets/subject-icons/19b8e13d-3ec5-4346-872e-50f8635aa2a5.svg"
class="scld-calculator-icon">
</a>
</h1>
<div class="calulator-title">
<h2 class="scld-calculator-subtitle">Enter your scores</h2>
<h2 class="scld-result-title">Results</h2>
</div>
<div id="calculator_59_0" class="scld-calculator-tabs-sat scld-calculator__wrapper">
<div id="tab_59_0" class="scld-calculator scld-calculator__input__container">
<div id="59_0" class="scld-calculate">
<p><label>Reading and Writing Module 1</label></p>
<p class="calculator__item">
<input type="range" min="0" max="27" value="14" data-part="Reading_and_Writing_Score"
data-subject="Reading_and_Writing_Module_1" data-id="59_0">
<input type="number" min="0" max="27" value="14" data-part="Reading_and_Writing_Score"
data-subject="Reading_and_Writing_Module_1" data-id="59_0">
<span class="scld-out-of-correct-number">/27</span>
</p>
<p><label>Reading and Writing Module 2</label></p>
<p class="calculator__item">
<input type="range" min="0" max="27" value="14" data-part="Reading_and_Writing_Score"
data-subject="Reading_and_Writing_Module_2" data-id="59_0">
<input type="number" min="0" max="27" value="14" data-part="Reading_and_Writing_Score"
data-subject="Reading_and_Writing_Module_2" data-id="59_0">
<span class="scld-out-of-correct-number">/27</span>
</p>
<p><label>Math Module 1</label></p>
<p class="calculator__item">
<input type="range" min="0" max="22" value="11" data-part="Math_Score" data-subject="Math_Module_1"
data-id="59_0">
<input type="number" min="0" max="22" value="11" data-part="Math_Score" data-subject="Math_Module_1"
data-id="59_0">
<span class="scld-out-of-correct-number">/22</span>
</p>
<p><label>Math Module 2</label></p>
<p class="calculator__item">
<input type="range" min="0" max="22" value="11" data-part="Math_Score" data-subject="Math_Module_2"
data-id="59_0">
<input type="number" min="0" max="22" value="11" data-part="Math_Score" data-subject="Math_Module_2"
data-id="59_0">
<span class="scld-out-of-correct-number">/22</span>
</p>
</div>
</div>
<div id="results_59_0" style="float: left" class="scld-calculator__result__container">
<div class="scld-result-container"><span>Reading and Writing Score</span>
<div class="scld-result-score shown-result">
<output data-insert="Reading_and_Writing_Module_1" data-score="0" data-part="Reading_and_Writing_Score"
class="scld-result-output-wc subject-result">430</output>
</div>
</div>
<div style="display: none"><span>Reading and Writing Score</span>
<div class=" hidden-result">
<output data-insert="Reading_and_Writing_Module_2" data-part="Reading_and_Writing_Score">190</output>
</div>
</div>
<div class="scld-result-container"><span>Math Score</span>
<div class="scld-result-score shown-result">
<output data-insert="Math_Module_1" data-score="0" data-part="Math_Score"
class="scld-result-output-wc subject-result">430</output>
</div>
</div>
<div style="display: none"><span>Math Score</span>
<div class=" hidden-result">
<output data-insert="Math_Module_2" data-part="Math_Score">190</output>
</div>
</div>
<div class="scld-result-container"><span class="scld-result-predicted scld-result-last">Total SAT® Score</span>
<div class="scld-result-score change-color" style="background-color: rgb(157, 105, 27);">
<output data-insert="total" data-sat-max="1590" class="scld-result-output-wc">860</output>
</div>
</div>
</div>
</div>
<div id="calculator_59_1" class="scld-calculator-tabs-sat scld-calculator__wrapper" style="display: none">
<div id="tab_59_1" class="scld-calculator scld-calculator__input__container">
<div id="59_1" class="scld-calculate">
<p><label>SAT® Reading Section</label></p>
<p class="calculator__item">
<input type="range" min="0" max="52" value="26" data-part="Reading_&_Writing_Section_Score"
data-subject="SAT®_Reading_Section" data-id="59_1">
<input type="number" min="0" max="52" value="26" data-part="Reading_&_Writing_Section_Score"
data-subject="SAT®_Reading_Section" data-id="59_1">
<span class="scld-out-of-correct-number">/52</span>
</p>
<p><label>SAT® Writing Section</label></p>
<p class="calculator__item">
<input type="range" min="0" max="44" value="22" data-part="Reading_&_Writing_Section_Score"
data-subject="SAT®_Writing_Section" data-id="59_1">
<input type="number" min="0" max="44" value="22" data-part="Reading_&_Writing_Section_Score"
data-subject="SAT®_Writing_Section" data-id="59_1">
<span class="scld-out-of-correct-number">/44</span>
</p>
<p><label>SAT® Math Section</label></p>
<p class="calculator__item">
<input type="range" min="0" max="58" value="29" data-part="" data-subject="SAT®_Math_Section"
data-id="59_1">
<input type="number" min="0" max="58" value="29" data-part="" data-subject="SAT®_Math_Section"
data-id="59_1">
<span class="scld-out-of-correct-number">/58</span>
</p>
</div>
</div>
<div id="results_59_1" style="float: left" class="scld-calculator__result__container">
<div class="scld-result-container"><span>Reading & Writing Section Score</span>
<div class="scld-result-score shown-result">
<output data-insert="SAT®_Reading_Section" data-score="0" data-part="Reading_&_Writing_Section_Score"
class="scld-result-output-wc subject-result">490</output>
</div>
</div>
<div style="display: none"><span>Reading & Writing Section Score</span>
<div class=" hidden-result">
<output data-insert="SAT®_Writing_Section" data-part="Reading_&_Writing_Section_Score">240</output>
</div>
</div>
<div class="scld-result-container"><span>SAT® Math Section</span>
<div class="scld-result-score shown-result">
<output data-insert="SAT®_Math_Section" data-score="0" data-part=""
class="scld-result-output-wc subject-result">520</output>
</div>
</div>
<div class="scld-result-container"><span class="scld-result-predicted scld-result-last">Total SAT® Score</span>
<div class="scld-result-score change-color" style="background-color: rgb(157, 105, 27);">
<output data-insert="total" data-sat-max="1600" class="scld-result-output-wc">1010</output>
</div>
</div>
</div>
</div>
<div class="calc-switcher-container">
<div>
<h3 class="scld-tab-switcher-title">Choose your score curve</h3>
<p>
<input type="radio" name="calculator_tab_59_0">
<a href="#" class="scld-calculator-tab-button scld-selected-tab-button" data-tab-id="59"
data-calculator-id="59_0">Digital SAT®</a>
<input type="radio" name="calculator_tab_59_1">
<a href="#" class="scld-calculator-tab-button " data-tab-id="59" data-calculator-id="59_1">Legacy
Pen-and-Paper</a>
</p>
</div>
<div class="scld-calculator__author">
<a
href="https://www.albert.io/subjects/high-school/act-sat/sat?utm_source=blog&utm_medium=blog&utm_campaign=sat-score-calculator">Try
our practice tests!</a>
</div>
</div>
</div>
</body>
</html>
C:\xampp82\htdocs\satscore\calculator.js
var satObj = {
"ids": ["59_0", "59_1"],
"colors": [{
"min": "1451",
"max": "1600",
"color": "#8224e3"
}, {
"min": "1251",
"max": "1450",
"color": "#1e73be"
}, {
"min": "1051",
"max": "1250",
"color": "#13866a"
}, {
"min": "851",
"max": "1050",
"color": "#9d691b"
}, {
"min": "0",
"max": "850",
"color": "#cc3224"
}],
"data": {
"59_0": {
"Reading_and_Writing_Module_1": [100, 100, 120, 140, 160, 170, 180, 190, 200, 200, 210, 210, 220, 230, 240, 260, 270, 290, 310, 320, 340, 360, 370, 390, 410, 430, 440, 460],
"Reading_and_Writing_Module_2": [100, 100, 100, 110, 110, 110, 120, 120, 120, 130, 130, 140, 150, 170, 190, 190, 200, 210, 230, 240, 250, 260, 280, 290, 300, 310, 330, 330],
"Math_Module_1": [100, 100, 120, 140, 160, 160, 180, 180, 200, 200, 210, 240, 260, 280, 300, 320, 340, 360, 390, 410, 430, 450, 470],
"Math_Module_2": [100, 100, 100, 120, 120, 130, 150, 170, 170, 170, 190, 190, 200, 200, 210, 230, 240, 260, 270, 290, 300, 320, 330]
},
"59_1": {
"SAT®_Reading_Section": [100, 100, 100, 110, 120, 130, 140, 150, 150, 160, 170, 170, 180, 190, 190, 200, 200, 210, 210, 220, 220, 230, 230, 240, 240, 250, 250, 260, 260, 270, 280, 280, 290, 290, 300, 300, 310, 310, 320, 320, 330, 330, 340, 350, 350, 360, 370, 370, 380, 380, 390, 400, 400],
"SAT®_Writing_Section": [100, 100, 100, 100, 110, 120, 130, 130, 140, 150, 160, 160, 170, 180, 190, 190, 200, 210, 210, 220, 230, 230, 240, 250, 250, 260, 260, 270, 280, 280, 290, 300, 300, 310, 320, 320, 330, 340, 340, 350, 360, 370, 380, 390, 400],
"SAT®_Math_Section": [200, 200, 210, 230, 240, 260, 280, 290, 310, 320, 330, 340, 360, 370, 380, 390, 410, 420, 430, 440, 450, 460, 470, 480, 480, 490, 500, 510, 520, 520, 530, 540, 550, 560, 560, 570, 580, 590, 600, 600, 610, 620, 630, 640, 650, 660, 670, 670, 680, 690, 700, 710, 730, 740, 750, 760, 780, 790, 800]
}
}
};
jQuery(document).ready(function ($) {
Number.prototype.between = function (a, b, inclusive) {
var min = Math.min.apply(Math, [a, b]),
max = Math.max.apply(Math, [a, b]);
return inclusive ? this >= min && this <= max : this > min && this < max;
};
$('.scld-calculator-tabs-act input').change(function () {
let subject = $(this).data('subject'),
calcId = $(this).data('id'),
scores = calcObj[subject][calcId],
colors,
score = getScoreAct(scores, $(this).val()),
insert = $('.results_' + calcId + ' [data-insert=' + subject + ']');
insert.text(score);
let english = $('.results_' + calcId + ' [data-insert=english]').text(),
math = $('.results_' + calcId + ' [data-insert=math]').text(),
reading = $('.results_' + calcId + ' [ data-insert=reading]').text(),
science = $('.results_' + calcId + ' [data-insert=science]').text(),
total = Math.round((Number(english) + Number(math) + Number(reading) + Number(science)) / 4);
if (calcObj['colors'].length > 0) {
colors = getColor(calcObj['colors'], total);
$('.results_' + calcId + ' [data-insert=total]').css("background-color", colors.color);
}
$('.results_' + calcId + ' [data-insert=total]').text(total);
});
$('.scld-calculator-tabs-sat input').change(function () {
let subject = $(this).data('subject'),
calcId = $(this).data('id'),
part = $(this).data('part'),
max = $('#results_' + calcId + ' [data-insert=total]').data('sat-max'),
scores = satObj.data[calcId][subject],
score = getScoreSat(scores, $(this).val()),
insert = $('#results_' + calcId + ' [data-insert=' + subject + ']'),
color,
allResult = $('#results_' + calcId + ' .subject-result');
insert.text(score);
if (part.length > 0) {
let subScoreInsert = $('#results_' + calcId + ' .shown-result [data-part="' + part + '"]');
$('#results_' + calcId + ' [data-insert=' + subject + ']').data('score', score);
let subHidden = $('#results_' + calcId + ' .hidden-result [data-part="' + part + '"]').text();
let totalPart = Number(subScoreInsert.data('score')) + Number(subHidden);
subScoreInsert.text(totalPart);
}
var totalScore = 0;
allResult.each(function () {
totalScore += (Number($(this).html()));
});
if (satObj['colors'].length > 0) {
color = getColor(satObj['colors'], totalScore);
$('#results_' + calcId + ' .change-color').css("background-color", color.color);
}
$('#results_' + calcId + ' [data-insert=total]').text(totalScore);
});
$('.scld-calculator-tabs-staar input').change(function () {
let calcId = $(this).data('id'),
scores = staarObj.data[calcId][$(this).val()],
scale = (scores) ? scores.scale : '',
score = (scores) ? scores.score : '',
percentile = (scores) ? scores.percentile : '',
quantile = (scores) ? scores.quantile : '',
color = getStaarColor(staarObj.colors, score.value);
$('.results_' + calcId + ' [data-insert=scale]').text(scale);
$('.results_' + calcId + ' [data-insert=score]').text(score.label);
$('.results_' + calcId + ' [data-insert=percentile]').text(percentile);
$('.results_' + calcId + ' [data-insert=quantile]').text(quantile);
$('.results_' + calcId + ' .scld-result-score').css('background-color', color);
});
$('.scld-calculator-tabs-ap input').change(function () {
let calcId = $(this).data('id'),
complex = Boolean($(this).data('complex')),
scores = apObj.data[calcId],
weight = $(this).data('weight'),
select = $(this).data('select'),
dataKey = $(this).data('key'),
insert = $('#results_' + calcId + ' [data-insert=' + select + ']'),
total = $('#results_' + calcId + ' [data-insert=total]'),
totalScore = $('#results_' + calcId + ' [data-insert=total-score]'),
max = totalScore.data('max'),
totalId = $('output.scld-result-output-wc[data-id=' + calcId + ']');
if (!complex) {
insert.text(Math.round($(this).val() * weight));
insert.data('not-round', $(this).val() * weight);
} else {
let subTotal = $(this).val() * weight,
dataEnd = insert.data('end');
insert.data('complex_' + dataKey, subTotal);
let sumSubject = 0;
for (let i = 0; i <= dataEnd; i++) {
sumSubject += insert.data('complex_' + i) || 0;
}
insert.text(Math.round(sumSubject));
insert.data('not-round', sumSubject);
}
let scoreSum = 0;
totalId.each(function () {
const n = Number($(this).data('not-round'));
scoreSum += isNaN(n) ? 0 : n;
});
if (scoreSum > Number(max)) {
scoreSum = max;
}
let conversion = getScoresAp(scores, Math.round(scoreSum));
totalScore.text(Math.round(scoreSum) + '/' + max);
if (apObj['colors'].length > 0) {
let color = getColor(apObj['colors'], Number(conversion));
$('#results_' + calcId + ' .change-color').css("background-color", color.color);
}
total.text(conversion);
});
$('.scld-calculator-tabs-regent input').change(function () {
let calcId = $(this).data('id'),
complex = Boolean($(this).data('complex')),
scores = regentObj.data[calcId],
dataRow,
weight = $(this).data('weight'),
select = $(this).data('select'),
dataKey = $(this).data('key'),
insert = $('#results_' + calcId + ' [data-insert=' + select + ']'),
total = $('#results_' + calcId + ' [data-insert=total]'),
totalScore = $('#results_' + calcId + ' [data-insert=total-score]'),
totalScaleScore = $('#results_' + calcId + ' [data-insert=total-scale-score]'),
max = totalScore.data('max'),
dataMax = scores[max],
totalId = $('output.scld-result-output-wc[data-id=' + calcId + ']');
if (!complex) {
insert.text(Math.round($(this).val() * weight));
insert.data('not-round', $(this).val() * weight);
} else {
let subTotal = $(this).val() * weight,
dataEnd = insert.data('end');
insert.data('complex_' + dataKey, subTotal);
let sumSubject = 0;
for (let i = 0; i <= dataEnd; i++) {
sumSubject += insert.data('complex_' + i)
}
insert.text(Math.round(sumSubject));
insert.data('not-round', sumSubject);
}
let scoreSum = 0;
totalId.each(function () {
scoreSum += (Number($(this).data('not-round')));
});
if (scoreSum > Number(max)) {
scoreSum = max;
}
dataRow = (scores[scoreSum]) ? scores[scoreSum] : scores[max];
if (regentObj['colors'].length > 0) {
let color = getColor(regentObj['colors'], Number(dataRow.score));
$('#results_' + calcId + ' .change-color').css("background-color", color.color);
}
totalScaleScore.text(dataRow.max + '/' + dataMax.max);
totalScore.text(Math.round(scoreSum) + '/' + max);
total.text(dataRow.score);
});
$('a.scld-calculator-tab-button').click(function (e) {
e.preventDefault();
let tabId = $(this).data('tab-id');
let calcHideId = $('#calculator_tabs' + tabId + ' .calc-switcher-container').find('.scld-selected-tab-button').data('calculator-id');
$('#calculator_tabs' + tabId + ' .calc-switcher-container').find('.scld-selected-tab-button').removeClass('scld-selected-tab-button');
$(this).addClass('scld-selected-tab-button');
let calcId = $(this).data('calculator-id');
$('#calculator_tabs' + tabId + ' #calculator_' + calcHideId + '').hide();
$('#calculator_tabs' + tabId + ' #calculator_' + calcId + '').show();
});
$('.calculator__item input').change(function () {
$(this).next().val($(this).val());
$(this).prev().val($(this).val());
});
function getColor(scores, value) {
for (let score in scores) {
if (value.between(scores[score].min, scores[score].max, true)) {
return scores[score];
}
}
}
function getStaarColor(scores, value) {
for (let score in scores) {
if (value === scores[score].score.value) {
return scores[score].color;
}
}
}
function getScoreAct(scores, value) {
for (let score in scores) {
let scoresArray = scores[score].split(',');
if (scoresArray.includes(value)) {
return score;
}
}
}
function getScoreSat(scores, value) {
for (let score in scores) {
if (value == score) {
return scores[score];
}
}
}
function getScoresAp(scores, value) {
for (let score in scores) {
if (value.between(scores[score].min, scores[score].max, true)) {
return score;
}
}
}
function init() {
let inputSat = $('.scld-calculator-tabs-sat input[type="number"]'),
inputStaar = $('.scld-calculator-tabs-staar input[type="number"]'),
inputRegent = $('.scld-calculator-tabs-regent [data-insert=total-score]'),
resultAp = $('.scld-calculator-tabs-ap [data-insert=total-score]'),
resultAct = $('.scld-calculator-tabs-act [data-insert=total]');
if (inputRegent.length > 0) {
inputRegent.each(function () {
let calcId = $(this).data('ids'),
value = $(this).data('value'),
total = $('#results_' + calcId + ' [data-insert=total]'),
scores = regentObj.data[calcId],
totalScore = $('#results_' + calcId + ' [data-insert=total-score]'),
totalScaleScore = $('#results_' + calcId + ' [data-insert=total-scale-score]'),
max = totalScore.data('max'),
dataMax = scores[max],
dataRow = (scores[value]) ? scores[value] : scores[max],
color;
if (regentObj['colors'].length > 0) {
color = getColor(regentObj['colors'], Number(dataRow.score));
$('#results_' + calcId + ' .change-color').css("background-color", color.color);
}
total.text(dataRow.score);
totalScaleScore.text(dataRow.max + '/' + dataMax.max);
});
}
if (resultAp.length > 0) {
resultAp.each(function () {
let calcId = $(this).data('ids'),
value = $(this).data('value'),
total = $('#results_' + calcId + ' [data-insert=total]'),
scores = apObj.data[calcId],
conversion = getScoresAp(scores, value),
color;
total.text(conversion);
if (apObj['colors'].length > 0) {
let color = getColor(apObj['colors'], Number(conversion));
$('#results_' + calcId + ' .change-color').css("background-color", color.color);
}
});
}
if (inputStaar.length > 0) {
inputStaar.each(function () {
let calcId = $(this).data('id'),
scores = staarObj.data[calcId][$(this).val()],
scale = scores.scale,
score = scores.score,
percentile = scores.percentile,
color = getStaarColor(staarObj.colors, score.value),
quantile = scores.quantile;
$('.results_' + calcId + ' [data-insert=scale]').text(scale);
$('.results_' + calcId + ' [data-insert=score]').text(score.label);
$('.results_' + calcId + ' [data-insert=percentile]').text(percentile);
$('.results_' + calcId + ' [data-insert=quantile]').text(quantile);
$('.results_' + calcId + ' .scld-result-score').css('background-color', color);
});
}
if (inputSat.length > 0) {
inputSat.each(function () {
let calcId = $(this).data('id'),
subject = $(this).data('subject'),
color,
max = $('#results_' + calcId + ' [data-insert=total]').data('sat-max'),
part = $(this).data('part'),
scores = satObj.data[calcId][subject],
score = getScoreSat(scores, $(this).val());
insert = $('#results_' + calcId + ' [data-insert=' + subject + ']'),
allResult = $('#results_' + calcId + ' .subject-result');
insert.text(score);
if (part.length > 0) {
let subScoreInsert = $('#results_' + calcId + ' .shown-result [data-part="' + part + '"]');
$('#results_' + calcId + ' [data-insert=' + subject + ']').data('score', score);
let subHidden = $('#results_' + calcId + ' .hidden-result [data-part="' + part + '"]').text();
let totalPart = Number(subScoreInsert.data('score')) + Number(subHidden);
subScoreInsert.text(totalPart);
}
var totalScore = 0;
var subjects = 0;
allResult.each(function (index, value) {
totalScore += (Number($(this).html()));
});
if (satObj['colors'].length > 0) {
color = getColor(satObj['colors'], totalScore);
$('#results_' + calcId + ' .change-color').css("background-color", color.color);
}
$('#results_' + calcId + ' [data-insert=total]').text(totalScore);
})
}
if (resultAct.length > 0) {
resultAct.each(function () {
let calcId = $(this).data('id'),
result = $(this).data('result'),
colors;
if (calcObj['colors'].length > 0) {
colors = getColor(calcObj['colors'], result);
$('.results_' + calcId + ' [data-insert=total]').css("background-color", colors.color);
}
});
}
}
init();
});
C:\xampp82\htdocs\satscore\calc-style.scss
.scld-calculator-title {
font-size: 30px;
display: flex;
align-items: center;
margin-bottom: 16px;
font-size: 30px !important;
}
p {
font-size: 16px;
}
.scld-result-container {
font-size: 16px;
background: #f1f2f3;
padding: 15px;
border-radius: 7px;
margin: 10px 0;
display: flex;
justify-content: center;
flex-wrap: wrap;
.scld-result-last {
+ {
.scld-result-score {
output {
font-size: 25px;
}
}
}
}
span {
display: block;
width: 100%;
margin-bottom: 10px;
font-weight: bold;
text-align: center;
}
.scld-result-output {
height: 40px;
min-width: 40px;
background: #1abc9c;
border-radius: 16px;
padding: 8px 16px;
color: #000;
display: inline-block;
text-align: center;
font-size: 16px;
}
.scld-result-output-wc {
color: #fff;
text-align: center;
font-size: 16px;
}
.scld-result-predicted-output {
min-width: 40px;
background: #1abc9c;
border-radius: 40px;
padding: 8px 16px;
color: #fff;
display: inline-block;
text-align: center;
font-size: 16px;
}
.scld-composite-score {
display: inline-block;
background: #399fdf;
padding: 5px 10px;
color: #fff;
border-radius: 20px;
}
.scld-result-score {
display: inline-block;
background: #399fdf;
padding: 1px 20px;
color: #fff;
border-radius: 50px;
}
.scld-result-predicted-output-large {
font-size: 25px;
}
}
.scld-result-title {
font-size: 20px;
font-weight: 400;
font-size: 24px;
text-align: center;
}
.scld-tab-switcher-title {
font-size: 20px;
font-weight: normal;
font-style: italic;
margin: 0 0 15px 0;
}
.calc-switcher-container {
a.scld-calculator-tab-button {
text-decoration: none !important;
}
display: flex;
width: 100%;
justify-content: space-between;
> div {
&:first-child {
flex: 4;
}
&:last-child {
flex: 2;
margin-left: 25px;
}
}
a {
text-align: center;
}
.scld-calculator__switcher {
flex: 0 1 70%;
}
.scld-calculator__author {
flex: 0 1 30%;
}
}
input[type="range"] {
appearance: none;
width: 80%;
color: inherit;
background: inherit;
background-image: inherit;
border: none !important;
border-radius: inherit;
display: inherit;
padding: 0;
&:focus {
outline: none !important;
&::-webkit-slider-runnable-track {
background: #399fdf;
}
&::-ms-fill-lower {
background: #399fdf;
}
&::-ms-fill-upper {
background: #399fdf;
}
}
&::-webkit-slider-thumb {
-webkit-appearance: none;
height: 44px;
width: 14px;
border-radius: 3px;
background: #2b6296;
cursor: pointer;
margin-top: -14px;
}
&::-moz-range-thumb {
height: 44px;
width: 14px;
border-radius: 3px;
background: #2b6296;
cursor: pointer;
}
&::-ms-thumb {
height: 44px;
width: 14px;
border-radius: 3px;
background: #2b6296;
cursor: pointer;
}
&::-webkit-slider-runnable-track {
height: 18px;
cursor: pointer;
background: #399fdf;
border-radius: 10px;
border: 0.2px solid #3390c1;
}
&::-moz-range-track {
height: 18px;
cursor: pointer;
background: #399fdf;
border-radius: 10px;
border: 0.2px solid #3390c1;
}
&::-ms-track {
height: 18px;
cursor: pointer;
background: transparent;
border-color: #3390c1;
border-width: 16px 0;
color: transparent;
}
&::-ms-fill-lower {
background: #399fdf;
border: 0.2px solid #010101;
border-radius: 2.6px;
}
&::-ms-fill-upper {
background: #399fdf;
border: 0.2px solid #010101;
border-radius: 2.6px;
}
}
.scld-calculator-tabs {
overflow: hidden;
}
.scld-calculator-tabs-container {
input[type="number"] {
height: 25px;
width: 53px;
border: 1px solid #daddde;
display: inline-block;
color: inherit;
background: inherit;
background-image: inherit;
padding: 0 5px;
border-radius: 3px;
font-family: "Open Sans", sans-serif;
}
.scld-calculate {
position: relative;
float: left;
width: 70%;
margin: 0px;
}
#results {
position: relative;
float: left;
text-align: center;
}
input[type="radio"] {
margin: 0 10px;
}
}
.scld-slider {
display: inline-block !important;
}
.scld-calculator__author {
a {
text-decoration: none !important;
display: block;
text-align: center;
color: #1abc9c;
font-size: 14px;
font-weight: bold;
&:focus {
outline: none;
}
}
display: flex;
align-items: center;
justify-content: center;
font-family: "Open Sans", sans-serif;
font-style: italic;
}
.scld-calculate {
input[type="number"] {
font-size: 16px;
&:focus {
outline: none !important;
}
}
}
.scld-out-of-correct-number {
font-size: 20px;
margin-left: 3px;
vertical-align: top;
}
.scld-calculator-tab-button {
margin-right: 12px;
padding: 8px 12px;
background-color: #fff;
color: #18a085;
border: 1px solid #1abc9c;
border-radius: 4px;
margin-bottom: 8px;
display: inline-flex;
&:hover {
background: #1abc9c;
color: #fff !important;
}
}
.scld-selected-tab-button {
background: #1abc9c;
color: #fff !important;
}
input[name^="calculator_tab"] {
display: none;
}
.scld-calculator-subtitle {
font-size: 20px;
font-style: italic;
margin-bottom: 21px;
}
.scld-result-predicted {
font-weight: 600 !important;
}
.scld-result-last {
font-size: 22px;
}
.calculator__item {
display: flex;
align-items: center;
input {
&:first-child {
margin-right: 10px;
}
}
}
.scld-calculator__wrapper {
display: flex;
justify-content: space-between;
display: flex;
justify-content: space-between;
.scld-calculate {
width: 100% !important;
}
.scld-calculator {
width: 100% !important;
}
}
.calulator-title {
display: flex;
justify-content: space-between;
h2 {
&:first-child {
flex: 4;
}
&:last-child {
flex: 2;
position: relative;
margin-left: 25px;
}
}
}
.staar-result {
display: flex;
flex-direction: column;
align-items: center;
width: 100%;
}
.scld-calculator__input-wrapper {
flex: 4;
}
.scld-calculator__row.multiple-input {
.scld-calculator__result {
.scld-result-container {
flex: 1;
}
}
}
.change-color {
&.red {
background: rgb(221, 85, 102) !important;
}
&.yellow {
background: rgb(240, 191, 108) !important;
}
&.green {
background: rgb(136, 211, 113) !important;
}
&.blue {
background: rgb(45, 173, 255) !important;
}
&.purple {
background: rgb(152, 91, 205) !important;
}
}
h1,
h2,
h3 {
&::before {
display: none !important;
}
}
.scld-calculator-tabs-sat.scld-calculator__wrapper {
.scld-calculator {
flex: 4;
+ {
div {
flex: 2;
}
}
}
}
.max-width {
max-width: 215px;
}
.round-link {
display: flex;
width: 88px;
height: 88px;
border-radius: 50%;
margin-left: 16px;
align-items: center;
justify-content: center;
padding: 16px;
img {
width: 100%;
max-width: 100%;
}
}
.scld-calculator__row {
display: flex;
justify-content: space-between;
}
.scld-calculator__input__container {
flex: 4;
}
.scld-calculator__input {
flex: 4;
}
.scld-calculator__result__container {
flex: 2;
margin-left: 25px;
}
.scld-calculator__result {
flex: 2;
margin-left: 25px;
}
@media (max-width: 960px) {
.calc-switcher-container {
a.scld-calculator-tab-button {
margin-bottom: 10px;
}
}
}
@media (max-width: 767px) {
.scld-calculator__wrapper {
flex-direction: column;
}
.scld-calculator__row {
flex-direction: column;
}
.scld-calculator__input__container {
flex: 1;
}
.scld-calculator__input {
flex: 1;
}
.scld-calculator__result__container {
flex: 1;
margin-left: 0;
}
.scld-calculator__result {
flex: 1;
margin-left: 0;
}
}
C:\xampp82\htdocs\satscore\index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script src="./calculator.js"></script>
<link rel="stylesheet" href="./calc-style.css">
<title>Document</title>
</head>
<body>
<div id="calculator_tabs98" class="scld-calculator-tabs-container ">
<h1 class="scld-calculator-title">SAT® Score Calculator <a class="round-link"
href="https://www.albert.io/subjects/high-school/act-sat/sat?utm_source=blog&utm_medium=blog&utm_campaign=sat-score-calculator"
style="background-color: #6565c6">
<img src="https://assets.albert.io/canary-assets/subject-icons/19b8e13d-3ec5-4346-872e-50f8635aa2a5.svg"
class="scld-calculator-icon">
</a>
</h1>
<div class="calulator-title">
<h2 class="scld-calculator-subtitle">Enter your scores</h2>
<h2 class="scld-result-title">Results</h2>
</div>
<div id="calculator_98_0" class="scld-calculator-tabs-sat scld-calculator__wrapper">
<div id="tab_98_0" class="scld-calculator scld-calculator__input__container">
<div id="98_0" class="scld-calculate">
<p><label>Reading and Writing Module 1</label></p>
<p class="calculator__item">
<input type="range" min="0" max="27" value="14" data-part="Reading_and_Writing_Score"
data-subject="Reading_and_Writing_Module_1" data-id="98_0">
<input type="number" min="0" max="27" value="14" data-part="Reading_and_Writing_Score"
data-subject="Reading_and_Writing_Module_1" data-id="98_0">
<span class="scld-out-of-correct-number">/27</span>
</p>
<p><label>Reading and Writing Module 2</label></p>
<p class="calculator__item">
<input type="range" min="0" max="27" value="14" data-part="Reading_and_Writing_Score"
data-subject="Reading_and_Writing_Module_2" data-id="98_0">
<input type="number" min="0" max="27" value="14" data-part="Reading_and_Writing_Score"
data-subject="Reading_and_Writing_Module_2" data-id="98_0">
<span class="scld-out-of-correct-number">/27</span>
</p>
<p><label>Math Module 1</label></p>
<p class="calculator__item">
<input type="range" min="0" max="22" value="11" data-part="Math_Score" data-subject="Math_Module_1"
data-id="98_0">
<input type="number" min="0" max="22" value="11" data-part="Math_Score" data-subject="Math_Module_1"
data-id="98_0">
<span class="scld-out-of-correct-number">/22</span>
</p>
<p><label>Math Module 2</label></p>
<p class="calculator__item">
<input type="range" min="0" max="22" value="11" data-part="Math_Score" data-subject="Math_Module_2"
data-id="98_0">
<input type="number" min="0" max="22" value="11" data-part="Math_Score" data-subject="Math_Module_2"
data-id="98_0">
<span class="scld-out-of-correct-number">/22</span>
</p>
</div>
</div>
<div id="results_98_0" style="float: left" class="scld-calculator__result__container">
<div class="scld-result-container"><span>Reading and Writing Score</span>
<div class="scld-result-score shown-result">
<output data-insert="Reading_and_Writing_Module_1" data-score="0" data-part="Reading_and_Writing_Score"
class="scld-result-output-wc subject-result">430</output>
</div>
</div>
<div style="display: none"><span>Reading and Writing Score</span>
<div class=" hidden-result">
<output data-insert="Reading_and_Writing_Module_2" data-part="Reading_and_Writing_Score">190</output>
</div>
</div>
<div class="scld-result-container"><span>Math Score</span>
<div class="scld-result-score shown-result">
<output data-insert="Math_Module_1" data-score="0" data-part="Math_Score"
class="scld-result-output-wc subject-result">430</output>
</div>
</div>
<div style="display: none"><span>Math Score</span>
<div class=" hidden-result">
<output data-insert="Math_Module_2" data-part="Math_Score">190</output>
</div>
</div>
<div class="scld-result-container"><span class="scld-result-predicted scld-result-last">Total SAT® Score</span>
<div class="scld-result-score change-color" style="background-color: rgb(157, 105, 27);">
<output data-insert="total" data-sat-max="1980" class="scld-result-output-wc">860</output>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
C:\xampp82\htdocs\satscore\calculator.js
var satObj = {
"ids": ["98_0"],
"colors": [
{
"min": "1451",
"max": "1600",
"color": "#8224e3"
},
{
"min": "1251",
"max": "1450",
"color": "#1e73be"
},
{
"min": "1051",
"max": "1250",
"color": "#13866a"
},
{
"min": "851",
"max": "1050",
"color": "#9d691b"
},
{
"min": "0",
"max": "850",
"color": "#cc3224"
}
],
"data": {
"98_0": {
"Reading_and_Writing_Module_1": [100, 100, 120, 140, 160, 170, 180, 190, 200, 200, 210, 210, 220, 230, 240, 260, 270, 290, 310, 320, 340, 360, 370, 390, 410, 430, 440, 460],
"Reading_and_Writing_Module_2": [100, 100, 100, 110, 110, 110, 120, 120, 120, 130, 130, 140, 150, 170, 190, 190, 200, 210, 230, 240, 250, 260, 280, 290, 300, 310, 330, 330],
"Math_Module_1": [100, 100, 120, 140, 160, 160, 180, 180, 200, 200, 210, 240, 260, 280, 300, 320, 340, 360, 390, 410, 430, 450, 470],
"Math_Module_2": [100, 100, 100, 120, 120, 130, 150, 170, 170, 170, 190, 190, 200, 200, 210, 230, 240, 260, 270, 290, 300, 320, 330]
}
}
};
jQuery(document).ready(function ($) {
Number.prototype.between = function (a, b, inclusive) {
var min = Math.min.apply(Math, [a, b]), max = Math.max.apply(Math, [a, b]);
return inclusive ? this >= min && this <= max : this > min && this < max;
};
$('.scld-calculator-tabs-sat input').change(function () {
let subject = $(this).data('subject'), // Reading_and_Writing_Module_1
calcId = $(this).data('id'), // 98_0
part = $(this).data('part'), // Reading_and_Writing_Score,
scores = satObj.data[calcId][subject],
score = getScoreSat(scores, $(this).val()),
insert = $('#results_' + calcId + ' [data-insert=' + subject + ']'),
color,
allResult = $('#results_' + calcId + ' .subject-result');
insert.text(score);
if (part.length > 0) {
let subScoreInsert = $('#results_' + calcId + ' .shown-result [data-part="' + part + '"]');
$('#results_' + calcId + ' [data-insert=' + subject + ']').data('score', score);
let subHidden = $('#results_' + calcId + ' .hidden-result [data-part="' + part + '"]').text();
let totalPart = Number(subScoreInsert.data('score')) + Number(subHidden);
subScoreInsert.text(totalPart);
}
var totalScore = 0;
allResult.each(function () {
totalScore += (Number($(this).html()));
});
if (satObj['colors'].length > 0) {
color = getColor(satObj['colors'], totalScore);
$('#results_' + calcId + ' .change-color').css("background-color", color.color);
}
$('#results_' + calcId + ' [data-insert=total]').text(totalScore);
});
$('.calculator__item input').change(function () {
$(this).next().val($(this).val());
$(this).prev().val($(this).val());
});
function getColor(scores, value) {
for (let score in scores) {
if (value.between(scores[score].min, scores[score].max, true)) {
return scores[score];
}
}
}
function getScoreSat(scores, value) {
for (let score in scores) {
if (value == score) {
return scores[score];
}
}
}
function init() {
let inputSat = $('.scld-calculator-tabs-sat input[type="number"]');
if (inputSat.length > 0) {
inputSat.each(function () {
let calcId = $(this).data('id'),
subject = $(this).data('subject'),
color,
max = $('#results_' + calcId + ' [data-insert=total]').data('sat-max'),
part = $(this).data('part'),
scores = satObj.data[calcId][subject],
score = getScoreSat(scores, $(this).val());
insert = $('#results_' + calcId + ' [data-insert=' + subject + ']'),
allResult = $('#results_' + calcId + ' .subject-result');
insert.text(score);
if (part.length > 0) {
let subScoreInsert = $('#results_' + calcId + ' .shown-result [data-part="' + part + '"]');
$('#results_' + calcId + ' [data-insert=' + subject + ']').data('score', score);
let subHidden = $('#results_' + calcId + ' .hidden-result [data-part="' + part + '"]').text();
let totalPart = Number(subScoreInsert.data('score')) + Number(subHidden);
subScoreInsert.text(totalPart);
}
var totalScore = 0;
var subjects = 0;
allResult.each(function (index, value) {
totalScore += (Number($(this).html()));
});
if (satObj['colors'].length > 0) {
color = getColor(satObj['colors'], totalScore);
$('#results_' + calcId + ' .change-color').css("background-color", color.color);
}
$('#results_' + calcId + ' [data-insert=total]').text(totalScore);
})
}
}
init();
});
C:\xampp82\htdocs\satscore\calc-style.scss
.scld-calculator-title {
font-size: 30px;
display: flex;
align-items: center;
margin-bottom: 16px;
font-size: 30px !important;
}
p {
font-size: 16px;
}
.scld-result-container {
font-size: 16px;
background: #f1f2f3;
padding: 15px;
border-radius: 7px;
margin: 10px 0;
display: flex;
justify-content: center;
flex-wrap: wrap;
.scld-result-last {
+ {
.scld-result-score {
output {
font-size: 25px;
}
}
}
}
span {
display: block;
width: 100%;
margin-bottom: 10px;
font-weight: bold;
text-align: center;
}
.scld-result-output {
height: 40px;
min-width: 40px;
background: #1abc9c;
border-radius: 16px;
padding: 8px 16px;
color: #000;
display: inline-block;
text-align: center;
font-size: 16px;
}
.scld-result-output-wc {
color: #fff;
text-align: center;
font-size: 16px;
}
.scld-result-predicted-output {
min-width: 40px;
background: #1abc9c;
border-radius: 40px;
padding: 8px 16px;
color: #fff;
display: inline-block;
text-align: center;
font-size: 16px;
}
.scld-composite-score {
display: inline-block;
background: #399fdf;
padding: 5px 10px;
color: #fff;
border-radius: 20px;
}
.scld-result-score {
display: inline-block;
background: #399fdf;
padding: 1px 20px;
color: #fff;
border-radius: 50px;
}
.scld-result-predicted-output-large {
font-size: 25px;
}
}
.scld-result-title {
font-size: 20px;
font-weight: 400;
font-size: 24px;
text-align: center;
}
.scld-tab-switcher-title {
font-size: 20px;
font-weight: normal;
font-style: italic;
margin: 0 0 15px 0;
}
.calc-switcher-container {
a.scld-calculator-tab-button {
text-decoration: none !important;
}
display: flex;
width: 100%;
justify-content: space-between;
> div {
&:first-child {
flex: 4;
}
&:last-child {
flex: 2;
margin-left: 25px;
}
}
a {
text-align: center;
}
.scld-calculator__switcher {
flex: 0 1 70%;
}
.scld-calculator__author {
flex: 0 1 30%;
}
}
input[type="range"] {
appearance: none;
width: 80%;
color: inherit;
background: inherit;
background-image: inherit;
border: none !important;
border-radius: inherit;
display: inherit;
padding: 0;
&:focus {
outline: none !important;
&::-webkit-slider-runnable-track {
background: #399fdf;
}
&::-ms-fill-lower {
background: #399fdf;
}
&::-ms-fill-upper {
background: #399fdf;
}
}
&::-webkit-slider-thumb {
-webkit-appearance: none;
height: 44px;
width: 14px;
border-radius: 3px;
background: #2b6296;
cursor: pointer;
margin-top: -14px;
}
&::-moz-range-thumb {
height: 44px;
width: 14px;
border-radius: 3px;
background: #2b6296;
cursor: pointer;
}
&::-ms-thumb {
height: 44px;
width: 14px;
border-radius: 3px;
background: #2b6296;
cursor: pointer;
}
&::-webkit-slider-runnable-track {
height: 18px;
cursor: pointer;
background: #399fdf;
border-radius: 10px;
border: 0.2px solid #3390c1;
}
&::-moz-range-track {
height: 18px;
cursor: pointer;
background: #399fdf;
border-radius: 10px;
border: 0.2px solid #3390c1;
}
&::-ms-track {
height: 18px;
cursor: pointer;
background: transparent;
border-color: #3390c1;
border-width: 16px 0;
color: transparent;
}
&::-ms-fill-lower {
background: #399fdf;
border: 0.2px solid #010101;
border-radius: 2.6px;
}
&::-ms-fill-upper {
background: #399fdf;
border: 0.2px solid #010101;
border-radius: 2.6px;
}
}
.scld-calculator-tabs {
overflow: hidden;
}
.scld-calculator-tabs-container {
input[type="number"] {
height: 25px;
width: 53px;
border: 1px solid #daddde;
display: inline-block;
color: inherit;
background: inherit;
background-image: inherit;
padding: 0 5px;
border-radius: 3px;
font-family: "Open Sans", sans-serif;
}
.scld-calculate {
position: relative;
float: left;
width: 70%;
margin: 0px;
}
#results {
position: relative;
float: left;
text-align: center;
}
input[type="radio"] {
margin: 0 10px;
}
}
.scld-slider {
display: inline-block !important;
}
.scld-calculator__author {
a {
text-decoration: none !important;
display: block;
text-align: center;
color: #1abc9c;
font-size: 14px;
font-weight: bold;
&:focus {
outline: none;
}
}
display: flex;
align-items: center;
justify-content: center;
font-family: "Open Sans", sans-serif;
font-style: italic;
}
.scld-calculate {
input[type="number"] {
font-size: 16px;
&:focus {
outline: none !important;
}
}
}
.scld-out-of-correct-number {
font-size: 20px;
margin-left: 3px;
vertical-align: top;
}
.scld-calculator-tab-button {
margin-right: 12px;
padding: 8px 12px;
background-color: #fff;
color: #18a085;
border: 1px solid #1abc9c;
border-radius: 4px;
margin-bottom: 8px;
display: inline-flex;
&:hover {
background: #1abc9c;
color: #fff !important;
}
}
.scld-selected-tab-button {
background: #1abc9c;
color: #fff !important;
}
input[name^="calculator_tab"] {
display: none;
}
.scld-calculator-subtitle {
font-size: 20px;
font-style: italic;
margin-bottom: 21px;
}
.scld-result-predicted {
font-weight: 600 !important;
}
.scld-result-last {
font-size: 22px;
}
.calculator__item {
display: flex;
align-items: center;
input {
&:first-child {
margin-right: 10px;
}
}
}
.scld-calculator__wrapper {
display: flex;
justify-content: space-between;
display: flex;
justify-content: space-between;
.scld-calculate {
width: 100% !important;
}
.scld-calculator {
width: 100% !important;
}
}
.calulator-title {
display: flex;
justify-content: space-between;
h2 {
&:first-child {
flex: 4;
}
&:last-child {
flex: 2;
position: relative;
margin-left: 25px;
}
}
}
.staar-result {
display: flex;
flex-direction: column;
align-items: center;
width: 100%;
}
.scld-calculator__input-wrapper {
flex: 4;
}
.scld-calculator__row.multiple-input {
.scld-calculator__result {
.scld-result-container {
flex: 1;
}
}
}
.change-color {
&.red {
background: rgb(221, 85, 102) !important;
}
&.yellow {
background: rgb(240, 191, 108) !important;
}
&.green {
background: rgb(136, 211, 113) !important;
}
&.blue {
background: rgb(45, 173, 255) !important;
}
&.purple {
background: rgb(152, 91, 205) !important;
}
}
h1,
h2,
h3 {
&::before {
display: none !important;
}
}
.scld-calculator-tabs-sat.scld-calculator__wrapper {
.scld-calculator {
flex: 4;
+ {
div {
flex: 2;
}
}
}
}
.max-width {
max-width: 215px;
}
.round-link {
display: flex;
width: 88px;
height: 88px;
border-radius: 50%;
margin-left: 16px;
align-items: center;
justify-content: center;
padding: 16px;
img {
width: 100%;
max-width: 100%;
}
}
.scld-calculator__row {
display: flex;
justify-content: space-between;
}
.scld-calculator__input__container {
flex: 4;
}
.scld-calculator__input {
flex: 4;
}
.scld-calculator__result__container {
flex: 2;
margin-left: 25px;
}
.scld-calculator__result {
flex: 2;
margin-left: 25px;
}
@media (max-width: 960px) {
.calc-switcher-container {
a.scld-calculator-tab-button {
margin-bottom: 10px;
}
}
}
@media (max-width: 767px) {
.scld-calculator__wrapper {
flex-direction: column;
}
.scld-calculator__row {
flex-direction: column;
}
.scld-calculator__input__container {
flex: 1;
}
.scld-calculator__input {
flex: 1;
}
.scld-calculator__result__container {
flex: 1;
margin-left: 0;
}
.scld-calculator__result {
flex: 1;
margin-left: 0;
}
}
C:\xampp82\htdocs\satscore\index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script src="./calculator.js"></script>
<link rel="stylesheet" href="./calc-style.css">
<title>Document</title>
</head>
<body>
<div id="calculator_tabs98" class="scld-calculator-tabs-container ">
<h1 class="scld-calculator-title">SAT® Score Calculator <a class="round-link"
href="https://www.albert.io/subjects/high-school/act-sat/sat?utm_source=blog&utm_medium=blog&utm_campaign=sat-score-calculator"
style="background-color: #6565c6">
<img src="https://assets.albert.io/canary-assets/subject-icons/19b8e13d-3ec5-4346-872e-50f8635aa2a5.svg"
class="scld-calculator-icon">
</a>
</h1>
<div class="calulator-title">
<h2 class="scld-calculator-subtitle">Enter your scores</h2>
<h2 class="scld-result-title">Results</h2>
</div>
<div id="calculator_98questions" class="scld-calculator-tabs-sat scld-calculator__wrapper">
<div id="tab_98questions" class="scld-calculator scld-calculator__input__container">
<div id="98questions" class="scld-calculate">
<p><label>Reading and Writing Module 1</label></p>
<p class="calculator__item">
<input type="range" min="0" max="27" value="14" data-part="Reading_and_Writing_Score"
data-subject="Reading_and_Writing_Module_1" data-id="98questions">
<input type="number" min="0" max="27" value="14" data-part="Reading_and_Writing_Score"
data-subject="Reading_and_Writing_Module_1" data-id="98questions">
<span class="scld-out-of-correct-number">/27</span>
</p>
<p><label>Reading and Writing Module 2</label></p>
<p class="calculator__item">
<input type="range" min="0" max="27" value="14" data-part="Reading_and_Writing_Score"
data-subject="Reading_and_Writing_Module_2" data-id="98questions">
<input type="number" min="0" max="27" value="14" data-part="Reading_and_Writing_Score"
data-subject="Reading_and_Writing_Module_2" data-id="98questions">
<span class="scld-out-of-correct-number">/27</span>
</p>
<p><label>Math Module 1</label></p>
<p class="calculator__item">
<input type="range" min="0" max="22" value="11" data-part="Math_Score" data-subject="Math_Module_1"
data-id="98questions">
<input type="number" min="0" max="22" value="11" data-part="Math_Score" data-subject="Math_Module_1"
data-id="98questions">
<span class="scld-out-of-correct-number">/22</span>
</p>
<p><label>Math Module 2</label></p>
<p class="calculator__item">
<input type="range" min="0" max="22" value="11" data-part="Math_Score" data-subject="Math_Module_2"
data-id="98questions">
<input type="number" min="0" max="22" value="11" data-part="Math_Score" data-subject="Math_Module_2"
data-id="98questions">
<span class="scld-out-of-correct-number">/22</span>
</p>
</div>
</div>
<div id="results_98questions" style="float: left" class="scld-calculator__result__container">
<div class="scld-result-container"><span>Reading and Writing Score</span>
<div class="scld-result-score shown-result">
<output data-insert="Reading_and_Writing_Module_1" data-score="0" data-part="Reading_and_Writing_Score"
class="scld-result-output-wc subject-result">430</output>
</div>
</div>
<div style="display: none"><span>Reading and Writing Score</span>
<div class=" hidden-result">
<output data-insert="Reading_and_Writing_Module_2" data-part="Reading_and_Writing_Score">190</output>
</div>
</div>
<div class="scld-result-container"><span>Math Score</span>
<div class="scld-result-score shown-result">
<output data-insert="Math_Module_1" data-score="0" data-part="Math_Score"
class="scld-result-output-wc subject-result">430</output>
</div>
</div>
<div style="display: none"><span>Math Score</span>
<div class=" hidden-result">
<output data-insert="Math_Module_2" data-part="Math_Score">190</output>
</div>
</div>
<div class="scld-result-container"><span class="scld-result-predicted scld-result-last">Total SAT® Score</span>
<div class="scld-result-score change-color" style="background-color: rgb(157, 105, 27);">
<output data-insert="total" data-sat-max="1980" class="scld-result-output-wc">860</output>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
C:\xampp82\htdocs\satscore\calculator.js
var satObj = {
"ids": ["98questions"],
"colors": [
{
"min": "1451",
"max": "1600",
"color": "#8224e3"
},
{
"min": "1251",
"max": "1450",
"color": "#1e73be"
},
{
"min": "1051",
"max": "1250",
"color": "#13866a"
},
{
"min": "851",
"max": "1050",
"color": "#9d691b"
},
{
"min": "0",
"max": "850",
"color": "#cc3224"
}
],
"data": {
"98questions": {
"Reading_and_Writing_Module_1": [100, 100, 120, 140, 160, 170, 180, 190, 200, 200, 210, 210, 220, 230, 240, 260, 270, 290, 310, 320, 340, 360, 370, 390, 410, 430, 440, 460],
"Reading_and_Writing_Module_2": [100, 100, 100, 110, 110, 110, 120, 120, 120, 130, 130, 140, 150, 170, 190, 190, 200, 210, 230, 240, 250, 260, 280, 290, 300, 310, 330, 330],
"Math_Module_1": [100, 100, 120, 140, 160, 160, 180, 180, 200, 200, 210, 240, 260, 280, 300, 320, 340, 360, 390, 410, 430, 450, 470],
"Math_Module_2": [100, 100, 100, 120, 120, 130, 150, 170, 170, 170, 190, 190, 200, 200, 210, 230, 240, 260, 270, 290, 300, 320, 330]
}
}
};
jQuery(document).ready(function ($) {
Number.prototype.between = function (a, b, inclusive) {
var min = Math.min.apply(Math, [a, b]), max = Math.max.apply(Math, [a, b]);
return inclusive ? this >= min && this <= max : this > min && this < max;
};
$('.scld-calculator-tabs-sat input').change(function () {
let subject = $(this).data('subject'), // Reading_and_Writing_Module_1
calcId = $(this).data('id'), // 98questions
part = $(this).data('part'), // Reading_and_Writing_Score,
scores = satObj.data[calcId][subject],
score = getScoreSat(scores, $(this).val()),
insert = $('#results_' + calcId + ' [data-insert=' + subject + ']'),
color,
allResult = $('#results_' + calcId + ' .subject-result');
insert.text(score);
if (part.length > 0) {
let subScoreInsert = $('#results_' + calcId + ' .shown-result [data-part="' + part + '"]');
$('#results_' + calcId + ' [data-insert=' + subject + ']').data('score', score);
let subHidden = $('#results_' + calcId + ' .hidden-result [data-part="' + part + '"]').text();
let totalPart = Number(subScoreInsert.data('score')) + Number(subHidden);
subScoreInsert.text(totalPart);
}
var totalScore = 0;
allResult.each(function () {
totalScore += (Number($(this).html()));
});
if (satObj['colors'].length > 0) {
color = getColor(satObj['colors'], totalScore);
$('#results_' + calcId + ' .change-color').css("background-color", color.color);
}
$('#results_' + calcId + ' [data-insert=total]').text(totalScore);
});
$('.calculator__item input').change(function () {
$(this).next().val($(this).val());
$(this).prev().val($(this).val());
});
function getColor(scores, value) {
for (let score in scores) {
if (value.between(scores[score].min, scores[score].max, true)) {
return scores[score];
}
}
}
function getScoreSat(scores, value) {
for (let score in scores) {
if (value == score) {
return scores[score];
}
}
}
function init() {
let inputSat = $('.scld-calculator-tabs-sat input[type="number"]');
if (inputSat.length > 0) {
inputSat.each(function () {
let calcId = $(this).data('id'),
subject = $(this).data('subject'),
color,
max = $('#results_' + calcId + ' [data-insert=total]').data('sat-max'),
part = $(this).data('part'),
scores = satObj.data[calcId][subject],
score = getScoreSat(scores, $(this).val());
insert = $('#results_' + calcId + ' [data-insert=' + subject + ']'),
allResult = $('#results_' + calcId + ' .subject-result');
insert.text(score);
if (part.length > 0) {
let subScoreInsert = $('#results_' + calcId + ' .shown-result [data-part="' + part + '"]');
$('#results_' + calcId + ' [data-insert=' + subject + ']').data('score', score);
let subHidden = $('#results_' + calcId + ' .hidden-result [data-part="' + part + '"]').text();
let totalPart = Number(subScoreInsert.data('score')) + Number(subHidden);
subScoreInsert.text(totalPart);
}
var totalScore = 0;
var subjects = 0;
allResult.each(function (index, value) {
totalScore += (Number($(this).html()));
});
if (satObj['colors'].length > 0) {
color = getColor(satObj['colors'], totalScore);
$('#results_' + calcId + ' .change-color').css("background-color", color.color);
}
$('#results_' + calcId + ' [data-insert=total]').text(totalScore);
})
}
}
init();
});
C:\xampp82\htdocs\satscore\calc-style.scss
.scld-calculator-title {
font-size: 30px;
display: flex;
align-items: center;
margin-bottom: 16px;
font-size: 30px !important;
}
p {
font-size: 16px;
}
.scld-result-container {
font-size: 16px;
background: #f1f2f3;
padding: 15px;
border-radius: 7px;
margin: 10px 0;
display: flex;
justify-content: center;
flex-wrap: wrap;
.scld-result-last {
+ {
.scld-result-score {
output {
font-size: 25px;
}
}
}
}
span {
display: block;
width: 100%;
margin-bottom: 10px;
font-weight: bold;
text-align: center;
}
.scld-result-output {
height: 40px;
min-width: 40px;
background: #1abc9c;
border-radius: 16px;
padding: 8px 16px;
color: #000;
display: inline-block;
text-align: center;
font-size: 16px;
}
.scld-result-output-wc {
color: #fff;
text-align: center;
font-size: 16px;
}
.scld-result-predicted-output {
min-width: 40px;
background: #1abc9c;
border-radius: 40px;
padding: 8px 16px;
color: #fff;
display: inline-block;
text-align: center;
font-size: 16px;
}
.scld-composite-score {
display: inline-block;
background: #399fdf;
padding: 5px 10px;
color: #fff;
border-radius: 20px;
}
.scld-result-score {
display: inline-block;
background: #399fdf;
padding: 1px 20px;
color: #fff;
border-radius: 50px;
}
.scld-result-predicted-output-large {
font-size: 25px;
}
}
.scld-result-title {
font-size: 20px;
font-weight: 400;
font-size: 24px;
text-align: center;
}
.scld-tab-switcher-title {
font-size: 20px;
font-weight: normal;
font-style: italic;
margin: 0 0 15px 0;
}
.calc-switcher-container {
a.scld-calculator-tab-button {
text-decoration: none !important;
}
display: flex;
width: 100%;
justify-content: space-between;
> div {
&:first-child {
flex: 4;
}
&:last-child {
flex: 2;
margin-left: 25px;
}
}
a {
text-align: center;
}
.scld-calculator__switcher {
flex: 0 1 70%;
}
.scld-calculator__author {
flex: 0 1 30%;
}
}
input[type="range"] {
appearance: none;
width: 80%;
color: inherit;
background: inherit;
background-image: inherit;
border: none !important;
border-radius: inherit;
display: inherit;
padding: 0;
&:focus {
outline: none !important;
&::-webkit-slider-runnable-track {
background: #399fdf;
}
&::-ms-fill-lower {
background: #399fdf;
}
&::-ms-fill-upper {
background: #399fdf;
}
}
&::-webkit-slider-thumb {
-webkit-appearance: none;
height: 44px;
width: 14px;
border-radius: 3px;
background: #2b6296;
cursor: pointer;
margin-top: -14px;
}
&::-moz-range-thumb {
height: 44px;
width: 14px;
border-radius: 3px;
background: #2b6296;
cursor: pointer;
}
&::-ms-thumb {
height: 44px;
width: 14px;
border-radius: 3px;
background: #2b6296;
cursor: pointer;
}
&::-webkit-slider-runnable-track {
height: 18px;
cursor: pointer;
background: #399fdf;
border-radius: 10px;
border: 0.2px solid #3390c1;
}
&::-moz-range-track {
height: 18px;
cursor: pointer;
background: #399fdf;
border-radius: 10px;
border: 0.2px solid #3390c1;
}
&::-ms-track {
height: 18px;
cursor: pointer;
background: transparent;
border-color: #3390c1;
border-width: 16px 0;
color: transparent;
}
&::-ms-fill-lower {
background: #399fdf;
border: 0.2px solid #010101;
border-radius: 2.6px;
}
&::-ms-fill-upper {
background: #399fdf;
border: 0.2px solid #010101;
border-radius: 2.6px;
}
}
.scld-calculator-tabs {
overflow: hidden;
}
.scld-calculator-tabs-container {
input[type="number"] {
height: 25px;
width: 53px;
border: 1px solid #daddde;
display: inline-block;
color: inherit;
background: inherit;
background-image: inherit;
padding: 0 5px;
border-radius: 3px;
font-family: "Open Sans", sans-serif;
}
.scld-calculate {
position: relative;
float: left;
width: 70%;
margin: 0px;
}
#results {
position: relative;
float: left;
text-align: center;
}
input[type="radio"] {
margin: 0 10px;
}
}
.scld-slider {
display: inline-block !important;
}
.scld-calculator__author {
a {
text-decoration: none !important;
display: block;
text-align: center;
color: #1abc9c;
font-size: 14px;
font-weight: bold;
&:focus {
outline: none;
}
}
display: flex;
align-items: center;
justify-content: center;
font-family: "Open Sans", sans-serif;
font-style: italic;
}
.scld-calculate {
input[type="number"] {
font-size: 16px;
&:focus {
outline: none !important;
}
}
}
.scld-out-of-correct-number {
font-size: 20px;
margin-left: 3px;
vertical-align: top;
}
.scld-calculator-tab-button {
margin-right: 12px;
padding: 8px 12px;
background-color: #fff;
color: #18a085;
border: 1px solid #1abc9c;
border-radius: 4px;
margin-bottom: 8px;
display: inline-flex;
&:hover {
background: #1abc9c;
color: #fff !important;
}
}
.scld-selected-tab-button {
background: #1abc9c;
color: #fff !important;
}
input[name^="calculator_tab"] {
display: none;
}
.scld-calculator-subtitle {
font-size: 20px;
font-style: italic;
margin-bottom: 21px;
}
.scld-result-predicted {
font-weight: 600 !important;
}
.scld-result-last {
font-size: 22px;
}
.calculator__item {
display: flex;
align-items: center;
input {
&:first-child {
margin-right: 10px;
}
}
}
.scld-calculator__wrapper {
display: flex;
justify-content: space-between;
display: flex;
justify-content: space-between;
.scld-calculate {
width: 100% !important;
}
.scld-calculator {
width: 100% !important;
}
}
.calulator-title {
display: flex;
justify-content: space-between;
h2 {
&:first-child {
flex: 4;
}
&:last-child {
flex: 2;
position: relative;
margin-left: 25px;
}
}
}
.staar-result {
display: flex;
flex-direction: column;
align-items: center;
width: 100%;
}
.scld-calculator__input-wrapper {
flex: 4;
}
.scld-calculator__row.multiple-input {
.scld-calculator__result {
.scld-result-container {
flex: 1;
}
}
}
.change-color {
&.red {
background: rgb(221, 85, 102) !important;
}
&.yellow {
background: rgb(240, 191, 108) !important;
}
&.green {
background: rgb(136, 211, 113) !important;
}
&.blue {
background: rgb(45, 173, 255) !important;
}
&.purple {
background: rgb(152, 91, 205) !important;
}
}
h1,
h2,
h3 {
&::before {
display: none !important;
}
}
.scld-calculator-tabs-sat.scld-calculator__wrapper {
.scld-calculator {
flex: 4;
+ {
div {
flex: 2;
}
}
}
}
.max-width {
max-width: 215px;
}
.round-link {
display: flex;
width: 88px;
height: 88px;
border-radius: 50%;
margin-left: 16px;
align-items: center;
justify-content: center;
padding: 16px;
img {
width: 100%;
max-width: 100%;
}
}
.scld-calculator__row {
display: flex;
justify-content: space-between;
}
.scld-calculator__input__container {
flex: 4;
}
.scld-calculator__input {
flex: 4;
}
.scld-calculator__result__container {
flex: 2;
margin-left: 25px;
}
.scld-calculator__result {
flex: 2;
margin-left: 25px;
}
@media (max-width: 960px) {
.calc-switcher-container {
a.scld-calculator-tab-button {
margin-bottom: 10px;
}
}
}
@media (max-width: 767px) {
.scld-calculator__wrapper {
flex-direction: column;
}
.scld-calculator__row {
flex-direction: column;
}
.scld-calculator__input__container {
flex: 1;
}
.scld-calculator__input {
flex: 1;
}
.scld-calculator__result__container {
flex: 1;
margin-left: 0;
}
.scld-calculator__result {
flex: 1;
margin-left: 0;
}
}
C:\xampp82\htdocs\satscore\index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script src="./calculator.js"></script>
<link rel="stylesheet" href="./calc-style.css">
<title>Document</title>
</head>
<body>
<div id="calculator_tabs98" class="scld-calculator-tabs-container ">
<h1 class="scld-calculator-title">SAT® Score Calculator <a class="round-link"
href="https://www.albert.io/subjects/high-school/act-sat/sat?utm_source=blog&utm_medium=blog&utm_campaign=sat-score-calculator"
style="background-color: #6565c6">
<img src="https://assets.albert.io/canary-assets/subject-icons/19b8e13d-3ec5-4346-872e-50f8635aa2a5.svg"
class="scld-calculator-icon">
</a>
</h1>
<div class="calulator-title">
<h2 class="scld-calculator-subtitle">Enter your scores</h2>
<h2 class="scld-result-title">Results</h2>
</div>
<div id="calculator_98questions" class="scld-calculator-tabs-sat scld-calculator__wrapper">
<div id="tab_98questions" class="scld-calculator scld-calculator__input__container">
<div id="98questions" class="scld-calculate">
<p><label>Reading and Writing Module 1</label></p>
<p class="calculator__item">
<input type="range" min="0" max="27" value="14" data-part="Reading_and_Writing_Score"
data-subject="Reading_and_Writing_Module_1" data-id="98questions">
<input type="number" min="0" max="27" value="14" data-part="Reading_and_Writing_Score"
data-subject="Reading_and_Writing_Module_1" data-id="98questions">
<span class="scld-out-of-correct-number">/27</span>
</p>
<p><label>Reading and Writing Module 2</label></p>
<p class="calculator__item">
<input type="range" min="0" max="27" value="14" data-part="Reading_and_Writing_Score"
data-subject="Reading_and_Writing_Module_2" data-id="98questions">
<input type="number" min="0" max="27" value="14" data-part="Reading_and_Writing_Score"
data-subject="Reading_and_Writing_Module_2" data-id="98questions">
<span class="scld-out-of-correct-number">/27</span>
</p>
<p><label>Math Module 1</label></p>
<p class="calculator__item">
<input type="range" min="0" max="22" value="11" data-part="Math_Score" data-subject="Math_Module_1"
data-id="98questions">
<input type="number" min="0" max="22" value="11" data-part="Math_Score" data-subject="Math_Module_1"
data-id="98questions">
<span class="scld-out-of-correct-number">/22</span>
</p>
<p><label>Math Module 2</label></p>
<p class="calculator__item">
<input type="range" min="0" max="22" value="11" data-part="Math_Score" data-subject="Math_Module_2"
data-id="98questions">
<input type="number" min="0" max="22" value="11" data-part="Math_Score" data-subject="Math_Module_2"
data-id="98questions">
<span class="scld-out-of-correct-number">/22</span>
</p>
</div>
</div>
<div id="results_98questions" style="float: left" class="scld-calculator__result__container">
<div class="scld-result-container"><span>Reading and Writing Score</span>
<div class="scld-result-score shown-result">
<output data-insert="Reading_and_Writing_Module_1" data-score="0" data-part="Reading_and_Writing_Score"
class="scld-result-output-wc subject-result">430</output>
</div>
</div>
<div style="display: none"><span>Reading and Writing Score</span>
<div class=" hidden-result">
<output data-insert="Reading_and_Writing_Module_2" data-part="Reading_and_Writing_Score">190</output>
</div>
</div>
<div class="scld-result-container"><span>Math Score</span>
<div class="scld-result-score shown-result">
<output data-insert="Math_Module_1" data-score="0" data-part="Math_Score"
class="scld-result-output-wc subject-result">430</output>
</div>
</div>
<div style="display: none"><span>Math Score</span>
<div class=" hidden-result">
<output data-insert="Math_Module_2" data-part="Math_Score">190</output>
</div>
</div>
<div class="scld-result-container"><span class="scld-result-predicted scld-result-last">Total SAT® Score</span>
<div class="scld-result-score change-color" style="background-color: rgb(157, 105, 27);">
<output data-insert="total" data-sat-max="1980" class="scld-result-output-wc">860</output>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
C:\xampp82\htdocs\satscore\calculator.js
var satObj = {
"ids": ["98questions"],
"colors": [
{
"min": "1451",
"max": "1600",
"color": "#8224e3"
},
{
"min": "1251",
"max": "1450",
"color": "#1e73be"
},
{
"min": "1051",
"max": "1250",
"color": "#13866a"
},
{
"min": "851",
"max": "1050",
"color": "#9d691b"
},
{
"min": "0",
"max": "850",
"color": "#cc3224"
}
],
"data": {
"98questions": {
"Reading_and_Writing_Module_1": [100, 100, 120, 140, 160, 170, 180, 190, 200, 200, 210, 210, 220, 230, 240, 260, 270, 290, 310, 320, 340, 360, 370, 390, 410, 430, 440, 460],
"Reading_and_Writing_Module_2": [100, 100, 100, 110, 110, 110, 120, 120, 120, 130, 130, 140, 150, 170, 190, 190, 200, 210, 230, 240, 250, 260, 280, 290, 300, 310, 330, 330],
"Math_Module_1": [100, 100, 120, 140, 160, 160, 180, 180, 200, 200, 210, 240, 260, 280, 300, 320, 340, 360, 390, 410, 430, 450, 470],
"Math_Module_2": [100, 100, 100, 120, 120, 130, 150, 170, 170, 170, 190, 190, 200, 200, 210, 230, 240, 260, 270, 290, 300, 320, 330]
}
}
};
jQuery(document).ready(function ($) {
Number.prototype.between = function (a, b, inclusive) {
var min = Math.min.apply(Math, [a, b]), max = Math.max.apply(Math, [a, b]);
return inclusive ? this >= min && this <= max : this > min && this < max;
};
$('.scld-calculator-tabs-sat input').change(function () {
let subject = $(this).data('subject'), // Reading_and_Writing_Module_1
calcId = $(this).data('id'), // 98questions
part = $(this).data('part'), // Reading_and_Writing_Score,
scores = satObj.data[calcId][subject],
score = getScoreSat(scores, $(this).val()),
insert = $('#results_' + calcId + ' [data-insert=' + subject + ']'),
color,
allResult = $('#results_' + calcId + ' .subject-result');
insert.text(score);
if (part.length > 0) {
let subScoreInsert = $('#results_' + calcId + ' .shown-result [data-part="' + part + '"]');
$('#results_' + calcId + ' [data-insert=' + subject + ']').data('score', score);
let subHidden = $('#results_' + calcId + ' .hidden-result [data-part="' + part + '"]').text();
let totalPart = Number(subScoreInsert.data('score')) + Number(subHidden);
subScoreInsert.text(totalPart);
}
var totalScore = 0;
allResult.each(function () {
totalScore += (Number($(this).html()));
});
if (satObj['colors'].length > 0) {
color = getColor(satObj['colors'], totalScore);
$('#results_' + calcId + ' .change-color').css("background-color", color.color);
}
$('#results_' + calcId + ' [data-insert=total]').text(totalScore);
});
function getColor(scores, value) {
for (let score in scores) {
if (value.between(scores[score].min, scores[score].max, true)) {
return scores[score];
}
}
}
function getScoreSat(scores, value) {
for (let score in scores) {
if (value == score) {
return scores[score];
}
}
}
});