The last part to make a vieuwer from the recipe editor.

Thu, 04 Aug 2022 20:04:52 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Thu, 04 Aug 2022 20:04:52 +0200
changeset 810
1f2ca835fe9d
parent 809
8b30068497a9
child 811
4e3409cfd2b1

The last part to make a vieuwer from the recipe editor.

www/css/style.css file | annotate | diff | comparison | revisions
www/js/global.js file | annotate | diff | comparison | revisions
www/js/rec_edit.js file | annotate | diff | comparison | revisions
www/rec_edit.php file | annotate | diff | comparison | revisions
--- 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;
--- 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);
+}
+
+
--- 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 });
--- 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 @@
  	   <table style="width: 100%;">
             <caption>Water overzicht</caption>
 	    <tr>
-             <td align="left" style="vertical-align: top; padding: 3px;">Water profiel</td>
+	     <td align="left" style="vertical-align: top; padding: 3px;">Water profiel</td>
+             <td style="width: 50px; padding: 3px;">Spoel</td>
              <td style="width: 97px; padding: 3px;">Volume</td>
              <td style="width: 77px; padding: 3px;">Ca</td>
 	     <td style="width: 77px; padding: 3px;">Mg</td>
@@ -203,10 +204,13 @@
              <td style="width: 77px; padding: 3px;">Na</td>
              <td style="width: 77px; padding: 3px;">Cl</td>
 	     <td style="width: 77px; padding: 3px;">SO4</td>
-             <td style="width: 77px; padding: 3px;">pH</td>
+	     <td style="width: 77px; padding: 3px;">pH</td>
+	     <td style="width: 77px; padding: 3px;">Hardheid</td>
+             <td style="width: 77px; padding: 3px;">RA</td>
 	    </tr>
 	    <tr>
-             <td><div id="w1_name"></div></td>
+	     <td><input readonly="1" id="w1_name" /></td>
+             <td><div style='margin-left: 10px;' id='w1_button'></div></td>
              <td><div id="w1_amount"></div></td>
              <td><div id="w1_calcium"></div></td>
              <td><div id="w1_magnesium"></div></td>
@@ -215,10 +219,13 @@
              <td><div id="w1_sodium"></div></td>
              <td><div id="w1_chloride"></div></td>
              <td><div id="w1_sulfate"></div></td>
-             <td><div id="w1_ph"></div></td>
+	     <td><div id="w1_ph"></div></td>
+	     <td><div id="w1_hardness"></div></td>
+             <td><div id="w1_ra"></div></td>
             </tr>
 	    <tr>
-             <td><div id="w2_name"></div></td>
+	     <td><input readonly="1" id="w2_name" /></td>
+             <td><div style='margin-left: 10px;' id='w2_button'></div></td>
              <td><div id="w2_amount"></div></td>
              <td><div id="w2_calcium"></div></td>
              <td><div id="w2_magnesium"></div></td>
@@ -227,10 +234,13 @@
              <td><div id="w2_sodium"></div></td>
              <td><div id="w2_chloride"></div></td>
              <td><div id="w2_sulfate"></div></td>
-             <td><div id="w2_ph"></div></td>
+	     <td><div id="w2_ph"></div></td>
+             <td><div id="w2_hardness"></div></td>
+             <td><div id="w2_ra"></div></td>
             </tr>
             <tr>
 	     <td style="vertical-align: top; padding: 3px; float: left;">Gemengd water:</td>
+             <td><div style='margin-left: 10px;' id='wg_button'></div></td>
              <td><div id="wg_amount"></div></td>
              <td><div id="wg_calcium"></div></td>
              <td><div id="wg_magnesium"></div></td>
@@ -239,10 +249,13 @@
              <td><div id="wg_sodium"></div></td>
              <td><div id="wg_chloride"></div></td>
 	     <td><div id="wg_sulfate"></div></td>
-             <td><div id="wg_ph"></div></td>
+	     <td><div id="wg_ph"></div></td>
+             <td><div id="wg_hardness"></div></td>
+             <td><div id="wg_ra"></div></td>
             </tr>
             <tr>
-	     <td style="vertical-align: top; padding: 3px; float: left;">Behandeld water:</td>
+	     <td style="vertical-align: top; padding: 3px; float: left;">Behandeld maisch water:</td>
+             <td></td>
              <td><div></div></td>
              <td><div id="wb_calcium"></div></td>
              <td><div id="wb_magnesium"></div></td>
@@ -251,11 +264,14 @@
              <td><div id="wb_sodium"></div></td>
 	     <td><div id="wb_chloride"></div></td>
 	     <td><div id="wb_sulfate"></div></td>
