Added soe extra debug logging in db_product.php. Automatic stage increment in the product editor. On the brewday tab added tooltips.

Mon, 04 Feb 2019 20:30:41 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Mon, 04 Feb 2019 20:30:41 +0100
changeset 241
e95d2886f49f
parent 240
a85c1d4c4d12
child 242
97c237654ddd

Added soe extra debug logging in db_product.php. Automatic stage increment in the product editor. On the brewday tab added tooltips.

www/includes/db_product.php file | annotate | diff | comparison | revisions
www/js/global.js file | annotate | diff | comparison | revisions
www/js/prod_edit.js file | annotate | diff | comparison | revisions
www/js/rec_edit.js file | annotate | diff | comparison | revisions
www/prod_print.php file | annotate | diff | comparison | revisions
--- a/www/includes/db_product.php	Mon Feb 04 15:21:49 2019 +0100
+++ b/www/includes/db_product.php	Mon Feb 04 20:30:41 2019 +0100
@@ -71,6 +71,7 @@
 	$sql .= "', eq_efficiency='" . $_POST['eq_efficiency'];
 
 	if ($stage > 1) {
+		syslog(LOG_NOTICE, "write brewdate data");
 		$sql .= "', brew_date_start='" . $_POST['brew_date_start'];
 		$sql .= "', brew_mash_ph='" . $_POST['brew_mash_ph'];
 		$sql .= "', brew_mash_sg='" . $_POST['brew_mash_sg'];
@@ -98,13 +99,17 @@
 		$sql .= "', brew_fermenter_extrawater='" . $_POST['brew_fermenter_extrawater'];
 		$sql .= "', brew_fermenter_sg='" . $_POST['brew_fermenter_sg'];
 		$sql .= "', brew_fermenter_ibu='" . $_POST['brew_fermenter_ibu'];
-		$sql .= "', brew_date_end='" . $_POST['brew_date_end'];
+		if ($stage > 2) {
+			syslog(LOG_NOTICE, "write brewdate data end");
+			$sql .= "', brew_date_end='" . $_POST['brew_date_end'];
+		}
 		($_POST['brew_log_available'] == 'true') ? $sql .= "', brew_log_available='1" : $sql .= "', brew_log_available='0";
 	}
 	$sql .= "', og='" . $_POST['og'];
 	$sql .= "', fg='" . $_POST['fg'];
 
 	if ($stage > 2) {
+		syslog(LOG_NOTICE, "write primary data");
 		$sql .= "', primary_start_temp='" . $_POST['primary_start_temp'];
 		$sql .= "', primary_max_temp='" . $_POST['primary_max_temp'];
 		$sql .= "', primary_end_temp='" . $_POST['primary_end_temp'];
@@ -113,12 +118,14 @@
 	}
 
 	if ($stage > 3) {
+		syslog(LOG_NOTICE, "write secondary data");
 		$sql .= "', secondary_temp='" . $_POST['secondary_temp'];
 		$sql .= "', secondary_end_date='" . $_POST['secondary_end_date'];
 		$sql .= "', tertiary_temp='" . $_POST['tertiary_temp'];
 	}
 
 	if ($stage > 4) {
+		syslog(LOG_NOTICE, "write package data");
 		$sql .= "', package_date='" . $_POST['package_date'];
 		$sql .= "', bottle_amount='" . $_POST['bottle_amount'];
 		$sql .= "', bottle_carbonation='" . $_POST['bottle_carbonation'];
@@ -135,6 +142,7 @@
 	}
 
 	if ($stage > 8) {
+		syslog(LOG_NOTICE, "write taste data");
 		$sql .= "', taste_notes='" . mysqli_real_escape_string($connect, $_POST['taste_notes']);
 		$sql .= "', taste_rate='" . $_POST['taste_rate'];
 		$sql .= "', taste_date='" . $_POST['taste_date'];
--- a/www/js/global.js	Mon Feb 04 15:21:49 2019 +0100
+++ b/www/js/global.js	Mon Feb 04 20:30:41 2019 +0100
@@ -428,6 +428,10 @@
 	theme: theme, width: 150, height: 23, allowNullDate: true, todayString: 'Vandaag', clearString: 'Wissen', showFooter: true,
 	formatString: 'yyyy-MM-dd', enableBrowserBoundsDetection: true
 };
