diff -r 62e294ab94f5 -r 943fbe0e9fd6 www/js/prod_edit.js --- a/www/js/prod_edit.js Sat Feb 09 22:12:31 2019 +0100 +++ b/www/js/prod_edit.js Sun Feb 10 16:14:48 2019 +0100 @@ -115,13 +115,19 @@ var mvol = 0; // mash volume var colort = 0; // Colors srm * vol totals var my_100 = false; + var mashtime = 0; // Total mash time + var mashtemp = 0; // Average mash temperature if ((rows = $('#mashGrid').jqxGrid('getrows'))) { for (var i = 0; i < rows.length; i++) { var row = rows[i]; if (row.step_type == 0) // Infusion mvol += parseFloat(row.step_infuse_amount); + mashtime += row.step_time; + mashtemp += row.step_time * row.step_temp; } + mashtemp = mashtemp / mashtime; + console.log("mash time:"+mashtime+" temp:"+mashtemp); } if (!(rows = $('#fermentableGrid').jqxGrid('getrows'))) { @@ -191,6 +197,9 @@ aboil_volume = dataRecord.brew_aboil_volume / 1.04; // volume @ 20 degrees dataRecord.brew_fermenter_volume = aboil_volume - dataRecord.brew_fermenter_tcloss + dataRecord.brew_fermenter_extrawater; $("#brew_fermenter_volume").val(dataRecord.brew_fermenter_volume); + // Estimated needed sparge water corrected for the temperature. + var spoelw = (dataRecord.boil_size - mash_infuse + (mashkg * my_grain_absorbtion) + dataRecord.eq_lauter_deadspace) * 1.03; + $("#brew_sparge_est").val(spoelw); // Calculate SG in fermenter var ogx = dataRecord.brew_aboil_sg; @@ -241,6 +250,35 @@ $("#perc_sugars").jqxProgressBar('val', psugar); $("#perc_cara").jqxProgressBar('val', pcara); calcStage(); + + // Calculate estimated svg. + svg = 77; // default. + var rows = $('#yeastGrid').jqxGrid('getrows'); + for (var i = 0; i < rows.length; i++) { + var row = rows[i]; + if (row.y_use == 0) // Primary + svg = parseFloat(row.y_attenuation); + } + + if ((mashkg > 0) && (mash_infuse > 0) && (mashtime > 0) && (mashtemp > 0)) { + dataRecord.est_fg = estimate_fg(psugar, pcara, mash_infuse / mashkg, mashtime, mashtemp, svg, dataRecord.est_og); + } else { + dataRecord.est_fg = estimate_fg(psugar, pcara, 0, 0, 0, svg, dataRecord.est_og); + } + $('#est_fg').val(dataRecord.est_fg); + $('#est_fg2').val(dataRecord.est_fg); + $('#est_fg3').val(dataRecord.est_fg); + + dataRecord.est_abv = abvol(dataRecord.est_og, dataRecord.est_fg); + $("#est_abv").val(dataRecord.est_abv); + $("#est_abv2").val(dataRecord.est_abv); + + // Calculate the final svg if available use the real value. + if ((dataRecord.stage >= 6) && (dataRecord.fg > 0.990) && (dataRecord.fg < dataRecord.brew_fermenter_sg)) { + svg = 100 * (dataRecord.brew_fermenter_sg - dataRecord.fg) / (dataRecord.brew_fermenter_sg - 1); + console.log("real svg:"+svg); + } + }; /* @@ -274,19 +312,6 @@ } }; - function calcFG() { - var fg = estimate_fg(psugar, pcara, 0, 0, 0, svg, dataRecord.est_og); - dataRecord.est_fg = fg; - $('#est_fg').val(fg); - $('#est_fg2').val(fg); - } - - function calcABV() { - var abv = abvol(dataRecord.est_og, dataRecord.est_fg); - $("#est_abv").val(abv); - $("#est_abv2").val(abv); - }; - function hopFlavourContribution(bt, vol, use, amount) { var result; @@ -341,27 +366,24 @@ hop_aroma += hopAromaContribution(parseFloat(row.h_time), parseFloat(dataRecord.batch_size), row.h_useat, parseFloat(row.h_amount)); } - total_ibus = Math.round(total_ibus); - ferm_ibus = Math.round(ferm_ibus); + total_ibus = Math.round(total_ibus * 10) / 10; + ferm_ibus = Math.round(ferm_ibus * 10) / 10; + hop_flavour = Math.round(hop_flavour * 100) / 10; + hop_aroma = Math.round(hop_aroma * 100) / 10; + if (hop_flavour > 100) + hop_flavour = 100; + if (hop_aroma > 100) + hop_aroma = 100; console.log("calcIBUs(): " + total_ibus + " flavour: " + hop_flavour + " aroma: " + hop_aroma+" fermenter:"+ferm_ibus); dataRecord.est_ibu = total_ibus; $('#est_ibu').val(total_ibus); $('#est_ibu2').val(total_ibus); - $("#hop_flavour").jqxProgressBar('val', hop_flavour * 10); - $("#hop_aroma").jqxProgressBar('val', hop_aroma * 10); + $("#hop_flavour").jqxProgressBar('val', hop_flavour); + $("#hop_aroma").jqxProgressBar('val', hop_aroma); $("#brew_fermenter_ibu").val(ferm_ibus); calcStage(); }; - function calcSVG() { - var rows = $('#yeastGrid').jqxGrid('getrows'); - for (var i = 0; i < rows.length; i++) { - var row = rows[i]; - if (row.y_use == 0) // Primary - svg = parseFloat(row.y_attenuation); - } - } - function calcMashEfficiency() { // console.log("calcMashEfficiency()"); var c = sg_to_plato(est_mash_sg); @@ -1394,9 +1416,6 @@ dataRecord.batch_size = parseFloat(event.args.value); calcFermentablesFromOG(parseFloat($("#est_og").jqxNumberInput('decimal'))); // Keep the OG calcFermentables(); - calcSVG(); - calcFG(); - calcABV(); // TODO: adjust the hops, miscs, yeast, water. calcIBUs(); }); @@ -1410,18 +1429,12 @@ $("#est_pre_vol").val(Math.round(new_boil * 1.04 * 100) / 100); $("#boil_size").val(Math.round(new_boil * 100) / 100); calcFermentables(); - calcSVG(); - calcFG(); - calcABV(); // TODO: adjust the hops, miscs, yeast, water. calcIBUs(); }); $('#efficiency').on('change', function (event) { console.log("efficiency change:"+event.args.value); calcFermentables(); - calcSVG(); - calcFG(); - calcABV(); calcIBUs(); }); $('#est_og').on('change', function (event) { @@ -1429,9 +1442,6 @@ $('#est_og2').val(event.args.value); calcFermentablesFromOG(event.args.value); // Adjust fermentables amounts calcFermentables(); // Update the recipe details - calcSVG(); - calcFG(); - calcABV(); // and ABV calcIBUs(); // and the IBU's. }); $('#mash_ph').on('change', function (event) { @@ -1617,8 +1627,6 @@ calcFermentablesFromOG(parseFloat($("#est_og").jqxNumberInput('decimal'))); // Keep the OG calcFermentables(); - calcSVG(); - calcABV(); // TODO: adjust the hops, miscs, yeast, water. calcIBUs(); } @@ -1943,6 +1951,7 @@ $("#est_og3").val(0); $("#est_fg").val(dataRecord.est_fg); $("#est_fg2").val(dataRecord.est_fg); + $("#est_fg3").val(dataRecord.est_fg); $("#est_color").val(dataRecord.est_color); $("#est_color2").val(dataRecord.est_color); $("#est_abv").val(dataRecord.est_abv); @@ -2161,14 +2170,11 @@ $("#fermentableGrid").jqxGrid('setcellvalue', 0, "f_percentage", 100); } calcFermentables(); - calcSVG(); - calcFG(); - calcABV(); calcIBUs(); }); }, ready: function() { - calcFermentables(); + calcFermentables(); $('#jqxTabs').jqxTabs('next'); }, columns: [ @@ -2730,7 +2736,7 @@ }); }, ready: function() { - calcSVG(); + calcFermentables(); $('#jqxTabs').jqxTabs('next'); }, columns: [ @@ -2878,7 +2884,6 @@ }); }, ready: function() { - calcFG(); calcInit(); $('#jqxLoader').jqxLoader('close'); $('#jqxTabs').jqxTabs('first'); @@ -2998,7 +3003,7 @@ $("#st_og_max").jqxTooltip({ content: 'Het maximum begin SG voor deze bierstijl.'}); $("#st_og_max").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 50, height: 23, decimalDigits: 3, readOnly: true }); - $("#est_fg").jqxTooltip({ content: 'Het eind SG. Dit wordt automatisch berekend.' }); + $("#est_fg").jqxTooltip({ content: 'Het verwachte eind SG. Dit wordt automatisch berekend.' }); $("#est_fg").jqxNumberInput( Show3dec ); $("#st_fg_min").jqxTooltip({ content: 'Het minimum eind SG voor deze bierstijl.'}); $("#st_fg_min").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 50, height: 23, decimalDigits: 3, readOnly: true }); @@ -3143,9 +3148,6 @@ $("#fermentableGrid").jqxGrid('sortby', 'f_amount', 'desc'); // Recalc percentages calcFermentables(); - calcSVG(); - calcFG(); - calcABV(); calcIBUs(); // Waters: yes there is impact. }); @@ -3585,7 +3587,7 @@ }); // Tab 6, Yeasts - $("#est_fg2").jqxTooltip({ content: 'Het eind SG. Dit wordt automatisch berekend.' }); + $("#est_fg2").jqxTooltip({ content: 'Het verwachte eind SG. Dit wordt automatisch berekend.' }); $("#est_fg2").jqxNumberInput( Show3dec ); $("#est_abv2").jqxTooltip({ content: 'Alcohol volume %. Dit wordt automatisch berekend.' }); $("#est_abv2").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 50, height: 23, decimalDigits: 1, readOnly: true }); @@ -3602,9 +3604,7 @@ }); $("#YeastReady").jqxButton({ template: "success", width: '90px', theme: theme }); $("#YeastReady").click(function () { - calcSVG(); - calcFG(); - calcABV(); + calcFermentables(); $("#yeastGrid").jqxGrid('sortby', 'y_use', 'asc'); }); $("#wy_name").jqxInput({ theme: theme, width: 320, height: 23 }); @@ -3656,9 +3656,7 @@ } else { $("#wy_pmpt_amount").html("Volume ml:"); } - calcSVG(); - calcFG(); - calcABV(); + calcFermentables(); } }); $("#wy_amount").jqxNumberInput( Spin1dec ); @@ -3670,9 +3668,7 @@ else var amount = parseFloat(event.args.value) / 1000; rowdata.y_amount = amount; - calcSVG(); - calcFG(); - calcABV(); + calcFermentables(); }); $("#wy_use").jqxDropDownList({ theme: theme, @@ -3689,9 +3685,7 @@ var index = event.args.index; var rowdata = $("#yeastGrid").jqxGrid('getrowdata', yeastRow); rowdata.y_use = index; - calcSVG(); - calcFG(); - calcABV(); + calcFermentables(); } }); @@ -4098,6 +4092,7 @@ $("#brew_aboil_efficiency").jqxNumberInput( Show1dec ); $("#brew_sparge_temperature").jqxNumberInput( Spin1dec ); $("#brew_sparge_volume").jqxNumberInput( Spin1dec ); + $("#brew_sparge_est").jqxNumberInput( Show1dec ); $("#brew_whirlpool9").jqxNumberInput( PosInt ); $("#brew_whirlpool9").jqxNumberInput({ max: 120 }); $("#brew_cooling_to").jqxNumberInput( Spin1dec ); @@ -4162,6 +4157,8 @@ $('#secondary_end_date').on('close', function (event) { calcStage(); }); $("#tertiary_temp").jqxNumberInput( YeastT ); $("#fg").jqxNumberInput( Spin3dec ); + $("#est_fg3").jqxTooltip({ content: 'Het verwachte eind SG. Dit wordt automatisch berekend.' }); + $("#est_fg3").jqxNumberInput( Show3dec ); $("#final_abv").jqxNumberInput( Show1dec ); $("#final_svg").jqxNumberInput( Show1dec ); $("#FLog").jqxButton({ template: "info", width: '150px', theme: theme });