-             <td><div id="wb_ph"></div></td>
+	     <td><div id="wb_ph"></div></td>
+             <td><div id="wb_hardness"></div></td>
+             <td><div id="wb_ra"></div></td>
 	    </tr>
             <tr>
-             <td style="vertical-align: top; padding: 3px; float: left;">Resultaat:</td>
-             <td><div></div></td>
+	     <td style="vertical-align: top; padding: 3px; float: left;">Resultaat:</td>
+             <td></td>
+	     <td><div></div></td>
              <td><div id="wr_calcium"></div></td>
              <td><div id="wr_magnesium"></div></td>
              <td><div id="wr_bicarbonate"></div></td>
@@ -263,19 +279,24 @@
              <td><div id="wr_sodium"></div></td>
 	     <td><div id="wr_chloride"></div></td>
              <td><div id="wr_sulfate"></div></td>
-             <td><div id="wr_ph"></div></td>
+	     <td><div id="wr_ph"></div></td>
+             <td></td>
+             <td></td>
             </tr>
 	    <tr>
-             <td><div id="pr_name"></div></td>
-             <td><div></div></td>
-             <td><div id="pr_calcium"></div></td>
-             <td><div id="pr_magnesium"></div></td>
-             <td><div id="pr_bicarbonate"></div></td>
-	     <td><div id="pr_total_alkalinity"></div></td>
-             <td><div id="pr_sodium"></div></td>
-             <td><div id="pr_chloride"></div></td>
-             <td><div id="pr_sulfate"></div></td>
+	     <td style="vertical-align: top; padding: 3px; float: left;">Behandeld spoelwater:</td>
              <td></td>
+             <td><div id="sw_amount"></div></td>
+             <td><div id="sw_calcium"></div></td>
+             <td><div id="sw_magnesium"></div></td>
+             <td><div id="sw_bicarbonate"></div></td>
+	     <td><div id="sw_total_alkalinity"></div></td>
+             <td><div id="sw_sodium"></div></td>
+             <td><div id="sw_chloride"></div></td>
+             <td><div id="sw_sulfate"></div></td>
+	     <td><div id="sw_ph"></div></td>
+             <td><div id="sw_hardness"></div></td>
+             <td><div id="sw_ra"></div></td>
             </tr>
            </table>
 	  </div>
@@ -322,8 +343,10 @@
         <tr>
          <td style="vertical-align: top; float: right; padding: 3px;">NaCl gr:</td>
 	 <td style="padding: 3px;"><div id="wa_nacl"></div></td>
-         <td style="padding: 3px;"><div style="float: left;" id="ss_nacl"></div></td>
-	 <td colspan="3"></td>
+	 <td style="padding: 3px;"><div style="float: left;" id="ss_nacl"></div></td>
+	 <td style="vertical-align: top; float: right; padding: 3px;">Voor koken pH:</td>
+         <td style="padding: 3px;"><div id="preboil_ph"></div></td>
+	 <td></td>
 	 <td style="vertical-align: top; float: right; padding: 3px;">Zuur hoeveelheid:</td>
          <td style="padding: 3px;"><div style="float: left;" id="wa_acid"></div></td>
          <td></td>
@@ -340,8 +363,7 @@
 	<tr>
          <td style="vertical-align: top; float: right; padding: 3px;">NaHCO3 gr:</td>
 	 <td style="padding: 3px;"><div id="wa_nahco3"></div></td>
-	 <td></td>
-	 <td colspan="3"></td>
+	 <td colspan="4"></td>
          <td style="vertical-align: top; float: right; padding: 3px;">Aanzuren met:</td>
          <td style="padding: 3px;"><input readonly="1" id="sparge_acid_type" /></td>
 	 <td style="padding: 3px;"><div id="sparge_acid_perc"></div></td>
@@ -349,10 +371,7 @@
 	<tr>
          <td style="vertical-align: top; float: right; padding: 3px;">CaCO3 gr:</td>
 	 <td style="padding: 3px;"><div id="wa_caco3"></div></td>
-	 <td></td>
- <td style="vertical-align: top; float: right; padding: 3px;">Spoelwater bron:</td>
-         <td style="padding: 3px;"><div id="sparge_source"></div></td>
-         <td></td>
+	 <td colspan="4"></td>
          <td style="vertical-align: top; float: right; padding: 3px;">Zuur hoeveelheid:</td>
 	 <td style="padding: 3px;"><div id="sparge_acid_amount"></div></td>
          <td></td>
@@ -364,6 +383,5 @@
    </div> <!-- jqxTabs -->
 
 <?php
-confirm_delete();
 page_footer();
 ?>

mercurial