diff -r c0f0bbfefd63 -r ff45488d480e www/js/rec_edit.js
--- a/www/js/rec_edit.js Wed Dec 19 21:58:21 2018 +0100
+++ b/www/js/rec_edit.js Sun Dec 23 20:13:36 2018 +0100
@@ -44,16 +44,35 @@
$(document).ready(function () {
- var to_100 = false; // Fermentables adjust to 100%
+ var to_100 = false; // Fermentables adjust to 100%
var preboil_sg = 0;
- var sugarsm = 0; // Sugars after mash
- var sugarsf = 0; // Sugars after boil
- var psugar = 0; // Percentage real sugars
- var pcara = 0; // Percentage cara/crystal malts
- var svg = 77; // Default attenuation
+ var sugarsm = 0; // Sugars after mash
+ var sugarsf = 0; // Sugars after boil
+ var psugar = 0; // Percentage real sugars
+ var pcara = 0; // Percentage cara/crystal malts
+ var svg = 77; // Default attenuation
+ var mashkg = 0; // Malt in mash weight
var hop_flavour = 0;
var hop_aroma = 0;
var mash_infuse = 0;
+ var last_base = '';
+ var last_acid = '';
+
+ var MMCa = 40.048;
+ var MMMg = 24.305;
+ var MMNa = 22.98976928;
+ var MMCl = 35.453;
+ var MMSO4 = 96.0626;
+ var MMCO3 = 60.01684;
+ var MMHCO3 = 61.01684;
+ var MMCaSO4 = 172.171;
+ var MMCaCl2 = 147.015;
+ var MMCaCO3 = 100.087;
+ var MMMgSO4 = 246.475;
+ var MMNaHCO3 = 84.007;
+ var MMNa2CO3 = 105.996;
+ var MMNaCl = 58.443;
+ var MMCaOH2 = 74.06268;
console.log("record:" + my_record + " return:" + my_return + " theme:" + theme);
$("#jqxLoader").jqxLoader({
@@ -70,6 +89,7 @@
sugarsm = 0;
psugar = 0;
pcara = 0;
+ mashkg = 0;
var colorw = 0; // Colors working
var my_100 = false;
@@ -84,25 +104,29 @@
pcara += row.f_percentage;
var d = row.f_amount * (row.f_yield / 100) * (1 - row.f_moisture / 100);
if (row.f_added == "Mash") {
- d = parseFloat($("#efficiency").jqxNumberInput('decimal')) / 100 * d;
+ d = parseFloat(dataRecord.efficiency) / 100 * d;
sugarsm += d;
+ mashkg += row.f_amount;
}
sugarsf += d;
- colorw += row.f_amount * ebc_to_srm(row.f_color) / parseFloat($("#batch_size").jqxNumberInput('decimal')) * 8.34436;
+ colorw += row.f_amount * ebc_to_srm(row.f_color) / parseFloat(dataRecord.batch_size) * 8.34436;
}
- if (to_100 != my_100)
- console.log("change to_100 to:"+my_100);
to_100 = my_100;
- var est_og = estimate_sg(sugarsf, parseFloat($("#batch_size").jqxNumberInput('decimal')));
+ var est_og = estimate_sg(sugarsf, parseFloat(dataRecord.batch_size));
$('#est_og').val(est_og);
$('#est_og2').val(est_og);
- preboil_sg = estimate_sg(sugarsm, parseFloat($("#boil_size").jqxNumberInput('decimal')));
- var color = kw_to_ebc($("#color_method").val(), colorw);
+ preboil_sg = estimate_sg(sugarsm, dataRecord.boil_size);
+ var color = kw_to_ebc(dataRecord.color_method, colorw);
$('#est_color').val(color);
$('#est_color2').val(color);
var scolor = ebc_to_color(color);
document.getElementById("bcolor").style.background= scolor;
document.getElementById("bcolor2").style.background= scolor;
+ // Use boil_size instead of mash_max from equipment.
+ pmalts = mashkg / (dataRecord.boil_size / 3) * 100;
+ $("#perc_malts").jqxProgressBar('val', pmalts);
+ $("#perc_sugars").jqxProgressBar('val', psugar);
+ $("#perc_cara").jqxProgressBar('val', pcara);
};
function hopFlavourContribution(bt, vol, use, amount) {
@@ -149,11 +173,11 @@
var rows = $('#hopGrid').jqxGrid('getrows');
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
- total_ibus += toIBU(row.h_useat, row.h_form, preboil_sg, parseFloat($("#batch_size").jqxNumberInput('decimal')),
- parseFloat(row.h_amount), parseFloat(row.h_time), parseFloat(row.h_alpha), $("#ibu_method").val());
- hop_flavour += hopFlavourContribution(parseFloat(row.h_time), parseFloat($("#batch_size").jqxNumberInput('decimal')),
+ total_ibus += toIBU(row.h_useat, row.h_form, preboil_sg, parseFloat(dataRecord.batch_size),
+ parseFloat(row.h_amount), parseFloat(row.h_time), parseFloat(row.h_alpha), dataRecord.ibu_method);
+ hop_flavour += hopFlavourContribution(parseFloat(row.h_time), parseFloat(dataRecord.batch_size),
row.h_useat, parseFloat(row.h_amount));
- hop_aroma += hopAromaContribution(parseFloat(row.h_time), parseFloat($("#batch_size").jqxNumberInput('decimal')),
+ hop_aroma += hopAromaContribution(parseFloat(row.h_time), parseFloat(dataRecord.batch_size),
row.h_useat, parseFloat(row.h_amount));
}
total_ibus = Math.round(total_ibus);
@@ -174,6 +198,59 @@
}
}
+ function setWaterAgent(name, amount) {
+ console.log("setWaterAgent(" + name + ", " + amount + ")");
+ var rows = $('#miscGrid').jqxGrid('getrows');
+ if (amount == 0) {
+ for (var i = 0; i < rows.length; i++) {
+ var row = rows[i];
+ if (row.m_name == name) {
+ var id = $("#miscGrid").jqxGrid('getrowid', i);
+// console.log("name found, erase "+ id);
+ var commit = $("#miscGrid").jqxGrid('deleterow', id);
+// console.log("result: "+commit);
+ }
+ }
+ } else {
+ var found = false;
+ for (var i = 0; i < rows.length; i++) {
+ var row = rows[i];
+ if (row.m_name == name) {
+ found = true;
+ $("#miscGrid").jqxGrid('setcellvalue', i, 'm_weight', amount);
+ $("#miscGrid").jqxGrid('setcellvalue', i, 'm_amount', amount / 1000);
+ break;
+ }
+ }
+ console.log("set something, found: "+found);
+ if (! found) {
+// console.log("need to add this misc");
+ var miscs = new $.jqx.dataAdapter(miscInvSource, {
+ loadComplete: function () {
+ var records = miscs.records;
+ for (var i = 0; i < records.length; i++) {
+ var record = records[i];
+ if (record.name == name) {
+ var row = {};
+ row["m_name"] = record.name;
+ row["m_amount"] = amount / 1000;
+ row["m_cost"] = record.cost;
+ row["m_type"] = record.type;
+ row["m_use_use"] = record.use_use;
+ row["m_time"] = 0;
+ row["m_weight"] = amount;
+ row["m_amount_is_weight"] = record.amount_is_weight;
+ var commit = $("#miscGrid").jqxGrid('addrow', null, row);
+// console.log("result: "+commit);
+ }
+ }
+ }
+ });
+ miscs.dataBind();
+ return;
+ }
+ }
+ }
function setRangeIndicator(ion, rangeCode) {
$("#wr_" + ion).html("" + rangeCode + "");
@@ -186,6 +263,49 @@
return 0;
}
+ var Ka1 = 0.0000004445;
+ var Ka2 = 0.0000000000468;
+
+ function PartCO3(pH) {
+ var H = Math.pow(10, -pH);
+ return 100 * Ka1 * Ka2 / (H*H + H * Ka1 + Ka1 * Ka2);
+ }
+
+ function PartHCO3(pH) {
+ var H = Math.pow(10, -pH);
+ return 100 * Ka1 * H / (H*H + H * Ka1 + Ka1 * Ka2);
+ }
+
+ function Charge(pH) {
+ return (-2 * PartCO3(pH) - PartHCO3(pH));
+ }
+
+ //Z alkalinity is the amount of acid (in mEq/l) needed to bring water to the target pH (Z pH)
+ function ZAlkalinity(pHZ) {
+ var C43 = Charge(4.3);
+ var Cw = Charge(parseFloat(dataRecord.mash_ph));
+ var Cz = Charge(pHZ);
+ var DeltaCNaught = -C43+Cw;
+ var CT = parseFloat($("#wg_total_alkalinity").jqxNumberInput('decimal')) / 50 / DeltaCNaught;
+ var DeltaCZ = -Cz+Cw;
+ return CT * DeltaCZ;
+ }
+
+ function ZRA(pHZ) {
+
+ var Calc = parseFloat($("#wg_calcium").jqxNumberInput('decimal')) / (MMCa / 2);
+ var Magn = parseFloat($("#wg_magnesium").jqxNumberInput('decimal')) / (MMMg / 2);
+ var Z = ZAlkalinity(pHZ);
+ return Z - (Calc / 3.5 + Magn / 7);
+ }
+
+ function ProtonDeficit(pHZ) {
+
+ var Result = ZRA(pHZ) * parseFloat($("#wg_amount").jqxNumberInput('decimal'));
+
+ return Result;
+ }
+
function calcWater() {
console.log("calcWater()");
@@ -197,18 +317,29 @@
var chloride = 0;
var sulfate = 0;
var ph = 0;
+ var RA = 0;
+ var acid = 0;
+ var frac = 0;
+ var MolWt = 0;
+ var pK1 = 0;
+ var pK2 = 0;
+ var pK3 = 0;
+ var TpH = 0;
+ var AcidSG = 0;
+ var AcidPrc = 0;
+ var protonDeficit = 0;
// console.log((dataRecord.w1_name != "") + " " + (dataRecord.w2_name != ""));
if (dataRecord.w1_name != "") {
if (dataRecord.w2_name != "") {
liters = dataRecord.w1_amount + dataRecord.w2_amount;
- calcium = Math.round(mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_calcium, dataRecord.w2_calcium) * 10) / 10;
- magnesium = Math.round(mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_magnesium, dataRecord.w2_magnesium) * 10) / 10;
- sodium = Math.round(mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_sodium, dataRecord.w2_sodium) * 10) / 10;
- chloride = Math.round(mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_chloride, dataRecord.w2_chloride) * 10) / 10;
- sulfate = Math.round(mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_sulfate, dataRecord.w2_sulfate) * 10) / 10;
- total_alkalinity = Math.round(mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_total_alkalinity, dataRecord.w2_total_alkalinity) * 10) / 10;
- ph = Math.round(-Math.log10(((Math.pow(10, -dataRecord.w1_ph) * dataRecord.w1_amount) + (Math.pow(10, -dataRecord.w2_ph) * dataRecord.w2_amount)) / liters) * 10) / 10;
+ calcium = mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_calcium, dataRecord.w2_calcium);
+ magnesium = mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_magnesium, dataRecord.w2_magnesium);
+ sodium = mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_sodium, dataRecord.w2_sodium);
+ chloride = mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_chloride, dataRecord.w2_chloride);
+ sulfate = mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_sulfate, dataRecord.w2_sulfate);
+ total_alkalinity = mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_total_alkalinity, dataRecord.w2_total_alkalinity);
+ ph = -Math.log10(((Math.pow(10, -dataRecord.w1_ph) * dataRecord.w1_amount) + (Math.pow(10, -dataRecord.w2_ph) * dataRecord.w2_amount)) / liters);
} else {
liters = dataRecord.w1_amount;
calcium = dataRecord.w1_calcium;
@@ -216,47 +347,140 @@
sodium = dataRecord.w1_sodium;
chloride = dataRecord.w1_chloride;
sulfate = dataRecord.w1_sulfate;
- total_alkalinity = dataRecord.total_alkalinity;
+ total_alkalinity = dataRecord.w1_total_alkalinity;
ph = dataRecord.w1_ph;
}
}
$('#wg_amount').val(liters);
- $('#wg_calcium').val(calcium);
- $('#wg_magnesium').val(magnesium);
- $('#wg_sodium').val(sodium);
- $('#wg_total_alkalinity').val(total_alkalinity);
- $('#wg_chloride').val(chloride);
- $('#wg_sulfate').val(sulfate);
+ $('#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);
// Note: brouwhulp has the malts included here in the result.
- $('#wg_ph').val(ph);
+ $('#wg_ph').val(Math.round(ph * 10) / 10);
+
+ // Noot: de volgende berekeningen geven bijna gelijke resultaten in Brun'water.
+ // Calculate Ca
+ RA = parseFloat($("#wa_cacl2").jqxNumberInput('decimal')) * MMCa / MMCaCl2 +
+ parseFloat($("#wa_caso4").jqxNumberInput('decimal')) * MMCa / MMCaSO4;
+ calcium += 1000 * RA / parseFloat($("#wg_amount").jqxNumberInput('decimal'));
+
+ // Calculate Mg
+ RA = parseFloat($("#wa_mgso4").jqxNumberInput('decimal')) * MMMg / MMMgSO4;
+ magnesium += 1000 * RA / parseFloat($("#wg_amount").jqxNumberInput('decimal'));
+
+ // Calculate Na
+ RA = parseFloat($("#wa_nacl").jqxNumberInput('decimal')) * MMNa / MMNaCl +
+ parseFloat($("#wa_base").jqxNumberInput('decimal')) * MMNa / MMNaHCO3;
+ sodium += 1000 * RA / parseFloat($("#wg_amount").jqxNumberInput('decimal'));
+
+ // Calculate SO4
+ RA = parseFloat($("#wa_caso4").jqxNumberInput('decimal')) * MMSO4 / MMCaSO4 +
+ parseFloat($("#wa_mgso4").jqxNumberInput('decimal')) * MMSO4 / MMMgSO4;
+ sulfate += 1000 * RA / parseFloat($("#wg_amount").jqxNumberInput('decimal'));
- // Brouwhulp < 40 || > 200
- if (calcium < 50) { setRangeIndicator("calcium", "low"); }
- if (calcium >= 50 && calcium <= 150) { setRangeIndicator("calcium", "normal"); }
- if (calcium > 150) { setRangeIndicator("calcium", "high"); }
- if (calcium > 250) { setRangeIndicator("calcium", "harmful"); }
+ // Calculate Cl
+ RA = 2 * parseFloat($("#wa_cacl2").jqxNumberInput('decimal')) * MMCl / MMCaCl2 +
+ parseFloat($("#wa_nacl").jqxNumberInput('decimal')) * MMCl / MMNaCl;
+ chloride += 1000 * RA / parseFloat($("#wg_amount").jqxNumberInput('decimal'));
+ // Einde noot.
+
+ TpH = parseFloat(dataRecord.mash_ph);
+ if (TpH < 5.0 || TpH > 6.0) {
+ TpH = 5.4;
+ dataRecord.mash_ph = 5.4;
+ $("#mash_ph").val(5.4);
+ $("#tgt_mash_ph").val(5.4);
+ }
+ var acid_amount = parseFloat($("#wa_acid").jqxNumberInput('decimal'));
+ var acid_perc = parseFloat($("#wa_acid_perc").jqxNumberInput('decimal'));
+
+ switch ($("#wa_acid_name").val()) {
+ case 'Melkzuur': pK1 = 3.08;
+ pK2 = 20;
+ pK3 = 20;
+ MolWt = 90.08;
+ AcidSG = 1214; //@88%
+ AcidPrc = 0.88;
+ frac = CalcFrac(TpH, pK1, pK2, pK3);
+ acid += acid_amount * acid_perc / 100 * AcidSG / MolWt * frac / liters; //mEq/l
+ break;
- // Brouwhulp > 40
- if (magnesium >= 0 && magnesium <= 30) { setRangeIndicator("magnesium", "normal"); }
- if (magnesium > 30) { setRangeIndicator("magnesium", "high"); }
- if (magnesium > 50) { setRangeIndicator("magnesium", "harmful"); }
+ case 'Zoutzuur': pK1 = -10;
+ pK2 = 20;
+ pK3 = 20;
+ MolWt = 36.46;
+ AcidSG = 1142; //@28%
+ AcidPrc = 0.28;
+ frac = CalcFrac(TpH, pK1, pK2, pK3);
+ Acidmg = acid_amount * acid_perc / 100 * AcidSG / liters;
+ acid += Acidmg / MolWt * frac; //mEq/l
+ chloride += Acidmg / 1000 * MMCl / (MMCl + 1);
+ break;
- // Brouwhulp > 100
- if (sodium <= 150) { setRangeIndicator("sodium", "normal"); }
- if (sodium > 150) { setRangeIndicator("sodium", "high"); }
- if (sodium > 200) { setRangeIndicator("sodium", "harmful"); }
+ case 'Fosforzuur': pK1 = 2.12;
+ pK2 = 7.20;
+ pK3 = 12.44;
+ MolWt = 98.00;
+ AcidSG = 1170; //@25%
+ AcidPrc = 0.25;
+ frac = CalcFrac(TpH, pK1, pK2, pK3);
+ Acidmg = acid_amount * acid_perc / 100 * AcidSG / liters;
+ acid += Acidmg / MolWt * frac; //mEq/l
+ break;
- // Brouwhulp > 200
- if (chloride <= 250) { setRangeIndicator("chloride", "normal"); }
- if (chloride > 250) { setRangeIndicator("chloride", "high"); }
- if (chloride > 300) { setRangeIndicator("chloride", "harmful"); }
+ case 'Zwavelzuur': pK1 = -10;
+ pK2 = 1.92;
+ pK3 = 20;
+ MolWt = 98.07;
+ AcidSG = 1700; //@93%
+ AcidPrc = 0.93;
+ frac = CalcFrac(TpH, pK1, pK2, pK3);
+ Acidmg = acid_amount * acid_perc / 100 * AcidSG / liters;
+ acid += Acidmg / MolWt * frac; //mEq/l
+ sulfate += Acidmg / 1000 * MMSO4 / (MMSO4 + 2);
+ break;
+ }
+ protonDeficit = ProtonDeficit(TpH);
+ console.log("frac: "+frac+" acid: "+acid+" protonDeficit: "+protonDeficit);
+ total_alkalinity -= 50 / 61 * protonDeficit * frac / liters;
+
+ $('#wb_calcium').val(Math.round(calcium * 10) / 10);
+ $('#wb_magnesium').val(Math.round(magnesium * 10) / 10);
+ $('#wb_sodium').val(Math.round(sodium * 10) / 10);
+ $('#wb_sulfate').val(Math.round(sulfate * 10) / 10);
+ $('#wb_chloride').val(Math.round(chloride * 10) / 10);
+ $('#wb_total_alkalinity').val(Math.round(total_alkalinity * 10) / 10);
- // Brouwhulp > 600
- if (sulfate < 50) { setRangeIndicator("sulfate", "low"); }
- if (sulfate >= 50 && sulfate <= 350) { setRangeIndicator("sulfate", "normal"); }
- if (sulfate > 350) { setRangeIndicator("sulfate", "high"); }
- if (sulfate > 750) { setRangeIndicator("sulfate", "harmful"); }
-
+ if (calcium < 40) {
+ setRangeIndicator("calcium", "low");
+ } else if (calcium > 150) {
+ setRangeIndicator("calcium", "high");
+ } else {
+ setRangeIndicator("calcium", "normal");
+ }
+ if (magnesium >= 0 && magnesium <= 30) {
+ setRangeIndicator("magnesium", "normal");
+ } else {
+ setRangeIndicator("magnesium", "high");
+ }
+ if (sodium <= 150) {
+ setRangeIndicator("sodium", "normal");
+ } else {
+ setRangeIndicator("sodium", "high");
+ }
+ if (chloride <= 100) {
+ setRangeIndicator("chloride", "normal");
+ } else {
+ setRangeIndicator("chloride", "high");
+ }
+ if (sulfate <= 350) {
+ setRangeIndicator("sulfate", "normal");
+ } else {
+ setRangeIndicator("sulfate", "high");
+ }
}
function calcFermentablesFromOG(OG) {
@@ -298,6 +522,14 @@
$("#w1_name").jqxDropDownList('selectItem', dataRecord.w1_name);
$("#w2_name").jqxDropDownList('selectItem', dataRecord.w2_name);
+ // Fix tap water if zero using mash infuse amount.
+ if (parseFloat($("#wg_amount").jqxNumberInput('decimal')) == 0 && mash_infuse > 0) {
+ $("#w1_amount").val(mash_infuse);
+ dataRecord.w1_amount = mash_infuse;
+ $("#wg_amount").val(mash_infuse);
+ $("#w2_amount").val(0);
+ dataRecord.w2_amount = 0;
+ }
calcWater();
$("#w2_amount").on('change', function (event) {
var newval = parseFloat(event.args.value);
@@ -312,6 +544,43 @@
console.log("new: "+event.args.value+" w1: "+dataRecord.w1_amount+" w2: "+dataRecord.w2_amount);
calcWater();
});
+ $('#wa_cacl2').on('change', function (event) {
+ setWaterAgent('CaCl2', event.args.value);
+ calcWater();
+ });
+ $('#wa_caso4').on('change', function (event) {
+ setWaterAgent('CaSO4', event.args.value);
+ calcWater();
+ });
+ $('#wa_mgso4').on('change', function (event) {
+ setWaterAgent('MgSO4', event.args.value);
+ calcWater();
+ });
+ $('#wa_nacl').on('change', function (event) {
+ setWaterAgent('NaCl', event.args.value);
+ calcWater();
+ });
+ $('#wa_base_name').on('change', function (event) {
+ setWaterAgent(last_base, 0);
+ last_base = event.args.item.value;
+ setWaterAgent(last_base, parseFloat($("#wa_base").jqxNumberInput('decimal')));
+ calcWater();
+ });
+ $('#wa_base').on('change', function (event) {
+ setWaterAgent($("#wa_base_name").val(), parseFloat(event.args.value));
+ calcWater();
+ });
+ $('#wa_acid_name').on('change', function (event) {
+ setWaterAgent(last_acid, 0);
+ last_acid = event.args.item.value;
+ setWaterAgent(last_acid, parseFloat($("#wa_acid").jqxNumberInput('decimal')));
+ calcWater();
+ });
+ $('#wa_acid').on('change', function (event) {
+ setWaterAgent($("#wa_acid_name").val(), parseFloat(event.args.value));
+ calcWater();
+ });
+ $('#wa_acid_perc').on('change', function (event) { calcWater(); });
$('#color_method').on('change', function (event) { calcFermentables(); });
$('#ibu_method').on('change', function (event) {
@@ -362,6 +631,7 @@
calcIBUs(); // and the IBU's.
});
$('#mash_ph').on('change', function (event) {
+ dataRecord.mash_ph = parseFloat(event.args.value);
$("#tgt_mash_ph").val(parseFloat(event.args.value));
calcWater();
});
@@ -445,6 +715,11 @@
$("#st_abv_max").jqxTooltip({ content: 'Het maximum alcohol volume % voor deze bierstijl.'});
$("#st_carb_min").jqxTooltip({ content: 'Het minimum koolzuur volume voor deze bierstijl.'});
$("#st_carb_max").jqxTooltip({ content: 'Het maximum koolzuur volume voor deze bierstijl.'});
+ $("#wa_cacl2").jqxTooltip({ content: 'Voor het maken van een ander waterprofiel. Voegt calcium en chloride toe. Voor het verbeteren van zoetere bieren.'});
+ $("#wa_caso4").jqxTooltip({ content: 'Gips. Voor het maken van een ander waterprofiel. Voegt calcium en sulfaat toe. Voor het verbeteren van bittere bieren.'});
+ $("#wa_mgso4").jqxTooltip({ content: 'Epsom zout. Voor het maken van een ander waterprofiel. Voegt magnesium en sulfaat toe. Gebruik spaarzaam!'});
+ $("#wa_nacl").jqxTooltip({ content: 'Keukenzout. Voor het maken van een ander waterprofiel. Voegt natrium en chloride toe. Voor het accentueren van zoetheid. Bij hoge dosering wordt het bier ziltig.'});
+ $("#w2_amount").jqxTooltip({ content: 'De verdeling van het hoofd en meng water. Het totale maisch water volume blijft gelijk.'});
// prepare the data
var source = {
@@ -1158,14 +1433,52 @@
row.m_weight = row.m_amount * 1000;
data.push(row);
// Initial set water agent values.
- if (row.m_name == 'CaCl2')
- $("#wa_cacl2").val(row.m_weight);
- if (row.m_name == 'CaSO4')
- $("#wa_caso4").val(row.m_weight);
- if (row.m_name == 'MgSO4')
- $("#wa_mgso4").val(row.m_weight);
- if (row.m_name == 'NaCl')
- $("#wa_nacl").val(row.m_weight);
+ switch (row.m_name) {
+ case 'CaCl2': $("#wa_cacl2").val(row.m_weight);
+ break;
+ case 'CaSO4': $("#wa_caso4").val(row.m_weight);
+ break;
+ case 'MgSO4': $("#wa_mgso4").val(row.m_weight);
+ break;
+ case 'NaCl': $("#wa_nacl").val(row.m_weight);
+ break;
+ case 'Melkzuur': $("#wa_acid_name").val('Melkzuur');
+ $("#wa_acid").val(row.m_weight);
+ $("#wa_acid_perc").val(80);
+ last_acid = 'Melkzuur';
+ break;
+ case 'Zoutzuur': $("#wa_acid_name").val('Zoutzuur');
+ $("#wa_acid").val(row.m_weight);
+ $("#wa_acid_perc").val(80);
+ last_acid = 'Zoutzuur';
+ break;
+ case 'Fosforzuur': $("#wa_acid_name").val('Fosforzuur');
+ $("#wa_acid").val(row.m_weight);
+ $("#wa_acid_perc").val(80);
+ last_acid = 'Fosforzuur';
+ break;
+ case 'Zwavelzuur': $("#wa_acid_name").val('Zwavelzuur');
+ $("#wa_acid").val(row.m_weight);
+ $("#wa_acid_perc").val(80);
+ last_acid = 'Zwavelzuur';
+ break;
+ case 'NaHCO3': $("#wa_base_name").val('NaHCO3');
+ $("#wa_base").val(row.m_weight);
+ last_base = 'NaHCO3';
+ break;
+ case 'Na2CO3': $("#wa_base_name").val('Na2CO3');
+ $("#wa_base").val(row.m_weight);
+ last_base = 'Na2CO3';
+ break;
+ case 'CaCO3': $("#wa_base_name").val('CaCO3');
+ $("#wa_base").val(row.m_weight);
+ last_base = 'CaCO3';
+ break;
+ case 'Ca(OH)2': $("#wa_base_name").val('Ca(OH)2');
+ $("#wa_base").val(row.m_weight);
+ last_base = 'Ca(OH)2';
+ break;
+ }
}
return data;
},
@@ -1645,7 +1958,7 @@
var srcColor = [ "Morey", "Mosher", "Daniels" ];
//var srcIBU = [ "Tinseth", "Rager", "Garetz", "Daniels", "Mosher", "Noonan" ];
var srcIBU = [ "Tinseth", "Rager", "Daniels" ]; // Only these are supported at this time.
- var srcDeAcid = [ "NaHCO3", "Na2CO3", "CaCO3", "Ca(OH)2" ];
+ var srcBase = [ "NaHCO3", "Na2CO3", "CaCO3", "Ca(OH)2" ];
var srcAcid = [ "Melkzuur", "Zoutzuur", "Fosforzuur", "Zwavelzuur" ];
$("#name").jqxInput({ theme: theme, width: 640, height: 23 });
$("#notes").jqxInput({ theme: theme, width: 960, height: 200 });
@@ -1693,9 +2006,12 @@
$("#mash_ph").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 100, height: 23, min: 4, max: 8, decimalDigits: 1, spinButtons: true, spinButtonsStep: 0.1 });
$("#tgt_mash_ph").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 100, height: 23, decimalDigits: 1, readOnly: true });
$("#sparge_temp").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 100, height: 23, min: 70, max: 98, decimalDigits: 1, spinButtons: true, spinButtonsStep: 0.5 });
- // Hop flavour and aroma gauges
+ // Several gauges
$("#hop_flavour").jqxProgressBar({ width: 300, height: 23, theme: theme, showText: true });
$("#hop_aroma").jqxProgressBar({ width: 300, height: 23, theme: theme, showText: true });
+ $("#perc_malts").jqxProgressBar({ width: 300, height: 23, theme: theme, showText: true });
+ $("#perc_sugars").jqxProgressBar({ width: 300, height: 23, theme: theme, showText: true });
+ $("#perc_cara").jqxProgressBar({ width: 300, height: 23, theme: theme, showText: true });
// Water treatment
$("#w1_name").jqxDropDownList({
@@ -1802,13 +2118,34 @@
$("#wb_sulfate").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 74, height: 23, decimalDigits: 1, readOnly: true });
$("#wb_ph").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 74, height: 23, decimalDigits: 1, readOnly: true });
+ $("#pr_name").jqxDropDownList({
+ placeHolder: "Kies doel profiel:",
+ theme: theme,
+ source: waterprofiles,
+ displayMember: "name",
+ width: 250,
+ height: 27,
+ dropDownWidth: 400,
+ dropDownHeight: 300
+ });
+ $("#pr_name").on('select', function (event) {
+ if (event.args) {
+ var index = event.args.index;
+ var datarecord = waterprofiles.records[index];
+ $("#pr_calcium").val(datarecord.calcium);
+ $("#pr_sulfate").val(datarecord.sulfate);
+ $("#pr_chloride").val(datarecord.chloride);
+ $("#pr_sodium").val(datarecord.sodium);
+ $("#pr_magnesium").val(datarecord.magnesium);
+ $("#pr_total_alkalinity").val(datarecord.total_alkalinity);
+ }
+ });
$("#pr_calcium").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 74, height: 23, decimalDigits: 1, readOnly: true });
$("#pr_magnesium").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 74, height: 23, decimalDigits: 1, readOnly: true });
$("#pr_sodium").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 74, height: 23, decimalDigits: 1, readOnly: true });
$("#pr_total_alkalinity").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 74, height: 23, decimalDigits: 1, readOnly: true });
$("#pr_chloride").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 74, height: 23, decimalDigits: 1, readOnly: true });
$("#pr_sulfate").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 74, height: 23, decimalDigits: 1, readOnly: true });
- $("#pr_ph").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 74, height: 23, decimalDigits: 1, readOnly: true });
$("#wa_cacl2").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 100, height: 23, min: 0, decimalDigits: 1, spinButtons: true, spinButtonsStep: 0.1, symbol: ' gr', symbolPosition: 'right' });
$("#wa_caso4").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 100, height: 23, min: 0, decimalDigits: 1, spinButtons: true, spinButtonsStep: 0.1, symbol: ' gr', symbolPosition: 'right' });
@@ -1816,10 +2153,11 @@
$("#wa_nacl").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 100, height: 23, min: 0, decimalDigits: 1, spinButtons: true, spinButtonsStep: 0.1, symbol: ' gr', symbolPosition: 'right' });
$("#calc_acid").jqxCheckBox({ theme: theme, width: 120, height: 23 });
- $("#wa_ph_up").jqxDropDownList({ theme: theme, source: srcDeAcid, width: 125, height: 23, dropDownHeight: 128 });
- $("#wa_ph_up").val('NaHCO3');
- $("#wa_ph_down").jqxDropDownList({ theme: theme, source: srcAcid, width: 125, height: 23, dropDownHeight: 128 })
- $("#wa_ph_down").val('Melkzuur');
+ $("#wa_base_name").jqxDropDownList({ theme: theme, source: srcBase, width: 125, height: 23, dropDownHeight: 128 });
+ $("#wa_base").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 100, height: 23, min: 0, decimalDigits: 2, spinButtons: true, spinButtonsStep: 0.05, symbol: ' gr', symbolPosition: 'right' });
+ $("#wa_acid_name").jqxDropDownList({ theme: theme, source: srcAcid, width: 125, height: 23, dropDownHeight: 128 })
+ $("#wa_acid").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 100, height: 23, min: 0, decimalDigits: 2, spinButtons: true, spinButtonsStep: 0.05, symbol: ' ml', symbolPosition: 'right' });
+ $("#wa_acid_perc").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 80, height: 23, min: 0, max: 100, decimalDigits: 0, spinButtons: true, symbol: '%', symbolPosition: 'right' });
$("#sparge_volume").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 100, height: 23, decimalDigits: 1, spinButtons: true, spinButtonsStep: 0.1 });
$("#sparge_ph").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 100, height: 23, decimalDigits: 1, spinButtons: true, spinButtonsStep: 0.1 });