From 0fefb4b423c4728e8cf9007cc342902288fea0ba Mon Sep 17 00:00:00 2001 From: willd Date: Mon, 9 Jan 2023 11:35:10 +0100 Subject: [PATCH] Bug fixes, results total calculation --- parts/static/script.js | 95 +++++++++++++++++++++++++++++------------- 1 file changed, 67 insertions(+), 28 deletions(-) diff --git a/parts/static/script.js b/parts/static/script.js index 36baeba..92c0b91 100644 --- a/parts/static/script.js +++ b/parts/static/script.js @@ -1,9 +1,12 @@ var active_timer = 100; -var calculation = 0; - +var calculation = []; function capitalizeFirstLetter(string) { return string.charAt(0).toUpperCase() + string.slice(1); } +function truncator(numToTruncate, intDecimalPlaces) { + var numPower = Math.pow(10, intDecimalPlaces); // "numPowerConverter" might be better + return ~~(numToTruncate * numPower)/numPower; +} function init_edit(partID) { $('table#details tr#type td p').hide(); $('#type-dropdown').show(); @@ -57,7 +60,30 @@ function new_entry() { } function calculate() { + let total = 0; + count = Object.keys(calculation).length; + for(let m = 0; m < count; m++) { + let jsonParameters = calculation[m]; + let obj = Object.keys(jsonParameters); + let values = Object.values(jsonParameters); + + $.getJSON(rootURL + 'getpartinfo/' + jsonParameters["partid"], function(data) { + +// $('table#calculations tr#results td p').text(data.partno+" "+jsonParameters["energy"]+" J over "+jsonParameters["period"]+" seconds"); +// $('table#calculations tr#results td p').show(); + total+= truncator(jsonParameters["energy"],5); + if($('table#calculations tr#'+jsonParameters["partid"]).length == 0) { + $('table#calculations').append('

'+data.partno+" "+truncator(jsonParameters["energy"],5)+" J over "+jsonParameters["period"]+' seconds

'); + $('table#calculations tr#'+jsonParameters["partid"]+' td p').show(); + } + $('#results td p').text("Total: "+truncator(total,5)+" J"); + + }); + + } + calculateoverlay_in(); + } function end_edit() { @@ -95,7 +121,7 @@ function save(partID) { alert('Please select a component type.'); return; } - var type_id_v = $('type-dropdown').val(); + var type_id_v = $('#type-dropdown').val(); var partno_v = $('input[name=partno-input]').val(); var description_v = $('input[name=description-input]').val(); var datasheet = $('table#details tr#datasheet td input')[0].files; @@ -108,7 +134,7 @@ function save(partID) { total.push(elem.value); mapped[elem.name] = elem.value; }); - console.log(mapped); + //console.log(mapped); if(partno_v.length == 0){ alert('Please enter a part number.'); return; @@ -140,7 +166,7 @@ function save(partID) { data.append('type_id', type_id_v); data.append('description', description_v); data.append('notes', notes_v); - data.append('parameters', mapped); + data.append('parameters', JSON.stringify(mapped)); $.ajax({ @@ -199,34 +225,55 @@ function delete_entry(partID) { }, }); } -function calculate_entry(partID,parameters) { +function calculate_entry(partID,jsonParameters) { if (partID < 0) return; if (!confirm('Add selected entry to calculation?')) return; - console.log(parameters); - if(parameters != null) { - var jsonParameters = JSON.parse(data.parameters); - console.log(jsonParameters); - var count = Object.keys(jsonParameters).length; - console.log(count); + if(jsonParameters != null) { // for(var k = 0; k < count; k++) { var obj = Object.keys(jsonParameters); - var values = Object.values(jsonParameters); - var voltage = 0; - var currents = []; - console.log(obj); + var values = Object.values(jsonParameters); + var voltage = 0; + var activepower = 0; + var sleeppower = 0; + var single_period = 0; + //console.log(obj); for (var key in obj) { var value = obj[key]; - console.log(key+":"+value); + var numbers = values[key] + //console.log(key+":"+value+":"+numbers); if(value.includes('voltage')) { voltage = values[key]; } else if(value.includes('current')) { - + if(value.includes('sleep')) { + sleeppower = Number(values[key]); + } + else { + activepower+=Number(values[key]); + } } - } + else if(value.includes('mode')) { + single_period=Number(values[key])+Number(single_period); + if(value.includes('sleep')) { + sleeppower=sleeppower*Number(values[key]); + } + else { + activepower=activepower*Number(values[key]); + } + } + else { + console.log("Unconfigured: "+value+":"+values[key]); + } + + } + jsonParameters["energy"]=voltage*(sleeppower+activepower); + jsonParameters["period"]=single_period; + jsonParameters["partid"]=partID; + calculation.push(jsonParameters); } + overlay_out(); } function show_part_info(partID) { @@ -248,21 +295,15 @@ function show_part_info(partID) { $('table#details tr#description td input').val(text_filter(data.description)); $('table#details tr#notes td p').text(text_filter(data.notes)); $('input[name=notes-input]').val(text_filter(data.notes)); - console.log(data.parameters); if(data.parameters != null) { var jsonParameters = JSON.parse(data.parameters); - console.log(jsonParameters); var count = Object.keys(jsonParameters).length; - console.log(count); // for(var k = 0; k < count; k++) { var obj = Object.keys(jsonParameters); var values = Object.values(jsonParameters); - console.log(obj); for (var key in obj) { var value = obj[key]; - console.log(key+":"+value); - console.log($('table#details tr#'+value.substring(0,value.indexOf("-"))).children().length ); if(value.includes("input") && $('table#details tr#'+value.substring(0,value.indexOf("-"))).children().length == 0 ) { $('table#details').append('

') $('table#details tr#'+value.substring(0,value.indexOf("-"))+' td p').text(capitalizeFirstLetter(value.substring(0,value.indexOf("-")))); @@ -301,8 +342,7 @@ function show_part_info(partID) { $('#calculate-add-button').off('click').on('click', function() { for (var key in obj) { var value = obj[key]; - console.log(key+":"+value); - jsonParameters[obj[key]]=$('table#details tr#'+value.substring(0,value.indexOf("-"))+' td input').val(); + jsonParameters[value]=$('table#details tr#'+value.substring(0,value.indexOf("-"))+' td input').val(); } calculate_entry(partID,jsonParameters); @@ -329,7 +369,6 @@ function perform_query() { var queryPromise = $.getJSON(rootURL + 'query/' + filter + '/' + query, data, function(data) { for(var i = 0; i < data.length; i++) { - console.log(data[i]); var newRow = $(''); newRow.append($('').text(text_filter(data[i].type_descriptor))); newRow.append($('').text(text_filter(data[i].partno)));