+var DateTimeopts = {
+	theme: theme, width: 230, height: 23, allowNullDate: true, todayString: 'Vandaag', clearString: 'Wissen', showFooter: true,
+	formatString: 'yyyy-MM-dd HH:mm:ss', enableBrowserBoundsDetection: true, showTimeButton: true
+};
 
 
 var	sugardensity = 1.611; //kg/l in solution
@@ -1010,8 +1014,6 @@
 
 	var	BD;
 
-	console.log("estimate_fg("+percSugar+","+percCara+","+WGratio+","+TotTme+","+Temp+","+attenuation+","+og+")");
-
 	if (percSugar > 40)
 		percSugar = 0;
 	if (percCara > 50)
@@ -1030,7 +1032,8 @@
 
 	var AttBeer = 0.00825 * attenuation + 0.00817 * BD - 0.00684 * Temp + 0.00026 * TotTme - 0.00356 * percCara + 0.00553 * percSugar + 0.547;
 	var fg = Math.round((1 + (1 - AttBeer) * (og - 1)) * 1000) / 1000;
-	console.log("fg:"+fg);
+
+	console.log("estimate_fg("+percSugar+","+percCara+","+WGratio+","+TotTme+","+Temp+","+attenuation+","+og+") :"+fg);
 	return fg;
 }
 
