Added a summary display to show total and average reductions, etc.
Bugfixes, including removing elements from the graph when removing entries, and three-decimal formatting our inches. Layout changes, in both code and webpage. Some edits to the print layout to improve printing and readability
This commit is contained in:
parent
f98c616fc3
commit
c336174a23
77
analyser.css
77
analyser.css
@ -89,6 +89,17 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.footer {
|
.footer {
|
||||||
|
display: inline;
|
||||||
|
position: relative;
|
||||||
|
bottom: 15px;
|
||||||
|
width: 100%;
|
||||||
|
font-size: 75%;
|
||||||
|
margin: auto;
|
||||||
|
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.printFooter {
|
||||||
|
display: none;
|
||||||
position: relative;
|
position: relative;
|
||||||
bottom: 15px;
|
bottom: 15px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@ -117,6 +128,57 @@
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#spacer1 {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#spacer2 {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#spacer3 {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#statistics {
|
||||||
|
font-size: 90%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#statistics h5 {
|
||||||
|
font-size: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#statsSummaryHeader {
|
||||||
|
color: rgba(0,0,0,0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
#statsTable {
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#statsCol1 {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
#statsCol2 {
|
||||||
|
text-align: left;
|
||||||
|
padding-left: 2%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#statsCol3 {
|
||||||
|
width: 20%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#statsCol4 {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
#statsCol5 {
|
||||||
|
text-align: left;
|
||||||
|
padding-left: 2%;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@media print {
|
@media print {
|
||||||
@page {
|
@page {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
@ -133,4 +195,19 @@
|
|||||||
.printHeader {
|
.printHeader {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
|
.footer {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.printFooter {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
.output {
|
||||||
|
font-size:80%;
|
||||||
|
}
|
||||||
|
#statistics {
|
||||||
|
font-size: 68%;
|
||||||
|
}
|
||||||
|
.content {
|
||||||
|
margin-top: 5%;
|
||||||
|
}
|
||||||
}
|
}
|
237
analyser.js
237
analyser.js
@ -1,5 +1,5 @@
|
|||||||
var numDies = 0; // master counter for our number of dies
|
var numDies = 0; // master counter for our number of dies
|
||||||
var outputVisible = 0; // Status of whether the output graph is displayed or not
|
var outputVisible = 0; // Status of whether the output is displayed or not
|
||||||
|
|
||||||
// Arrays to store values for graphs
|
// Arrays to store values for graphs
|
||||||
var dieCount = [];
|
var dieCount = [];
|
||||||
@ -68,6 +68,12 @@ function addReduction() {
|
|||||||
function removeReduction() { // function to remove the last row
|
function removeReduction() { // function to remove the last row
|
||||||
numDies --;
|
numDies --;
|
||||||
document.getElementById("data").deleteRow(-1); // delete the last row in the table
|
document.getElementById("data").deleteRow(-1); // delete the last row in the table
|
||||||
|
|
||||||
|
// Remove the last item in each array to remove the tick from the graph
|
||||||
|
dieCount.splice(-1);
|
||||||
|
dataROA.splice(-1);
|
||||||
|
dataElong.splice(-1);
|
||||||
|
dataDelta.splice(-1);
|
||||||
|
|
||||||
if (outputVisible == 1) { // Check if out output is visible and update immediately when adding dies
|
if (outputVisible == 1) { // Check if out output is visible and update immediately when adding dies
|
||||||
doMath();
|
doMath();
|
||||||
@ -91,23 +97,23 @@ function doMath() {
|
|||||||
var row = [];
|
var row = [];
|
||||||
row[0] = outputTable.insertRow(0);
|
row[0] = outputTable.insertRow(0);
|
||||||
row[0].id = "outputHeader"; // set the header row
|
row[0].id = "outputHeader"; // set the header row
|
||||||
var r1c1 = row[0].insertCell(0); //blank
|
var cell1 = row[0].insertCell(0); //blank
|
||||||
var r1c2 = row[0].insertCell(1); // "Start -> Finish"
|
var cell2 = row[0].insertCell(1); // "Start -> Finish"
|
||||||
var r1c3 = row[0].insertCell(2); // "ROA"
|
var cell3 = row[0].insertCell(2); // "ROA"
|
||||||
var r1c4 = row[0].insertCell(3); // "Elong"
|
var cell4 = row[0].insertCell(3); // "Elong"
|
||||||
var r1c5 = row[0].insertCell(4); // "Delta"
|
var cell5 = row[0].insertCell(4); // "Delta"
|
||||||
|
|
||||||
// Create the header of the table
|
// Create the header of the table
|
||||||
r1c1.innerHTML = "Draft";
|
cell1.innerHTML = "Draft";
|
||||||
r1c1.id = "reductionNumHeader";
|
cell1.id = "reductionNumHeader";
|
||||||
r1c2.innerHTML = "Start -> Finish";
|
cell2.innerHTML = "Start -> Finish";
|
||||||
r1c2.id = "startFinish";
|
cell2.id = "startFinish";
|
||||||
r1c3.innerHTML = "ROA (%)";
|
cell3.innerHTML = "ROA (%)";
|
||||||
r1c3.id = "roa";
|
cell3.id = "roa";
|
||||||
r1c4.innerHTML = "Elong (%)";
|
cell4.innerHTML = "Elong (%)";
|
||||||
r1c4.id = "elong";
|
cell4.id = "elong";
|
||||||
r1c5.innerHTML = "Δ Factor";
|
cell5.innerHTML = "Δ Factor";
|
||||||
r1c5.id = "delta";
|
cell5.id = "delta";
|
||||||
|
|
||||||
for (var i = 1; i < numDies + 1; i++) {
|
for (var i = 1; i < numDies + 1; i++) {
|
||||||
inSize = document.getElementById("die" + (i - 1)).value; // the input size
|
inSize = document.getElementById("die" + (i - 1)).value; // the input size
|
||||||
@ -136,25 +142,25 @@ function doMath() {
|
|||||||
|
|
||||||
// Add all our cells to the table
|
// Add all our cells to the table
|
||||||
// We also give them HTML ID's to format things with CSS nicely
|
// We also give them HTML ID's to format things with CSS nicely
|
||||||
var cell1 = row[i].insertCell(0);
|
cell1 = row[i].insertCell(0);
|
||||||
cell1.id = "reductionNum";
|
cell1.id = "reductionNum";
|
||||||
var cell2 = row[i].insertCell(1);
|
cell2 = row[i].insertCell(1);
|
||||||
cell2.id = "startFinish";
|
cell2.id = "startFinish";
|
||||||
var cell3 = row[i].insertCell(2);
|
cell3 = row[i].insertCell(2);
|
||||||
cell3.id = "roa";
|
cell3.id = "roa";
|
||||||
var cell4 = row[i].insertCell(3);
|
cell4 = row[i].insertCell(3);
|
||||||
cell4.id = "elong";
|
cell4.id = "elong";
|
||||||
var cell5 = row[i].insertCell(4);
|
cell5 = row[i].insertCell(4);
|
||||||
cell5.id = "delta";
|
cell5.id = "delta";
|
||||||
|
|
||||||
// These next lines calculate and round the data to two decimal places
|
// These next lines calculate and round the data to two decimal places
|
||||||
dataROA[i - 1] = Math.round(getReduction(inSize, outSize) * 100) / 100;
|
dataROA[i - 1] = (Math.round(getReduction(inSize, outSize) * 100) / 100).toFixed(2);
|
||||||
dataElong[i - 1] = Math.round(getElongation(inSize, outSize) * 100) / 100;
|
dataElong[i - 1] = (Math.round(getElongation(inSize, outSize) * 100) / 100).toFixed(2);
|
||||||
dataDelta[i - 1] = Math.round(getDelta(inSize, outSize, angle) * 100) / 100;
|
dataDelta[i - 1] = (Math.round(getDelta(inSize, outSize, angle) * 100) / 100).toFixed(2);
|
||||||
|
|
||||||
// Set the values of the cells in our table
|
// Set the values of the cells in our table
|
||||||
cell1.innerHTML = "#" + i + ": ";
|
cell1.innerHTML = "#" + i + ": ";
|
||||||
cell2.innerHTML = inSize + "\" (" + toMillimetres(inSize) + " mm) -> " + outSize + "\" (" + toMillimetres(outSize) + " mm)";
|
cell2.innerHTML = inSize.toFixed(3) + "\" (" + toMillimetres(inSize) + " mm) -> " + outSize.toFixed(3) + "\" (" + toMillimetres(outSize) + " mm)";
|
||||||
cell3.innerHTML = dataROA[i - 1];
|
cell3.innerHTML = dataROA[i - 1];
|
||||||
cell4.innerHTML = dataElong[i - 1];
|
cell4.innerHTML = dataElong[i - 1];
|
||||||
cell5.innerHTML = dataDelta[i - 1];
|
cell5.innerHTML = dataDelta[i - 1];
|
||||||
@ -162,6 +168,12 @@ function doMath() {
|
|||||||
dieCount[i - 1] = i;
|
dieCount[i - 1] = i;
|
||||||
}
|
}
|
||||||
drawGraph();
|
drawGraph();
|
||||||
|
getStatistics();
|
||||||
|
|
||||||
|
// Add spacers
|
||||||
|
document.getElementById("spacer1").style.display = 'block';
|
||||||
|
document.getElementById("spacer2").style.display = 'block';
|
||||||
|
document.getElementById("spacer3").style.display = 'block';
|
||||||
}
|
}
|
||||||
|
|
||||||
function drawGraph() {
|
function drawGraph() {
|
||||||
@ -257,6 +269,145 @@ function drawGraph() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getStatistics() {
|
||||||
|
// Get data from page
|
||||||
|
var div = document.getElementById("statistics");
|
||||||
|
var startSize = formatCheck(document.getElementById("die0").value);
|
||||||
|
var finalSize = formatCheck(document.getElementById("die" + numDies).value);
|
||||||
|
|
||||||
|
// Check if the start size is metric/rod and convert to inches
|
||||||
|
if (document.getElementById("metric").checked == true) {
|
||||||
|
startSize = toInches(startSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
// We'll do a lot of the heavy math-lifting here to make things easier to read below
|
||||||
|
var avgDelta = 0;
|
||||||
|
var avgROA = 0;
|
||||||
|
var avgElong = 0;
|
||||||
|
var totalROA = Math.round(getReduction(startSize, finalSize) * 100) / 100;
|
||||||
|
var totalElong = Math.round(getElongation(startSize, finalSize) * 100) / 100;
|
||||||
|
|
||||||
|
// Get average ROA
|
||||||
|
for (var i = 0; i < numDies; i++) {
|
||||||
|
avgROA += Number(dataROA[i]);
|
||||||
|
}
|
||||||
|
avgROA = (Math.round((avgROA / numDies) * 100) / 100).toFixed(2);
|
||||||
|
|
||||||
|
// Get average Elong
|
||||||
|
for (var i = 0; i < numDies; i++) {
|
||||||
|
avgElong += Number(dataElong[i]);
|
||||||
|
}
|
||||||
|
avgElong = (Math.round((avgElong / numDies) * 100) / 100).toFixed(2);
|
||||||
|
|
||||||
|
// Get average delta
|
||||||
|
for (var i = 0; i < numDies; i++) {
|
||||||
|
avgDelta += Number(dataDelta[i]);
|
||||||
|
}
|
||||||
|
avgDelta = (Math.round((avgDelta / numDies) * 100) / 100).toFixed(2);
|
||||||
|
|
||||||
|
// Create the table to display statistics
|
||||||
|
div.innerHTML = "<p></p><h5 align=\"center\" id=\"statsSummaryHeader\">Summary</h5><table id=\"statsTable\"></table>";
|
||||||
|
|
||||||
|
var statsTable = document.getElementById("statsTable");
|
||||||
|
|
||||||
|
|
||||||
|
//// ROW 1 ////
|
||||||
|
var row = statsTable.insertRow(0);
|
||||||
|
|
||||||
|
var c1 = row.insertCell(0);
|
||||||
|
var c2 = row.insertCell(1);
|
||||||
|
var c3 = row.insertCell(2);
|
||||||
|
var c4 = row.insertCell(3);
|
||||||
|
var c5 = row.insertCell(4);
|
||||||
|
|
||||||
|
// COL 1
|
||||||
|
c1.innerHTML = "# Of Reductions: ";
|
||||||
|
c1.id = "statsCol1";
|
||||||
|
c2.innerHTML = numDies;
|
||||||
|
c2.id = "statsCol2";
|
||||||
|
//
|
||||||
|
c3.innerHTML = " ";
|
||||||
|
c3.id = "statsCol3";
|
||||||
|
// COL 2
|
||||||
|
c4.innerHTML = "Avg. Δ Factor: ";
|
||||||
|
c4.id = "statsCol4";
|
||||||
|
c5.innerHTML = avgDelta;
|
||||||
|
c5.id = "statsCol5";
|
||||||
|
|
||||||
|
|
||||||
|
//// ROW 2 ////
|
||||||
|
row = statsTable.insertRow(1);
|
||||||
|
|
||||||
|
c1 = row.insertCell(0);
|
||||||
|
c2 = row.insertCell(1);
|
||||||
|
c3 = row.insertCell(2);
|
||||||
|
c4 = row.insertCell(3);
|
||||||
|
c5 = row.insertCell(4);
|
||||||
|
|
||||||
|
// COL 1
|
||||||
|
c1.innerHTML = "Total R. Of Diameter: ";
|
||||||
|
c1.id = "statsCol4";
|
||||||
|
c2.innerHTML = (Math.round((startSize - finalSize) * 1000) / 1000).toFixed(3) + "\"";
|
||||||
|
c2.id = "statsCol5";
|
||||||
|
//
|
||||||
|
c3.innerHTML = " ";
|
||||||
|
c3.id = "statsCol3";
|
||||||
|
// COL 2
|
||||||
|
c4.innerHTML = "------";
|
||||||
|
c4.id = "statsCol4";
|
||||||
|
c5.innerHTML = "---";
|
||||||
|
c5.id = "statsCol5";
|
||||||
|
|
||||||
|
|
||||||
|
//// ROW 3 ////
|
||||||
|
row = statsTable.insertRow(2);
|
||||||
|
|
||||||
|
c1 = row.insertCell(0);
|
||||||
|
c2 = row.insertCell(1);
|
||||||
|
c3 = row.insertCell(2);
|
||||||
|
c4 = row.insertCell(3);
|
||||||
|
c5 = row.insertCell(4);
|
||||||
|
|
||||||
|
// COL 1
|
||||||
|
c1.innerHTML = "Total R. Of Area: ";
|
||||||
|
c1.id = "statsCol1";
|
||||||
|
c2.innerHTML = totalROA + "%";
|
||||||
|
c2.id = "statsCol2";
|
||||||
|
//
|
||||||
|
c3.innerHTML = " ";
|
||||||
|
c3.id = "statsCol3";
|
||||||
|
// COL 2
|
||||||
|
c4.innerHTML = "Avg. R. of Area: ";
|
||||||
|
c4.id = "statsCol4";
|
||||||
|
c5.innerHTML = avgROA + "%";
|
||||||
|
c5.id = "statsCol5";
|
||||||
|
|
||||||
|
|
||||||
|
//// ROW 4 ////
|
||||||
|
row = statsTable.insertRow(3);
|
||||||
|
|
||||||
|
c1 = row.insertCell(0);
|
||||||
|
c2 = row.insertCell(1);
|
||||||
|
c3 = row.insertCell(2);
|
||||||
|
c4 = row.insertCell(3);
|
||||||
|
c5 = row.insertCell(4);
|
||||||
|
|
||||||
|
// COL 1
|
||||||
|
c1.innerHTML = "Total Elong.: ";
|
||||||
|
c1.id = "statsCol1";
|
||||||
|
c2.innerHTML = totalElong + "%";
|
||||||
|
c2.id = "statsCol2";
|
||||||
|
//
|
||||||
|
c3.innerHTML = " ";
|
||||||
|
c3.id = "statsCol3";
|
||||||
|
// COL 2
|
||||||
|
c4.innerHTML = "Avg. Elongation: ";
|
||||||
|
c4.id = "statsCol4";
|
||||||
|
c5.innerHTML = avgElong + "%";
|
||||||
|
c5.id = "statsCol5";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
function clearScreen() {
|
function clearScreen() {
|
||||||
// Reset variables back to defaults
|
// Reset variables back to defaults
|
||||||
numDies = 0;
|
numDies = 0;
|
||||||
@ -278,6 +429,14 @@ function clearScreen() {
|
|||||||
outputGraph = document.getElementById("outputChart");
|
outputGraph = document.getElementById("outputChart");
|
||||||
outputGraph.innerHTML = "";
|
outputGraph.innerHTML = "";
|
||||||
|
|
||||||
|
statistics = document.getElementById("statistics");
|
||||||
|
statistics.innerHTML = "";
|
||||||
|
|
||||||
|
// Delete the spacers
|
||||||
|
document.getElementById("spacer1").style.display = 'none';
|
||||||
|
document.getElementById("spacer2").style.display = 'none';
|
||||||
|
document.getElementById("spacer3").style.display = 'none';
|
||||||
|
|
||||||
// Add two fresh entries
|
// Add two fresh entries
|
||||||
addReduction();
|
addReduction();
|
||||||
addReduction();
|
addReduction();
|
||||||
@ -294,32 +453,23 @@ function printScreen() {
|
|||||||
|
|
||||||
// Get input size, and format it
|
// Get input size, and format it
|
||||||
var inputSize = document.getElementById("die0").value;
|
var inputSize = document.getElementById("die0").value;
|
||||||
if (inputSize < 10.0 && inputSize > 0) { // If we have a 'proper' number i.e. ".130"
|
|
||||||
inputSize = Number(inputSize);
|
|
||||||
} else { // re-format the number if it's 'wrong' i.e. "130"
|
|
||||||
inputSize = inputSize / 1000;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If our start size is metric show that, otherwise swap them to show 'murican first
|
// If our start size is metric show that, otherwise swap them to show 'murican first
|
||||||
if (document.getElementById("metric").checked) {
|
if (document.getElementById("metric").checked) {
|
||||||
var inputText = inputSize + " mm (" + toInches(inputSize) + "\")";
|
var inputText = inputSize + " mm (" + toInches(inputSize) + "\")";
|
||||||
} else {
|
} else {
|
||||||
var inputText = inputSize + "\" (" + toMillimetres(inputSize) + " mm)";
|
var inputText = formatCheck(inputSize) + "\" (" + toMillimetres(formatCheck(inputSize)) + " mm)";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Get the final size and format it
|
// Get the final size and format it
|
||||||
var outputSize = document.getElementById("die" + numDies).value;
|
var outputSize = document.getElementById("die" + numDies).value;
|
||||||
if (outputSize < 10.0 && outputSize > 0) { // If we have a 'proper' number i.e. ".130"
|
outputSize = formatCheck(outputSize).toFixed(3);
|
||||||
outputSize = Number(outputSize);
|
var outputText = (outputSize) + "\" (" + toMillimetres(outputSize) + " mm)";
|
||||||
} else { // re-format the number if it's 'wrong' i.e. "130"
|
|
||||||
outputSize = outputSize / 1000;
|
|
||||||
}
|
|
||||||
var outputText = outputSize + "\" (" + toMillimetres(outputSize) + " mm)";
|
|
||||||
|
|
||||||
// Create and set the header
|
// Create and set the header
|
||||||
subtitle.innerHTML = "For " + inputText + " to " + outputText;
|
subtitle.innerHTML = "For " + inputText + " to " + outputText;
|
||||||
reductionCount.innerHTML = "Across " + numDies + " reductions";
|
|
||||||
|
|
||||||
// Change the name of the window to save the file with the same
|
// Change the name of the window to save the file with the same
|
||||||
var pageTitle = document.getElementById("pageTitle");
|
var pageTitle = document.getElementById("pageTitle");
|
||||||
@ -331,4 +481,13 @@ function printScreen() {
|
|||||||
|
|
||||||
// Reset the page title back to normal
|
// Reset the page title back to normal
|
||||||
pageTitle.innerHTML = title;
|
pageTitle.innerHTML = title;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function formatCheck(value) {
|
||||||
|
if (value < 10.0 && value > 0) { // If we have a 'proper' number i.e. ".130"
|
||||||
|
value = Number(value);
|
||||||
|
} else { // re-format the number if it's 'wrong' i.e. "130"
|
||||||
|
value = value / 1000;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
19
index.html
19
index.html
@ -14,11 +14,8 @@
|
|||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="printHeader">
|
<div class="printHeader">
|
||||||
<p id="vanity">Taylor Courage's</p>
|
<p id="vanity">Taylor Courage's</p>
|
||||||
<h1>Draft Analysis</h1>
|
<h2>Draft Analysis</h2>
|
||||||
<h3 id="subtitle"></h3>
|
<h4 id="subtitle"></h4>
|
||||||
<p id="numReductions"></p>
|
|
||||||
<p>─</p>
|
|
||||||
<p></p>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<p id="vanity">Taylor Courage's</p>
|
<p id="vanity">Taylor Courage's</p>
|
||||||
@ -54,11 +51,19 @@
|
|||||||
<p> </p>
|
<p> </p>
|
||||||
<p></p>
|
<p></p>
|
||||||
</div>
|
</div>
|
||||||
|
<p><hr id="spacer1" /></p>
|
||||||
<table class="output" id="output"></table>
|
<table class="output" id="output"></table>
|
||||||
<p> </p>
|
<p><hr id="spacer2" /></p>
|
||||||
<p id="outputChart"></p>
|
<div id="outputChart"></div>
|
||||||
|
<p><hr id="spacer3" /></p>
|
||||||
|
<div id="statistics"></div>
|
||||||
|
<p></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="printFooter" align="center">
|
||||||
|
<p> </p>
|
||||||
|
<p>© 2025 Taylor Courage</p>
|
||||||
|
</div>
|
||||||
<div class="footer" align="center">
|
<div class="footer" align="center">
|
||||||
<p> </p>
|
<p> </p>
|
||||||
<p>© 2025 <a href="http://git.taylorcourage.net/Taylor">Taylor Courage</a></p>
|
<p>© 2025 <a href="http://git.taylorcourage.net/Taylor">Taylor Courage</a></p>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user