The yeast droplist sorting order changed. Misc ingredients time editor uses minutes or days depending on the use of the ingredient. The yeast editor can now use grams, ml or packs.

Sat, 15 Dec 2018 11:06:14 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Sat, 15 Dec 2018 11:06:14 +0100
changeset 141
fe9e2a677611
parent 140
93c64d7ac79c
child 142
793af7691a5e

The yeast droplist sorting order changed. Misc ingredients time editor uses minutes or days depending on the use of the ingredient. The yeast editor can now use grams, ml or packs.

www/getyeastsources.php file | annotate | diff | comparison | revisions
www/js/rec_edit.js file | annotate | diff | comparison | revisions
--- a/www/getyeastsources.php	Thu Dec 13 22:58:12 2018 +0100
+++ b/www/getyeastsources.php	Sat Dec 15 11:06:14 2018 +0100
@@ -1,7 +1,7 @@
 <?php
 require_once('config.php');
 
-$query = "SELECT * FROM inventory_yeasts ORDER BY name";
+$query = "SELECT * FROM inventory_yeasts ORDER BY laboratory,product_id,name";
 $connect = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME);
 if (! $connect) {
 	echo "[]";
--- a/www/js/rec_edit.js	Thu Dec 13 22:58:12 2018 +0100
+++ b/www/js/rec_edit.js	Sat Dec 15 11:06:14 2018 +0100
@@ -946,23 +946,12 @@
 				  validation: function (cell, value) {
 					var maxhops = parseFloat($("#batch_size").jqxNumberInput('decimal')) * 200;
 					if (value < 0 || value > maxhops ) {
-						return { result: false, message: "Volume moet  0-"+maxhops+" zijn" };
+						return { result: false, message: "Gewicht moet 0-"+maxhops+" gram zijn" };
 					}
 					return true;
 				  }
 				},
