# HG changeset patch # User Michiel Broek # Date 1544134707 -3600 # Node ID 9999b3ce98cbf135b602a78ba54045fe9529c65f # Parent f2c79ed6423a0cdec480e891c7d9a15209b7f229 Row editors are now per cell. Added fermentable percentages editor. diff -r f2c79ed6423a -r 9999b3ce98cb www/import/from_brouwhulp.php --- 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 diff -r f2c79ed6423a -r 9999b3ce98cb www/js/rec_edit.js --- 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,