# HG changeset patch # User Michiel Broek # Date 1549895189 -3600 # Node ID ed22ac46404b7aed2ee4e11ccf55c6a1d24ee266 # Parent 36cf32fcd2107e32676107029a49187d64227907 Adjust water, hops, yeasts and miscs when the batch size or equipment changes. diff -r 36cf32fcd210 -r ed22ac46404b www/js/prod_edit.js --- a/www/js/prod_edit.js Sun Feb 10 22:08:01 2019 +0100 +++ b/www/js/prod_edit.js Mon Feb 11 15:26:29 2019 +0100 @@ -389,6 +389,104 @@ calcStage(); }; + function adjustHops(factor) { + + console.log("adjustHops("+factor+")"); + + var rowscount = $("#hopGrid").jqxGrid('getdatainformation').rowscount; + if (rowscount == 0) + return; + + for (var i = 0; i < rowscount; i++) { + var row = $("#hopGrid").jqxGrid('getrowdata', i); + var amount = row.h_amount * factor; + $("#hopGrid").jqxGrid('setcellvalue', i, "h_amount", amount); + } + }; + + function adjustMiscs(factor) { + + console.log("adjustMiscs("+factor+")"); + + var rowscount = $("#miscGrid").jqxGrid('getdatainformation').rowscount; + if (rowscount == 0) + return; + + for (var i = 0; i < rowscount; i++) { + var row = $("#miscGrid").jqxGrid('getrowdata', i); + var amount = row.m_amount * factor; + $("#miscGrid").jqxGrid('setcellvalue', i, "m_amount", amount); + switch (row.m_name) { + case 'CaCl2': $("#wa_cacl2").val(row.m_amount * 1000); + break; + case 'CaSO4': $("#wa_caso4").val(row.m_amount * 1000); + break; + case 'MgSO4': $("#wa_mgso4").val(row.m_amount * 1000); + break; + case 'NaCl': $("#wa_nacl").val(row.m_amount * 1000); + break; + case 'Melkzuur': + case 'Zoutzuur': + case 'Fosforzuur': + case 'Zwavelzuur': $("#wa_acid").val(row.m_amount * 1000); + break; + case 'NaHCO3': + case 'Na2CO3': + case 'CaCO3': + case 'Ca(OH)2': $("#wa_base").val(row.m_amount * 1000); + break; + } + } + }; + + function adjustYeasts(factor) { + + console.log("adjustYeasts("+factor+")"); + + var rowscount = $("#yeastGrid").jqxGrid('getdatainformation').rowscount; + if (rowscount == 0) + return; + + for (var i = 0; i < rowscount; i++) { + var row = $("#yeastGrid").jqxGrid('getrowdata', i); + if (row.y_form == 1) { // Only adjust dry yeast + var amount = row.y_amount * factor; + $("#yeastGrid").jqxGrid('setcellvalue', i, "y_amount", amount); + } + } + // TODO: adjust starter size + }; + + function adjustWaters(factor) { + + console.log("adjustWaters("+factor+")"); + + var rowscount = $("#mashGrid").jqxGrid('getdatainformation').rowscount; + if (rowscount == 0) + return; + + mash_infuse = 0; + for (var i = 0; i < rowscount; i++) { + var row = $("#mashGrid").jqxGrid('getrowdata', i); + if (row.step_type == 0) { // Infusion + var amount = Math.round(row.step_infuse_amount * factor * 10) / 10; + $("#mashGrid").jqxGrid('setcellvalue', i, "step_infuse_amount", amount); + mash_infuse += amount; + } + } + if (dataRecord.w2_amount == 0) { + dataRecord.w1_amount = mash_infuse; + $("#w1_amount").val(mash_infuse); + } else { + dataRecord.w1_amount = (dataRecord.w1_amount / (dataRecord.w1_amount + dataRecord.w2_amount)) * mash_infuse; + dataRecord.w2_amount = (dataRecord.w2_amount / (dataRecord.w1_amount + dataRecord.w2_amount)) * mash_infuse; + $("#w1_amount").val(dataRecord.w1_amount); + $("#w2_amount").val(dataRecord.w2_amount); + } + }; + + + function calcMashEfficiency() { // console.log("calcMashEfficiency()"); var c = sg_to_plato(est_mash_sg); @@ -1420,26 +1518,34 @@ console.log("batch_size change:"+event.args.value+" old:"+dataRecord.batch_size); $("#est_a_vol").val(event.args.value * 1.04); var new_boil = parseFloat(event.args.value) + dataRecord.boil_size - dataRecord.batch_size; + var factor = parseFloat(event.args.value) / dataRecord.batch_size; dataRecord.boil_size = new_boil; $("#boil_size").val(Math.round(new_boil * 100) / 100); $("#est_pre_vol").val(Math.round(new_boil * 1.04 * 100) / 100); + dataRecord.sparge_volume *= factor; + $("#sparge_volume").val(dataRecord.sparge_volume); dataRecord.batch_size = parseFloat(event.args.value); calcFermentablesFromOG(parseFloat($("#est_og").jqxNumberInput('decimal'))); // Keep the OG + adjustWaters(factor); calcFermentables(); - // TODO: adjust the hops, miscs, yeast, water. + adjustHops(factor); + adjustMiscs(factor); + adjustYeasts(factor); calcIBUs(); + calcWater(); + calcSparge(); }); $('#boil_time').on('change', function (event) { console.log("boil_time change:"+parseFloat(event.args.value)+" old:"+dataRecord.boil_time); var old_evap = parseFloat(dataRecord.boil_size) - parseFloat(dataRecord.batch_size); var new_evap = old_evap * (parseFloat(event.args.value) / dataRecord.boil_time); var new_boil = parseFloat(dataRecord.batch_size) + new_evap; + var factor = new_boil / dataRecord.boil_size; dataRecord.boil_time = parseFloat(event.args.value); dataRecord.boil_size = new_boil; $("#est_pre_vol").val(Math.round(new_boil * 1.04 * 100) / 100); $("#boil_size").val(Math.round(new_boil * 100) / 100); calcFermentables(); - // TODO: adjust the hops, miscs, yeast, water. calcIBUs(); }); $('#efficiency').on('change', function (event) { @@ -1601,6 +1707,7 @@ if (event.args) { var index = event.args.index; var datarecord = equipmentlist.records[index]; + var factor = datarecord.batch_size / dataRecord.batch_size; $("#eq_name").val(datarecord.name); $("#eq_boil_size").val(datarecord.boil_size); dataRecord.boil_size = datarecord.boil_size; @@ -1615,6 +1722,7 @@ dataRecord.eq_tun_material = datarecord.tun_material; dataRecord.eq_tun_height = datarecord.tun_height / 100.0; $("#eq_top_up_water").val(datarecord.top_up_water); + dataRecord.eq_trub_chiller_loss = datarecord.trub_chiller_loss; $("#eq_trub_chiller_loss").val(datarecord.trub_chiller_loss); $("#eq_evap_rate").val(datarecord.evap_rate); $("#eq_boil_time").val(datarecord.boil_time); @@ -1635,10 +1743,18 @@ dataRecord.efficiency = datarecord.efficiency; $("#efficiency").val(datarecord.efficiency); + dataRecord.sparge_volume = Math.round(datarecord.boil_size * 5) / 10; + $("#sparge_volume").val(dataRecord.sparge_volume); + $("#est_pre_vol").val(datarecord.boil_size * 1.04); calcFermentablesFromOG(parseFloat($("#est_og").jqxNumberInput('decimal'))); // Keep the OG + adjustWaters(factor); calcFermentables(); - // TODO: adjust the hops, miscs, yeast, water. + adjustHops(factor); + adjustMiscs(factor); + adjustYeasts(factor); calcIBUs(); + calcWater(); + calcSparge(); } }); diff -r 36cf32fcd210 -r ed22ac46404b www/js/rec_edit.js --- a/www/js/rec_edit.js Sun Feb 10 22:08:01 2019 +0100 +++ b/www/js/rec_edit.js Mon Feb 11 15:26:29 2019 +0100 @@ -334,6 +334,101 @@ $("#hop_aroma").jqxProgressBar('val', hop_aroma * 10); }; + function adjustHops(factor) { + + console.log("adjustHops("+factor+")"); + + var rowscount = $("#hopGrid").jqxGrid('getdatainformation').rowscount; + if (rowscount == 0) + return; + + for (var i = 0; i < rowscount; i++) { + var row = $("#hopGrid").jqxGrid('getrowdata', i); + var amount = row.h_amount * factor; + $("#hopGrid").jqxGrid('setcellvalue', i, "h_amount", amount); + } + }; + + function adjustMiscs(factor) { + + console.log("adjustMiscs("+factor+")"); + + var rowscount = $("#miscGrid").jqxGrid('getdatainformation').rowscount; + if (rowscount == 0) + return; + + for (var i = 0; i < rowscount; i++) { + var row = $("#miscGrid").jqxGrid('getrowdata', i); + var amount = row.m_amount * factor; + $("#miscGrid").jqxGrid('setcellvalue', i, "m_amount", amount); + switch (row.m_name) { + case 'CaCl2': $("#wa_cacl2").val(row.m_amount * 1000); + break; + case 'CaSO4': $("#wa_caso4").val(row.m_amount * 1000); + break; + case 'MgSO4': $("#wa_mgso4").val(row.m_amount * 1000); + break; + case 'NaCl': $("#wa_nacl").val(row.m_amount * 1000); + break; + case 'Melkzuur': + case 'Zoutzuur': + case 'Fosforzuur': + case 'Zwavelzuur': $("#wa_acid").val(row.m_amount * 1000); + break; + case 'NaHCO3': + case 'Na2CO3': + case 'CaCO3': + case 'Ca(OH)2': $("#wa_base").val(row.m_amount * 1000); + break; + } + } + }; + + function adjustYeasts(factor) { + + console.log("adjustYeasts("+factor+")"); + + var rowscount = $("#yeastGrid").jqxGrid('getdatainformation').rowscount; + if (rowscount == 0) + return; + + for (var i = 0; i < rowscount; i++) { + var row = $("#yeastGrid").jqxGrid('getrowdata', i); + if (row.y_form == 1) { // Only adjust dry yeast + var amount = row.y_amount * factor; + $("#yeastGrid").jqxGrid('setcellvalue', i, "y_amount", amount); + } + } + }; + + function adjustWaters(factor) { + + console.log("adjustWaters("+factor+")"); + + var rowscount = $("#mashGrid").jqxGrid('getdatainformation').rowscount; + if (rowscount == 0) + return; + + mash_infuse = 0; + for (var i = 0; i < rowscount; i++) { + var row = $("#mashGrid").jqxGrid('getrowdata', i); + if (row.step_type == 0) { // Infusion + var amount = Math.round(row.step_infuse_amount * factor * 10) / 10; + $("#mashGrid").jqxGrid('setcellvalue', i, "step_infuse_amount", amount); + mash_infuse += amount; + } + } + if (dataRecord.w2_amount == 0) { + dataRecord.w1_amount = mash_infuse; + $("#w1_amount").val(mash_infuse); + } else { + dataRecord.w1_amount = (dataRecord.w1_amount / (dataRecord.w1_amount + dataRecord.w2_amount)) * mash_infuse; + dataRecord.w2_amount = (dataRecord.w2_amount / (dataRecord.w1_amount + dataRecord.w2_amount)) * mash_infuse; + $("#w1_amount").val(dataRecord.w1_amount); + $("#w2_amount").val(dataRecord.w2_amount); + } + }; + /* function GetBUGUMin() { var Result = 0; @@ -1194,13 +1289,21 @@ $('#batch_size').on('change', function (event) { console.log("batch_size change:"+event.args.value+" old:"+dataRecord.batch_size); var new_boil = parseFloat(event.args.value) + dataRecord.boil_size - dataRecord.batch_size; + var factor = parseFloat(event.args.value) / dataRecord.batch_size; dataRecord.boil_size = new_boil; $("#boil_size").val(Math.round(new_boil * 100) / 100); + dataRecord.sparge_volume *= factor; + $("#sparge_volume").val(dataRecord.sparge_volume); dataRecord.batch_size = parseFloat(event.args.value); calcFermentablesFromOG(parseFloat($("#est_og").jqxNumberInput('decimal'))); // Keep the OG + adjustWaters(factor); calcFermentables(); - // TODO: adjust the hops, miscs, yeast, water. + adjustHops(factor); + adjustMiscs(factor); + adjustYeasts(factor); calcIBUs(); + calcWater(); + calcSparge(); }); $('#boil_time').on('change', function (event) { console.log("boil_time change:"+parseFloat(event.args.value)+" old:"+dataRecord.boil_time);