# HG changeset patch # User Michiel Broek # Date 1626288705 -7200 # Node ID f9d266eb0ec66a19769bee0235f2d6eac8f2ebca # Parent 9856238e9217d93229f263abdc9504b52192072a In product editor calculate fermentables before the first IBU calculation. In recipe editor changed to the new water calculations like in the product editor. diff -r 9856238e9217 -r f9d266eb0ec6 www/js/prod_edit.js --- a/www/js/prod_edit.js Sun Jul 11 15:55:44 2021 +0200 +++ b/www/js/prod_edit.js Wed Jul 14 20:51:45 2021 +0200 @@ -725,7 +725,6 @@ $('#wb_ph').val(dataRecord.wb_ph); $('#wa_acid_name').val(dataRecord.wa_acid_name); $('#wa_acid_perc').val(dataRecord.wa_acid_perc); -// $('#wa_base_name').val(dataRecord.wa_base_name); $('#starter_type').val(dataRecord.starter_type); $('#starter_sg').val(dataRecord.starter_sg); $('#starter_viability').val(dataRecord.starter_viability); @@ -919,7 +918,7 @@ calcIBUs(); }); }, - ready: function() { $('#jqxTabs').jqxTabs('next'); }, + ready: function() { calcFermentables(); $('#jqxTabs').jqxTabs('next'); }, columns: [ { text: 'Vergistbaar ingrediënt', datafield: 'f_name', cellsrenderer: function(index, datafield, value, defaultvalue, column, rowdata) { @@ -1144,7 +1143,7 @@ }, { text: 'IBU', datafield: 'ibu', width: 80, align: 'right', cellsrenderer: function(index, datafield, value, defaultvalue, column, rowdata) { - var ibu = toIBU(rowdata.h_useat, rowdata.h_form, preboil_sg, parseFloat($('#batch_size').jqxNumberInput('decimal')), + var ibu = toIBU(rowdata.h_useat, rowdata.h_form, preboil_sg, parseFloat(dataRecord.batch_size), parseFloat(rowdata.h_amount), parseFloat(rowdata.h_time), parseFloat(rowdata.h_alpha), $('#ibu_method').val(), dataRecord.brew_whirlpool9, dataRecord.brew_whirlpool7, dataRecord.brew_whirlpool6); return '' + dataAdapter.formatNumber(ibu, 'f1') + ''; diff -r 9856238e9217 -r f9d266eb0ec6 www/js/rec_edit.js --- a/www/js/rec_edit.js Sun Jul 11 15:55:44 2021 +0200 +++ b/www/js/rec_edit.js Wed Jul 14 20:51:45 2021 +0200 @@ -44,6 +44,7 @@ MMCaSO4 = 172.171, MMCaCl2 = 147.015, MMCaCO3 = 100.087, + MMMgCl2 = 95.211, /* Since 27-06-2021 */ MMMgSO4 = 246.475, MMNaHCO3 = 84.007, MMNa2CO3 = 105.996, @@ -162,8 +163,6 @@ $('#wa_nacl').jqxNumberInput({ spinButtons: rw, readOnly: ro, width: w100 }); $('#mash_ph').jqxNumberInput({ spinButtons: rw, readOnly: ro, width: w100 }); $('#calc_acid').jqxCheckBox({ disabled: ro }); - $('#wa_base_name').jqxDropDownList({ disabled: ro }); - $('#wa_base').jqxNumberInput({ spinButtons: rw, readOnly: ro, width: w100 }); $('#wa_acid_name').jqxDropDownList({ disabled: ro }); $('#wa_acid').jqxNumberInput({ spinButtons: rw, readOnly: ro, width: w100 }); $('#wa_acid_perc').jqxNumberInput({ spinButtons: rw, readOnly: ro, width: w80 }); @@ -502,14 +501,13 @@ case 'CaSO4': $('#wa_caso4').val(row.m_amount * 1000); break; case 'MgSO4': $('#wa_mgso4').val(row.m_amount * 1000); break; case 'NaCl': $('#wa_nacl').val(row.m_amount * 1000); break; + case 'MgCl2': $('#wa_mgcl2').val(row.m_amount * 1000); break; + case 'NaHCO3': $('#wa_nahco3').val(row.m_amount * 1000); break; + case 'CaCO3': $('#wa_caco3').val(row.m_amount * 1000); break; case 'Melkzuur': case 'Zoutzuur': case 'Fosforzuur': case 'Zwavelzuur': $('#wa_acid').val(row.m_amount * 1000); break; - case 'NaHCO3': - case 'Na2CO3': - case 'CaCO3': - case 'Ca(OH)2': $('#wa_base').val(row.m_amount * 1000); break; } } } @@ -914,7 +912,6 @@ $('#wb_ph').val(dataRecord.wb_ph); $('#wa_acid_name').val(dataRecord.wa_acid_name); $('#wa_acid_perc').val(dataRecord.wa_acid_perc); - $('#wa_base_name').val(dataRecord.wa_base_name); editFermentable(dataRecord); editHop(dataRecord); editMisc(dataRecord); @@ -1174,7 +1171,6 @@ selectionmode: 'singlerow', showtoolbar: true, rendertoolbar: function(toolbar) { - //var me = this; var container = $('
'); toolbar.append(container); container.append('
'); @@ -1194,7 +1190,7 @@ dropDownHeight: 500, renderer: function(index, label, value) { var datarecord = hoplist.records[index]; - return datarecord.origin + ' / ' + datarecord.name + ' (' + datarecord.alpha + '% α)'; + return datarecord.origin + ' - ' + datarecord.name + ' / ' + HopFormData[datarecord.form].nl + ' (' + datarecord.alpha + '% α)'; } }); $('#haddrowbutton').on('select', function(event) { @@ -1241,10 +1237,7 @@ calcIBUs(); }); }, - ready: function() { - calcIBUs(); - $('#jqxTabs').jqxTabs('next'); - }, + ready: function() { $('#jqxTabs').jqxTabs('next'); }, columns: [ { text: 'Hop', datafield: 'h_name', cellsrenderer: function(index, datafield, value, defaultvalue, column, rowdata) { @@ -1279,7 +1272,7 @@ }, { text: 'IBU', datafield: 'ibu', width: 80, align: 'right', cellsrenderer: function(index, datafield, value, defaultvalue, column, rowdata) { - var ibu = toIBU(rowdata.h_useat, rowdata.h_form, preboil_sg, parseFloat($('#batch_size').jqxNumberInput('decimal')), + var ibu = toIBU(rowdata.h_useat, rowdata.h_form, preboil_sg, parseFloat(dataRecord.batch_size) /*parseFloat($('#batch_size').jqxNumberInput('decimal'))*/, parseFloat(rowdata.h_amount), parseFloat(rowdata.h_time), parseFloat(rowdata.h_alpha), $('#ibu_method').val(), 0, parseFloat(rowdata.h_time), 0); return '' + dataAdapter.formatNumber(ibu, 'f1') + ''; @@ -1371,50 +1364,39 @@ case 'NaCl': $('#wa_nacl').val(row.m_amount * 1000); break; + case 'MgCl2': + $('#wa_mgcl2').val(row.m_amount * 1000); + break; + case 'NaHCO3': + $('#wa_nahco3').val(row.m_amount * 1000); + break; + case 'CaCO3': + $('#wa_caco3').val(row.m_amount * 1000); + break; case 'Melkzuur': $('#wa_acid_name').val(0); $('#wa_acid').val(row.m_amount * 1000); - $('#wa_acid_perc').val(80); + $('#wa_acid_perc').val(AcidTypeData[0].AcidPrc); // TODO: this ignores changed percentages. last_acid = 'Melkzuur'; break; case 'Zoutzuur': $('#wa_acid_name').val(1); $('#wa_acid').val(row.m_amount * 1000); - $('#wa_acid_perc').val(80); + $('#wa_acid_perc').val(AcidTypeData[1].AcidPrc); last_acid = 'Zoutzuur'; break; case 'Fosforzuur': $('#wa_acid_name').val(2); $('#wa_acid').val(row.m_amount * 1000); - $('#wa_acid_perc').val(80); + $('#wa_acid_perc').val(AcidTypeData[2].AcidPrc); last_acid = 'Fosforzuur'; break; case 'Zwavelzuur': $('#wa_acid_name').val(3); $('#wa_acid').val(row.m_amount * 1000); - $('#wa_acid_perc').val(80); + $('#wa_acid_perc').val(AcidTypeData[3].AcidPrc); last_acid = 'Zwavelzuur'; break; - case 'NaHCO3': - $('#wa_base_name').val(0); - $('#wa_base').val(row.m_amount * 1000); - last_base = 'NaHCO3'; - break; - case 'Na2CO3': - $('#wa_base_name').val(1); - $('#wa_base').val(row.m_amount * 1000); - last_base = 'Na2CO3'; - break; - case 'CaCO3': - $('#wa_base_name').val(2); - $('#wa_base').val(row.m_amount * 1000); - last_base = 'CaCO3'; - break; - case 'Ca(OH)2': - $('#wa_base_name').val(3); - $('#wa_base').val(row.m_amount * 1000); - last_base = 'Ca(OH)2'; - break; } } return data; @@ -2064,13 +2046,14 @@ var wg_bicarbonate = bicarbonate; $('#wg_amount').val(liters); - $('#wg_calcium').val(Math.round(calcium * 10) / 10); - $('#wg_magnesium').val(Math.round(magnesium * 10) / 10); - $('#wg_sodium').val(Math.round(sodium * 10) / 10); - $('#wg_total_alkalinity').val(Math.round(total_alkalinity * 10) / 10); - $('#wg_chloride').val(Math.round(chloride * 10) / 10); - $('#wg_sulfate').val(Math.round(sulfate * 10) / 10); - $('#wg_ph').val(Round(ph, 1)); + $('#wg_calcium').val(Round(calcium, 1)); + $('#wg_magnesium').val(Round(magnesium, 1)); + $('#wg_sodium').val(Round(sodium, 1)); + $('#wg_bicarbonate').val(Round(bicarbonate, 1)); + $('#wg_total_alkalinity').val(Round(total_alkalinity, 1)); + $('#wg_chloride').val(Round(chloride, 1)); + $('#wg_sulfate').val(Round(sulfate, 1)); + $('#wg_ph').val(Round(ph, 2)); var mash_ph = Round(MashpH(), 3); console.log('Distilled water mash pH: ' + mash_ph); @@ -2078,14 +2061,19 @@ /* Calculate Salt additions */ if (liters > 0) { calcium += (parseFloat($('#wa_cacl2').jqxNumberInput('decimal')) * MMCa / MMCaCl2 * 1000 + - parseFloat($('#wa_caso4').jqxNumberInput('decimal')) * MMCa / MMCaSO4 * 1000) / liters; - magnesium += (parseFloat($('#wa_mgso4').jqxNumberInput('decimal')) * MMMg / MMMgSO4 * 1000) / liters; + parseFloat($('#wa_caso4').jqxNumberInput('decimal')) * MMCa / MMCaSO4 * 1000 + + parseFloat($('#wa_caco3').jqxNumberInput('decimal')) * MMCa / MMCaCO3 * 1000) / liters; + magnesium += (parseFloat($('#wa_mgso4').jqxNumberInput('decimal')) * MMMg / MMMgSO4 * 1000 + + parseFloat($('#wa_mgcl2').jqxNumberInput('decimal')) * MMMg / MMMgCl2 * 1000) / liters; sodium += (parseFloat($('#wa_nacl').jqxNumberInput('decimal')) * MMNa / MMNaCl * 1000 + - parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMNa / MMNaHCO3 * 1000) / liters; + parseFloat($('#wa_nahco3').jqxNumberInput('decimal')) * MMNa / MMNaHCO3 * 1000) / liters; sulfate += (parseFloat($('#wa_caso4').jqxNumberInput('decimal')) * MMSO4 / MMCaSO4 * 1000 + parseFloat($('#wa_mgso4').jqxNumberInput('decimal')) * MMSO4 / MMMgSO4 * 1000) / liters; chloride += (2 * parseFloat($('#wa_cacl2').jqxNumberInput('decimal')) * MMCl / MMCaCl2 * 1000 + - parseFloat($('#wa_nacl').jqxNumberInput('decimal')) * MMCl / MMNaCl * 1000) / liters; + parseFloat($('#wa_nacl').jqxNumberInput('decimal')) * MMCl / MMNaCl * 1000 + + parseFloat($('#wa_mgcl2').jqxNumberInput('decimal')) * MMCl / MMMgCl2 * 1000) / liters; + bicarbonate += (parseFloat($('#wa_nahco3').jqxNumberInput('decimal')) * MMHCO3 / MMNaHCO3 * 1000 + + parseFloat($('#wa_caco3').jqxNumberInput('decimal')) / 3 * MMHCO3 / MMCaCO3 * 1000) / liters; } if (dataRecord.wa_acid_name < 0 || dataRecord,wa_acid_name >= AcidTypeData.length) { @@ -2102,15 +2090,7 @@ $('#wa_acid_perc').val(AcidTypeData[AT].AcidPrc); } - if (dataRecord.wa_base_name < 0 || dataRecord.wa_base_name > 3) { - $('#wa_base_name').val(0); - dataRecord.wa_base_name = 0; - } - if (last_base == '') - last_base = BaseTypeData[dataRecord.wa_base_name].nl; - AT = dataRecord.wa_acid_name; - BT = dataRecord.wa_base_name; /* Note that the next calculations do not correct the pH change by the added salts. This pH change is at most 0.1 pH and is a minor difference in Acid amount. */ @@ -2122,8 +2102,6 @@ protonDeficit = ProtonDeficit(TpH); console.log('calc_acid tgt: ' + TpH + ' protonDeficit: ' + protonDeficit); if (protonDeficit > 0) { // Add acid - $('#wa_base').val(0); - setWaterAgent(last_base, 0); frac = CalcFrac(TpH, AcidTypeData[AT].pK1, AcidTypeData[AT].pK2, AcidTypeData[AT].pK3); Acid = protonDeficit / frac; Acid *= AcidTypeData[AT].MolWt; // mg @@ -2136,86 +2114,6 @@ bicarbonate = bicarbonate - protonDeficit * frac / liters; total_alkalinity = bicarbonate * 50 / 61; - } else if (protonDeficit < 0) { //Add base - $('#wa_acid').val(0); - setWaterAgent(last_acid, 0); - r1d = Math.pow(10, (TpH - 6.35)); - r2d = Math.pow(10, (TpH - 10.33)); - f1d = 1 / (1 + r1d + r1d * r2d); - f2d = f1d * r1d; - f3d = f2d * r2d; - switch (BT) { - case 0: - RA = -protonDeficit / (f1d - f3d); //Sodiumbicarbonate, mmol totaal - RA = RA * MMNaHCO3 / 1000; //gram - $('#wa_base').val(Round(RA, 2)); - setWaterAgent('NaHCO3', Round(RA, 2)); - if (liters > 0) { - // Na - RA = (parseFloat($('#wa_nacl').jqxNumberInput('decimal')) * MMNa / MMNaCl * 1000 + - parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMNa / MMNaHCO3 * 1000) / liters; - sodium = wg_sodium + RA; - // HCO3 - RA = (parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMHCO3 / MMNaHCO3 * 1000) / liters; - bicarbonate = wg_bicarbonate + RA; - total_alkalinity = bicarbonate * 50 / 61; - RA = ResidualAlkalinity(wb_total_alkalinity, wb_calcium, wb_magnesium); - } - break; - case 1: - RA = -protonDeficit / (2 * f1d + f2d); // Sodiumcarbonate, mmol totaal - RA = RA * MMNa2CO3 / 1000; //gram - $('#wa_base').val(Round(RA, 2)); - setWaterAgent('Na2CO3', Round(RA, 2)); - if (liters > 0) { - RA = (parseFloat($('#wa_nacl').jqxNumberInput('decimal')) * MMNa / MMNaCl * 1000 + - parseFloat($('#wa_base').jqxNumberInput('decimal')) * 2 * MMNa / MMNa2CO3 * 1000) / liters; - sodium = wg_sodium + RA; - // HCO3 - RA = (parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMHCO3 / MMNa2CO3 * 1000) / liters; - bicarbonate = wg_bicarbonate + RA; - total_alkalinity = bicarbonate * 50 / 61; - RA = ResidualAlkalinity(wb_total_alkalinity, wb_calcium, wb_magnesium); - } - break; - case 2: - RA = -protonDeficit * (f1d - f3d); // Calciumcarbonate, mmol totaal - RA = RA * MMCaCO3 / 1000; //gram - //but only 1/3 is effective, so add 3 times as much - RA = 3 * RA; - $('#wa_base').val(Round(RA, 2)); - setWaterAgent('CaCO3', Round(RA, 2)); - if (liters > 0) { - //Bicarbonate - RA = (parseFloat($('#wa_base').jqxNumberInput('decimal')) / 3 * MMHCO3 / MMCaCO3 * 1000) / liters; - bicarbonate = wg_bicarbonate + RA; - total_alkalinity = bicarbonate * 50 / 61; - //Ca precipitates out as Ca10(PO4)6(OH)2 - RA = (parseFloat($('#wa_cacl2').jqxNumberInput('decimal')) * MMCa / MMCaCl2 * 1000 + - parseFloat($('#wa_caso4').jqxNumberInput('decimal')) * MMCa / MMCaSO4 * 1000 + - parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMCa / MMCaCO3 * 1000) / liters; - calcium = wg_calcium + RA; - RA = ResidualAlkalinity(wb_total_alkalinity, wb_calcium, wb_magnesium); - } - break; - case 3: - RA = -protonDeficit / 19.3; // Calciumhydroxide - $('#wa_base').val(Round(RA, 2)); - setWaterAgent('Ca(OH)2', Round(RA, 2)); - if (liters > 0) { - // Bicarbonate - RA = -protonDeficit / liters; - total_alkalinity = wg_total_alkalinity + RA; - bicarbonate = total_alkalinity * 61 / 50; - // Calcium - RA = (parseFloat($('#wa_cacl2').jqxNumberInput('decimal')) * MMCa / MMCaCl2 * 1000 + - parseFloat($('#wa_caso4').jqxNumberInput('decimal')) * MMCa / MMCaSO4 * 1000 + - parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMCa / MMCaOH2 * 1000) / liters; - calcium = wg_calcium + RA; - RA = ResidualAlkalinity(wb_total_alkalinity, wb_calcium, wb_magnesium); - } - break; - } } ph = TpH; $('#wb_ph').val(Round(ph, 2)); @@ -2224,43 +2122,6 @@ /* Manual calculate pH */ $('.c_mashph').hide(); console.log('calc_acid no'); - if (parseFloat($('#wa_base').jqxNumberInput('decimal')) > 0 && liters > 0) { - /* First add the base salts */ - switch (BT) { - case 0: // Sodiumbicarbonate, Na - RA = (parseFloat($('#wa_nacl').jqxNumberInput('decimal')) * MMNa / MMNaCl * 1000 + - parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMNa / MMNaHCO3 * 1000) / liters; - sodium = wg_sodium + RA; - // HCO3 - RA = (parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMHCO3 / MMNaHCO3 * 1000) / liters; - bicarbonate = wg_bicarbonate + RA; - total_alkalinity = bicarbonate * 50 / 61; - RA = ResidualAlkalinity(wb_total_alkalinity, wb_calcium, wb_magnesium); - break; - case 1: // Sodiumcarbonate - RA = (parseFloat($('#wa_nacl').jqxNumberInput('decimal')) * MMNa / MMNaCl * 1000 + - parseFloat($('#wa_base').jqxNumberInput('decimal')) * 2 * MMNa / MMNa2CO3 * 1000) / liters; - sodium = wg_sodium + RA; - // HCO3 - RA = (parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMHCO3 / MMNa2CO3 * 1000) / liters; - bicarbonate = wg_bicarbonate + RA; - total_alkalinity = bicarbonate * 50 / 61; - RA = ResidualAlkalinity(wb_total_alkalinity, wb_calcium, wb_magnesium); - break; - case 2: // Calciumcarbonate: Bicarbonate - RA = (parseFloat($('#wa_base').jqxNumberInput('decimal')) / 3 * MMHCO3 * 1000 / MMCaCO3) / liters; - bicarbonate = wg_bicarbonate + RA; - total_alkalinity = bicarbonate * 50 / 61; - RA = ResidualAlkalinity(wb_total_alkalinity, wb_calcium, wb_magnesium); - // Ca - RA = (parseFloat($('#wa_cacl2').jqxNumberInput('decimal')) * MMCa * 1000 / MMCaCl2 + - parseFloat($('#wa_caso4').jqxNumberInput('decimal')) * MMCa * 1000 / MMCaSO4 + - parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMCa * 1000 / MMCaCO3) / liters; - calcium = wg_calcium + RA; - break; - } - } - pHa = Round(ph, 3); // Adjusted water pH // Then calculate the new pH with added acids and malts console.log('Mash pH: ' + pHa); @@ -2361,6 +2222,7 @@ $('#wb_sodium').val(Round(sodium, 1)); $('#wb_sulfate').val(Round(sulfate, 1)); $('#wb_chloride').val(Round(chloride, 1)); + $('#wb_bicarbonate').val(Round(bicarbonate, 1)); $('#wb_total_alkalinity').val(Round(total_alkalinity, 1)); if (calcium < 40) { @@ -2370,10 +2232,12 @@ } else { setRangeIndicator('calcium', 'normaal'); } - if (magnesium >= 0 && magnesium <= 30) { + if (magnesium < 5) { + setRangeIndicator('magnesium', 'laag'); + } else if (magnesium > 40) { + setRangeIndicator('magnesium', 'hoog'); + } else { setRangeIndicator('magnesium', 'normaal'); - } else { - setRangeIndicator('magnesium', 'hoog'); } if (sodium <= 150) { setRangeIndicator('sodium', 'normaal'); @@ -2384,18 +2248,23 @@ // John Palmer. So the Cl/SO4 ratio calculation will work. if (chloride <= 50) { setRangeIndicator('chloride', 'laag'); - } else if (chloride <= 100) { + } else if (chloride <= 150) { setRangeIndicator('chloride', 'normaal'); } else { setRangeIndicator('chloride', 'hoog'); } if (sulfate <= 50) { setRangeIndicator('sulfate', 'laag'); - } else if (sulfate <= 350) { + } else if (sulfate <= 400) { setRangeIndicator('sulfate', 'normaal'); } else { setRangeIndicator('sulfate', 'hoog'); } + // (cloride + sulfate) > 500 is too high + if ((chloride + sulfate) > 500) { + setRangeIndicator('chloride', 'hoog'); + setRangeIndicator('sulfate', 'hoog'); + } if (ph < 5.2) { setRangeIndicator('ph', 'laag'); } else if (ph > 5.6) { @@ -2403,6 +2272,11 @@ } else { setRangeIndicator('ph', 'normaal'); } + if (bicarbonate > 250) { + setRangeIndicator('bicarbonate', 'hoog'); + } else { + setRangeIndicator('bicarbonate', 'normaal'); + } calcSparge(); } @@ -2582,29 +2456,37 @@ calcWater(); } }); - $('#wa_base_name').on('select', function(event) { + $('#wa_mgcl2').on('change', function(event) { if (event.args) { - var index = event.args.index; - setWaterAgent(last_base, 0); - last_base = BaseTypeData[index].nl; - setWaterAgent(last_base, parseFloat($('#wa_base').jqxNumberInput('decimal'))); - dataRecord.wa_base_name = index; + setWaterAgent('MgCl2', 0); + setWaterAgent('MgCl2', event.args.value); calcWater(); } }); - $('#wa_base').on('change', function(event) { - var name = BaseTypeData[$('#wa_base_name').val()].nl; - setWaterAgent(name, parseFloat(event.args.value)); - calcWater(); + $('#wa_nahco3').on('change', function(event) { + if (event.args) { + setWaterAgent('NaHCO3', 0); + setWaterAgent('NaHCO3', event.args.value); + calcWater(); + } + }); + $('#wa_caco3').on('change', function(event) { + if (event.args) { + setWaterAgent('CaCO3', 0); + setWaterAgent('CaCO3', event.args.value); + calcWater(); + } }); $('#wa_acid_name').on('select', function(event) { if (event.args) { var index = event.args.index; setWaterAgent(last_acid, 0); last_acid = AcidTypeData[index].nl; + dataRecord.wa_acid_name = index; + dataRecord.wa_acid_perc = AcidTypeData[index].AcidPrc; + $('#wa_acid_perc').val(dataRecord.wa_acid_perc); + calcWater(); setWaterAgent(last_acid, parseFloat($('#wa_acid').jqxNumberInput('decimal'))); - dataRecord.wa_acid_name = index; - calcWater(); } }); $('#wa_acid').on('change', function(event) { @@ -2612,7 +2494,10 @@ setWaterAgent(name, parseFloat(event.args.value)); calcWater(); }); - $('#wa_acid_perc').on('change', function(event) { calcWater(); }); + $('#wa_acid_perc').on('change', function(event) { + dataRecord.wa_acid_perc = parseFloat(event.args.value); + calcWater(); + }); $('#color_method').on('select', function(event) { dataRecord.color_method = event.args.index; @@ -2833,9 +2718,9 @@ wb_magnesium: parseFloat($('#wb_magnesium').jqxNumberInput('decimal')), wb_total_alkalinity: parseFloat($('#wb_total_alkalinity').jqxNumberInput('decimal')), wb_ph: parseFloat($('#wb_ph').jqxNumberInput('decimal')), - wa_acid_name: $('#wa_acid_name').val(), + wa_acid_name: parseInt($('#wa_acid_name').val()), wa_acid_perc: parseFloat($('#wa_acid_perc').jqxNumberInput('decimal')), - wa_base_name: $('#wa_base_name').val(), + wa_base_name: 0, fermentables: $('#fermentableGrid').jqxGrid('getrows'), hops: $('#hopGrid').jqxGrid('getrows'), miscs: $('#miscGrid').jqxGrid('getrows'), @@ -3360,7 +3245,7 @@ dropDownHeight: 500, renderer: function(index, label, value) { var datarecord = hoplist.records[index]; - return datarecord.origin + ' / ' + datarecord.name + ' (' + datarecord.alpha + ' % α)'; + return datarecord.origin + ' - ' + datarecord.name + ' / ' + HopFormData[datarecord.form].nl + ' (' + datarecord.alpha + ' % α)'; } }); $('#wh_select').on('select', function(event) { @@ -3915,7 +3800,7 @@ theme: theme, source: waterlist, displayMember: 'name', - width: 250, + width: 200, height: 27, dropDownWidth: 400, dropDownHeight: 400 @@ -3936,6 +3821,7 @@ $('#w1_magnesium').val(datarecord.magnesium); dataRecord.w1_magnesium = datarecord.magnesium; $('#w1_total_alkalinity').val(datarecord.total_alkalinity); + $('#w1_bicarbonate').val(datarecord.total_alkalinity * 1.22); dataRecord.w1_total_alkalinity = datarecord.total_alkalinity; $('#w1_ph').val(datarecord.ph); dataRecord.w1_ph = datarecord.ph; @@ -3948,6 +3834,7 @@ $('#w1_calcium').jqxNumberInput(Show1wat); $('#w1_magnesium').jqxNumberInput(Show1wat); $('#w1_sodium').jqxNumberInput(Show1wat); + $('#w1_bicarbonate').jqxNumberInput(Show1wat); $('#w1_total_alkalinity').jqxNumberInput(Show1wat); $('#w1_chloride').jqxNumberInput(Show1wat); $('#w1_sulfate').jqxNumberInput(Show1wat); @@ -3958,7 +3845,7 @@ theme: theme, source: waterlist, displayMember: 'name', - width: 250, + width: 200, height: 27, dropDownWidth: 400, dropDownHeight: 400 @@ -3979,6 +3866,7 @@ $('#w2_magnesium').val(datarecord.magnesium); dataRecord.w2_magnesium = datarecord.magnesium; $('#w2_total_alkalinity').val(datarecord.total_alkalinity); + $('#w2_bicarbonate').val(datarecord.total_alkalinity * 1.22); dataRecord.w2_total_alkalinity = datarecord.total_alkalinity; $('#w2_ph').val(datarecord.ph); dataRecord.w2_ph = datarecord.ph; @@ -3993,6 +3881,7 @@ $('#w2_calcium').jqxNumberInput(Show1wat); $('#w2_magnesium').jqxNumberInput(Show1wat); $('#w2_sodium').jqxNumberInput(Show1wat); + $('#w2_bicarbonate').jqxNumberInput(Show1wat); $('#w2_total_alkalinity').jqxNumberInput(Show1wat); $('#w2_chloride').jqxNumberInput(Show1wat); $('#w2_sulfate').jqxNumberInput(Show1wat); @@ -4002,6 +3891,7 @@ $('#wg_calcium').jqxNumberInput(Show1wat); $('#wg_magnesium').jqxNumberInput(Show1wat); $('#wg_sodium').jqxNumberInput(Show1wat); + $('#wg_bicarbonate').jqxNumberInput(Show1wat); $('#wg_total_alkalinity').jqxNumberInput(Show1wat); $('#wg_chloride').jqxNumberInput(Show1wat); $('#wg_sulfate').jqxNumberInput(Show1wat); @@ -4009,14 +3899,16 @@ // Water treated $('#wb_calcium').jqxTooltip({ content: 'De ideale hoeveelheid Calcium is tussen 40 en 150.'}); $('#wb_calcium').jqxNumberInput(Show1wat); - $('#wb_magnesium').jqxTooltip({ content: 'De ideale hoeveelheid Magnesium is lager dan 30.'}); + $('#wb_magnesium').jqxTooltip({ content: 'De ideale hoeveelheid Magnesium is tussen 5 en 40.'}); $('#wb_magnesium').jqxNumberInput(Show1wat); $('#wb_sodium').jqxTooltip({ content: 'De ideale hoeveelheid Natrium is lager dan 150.'}); $('#wb_sodium').jqxNumberInput(Show1wat); - $('#wb_chloride').jqxTooltip({ content: 'De ideale hoeveelheid Chloride is tussen 50 en 100.'}); + $('#wb_chloride').jqxTooltip({ content: 'De ideale hoeveelheid Chloride is tussen 50 en 150. Samen met Sulfaat minder dan 500.'}); $('#wb_chloride').jqxNumberInput(Show1wat); - $('#wb_sulfate').jqxTooltip({ content: 'De ideale hoeveelheid Sulfaat is tussen 50 en 350.'}); + $('#wb_sulfate').jqxTooltip({ content: 'De ideale hoeveelheid Sulfaat is tussen 50 en 400. Samen met Sulfaat minder dan 500.'}); $('#wb_sulfate').jqxNumberInput(Show1wat); + $('#wb_bicarbonate').jqxTooltip({ content: '0 tot 50 lichte bieren, 50 tot 150 amber bieren, 150 tot 250 donkere bieren.'}); + $('#wb_bicarbonate').jqxNumberInput(Show1wat); $('#wb_total_alkalinity').jqxNumberInput(Show1wat); $('#wb_ph').jqxNumberInput(Show2wat); // Water target profile @@ -4025,7 +3917,7 @@ theme: theme, source: waterprofiles, displayMember: 'name', - width: 250, + width: 200, height: 27, dropDownWidth: 400, dropDownHeight: 300 @@ -4040,12 +3932,14 @@ $('#pr_sodium').val(datarecord.sodium); $('#pr_magnesium').val(datarecord.magnesium); $('#pr_total_alkalinity').val(datarecord.total_alkalinity); + $('#pr_bicarbonate').val(datarecord.total_alkalinity * 1.22); calcWater(); } }); $('#pr_calcium').jqxNumberInput(Show1wat); $('#pr_magnesium').jqxNumberInput(Show1wat); $('#pr_sodium').jqxNumberInput(Show1wat); + $('#pr_bicarbonate').jqxNumberInput(Show1wat); $('#pr_total_alkalinity').jqxNumberInput(Show1wat); $('#pr_chloride').jqxNumberInput(Show1wat); $('#pr_sulfate').jqxNumberInput(Show1wat); @@ -4066,24 +3960,17 @@ $('#wa_nacl').jqxNumberInput(Spin1dec); $('#mash_ph').jqxTooltip({ content: 'Maisch pH tussen 5.2 en 5.6. Gebruik 5.2 voor lichte en 5.5 voor donkere bieren.'}); $('#mash_ph').jqxNumberInput(SpinpH); + $('#wa_mgcl2').jqxTooltip({ content: 'Magnesiumchloride'}); + $('#wa_nahco3').jqxTooltip({ content: 'Baksoda'}); + $('#wa_caco3').jqxTooltip({ content: 'Kalk'}); + $('#wa_mgcl2,#wa_nahco3,#wa_caco3').jqxNumberInput(Spin1dec); $('#calc_acid').jqxCheckBox({ theme: theme, width: 120, height: 23 }); - $('#wa_base_name').jqxDropDownList({ - theme: theme, - source: BaseTypeAdapter, - valueMember: 'id', - displayMember: 'nl', - width: 170, - height: 23, - autoDropDownHeight: true - }); - $('#wa_base').jqxNumberInput(Spin2dec); - $('#wa_base').jqxNumberInput({ symbol: ' gr', symbolPosition: 'right' }); $('#wa_acid_name').jqxDropDownList({ theme: theme, source: AcidTypeAdapter, valueMember: 'id', displayMember: 'nl', - width: 170, + width: 130, height: 23, autoDropDownHeight: true }); diff -r 9856238e9217 -r f9d266eb0ec6 www/rec_edit.php --- a/www/rec_edit.php Sun Jul 11 15:55:44 2021 +0200 +++ b/www/rec_edit.php Wed Jul 14 20:51:45 2021 +0200 @@ -207,8 +207,7 @@ - - +
@@ -216,9 +215,10 @@ - + + + - @@ -228,8 +228,9 @@ + + - @@ -239,8 +240,9 @@ + + - @@ -250,8 +252,9 @@ + + - @@ -261,9 +264,10 @@ - + - + + @@ -272,9 +276,10 @@ - + - + + @@ -283,8 +288,9 @@ + + - @@ -293,6 +299,11 @@ + + + + + @@ -312,31 +323,36 @@ - - + + - - + - - + + + + - - + + + + - - + + + +
Water overzicht
Water profiel Volume CaMgMgHCO3CaCO3 NaCaCO3 Cl SO4 pH
BrouwzoutenMaischwater pHSpoelwater
Calciumchloride (CaCl2) gr:
Epsom zout (MgSO4) gr:
Ontzuren met:
Aanzuren met:
Spoelwater bron:
Keukenzout (NaCl) gr:
Aanzuren met:
Spoelwater pH:
Magnesiumchloride (MgCl2) gr:
Aanzuren met:
Baksoda (NaHCO3) gr:
Sterkte %:
Kalk (CaCO3) gr:
Benodigd: