diff -r cd1403633e96 -r bcc4583fd013 www/js/rec_edit.js --- a/www/js/rec_edit.js Sun Dec 09 22:27:38 2018 +0100 +++ b/www/js/rec_edit.js Mon Dec 10 22:20:19 2018 +0100 @@ -51,6 +51,7 @@ var sugarsf = 0; // Sugars after boil var psugar = 0; // Percentage real sugars var pcara = 0; // Percentage cara/crystal malts + var svg = 77; // Default attenuation console.log("record:" + my_record + " return:" + my_return + " theme:" + theme); $("#jqxLoader").jqxLoader({ @@ -77,7 +78,7 @@ my_100 = true; if (row.f_type == "Sugar") psugar += row.f_percentage; - if (row.f_type == "Crystal") + if (row.f_graintype == "Crystal") pcara += row.f_percentage; var d = row.f_amount * (row.f_yield / 100) * (1 - row.f_moisture / 100); if (row.f_added == "Mash") { @@ -95,6 +96,42 @@ $('#est_color').val(kw_to_ebc($("#color_method").val(), colorw)); }; + function hopFlavourContribution(bt, vol, use, amount) { + var result; + + if ((use == "First Wort") || (use == "First wort")) { + result = 0.15 * amount * 1000; // assume 15% flavourcontribution for fwh + } else if (bt > 50) { + result = 0.10 * amount * 1000; // assume 10% flavourcontribution as a minimum + } else { + result = 15.25 / (6 * Math.sqrt(2 * Math.PI)) * Math.exp(-0.5 * Math.pow((bt - 21) /6, 2)) * amount * 1000; + if (result < (0.10 * amount * 1000)) + result = 0.10 * amount * 1000; // assume 10% flavourcontribution as a minimum + } + console.log("hopFlavourContribution("+bt+","+vol+","+use+","+amount+"): "+(result / vol)); + return result / vol; + } + + function hopAromaContribution(bt, vol, use, amount) { + var result = 0; + + if (bt > 20) { + result = 0; + } else if (bt > 7.5) { + result = 10.03 / (4 * Math.sqrt(2 * Math.PI)) * Math.exp(-0.5 * Math.pow((bt - 7.5) /4, 2)) * amount * 1000; + } else if (use == "Boil") { + result = amount * 1000; + } else if (use == "Aroma") { + result = 1.2 * amount * 1000; + } else if (use == "Whirlpool") { + result = 1.2 * amount * 1000; + } else if ((use == "Dry Hop") || (use == "Dry hop")) { + result = 1.33 * amount * 1000; + } + console.log("hopAromaContribution("+bt+","+vol+","+use+","+amount+"): "+(result / vol)); + return result / vol; + } + function calcIBUs() { var total_ibus = 0; var rows = $('#hopGrid').jqxGrid('getrows'); @@ -102,11 +139,24 @@ var row = rows[i]; total_ibus += toIBU(row.h_useat, row.h_form, preboil_sg, parseFloat($("#batch_size").jqxNumberInput('decimal')), parseFloat(row.h_amount), parseFloat(row.h_time), parseFloat(row.h_alpha), $("#ibu_method").val()); + hopFlavourContribution(parseFloat(row.h_time), parseFloat($("#batch_size").jqxNumberInput('decimal')), + row.h_useat, parseFloat(row.h_amount)); + hopAromaContribution(parseFloat(row.h_time), parseFloat($("#batch_size").jqxNumberInput('decimal')), + row.h_useat, parseFloat(row.h_amount)); } console.log("calcIBUs(): " + total_ibus); $('#est_ibu').val(total_ibus); }; + function calcSVG() { + var rows = $('#yeastGrid').jqxGrid('getrows'); + for (var i = 0; i < rows.length; i++) { + var row = rows[i]; + if (row.y_use == "Primary") + svg = parseFloat(row.y_attenuation); + } + } + function calcFermentablesFromOG(OG) { console.log("calcFermentablesFromOG("+OG+")"); @@ -157,6 +207,7 @@ dataRecord.batch_size = parseFloat(event.args.value); calcFermentablesFromOG(parseFloat($("#est_og").jqxNumberInput('decimal'))); // Keep the OG calcFermentables(); + calcSVG(); calcABV(); // TODO: adjust the hops, miscs, yeast, water. calcIBUs(); @@ -171,6 +222,7 @@ dataRecord.boil_size = new_boil; $("#boil_size").val(Math.round(new_boil * 100) / 100); calcFermentables(); + calcSVG(); calcABV(); // TODO: adjust the hops, miscs, yeast, water. calcIBUs(); @@ -178,6 +230,7 @@ $('#efficiency').on('change', function (event) { console.log("efficiency change:"+event.args.value); calcFermentables(); + calcSVG(); calcABV(); calcIBUs(); }); @@ -185,6 +238,7 @@ console.log("est_og change:"+event.args.value); calcFermentablesFromOG(event.args.value); // Adjust fermentables amounts calcFermentables(); // Update the recipe details + calcSVG(); calcABV(); // and ABV calcIBUs(); // and the IBU's. }); @@ -583,6 +637,7 @@ $("#fermentableGrid").jqxGrid('setcellvalue', 0, "f_percentage", 100); } calcFermentables(); + calcSVG(); calcABV(); calcIBUs(); }); @@ -719,6 +774,7 @@ }; $('#fermentableGrid').jqxGrid('sortby', 'f_amount', 'desc'); // TODO: not reliable calcFermentables(); + calcSVG(); calcABV(); calcIBUs(); // Depends on gravity, so recalculate. }); @@ -1160,6 +1216,7 @@ }); }, ready: function() { + calcSVG(); $('#jqxTabs').jqxTabs('next'); }, columns: [ @@ -1395,6 +1452,7 @@ }); }, ready: function() { + var fg = estimate_fg(psugar, pcara, 0, 0, 0, svg, parseFloat(parseFloat($("#est_og").jqxNumberInput('decimal')))); calcInit(); $('#jqxLoader').jqxLoader('close'); $('#jqxTabs').jqxTabs('first');