--- a/www/js/prod_edit.js Mon Aug 26 16:29:30 2019 +0200 +++ b/www/js/prod_edit.js Thu Sep 05 14:43:04 2019 +0200 @@ -1764,41 +1764,33 @@ } function calcFermentation(){ - if(dataRecord.brew_fermenter_sg<1.020)return; - var obrix=sg_to_brix(dataRecord.brew_fermenter_sg); - if ((dataRecord.primary_end_sg>0.990)&&(dataRecord.primary_end_sg<dataRecord.brew_fermenter_sg)){ - var primary_svg=Round(100*(dataRecord.brew_fermenter_sg-dataRecord.primary_end_sg)/(dataRecord.brew_fermenter_sg-1),1); - $("#primary_svg").val(primary_svg); - if((dataRecord.secondary_end_sg>0.990)&&(dataRecord.secondary_end_sg<dataRecord.brew_fermenter_sg)){ - var secondary_svg=Round(100*(dataRecord.brew_fermenter_sg-dataRecord.secondary_end_sg)/(dataRecord.brew_fermenter_sg-1),1); - $("#secondary_svg").val(secondary_svg); - if((dataRecord.fg>0.990)&&(dataRecord.fg<dataRecord.brew_fermenter_sg)){ - var final_svg=Round(100*(dataRecord.brew_fermenter_sg-dataRecord.fg)/(dataRecord.brew_fermenter_sg-1),1); - $("#final_svg").val(final_svg); - var ABV=Round(abvol(dataRecord.brew_fermenter_sg,dataRecord.fg),2); - $("#final_abv").val(ABV); - } - } - } +if(dataRecord.brew_fermenter_sg<1.020)return; +var obrix=sg_to_brix(dataRecord.brew_fermenter_sg); +if((dataRecord.primary_end_sg>0.990)&&(dataRecord.primary_end_sg<dataRecord.brew_fermenter_sg)){ +var primary_svg=Round(100*(dataRecord.brew_fermenter_sg-dataRecord.primary_end_sg)/(dataRecord.brew_fermenter_sg-1),1); +$("#primary_svg").val(primary_svg); +if((dataRecord.secondary_end_sg>0.990)&&(dataRecord.secondary_end_sg<dataRecord.brew_fermenter_sg)){ +var secondary_svg=Round(100*(dataRecord.brew_fermenter_sg-dataRecord.secondary_end_sg)/(dataRecord.brew_fermenter_sg-1),1); +$("#secondary_svg").val(secondary_svg); +if((dataRecord.fg>0.990)&&(dataRecord.fg<dataRecord.brew_fermenter_sg)){ +var final_svg=Round(100*(dataRecord.brew_fermenter_sg-dataRecord.fg)/(dataRecord.brew_fermenter_sg-1),1); +$("#final_svg").val(final_svg); +var ABV=Round(abvol(dataRecord.brew_fermenter_sg,dataRecord.fg),2); +$("#final_abv").val(ABV);}}} } - function ResCO2(CO2, T) { - //var resco2 = 0.000849151 * T * T - 0.0587512 * T + 1.71137; // brouwhulp - var F = T * 1.8 + 32; - var resco2 = 3.0378 - 0.050062 * F + 0.00026555 * F * F; // most of the rest - //console.log("CO2: "+resco2); - return resco2; - } - - function CarbCO2toS(CO2, T, SFactor) { - var sugar = SFactor * (CO2 - ResCO2(CO2, T)) / 0.286; - if (sugar < 0) - sugar = 0; - return Math.round(sugar * 1000) / 1000; - } +function ResCO2(CO2,T){ +var F=T*1.8+32; +return 3.0378-0.050062*F+0.00026555*F*F; +} + +function CarbCO2toS(CO2,T,SFactor){ +var sugar=SFactor*(CO2-ResCO2(CO2,T))/0.286; +if(sugar<0)sugar=0; +return Round(sugar,3); +} function GetPressure(CO2, T1, T2) { - var F = T2 * 1.8 + 32; var V = CO2 - ResCO2(CO2, T1); if (V < 0) return 0; @@ -1808,106 +1800,91 @@ if (P < 0) P = 0; P = P * 1.01325; // atm to bar - P = Math.round(P * 10) / 10; - return P; - } - - function CarbCO2ToPressure(CO2, T) { - return (CO2 - (-0.000005594056 * Math.pow(T, 4) + 0.000144357886 * Math.pow(T, 3) + - 0.000362999168 * T * T - 0.064872987645 * T + 1.641145175049)) / - (0.00000498031 * Math.pow(T, 4) - 0.00024358267 * Math.pow(T, 3) + - 0.00385867329 * T * T - 0.05671206825 * T + 1.53801423376); + return Round(P,1); } - function calcCarbonation() { - - var TSec = dataRecord.secondary_temp; // End fermentation temperature. - if (TSec < 1) - TSec = dataRecord.primary_end_temp; // Fallback - if (TSec < 1) - TSec = 18; // Fallback to room temperature. - - if (dataRecord.fg == 0.000) - var ABV = abvol(dataRecord.brew_fermenter_sg, parseFloat($("#est_fg").jqxNumberInput('decimal'))); - else - var ABV = abvol(dataRecord.brew_fermenter_sg, dataRecord.fg); - - /* - * Calculate new volume and alcohol. - */ - var bvol = dataRecord.package_volume - (ABV * dataRecord.package_volume) / 100; - var balc = dataRecord.package_volume - bvol; - var mvol = dataRecord.package_infuse_amount - (dataRecord.package_infuse_abv * dataRecord.package_infuse_amount) / 100; - var malc = dataRecord.package_infuse_amount - mvol; - var talc = balc + malc; - var tvol = bvol + mvol; - ABV = Math.round(talc / (tvol + talc) * 10000) / 100; - //console.log("bvol:"+bvol+" balc:"+balc+" mvol:"+mvol+" malc:"+malc+" tvol:"+tvol+" talc:"+talc+" abv:"+ABV+" vol:"+(tvol + talc)); - dataRecord.package_abv = ABV; - $("#package_abv").val(ABV); - - console.log("calcCarbonation() TSec:"+TSec+" ABV:"+ABV); - if (!(rows = $('#fermentableGrid').jqxGrid('getrows'))) { - return; // grid not yet loaded. - } - - // Bottles - dataRecord.bottle_priming_amount = 0; - dataRecord.bottle_priming_total = 0; - for (var i = 0; i < rows.length; i++) { - var row = rows[i]; - if (row.f_added == 4) { - var SFactor = 1 / ((row.f_yield / 100) * (1 - row.f_moisture / 100)); - dataRecord.bottle_priming_amount = CarbCO2toS(dataRecord.bottle_carbonation, TSec, SFactor); - dataRecord.bottle_priming_total = Math.round(dataRecord.bottle_amount * dataRecord.bottle_priming_amount * 100) / 100; - $("#fermentableGrid").jqxGrid('setcellvalue', i, 'f_amount', dataRecord.bottle_priming_total / 1000); - } - } - $("#bottle_priming_amount").val(Math.round(dataRecord.bottle_priming_amount * 10) / 10); - $("#bottle_priming_total").val(dataRecord.bottle_priming_total); - var pabv = ABV + dataRecord.bottle_priming_amount * 0.47 / 7.907; - var pvol = dataRecord.bottle_amount - (pabv * dataRecord.bottle_amount) / 100; - var talc = dataRecord.bottle_amount - pvol; - var tvol = pvol + dataRecord.bottle_priming_water; - var babv = Math.round(talc / (tvol + talc) * 10000) / 100; - //console.log("bottle pabv:"+pabv+" pvol:"+pvol+" wvol:"+dataRecord.bottle_priming_water+" tvol:"+tvol+" talc:"+talc+" abv:"+babv); - $("#bottle_abv").val(babv); - $("#bottle_pressure").val(GetPressure(dataRecord.bottle_carbonation, TSec, dataRecord.bottle_carbonation_temp)); - - // Kegs - var Pressure = CarbCO2ToPressure(dataRecord.keg_carbonation, dataRecord.keg_carbonation_temp); - if (Pressure < 0) - Pressure = 0; - dataRecord.keg_pressure = Pressure; - $("#keg_pressure").val(Math.round(Pressure * 10) / 10); - - dataRecord.keg_priming_amount = 0; - dataRecord.keg_priming_total = 0; - if (! dataRecord.keg_forced_carb) { - for (var i = 0; i < rows.length; i++) { - var row = rows[i]; - if (row.f_added == 5) { - var SFactor = 1 / ((row.f_yield / 100) * (1 - row.f_moisture / 100)); - dataRecord.keg_priming_amount = CarbCO2toS(dataRecord.keg_carbonation, TSec, SFactor); - dataRecord.keg_priming_total = Math.round(dataRecord.keg_amount * dataRecord.keg_priming_amount * 100) / 100; - $("#fermentableGrid").jqxGrid('setcellvalue', i, 'f_amount', dataRecord.keg_priming_total / 1000); - } - } - $("#keg_priming_amount").val(Math.round(dataRecord.keg_priming_amount * 10) / 10); - $("#keg_priming_total").val(dataRecord.keg_priming_total); - var pabv = ABV + dataRecord.keg_priming_amount * 0.47 / 7.907; - var pvol = dataRecord.keg_amount - (pabv * dataRecord.keg_amount) / 100; - var talc = dataRecord.keg_amount - pvol; - var tvol = pvol + dataRecord.keg_priming_water; - var kabv = Math.round(talc / (tvol + talc) * 10000) / 100; - //console.log("kegs pabv:"+pabv+" pvol:"+pvol+" wvol:"+dataRecord.keg_priming_water+" tvol:"+tvol+" talc:"+talc+" abv:"+kabv); - $("#keg_abv").val(kabv); - } else { - $("#keg_priming_amount").val(0); - $("#keg_priming_total").val(0); - $("#keg_abv").val(ABV); - } - } +function CarbCO2ToPressure(CO2, T) { +return (CO2-(-0.000005594056*Math.pow(T,4)+0.000144357886*Math.pow(T,3)+0.000362999168*T*T-0.064872987645*T+1.641145175049)) / + (0.00000498031*Math.pow(T,4)-0.00024358267*Math.pow(T,3)+0.00385867329*T*T-0.05671206825*T+1.53801423376); +} + +function calcCarbonation() { +var TSec=dataRecord.secondary_temp; +if(TSec<1)TSec=dataRecord.primary_end_temp; +if(TSec<1)TSec=18; +if(dataRecord.fg==0.000) +var ABV=abvol(dataRecord.brew_fermenter_sg,parseFloat($("#est_fg").jqxNumberInput('decimal'))); +else +var ABV=abvol(dataRecord.brew_fermenter_sg,dataRecord.fg); +/* Calculate new volume and alcohol. */ +var bvol=dataRecord.package_volume-(ABV*dataRecord.package_volume)/100; +var balc=dataRecord.package_volume-bvol; +var mvol=dataRecord.package_infuse_amount-(dataRecord.package_infuse_abv*dataRecord.package_infuse_amount)/100; +var malc=dataRecord.package_infuse_amount-mvol; +var talc=balc+malc; +var tvol=bvol+mvol; +ABV = Round(talc/(tvol+talc)*100,2); +dataRecord.package_abv=ABV; +$("#package_abv").val(ABV); + +// console.log("calcCarbonation() TSec:"+TSec+" ABV:"+ABV); +if(!(rows = $('#fermentableGrid').jqxGrid('getrows'))){return;} + +// Bottles +dataRecord.bottle_priming_amount=0; +dataRecord.bottle_priming_total=0; +for (var i=0;i<rows.length;i++){ +var row=rows[i]; +if(row.f_added==4){ +var SFactor=1/((row.f_yield/100)*(1-row.f_moisture/100)); +dataRecord.bottle_priming_amount=CarbCO2toS(dataRecord.bottle_carbonation,TSec,SFactor); +dataRecord.bottle_priming_total=Round(dataRecord.bottle_amount*dataRecord.bottle_priming_amount,2); +$("#fermentableGrid").jqxGrid('setcellvalue',i,'f_amount',dataRecord.bottle_priming_total/1000); +}} +$("#bottle_priming_amount").val(Round(dataRecord.bottle_priming_amount,1)); +$("#bottle_priming_total").val(dataRecord.bottle_priming_total); +var pabv=ABV+dataRecord.bottle_priming_amount*0.47/7.907; +var pvol=dataRecord.bottle_amount-(pabv*dataRecord.bottle_amount)/100; +var talc=dataRecord.bottle_amount-pvol; +var tvol=pvol+dataRecord.bottle_priming_water; +var babv = Round(talc/(tvol+talc)*100,2); +//console.log("bottle pabv:"+pabv+" pvol:"+pvol+" wvol:"+dataRecord.bottle_priming_water+" tvol:"+tvol+" talc:"+talc+" abv:"+babv); +$("#bottle_abv").val(babv); +$("#bottle_pressure").val(GetPressure(dataRecord.bottle_carbonation,TSec,dataRecord.bottle_carbonation_temp)); + +// Kegs +var Pressure=CarbCO2ToPressure(dataRecord.keg_carbonation,dataRecord.keg_carbonation_temp); +if(Pressure<0)Pressure=0; +dataRecord.keg_pressure=Pressure; +$("#keg_pressure").val(Round(Pressure,1)); + +dataRecord.keg_priming_amount=0; +dataRecord.keg_priming_total=0; +if(!dataRecord.keg_forced_carb){ +for(var i=0;i<rows.length;i++){ +var row=rows[i]; +if(row.f_added==5){ +var SFactor=1/((row.f_yield/100)*(1-row.f_moisture/100)); +dataRecord.keg_priming_amount=CarbCO2toS(dataRecord.keg_carbonation,TSec,SFactor); +dataRecord.keg_priming_total=Round(dataRecord.keg_amount*dataRecord.keg_priming_amount,2); +$("#fermentableGrid").jqxGrid('setcellvalue',i,'f_amount',dataRecord.keg_priming_total/1000); +} +} +$("#keg_priming_amount").val(Round(dataRecord.keg_priming_amount,1)); +$("#keg_priming_total").val(dataRecord.keg_priming_total); +var pabv=ABV+dataRecord.keg_priming_amount*0.47/7.907; +var pvol=dataRecord.keg_amount-(pabv*dataRecord.keg_amount)/100; +var talc=dataRecord.keg_amount-pvol; +var tvol=pvol+dataRecord.keg_priming_water; +var kabv=Round(talc/(tvol+talc)*100,2); +//console.log("kegs pabv:"+pabv+" pvol:"+pvol+" wvol:"+dataRecord.keg_priming_water+" tvol:"+tvol+" talc:"+talc+" abv:"+kabv); +$("#keg_abv").val(kabv); +} else { +$("#keg_priming_amount").val(0); +$("#keg_priming_total").val(0); +$("#keg_abv").val(ABV); +} +} function calcStage() { @@ -5811,7 +5788,7 @@ $("#est_fg3").jqxNumberInput( Show3dec ); $("#final_brix").jqxTooltip({ content: 'Hulpfinctie: de afgelezen °Brix RI waarde met een refractometer.' }); $("#final_brix").jqxNumberInput( Spin1dec ); - $("#final_abv").jqxNumberInput( Show1dec ); + $("#final_abv").jqxNumberInput( Show2dec ); $("#final_svg").jqxNumberInput( Show1dec ); $("#FLog").jqxButton({ template: "info", width: '150px', theme: theme }); $("#FLog").click(function () { @@ -5834,7 +5811,7 @@ $('#package_infuse_notes').jqxTooltip({ content: 'Omschrijving van de extra toevoeging.' }); $('#package_infuse_notes').jqxInput({ theme: theme, width: 640, height: 23 }); $('#package_abv').jqxTooltip({ content: 'De uiteindelijke hoeveelheid alcohol volume %.' }); - $('#package_abv').jqxNumberInput( Show1dec ); + $('#package_abv').jqxNumberInput( Show2dec ); $('#package_ph').jqxTooltip({ content: 'De gemeten pH vlak voor het verpakken.' }); $('#package_ph').jqxNumberInput( SpinpH ); $("#st_carb_min2").jqxTooltip({ content: 'Het minimum aanbevolen koolzuur volume voor deze bierstijl.'}); @@ -5971,8 +5948,8 @@ $("#keg_priming_total").jqxNumberInput( Show1dec ); $("#keg_forced_carb").jqxCheckBox({ theme: theme, width: 120, height: 23 }); $("#keg_pressure").jqxNumberInput( Show1dec ); - $("#bottle_abv").jqxNumberInput( Show1dec ); - $("#keg_abv").jqxNumberInput( Show1dec ); + $("#bottle_abv").jqxNumberInput( Show2dec ); + $("#keg_abv").jqxNumberInput( Show2dec ); $("#bottle_carbonation_temp").jqxNumberInput( YeastT ); $("#keg_carbonation_temp").jqxNumberInput( YeastT );