diff -r 9e43b216ccd3 -r d25a1b160dba www/js/prod_edit.js --- a/www/js/prod_edit.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/prod_edit.js Fri Oct 18 13:12:46 2019 +0200 @@ -305,6 +305,9 @@ { name: 'prop3_volume', type: 'float' }, { name: 'prop4_type', type: 'int' }, { name: 'prop4_volume', type: 'float' }, + { name: 'divide_type', type: 'int' }, + { name: 'divide_size', type: 'float' }, + { name: 'divide_parts', type: 'int' }, { name: 'fermentables', type: 'array' }, { name: 'hops', type: 'array' }, { name: 'miscs', type: 'array' }, @@ -530,6 +533,9 @@ $('#prop3_volume').val(dataRecord.prop3_volume); $('#prop4_type').val(dataRecord.prop4_type); $('#prop4_volume').val(dataRecord.prop4_volume); + $('#divide_type').val(SplitData[dataRecord.divide_type].nl); + // hidden divide_size + $('#divide_parts').val(dataRecord.divide_parts); editFermentable(dataRecord); editHop(dataRecord); editMisc(dataRecord); @@ -1397,7 +1403,7 @@ var amount = dataAdapter.formatNumber(value * 1000, 'f0') + ' ml'; if (rowdata.y_form == 0) // Liquid amount = dataAdapter.formatNumber(value, 'f0') + ' pk'; - else if (rowdata.y_form == 1) // Dry + else if (rowdata.y_form == 1 || rowdata.y_form == 6) // Dry amount = dataAdapter.formatNumber(value * 1000, 'f1') + ' gr'; return '' + amount + ''; } @@ -1415,7 +1421,7 @@ amount = dataAdapter.formatNumber(value * 1000, 'f0') + ' ml'; if (rowdata.y_form == 0) // Liquid amount = dataAdapter.formatNumber(value, 'f0') + ' pk'; - else if (rowdata.y_form == 1) // Dry + else if (rowdata.y_form == 1 || rowdata.y_form == 6) // Dry amount = dataAdapter.formatNumber(value * 1000, 'f1') + ' gr'; return '' + amount + ''; } else { @@ -1436,7 +1442,7 @@ $('#wy_pmpt_amount').html('Pak(ken):'); $('#wy_amount').val(yeastData.y_amount); $('#wy_amount').jqxNumberInput({ decimalDigits: 0 }); - } else if (yeastData.y_form == 1) { + } else if (yeastData.y_form == 1 || yeastData.y_form == 6) { $('#wy_pmpt_amount').html('Gewicht gram:'); $('#wy_amount').val(yeastData.y_amount * 1000); $('#wy_amount').jqxNumberInput({ decimalDigits: 1 }); @@ -2089,7 +2095,7 @@ ncells = Round(egrams * grate, 1), totcells = parseFloat(ncells) + start; - console.log('svol:' + svol + ' start:' + start + ' irate:' + irate + ' egrams:' + egrams + ' grate:' + grate + ' ncells:' + ncells); + //console.log('svol:' + svol + ' start:' + start + ' irate:' + irate + ' egrams:' + egrams + ' grate:' + grate + ' ncells:' + ncells); return { svol: svol, irate: irate, @@ -2348,13 +2354,15 @@ // pitchrate = 1.25; // Wyeast labs. http://www.wyeastlab.com/hb_pitchrates.cfm if (row.y_type == 0) // lager yeast pitchrate *= 2; + if (row.y_type == 6) // Kveik + pitchrate = 0.25; // Who knows. // if (row.y_form == 1) { // dry yeast // } else { // possible starter needed // } } } - needed = pitchrate * volume * plato; + needed = Round(pitchrate * volume * plato, 1); console.log('calcYeast() pitchrate:' + pitchrate + ' start:' + initcells + ' needed:' + needed + ' volume:' + volume); $('#need_cells').val(needed); use_cells = initcells; @@ -2466,7 +2474,7 @@ return; for (i = 0; i < rowscount; i++) { row = $('#yeastGrid').jqxGrid('getrowdata', i); - if (row.y_form == 1) { // Only adjust dry yeast + if (! dataRecord.starter_enable) { // Only adjust without a starter amount = row.y_amount * factor; $('#yeastGrid').jqxGrid('setcellvalue', i, 'y_amount', amount); } @@ -2714,7 +2722,8 @@ pH += deltapH; pd = ProtonDeficit(pH); } - console.log('MashpH() n: ' + n + ' pH: ' + pH); + pH = Round(pH, 2); + //console.log('MashpH() n: ' + n + ' pH: ' + pH); return pH; } @@ -2733,7 +2742,7 @@ function calcWater() { - console.log('calcWater()'); + //console.log('calcWater()'); var liters = 0, calcium = 0, magnesium = 0, @@ -2852,7 +2861,7 @@ if (dataRecord.calc_acid) { TpH = parseFloat(dataRecord.mash_ph); protonDeficit = ProtonDeficit(TpH); - console.log('calc_acid tgt: ' + TpH + ' protonDeficit: ' + protonDeficit); + //console.log('calc_acid tgt: ' + TpH + ' protonDeficit: ' + protonDeficit); if (protonDeficit > 0) { // Add acid $('#wa_base').val(0); setWaterAgent(last_base, 0); @@ -2864,10 +2873,10 @@ if (parseFloat($('#wa_acid_perc').jqxNumberInput('decimal')) == 0) $('#wa_acid_perc').val(AcidPrc); - Acid = Acid * AcidPrc / (parseFloat($('#wa_acid_perc').jqxNumberInput('decimal')) / 100); // ml - console.log('Final ml: ' + Acid); - $('#wa_acid').val(Round(Acid, 2)); - setWaterAgent(AcidTypeData[AT].nl, Round(Acid, 2)); + Acid = Round(Acid * AcidPrc / (parseFloat($('#wa_acid_perc').jqxNumberInput('decimal')) / 100), 2); // ml + //console.log('Final ml: ' + Acid); + $('#wa_acid').val(Acid); + setWaterAgent(AcidTypeData[AT].nl, Acid); bicarbonate = bicarbonate - protonDeficit * frac / liters; total_alkalinity = bicarbonate * 50 / 61; @@ -4368,6 +4377,9 @@ prop3_volume: parseFloat($('#prop3_volume').jqxNumberInput('decimal')), prop4_type: $('#prop4_type').val(), prop4_volume: parseFloat($('#prop4_volume').jqxNumberInput('decimal')), + divide_type: dataRecord.divide_type, + divide_size: dataRecord.divide_size, + divide_parts: dataRecord.divide_parts, fermentables: $('#fermentableGrid').jqxGrid('getrows'), hops: $('#hopGrid').jqxGrid('getrows'), miscs: $('#miscGrid').jqxGrid('getrows'), @@ -4388,7 +4400,8 @@ window.location.href = my_return; else window.location.href = - 'prod_export.php?record=' + my_record + '&return=' + my_return + '&select=' + my_select + '&code=' + dataRecord.code + '&name=' + dataRecord.name; + 'prod_export.php?record=' + my_record + '&return=' + my_return + '&select=' + my_select + '&code=' + dataRecord.code + '&name=' + dataRecord.name + + '&stage=' + dataRecord.stage + '&split=' + dataRecord.divide_type; }, error: function(jqXHR, textStatus, errorThrown) { console.log('saveRecord() ' + textStatus); @@ -4423,6 +4436,11 @@ calcStage(); } }); + $('#divide_parts').jqxTooltip({ content: 'Het aantal gesplitste brouw producten.' }); + $('#divide_parts').jqxNumberInput(Show0dec); + $('#divide_type').jqxTooltip({ content: 'Het splitsing moment in het productie proces.' }); + $('#divide_type').jqxInput({ theme: theme, width: 120, height: 23 }); + $('#notes').jqxTooltip({ content: 'De uitgebreide opmerkingen over dit product.' }); $('#notes').jqxInput({ theme: theme, width: 960, height: 100 }); $('#type').jqxTooltip({ content: 'Het brouw type van dit recept.' }); @@ -5156,8 +5174,11 @@ $('#est_fg2').jqxNumberInput(Show3dec); $('#est_abv2').jqxTooltip({ content: 'Alcohol volume %. Dit wordt automatisch berekend.' }); $('#est_abv2').jqxNumberInput(Smal1dec); + $('#yeast_cells').jqxTooltip({ content: 'Het aantal beschikbare gistcellen zonder eventuele starter.' }); $('#yeast_cells').jqxNumberInput(Show1dec); + $('#need_cells').jqxTooltip({ content: 'Het aantal nodige cellen is afhankelijk van het biertype.' }); $('#need_cells').jqxNumberInput(Show1dec); + $('#plato_cells').jqxTooltip({ content: 'De berekende hoeveelheid gistcellen in miljard per ml per graad Plato. Dit is de zogenaamde pitchrate.' }); $('#plato_cells').jqxNumberInput(Show2dec); $('#popupYeast').jqxWindow({ width: 800, @@ -5239,7 +5260,7 @@ yeastData.y_inventory = datarecord.inventory; if (yeastData.y_form == 0) { $('#wy_pmpt_amount').html('Pak(ken):'); - } else if (yeastData.y_form == 1) { + } else if (yeastData.y_form == 1 || yeastData.y_form == 6) { $('#wy_pmpt_amount').html('Gewicht gram:'); } else { $('#wy_pmpt_amount').html('Volume ml:'); @@ -5286,14 +5307,19 @@ autoDropDownHeight: true }); $('#prop' + i + '_type').hide(); + $('#prop' + i + '_volume').jqxTooltip({ content: 'Het volume van deze starter stap.' }); $('#prop' + i + '_volume').jqxNumberInput(Spin3dec); $('#prop' + i + '_volume').hide(); + $('#prop' + i + '_irate').jqxTooltip({ content: 'Voor de beste gistgroei, houd de injectie factor tussen de 25 en 100 miljoen cellen per ml.' }); $('#prop' + i + '_irate').jqxNumberInput(Show1dec); $('#prop' + i + '_irate').hide(); + $('#prop' + i + '_ncells').jqxTooltip({ content: 'Het aantal miljard nieuwe gistcellen in deze stap.' }); $('#prop' + i + '_ncells').jqxNumberInput(Show1dec); $('#prop' + i + '_ncells').hide(); + $('#prop' + i + '_tcells').jqxTooltip({ content: 'Het totaal aantal miljard gistcellen na deze stap.' }); $('#prop' + i + '_tcells').jqxNumberInput(Show1dec); $('#prop' + i + '_tcells').hide(); + $('#prop' + i + '_growf').jqxTooltip({ content: 'De groeifactor, minstens 1. Ongeroerde starters komen meestal niet boven de 3.' }); $('#prop' + i + '_growf').jqxNumberInput(Show2dec); $('#prop' + i + '_growf').hide(); } @@ -5307,7 +5333,9 @@ height: 23, autoDropDownHeight: true }); + $('#starter_sg').jqxTooltip({ content: 'Het ideale starter SG moet tussen de 1.030 en 1.040 zijn. Optimaal is 1.037.' }); $('#starter_sg').jqxNumberInput(SGopts); + $('#starter_viability').jqxTooltip({ content: 'De gist conditie te berekenen vanaf de productie datum. Vloeibare gist verlist iedere maand ongeveer 20% active cellen.' }); $('#starter_viability').jqxNumberInput(Perc0); $('#starter_try').jqxButton({ template: 'primary', width: '100px', height: 23, theme: theme });