www/js/prod_edit.js

changeset 246
8580a08cbaa7
parent 245
3649c3d31d15
child 252
b558f3dfcda3
--- a/www/js/prod_edit.js	Wed Feb 06 15:14:41 2019 +0100
+++ b/www/js/prod_edit.js	Wed Feb 06 19:29:45 2019 +0100
@@ -300,23 +300,20 @@
 		var rows = $('#mashGrid').jqxGrid('getrows');
 		for (var i = 0; i < rows.length; i++) {
 			var row = rows[i];
-//			console.log("step " + i + " " + row.step_name + " " + row.step_type);
 			if (row.step_type == 0)	// Infusion
 				mvol += parseFloat(row.step_infuse_amount);
 		}
 		if (mvol > 0) {
-//			console.log("mash volume: " + mvol);
 			var rows = $('#fermentableGrid').jqxGrid('getrows');
 			for (var i = 0; i < rows.length; i++) {
 			        var row = rows[i];
 				if (row.f_added == 0) {	// Mash
 					var d = row.f_amount * (row.f_yield / 100) * (1 - row.f_moisture / 100);
 					mvol += row.f_amount * row.f_moisture / 100;
-					gs += my_grain_absorbtion * row.f_amount;
+//  TODO: where do I need this		gs += my_grain_absorbtion * row.f_amount;
 					s += d;
 				}
 			}
-//			console.log("mash volume: " + mvol + "  gs: " + gs + "  s: " + s);
 			var v = s / sugardensity + mvol;
 			s = 1000 * s / (v * 10); //deg. Plato
 			est_mash_sg = plato_to_sg(s);
@@ -336,6 +333,58 @@
 			$("#brew_mash_efficiency").val(0);
 	};
 
+	function calcEfficiencyBeforeBoil() {
+		var	m = 0;
+		var	rows = {};
+		if (!(rows = $('#fermentableGrid').jqxGrid('getrows'))) {
+			return;	// grid not yet loaded.
+		}
+		for (var i = 0; i < rows.length; i++) {
+			var row = rows[i];
+			if (row.f_added == 0) { // Mash
+				m += row.f_amount * (row.f_yield / 100) * (1 - row.f_moisture / 100);
+			}
+		}
+		var tot = sg_to_plato(dataRecord.brew_preboil_sg) * (dataRecord.brew_preboil_volume / 1.04) * dataRecord.brew_preboil_sg * 10 / 1000;
+		if (m > 0)
+			var result = Math.round((tot / m * 100) * 10) / 10;
+		else
+			var result = 0;
+		if (result < 0)
+			result = 0;
+		//console.log("calcEfficiencyBeforeBoil(): "+result);
+		$("#brew_preboil_efficiency").val(result);
+	}
+
+	function calcEfficiencyAfterBoil() {
+		var	m = 0;	// Sugars added at mash
+		var	b = 0;	// Sugars added at boil
+		var	rows = {};
+		if (!(rows = $('#fermentableGrid').jqxGrid('getrows'))) {
+			return; // grid not yet loaded.
+		}
+		for (var i = 0; i < rows.length; i++) {
+			var row = rows[i];
+			if (row.f_added == 0) { // Mash
+				m += row.f_amount * (row.f_yield / 100) * (1 - row.f_moisture / 100);
+			} else if (row.f_added == 1) { // Boil
+				b += row.f_amount * (row.f_yield / 100) * (1 - row.f_moisture / 100);
+			}
+		}
+		var tot = sg_to_plato(dataRecord.brew_aboil_sg) * (dataRecord.brew_aboil_volume / 1.04) * dataRecord.brew_aboil_sg * 10 / 1000;
+		tot -= b;	// total sugars in wort  minus added sugars.
+		if (m > 0)
+			var result = Math.round((tot / m * 100) * 10) / 10;
+		else
+			var result = 0;
+		if (result < 0)
+			result = 0;
+		//console.log("calcEfficiencyAfterBoil(): "+result);
+		dataRecord.brew_aboil_efficiency = result;
+		$("#brew_aboil_efficiency").val(result);
+
+	}
+
 	function GetBUGU() {
 		var gu = (dataRecord.est_og - 1) * 1000;
 		if (gu > 0)
@@ -1189,6 +1238,8 @@
 
 		calcSGendMash();
 		calcMashEfficiency();
+		calcEfficiencyBeforeBoil();
+		calcEfficiencyAfterBoil();
 
 		$("#calc_acid").on('checked', function (event) {
 			dataRecord.calc_acid = true;
@@ -3899,20 +3950,24 @@
 	$("#est_mash_sg").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 70, height: 23, decimalDigits: 3 });
 	$("#brew_preboil_sg").jqxTooltip({ content: 'Het gemeten SG in de kookketel na het spoelen en voor het koken.' });
 	$("#brew_preboil_sg").jqxNumberInput( SGopts );
+	$("#brew_preboil_sg").on('valueChanged', function (event) { dataRecord.brew_preboil_sg = event.args.value; calcEfficiencyBeforeBoil() });
 	$("#est_pre_sg").jqxTooltip({ content: 'Het berekende SG in de kookketel na het spoelen en voor het koken.' });
 	$("#est_pre_sg").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 70, height: 23, decimalDigits: 3 });
 	$("#brew_aboil_sg").jqxTooltip({ content: 'Het gemeten SG in de kookketel na het koken.' });
 	$("#brew_aboil_sg").jqxNumberInput( SGopts );
+	$("#brew_aboil_sg").on('valueChanged', function (event) { dataRecord.brew_aboil_sg = event.args.value; calcEfficiencyAfterBoil() });
 	$("#est_og3").jqxTooltip({ content: 'Het gewenste SG in de kookketel na het koken.' });
 	$("#est_og3").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 70, height: 23, decimalDigits: 3, readOnly: true });
 	$("#brew_mash_efficiency").jqxTooltip({ content: 'Het behaalde maisch rendement.' });
 	$("#brew_mash_efficiency").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 1 });
 	$("#brew_preboil_volume").jqxTooltip({ content: 'Het volume van het wort voor het koken.' });
 	$("#brew_preboil_volume").jqxNumberInput( Spin1dec );
+	$("#brew_preboil_volume").on('valueChanged', function (event) { dataRecord.brew_preboil_volume = event.args.value; calcEfficiencyBeforeBoil() });
 	$("#est_pre_vol").jqxTooltip({ content: 'Het berekende volume van het wort voor het koken.' });
 	$("#est_pre_vol").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 70, height: 23, decimalDigits: 1 });
 	$("#brew_aboil_volume").jqxTooltip({ content: 'Het volume van het wort na het koken.' });
 	$("#brew_aboil_volume").jqxNumberInput( Spin1dec );
+	$("#brew_aboil_volume").on('valueChanged', function (event) { dataRecord.brew_aboil_volume = event.args.value; calcEfficiencyAfterBoil() });
 	$("#est_a_vol").jqxTooltip({ content: 'Het gewenste volume na het koken.' });
 	$("#est_a_vol").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 70, height: 23, decimalDigits: 1 });
 	$("#brew_preboil_efficiency").jqxTooltip({ content: 'Het berekende rendement voor het koken.' });

mercurial