diff -r 0c719ea7e680 -r 99a7f2a6976e www/js/prod_edit.js --- a/www/js/prod_edit.js Sat Jun 15 19:41:44 2019 +0200 +++ b/www/js/prod_edit.js Thu Jun 20 13:55:12 2019 +0200 @@ -1836,7 +1836,20 @@ var ABV = abvol(dataRecord.brew_fermenter_sg, parseFloat($("#est_fg").jqxNumberInput('decimal'))); else var ABV = abvol(dataRecord.brew_fermenter_sg, dataRecord.fg); - ABV = Math.round(ABV * 100) / 100; + + /* + * Calculate new volume and alcohol. + */ + var bvol = dataRecord.package_volume - (ABV * dataRecord.package_volume) / 100; + var balc = dataRecord.package_volume - bvol; + var mvol = dataRecord.package_infuse_amount - (dataRecord.package_infuse_abv * dataRecord.package_infuse_amount) / 100; + var malc = dataRecord.package_infuse_amount - mvol; + var talc = balc + malc; + var tvol = bvol + mvol; + ABV = Math.round(talc / (tvol + talc) * 10000) / 100; + //console.log("bvol:"+bvol+" balc:"+balc+" mvol:"+mvol+" malc:"+malc+" tvol:"+tvol+" talc:"+talc+" abv:"+ABV+" vol:"+(tvol + talc)); + dataRecord.package_abv = ABV; + $("#package_abv").val(ABV); console.log("calcCarbonation() TSec:"+TSec+" ABV:"+ABV); if (!(rows = $('#fermentableGrid').jqxGrid('getrows'))) { @@ -2374,12 +2387,70 @@ calcFermentation(); calcCarbonation(); + $('#package_volume').on('change', function (event) { + var told = dataRecord.package_volume + dataRecord.package_infuse_amount; + dataRecord.package_volume = parseFloat(event.args.value); + if (dataRecord.package_volume > dataRecord.brew_fermenter_volume) { + dataRecord.package_volume = dataRecord.brew_fermenter_volume; + $('#package_volume').val(dataRecord.package_volume); + } + var tnew = dataRecord.package_volume + dataRecord.package_infuse_amount; + var diff = tnew - told; + if (told > 0) { + dataRecord.bottle_amount += (dataRecord.bottle_amount / told) * diff; + dataRecord.keg_amount += (dataRecord.keg_amount / told) * diff; + } else { + dataRecord.bottle_amount = tnew; + dataRecord.keg_amount = 0; + } + console.log("diff:"+diff+" old:"+told+" bottle:"+dataRecord.bottle_amount+" keg:"+dataRecord.keg_amount); + $('#bottle_amount').val(parseFloat(dataRecord.bottle_amount * 1000) / 1000); + $('#keg_amount').val(parseFloat(dataRecord.keg_amount * 1000) / 1000); + calcCarbonation(); + }); + $('#package_infuse_amount').on('change', function (event) { + var told = dataRecord.package_volume + dataRecord.package_infuse_amount; + dataRecord.package_infuse_amount = parseFloat(event.args.value); + var tnew = dataRecord.package_volume + dataRecord.package_infuse_amount; + var diff = tnew - told; + if (told > 0) { + dataRecord.bottle_amount += (dataRecord.bottle_amount / told) * diff; + dataRecord.keg_amount += (dataRecord.keg_amount / told) * diff; + } else { + dataRecord.bottle_amount = tnew; + dataRecord.keg_amount = 0; + } + console.log("diff:"+diff+" old:"+told+" bottle:"+dataRecord.bottle_amount+" keg:"+dataRecord.keg_amount); + $('#bottle_amount').val(parseFloat(dataRecord.bottle_amount * 1000) / 1000); + $('#keg_amount').val(parseFloat(dataRecord.keg_amount * 1000) / 1000); + calcCarbonation(); + }); + $('#package_infuse_abv').on('change', function (event) { + dataRecord.package_infuse_abv = parseFloat(event.args.value); + calcCarbonation(); + }); $('#bottle_amount').on('change', function (event) { - dataRecord.bottle_amount = parseFloat(event.args.value); + var vnew = parseFloat(event.args.value); + var vtot = dataRecord.package_volume + dataRecord.package_infuse_amount; + if (vnew > vtot) + vnew = vtot; + diff = dataRecord.bottle_amount - vnew; + dataRecord.bottle_amount = Math.round((dataRecord.bottle_amount - diff) * 1000) / 1000; + dataRecord.keg_amount = Math.round((dataRecord.keg_amount + diff) * 1000) / 1000; + $('#bottle_amount').val(parseFloat(dataRecord.bottle_amount)); + $('#keg_amount').val(parseFloat(dataRecord.keg_amount)); calcCarbonation(); }); $('#keg_amount').on('change', function (event) { - dataRecord.keg_amount = parseFloat(event.args.value); + var vnew = parseFloat(event.args.value); + var vtot = dataRecord.package_volume + dataRecord.package_infuse_amount; + if (vnew > vtot) + vnew = vtot; + diff = dataRecord.keg_amount - vnew; + dataRecord.bottle_amount = Math.round((dataRecord.bottle_amount + diff) * 1000) / 1000; + dataRecord.keg_amount = Math.round((dataRecord.keg_amount - diff) * 1000) / 1000; + $('#bottle_amount').val(parseFloat(dataRecord.bottle_amount)); + $('#keg_amount').val(parseFloat(dataRecord.keg_amount)); calcCarbonation(); }); $('#bottle_carbonation').on('change', function (event) { @@ -2664,14 +2735,19 @@ secondary_end_date: $("#secondary_end_date").val(), tertiary_temp: parseFloat($("#tertiary_temp").jqxNumberInput('decimal')), package_date: $("#package_date").val(), + package_volume: parseFloat($("#package_volume").jqxNumberInput('decimal')), + package_infuse_amount: parseFloat($("#package_infuse_amount").jqxNumberInput('decimal')), + package_infuse_abv: parseFloat($("#package_infuse_abv").jqxNumberInput('decimal')), + package_infuse_notes: $("#package_infuse_notes").val(), + package_abv: parseFloat($("#package_abv").jqxNumberInput('decimal')), bottle_amount: parseFloat($("#bottle_amount").jqxNumberInput('decimal')), bottle_carbonation: parseFloat($("#bottle_carbonation").jqxNumberInput('decimal')), - //bottle_priming_sugar: $("#bottle_priming_sugar").val(), + bottle_priming_water: $("#bottle_priming_water").val(), bottle_priming_amount: parseFloat($("#bottle_priming_amount").jqxNumberInput('decimal')), bottle_carbonation_temp: parseFloat($("#bottle_carbonation_temp").jqxNumberInput('decimal')), keg_amount: parseFloat($("#keg_amount").jqxNumberInput('decimal')), keg_carbonation: parseFloat($("#keg_carbonation").jqxNumberInput('decimal')), - //keg_priming_sugar: $("#keg_priming_sugar").val(), + keg_priming_water: $("#keg_priming_water").val(), keg_priming_amount: parseFloat($("#keg_priming_amount").jqxNumberInput('decimal')), keg_carbonation_temp: parseFloat($("#keg_carbonation_temp").jqxNumberInput('decimal')), keg_forced_carb: dataRecord.keg_forced_carb, @@ -2887,14 +2963,19 @@ { name: 'secondary_end_date', type: 'string' }, { name: 'tertiary_temp', type: 'float' }, { name: 'package_date', type: 'string' }, + { name: 'package_volume', type: 'float' }, + { name: 'package_infuse_amount', type: 'float' }, + { name: 'package_infuse_abv', type: 'float' }, + { name: 'package_infuse_notes', type: 'string' }, + { name: 'package_abv', type: 'float' }, { name: 'bottle_amount', type: 'float' }, { name: 'bottle_carbonation', type: 'float' }, - //{ name: 'bottle_priming_sugar', type: 'int' }, + { name: 'bottle_priming_water', type: 'int' }, { name: 'bottle_priming_amount', type: 'float' }, { name: 'bottle_carbonation_temp', type: 'float' }, { name: 'keg_amount', type: 'float' }, { name: 'keg_carbonation', type: 'float' }, - //{ name: 'keg_priming_sugar', type: 'int' }, + { name: 'keg_priming_water', type: 'int' }, { name: 'keg_priming_amount', type: 'float' }, { name: 'keg_carbonation_temp', type: 'float' }, { name: 'keg_forced_carb', type: 'int' }, @@ -3091,14 +3172,19 @@ $("#secondary_end_date").val(dataRecord.secondary_end_date); $("#tertiary_temp").val(dataRecord.tertiary_temp); $("#package_date").val(dataRecord.package_date); + $("#package_volume").val(dataRecord.package_volume); + $("#package_infuse_amount").val(dataRecord.package_infuse_amount); + $("#package_infuse_abv").val(dataRecord.package_infuse_abv); + $("#package_infuse_notes").val(dataRecord.package_infuse_notes); + $("#package_abv").val(dataRecord.package_abv); $("#bottle_amount").val(dataRecord.bottle_amount); $("#bottle_carbonation").val(dataRecord.bottle_carbonation); - //$("#bottle_priming_sugar").val(dataRecord.bottle_priming_sugar); + $("#bottle_priming_water").val(dataRecord.bottle_priming_water); $("#bottle_priming_amount").val(dataRecord.bottle_priming_amount); $("#bottle_carbonation_temp").val(dataRecord.bottle_carbonation_temp); $("#keg_amount").val(dataRecord.keg_amount); $("#keg_carbonation").val(dataRecord.keg_carbonation); - //$("#keg_priming_sugar").val(dataRecord.keg_priming_sugar); + $("#keg_priming_water").val(dataRecord.keg_priming_water); $("#keg_priming_amount").val(dataRecord.keg_priming_amount); $("#keg_carbonation_temp").val(dataRecord.keg_carbonation_temp); $("#keg_forced_carb").val(dataRecord.keg_forced_carb); @@ -5697,6 +5783,16 @@ $("#package_date").jqxTooltip({ content: 'De verpakkings datum van dit bier.' }); $("#package_date").jqxDateTimeInput( Dateopts ); $('#package_date').on('close', function (event) { calcStage(); }); + $('#package_volume').jqxTooltip({ content: 'Het beschikbare volume om te bottelen of op fust te zetten.' }); + $('#package_volume').jqxNumberInput( Spin1dec ); + $('#package_infuse_amount').jqxTooltip({ content: 'De hoeveelheid water of drank extra toe te voegen.' }); + $('#package_infuse_amount').jqxNumberInput( Spin3dec ); + $('#package_infuse_abv').jqxTooltip({ content: 'De hoeveelheid alcohol in de drank, of 0.0 als het water is.' }); + $('#package_infuse_abv').jqxNumberInput( Spin1dec ); + $('#package_infuse_notes').jqxTooltip({ content: 'Omschrijving van de extra toevoeging.' }); + $('#package_infuse_notes').jqxInput({ theme: theme, width: 640, height: 23 }); + $('#package_abv').jqxTooltip({ content: 'De uiteindelijke hoeveelheid alcohol volume %.' }); + $('#package_abv').jqxNumberInput( Show1dec ); $("#st_carb_min2").jqxTooltip({ content: 'Het minimum aanbevolen koolzuur volume voor deze bierstijl.'}); $("#st_carb_min2").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 50, height: 23, decimalDigits: 1, readOnly: true }); $("#st_carb_max2").jqxTooltip({ content: 'Het maximum aamnevolen koolzuur volume voor deze bierstijl.'}); @@ -5820,9 +5916,13 @@ } }); $("#bottle_priming_amount").jqxNumberInput( Show1dec ); + $("#bottle_priming_water").jqxTooltip({ content: 'De hoeveelheid water om de suiker op te lossen.' }); + $("#bottle_priming_water").jqxNumberInput( Spin3dec ); $("#keg_priming_amount").jqxNumberInput( Show1dec ); + $("#keg_priming_water").jqxTooltip({ content: 'De hoeveelheid water om de suiker op te lossen.' }); + $("#keg_priming_water").jqxNumberInput( Spin3dec ); $("#bottle_priming_total").jqxNumberInput( Show1dec ); - $("#bottle_pressure").jqxTooltip({ content: 'De maximal te verwachten druk tijdens het hergisten.' }); + $("#bottle_pressure").jqxTooltip({ content: 'De maximaal te verwachten druk tijdens het hergisten.' }); $("#bottle_pressure").jqxNumberInput( Show1dec ); $("#keg_priming_total").jqxNumberInput( Show1dec ); $("#keg_forced_carb").jqxCheckBox({ theme: theme, width: 120, height: 23 });