www/js/prod_edit.js

branch
stable
changeset 520
d25a1b160dba
parent 518
00e110567fee
child 525
8bbc5730aaa8
--- a/www/js/prod_edit.js	Sat Sep 14 10:41:35 2019 +0200
+++ b/www/js/prod_edit.js	Fri Oct 18 13:12:46 2019 +0200
@@ -305,6 +305,9 @@
    { name: 'prop3_volume', type: 'float' },
    { name: 'prop4_type', type: 'int' },
    { name: 'prop4_volume', type: 'float' },
+   { name: 'divide_type', type: 'int' },
+   { name: 'divide_size', type: 'float' },
+   { name: 'divide_parts', type: 'int' },
    { name: 'fermentables', type: 'array' },
    { name: 'hops', type: 'array' },
    { name: 'miscs', type: 'array' },
@@ -530,6 +533,9 @@
    $('#prop3_volume').val(dataRecord.prop3_volume);
    $('#prop4_type').val(dataRecord.prop4_type);
    $('#prop4_volume').val(dataRecord.prop4_volume);
+   $('#divide_type').val(SplitData[dataRecord.divide_type].nl);
+   // hidden divide_size
+   $('#divide_parts').val(dataRecord.divide_parts);
    editFermentable(dataRecord);
    editHop(dataRecord);
    editMisc(dataRecord);
@@ -1397,7 +1403,7 @@
       var amount = dataAdapter.formatNumber(value * 1000, 'f0') + ' ml';
       if (rowdata.y_form == 0) // Liquid
        amount = dataAdapter.formatNumber(value, 'f0') + ' pk';
-      else if (rowdata.y_form == 1) // Dry
+      else if (rowdata.y_form == 1 || rowdata.y_form == 6) // Dry
        amount = dataAdapter.formatNumber(value * 1000, 'f1') + ' gr';
       return '<span style="margin: 4px; margin-top: 6px; float: right;">' + amount + '</span>';
      }
@@ -1415,7 +1421,7 @@
        amount = dataAdapter.formatNumber(value * 1000, 'f0') + ' ml';
        if (rowdata.y_form == 0)        // Liquid
         amount = dataAdapter.formatNumber(value, 'f0') + ' pk';
-       else if (rowdata.y_form == 1)   // Dry
+       else if (rowdata.y_form == 1 || rowdata.y_form == 6)   // Dry
         amount = dataAdapter.formatNumber(value * 1000, 'f1') + ' gr';
        return '<span style="margin: 4px; margin-top: 6px; float: right; color: ' + color + ';">' + amount + '</span>';
       } else {
@@ -1436,7 +1442,7 @@
         $('#wy_pmpt_amount').html('Pak(ken):');
         $('#wy_amount').val(yeastData.y_amount);
         $('#wy_amount').jqxNumberInput({ decimalDigits: 0 });
-       } else if (yeastData.y_form == 1) {
+       } else if (yeastData.y_form == 1 || yeastData.y_form == 6) {
         $('#wy_pmpt_amount').html('Gewicht gram:');
         $('#wy_amount').val(yeastData.y_amount * 1000);
         $('#wy_amount').jqxNumberInput({ decimalDigits: 1 });
@@ -2089,7 +2095,7 @@
   ncells = Round(egrams * grate, 1),
   totcells = parseFloat(ncells) + start;
 
-  console.log('svol:' + svol + ' start:' + start + ' irate:' + irate + ' egrams:' + egrams + ' grate:' + grate + ' ncells:' + ncells);
+  //console.log('svol:' + svol + ' start:' + start + ' irate:' + irate + ' egrams:' + egrams + ' grate:' + grate + ' ncells:' + ncells);
   return {
    svol: svol,
    irate: irate,
@@ -2348,13 +2354,15 @@
 //   pitchrate = 1.25;       // Wyeast labs. http://www.wyeastlab.com/hb_pitchrates.cfm
     if (row.y_type == 0) // lager yeast
      pitchrate *= 2;
+    if (row.y_type == 6) // Kveik
+     pitchrate = 0.25; // Who knows.
 
 //    if (row.y_form == 1) { // dry yeast
 //    } else { // possible starter needed
 //    }
    }
   }
