Row editors are now per cell. Added fermentable percentages editor.

Thu, 06 Dec 2018 23:18:27 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Thu, 06 Dec 2018 23:18:27 +0100
changeset 126
9999b3ce98cb
parent 125
f2c79ed6423a
child 127
6d5e215d77d2

Row editors are now per cell. Added fermentable percentages editor.

www/import/from_brouwhulp.php file | annotate | diff | comparison | revisions
www/js/rec_edit.js file | annotate | diff | comparison | revisions
--- a/www/import/from_brouwhulp.php	Wed Dec 05 22:47:19 2018 +0100
+++ b/www/import/from_brouwhulp.php	Thu Dec 06 23:18:27 2018 +0100
@@ -576,7 +576,7 @@
 			$fermentables .= ',"f_dissolved_protein":0';
 		($fermentable->ADJUST_TO_TOTAL_100 == "TRUE") ? $fermentables .= ',"f_adjust_to_total_100":true' : $fermentables .= ',"f_adjust_to_total_100":false';
 		$percent = floatval($fermentable->PERCENTAGE);
-		$fermentables .= ',"f_percentage":' . $percent;
+		$fermentables .= ',"f_percentage":' . round($percent * 10) / 10.0;
 		if ($fermentable->DI_pH)
 			$fermentables .= ',"f_di_ph":' . floatval($fermentable->DI_pH);
 		else
--- a/www/js/rec_edit.js	Wed Dec 05 22:47:19 2018 +0100
+++ b/www/js/rec_edit.js	Thu Dec 06 23:18:27 2018 +0100
@@ -401,7 +401,7 @@
 			source: fermentableAdapter,
 			theme: theme,
 			selectionmode: 'singlerow',
-			editmode: 'selectedrow',
+			editmode: 'selectedcell',
 			editable: true,
 			localization: getLocalization(),
 			showtoolbar: true,
@@ -518,15 +518,65 @@
 					return true;
 				  },
 				  initeditor: function (row, cellvalue, editor) {
-					editor.jqxNumberInput({ decimalDigits: 1 });
+					editor.jqxNumberInput({ decimalDigits: 1, min: 0, max: 100, spinButtons: false });
+				  },
+				  cellvaluechanging: function (row, column, columntype, oldvalue, newvalue) {
+					oldvalue = Math.round(oldvalue * 10) / 10.0;
+//					console.log("row:"+row+" col:"+column+" type:"+columntype+" old:"+oldvalue+" new:"+newvalue);
+					var rowscount = $("#fermentableGrid").jqxGrid('getdatainformation').rowscount;
+					if ((oldvalue != newvalue) && (rowscount > 1)) {
+						var rowdata = $("#fermentableGrid").jqxGrid('getrowdata', row);
+						if (rowdata.f_adjust_to_total_100) {
+							return oldvalue;
+						}
+						var diff = newvalue - oldvalue;
+						var to_100 = false;
+						var tw = 0;	// total weight
+						for (i = 0; i < rowscount; i++) {
+							var rowdata = $("#fermentableGrid").jqxGrid('getrowdata', i);
+							tw += rowdata.f_amount;
+							if (rowdata.f_adjust_to_total_100)
+								to_100 = true;
+						}
+						if (to_100) {
+							// Adjust this row and the 100% row.
+							var rowdata = $("#fermentableGrid").jqxGrid('getrowdata', row);
+							rowdata.f_amount += tw * diff / 100;
+							for (i = 0; i < rowscount; i++) {
+								var rowdata = $("#fermentableGrid").jqxGrid('getrowdata', i);
+								if (rowdata.f_adjust_to_total_100) {
+									rowdata.f_percentage -= diff;
+									rowdata.f_amount -= tw * diff / 100;
+								}
+							}
+						} else {
+							// Adjust all the rows.
+							var nw = tw * diff / 100;
+//							console.log("weight:"+nw);
+							for (i = 0; i < rowscount; i++) {
+								var rowdata = $("#fermentableGrid").jqxGrid('getrowdata', i);
+								if (i == row) {
+									rowdata.f_amount += nw;
+								} else {
+									rowdata.f_amount -= nw / (rowscount - 1);
+									rowdata.f_percentage = Math.round((rowdata.f_amount / tw) * 1000) / 10.0;
+								}
+							}
+						}
+//						console.log("diff:"+diff+" len:"+rowscount+" to100:"+to_100+" tw:"+tw);
+					}
+					// return newvalue;
 				  }
 				},
 				{ text: '100%', datafield: 'f_adjust_to_total_100', columntype: 'checkbox', width: 80 }
 			]
 		});
 		$("#fermentableGrid").on('cellendedit', function (event) {
+			var args = event.args;
+			console.log("Event Type: cellendedit, Column: " + args.datafield + ", Row: " + (args.rowindex) + ", Value: " + args.value);
+//			$('#fermentableGrid').jqxGrid('updatebounddata');
+			$('#fermentableGrid').jqxGrid('sortby', 'f_amount', 'desc');
 			calcFermentables();
-			$('#fermentableGrid').jqxGrid('sortby', 'f_amount', 'desc');
 		});
 	};
 
@@ -675,7 +725,14 @@
                                         return true;
                                   }
                                 },
-				{ text: 'Gebruik', width: 110, align: 'center', cellsalign: 'center', datafield: 'h_useat' },
+				{ 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" ];
+					  editor.jqxDropDownList({ autoDropDownHeight: true, source: srcUse });
+				  }
+				  // cellvaluechanging: function (row, column, columntype, oldvalue, newvalue) {
+				  // do iets met de h_time.
+				},
 				{ text: 'Tijd', datafield: 'h_time', width: 70, align: 'right', cellsalign: 'right', cellsformat: 'f0',
 				  columntype: 'numberinput',
 				  initeditor: function (row, cellvalue, editor, celltext, pressedChar) {
@@ -688,6 +745,7 @@
 					}
 					return true;
 				  } // TODO: Only enable editing if Boil, else use fixed values.
+				    // $("#grid").jqxGrid('setcolumnproperty', datafield, 'editable', event.args.checked); maar dan per cell
 				},
 				{ text: 'IBU', editable: false, datafield: 'ibu', width: 80, align: 'right',
 				  cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) {
@@ -758,7 +816,7 @@
                         source: miscAdapter,
                         theme: theme,
                         selectionmode: 'singlerow',
-                        editmode: 'selectedrow',
+                        editmode: 'selectedcell',
                         editable: true,
                         localization: getLocalization(),
                         showtoolbar: true,
@@ -889,7 +947,7 @@
                         source: yeastAdapter,
                         theme: theme,
                         selectionmode: 'singlerow',
-                        editmode: 'selectedrow',
+                        editmode: 'selectedcell',
                         editable: true,
                         localization: getLocalization(),
                         showtoolbar: true,
@@ -1023,7 +1081,7 @@
 			source: waterAdapter,
 			theme: theme,
 			selectionmode: 'singlerow',
-			editmode: 'selectedrow',
+			editmode: 'selectedcell',
 			editable: true,
 			localization: getLocalization(),
 			showtoolbar: true,
@@ -1154,7 +1212,7 @@
                         source: mashAdapter,
                         theme: theme,
                         selectionmode: 'singlerow',
-                        editmode: 'selectedrow',
+                        editmode: 'selectedcell',
                         editable: true,
                         localization: getLocalization(),
                         showtoolbar: true,

mercurial