www/js/prod_view.js

changeset 857
150485d06b30
parent 842
897bf2a43253
child 858
2be86a797302
--- a/www/js/prod_view.js	Fri May 03 21:02:54 2024 +0200
+++ b/www/js/prod_view.js	Thu Jun 13 17:12:00 2024 +0200
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * Copyright (C) 2018-2023
+ * Copyright (C) 2018-2024
  *
  * Michiel Broek <mbroek at mbse dot eu>
  *
@@ -177,6 +177,8 @@
    { name: 'eq_chiller_volume', type: 'float' },
    { name: 'eq_chiller_lpm', type: 'float' },
    { name: 'eq_chiller_loss', type: 'float' },
+   { name: 'eq_HLT_volume', type: 'float' },
+   { name: 'eq_HLT_deadspace', type: 'float' },
    { name: 'brew_date_start', type: 'string' },
    { name: 'brew_mash_ph', type: 'float' },
    { name: 'brew_mash_sg', type: 'float' },
@@ -325,6 +327,14 @@
    { name: 'wb_magnesium', type: 'float' },
    { name: 'wb_total_alkalinity', type: 'float' },
    { name: 'wb_ph', type: 'float' },
+   { name: 'tw_name', type: 'string' },
+   { name: 'tw_calcium', type: 'float' },
+   { name: 'tw_sulfate', type: 'float' },
+   { name: 'tw_chloride', type: 'float' },
+   { name: 'tw_sodium', type: 'float' },
+   { name: 'tw_magnesium', type: 'float' },
+   { name: 'tw_total_alkalinity', type: 'float' },
+   { name: 'tw_ph', type: 'float' },
    { name: 'wa_acid_name', type: 'int' },
    { name: 'wa_acid_perc', type: 'int' },
    { name: 'wa_base_name', type: 'int' },
@@ -390,6 +400,8 @@
    $('#eq_chiller_lpm').val(dataRecord.eq_chiller_lpm);
    $('#eq_chiller_loss').val(dataRecord.eq_chiller_loss);
    $('#eq_fermenter_volume').val((dataRecord.eq_batch_size / 1.04) - dataRecord.eq_trub_loss - dataRecord.eq_chiller_loss );
+   $('#eq_HLT_volume').val(dataRecord.eq_HLT_volume);
+   $('#eq_HLT_deadspace').val(dataRecord.eq_HLT_deadspace);
    // Brewdate
    $('#brew_date_start').val(dataRecord.brew_date_start);
    $('#brew_mash_ph').val(dataRecord.brew_mash_ph);
@@ -563,6 +575,16 @@
    $('#wb_magnesium').val(dataRecord.wb_magnesium);
    $('#wb_total_alkalinity').val(dataRecord.wb_total_alkalinity);
    $('#wb_ph').val(dataRecord.wb_ph);
+   $('#tw_name').val(dataRecord.tw_name);
+   $('#tw_calcium').val(dataRecord.tw_calcium);
+   $('#tw_sulfate').val(dataRecord.tw_sulfate);
+   $('#tw_chloride').val(dataRecord.tw_chloride);
+   $('#tw_sodium').val(dataRecord.tw_sodium);
+   $('#tw_magnesium').val(dataRecord.tw_magnesium);
+   $('#tw_total_alkalinity').val(dataRecord.tw_total_alkalinity);
+   $('#tw_bicarbonate').val(dataRecord.tw_total_alkalinity * 1.22);
+   $('#tw_ph').val(dataRecord.tw_ph);
+
    $('#wa_acid_name').val(dataRecord.wa_acid_name);
    $('#wa_acid_perc').val(dataRecord.wa_acid_perc);
    $('#starter_type').val(StarterTypeData[dataRecord.starter_type].nl);
@@ -2392,8 +2414,6 @@
    }
    ph = TpH;
    dataRecord.wb_ph = ph;
-   $('#wb_ph').val(Round(ph, 2));
-   $('#est_mash_ph').val(Round(ph, 2));
   } else {
    /* Manual calculate pH */
    $('.c_mashph').hide();
@@ -2429,10 +2449,11 @@
    bicarbonate = wg_bicarbonate - protonDeficit * frac / liters;
    total_alkalinity = bicarbonate * 50 / 61;
    ph = pHa;
-   $('#wb_ph').val(Round(ph, 2));
-   $('#est_mash_ph').val(Round(ph, 2));
   }
 