-  needed = pitchrate * volume * plato;
+  needed = Round(pitchrate * volume * plato, 1);
   console.log('calcYeast() pitchrate:' + pitchrate + ' start:' + initcells + ' needed:' + needed + ' volume:' + volume);
   $('#need_cells').val(needed);
   use_cells = initcells;
@@ -2466,7 +2474,7 @@
    return;
   for (i = 0; i < rowscount; i++) {
    row = $('#yeastGrid').jqxGrid('getrowdata', i);
-   if (row.y_form == 1) { // Only adjust dry yeast
+   if (! dataRecord.starter_enable) { // Only adjust without a starter
     amount = row.y_amount * factor;
     $('#yeastGrid').jqxGrid('setcellvalue', i, 'y_amount', amount);
    }
@@ -2714,7 +2722,8 @@
     pH += deltapH;
    pd = ProtonDeficit(pH);
   }
-  console.log('MashpH() n: ' + n + ' pH: ' + pH);
+  pH = Round(pH, 2);
+  //console.log('MashpH() n: ' + n + ' pH: ' + pH);
   return pH;
  }
 
@@ -2733,7 +2742,7 @@
 
  function calcWater() {
 
-  console.log('calcWater()');
+  //console.log('calcWater()');
   var liters = 0,
   calcium = 0,
   magnesium = 0,
@@ -2852,7 +2861,7 @@
   if (dataRecord.calc_acid) {
    TpH = parseFloat(dataRecord.mash_ph);
    protonDeficit = ProtonDeficit(TpH);
-   console.log('calc_acid tgt: ' + TpH + ' protonDeficit: ' + protonDeficit);
+   //console.log('calc_acid tgt: ' + TpH + ' protonDeficit: ' + protonDeficit);
    if (protonDeficit > 0) { // Add acid
     $('#wa_base').val(0);
     setWaterAgent(last_base, 0);
@@ -2864,10 +2873,10 @@
 
     if (parseFloat($('#wa_acid_perc').jqxNumberInput('decimal')) == 0)
      $('#wa_acid_perc').val(AcidPrc);
-    Acid = Acid * AcidPrc / (parseFloat($('#wa_acid_perc').jqxNumberInput('decimal')) / 100); // ml
-    console.log('Final ml: ' + Acid);
-    $('#wa_acid').val(Round(Acid, 2));
-    setWaterAgent(AcidTypeData[AT].nl, Round(Acid, 2));
+    Acid = Round(Acid * AcidPrc / (parseFloat($('#wa_acid_perc').jqxNumberInput('decimal')) / 100), 2); // ml
+    //console.log('Final ml: ' + Acid);
+    $('#wa_acid').val(Acid);
+    setWaterAgent(AcidTypeData[AT].nl, Acid);
 
     bicarbonate = bicarbonate - protonDeficit * frac / liters;
     total_alkalinity = bicarbonate * 50 / 61;
@@ -4368,6 +4377,9 @@
    prop3_volume: parseFloat($('#prop3_volume').jqxNumberInput('decimal')),
    prop4_type: $('#prop4_type').val(),
    prop4_volume: parseFloat($('#prop4_volume').jqxNumberInput('decimal')),
+   divide_type: dataRecord.divide_type,
+   divide_size: dataRecord.divide_size,
+   divide_parts: dataRecord.divide_parts,
    fermentables: $('#fermentableGrid').jqxGrid('getrows'),
    hops: $('#hopGrid').jqxGrid('getrows'),
    miscs: $('#miscGrid').jqxGrid('getrows'),
@@ -4388,7 +4400,8 @@
      window.location.href = my_return;
     else
      window.location.href =
-        'prod_export.php?record=' + my_record + '&return=' + my_return + '&select=' + my_select + '&code=' + dataRecord.code + '&name=' + dataRecord.name;
+        'prod_export.php?record=' + my_record + '&return=' + my_return + '&select=' + my_select + '&code=' + dataRecord.code + '&name=' + dataRecord.name +
+        '&stage=' + dataRecord.stage + '&split=' + dataRecord.divide_type;
    },
    error: function(jqXHR, textStatus, errorThrown) {
     console.log('saveRecord() ' + textStatus);
@@ -4423,6 +4436,11 @@
    calcStage();
   }
  });