-                            /*    { text: 'Gewicht Kg', datafield: 'h_amount', width: 120, align: 'right', cellsalign: 'right', cellsformat: 'f4',
-                                  columntype: 'numberinput',
-				  initeditor: function (row, cellvalue, editor, celltext, pressedChar) {
-					editor.jqxNumberInput({ decimalDigits: 4, min: 0, spinButtons: false });
-				  },
-                                  validation: function (cell, value) {
-                                        if (value < 0 || value > 100000000000 ) {
-                                                return { result: false, message: "Volume moet  0-~ zijn" };
-                                        }
-                                        return true;
-                                  }
-                                }, */
+				{ datafield: 'h_amount', hidden: true },	// We need to declare this column
 				{ text: 'Gebruik', width: 110, align: 'center', cellsalign: 'center', datafield: 'h_useat', columntype: 'dropdownlist',
 				  createeditor: function (row, column, editor) {
 					  var srcUse = [ "Boil", "Dry Hop", "Mash", "First Wort", "Aroma" ];
@@ -979,7 +968,7 @@
 				{ text: 'Tijd', datafield: 'h_time', width: 70, align: 'right', cellsalign: 'right', cellsformat: 'f0',
 				  columntype: 'numberinput',
 				  initeditor: function (row, cellvalue, editor, celltext, pressedChar) {
-					editor.jqxNumberInput({ decimalDigits: 0, digits: 3, min: 0 });
+					editor.jqxNumberInput({ decimalDigits: 0, digits: 3, min: 0, max: parseFloat(dataRecord.boil_time) });
 				  },
 				  cellvaluechanging: function (row, column, columntype, oldvalue, newvalue) {
 					var use = $("#hopGrid").jqxGrid('getcellvalue', row, "h_useat");
@@ -987,7 +976,7 @@
 						return oldvalue;
 				  },
 				  validation: function (cell, value) {
-					var high = parseFloat($("#boil_time").jqxNumberInput('decimal'));
+					var high = parseFloat(dataRecord.boil_time);
 				  	if (value < 0 || value > high ) {
 						return { result: false, message: "De tijd moet  0-"+high+" zijn" };
 					}
@@ -1122,27 +1111,81 @@
 			columns: [
                                 { text: 'Ingredient', editable: false, datafield: 'm_name' },
                                 { text: 'Type', editable: false, width: 120, align: 'center', cellsalign: 'center', datafield: 'm_type' },
-                                { text: 'Gebruik', editable: false, width: 90, align: 'center', cellsalign: 'center', datafield: 'm_use_use' },
-                                { text: 'Gewicht', datafield: 'm_amount', width: 110, align: 'right', cellsalign: 'right', cellsformat: 'f5',
+                                { text: 'Gebruik', width: 110, align: 'center', cellsalign: 'center', datafield: 'm_use_use', columntype: 'dropdownlist',
+				  createeditor: function (row, column, editor) {
+					var srcUseUse = [ "Mash", "Boil", "Primary", "Secondary", "Bottling" ];
+					editor.jqxDropDownList({ autoDropDownHeight: true, source: srcUseUse });
+				  }
+			       	},
+				{ datafield: 'm_amount_is_weight', hidden: true },	// We need to declare this column
+				{ datafield: 'm_amount', hidden: true },		// We need to declare this column
+                                { text: 'Hoeveelheid', datafield: 'grammen', width: 120, align: 'right', cellsalign: 'right', cellsformat: 'f2',
                                   columntype: 'numberinput',
+				  cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) {
+					var gram = rowdata.m_amount * 1000;
+					var vstr = rowdata.m_amount_is_weight ? "gr":"ml";
+					return "<div style='margin: 4px;' class='jqx-right-align'>"+dataAdapter.formatNumber(gram,"f2")+" "+vstr+"</div>";
+				  },
                                   validation: function (cell, value) {
-                                        if (value < 0 || value > 100000000000 ) {
-                                                return { result: false, message: "Volume moet  0-~ zijn" };
+					var high = parseFloat(dataRecord.boil_size) * 1000;
+                                        if (value < 0 || value > high) {
+                                                return { result: false, message: "Hoeveelheid moet tussen 0 en "+high+" zijn" };
                                         }
                                         return true;
-                                  }
+                                  },
+				  initeditor: function (row, cellvalue, editor) {
+					editor.jqxNumberInput({ inputMode: 'simple', min: 0, decimalDigits: 2, spinButtons: false });
+				  }
                                 },
-                                { text: 'Tijd', datafield: 'm_time', width: 70, align: 'right', cellsalign: 'right', cellsformat: 'f0',
+				{ datafield: 'm_time' },
+                                { text: 'Tijd', datafield: 'time', width: 70, align: 'right', cellsalign: 'right', cellsformat: 'f0',
                                   columntype: 'numberinput',
+				  cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) {
+					if (rowdata.m_use_use == 'Boil') {
+						var tijd = rowdata.m_time;
+						return "<div style='margin: 4px;' class='jqx-right-align'>"+dataAdapter.formatNumber(tijd, "f0")+" m</div>";
+					} else if (rowdata.m_use_use == 'Secondary') {
+						var tijd = Math.round(rowdata.m_time / 1440);
+						return "<div style='margin: 4px;' class='jqx-right-align'>"+dataAdapter.formatNumber(tijd, "f0")+" d</div>";
+					} else {
+						var tijd = 0;
+						return "<div style='margin: 4px;' class='jqx-right-align'> </div>";
+					}
+				  },
+				  initeditor: function (row, cellvalue, editor, celltext, pressedChar) {
+					editor.jqxNumberInput({ decimalDigits: 0, digits: 3, min: 0, max: parseFloat(dataRecord.boil_time) });
+				  },
+				  cellvaluechanging: function (row, column, columntype, oldvalue, newvalue) {
+					var use = $("#miscGrid").jqxGrid('getcellvalue', row, "m_use_use");
+					if (use != "Boil")
+						return oldvalue;
+				  },
                                   validation: function (cell, value) {
-                                        if (value < 0 || value > 100000000000 ) {
-                                                return { result: false, message: "De tijd moet  0-~ zijn" };
+					var high = parseFloat(dataRecord.boil_time);
+                                        if (value < 0 || value > high ) {
+                                                return { result: false, message: "De tijd moet 0-"+high+" zijn" };
                                         }
                                         return true;
                                   }
                                 }
                         ]
-                })
+                });
+		$("#miscGrid").on('cellendedit', function (event) {
+			var args = event.args;
+			console.log("Event Type: cellendedit, Column: " + args.datafield + ", Row: " + (args.rowindex) + ", Value: " + args.value);
+			if (args.datafield == 'grammen') {
+				$("#miscGrid").jqxGrid('setcellvalue', args.rowindex, 'm_amount', parseFloat(args.value / 1000));
+			} else if (args.datafield == 'time') {
+				var use_use = $("#miscGrid").jqxGrid('getcellvalue', args.rowindex, 'm_use_use');
+				console.log("use: "+use_use);
+				if (use_use == 'Secondary')
+					$("#miscGrid").jqxGrid('setcellvalue', args.rowindex, 'm_time', parseFloat(args.value * 1440));
+				else
+					$("#miscGrid").jqxGrid('setcellvalue', args.rowindex, 'm_time', parseFloat(args.value));
+			} else {
+				$("#miscGrid").jqxGrid('setcellvalue', args.rowindex, args.datafield, args.value);
+			}
+		});
         };
 
 	// Inline yeasts editor