+  $('#wb_ph').val(Round(ph, 2));
+  $('#est_mash_ph').val(Round(ph, 2));
+
   if ((AT == 3) && (liters > 0)) {        // Sulfuric / Zwavelzuur
    RA = parseFloat($('#wa_caso4').jqxNumberInput('decimal')) * MMSO4 / MMCaSO4 +
         parseFloat($('#wa_mgso4').jqxNumberInput('decimal')) * MMSO4 / MMMgSO4 +
@@ -2492,6 +2513,11 @@
    Res = 'hoog';
   setRangeIndicator('so4_cl', Res);
 
+  $('#tw_bicarbonate').val(Round(Bicarbonate(dataRecord.tw_total_alkalinity, dataRecord.tw_ph)));
+  $('#tw_hardness').val(Round(Hardness(dataRecord.tw_calcium, dataRecord.tw_magnesium), 1));
+  $('#tw_ra').val(Round(ResidualAlkalinity(dataRecord.tw_total_alkalinity, dataRecord.tw_calcium, dataRecord.tw_magnesium), 1));
+
+  calcSparge();
   $('#wb_calcium').val(Round(calcium, 1));
   $('#wb_magnesium').val(Round(magnesium, 1));
   $('#wb_sodium').val(Round(sodium, 1));
@@ -2502,6 +2528,30 @@
   $('#wb_hardness').val(Hardness(calcium, magnesium));
   $('#wb_ra').val(ResidualAlkalinity(total_alkalinity, calcium, magnesium));
 
+  /* Mix sparge and mash waters to display the final water. */
+  calcium = mix(dataRecord.wg_amount, dataRecord.sparge_volume, calcium, parseFloat($('#sw_calcium').jqxNumberInput('decimal')));
+  magnesium = mix(dataRecord.wg_amount, dataRecord.sparge_volume, magnesium, parseFloat($('#sw_magnesium').jqxNumberInput('decimal')));
+  sodium = mix(dataRecord.wg_amount, dataRecord.sparge_volume, sodium, parseFloat($('#sw_sodium').jqxNumberInput('decimal')));
+  sulfate = mix(dataRecord.wg_amount, dataRecord.sparge_volume, sulfate, parseFloat($('#sw_sulfate').jqxNumberInput('decimal')));
+  chloride = mix(dataRecord.wg_amount, dataRecord.sparge_volume, chloride, parseFloat($('#sw_chloride').jqxNumberInput('decimal')));
+  total_alkalinity = mix(dataRecord.wg_amount, dataRecord.sparge_volume, total_alkalinity, parseFloat($('#sw_total_alkalinity').jqxNumberInput('decimal')));
+  ph = -Math.log10(((Math.pow(10, -dataRecord.wb_ph) * dataRecord.wg_amount) + 
+	            (Math.pow(10, -parseFloat($('#sw_ph').jqxNumberInput('decimal'))) * dataRecord.sparge_volume)) /
+	           (dataRecord.wg_amount + dataRecord.sparge_volume));
+  bicarbonate = Bicarbonate(total_alkalinity, ph);
+
+  $('#fw_amount').val(dataRecord.wg_amount + dataRecord.sparge_volume);
+  $('#fw_calcium').val(Round(calcium, 1));
+  $('#fw_magnesium').val(Round(magnesium, 1));
+  $('#fw_sodium').val(Round(sodium, 1));
+  $('#fw_sulfate').val(Round(sulfate, 1));
+  $('#fw_chloride').val(Round(chloride, 1));
+  $('#fw_bicarbonate').val(Round(bicarbonate, 1));
+  $('#fw_total_alkalinity').val(Round(total_alkalinity, 1));
+  $('#fw_ph').val(Round(ph, 2));
+  $('#fw_hardness').val(Round(Hardness(calcium, magnesium), 1));
+  $('#fw_ra').val(Round(ResidualAlkalinity(total_alkalinity, calcium, magnesium), 1));
+
   if (calcium < 40) {
    setRangeIndicator('calcium', 'laag');
   } else if (calcium > 150) {
@@ -2542,9 +2592,9 @@
    setRangeIndicator('chloride', 'hoog');
    setRangeIndicator('sulfate', 'hoog');
   }
-  if (ph < 5.2) {
+  if (ph < 5.0) {
    setRangeIndicator('ph', 'laag');
-  } else if (ph > 5.6) {
+  } else if (ph > 5.5) {
    setRangeIndicator('ph', 'hoog');
   } else {
    setRangeIndicator('ph', 'normaal');
@@ -2554,7 +2604,6 @@
   } else {
    setRangeIndicator('bicarbonate', 'normaal');
   }
-  calcSparge();
   calcMiscs();
   calcSupplies();
  }
@@ -2611,6 +2660,7 @@
   }
 
   /* Show the spargewate with salt additions */
