diff -r 3ba26a83eb93 -r f68e3bbc1ada www/js/prod_edit.js --- a/www/js/prod_edit.js Fri May 21 16:36:06 2021 +0200 +++ b/www/js/prod_edit.js Sun May 23 16:41:35 2021 +0200 @@ -128,6 +128,110 @@ +function drop_endis(flag, item, index) { + (flag) ? $(item).jqxDropDownList('disableAt', index) : $(item).jqxDropDownList('enableAt', index); +} + + + +function block_fermentable(stage, added) { + if (stage > 5 && added < 4) // After fermentation and added before packaging + return true; + if (stage > 3 && added < 3) // After primary and added before sec/tert + return true; + if (stage > 2 && added < 2) // After boil and added during mash or boil + return true; + return false; +} + + + +function minimum_fermentable(stage, added) { + if (stage > 5 && added < 4) + return 4; + if (stage > 3 && added < 3) + return 3; + if (stage > 2 && added < 2) + return 2; + return added; +} + + + +function minimum_hop(stage, useat) +{ + if (stage > 2 && useat < 5) + return 5; + return useat; +} + + + +function block_hop(stage, useat) +{ + if (stage > 2 && useat < 5) + return true; + return false; +} + + + +function block_misc(stage, use_use) { + if (stage > 5 && use_use < 5) + return true; + if (stage > 3 && use_use < 4) + return true; + if (stage > 2 && use_use < 3) + return true; + if (stage > 1 && use_use < 1) + return true; + return false; +} + + + +function minimum_misc(stage, use_use) { + if (stage > 5 && use_use < 5) + return 5; + if (stage > 3 && use_use < 4) + return 4; + if (stage > 2 && use_use < 3) + return 3; + if (stage > 1 && use_use < 1) + return 1; + return use_use; +} + + + +function block_yeast(stage, use) { + if (stage > 3 && use < 1) + return true; + if (stage > 4 && use < 2) + return true; + if (stage > 5 && use < 3) + return true; + if (stage > 6 && use < 4) + return true; + return false; +} + + + +function minimum_yeast(stage, use) { + if (stage > 3 && use < 1) + return 1; + if (stage > 4 && use < 2) + return 2; + if (stage > 5 && use < 3) + return 3; + if (stage > 6 && use < 4) + return 4; + return use; +} + + + $(document).ready(function() { var i, @@ -754,12 +858,7 @@ row['f_added'] = 0; // Mash } /* If stage > added moment, adjust the moment */ - if (dataRecord.stage > 5 && row['f_added'] < 4) - row['f_added'] = 4; - if (dataRecord.stage > 3 && row['f_added'] < 3) - row['f_added'] = 3; - if (dataRecord.stage > 2 && row['f_added'] < 2) - row['f_added'] = 2; + row['f_added'] = minimum_fermentable(dataRecord.stage, row['f_added']); row['f_dissolved_protein'] = datarecord.dissolved_protein; row['f_recommend_mash'] = datarecord.recommend_mash; row['f_add_after_boil'] = datarecord.add_after_boil; @@ -792,9 +891,15 @@ rowscount = $('#fermentableGrid').jqxGrid('getdatainformation').rowscount; if (selectedrowindex >= 0 && selectedrowindex < rowscount) { id = $('#fermentableGrid').jqxGrid('getrowid', selectedrowindex); - percent = $('#fermentableGrid').jqxGrid('getcellvalue', id, 'f_percentage'); - amount = $('#fermentableGrid').jqxGrid('getcellvalue', id, 'f_amount'); - $('#fermentableGrid').jqxGrid('deleterow', id); + added = $('#fermentableGrid').jqxGrid('getcellvalue', selectedrowindex, 'f_added'); + if (block_fermentable(dataRecord.stage, added)) { + percent = mount = 0; + alert('Ingredieënt is al verwerkt.'); + } else { + percent = $('#fermentableGrid').jqxGrid('getcellvalue', id, 'f_percentage'); + amount = $('#fermentableGrid').jqxGrid('getcellvalue', id, 'f_amount'); + $('#fermentableGrid').jqxGrid('deleterow', id); + } } rowscount = $('#fermentableGrid').jqxGrid('getdatainformation').rowscount; if (rowscount > 1) { @@ -840,11 +945,7 @@ { text: 'Voorraad Kg', datafield: 'f_inventory', width: 120, align: 'right', cellsrenderer: function(row, columnfield, value, defaulthtml, columnproperties, rowdata) { var color = '#ffffff'; - if (((dataRecord.inventory_reduced <= 2) && (rowdata.f_added <= 1)) || // Mash or boil - ((dataRecord.inventory_reduced <= 3) && (rowdata.f_added == 2)) || // Primary - ((dataRecord.inventory_reduced <= 5) && (rowdata.f_added == 3)) || // Secondary or Tertiary - ((dataRecord.inventory_reduced <= 6) && (rowdata.f_added == 4)) || // Bottle - ((dataRecord.inventory_reduced <= 6) && (rowdata.f_added == 5))) { // Kegs + if (block_fermentable(dataRecord.inventory_reduced, rowdata.f_added) == false) { if (value < rowdata.f_amount) color = '#ff4040'; return '' + fermentableAdapter.formatNumber(value, 'f3') + ''; @@ -878,7 +979,7 @@ fermentableData = $('#fermentableGrid').jqxGrid('getrowdata', fermentableRow); if (fermentableData.f_added >= 4) { alert('Wijzig dit in de Verpakken tab'); - } else if ((dataRecord.stage >= 3 && fermentableData.f_added <= 1) || (dataRecord.stage >= 4 && fermentableData.f_added <= 2) || (dataRecord.stage >= 6 && fermentableData.f_added <= 3)) { + } else if (block_fermentable(dataRecord.stage, fermentableData.f_added)) { alert('Ingredieënt is al verwerkt.'); } else { $('#wf_name').val(fermentableData.f_name); @@ -887,9 +988,9 @@ $('#wf_max_in_batch').val(fermentableData.f_max_in_batch); $('#wf_adjust_to_total_100').val(fermentableData.f_adjust_to_total_100); $('#wf_added').val(fermentableData.f_added); - (dataRecord.stage >= 3) ? $('#wf_added').jqxDropDownList('disableAt', 0) : $('#wf_added').jqxDropDownList('enableAt', 0); - (dataRecord.stage >= 3) ? $('#wf_added').jqxDropDownList('disableAt', 1) : $('#wf_added').jqxDropDownList('enableAt', 1); - (dataRecord.stage >= 4) ? $('#wf_added').jqxDropDownList('disableAt', 2) : $('#wf_added').jqxDropDownList('enableAt', 2); + drop_endis(dataRecord.stage >= 3, '#wf_added', 0); + drop_endis(dataRecord.stage >= 3, '#wf_added', 1); + drop_endis(dataRecord.stage >= 4, '#wf_added', 2); $('#wf_added').jqxDropDownList('disableAt', 4); $('#wf_added').jqxDropDownList('disableAt', 5); // show the popup window. @@ -954,7 +1055,7 @@ theme: theme, template: 'primary', source: hoplist, - disabled: (dataRecord.stage > 3), + disabled: (dataRecord.stage > 5), displayMember: 'name', width: 150, height: 27, @@ -987,25 +1088,32 @@ row['h_myrcene'] = datarecord.myrcene; row['h_total_oil'] = datarecord.total_oil; row['h_inventory'] = datarecord.inventory; + /* If stage > useat moment, adjust the moment */ + row['h_useat'] = minimum_hop(dataRecord.stage, row['h_useat']); $('#hopGrid').jqxGrid('addrow', null, row); } $('#haddrowbutton').jqxDropDownList('clearSelection'); }); - $('#hinstockbutton').jqxCheckBox({ theme: theme, height: 27, disabled: (dataRecord.stage > 3) }); + $('#hinstockbutton').jqxCheckBox({ theme: theme, height: 27, disabled: (dataRecord.stage > 5) }); $('#hinstockbutton').on('change', function(event) { hopinstock = event.args.checked; hoplist.dataBind(); }); // delete selected hop. - $('#hdeleterowbutton').jqxButton({ template: 'danger', theme: theme, height: 27, width: 150, disabled: (dataRecord.stage > 3) }); + $('#hdeleterowbutton').jqxButton({ template: 'danger', theme: theme, height: 27, width: 150, disabled: (dataRecord.stage > 5) }); $('#hdeleterowbutton').on('click', function() { var rowscount, id, selectedrowindex = $('#hopGrid').jqxGrid('getselectedrowindex'); rowscount = $('#hopGrid').jqxGrid('getdatainformation').rowscount; if (selectedrowindex >= 0 && selectedrowindex < rowscount) { - id = $('#hopGrid').jqxGrid('getrowid', selectedrowindex); - $('#hopGrid').jqxGrid('deleterow', id); + useat = $('#hopGrid').jqxGrid('getcellvalue', selectedrowindex, 'h_useat'); + if (block_hop(dataRecord.stage, useat)) { + alert('Ingredieënt is al verwerkt.'); + } else { + id = $('#hopGrid').jqxGrid('getrowid', selectedrowindex); + $('#hopGrid').jqxGrid('deleterow', id); + } } calcIBUs(); }); @@ -1061,8 +1169,7 @@ }, { text: 'Voorraad', datafield: 'h_inventory', width: 110, align: 'right', cellsrenderer: function(index, datafield, value, defaultvalue, column, rowdata) { - if (((dataRecord.inventory_reduced <= 2) && (rowdata.h_useat <= 4)) || // Mash, FW, Boil, Aroma, Whirlpool - ((dataRecord.inventory_reduced <= 6) && (rowdata.h_useat == 5))) { // Dry hop + if (block_hop(dataRecord.inventory_reduced, rowdata.h_useat) == false) { var amount, color = '#ffffff'; if (value < rowdata.h_amount) color = '#ff4040'; @@ -1079,12 +1186,12 @@ cellsrenderer: function() { return 'Wijzig'; }, buttonclick: function(row) { - if (dataRecord.stage > 3) { + hopRow = row; + hopData = $('#hopGrid').jqxGrid('getrowdata', hopRow); + if (block_hop(dataRecord.stage, hopData.h_useat)) { alert('Ingredieënt is al verwerkt.'); } else { console.log('edit button row ' + row); - hopRow = row; - hopData = $('#hopGrid').jqxGrid('getrowdata', hopRow); $('#wh_name').val(hopData.h_name); $('#wh_amount').val(hopData.h_amount * 1000); var ibu = toIBU(hopData.h_useat, hopData.h_form, preboil_sg, parseFloat($('#batch_size').jqxNumberInput('decimal')), @@ -1096,6 +1203,9 @@ else $('#wh_time').val(hopData.h_time); $('#wh_useat').val(hopData.h_useat); + for (i = 0; i < 5; i++) { + drop_endis(dataRecord.stage > 2, '#wh_useat', i); + } // show the popup window. $('#popupHop').jqxWindow('open'); } @@ -1217,7 +1327,7 @@ theme: theme, template: 'primary', source: misclist, - disabled: (dataRecord.stage > 3), + disabled: (dataRecord.stage > 6), displayMember: 'name', width: 150, height: 27, @@ -1232,25 +1342,30 @@ row['m_amount'] = 0; row['m_cost'] = datarecord.cost; row['m_type'] = datarecord.type; - row['m_use_use'] = datarecord.use_use; + row['m_use_use'] = minimum_misc(dataRecord.stage, datarecord.use_use); row['m_time'] = 0; row['m_amount_is_weight'] = datarecord.amount_is_weight; row['m_inventory'] = datarecord.inventory; $('#miscGrid').jqxGrid('addrow', null, row); } }); - $('#minstockbutton').jqxCheckBox({ theme: theme, height: 27, disabled: (dataRecord.stage > 3) }); + $('#minstockbutton').jqxCheckBox({ theme: theme, height: 27, disabled: (dataRecord.stage > 6) }); $('#minstockbutton').on('change', function(event) { miscinstock = event.args.checked; misclist.dataBind(); }); // delete selected misc. - $('#mdeleterowbutton').jqxButton({ template: 'danger', theme: theme, height: 27, width: 150, disabled: (dataRecord.stage > 3) }); + $('#mdeleterowbutton').jqxButton({ template: 'danger', theme: theme, height: 27, width: 150, disabled: (dataRecord.stage > 6) }); $('#mdeleterowbutton').on('click', function() { var rowscount, type, id, selectedrowindex = $('#miscGrid').jqxGrid('getselectedrowindex'); rowscount = $('#miscGrid').jqxGrid('getdatainformation').rowscount; type = $('#miscGrid').jqxGrid('getcellvalue', selectedrowindex, 'm_type'); - if (selectedrowindex >= 0 && selectedrowindex < rowscount && type != 4) { // Water agent + use_use = $('#miscGrid').jqxGrid('getcellvalue', selectedrowindex, 'm_use_use'); + if (selectedrowindex >= 0 && selectedrowindex < rowscount && type == 4) { + alert('Brouwzouten verwijderen in de water tab.'); + } else if (block_misc(dataRecord.stage, use_use)) { + alert('Ingredieënt is al verwerkt.'); + } else { id = $('#miscGrid').jqxGrid('getrowid', selectedrowindex); $('#miscGrid').jqxGrid('deleterow', id); } @@ -1288,10 +1403,7 @@ { text: 'Voorraad', datafield: 'm_inventory', width: 110, align: 'right', cellsrenderer: function(index, datafield, value, defaultvalue, column, rowdata) { var vstr, color, amount; - if (((dataRecord.inventory_reduced <= 2) && (rowdata.m_use_use <= 2)) || // Starter, Mash, Boil - ((dataRecord.inventory_reduced <= 3) && (rowdata.m_use_use == 3)) || // Primary - ((dataRecord.inventory_reduced <= 5) && (rowdata.m_use_use == 4)) || // Secondary, Teriary - ((dataRecord.inventory_reduced <= 6) && (rowdata.m_use_use == 5))) { // Bottle + if (block_misc(dataRecord.inventory_reduced, rowdata.m_use_use) == false) { vstr = rowdata.m_amount_is_weight ? 'gr' : 'ml'; color = '#ffffff'; if (value < rowdata.m_amount) @@ -1309,7 +1421,7 @@ }, buttonclick: function(row) { miscRow = row; miscData = $('#miscGrid').jqxGrid('getrowdata', miscRow); - if (dataRecord.stage > 3) { + if (block_misc(dataRecord.stage, miscData.m_use_use)) { alert('Ingredieënt is al verwerkt.'); } else if (miscData.m_type == 4) { alert('Brouwzouten wijzigen in de water tab.'); @@ -1326,6 +1438,11 @@ else $('#wm_time').val(miscData.m_time); $('#wm_use_use').val(miscData.m_use_use); + drop_endis(dataRecord.stage >= 2, '#wm_use_use', 0); + drop_endis(dataRecord.stage >= 3, '#wm_use_use', 1); + drop_endis(dataRecord.stage >= 3, '#wm_use_use', 2); + drop_endis(dataRecord.stage >= 4, '#wm_use_use', 3); + drop_endis(dataRecord.stage >= 5, '#wm_use_use', 4); // show the popup window. $('#popupMisc').jqxWindow('open'); } @@ -1396,7 +1513,7 @@ placeHolder: 'Kies gist:', theme: theme, source: yeastlist, - disabled: (dataRecord.stage > 3), + disabled: (dataRecord.stage > 6), template: 'primary', displayMember: 'name', width: 150, @@ -1419,7 +1536,7 @@ row['y_form'] = datarecord.form; row['y_amount'] = 0; row['y_cost'] = datarecord.cost; - row['y_use'] = 0; + row['y_use'] = minimum_yeast(dataRecord.stage, 0); row['y_min_temperature'] = datarecord.min_temperature; row['y_max_temperature'] = datarecord.max_temperature; row['y_attenuation'] = datarecord.attenuation; @@ -1444,21 +1561,26 @@ calcYeast(); $('#yaddrowbutton').jqxDropDownList('clearSelection'); }); - $('#yinstockbutton').jqxCheckBox({ theme: theme, height: 27, disabled: (dataRecord.stage > 3) }); + $('#yinstockbutton').jqxCheckBox({ theme: theme, height: 27, disabled: (dataRecord.stage > 6) }); $('#yinstockbutton').on('change', function(event) { yeastinstock = event.args.checked; yeastlist.dataBind(); }); // delete selected yeast. - $('#ydeleterowbutton').jqxButton({ template: 'danger', theme: theme, height: 27, width: 150, disabled: (dataRecord.stage > 3) }); + $('#ydeleterowbutton').jqxButton({ template: 'danger', theme: theme, height: 27, width: 150, disabled: (dataRecord.stage > 6) }); $('#ydeleterowbutton').on('click', function() { var id, rowscount, selectedrowindex = $('#yeastGrid').jqxGrid('getselectedrowindex'); rowscount = $('#yeastGrid').jqxGrid('getdatainformation').rowscount; if (selectedrowindex >= 0 && selectedrowindex < rowscount) { - id = $('#yeastGrid').jqxGrid('getrowid', selectedrowindex); - $('#yeastGrid').jqxGrid('deleterow', id); - calcViability(); - calcYeast(); + use = $('#yeastGrid').jqxGrid('getcellvalue', selectedrowindex, 'y_use'); + if (block_yeast(dataRecord.stage, use)) { + alert('Ingredieënt is al verwerkt.'); + } else { + id = $('#yeastGrid').jqxGrid('getrowid', selectedrowindex); + $('#yeastGrid').jqxGrid('deleterow', id); + calcViability(); + calcYeast(); + } } }); }, @@ -1504,10 +1626,7 @@ { text: 'Voorraad', datafield: 'y_inventory', width: 90, align: 'right', cellsrenderer: function(index, datafield, value, defaultvalue, column, rowdata) { var color, amount; - if (((dataRecord.inventory_reduced <= 3) && (rowdata.y_use == 0)) || // Primary - ((dataRecord.inventory_reduced <= 4) && (rowdata.y_use == 1)) || // Secondary - ((dataRecord.inventory_reduced <= 5) && (rowdata.y_use == 2)) || // Tertiary - ((dataRecord.inventory_reduced <= 6) && (rowdata.y_use == 3))) { // Bottle + if (block_yeast(dataRecord.inventory_reduced, rowdata.y_use) == false) { color = '#ffffff'; if (value < rowdata.y_amount) color = '#ff4040'; @@ -1528,10 +1647,7 @@ }, buttonclick: function(row) { yeastRow = row; yeastData = $('#yeastGrid').jqxGrid('getrowdata', yeastRow); - if ((dataRecord.stage > 3 && yeastData.y_use == 0) || - (dataRecord.stage > 4 && yeastData.y_use == 1) || - (dataRecord.stage > 5 && yeastData.y_use == 2) || - (dataRecord.stage > 6 && yeastData.y_use == 3)) { + if (block_yeast(dataRecord.stage, yeastData.y_use)) { alert('Ingredieënt is al verwerkt.'); } else { if (yeastData.y_form == 0) { @@ -1551,6 +1667,9 @@ $('#wy_laboratory').val(yeastData.y_laboratory); $('#wy_product_id').val(yeastData.y_product_id); $('#wy_use').val(yeastData.y_use); + drop_endis(dataRecord.stage > 3, '#wy_use', 0); + drop_endis(dataRecord.stage > 4, '#wy_use', 1); + drop_endis(dataRecord.stage > 5, '#wy_use', 2); // show the popup window. $('#popupYeast').jqxWindow('open'); }