www/js/prod_edit.js

changeset 756
b702c25661e7
parent 755
509510586665
child 757
d13be50c0049
--- a/www/js/prod_edit.js	Fri Jun 18 21:26:28 2021 +0200
+++ b/www/js/prod_edit.js	Sun Jun 27 10:15:09 2021 +0200
@@ -765,9 +765,6 @@
  var editFermentable = function(data) {
   var fermentableSource = {
    localdata: data.fermentables,
-   datatype: 'local',
-   cache: false,
-   async: true,
    datafields: [
     { name: 'f_name', type: 'string' },
     { name: 'f_origin', type: 'string' },
@@ -944,10 +941,8 @@
     { text: 'Gewicht Kg', datafield: 'f_amount', width: 120, align: 'right', cellsalign: 'right', cellsformat: 'f3' },
     { text: 'Voorraad Kg', datafield: 'f_inventory', width: 120, align: 'right',
      cellsrenderer: function(row, columnfield, value, defaulthtml, columnproperties, rowdata) {
-      var color = '#ffffff';
+      var color = (value < rowdata.f_amount) ? '#ff4040':'#ffffff';
       if (block_fermentable(dataRecord.inventory_reduced, rowdata.f_added) == false) {
-       if (value < rowdata.f_amount)
-        color = '#ff4040';
        return '<span style="margin: 4px; margin-top: 6px; float: right; color: ' + color + ';">' + fermentableAdapter.formatNumber(value, 'f3') + '</span>';
       } else {
        return '<span></span>';
@@ -958,9 +953,7 @@
      cellsrenderer: function(row, columnfield, value, defaulthtml, columnproperties, rowdata) {
       if (rowdata.f_added >= 4)
        return '<span></span>';
-      var color = '#ffffff';
-      if (value > rowdata.f_max_in_batch)
-       color = '#ff4040';
+      var color = (value > rowdata.f_max_in_batch) ? '#ff4040':'#ffffff';
       return '<span style="margin: 4px; margin-top: 6px; float: right; color: ' + color + ';">' + fermentableAdapter.formatNumber(value, 'p1') + '</span>';
      }
     },
@@ -1006,9 +999,6 @@
  var editHop = function(data) {
   var hopSource = {
    localdata: data.hops,
-   datatype: 'local',
-   cache: false,
-   async: true,
    datafields: [
     { name: 'h_name', type: 'string' },
     { name: 'h_origin', type: 'string' },
@@ -1170,10 +1160,8 @@
     { text: 'Voorraad', datafield: 'h_inventory', width: 110, align: 'right',
      cellsrenderer: function(index, datafield, value, defaultvalue, column, rowdata) {
       if (block_hop(dataRecord.inventory_reduced, rowdata.h_useat) == false) {
-       var amount, color = '#ffffff';
-       if (value < rowdata.h_amount)
-        color = '#ff4040';
-       amount = dataAdapter.formatNumber(value, 'f1') + ' kg';
+       var amount = dataAdapter.formatNumber(value, 'f1') + ' kg',
+       color = (value < rowdata.h_amount) ? '#ff4040':'#ffffff';
        if (value < 1)
         amount = dataAdapter.formatNumber(value * 1000, 'f1') + ' gr';
        return '<span style="margin: 4px; margin-top: 6px; float: right; color: ' + color + ';">' + amount + '</span>';
@@ -1219,9 +1207,6 @@
  var editMisc = function(data) {
   var miscSource = {
    localdata: data.miscs,
-   datatype: 'local',
-   cache: false,
-   async: false,
    datafields: [
     { name: 'm_name', type: 'string' },
     { name: 'm_amount', type: 'float' },
@@ -1402,12 +1387,9 @@
     },
     { text: 'Voorraad', datafield: 'm_inventory', width: 110, align: 'right',
      cellsrenderer: function(index, datafield, value, defaultvalue, column, rowdata) {
-      var vstr, color, amount;
       if (block_misc(dataRecord.inventory_reduced, rowdata.m_use_use) == false) {
-       vstr = rowdata.m_amount_is_weight ? 'gr' : 'ml';
-       color = '#ffffff';
-       if (value < rowdata.m_amount)
-        color = '#ff4040';
+       var vstr = rowdata.m_amount_is_weight ? 'gr' : 'ml',
+       color = (value < rowdata.m_amount) ? '#ff4040':'#ffffff',
        amount = dataAdapter.formatNumber(value * 1000, 'f2') + ' ' + vstr;
        return '<span style="margin: 4px; margin-top: 6px; float: right; color: ' + color + ';">' + amount + '</span>';
       } else {
@@ -1456,9 +1438,6 @@
  var editYeast = function(data) {
   var yeastSource = {
    localdata: data.yeasts,
-   datatype: 'local',
-   cache: false,
-   async: false,
    datafields: [
     { name: 'y_name', type: 'string' },
     { name: 'y_laboratory', type: 'string' },
@@ -1598,11 +1577,9 @@
     { text: 'Max. &deg;C', width: 70, align: 'right', cellsalign: 'right', datafield: 'y_max_temperature' },
     { text: 'Tol. %', width: 60, align: 'right', cellsalign: 'right', datafield: 'y_tolerance',
      cellsrenderer: function(index, datafield, value, defaultvalue, column, rowdata) {
-      var amount = '', color = '#ffffff';
+      var amount = '', color = (dataRecord.est_abv > value) ? '#ff4040':'#ffffff';
       if (value > 0) {
        amount = dataAdapter.formatNumber(value, 'f1');
-       if (dataRecord.est_abv > value)
-        color = '#ff4040';
       }
       return '<span style="margin: 4px; margin-top: 6px; float: right; color: ' + color + ';">' + amount + '</span>';
      }
@@ -1683,9 +1660,6 @@
  var editMash = function(data) {
   var mashSource = {
    localdata: data.mashs,
-   datatype: 'local',
-   cache: false,
-   async: false,
    datafields: [
     { name: 'step_name', type: 'string' },
     { name: 'step_type', type: 'int' },
@@ -1949,10 +1923,10 @@
  function calcViability() {
   var vpm = 1.00;
   var max = 100;
-  var rowscount = $('#yeastGrid').jqxGrid('getdatainformation').rowscount;
+  var rowscount = dataRecord.yeasts.length;
   if (rowscount) {
    for (i = 0; i < rowscount; i++) {
-    row = $('#yeastGrid').jqxGrid('getrowdata', i);
+    row = dataRecord.yeasts[i];
     if (row.y_use == 0) {
      if (row.y_form == 0) { // Liquid
       vpm = 0.80;
@@ -2019,10 +1993,10 @@
  function calcPercentages() {
 
   console.log('calcPercentages()');
-  var tw = 0, rowdata, percentage, rowscount = $('#fermentableGrid').jqxGrid('getdatainformation').rowscount;
+  var tw = 0, rowdata, percentage, rowscount = dataRecord.fermentables.length;
   if (rowscount > 1) {
    for (i = 0; i < rowscount; i++) {
-    rowdata = $('#fermentableGrid').jqxGrid('getrowdata', i);
+    rowdata = dataRecord.fermentables[i];
     if (rowdata.f_added < 4)
      tw += Round(rowdata.f_amount, 3);
    }
@@ -2073,10 +2047,10 @@
   ok_fermentables = 1;    // All is in stock.
   ok_yeasts = 1;
 
-  if ((rows = $('#mashGrid').jqxGrid('getrows'))) {
-   for (i = 0; i < rows.length; i++) {
-    row = rows[i];
-    if (row.step_type == 0) // Infusion
+  if (dataRecord.mashs.length) {
+   for (i = 0; i < dataRecord.mashs.length; i++) {
+    row = dataRecord.mashs[i];
+    if (parseFloat(row.step_type) == 0) // Infusion
      mvol += parseFloat(row.step_infuse_amount);
     if (row.step_temp <= 75) { // Ignore mashout
      timem = row.step_time + row.ramp_time;
@@ -2088,16 +2062,16 @@
     mashtime -= 5; //Correct last ramp > 75
    mashtemp = Round(mashtemp / mashtime, 2);
   } else {
-   console.log("calcFermentables() mashGrid not loaded");
+   console.log("calcFermentables() no mash steps");
   }
 
-  if (!(rows = $('#fermentableGrid').jqxGrid('getrows'))) {
-   console.log("calcFermentables() fermentableGrid not loaded");
+  if (! dataRecord.fermentables.length) {
+   console.log("calcFermentables() no fermentables");
    return; // grid not yet loaded.
   }
 
-  for (i = 0; i < rows.length; i++) {
-   row = rows[i];
+  for (i = 0; i < dataRecord.fermentables.length; i++) {
+   row = dataRecord.fermentables[i];
    if (row.f_adjust_to_total_100)
     my_100 = true;
    if (row.f_type == 1 && row.f_added < 4) // Sugar
@@ -2256,9 +2230,8 @@
   // Calculate estimated svg.
   svg = 0; // default.
   initcells = 0;
-  rows = $('#yeastGrid').jqxGrid('getrows');
-  for (i = 0; i < rows.length; i++) {
-   row = rows[i];
+  for (i = 0; i < dataRecord.yeasts.length; i++) {
+   row = dataRecord.yeasts[i];
    if (row.y_use == 0) {   // Primary
     if (parseFloat(row.y_attenuation) > svg)
      svg = parseFloat(row.y_attenuation);    // Take the highest if multiple yeasts.
@@ -2317,10 +2290,10 @@
   var graintemp = 18.0;
   var tuntemp = 18.0;
 
-  if ((rows = $('#mashGrid').jqxGrid('getrows')) && (mashkg > 0)) {
+  if (dataRecord.mashs.length && (mashkg > 0)) {
    console.log('calcMash()');
-   for (i = 0; i < rows.length; i++) {
-    row = $('#mashGrid').jqxGrid('getrowdata', i);
+   for (i = 0; i < dataRecord.mashs.length; i++) {
+    row = dataRecord.mashs[i];
     if (row.step_type == 0) { // Infusion
      if (i == 0) {
       // First mash step, temperature from the mashtun and malt.
@@ -2337,11 +2310,11 @@
        tuntemp += (temp - tuntemp) / 2;
        row.step_infuse_temp = Round(temp, 6);
       }
-      console.log('init infuse temp: ' + row.step_infuse_temp);
+      //console.log('init infuse temp: ' + row.step_infuse_temp);
      } else {
       // Calculate amount of infusion water.
       row.step_infuse_amount = infusionVol(infused, mashkg, row.step_infuse_temp, row.step_temp, lasttemp);
-      //console.log('vol: ' + row.step_infuse_amount + ' temp: ' + row.step_infuse_temp);
+      console.log('vol: ' + row.step_infuse_amount + ' temp: ' + row.step_infuse_temp);
      }
      infused += row.step_infuse_amount;
     } else if (row.step_type == 1) { // Temperature
@@ -2379,10 +2352,10 @@
   console.log('calcFermentablesFromOG(' + OG + ')');
   var amount, row, d, i, sug, tot = 0, totmass = 0, rowscount, efficiency = parseFloat($('#efficiency').jqxNumberInput('decimal'));
   sug = sg_to_plato(OG) * parseFloat($('#batch_size').jqxNumberInput('decimal')) * OG / 100;      //total amount of sugars in kg
-  rowscount = $('#fermentableGrid').jqxGrid('getdatainformation').rowscount;
+  rowscount = dataRecord.fermentables.length;
 
   for (i = 0; i < rowscount; i++) {
-   row = $('#fermentableGrid').jqxGrid('getrowdata', i);
+   row = dataRecord.fermentables[i];
    if (row.f_added < 4) {
     d = row.f_percentage / 100 * (row.f_yield / 100) * (1 - row.f_moisture / 100);
     if (row.f_added == 0)   // Mash
@@ -2395,9 +2368,10 @@
 
   if (totmass) {
    for (i = 0; i < rowscount; i++) {
-    row = $('#fermentableGrid').jqxGrid('getrowdata', i);
+    row = dataRecord.fermentables[i];
     if (row.f_added < 4) {
      amount = Math.round(row.f_percentage * 10 * totmass) / 1000;
+     dataRecord.fermentables[i].f_amount = amount;
      $('#fermentableGrid').jqxGrid('setcellvalue', i, 'f_amount', amount);
     }
    }
@@ -2786,7 +2760,7 @@
   if (!(rows = $('#yeastGrid').jqxGrid('getrows'))) {
    return; // grid not yet loaded.
   }
-  rowscount = $('#yeastGrid').jqxGrid('getdatainformation').rowscount;
+  rowscount = dataRecord.yeasts.length;
   if (rowscount == 0)
    return; // no yeast in recipe
 
@@ -2796,7 +2770,7 @@
   var maybe_starter = 0;
   var pitchrate = 0.75;    // Yeast pitch rate default
   for (i = 0; i < rowscount; i++) {
-   row = $('#yeastGrid').jqxGrid('getrowdata', i);
+   row = dataRecord.yeasts[i];
    if (row.y_use == 0) { // primary
     if (row.y_form == 1) {
      // Dry yeast
@@ -2816,8 +2790,7 @@
      $('#yeast_grams').val(yeast_grams);
      var yeast_gr_hl = Round(yeast_grams / (volume * 0.01), 2);
      $('#yeast_gr_hl').val(yeast_gr_hl);
-     console.log('need ' + yeast_grams + ' grams, gr/hl: ' + yeast_gr_hl);
-//     obj.initgram = Round(obj.volume * multiplier_yeast_needed  * (100 / obj.yeastviability), 2);
+     //console.log('need ' + yeast_grams + ' grams, gr/hl: ' + yeast_gr_hl);
 
     } else {
      // Liquid yeast
@@ -2849,7 +2822,7 @@
   use_cells = initcells;
   if (needed <= initcells)
    maybe_starter = 0;
-  console.log('calcYeast() pitchrate:' + dataRecord.yeast_pitchrate + ' start:' + initcells + ' needed:' + needed + ' volume:' + volume + ' maybe_starter:' + maybe_starter);
+  //console.log('calcYeast() pitchrate:' + dataRecord.yeast_pitchrate + ' start:' + initcells + ' needed:' + needed + ' volume:' + volume + ' maybe_starter:' + maybe_starter);
 
   if (maybe_starter != dataRecord.starter_enable) {
    dataRecord.starter_enable = maybe_starter;
@@ -2886,27 +2859,27 @@
 
  function adjustHops(factor) {
 
-  console.log('adjustHops(' + factor + ')');
-  var row, i, amount, rowscount = $('#hopGrid').jqxGrid('getdatainformation').rowscount;
+  //console.log('adjustHops(' + factor + ')');
+  var row, i, amount, rowscount = dataRecord.hops.length;
   if (rowscount == 0)
    return;
   for (i = 0; i < rowscount; i++) {
-   row = $('#hopGrid').jqxGrid('getrowdata', i);
+   row = dataRecord.hops[i];
    amount = row.h_amount * factor;
+   dataRecord.hops[i].h_amount = amount;
    $('#hopGrid').jqxGrid('setcellvalue', i, 'h_amount', amount);
   }
  };
 
  function whirlpoolHops() {
-  var row, i, time, rowscount;
-  if (!(rowscount = $('#hopGrid').jqxGrid('getdatainformation').rowscount))
-   return;
+  var row, i, time, rowscount = dataRecord.hops.length;
   if (rowscount == 0)
    return;
   for (i = 0; i < rowscount; i++) {
-   row = $('#hopGrid').jqxGrid('getrowdata', i);
+   row = dataRecord.hops[i];
    if (row.h_useat == 4) {
     time = parseFloat(dataRecord.brew_whirlpool9) + parseFloat(dataRecord.brew_whirlpool7) + parseFloat(dataRecord.brew_whirlpool6);
+    dataRecord.hops[i].h_time = time;
     $('#hopGrid').jqxGrid('setcellvalue', i, 'h_time', time);
    }
   }
@@ -2915,11 +2888,11 @@
  function calcMiscs() {
 
   ok_miscs = 1;
-  var row, i, rowscount = $('#miscGrid').jqxGrid('getdatainformation').rowscount;
+  var row, i, rowscount = dataRecord.miscs.length;
   if (rowscount == 0)
    return;
   for (i = 0; i < rowscount; i++) {
-   row = $('#miscGrid').jqxGrid('getrowdata', i);
+   row = dataRecord.miscs[i];
    if ((((dataRecord.inventory_reduced <= 2) && (row.m_use_use <= 2)) ||  // Starter, Mash, Boil
         ((dataRecord.inventory_reduced <= 3) && (row.m_use_use == 3)) ||  // Primary
         ((dataRecord.inventory_reduced <= 5) && (row.m_use_use == 4)) ||  // Secondary, Teriary
@@ -2933,13 +2906,14 @@
 
  function adjustMiscs(factor) {
 
-  console.log('adjustMiscs(' + factor + ')');
-  var row, i, amount, rowscount = $('#miscGrid').jqxGrid('getdatainformation').rowscount;
+  //console.log('adjustMiscs(' + factor + ')');
+  var row, i, amount, rowscount = dataRecord.miscs.length;
   if (rowscount == 0)
    return;
   for (i = 0; i < rowscount; i++) {
-   row = $('#miscGrid').jqxGrid('getrowdata', i);
+   row = dataRecord.miscs[i];
    amount = row.m_amount * factor;
+   dataRecord.miscs[i].m_amount = amount;
    $('#miscGrid').jqxGrid('setcellvalue', i, 'm_amount', amount);
    switch (row.m_name) {
     case 'CaCl2':
@@ -2972,14 +2946,15 @@
 
  function adjustYeasts(factor) {
 
-  console.log('adjustYeasts(' + factor + ')');
-  var row, i, amount, rowscount = $('#yeastGrid').jqxGrid('getdatainformation').rowscount;
+  //console.log('adjustYeasts(' + factor + ')');
+  var row, i, amount, rowscount = dataRecord.yeasts.length;
   if (rowscount == 0)
    return;
   for (i = 0; i < rowscount; i++) {
-   row = $('#yeastGrid').jqxGrid('getrowdata', i);
+   row = dataRecord.yeasts[i];
    if (! dataRecord.starter_enable) { // Only adjust without a starter
     amount = row.y_amount * factor;
+    dataRecord.yeasts[i].y_amount = amount;
     $('#yeastGrid').jqxGrid('setcellvalue', i, 'y_amount', amount);
    }
   }
@@ -2988,15 +2963,16 @@
 
  function adjustWaters(factor) {
 
-  console.log('adjustWaters(' + factor + ')');
-  var amount, row, i, rowscount = $('#mashGrid').jqxGrid('getdatainformation').rowscount;
+  //console.log('adjustWaters(' + factor + ')');
+  var amount, row, i, rowscount = dataRecord.mashs.length;
   if (rowscount == 0)
    return;
   mash_infuse = 0;
   for (i = 0; i < rowscount; i++) {
-   row = $('#mashGrid').jqxGrid('getrowdata', i);
+   row = dataRecord.mashs[i];
    if (row.step_type == 0) { // Infusion
     amount = Round(parseFloat(row.step_infuse_amount) * factor, 1);
+    dataRecord.mashs[i].step_infuse_amount = amount;
     $('#mashGrid').jqxGrid('setcellvalue', i, 'step_infuse_amount', amount);
     mash_infuse += amount;
    }
@@ -3028,12 +3004,13 @@
  };
 
  function calcEfficiencyBeforeBoil() {
-  var m = 0, rows = {}, i, row, tot, result = 0;
-  if (!(rows = $('#fermentableGrid').jqxGrid('getrows'))) {
-   return; // grid not yet loaded.
-  }
-  for (i = 0; i < rows.length; i++) {
-   row = rows[i];
+  var m = 0, i, row, tot, result = 0;
+  if (!($('#fermentableGrid').jqxGrid('getrows')))
+   return; // no grid loaded yet
+  if (dataRecord.fermentables.length == 0)
+   return; // no fermentables
+  for (i = 0; i < dataRecord.fermentables.length; i++) {
+   row = dataRecord.fermentables[i];
    if (row.f_added == 0) { // Mash
     m += row.f_amount * (row.f_yield / 100) * (1 - row.f_moisture / 100);
    }
@@ -3049,12 +3026,12 @@
  function calcEfficiencyAfterBoil() {
   var m = 0, // Sugars added at mash
   b = 0,     // Sugars added at boil
-  rows = {}, i, row, tot, result = 0;
-  if (!(rows = $('#fermentableGrid').jqxGrid('getrows'))) {
+  i, row, tot, result = 0;
+  if (!($('#fermentableGrid').jqxGrid('getrows'))) {
    return; // grid not yet loaded.
   }
-  for (i = 0; i < rows.length; i++) {
-   row = rows[i];
+  for (i = 0; i < dataRecord.fermentables.length; i++) {
+   row = dataRecord.fermentables[i];
    if (row.f_added == 0) { // Mash
     m += row.f_amount * (row.f_yield / 100) * (1 - row.f_moisture / 100);
    } else if (row.f_added == 1) { // Boil
@@ -3206,11 +3183,11 @@
 
  function ProtonDeficit(pHZ) {
 
-  var rows, i, C1, x, Result = ZRA(pHZ) * parseFloat($('#wg_amount').jqxNumberInput('decimal'));
+  var i, C1, x, Result = ZRA(pHZ) * parseFloat($('#wg_amount').jqxNumberInput('decimal'));
   // proton deficit for the grist
-  if ((rows = $('#fermentableGrid').jqxGrid('getrows'))) {
-   for (i = 0; i < rows.length; i++) {
-    row = rows[i];
+  if (( $('#fermentableGrid').jqxGrid('getrows'))) {
+   for (i = 0; i < dataRecord.fermentables.length; i++) {
+    row = dataRecord.fermentables[i];
     if (row.f_added == 0 && row.f_graintype != 6) { // Added == Mash && graintype != No Malt
      C1 = BufferCapacity(row.f_di_ph, row.f_acid_to_ph_57, row.f_color, row.f_graintype);
      x = C1 * (pHZ - row.f_di_ph);   // AcidRequired(ZpH)

mercurial