diff -r 509510586665 -r b702c25661e7 www/js/prod_edit.js
--- 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 '' + fermentableAdapter.formatNumber(value, 'f3') + '';
} else {
return '';
@@ -958,9 +953,7 @@
cellsrenderer: function(row, columnfield, value, defaulthtml, columnproperties, rowdata) {
if (rowdata.f_added >= 4)
return '';
- var color = '#ffffff';
- if (value > rowdata.f_max_in_batch)
- color = '#ff4040';
+ var color = (value > rowdata.f_max_in_batch) ? '#ff4040':'#ffffff';
return '' + fermentableAdapter.formatNumber(value, 'p1') + '';
}
},
@@ -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 '' + amount + '';
@@ -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 '' + amount + '';
} 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. °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 '' + amount + '';
}
@@ -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)