# HG changeset patch # User Michiel Broek # Date 1659636292 -7200 # Node ID 1f2ca835fe9d21ad71f154385b28b772d86f6993 # Parent 8b30068497a94c47f9cb5ffbc90884baae6da26a The last part to make a vieuwer from the recipe editor. diff -r 8b30068497a9 -r 1f2ca835fe9d www/css/style.css --- a/www/css/style.css Wed Aug 03 20:58:18 2022 +0200 +++ b/www/css/style.css Thu Aug 04 20:04:52 2022 +0200 @@ -23,7 +23,7 @@ #water_totals { - width: 960px; + width: 1160px; background: #353536; margin-top: 10px; margin-bottom: 10px; diff -r 8b30068497a9 -r 1f2ca835fe9d www/js/global.js --- a/www/js/global.js Wed Aug 03 20:58:18 2022 +0200 +++ b/www/js/global.js Thu Aug 04 20:04:52 2022 +0200 @@ -1221,3 +1221,24 @@ return 0; } + +function Hardness(calcium, magnesium) { + return 2.497 * calcium + 4.164 * magnesium; +} + + +function Bicarbonate(total_alkalinity, ph) { + return (total_alkalinity / (1 + 2*Math.pow(10, ph - 10.33)) * MMHCO3 /*61.016*/ / (MMCaCO3 / 2) /*50.043*/); +} + + +function RA_CaCO3(bicarbonate, carbonate, calcium, magnesium) { + return ((bicarbonate / MMHCO3) + (2*carbonate / MMCO3) - (2*calcium / MMCa)/3.5 - (2*magnesium / MMMg)/7) * 50; +} + + +function ResidualAlkalinity(total_alkalinity, calcium, magnesium) { + return total_alkalinity - (calcium / 1.4 + magnesium / 1.7); +} + + diff -r 8b30068497a9 -r 1f2ca835fe9d www/js/rec_edit.js --- a/www/js/rec_edit.js Wed Aug 03 20:58:18 2022 +0200 +++ b/www/js/rec_edit.js Thu Aug 04 20:04:52 2022 +0200 @@ -426,12 +426,8 @@ function GetOptSO4Clratio() { - if (parseFloat($('#pr_sulfate').jqxNumberInput('decimal')) > 0 && parseFloat($('#pr_chloride').jqxNumberInput('decimal'))) { - return (parseFloat($('#pr_sulfate').jqxNumberInput('decimal')) / parseFloat($('#pr_chloride').jqxNumberInput('decimal'))); - } else { - var BUGU = GetBUGU(); - return (-1.2 * BUGU + 1.4); - } + var BUGU = GetBUGU(); + return (-1.2 * BUGU + 1.4); } @@ -727,10 +723,10 @@ $('#st_carb_max').val(dataRecord.st_carb_max); $('#mash_name').val(dataRecord.mash_name); $('#mash_ph').val(dataRecord.mash_ph); -// $('#sparge_temp').val(dataRecord.sparge_temp); + // Hidden record sparge_temp $('#sparge_ph').val(dataRecord.sparge_ph); -// $('#sparge_volume').val(dataRecord.sparge_volume); - $('#sparge_source').val(dataRecord.sparge_source); + $('#sw_amount').val(dataRecord.sparge_volume); + // Hidden record sparge_source $('#sparge_acid_type').val(AcidTypeData[dataRecord.sparge_acid_type].nl); $('#sparge_acid_perc').val(dataRecord.sparge_acid_perc); $('#sparge_acid_amount').val(dataRecord.sparge_acid_amount * 1000); @@ -744,6 +740,7 @@ $('#w1_magnesium').val(dataRecord.w1_magnesium); $('#w1_total_alkalinity').val(dataRecord.w1_total_alkalinity); $('#w1_ph').val(dataRecord.w1_ph); + $('#w1_bicarbonate').val(Bicarbonate(dataRecord.w1_total_alkalinity, dataRecord.w1_ph)); $('#w1_cost').val(dataRecord.w1_cost); $('#w2_name').val(dataRecord.w2_name); $('#w2_amount').val(dataRecord.w2_amount); @@ -754,6 +751,7 @@ $('#w2_magnesium').val(dataRecord.w2_magnesium); $('#w2_total_alkalinity').val(dataRecord.w2_total_alkalinity); $('#w2_ph').val(dataRecord.w2_ph); + $('#w2_bicarbonate').val(Bicarbonate(dataRecord.w2_total_alkalinity, dataRecord.w2_ph)); $('#w2_cost').val(dataRecord.w2_cost); $('#wg_amount').val(dataRecord.wg_amount); $('#wg_calcium').val(dataRecord.wg_calcium); @@ -960,9 +958,6 @@ { name: 'm_inventory', type: 'float' }, { name: 'm_avail', type: 'int' } ], -// addrow: function(rowid, rowdata, position, commit) { commit(true); }, -// deleterow: function(rowid, commit) { commit(true); }, -// updaterow: function(rowid, rowdata, commit) { commit(true); } }, miscAdapter = new $.jqx.dataAdapter(miscSource, { beforeLoadComplete: function(records) { @@ -1214,8 +1209,6 @@ { name: 'ramp_time', type: 'float' }, { name: 'end_temp', type: 'float' } ], -// addrow: function(rowid, rowdata, position, commit) { commit(true); }, -// deleterow: function(rowid, commit) { commit(true); } }, mashAdapter = new $.jqx.dataAdapter(mashSource, { beforeLoadComplete: function(records) { @@ -1374,6 +1367,9 @@ return; } + $('#w1_hardness').val(Hardness(dataRecord.w1_calcium, dataRecord.w1_magnesium)); + $('#w1_ra').val(ResidualAlkalinity(dataRecord.w1_total_alkalinity, dataRecord.w1_calcium, dataRecord.w1_magnesium)); + // If there is a dillute water source, mix the waters. if (dataRecord.w2_name != '') { liters = dataRecord.w1_amount + dataRecord.w2_amount; @@ -1384,6 +1380,8 @@ sulfate = mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_sulfate, dataRecord.w2_sulfate); total_alkalinity = mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_total_alkalinity, dataRecord.w2_total_alkalinity); ph = -Math.log10(((Math.pow(10, -dataRecord.w1_ph) * dataRecord.w1_amount) + (Math.pow(10, -dataRecord.w2_ph) * dataRecord.w2_amount)) / liters); + $('#w2_hardness').val(Hardness(dataRecord.w2_calcium, dataRecord.w2_magnesium)); + $('#w2_ra').val(ResidualAlkalinity(dataRecord.w2_total_alkalinity, dataRecord.w2_calcium, dataRecord.w2_magnesium)); } else { liters = dataRecord.w1_amount; calcium = dataRecord.w1_calcium; @@ -1394,7 +1392,7 @@ total_alkalinity = dataRecord.w1_total_alkalinity; ph = dataRecord.w1_ph; } - var bicarbonate = total_alkalinity * 1.22; + var bicarbonate = Bicarbonate(total_alkalinity, ph); /* Save mixed water ions for later */ var wg_calcium = calcium; @@ -1404,6 +1402,9 @@ var wg_sulfate = sulfate; var wg_bicarbonate = bicarbonate; + dataRecord.wg_amount = liters; + dataRecord.wg_ph = ph; + $('#wg_amount').val(liters); $('#wg_calcium').val(Round(calcium, 1)); $('#wg_magnesium').val(Round(magnesium, 1)); @@ -1413,6 +1414,8 @@ $('#wg_chloride').val(Round(chloride, 1)); $('#wg_sulfate').val(Round(sulfate, 1)); $('#wg_ph').val(Round(ph, 2)); + $('#wg_hardness').val(Round(Hardness(calcium, magnesium), 1)); + $('#wg_ra').val(Round(ResidualAlkalinity(total_alkalinity, calcium, magnesium), 1)); var mash_ph = Round(MashpH(), 3); console.log('Distilled water mash pH: ' + mash_ph); @@ -1465,8 +1468,10 @@ Acid = protonDeficit / frac; Acid *= AcidTypeData[AT].MolWt; // mg Acidmg = Acid; - Acid = Acid / AcidTypeData[AT].AcidSG; // ml - Acid = Round(Acid / (parseFloat(dataRecord.wa_acid_perc) / 100), 2); // ml + var RealSG = Round(((AcidTypeData[AT].AcidSG - 1000) * (parseFloat(dataRecord.wa_acid_perc) / 100)) + 1000, 2); + Acid /= RealSG; + Acid /= AcidTypeData[AT].AcidPrc / 100; + Acid = Round(Acid, 2); console.log('Mash auto Acid final ml: ' + Acid); $('#wa_acid').val(Acid); setWaterAgent(AcidTypeData[AT].nl, Acid); @@ -1475,6 +1480,7 @@ total_alkalinity = bicarbonate * 50 / 61; } ph = TpH; + dataRecord.wb_ph = ph; $('#wb_ph').val(Round(ph, 2)); $('#est_mash_ph').val(Round(ph, 2)); } else { // Manual @@ -1509,8 +1515,7 @@ pd = ProtonDeficit(pHa); } //console.log('n: ' + n + ' pd: ' + pd + ' protonDeficit: ' + protonDeficit + ' frac: ' + frac + ' pHa: ' + pHa); - RA = wg_bicarbonate - protonDeficit * frac / liters; - bicarbonate = RA; + bicarbonate = wg_bicarbonate - protonDeficit * frac / liters; total_alkalinity = RA * 50 / 61; ph = pHa; $('#wb_ph').val(Round(ph, 2)); @@ -1583,6 +1588,8 @@ $('#wb_chloride').val(Round(chloride, 1)); $('#wb_bicarbonate').val(Round(bicarbonate, 1)); $('#wb_total_alkalinity').val(Round(total_alkalinity, 1)); + $('#wb_hardness').val(Hardness(calcium, magnesium)); + $('#wb_ra').val(ResidualAlkalinity(total_alkalinity, calcium, magnesium)); if (calcium < 40) { setRangeIndicator('calcium', 'laag'); @@ -1643,58 +1650,66 @@ function calcSparge() { /* Based on the work of ajDeLange. */ + var ws_calcium, ws_magnesium, ws_total_alkalinity, ws_sodium, ws_chloride; + var ws_sulfate, ws_ph, ws_hardness, ws_ra; var TargetpH = dataRecord.sparge_ph; - var Source_pH = dataRecord.w1_ph; - var Source_alkalinity = dataRecord.w1_total_alkalinity; + var Source_pH = 7.0; + // Select watersource or fallback to the first source. - if (dataRecord.sparge_source == 1) { // Source 2 - if (dataRecord.w2_ph > 0.0) { + if ((dataRecord.sparge_source == 1) && (dataRecord.w2_ph > 0.0)) { // Source 2 + ws_calcium = dataRecord.w2_calcium; + ws_magnesium = dataRecord.w2_magnesium; + ws_total_alkalinity = dataRecord.w2_total_alkalinity; + ws_sodium = dataRecord.w2_sodium; + ws_chloride = dataRecord.w2_chloride; + ws_sulfate = dataRecord.w2_sulfate; Source_pH = dataRecord.w2_ph; - Source_alkalinity = dataRecord.w2_total_alkalinity; - } else { - dataRecord.sparge_source = 0; // Source 1 - $('#sparge_source').val(0); - } - } else if (dataRecord.sparge_source == 2) { // Mixed - if (dataRecord.w2_ph > 0.0) { - Source_pH = parseFloat($('#wg_ph').jqxNumberInput('decimal')); - Source_alkalinity = parseFloat($('#wg_total_alkalinity').jqxNumberInput('decimal')); - } else { - dataRecord.sparge_source = 0; - $('#sparge_source').val(0); - } + $('#w2_button').jqxRadioButton({ checked: true }); + } else if ((dataRecord.sparge_source == 2) && (dataRecord.w2_ph > 0.0)) { // Mixed + ws_calcium = dataRecord.wg_calcium; + ws_magnesium = dataRecord.wg_magnesium; + ws_total_alkalinity = dataRecord.wg_total_alkalinity; + ws_sodium = dataRecord.wg_sodium; + ws_chloride = dataRecord.wg_chloride; + ws_sulfate = dataRecord.wg_sulfate; + Source_pH = dataRecord.wg_ph; + $('#wg_button').jqxRadioButton({ checked: true }); + } else { + ws_calcium = dataRecord.w1_calcium; + ws_magnesium = dataRecord.w1_magnesium; + ws_total_alkalinity = dataRecord.w1_total_alkalinity; + ws_sodium = dataRecord.w1_sodium; + ws_chloride = dataRecord.w1_chloride; + ws_sulfate = dataRecord.w1_sulfate; + Source_pH = dataRecord.w1_ph; + $('#w1_button').jqxRadioButton({ checked: true }); } - // Step 1: Compute the mole fractions of carbonic (f1o), bicarbonate (f2o) and carbonate(f3o) at the water pH - var r1 = Math.pow(10, Source_pH - 6.35); - var r2 = Math.pow(10, Source_pH - 10.33); - var d = 1 + r1 + r1 * r2; - var f1 = 1 / d; - var f3 = r1 * r2 / d; - - //Step 2. Compute the mole fractions at pH = 4.3 (the pH which defines alkalinity) - var r143 = Math.pow(10, 4.3 - 6.35); - var r243 = Math.pow(10, 4.3 - 10.33); - var d43 = 1 + r143 + r143 * r243; - var f143 = 1 / d43; - var f343 = r143 * r243 / d43; + if (dataRecord.sparge_volume > 0) { + ws_calcium += (parseFloat($('#ss_cacl2').jqxNumberInput('decimal')) * MMCa / MMCaCl2 * 1000 + + parseFloat($('#ss_caso4').jqxNumberInput('decimal')) * MMCa / MMCaSO4 * 1000) / dataRecord.sparge_volume; + ws_magnesium += (parseFloat($('#ss_mgso4').jqxNumberInput('decimal')) * MMMg / MMMgSO4 * 1000 + + parseFloat($('#ss_mgcl2').jqxNumberInput('decimal')) * MMMg / MMMgCl2 * 1000) / dataRecord.sparge_volume; + ws_sodium += (parseFloat($('#ss_nacl').jqxNumberInput('decimal')) * MMNa / MMNaCl * 1000) / dataRecord.sparge_volume; + ws_sulfate += (parseFloat($('#ss_caso4').jqxNumberInput('decimal')) * MMSO4 / MMCaSO4 * 1000 + + parseFloat($('#ss_mgso4').jqxNumberInput('decimal')) * MMSO4 / MMMgSO4 * 1000) / dataRecord.sparge_volume; + ws_chloride += (2 * parseFloat($('#ss_cacl2').jqxNumberInput('decimal')) * MMCl / MMCaCl2 * 1000 + + parseFloat($('#ss_nacl').jqxNumberInput('decimal')) * MMCl / MMNaCl * 1000 + + parseFloat($('#ss_mgcl2').jqxNumberInput('decimal')) * MMCl / MMMgCl2 * 1000) / dataRecord.sparge_volume; + } - //Step 4. Solve - //var Ct = (alkalinity - 1000 * (Math.pow(10, -4.3) - Math.pow(10, -Source_pH))) / ((f143 - f1) + (f3 - f343)); - var Ct = Source_alkalinity / 50 / ((f143 - f1) + (f3 - f343)); + /* Show the spargewate with salt additions */ + $('#sw_calcium').val(Round(ws_calcium, 1)); + $('#sw_magnesium').val(Round(ws_magnesium, 1)); + $('#sw_sodium').val(Round(ws_sodium, 1)); + $('#sw_sulfate').val(Round(ws_sulfate, 1)); + $('#sw_chloride').val(Round(ws_chloride, 1)); + $('#sw_bicarbonate').val(Round(Bicarbonate(ws_total_alkalinity, Source_pH), 1)); + $('#sw_total_alkalinity').val(Round(ws_total_alkalinity, 1)); + $('#sw_ph').val(dataRecord.sparge_ph); + $('#sw_hardness').val(Hardness(ws_calcium, ws_magnesium)); + $('#sw_ra').val(ResidualAlkalinity(ws_total_alkalinity, ws_calcium, ws_magnesium)); - //Step 5. Compute mole fractions at desired pH - var r1g = Math.pow(10, TargetpH - 6.35); - var r2g = Math.pow(10, TargetpH - 10.33); - var dg = 1 + r1g + r1g * r2g; - var f1g = 1 / dg; - var f3g = r1g * r2g / dg; - - //Step 6. Use these to compute the milliequivalents acid required per liter (mEq/L) - var Acid = Ct * ((f1g - f1) + (f3 - f3g)) + Math.pow(10, -TargetpH) - Math.pow(10, -Source_pH); //mEq/l - Acid += 0.01; // Add acid that would be required for distilled water. - - //Step 8. Get the acid data. AT = dataRecord.sparge_acid_type; if (AT < 0 || AT >= AcidTypeData.length) { AT = 0; @@ -1703,20 +1718,62 @@ dataRecord.sparge_acid_perc = AcidTypeData[0].AcidPrc; $('#sparge_acid_perc').val(dataRecord.sparge_acid_perc); } - var fract = CalcFrac(TargetpH, AcidTypeData[AT].pK1, AcidTypeData[AT].pK2, AcidTypeData[AT].pK3); - //Step 9. Now divide the mEq required by the "fraction". This is the required number of moles of acid. - Acid /= fract; + /* + * Auto calculate the required acid + */ + if (dataRecord.calc_acid) { + // Step 1: Compute the mole fractions of carbonic (f1o), bicarbonate (f2o) and carbonate(f3o) at the water pH + var r1 = Math.pow(10, Source_pH - 6.35); + var r2 = Math.pow(10, Source_pH - 10.33); + var d = 1 + r1 + r1 * r2; + var f1 = 1 / d; + var f3 = r1 * r2 / d; + + //Step 2. Compute the mole fractions at pH = 4.3 (the pH which defines alkalinity) + var r143 = Math.pow(10, 4.3 - 6.35); + var r243 = Math.pow(10, 4.3 - 10.33); + var d43 = 1 + r143 + r143 * r243; + var f143 = 1 / d43; + var f343 = r143 * r243 / d43; + + //Step 4. Solve + var Ct = ws_total_alkalinity / 50 / ((f143 - f1) + (f3 - f343)); - //Step 10. Multiply by molecular weight of the acid - Acid *= AcidTypeData[AT].MolWt; //mg + //Step 5. Compute mole fractions at desired pH + var r1g = Math.pow(10, TargetpH - 6.35); + var r2g = Math.pow(10, TargetpH - 10.33); + var dg = 1 + r1g + r1g * r2g; + var f1g = 1 / dg; + var f3g = r1g * r2g / dg; + + //Step 6. Use these to compute the milliequivalents acid required per liter (mEq/L) + var Acid = Ct * ((f1g - f1) + (f3 - f3g)) + Math.pow(10, -TargetpH) - Math.pow(10, -Source_pH); //mEq/l + Acid += 0.01; // Add acid that would be required for distilled water. + + //Step 8. Get the acid data. + var fract = CalcFrac(TargetpH, AcidTypeData[AT].pK1, AcidTypeData[AT].pK2, AcidTypeData[AT].pK3); + + //Step 9. Now divide the mEq required by the "fraction". This is the required number of moles of acid. + Acid /= fract; - //Step 11. Divide by Specific Gravity and Percentage to get the final ml. - Acid = Acid / AcidTypeData[AT].AcidSG / (dataRecord.sparge_acid_perc / 100); //ml - Acid *= dataRecord.sparge_volume; //ml acid total - Acid = Round(Acid, 2); - dataRecord.sparge_acid_amount = Acid / 1000; - $('#sparge_acid_amount').val(Acid); + //Step 10. Multiply by molecular weight of the acid + Acid *= AcidTypeData[AT].MolWt; //mg + + //Step 11. Divide by Specific Gravity and Percentage to get the final ml. + var RealSG = Round(((AcidTypeData[AT].AcidSG - 1000) * (dataRecord.sparge_acid_perc / 100)) + 1000, 2); + Acid = Acid / RealSG; //ml + Acid *= dataRecord.sparge_volume; //ml acid total at 100% + Acid /= AcidTypeData[AT].AcidPrc / 100; //ml acid at supplied strength + Acid = Round(Acid, 2); + dataRecord.sparge_acid_amount = Acid / 1000; + $('#sparge_acid_amount').val(Acid); + } + + // Finally calculate the estimate preboil pH + var ph = -Math.log10(((Math.pow(10, -dataRecord.wb_ph) * dataRecord.wg_amount) + (Math.pow(10, -dataRecord.sparge_ph) * dataRecord.sparge_volume)) / + (dataRecord.wg_amount + dataRecord.sparge_volume)); + $('#preboil_ph').val(ph); } function calcInit() { @@ -1960,43 +2017,11 @@ // Tab 7, Water $('#tgt_bu').jqxNumberInput(Show2wat); $('#tgt_so4_cl,#got_so4_cl').jqxNumberInput(Show1wat); + $('#preboil_ph').jqxNumberInput(Show2wat); // Water source 1 - $('#w1_name').jqxDropDownList({ - placeHolder: 'Kies hoofd water:', - theme: theme, - source: waterlist, - displayMember: 'name', - width: 200, - height: 27, - dropDownWidth: 400, - dropDownHeight: 400 - }); - $('#w1_name').on('select', function(event) { - if (event.args) { - var datarecord, index = event.args.index; - datarecord = waterlist.records[index]; - dataRecord.w1_name = datarecord.name; - $('#w1_calcium').val(datarecord.calcium); - dataRecord.w1_calcium = datarecord.calcium; - $('#w1_sulfate').val(datarecord.sulfate); - dataRecord.w1_sulfate = datarecord.sulfate; - $('#w1_chloride').val(datarecord.chloride); - dataRecord.w1_chloride = datarecord.chloride; - $('#w1_sodium').val(datarecord.sodium); - dataRecord.w1_sodium = datarecord.sodium; - $('#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; - $('#w1_cost').val(datarecord.cost); - dataRecord.w1_cost = datarecord.cost; - calcWater(); - } - }); + $('#w1_name').jqxInput({ theme: theme, width: 200, height: 23 }); + $('#w1_button').jqxRadioButton({ theme: theme, width: 50, height: 23, disabled: true }); $('#w1_amount').jqxNumberInput(Show1wat); $('#w1_calcium').jqxNumberInput(Show1wat); $('#w1_magnesium').jqxNumberInput(Show1wat); @@ -2006,42 +2031,11 @@ $('#w1_chloride').jqxNumberInput(Show1wat); $('#w1_sulfate').jqxNumberInput(Show1wat); $('#w1_ph').jqxNumberInput(Show2wat); + $('#w1_hardness').jqxNumberInput(Show1wat); + $('#w1_ra').jqxNumberInput(Show1wat); // Water source 2 - $('#w2_name').jqxDropDownList({ - placeHolder: 'Kies meng water:', - theme: theme, - source: waterlist, - displayMember: 'name', - width: 200, - height: 27, - dropDownWidth: 400, - dropDownHeight: 400 - }); - $('#w2_name').on('select', function(event) { - if (event.args) { - var datarecord, index = event.args.index; - datarecord = waterlist.records[index]; - dataRecord.w2_name = datarecord.name; - $('#w2_calcium').val(datarecord.calcium); - dataRecord.w2_calcium = datarecord.calcium; - $('#w2_sulfate').val(datarecord.sulfate); - dataRecord.w2_sulfate = datarecord.sulfate; - $('#w2_chloride').val(datarecord.chloride); - dataRecord.w2_chloride = datarecord.chloride; - $('#w2_sodium').val(datarecord.sodium); - dataRecord.w2_sodium = datarecord.sodium; - $('#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; - $('#w2_cost').val(datarecord.cost); - dataRecord.w2_cost = datarecord.cost; - calcWater(); - } - }); + $('#w2_name').jqxInput({ theme: theme, width: 200, height: 23 }); + $('#w2_button').jqxRadioButton({ theme: theme, width: 50, height: 23, disabled: true }); $('#w2_amount').jqxNumberInput(Show1wat); $('#w2_calcium').jqxNumberInput(Show1wat); $('#w2_magnesium').jqxNumberInput(Show1wat); @@ -2051,7 +2045,10 @@ $('#w2_chloride').jqxNumberInput(Show1wat); $('#w2_sulfate').jqxNumberInput(Show1wat); $('#w2_ph').jqxNumberInput(Show2wat); + $('#w2_hardness').jqxNumberInput(Show1wat); + $('#w2_ra').jqxNumberInput(Show1wat); // Water mixed + $('#wg_button').jqxRadioButton({ theme: theme, width: 50, height: 23, disabled: true }); $('#wg_amount').jqxNumberInput(Show1wat); $('#wg_calcium').jqxNumberInput(Show1wat); $('#wg_magnesium').jqxNumberInput(Show1wat); @@ -2061,6 +2058,8 @@ $('#wg_chloride').jqxNumberInput(Show1wat); $('#wg_sulfate').jqxNumberInput(Show1wat); $('#wg_ph').jqxNumberInput(Show2wat); + $('#wg_hardness').jqxNumberInput(Show1wat); + $('#wg_ra').jqxNumberInput(Show1wat); // Water treated $('#wb_calcium').jqxTooltip({ content: 'De ideale hoeveelheid Calcium is tussen 40 en 150.'}); $('#wb_calcium').jqxNumberInput(Show1wat); @@ -2076,68 +2075,50 @@ $('#wb_bicarbonate').jqxNumberInput(Show1wat); $('#wb_total_alkalinity').jqxNumberInput(Show1wat); $('#wb_ph').jqxNumberInput(Show2wat); - // Water target profile - $('#pr_name').jqxDropDownList({ - placeHolder: 'Kies doel profiel:', - theme: theme, - source: waterprofiles, - displayMember: 'name', - width: 200, - height: 27, - dropDownWidth: 400, - dropDownHeight: 300 - }); - $('#pr_name').on('select', function(event) { - if (event.args) { - var datarecord, index = event.args.index; - datarecord = waterprofiles.records[index]; - $('#pr_calcium').val(datarecord.calcium); - $('#pr_sulfate').val(datarecord.sulfate); - $('#pr_chloride').val(datarecord.chloride); - $('#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); + $('#wb_hardness').jqxNumberInput(Show1wat); + $('#wb_ra').jqxNumberInput(Show1wat); + // Sparge water + $('#sw_amount').jqxNumberInput(Show1wat); + $('#sw_calcium').jqxNumberInput(Show1wat); + $('#sw_magnesium').jqxNumberInput(Show1wat); + $('#sw_sodium').jqxNumberInput(Show1wat); + $('#sw_bicarbonate').jqxNumberInput(Show1wat); + $('#sw_total_alkalinity').jqxNumberInput(Show1wat); + $('#sw_chloride').jqxNumberInput(Show1wat); + $('#sw_sulfate').jqxNumberInput(Show1wat); + $('#sw_ph').jqxNumberInput(Show2wat); + $('#sw_hardness').jqxNumberInput(Show1wat); + $('#sw_ra').jqxNumberInput(Show1wat); // Water agents $('#wa_cacl2').jqxTooltip({ content: 'Voor het maken van een ander waterprofiel. Voegt calcium en chloride toe. Voor het verbeteren van zoetere bieren.'}); - $('#wa_cacl2').jqxNumberInput(Show1wat); - $('#ss_cacl2').jqxNumberInput(Show1wat); + $('#wa_cacl2').jqxNumberInput(Show2wat); + $('#ss_cacl2').jqxNumberInput(Show2wat); $('#wa_caso4').jqxTooltip({ content: 'Gips. Voor het maken van een ander waterprofiel. Voegt calcium en sulfaat toe. Voor het verbeteren van bittere bieren.' }); - $('#wa_caso4').jqxNumberInput(Show1wat); - $('#ss_caso4').jqxNumberInput(Show1wat); + $('#wa_caso4').jqxNumberInput(Show2wat); + $('#ss_caso4').jqxNumberInput(Show2wat); $('#wa_mgso4').jqxTooltip({ content: 'Epsom zout. Voor het maken van een ander waterprofiel. Voegt magnesium en sulfaat toe. Gebruik spaarzaam!'}); - $('#wa_mgso4').jqxNumberInput(Show1wat); - $('#ss_mgso4').jqxNumberInput(Show1wat); + $('#wa_mgso4').jqxNumberInput(Show2wat); + $('#ss_mgso4').jqxNumberInput(Show2wat); $('#wa_nacl').jqxTooltip({ content: 'Keukenzout. Voor het maken van een ander waterprofiel. Voegt natrium en chloride toe. ' + 'Voor het accentueren van zoetheid. Bij hoge dosering wordt het bier ziltig.' }); - $('#wa_nacl').jqxNumberInput(Show1wat); - $('#ss_nacl').jqxNumberInput(Show1wat); + $('#wa_nacl').jqxNumberInput(Show2wat); + $('#ss_nacl').jqxNumberInput(Show2wat); $('#wa_mgcl2').jqxTooltip({ content: 'Magnesiumchloride'}); - $('#wa_mgcl2').jqxNumberInput(Show1wat); - $('#ss_mgcl2').jqxNumberInput(Show1wat); + $('#wa_mgcl2').jqxNumberInput(Show2wat); + $('#ss_mgcl2').jqxNumberInput(Show2wat); $('#wa_nahco3').jqxTooltip({ content: 'Baksoda'}); $('#wa_caco3').jqxTooltip({ content: 'Kalk'}); - $('#wa_nahco3,#wa_caco3').jqxNumberInput(Show1wat); + $('#wa_nahco3,#wa_caco3').jqxNumberInput(Show2wat); $('#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(Show2dec); @@ -2151,17 +2132,7 @@ $('#wa_acid_perc').jqxNumberInput({ symbol: '%', symbolPosition: 'right' }); // Sparge water -// $('#sparge_volume').jqxNumberInput(Spin1dec); $('#sparge_ph').jqxNumberInput(Show2dec); - $('#sparge_source').jqxDropDownList({ - theme: theme, - source: SpargeSourceAdapter, - valueMember: 'id', - displayMember: 'nl', - width: 110, - height: 23, - autoDropDownHeight: true - }); $('#sparge_acid_amount').jqxNumberInput(Show2dec); $('#sparge_acid_amount').jqxNumberInput({ symbol: ' ml', symbolPosition: 'right' }); $('#sparge_acid_type').jqxInput({ theme: theme, width: 130, height: 23 }); diff -r 8b30068497a9 -r 1f2ca835fe9d www/rec_edit.php --- a/www/rec_edit.php Wed Aug 03 20:58:18 2022 +0200 +++ b/www/rec_edit.php Thu Aug 04 20:04:52 2022 +0200 @@ -194,7 +194,8 @@ - + + @@ -203,10 +204,13 @@ - + + + - + + @@ -215,10 +219,13 @@ - + + + - + + @@ -227,10 +234,13 @@ - + + + + @@ -239,10 +249,13 @@ - + + + - + + @@ -251,11 +264,14 @@ - + + + - - + + + @@ -263,19 +279,24 @@ - + + + - - - - - - - - - + + + + + + + + + + + +
Water overzicht
Water profielWater profielSpoel Volume Ca MgNa Cl SO4pHpHHardheidRA
Gemengd water:
Behandeld water:Behandeld maisch water:
Resultaat:
Resultaat:
Behandeld spoelwater:
@@ -322,8 +343,10 @@ NaCl gr:
-
- +
+ Voor koken pH: +
+ Zuur hoeveelheid:
@@ -340,8 +363,7 @@ NaHCO3 gr:
- - + Aanzuren met:
@@ -349,10 +371,7 @@ CaCO3 gr:
- - Spoelwater bron: -
- + Zuur hoeveelheid:
@@ -364,6 +383,5 @@