+  $('#sw_amount').val(dataRecord.sparge_volume);
   $('#sw_calcium').val(Round(ws_calcium, 1));
   $('#sw_magnesium').val(Round(ws_magnesium, 1));
   $('#sw_sodium').val(Round(ws_sodium, 1));
@@ -2935,6 +2985,7 @@
  $('#eq_chiller_type').jqxInput({ theme: theme, width: 180, height: 23 });
  $('#eq_chiller_to79').jqxNumberInput(Show0dec);
  $('#eq_chiller_volume,#eq_chiller_lpm,#eq_chiller_loss').jqxNumberInput(Show2dec);
+ $('#eq_HLT_volume,#eq_HLT_deadspace').jqxNumberInput(Show1dec);
 
  // Tab 3, Fermentables
  $('#est_color2').jqxTooltip({ content: 'De kleur in EBC. Dit wordt automatisch berekend.' });
@@ -3070,6 +3121,12 @@
  $('#tgt_so4_cl,#got_so4_cl').jqxNumberInput(Show1wat);
  $('#preboil_ph').jqxNumberInput(Show2wat);
 
+ // Target water
+ $('#tw_name').jqxInput({ theme: theme, width: 200, height: 23 });
+ $('#tw_calcium,#tw_magnesium,#tw_sodium,#tw_bicarbonate,#tw_total_alkalinity,#tw_chloride,#tw_sulfate').jqxNumberInput(Show1wat);
+ $('#tw_hardness').jqxNumberInput(Show1wat);
+ $('#tw_ph').jqxNumberInput(Show2wat);
+ $('#tw_ra').jqxNumberInput(Show1wat);
  // Water source 1
  $('#w1_name').jqxInput({ theme: theme, width: 200, height: 23 });
  $('#w1_button').jqxRadioButton({ theme: theme, width: 50, height: 23, disabled: true });
@@ -3092,18 +3149,13 @@
  $('#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);
- $('#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 150. Samen met Sulfaat minder dan 500.'});
  $('#wb_chloride').jqxNumberInput(Show1wat);
- $('#wb_sulfate').jqxTooltip({ content: 'De ideale hoeveelheid Sulfaat is tussen 50 en 400. Samen met Chloride 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);
  $('#wb_hardness').jqxNumberInput(Show1wat);
  $('#wb_ra').jqxNumberInput(Show1wat);
@@ -3119,6 +3171,25 @@
  $('#sw_ph').jqxNumberInput(Show2wat);
  $('#sw_hardness').jqxNumberInput(Show1wat);
  $('#sw_ra').jqxNumberInput(Show1wat);
+ // Final water
+ $('#fw_amount').jqxNumberInput(Show1wat);
+ $('#fw_calcium').jqxTooltip({ content: 'De ideale hoeveelheid Calcium is tussen 40 en 150.'});
+ $('#fw_calcium').jqxNumberInput(Show1wat);
+ $('#fw_magnesium').jqxTooltip({ content: 'De ideale hoeveelheid Magnesium is tussen 5 en 40.'});
+ $('#fw_magnesium').jqxNumberInput(Show1wat);
+ $('#fw_sodium').jqxTooltip({ content: 'De ideale hoeveelheid Natrium is lager dan 150.'});
+ $('#fw_sodium').jqxNumberInput(Show1wat);
+ $('#fw_bicarbonate').jqxTooltip({ content: '0 tot 50 lichte bieren, 50 tot 150 amber bieren, 150 tot 250 donkere bieren.'});
+ $('#fw_bicarbonate').jqxNumberInput(Show1wat);
+ $('#fw_total_alkalinity').jqxNumberInput(Show1wat);
+ $('#fw_chloride').jqxTooltip({ content: 'De ideale hoeveelheid Chloride is tussen 50 en 150. Samen met Sulfaat minder dan 500.'});
+ $('#fw_chloride').jqxNumberInput(Show1wat);
+ $('#fw_sulfate').jqxTooltip({ content: 'De ideale hoeveelheid Sulfaat is tussen 50 en 400. Samen met Chloride minder dan 500.'});
+ $('#fw_sulfate').jqxNumberInput(Show1wat);
+ $('#fw_ph').jqxTooltip({ content: 'De kook pH is ideaal tussen 5.0 en 5.5.'});
+ $('#fw_ph').jqxNumberInput(Show2wat);
+ $('#fw_hardness').jqxNumberInput(Show1wat);
+ $('#fw_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.' });

mercurial