@@ -1219,7 +1262,12 @@
                                         displayMember: "name",
                                         width: 150,
                                         height: 27,
-                                        dropDownWidth: 300
+                                        dropDownWidth: 500,
+					dropDownHeight: 500,
+					renderer: function (index, label, value) {
+						var datarecord = yeastlist.records[index];
+						return datarecord.laboratory+" "+datarecord.product_id+" "+datarecord.name;
+					}
                                 });
                                 $("#yaddrowbutton").on('select', function (event) {
                                         if (event.args) {
@@ -1269,9 +1317,34 @@
 				{ text: 'Min.', editable: false, width: 70, align: 'right', cellsalign: 'right', datafield: 'y_min_temperature' },
 				{ text: 'Max.', editable: false, width: 70, align: 'right', cellsalign: 'right', datafield: 'y_max_temperature' },
 				{ text: 'Attn.', editable: false, width: 70, align: 'right', cellsalign: 'right', datafield: 'y_attenuation', cellsformat: 'f1' },
-				{ text: 'Voor', editable: false, width: 80, align: 'center', cellsalign: 'center', datafield: 'y_use' },
-                                { text: 'Hoeveel', datafield: 'y_amount', width: 110, align: 'right', cellsalign: 'right', cellsformat: 'f5',
-                                  columntype: 'numberinput',
+				{ text: 'Voor', width: 100, align: 'center', cellsalign: 'center', datafield: 'y_use', columntype: 'dropdownlist', 
+				  createeditor: function (row, column, editor) {
+					var srcYUse = [ "Primary", "Secondary", "Bottle" ];
+					editor.jqxDropDownList({ autoDropDownHeight: true, source: srcYUse });
+				  }
+				},
+				{ datafield: 'y_amount', width: 90 },
+                                { text: 'Hoeveel', datafield: 'amount', width: 110, align: 'right', cellsalign: 'right', columntype: 'numberinput',
+				  cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) {
+					if (rowdata.y_form == 'Liquid') {
+						var hoeveel = rowdata.y_amount * 17;
+						return "<div style='margin: 4px;' class='jqx-right-align'>"+dataAdapter.formatNumber(hoeveel, "f0")+" pk</div>";
+					} else if (rowdata.y_form == 'Dry') {
+						var hoeveel = rowdata.y_amount * 1000;
+						return "<div style='margin: 4px;' class='jqx-right-align'>"+dataAdapter.formatNumber(hoeveel, "f1")+" gr</div>";
+					} else {
+						var hoeveel = rowdata.y_amount * 1000;
+						return "<div style='margin: 4px;' class='jqx-right-align'>"+dataAdapter.formatNumber(hoeveel, "f0")+" ml</div>";
+					}
+				  },
+				  initeditor: function (row, cellvalue, editor, celltext, pressedChar) {
+					var form = $("#yeastGrid").jqxGrid('getcellvalue', args.rowindex, 'y_form');
+					if (form == 'Liquid') {
+						editor.jqxNumberInput({ decimalDigits: 0, min: 0 });
+					} else {
+						editor.jqxNumberInput({ decimalDigits: 1, min: 0 });
+					}
+				  },
                                   validation: function (cell, value) {
                                         if (value < 0 || value > 100000000000 ) {
                                                 return { result: false, message: "Volume moet  0-~ zijn" };
@@ -1280,7 +1353,20 @@
                                   }
                                 }
                         ]
-                })
+                });
+		$("#yeastGrid").on('cellendedit', function (event) {
+			var args = event.args;
+			console.log("Event Type: cellendedit, Column: " + args.datafield + ", Row: " + (args.rowindex) + ", Value: " + args.value);
+			if (args.datafield == 'amount') {
+				var form = $("#yeastGrid").jqxGrid('getcellvalue', args.rowindex, 'y_form');
+				if (form == 'Liquid')
+					$("#yeastGrid").jqxGrid('setcellvalue', args.rowindex, 'y_amount', parseFloat(args.value * 0.0588));
+				else
+					$("#yeastGrid").jqxGrid('setcellvalue', args.rowindex, 'y_amount', parseFloat(args.value / 1000));
+			} else {
+				$("#yeastGrid").jqxGrid('setcellvalue', args.rowindex, args.datafield, args.value);
+			}
+		});
         };
 
 	// Inline waters editor

mercurial