www/js/prod_edit.js

changeset 419
99a7f2a6976e
parent 415
cbeec46450f8
child 420
3df93a77cd1d
--- a/www/js/prod_edit.js	Sat Jun 15 19:41:44 2019 +0200
+++ b/www/js/prod_edit.js	Thu Jun 20 13:55:12 2019 +0200
@@ -1836,7 +1836,20 @@
 			var ABV = abvol(dataRecord.brew_fermenter_sg, parseFloat($("#est_fg").jqxNumberInput('decimal')));
 		else
 			var ABV = abvol(dataRecord.brew_fermenter_sg, dataRecord.fg);
-		ABV = Math.round(ABV * 100) / 100;
+
+		/*
+		 * 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'))) {
@@ -2374,12 +2387,70 @@
 
 		calcFermentation();
 		calcCarbonation();
+		$('#package_volume').on('change', function (event) {
+			var told = dataRecord.package_volume + dataRecord.package_infuse_amount;
+			dataRecord.package_volume = parseFloat(event.args.value);
+			if (dataRecord.package_volume > dataRecord.brew_fermenter_volume) {
+				dataRecord.package_volume = dataRecord.brew_fermenter_volume;
+				$('#package_volume').val(dataRecord.package_volume);
+			}
+			var tnew = dataRecord.package_volume + dataRecord.package_infuse_amount;
+			var diff = tnew - told;
+			if (told > 0) {
+				dataRecord.bottle_amount += (dataRecord.bottle_amount / told) * diff;
+				dataRecord.keg_amount += (dataRecord.keg_amount / told) * diff;
+			} else {
+				dataRecord.bottle_amount = tnew;
+				dataRecord.keg_amount = 0;
+			}
+			console.log("diff:"+diff+" old:"+told+" bottle:"+dataRecord.bottle_amount+" keg:"+dataRecord.keg_amount);
+			$('#bottle_amount').val(parseFloat(dataRecord.bottle_amount * 1000) / 1000);
+			$('#keg_amount').val(parseFloat(dataRecord.keg_amount * 1000) / 1000);
+			calcCarbonation();
+		});
+		$('#package_infuse_amount').on('change', function (event) {
+			var told = dataRecord.package_volume + dataRecord.package_infuse_amount;
+                        dataRecord.package_infuse_amount = parseFloat(event.args.value);
+			var tnew = dataRecord.package_volume + dataRecord.package_infuse_amount;
+                        var diff = tnew - told;
+			if (told > 0) {
+                        	dataRecord.bottle_amount += (dataRecord.bottle_amount / told) * diff;
+                        	dataRecord.keg_amount += (dataRecord.keg_amount / told) * diff;
+			} else {
+				dataRecord.bottle_amount = tnew;
+				dataRecord.keg_amount = 0;
+			}
+                        console.log("diff:"+diff+" old:"+told+" bottle:"+dataRecord.bottle_amount+" keg:"+dataRecord.keg_amount);
+                        $('#bottle_amount').val(parseFloat(dataRecord.bottle_amount * 1000) / 1000);
+                        $('#keg_amount').val(parseFloat(dataRecord.keg_amount * 1000) / 1000);
+                        calcCarbonation();
+                });
+		$('#package_infuse_abv').on('change', function (event) {
+                        dataRecord.package_infuse_abv = parseFloat(event.args.value);
+                        calcCarbonation();
+                });
 		$('#bottle_amount').on('change', function (event) {
-			dataRecord.bottle_amount = parseFloat(event.args.value);
+			var vnew = parseFloat(event.args.value);
+			var vtot = dataRecord.package_volume + dataRecord.package_infuse_amount;
+			if (vnew > vtot)
+				vnew = vtot;
+			diff = dataRecord.bottle_amount - vnew;
+			dataRecord.bottle_amount = Math.round((dataRecord.bottle_amount - diff) * 1000) / 1000;
+			dataRecord.keg_amount = Math.round((dataRecord.keg_amount + diff) * 1000) / 1000;
+			$('#bottle_amount').val(parseFloat(dataRecord.bottle_amount));
+			$('#keg_amount').val(parseFloat(dataRecord.keg_amount));
 			calcCarbonation();
 		});
 		$('#keg_amount').on('change', function (event) {
-			dataRecord.keg_amount = parseFloat(event.args.value);
+			var vnew = parseFloat(event.args.value);
+			var vtot = dataRecord.package_volume + dataRecord.package_infuse_amount;
+			if (vnew > vtot)
+				vnew = vtot;
+			diff = dataRecord.keg_amount - vnew;
+			dataRecord.bottle_amount = Math.round((dataRecord.bottle_amount + diff) * 1000) / 1000;
+                        dataRecord.keg_amount = Math.round((dataRecord.keg_amount - diff) * 1000) / 1000;
+			$('#bottle_amount').val(parseFloat(dataRecord.bottle_amount));
+			$('#keg_amount').val(parseFloat(dataRecord.keg_amount));
 			calcCarbonation();
 		});
 		$('#bottle_carbonation').on('change', function (event) {
@@ -2664,14 +2735,19 @@
 			secondary_end_date: $("#secondary_end_date").val(),
 			tertiary_temp: parseFloat($("#tertiary_temp").jqxNumberInput('decimal')),
 			package_date: $("#package_date").val(),
+			package_volume: parseFloat($("#package_volume").jqxNumberInput('decimal')),
+			package_infuse_amount: parseFloat($("#package_infuse_amount").jqxNumberInput('decimal')),
+			package_infuse_abv: parseFloat($("#package_infuse_abv").jqxNumberInput('decimal')),
+			package_infuse_notes: $("#package_infuse_notes").val(),
+			package_abv: parseFloat($("#package_abv").jqxNumberInput('decimal')),
 			bottle_amount: parseFloat($("#bottle_amount").jqxNumberInput('decimal')),
 			bottle_carbonation: parseFloat($("#bottle_carbonation").jqxNumberInput('decimal')),
-			//bottle_priming_sugar: $("#bottle_priming_sugar").val(),
+			bottle_priming_water: $("#bottle_priming_water").val(),
 			bottle_priming_amount: parseFloat($("#bottle_priming_amount").jqxNumberInput('decimal')),
 			bottle_carbonation_temp: parseFloat($("#bottle_carbonation_temp").jqxNumberInput('decimal')),
 			keg_amount: parseFloat($("#keg_amount").jqxNumberInput('decimal')),
 			keg_carbonation: parseFloat($("#keg_carbonation").jqxNumberInput('decimal')),
-			//keg_priming_sugar: $("#keg_priming_sugar").val(),
+			keg_priming_water: $("#keg_priming_water").val(),
 			keg_priming_amount: parseFloat($("#keg_priming_amount").jqxNumberInput('decimal')),
 			keg_carbonation_temp: parseFloat($("#keg_carbonation_temp").jqxNumberInput('decimal')),
 			keg_forced_carb: dataRecord.keg_forced_carb,
@@ -2887,14 +2963,19 @@
 			{ name: 'secondary_end_date', type: 'string' },
 			{ name: 'tertiary_temp', type: 'float' },
 			{ name: 'package_date', type: 'string' },
+			{ name: 'package_volume', type: 'float' },
+			{ name: 'package_infuse_amount', type: 'float' },
+			{ name: 'package_infuse_abv', type: 'float' },
+			{ name: 'package_infuse_notes', type: 'string' },
+			{ name: 'package_abv', type: 'float' },
 			{ name: 'bottle_amount', type: 'float' },
 			{ name: 'bottle_carbonation', type: 'float' },
-			//{ name: 'bottle_priming_sugar', type: 'int' },
+			{ name: 'bottle_priming_water', type: 'int' },
 			{ name: 'bottle_priming_amount', type: 'float' },
 			{ name: 'bottle_carbonation_temp', type: 'float' },
 			{ name: 'keg_amount', type: 'float' },
 			{ name: 'keg_carbonation', type: 'float' },
-			//{ name: 'keg_priming_sugar', type: 'int' },
+			{ name: 'keg_priming_water', type: 'int' },
 			{ name: 'keg_priming_amount', type: 'float' },
 			{ name: 'keg_carbonation_temp', type: 'float' },
 			{ name: 'keg_forced_carb', type: 'int' },
@@ -3091,14 +3172,19 @@
 			$("#secondary_end_date").val(dataRecord.secondary_end_date);
 			$("#tertiary_temp").val(dataRecord.tertiary_temp);
 			$("#package_date").val(dataRecord.package_date);
+			$("#package_volume").val(dataRecord.package_volume);
+			$("#package_infuse_amount").val(dataRecord.package_infuse_amount);
+			$("#package_infuse_abv").val(dataRecord.package_infuse_abv);
+			$("#package_infuse_notes").val(dataRecord.package_infuse_notes);
+			$("#package_abv").val(dataRecord.package_abv);
 			$("#bottle_amount").val(dataRecord.bottle_amount);
 			$("#bottle_carbonation").val(dataRecord.bottle_carbonation);
-			//$("#bottle_priming_sugar").val(dataRecord.bottle_priming_sugar);
+			$("#bottle_priming_water").val(dataRecord.bottle_priming_water);
 			$("#bottle_priming_amount").val(dataRecord.bottle_priming_amount);
 			$("#bottle_carbonation_temp").val(dataRecord.bottle_carbonation_temp);
 			$("#keg_amount").val(dataRecord.keg_amount);
 			$("#keg_carbonation").val(dataRecord.keg_carbonation);
-			//$("#keg_priming_sugar").val(dataRecord.keg_priming_sugar);
+			$("#keg_priming_water").val(dataRecord.keg_priming_water);
 			$("#keg_priming_amount").val(dataRecord.keg_priming_amount);
 			$("#keg_carbonation_temp").val(dataRecord.keg_carbonation_temp);
 			$("#keg_forced_carb").val(dataRecord.keg_forced_carb);
@@ -5697,6 +5783,16 @@
 	$("#package_date").jqxTooltip({ content: 'De verpakkings datum van dit bier.' });
 	$("#package_date").jqxDateTimeInput( Dateopts );
 	$('#package_date').on('close', function (event) { calcStage(); });
+	$('#package_volume').jqxTooltip({ content: 'Het beschikbare volume om te bottelen of op fust te zetten.' });
+	$('#package_volume').jqxNumberInput( Spin1dec );
+	$('#package_infuse_amount').jqxTooltip({ content: 'De hoeveelheid water of drank extra toe te voegen.' });
+	$('#package_infuse_amount').jqxNumberInput( Spin3dec );
+	$('#package_infuse_abv').jqxTooltip({ content: 'De hoeveelheid alcohol in de drank, of 0.0 als het water is.' });
+	$('#package_infuse_abv').jqxNumberInput( Spin1dec );
+	$('#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 );
 	$("#st_carb_min2").jqxTooltip({ content: 'Het minimum aanbevolen koolzuur volume voor deze bierstijl.'});
 	$("#st_carb_min2").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 50, height: 23, decimalDigits: 1, readOnly: true });
 	$("#st_carb_max2").jqxTooltip({ content: 'Het maximum aamnevolen koolzuur volume voor deze bierstijl.'});
@@ -5820,9 +5916,13 @@
                 }
         });
 	$("#bottle_priming_amount").jqxNumberInput( Show1dec );
+	$("#bottle_priming_water").jqxTooltip({ content: 'De hoeveelheid water om de suiker op te lossen.' });
+	$("#bottle_priming_water").jqxNumberInput( Spin3dec );
 	$("#keg_priming_amount").jqxNumberInput( Show1dec );
+	$("#keg_priming_water").jqxTooltip({ content: 'De hoeveelheid water om de suiker op te lossen.' });
+	$("#keg_priming_water").jqxNumberInput( Spin3dec );
 	$("#bottle_priming_total").jqxNumberInput( Show1dec );
-	$("#bottle_pressure").jqxTooltip({ content: 'De maximal te verwachten druk tijdens het hergisten.' });
+	$("#bottle_pressure").jqxTooltip({ content: 'De maximaal te verwachten druk tijdens het hergisten.' });
 	$("#bottle_pressure").jqxNumberInput( Show1dec );
 	$("#keg_priming_total").jqxNumberInput( Show1dec );
 	$("#keg_forced_carb").jqxCheckBox({ theme: theme, width: 120, height: 23 });

mercurial