--- a/www/js/prod_edit.js	Mon Feb 04 15:21:49 2019 +0100
+++ b/www/js/prod_edit.js	Mon Feb 04 20:30:41 2019 +0100
@@ -1094,22 +1094,22 @@
 	function calcStage() {
 
 		var	newstage = dataRecord.stage;
-
-		if (newstage < 1 && dataRecord.est_og > 1.005 && dataRecord.est_color > 3 && dataRecord.est_ibu > 3)
+		/* parseFloat$("#brew_date_start").val()) returns the year if it is a valid mysql style date. */
+		if (newstage == 0 && dataRecord.est_og > 1.005 && dataRecord.est_color > 3 && dataRecord.est_ibu > 3)
 			newstage = 1;
-		if (newstage < 2 && dataRecord.brew_date_start != '')
+		if (newstage == 1 && parseFloat($("#brew_date_start").val()) > 2000)
 			newstage = 2;	// Brewday
-		if (newstage < 3 && dataRecord.brew_date_end != '')
+		if (newstage == 2 && parseFloat($("#brew_date_end").val()) > 2000)
 			newstage = 3;	// Primary
-		if (newstage < 4 && dataRecord.primary_end_date != '')
+		if (newstage == 3 && parseFloat($("#primary_end_date").val()) > 2000)
 			newstage = 4;	// Secondary
-		if (newstage < 5 && dataRecord.secondary_end_date != '')
+		if (newstage == 4 && parseFloat($("#secondary_end_date").val()) > 2000)
 			newstage = 5;	// Tertiary
-		if (newstage < 6 && dataRecord.package_date != '')
+		if (newstage == 5 && parseFloat($("#package_date").val()) > 2000)
 			newstage = 6;	// Package
-		if (newstage >= 6 && newstage < 10) {
+		if (newstage >= 6 && newstage < 9) {
 			var d = new Date();
-			var date2 = dataRecord.package_date;
+			var date2 = $("#package_date").val();
 			date2 = date2.split('-');
 			// Now we convert the array to a Date object
 			date1 = new Date(d.getFullYear(), d.getMonth(), d.getDate());
@@ -1121,14 +1121,16 @@
 			var timeDifference = date1_unixtime - date2_unixtime;
 			var timeDifferenceInDays = timeDifference / 60 / 60 / 24;
 			console.log(date1+'  '+date2+' days: '+timeDifferenceInDays);
-			if (newstage < 7 && timeDifferenceInDays < 14)		// Carbonation period
-				newstage = 7;
-			else if (newstage < 8 && timeDifferenceInDays < 42)	// Mature 6 weeks
-				newstage = 8;
-			else
-				newstage = 9;
+			if (timeDifferenceInDays > 0) {			// At least one day
+				if (timeDifferenceInDays >= 42)		// 6 weeks
+					newstage = 9;			// Ready to taste
+				else if (timeDifferenceInDays >= 14)	// 14 days
+					newstage = 8;			// Mature
+				else
+					newstage = 7;			// Carbonation
+			}
 		}
-		if (newstage < 10 && dataRecord.taste_date != '')
+		if (newstage == 9 && parseFloat($("#taste_date").val()) > 2000)
 			newstage = 10;	// Ready
 
 		if (newstage > dataRecord.stage) {
@@ -1163,7 +1165,7 @@
 		} else {
 			$('#jqxTabs').jqxTabs('enableAt', 9);
 		}
-		if (dataRecord.stage < 4) { // At least primary
+		if (dataRecord.stage < 5) { // At least secondary
 			$('#jqxTabs').jqxTabs('disableAt', 10);	// Packaging tab
 		} else {
 			$('#jqxTabs').jqxTabs('enableAt', 10);
@@ -3555,6 +3557,7 @@
 			}
 			$("#mashGrid").jqxGrid('deleterow', rowIDs);
 			// Then add the new steps
+			var datarecord = mashlist.records[index];
 			$("#mash_name").val(datarecord.name);
 			for (var i = 0; i < datarecord.steps.length; i++) {
 				var data = datarecord.steps[i];
@@ -3866,25 +3869,42 @@
 	$("#sparge_acid_perc").jqxNumberInput({ symbol: '%', symbolPosition: 'right' });
 
 	// Tab 9, Brewday
-	$("#brew_date_start").jqxDateTimeInput({ theme: theme, width: 230, height: 23, formatString: 'yyyy-MM-dd HH:mm:ss', showTimeButton: true });
-	$("#brew_date_end").jqxDateTimeInput({ theme: theme, width: 230, height: 23, formatString: 'yyyy-MM-dd HH:mm:ss', showTimeButton: true });
+	$("#brew_date_start").jqxTooltip({ content: 'Brouw datum en tijd. Voor planning laat de tijd op 00:00:00 staan.' });
+	$("#brew_date_start").jqxDateTimeInput( DateTimeopts );
+	$('#brew_date_start').on('close', function (event) { calcStage(); });
+	$("#brew_date_end").jqxTooltip({ content: 'End datum en tijd van de brouw. Leeg laten als er nog niet gebrouwen is.' });
+	$("#brew_date_end").jqxDateTimeInput( DateTimeopts );
+	$('#brew_date_end').on('close', function (event) { calcStage(); });
+	$("#brew_mash_ph").jqxTooltip({ content: 'De gemeten pH tijdens het maischen eventueel na correctie.' });
 	$("#brew_mash_ph").jqxNumberInput( SpinpH );
+	$("#est_mash_ph").jqxTooltip({ content: 'De gewenste pH tijdens het maischen.' });
 	$("#est_mash_ph").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 70, height: 23, decimalDigits: 1 });
+	$("#brew_preboil_ph").jqxTooltip({ content: 'De gemeten pH in de kookketel na het spoelen en voor de kook.' });
 	$("#brew_preboil_ph").jqxNumberInput( SpinpH );
 	// est_preboil_ph
+	$("#brew_aboil_ph").jqxTooltip({ content: 'De gemeten pH na het koken.' });
 	$("#brew_aboil_ph").jqxNumberInput( SpinpH );
 	// est_aboil_ph
+	$("#brew_mash_sg").jqxTooltip({ content: 'Het bereikte SG na het maischen.' });
 	$("#brew_mash_sg").jqxNumberInput( SGopts );
 	$("#brew_mash_sg").on('valueChanged', function () { calcMashEfficiency(); });
+	$("#est_mash_sg").jqxTooltip({ content: 'Het berekende verwachte SG na het maischen.' });
 	$("#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_aboil_sg").jqxTooltip({ content: 'Het gemeten SG in de kookketel na het koken.' });
 	$("#brew_aboil_sg").jqxNumberInput( SGopts );
-	$("#est_og3").jqxTooltip({ content: 'Het geschatte begin SG van dit product.' });
+	$("#est_og3").jqxTooltip({ content: 'Het geschatte 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( Spin1dec5 );
+	$("#brew_aboil_volume").jqxTooltip({ content: 'Het volume van het wort na het koken.' });
 	$("#brew_aboil_volume").jqxNumberInput( Spin1dec5 );
+	$("#brew_preboil_efficiency").jqxTooltip({ content: 'Het berekende rendement voor het koken.' });
 	$("#brew_preboil_efficiency").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 1 });
+	$("#brew_aboil_efficiency").jqxTooltip({ content: 'Het bereikte rendement na het koken.' });
 	$("#brew_aboil_efficiency").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 1 });
 	$("#brew_sparge_temperature").jqxNumberInput( Spin1dec5 );
 	$("#brew_sparge_volume").jqxNumberInput( Spin1dec5 );