+ $('#divide_parts').jqxTooltip({ content: 'Het aantal gesplitste brouw producten.' });
+ $('#divide_parts').jqxNumberInput(Show0dec);
+ $('#divide_type').jqxTooltip({ content: 'Het splitsing moment in het productie proces.' });
+ $('#divide_type').jqxInput({ theme: theme, width: 120, height: 23 });
+
  $('#notes').jqxTooltip({ content: 'De uitgebreide opmerkingen over dit product.' });
  $('#notes').jqxInput({ theme: theme, width: 960, height: 100 });
  $('#type').jqxTooltip({ content: 'Het brouw type van dit recept.' });
@@ -5156,8 +5174,11 @@
  $('#est_fg2').jqxNumberInput(Show3dec);
  $('#est_abv2').jqxTooltip({ content: 'Alcohol volume %. Dit wordt automatisch berekend.' });
  $('#est_abv2').jqxNumberInput(Smal1dec);
+ $('#yeast_cells').jqxTooltip({ content: 'Het aantal beschikbare gistcellen zonder eventuele starter.' });
  $('#yeast_cells').jqxNumberInput(Show1dec);
+ $('#need_cells').jqxTooltip({ content: 'Het aantal nodige cellen is afhankelijk van het biertype.' });
  $('#need_cells').jqxNumberInput(Show1dec);
+ $('#plato_cells').jqxTooltip({ content: 'De berekende hoeveelheid gistcellen in miljard per ml per graad Plato. Dit is de zogenaamde pitchrate.' });
  $('#plato_cells').jqxNumberInput(Show2dec);
  $('#popupYeast').jqxWindow({
   width: 800,
@@ -5239,7 +5260,7 @@
    yeastData.y_inventory = datarecord.inventory;
    if (yeastData.y_form == 0) {
     $('#wy_pmpt_amount').html('Pak(ken):');
-   } else if (yeastData.y_form == 1) {
+   } else if (yeastData.y_form == 1 || yeastData.y_form == 6) {
     $('#wy_pmpt_amount').html('Gewicht gram:');
    } else {
     $('#wy_pmpt_amount').html('Volume ml:');
@@ -5286,14 +5307,19 @@
    autoDropDownHeight: true
   });
   $('#prop' + i + '_type').hide();
+  $('#prop' + i + '_volume').jqxTooltip({ content: 'Het volume van deze starter stap.' });
   $('#prop' + i + '_volume').jqxNumberInput(Spin3dec);
   $('#prop' + i + '_volume').hide();
+  $('#prop' + i + '_irate').jqxTooltip({ content: 'Voor de beste gistgroei, houd de injectie factor tussen de 25 en 100 miljoen cellen per ml.' });
   $('#prop' + i + '_irate').jqxNumberInput(Show1dec);
   $('#prop' + i + '_irate').hide();
+  $('#prop' + i + '_ncells').jqxTooltip({ content: 'Het aantal miljard nieuwe gistcellen in deze stap.' });
   $('#prop' + i + '_ncells').jqxNumberInput(Show1dec);
   $('#prop' + i + '_ncells').hide();
+  $('#prop' + i + '_tcells').jqxTooltip({ content: 'Het totaal aantal miljard gistcellen na deze stap.' });
   $('#prop' + i + '_tcells').jqxNumberInput(Show1dec);
   $('#prop' + i + '_tcells').hide();
+  $('#prop' + i + '_growf').jqxTooltip({ content: 'De groeifactor, minstens 1. Ongeroerde starters komen meestal niet boven de 3.' });
   $('#prop' + i + '_growf').jqxNumberInput(Show2dec);
   $('#prop' + i + '_growf').hide();
  }
@@ -5307,7 +5333,9 @@
   height: 23,
   autoDropDownHeight: true
  });
+ $('#starter_sg').jqxTooltip({ content: 'Het ideale starter SG moet tussen de 1.030 en 1.040 zijn. Optimaal is 1.037.' });
  $('#starter_sg').jqxNumberInput(SGopts);
+ $('#starter_viability').jqxTooltip({ content: 'De gist conditie te berekenen vanaf de productie datum. Vloeibare gist verlist iedere maand ongeveer 20% active cellen.' });
  $('#starter_viability').jqxNumberInput(Perc0);
  $('#starter_try').jqxButton({ template: 'primary', width: '100px', height: 23, theme: theme });
 

mercurial