www/js/rec_edit.js

changeset 772
f9d266eb0ec6
parent 756
b702c25661e7
child 775
3f2f6e483a4e
--- 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 = $('<div style="overflow: hidden; position: relative; margin: 5px;"></div>');
     toolbar.append(container);
     container.append('<div style="float: left; margin-left: 165px;" id="haddrowbutton"></div>');
@@ -1194,7 +1190,7 @@
      dropDownHeight: 500,
      renderer: function(index, label, value) {
       var datarecord = hoplist.records[index];
-      return datarecord.origin + ' / ' + datarecord.name + ' (' + datarecord.alpha + '% &alpha;)';
+      return datarecord.origin + ' - ' + datarecord.name + ' / ' + HopFormData[datarecord.form].nl + ' (' + datarecord.alpha + '% &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 '<span style="margin: 4px; margin-top: 6px; float: right;">' + dataAdapter.formatNumber(ibu, 'f1') + '</span>';
@@ -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 + ' % &alpha;)';
+   return datarecord.origin + ' - ' + datarecord.name + ' / ' + HopFormData[datarecord.form].nl + ' (' + datarecord.alpha + ' % &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
  });

mercurial