# HG changeset patch # User Michiel Broek # Date 1544277683 -3600 # Node ID 7f41b61c3fafacc4192ebb09e0637f9f7c695bfc # Parent 4d188d216c88e4cc859e04d8fa657458d3cf0143 Added a loader during recipe load. Recalculate percentages if a fermentable row is deleted. Don't edit amounts if using weight percentages. Update grid percentages if a fermentable amount is changed. Recalculate IBU's after changes with fermentables. diff -r 4d188d216c88 -r 7f41b61c3faf www/includes/global.inc.php --- a/www/includes/global.inc.php Fri Dec 07 21:26:54 2018 +0100 +++ b/www/includes/global.inc.php Sat Dec 08 15:01:23 2018 +0100 @@ -119,6 +119,7 @@ + @@ -150,6 +151,8 @@
+
+
diff -r 4d188d216c88 -r 7f41b61c3faf www/js/rec_edit.js --- a/www/js/rec_edit.js Fri Dec 07 21:26:54 2018 +0100 +++ b/www/js/rec_edit.js Sat Dec 08 15:01:23 2018 +0100 @@ -53,6 +53,13 @@ var pcara = 0; // Percentage cara/crystal malts console.log("record:" + my_record + " return:" + my_return + " theme:" + theme); + $("#jqxLoader").jqxLoader({ + width: 250, + height: 150, + isModal: true, + text: "Laden recept ...", + theme: theme + }); function calcFermentables() { console.log("calcFermentables()"); @@ -111,7 +118,6 @@ // $('#efficiency').on('change', function (event) { calcFermentables(); }); // $('#batch_size').on('change', function (event) { calcFermentables(); }); // $('#boil_time').on('change', function (event) { calcFermentables(); }); -// $('#fermentableGrid').on('change', function (event) { calcFermentables(); }); }; // Styles dropdown list @@ -327,6 +333,7 @@ }, beforeLoadComplete: function (records) { var filteredRecords = []; + $('#jqxLoader').jqxLoader('open'); for (var i = 0; i < records.length; i++) { if (records[i].record == my_record) { filteredRecords.push(records[i]); @@ -484,8 +491,37 @@ var rowscount = $("#fermentableGrid").jqxGrid('getdatainformation').rowscount; if (selectedrowindex >= 0 && selectedrowindex < rowscount) { var id = $("#fermentableGrid").jqxGrid('getrowid', selectedrowindex); + var percent = $('#fermentableGrid').jqxGrid('getcellvalue', id, "f_percentage"); + var amount = $('#fermentableGrid').jqxGrid('getcellvalue', id, "f_amount"); var commit = $("#fermentableGrid").jqxGrid('deleterow', id); } + rowscount = $("#fermentableGrid").jqxGrid('getdatainformation').rowscount; + if (rowscount > 1) { + if (to_100) { + for (var i = 0; i < rowscount; i++) { + var rowdata = $("#fermentableGrid").jqxGrid('getrowdata', i); + if (rowdata.f_adjust_to_total_100) { + rowdata.f_percentage += percent; + rowdata.f_amount += amount; + } + } + } else { + var tw = 0; + for (i = 0; i < rowscount; i++) { + var rowdata = $("#fermentableGrid").jqxGrid('getrowdata', i); + tw += rowdata.f_amount; + }; + for (i = 0; i < rowscount; i++) { + var rowdata = $("#fermentableGrid").jqxGrid('getrowdata', i); + var percentage = Math.round(rowdata.f_amount / tw * 1000) / 10.0; + $("#fermentableGrid").jqxGrid('setcellvalue', i, "f_percentage", percentage); + }; + } + } else { + $("#fermentableGrid").jqxGrid('setcellvalue', 0, "f_percentage", 100); + } + calcFermentables(); + calcIBUs(); }); }, ready: function() { @@ -507,18 +543,24 @@ } }, { text: 'Opbrengst', editable: false, datafield: 'f_yield', width: 90, align: 'right', cellsalign: 'right', cellsformat: 'p1' }, - { text: 'Gewicht Kg', datafield: 'f_amount', width: 110, align: 'right', cellsalign: 'right', cellsformat: 'f3', + { text: 'Gewicht Kg', datafield: 'f_amount', width: 120, align: 'right', cellsalign: 'right', cellsformat: 'f3', columntype: 'numberinput', validation: function (cell, value) { // Maximum weight is the batch_size, just a simple check. var maxmout = parseFloat($("#batch_size").jqxNumberInput('decimal')); if (value < 0 || value > maxmout) { - return { result: false, message: "Gewicht moet 0-"+maxmout+" zijn" }; + return { result: false, message: "Gewicht moet 0-"+maxmout+" zijn" }; } return true; }, initeditor: function (row, cellvalue, editor) { - editor.jqxNumberInput({ inputMode: 'simple', decimalDigits: 3 }); + editor.jqxNumberInput({ inputMode: 'simple', min: 0, decimalDigits: 3, spinButtons: false }); + }, + cellvaluechanging: function (row, column, columntype, oldvalue, newvalue) { + if (to_100) { + return oldvalue; // When using percentages, don't allow edited results. + } +// console.log("row:"+row+" col:"+column+" type:"+columntype+" old:"+oldvalue+" new:"+newvalue); } }, { text: 'Percentage', datafield: 'f_percentage', width: 110, align: 'right', cellsalign: 'right', cellsformat: 'p1', @@ -534,7 +576,6 @@ }, 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); @@ -561,7 +602,6 @@ } 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) { @@ -572,9 +612,6 @@ } } } -// $('#fermentableGrid').jqxGrid('sortby', 'f_amount', 'desc'); - //$('#fermentableGrid').jqxGrid('render'); -// console.log("diff:"+diff+" len:"+rowscount+" to100:"+to_100+" tw:"+tw); } } }, @@ -596,8 +633,30 @@ $("#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('sortby', 'f_amount', 'desc'); + // Make sure the grid itself is updated. + $("#fermentableGrid").jqxGrid('setcellvalue', args.rowindex, args.datafield, args.value); + if ((args.datafield == 'f_amount') && (! to_100)) { + // If one of the amounts is changed, recalculate the percentages. + console.log("adjust percentages"); + var rowscount = $("#fermentableGrid").jqxGrid('getdatainformation').rowscount; + if (rowscount > 1) { + var tw = 0; + for (i = 0; i < rowscount; i++) { + var rowdata = $("#fermentableGrid").jqxGrid('getrowdata', i); + tw += rowdata.f_amount; + }; + for (i = 0; i < rowscount; i++) { + var rowdata = $("#fermentableGrid").jqxGrid('getrowdata', i); + var percentage = Math.round(rowdata.f_amount / tw * 1000) / 10.0; + $("#fermentableGrid").jqxGrid('setcellvalue', i, "f_percentage", percentage); + }; + } else { + $("#fermentableGrid").jqxGrid('setcellvalue', 0, "f_percentage", 100); + } + }; + $('#fermentableGrid').jqxGrid('sortby', 'f_amount', 'desc'); // TODO: not reliable calcFermentables(); + calcIBUs(); // Depends on gravity, so recalculate. }); }; @@ -1261,6 +1320,7 @@ }, ready: function() { calcInit(); + $('#jqxLoader').jqxLoader('close'); $('#jqxTabs').jqxTabs('first'); }, columns: [