Sat, 15 Dec 2018 21:27:01 +0100
During hops load an extra weight in grams field is generated for the grid. Edit the amount is done on the weight field and the amount field is updated too. During save to the database the extra field is removed.
www/includes/db_recipes.php | file | annotate | diff | comparison | revisions | |
www/js/rec_edit.js | file | annotate | diff | comparison | revisions |
--- a/www/includes/db_recipes.php Sat Dec 15 11:06:14 2018 +0100 +++ b/www/includes/db_recipes.php Sat Dec 15 21:27:01 2018 +0100 @@ -14,7 +14,7 @@ $replacements = array("\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b"); $rescapers = array("'"); $rreplacements = array("\\'"); -$disallowed = array('visibleindex','uniqueid','boundindex','uid'); +$disallowed = array('visibleindex','uniqueid','boundindex','uid','h_weight'); if (isset($_POST['insert']) || isset($_POST['update'])) { if (isset($_POST['insert'])) {
--- a/www/js/rec_edit.js Sat Dec 15 11:06:14 2018 +0100 +++ b/www/js/rec_edit.js Sat Dec 15 21:27:01 2018 +0100 @@ -826,7 +826,8 @@ { name: 'h_carophyllene', type: 'float' }, { name: 'h_cohumulone', type: 'float' }, { name: 'h_myrcene', type: 'float' }, - { name: 'h_total_oil', type: 'float' } + { name: 'h_total_oil', type: 'float' }, + { name: 'h_weight', type: 'float' } ], addrow: function (rowid, rowdata, position, commit) { commit(true); @@ -835,7 +836,20 @@ commit(true); } }; - var hopAdapter = new $.jqx.dataAdapter(hopSource); + var hopAdapter = new $.jqx.dataAdapter(hopSource, { + beforeLoadComplete: function (records) { + var data = new Array(); + for (var i = 0; i < records.length; i++) { + var row = records[i]; + row.h_weight = row.h_amount * 1000; + data.push(row); + } + return data; + }, + loadError: function(jqXHR, status, error) { + $('#err').text(status + ' ' + error); + }, + }); // dropdownlist datasource from inventory_hops var hopUrl = "gethopsources.php"; var hopInvSource = { @@ -863,7 +877,7 @@ var hoplist = new $.jqx.dataAdapter(hopInvSource); $("#hopGrid").jqxGrid({ - width: 960, + width: 1150, height: 400, source: hopAdapter, theme: theme, @@ -914,6 +928,7 @@ row["h_cohumulone"] = datarecord.cohumulone; row["h_myrcene"] = datarecord.myrcene; row["h_total_oil"] = datarecord.total_oil; + row["h_weight"] = 0; var commit = $("#hopGrid").jqxGrid('addrow', null, row); } }); @@ -937,21 +952,29 @@ { text: 'Type', editable: false, width: 90, align: 'center', cellsalign: 'center', datafield: 'h_type' }, { text: 'Vorm', editable: false, width: 90, align: 'center', cellsalign: 'center', datafield: 'h_form' }, { text: 'Alpha', editable: false, datafield: 'h_alpha', width: 80, align: 'right', cellsalign: 'right', cellsformat: 'p1' }, - // Edit the amount in grams, shoukd be fine for batches < 10 hl. - { text: 'Gewicht gr', datafield: 'grams', width: 120, align: 'right', columntype: 'numberinput', cellsformat: 'f1', + { text: 'Amount', hidden: true, datafield: 'h_amount' }, + { text: 'Gewicht gr', datafield: 'h_weight', width: 120, align: 'right', cellsalign: 'right', + columntype: 'numberinput', cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) { - var gram = rowdata.h_amount * 1000; - return "<div style='margin: 4px;' class='jqx-right-align'>" + dataAdapter.formatNumber(gram, "f1") + " gr</div>"; + return "<div style='margin: 4px;' class='jqx-right-align'>" + dataAdapter.formatNumber(value, "f1") + " gr</div>"; + }, + initeditor: function (row, cellvalue, editor, celltext, pressedChar) { + editor.jqxNumberInput({ + inputMode: 'simple', + symbol: ' gr', symbolPosition: 'right', + decimalDigits: 1, + min: 0, max: parseFloat(dataRecord.batch_size * 200), + spinButtons: false + }); }, validation: function (cell, value) { - var maxhops = parseFloat($("#batch_size").jqxNumberInput('decimal')) * 200; + var maxhops = parseFloat(dataRecord.batch_size) * 200; if (value < 0 || value > maxhops ) { - return { result: false, message: "Gewicht moet 0-"+maxhops+" gram zijn" }; + return { result: false, message: "Gewicht moet tussen 0 en "+maxhops+" gram 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" ]; @@ -959,7 +982,7 @@ }, cellvaluechanging: function (row, column, columntype, oldvalue, newvalue) { if ((newvalue == "Mash") || (newvalue == "First Wort")) { - $("#hopGrid").jqxGrid('setcellvalue', row, "h_time", parseFloat($("#boil_time").jqxNumberInput('decimal'))); + $("#hopGrid").jqxGrid('setcellvalue', row, "h_time", parseFloat(dataRecord.boil_time)); } else if (newvalue == "Aroma") { $("#hopGrid").jqxGrid('setcellvalue', row, "h_time", 0); } @@ -967,12 +990,18 @@ }, { text: 'Tijd', datafield: 'h_time', width: 70, align: 'right', cellsalign: 'right', cellsformat: 'f0', columntype: 'numberinput', + cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) { + if ((rowdata.h_useat == "Boil") || (rowdata.h_useat == "Dry Hop") || (rowdata.h_useat == "Dry hop")) + return "<div style='margin: 4px;' class='jqx-right-align'>"+dataAdapter.formatNumber(value, "f0")+"</div>"; + else + 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 = $("#hopGrid").jqxGrid('getcellvalue', row, "h_useat"); - if (use != "Boil") + if ((use == "Mash") || (use == "First Wort") || (use == "First wort") || (use == "Aroma")) return oldvalue; }, validation: function (cell, value) { @@ -985,7 +1014,7 @@ }, { text: 'IBU', editable: false, datafield: 'ibu', width: 80, align: 'right', cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) { - var ibu = toIBU(rowdata.h_useat, + var ibu = toIBU(rowdata.h_useat, rowdata.h_form, preboil_sg, parseFloat($("#batch_size").jqxNumberInput('decimal')), @@ -994,8 +1023,8 @@ parseFloat(rowdata.h_alpha), $("#ibu_method").val() ); - calcIBUs(); - return "<div style='margin: 4px;' class='jqx-right-align'>" + dataAdapter.formatNumber(ibu, "f1") + "</div>"; + calcIBUs(); + return "<div style='margin: 4px;' class='jqx-right-align'>" + dataAdapter.formatNumber(ibu, "f1") + "</div>"; } } ] @@ -1003,12 +1032,10 @@ $("#hopGrid").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 == 'grams') { - $("#hopGrid").jqxGrid('setcellvalue', args.rowindex, 'h_amount', parseFloat(args.value / 1000)); - } else { - $("#hopGrid").jqxGrid('setcellvalue', args.rowindex, args.datafield, args.value); - } -// //$('#hopGrid').jqxGrid('sortby', 'f_amount', 'desc'); + $("#hopGrid").jqxGrid('setcellvalue', args.rowindex, args.datafield, args.value); + if (args.datafield == 'h_weight') + $("#hopGrid").jqxGrid('setcellvalue', args.rowindex, 'h_amount', args.value / 1000); + //$('#hopGrid').jqxGrid('sortby', 'f_amount', 'desc'); }); };