@@ -3945,9 +3965,11 @@
 	$("#primary_svg").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 70, height: 23, decimalDigits: 1 });
 	$("#primary_end_date").jqxTooltip({ content: 'De eind datum van de hoofdvergisting en eventueel overhevelen.' });
 	$("#primary_end_date").jqxDateTimeInput( Dateopts );
+	$('#primary_end_date').on('close', function (event) { calcStage(); });
 	$("#secondary_temp").jqxNumberInput( YeastT );
 	$("#secondary_end_date").jqxTooltip({ content: 'De eind datum van de navergisting en het begin van het lageren.' });
 	$("#secondary_end_date").jqxDateTimeInput( Dateopts );
+	$('#secondary_end_date').on('close', function (event) { calcStage(); });
 	$("#tertiary_temp").jqxNumberInput( YeastT );
 	$("#fg").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 90, height: 23, min: 0, decimalDigits: 3, spinButtons: true, spinButtonsStep: 0.001 });
 	$("#final_abv").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 70, height: 23, decimalDigits: 1 });
@@ -3963,6 +3985,7 @@
 	// TODO: high gravity packaging, extra water and recalc abv, color and ibu.
 	$("#package_date").jqxTooltip({ content: 'De verpakkings datum van dit bier.' });
 	$("#package_date").jqxDateTimeInput( Dateopts );
+	$('#package_date').on('close', function (event) { calcStage(); });
 	$("#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.'});
@@ -4009,6 +4032,7 @@
 	// Tab 12, Tasting
 	$("#taste_date").jqxTooltip({ content: 'De proef datum van dit bier.' });
         $("#taste_date").jqxDateTimeInput( Dateopts );
+	$('#taste_date').on('close', function (event) { calcStage(); });
 	$("#taste_rate").jqxTooltip({ content: 'Het cijfer voor dit bier van 1 tot 10.' });
 	$("#taste_rate").jqxNumberInput( Spin1dec5 );
 	$("#taste_rate").jqxNumberInput({ max: 10 });
--- a/www/js/rec_edit.js	Mon Feb 04 15:21:49 2019 +0100
+++ b/www/js/rec_edit.js	Mon Feb 04 20:30:41 2019 +0100
@@ -2364,9 +2364,6 @@
 				}
                         ]
                 });
-		$("#mashGrid").on('cellendedit', function (event) {
-			$('#mashGrid').jqxGrid('sortby', 'step_temp', 'asc');
-		});
         };
 
 	// initialize the input fields.
--- a/www/prod_print.php	Mon Feb 04 15:21:49 2019 +0100
+++ b/www/prod_print.php	Mon Feb 04 20:30:41 2019 +0100
@@ -369,7 +369,7 @@
 		}
 
 		$this->SetFillColor(210,245,255);
-		$this->Cell($vul+75,5,'',0,0,'L',false);
+		$this->Cell($vul+80,5,'',0,0,'L',false);
 		$this->Cell(20,5,sprintf("%8.3f",$cost_miscs).EURO,0,0,'R',true);
 		$this->Ln(10);
 

mercurial