1834 |
1834 |
1835 if (dataRecord.fg == 0.000) |
1835 if (dataRecord.fg == 0.000) |
1836 var ABV = abvol(dataRecord.brew_fermenter_sg, parseFloat($("#est_fg").jqxNumberInput('decimal'))); |
1836 var ABV = abvol(dataRecord.brew_fermenter_sg, parseFloat($("#est_fg").jqxNumberInput('decimal'))); |
1837 else |
1837 else |
1838 var ABV = abvol(dataRecord.brew_fermenter_sg, dataRecord.fg); |
1838 var ABV = abvol(dataRecord.brew_fermenter_sg, dataRecord.fg); |
1839 ABV = Math.round(ABV * 100) / 100; |
1839 |
|
1840 /* |
|
1841 * Calculate new volume and alcohol. |
|
1842 */ |
|
1843 var bvol = dataRecord.package_volume - (ABV * dataRecord.package_volume) / 100; |
|
1844 var balc = dataRecord.package_volume - bvol; |
|
1845 var mvol = dataRecord.package_infuse_amount - (dataRecord.package_infuse_abv * dataRecord.package_infuse_amount) / 100; |
|
1846 var malc = dataRecord.package_infuse_amount - mvol; |
|
1847 var talc = balc + malc; |
|
1848 var tvol = bvol + mvol; |
|
1849 ABV = Math.round(talc / (tvol + talc) * 10000) / 100; |
|
1850 //console.log("bvol:"+bvol+" balc:"+balc+" mvol:"+mvol+" malc:"+malc+" tvol:"+tvol+" talc:"+talc+" abv:"+ABV+" vol:"+(tvol + talc)); |
|
1851 dataRecord.package_abv = ABV; |
|
1852 $("#package_abv").val(ABV); |
1840 |
1853 |
1841 console.log("calcCarbonation() TSec:"+TSec+" ABV:"+ABV); |
1854 console.log("calcCarbonation() TSec:"+TSec+" ABV:"+ABV); |
1842 if (!(rows = $('#fermentableGrid').jqxGrid('getrows'))) { |
1855 if (!(rows = $('#fermentableGrid').jqxGrid('getrows'))) { |
1843 return; // grid not yet loaded. |
1856 return; // grid not yet loaded. |
1844 } |
1857 } |
2372 calcSparge(); |
2385 calcSparge(); |
2373 }); |
2386 }); |
2374 |
2387 |
2375 calcFermentation(); |
2388 calcFermentation(); |
2376 calcCarbonation(); |
2389 calcCarbonation(); |
|
2390 $('#package_volume').on('change', function (event) { |
|
2391 var told = dataRecord.package_volume + dataRecord.package_infuse_amount; |
|
2392 dataRecord.package_volume = parseFloat(event.args.value); |
|
2393 if (dataRecord.package_volume > dataRecord.brew_fermenter_volume) { |
|
2394 dataRecord.package_volume = dataRecord.brew_fermenter_volume; |
|
2395 $('#package_volume').val(dataRecord.package_volume); |
|
2396 } |
|
2397 var tnew = dataRecord.package_volume + dataRecord.package_infuse_amount; |
|
2398 var diff = tnew - told; |
|
2399 if (told > 0) { |
|
2400 dataRecord.bottle_amount += (dataRecord.bottle_amount / told) * diff; |
|
2401 dataRecord.keg_amount += (dataRecord.keg_amount / told) * diff; |
|
2402 } else { |
|
2403 dataRecord.bottle_amount = tnew; |
|
2404 dataRecord.keg_amount = 0; |
|
2405 } |
|
2406 console.log("diff:"+diff+" old:"+told+" bottle:"+dataRecord.bottle_amount+" keg:"+dataRecord.keg_amount); |
|
2407 $('#bottle_amount').val(parseFloat(dataRecord.bottle_amount * 1000) / 1000); |
|
2408 $('#keg_amount').val(parseFloat(dataRecord.keg_amount * 1000) / 1000); |
|
2409 calcCarbonation(); |
|
2410 }); |
|
2411 $('#package_infuse_amount').on('change', function (event) { |
|
2412 var told = dataRecord.package_volume + dataRecord.package_infuse_amount; |
|
2413 dataRecord.package_infuse_amount = parseFloat(event.args.value); |
|
2414 var tnew = dataRecord.package_volume + dataRecord.package_infuse_amount; |
|
2415 var diff = tnew - told; |
|
2416 if (told > 0) { |
|
2417 dataRecord.bottle_amount += (dataRecord.bottle_amount / told) * diff; |
|
2418 dataRecord.keg_amount += (dataRecord.keg_amount / told) * diff; |
|
2419 } else { |
|
2420 dataRecord.bottle_amount = tnew; |
|
2421 dataRecord.keg_amount = 0; |
|
2422 } |
|
2423 console.log("diff:"+diff+" old:"+told+" bottle:"+dataRecord.bottle_amount+" keg:"+dataRecord.keg_amount); |
|
2424 $('#bottle_amount').val(parseFloat(dataRecord.bottle_amount * 1000) / 1000); |
|
2425 $('#keg_amount').val(parseFloat(dataRecord.keg_amount * 1000) / 1000); |
|
2426 calcCarbonation(); |
|
2427 }); |
|
2428 $('#package_infuse_abv').on('change', function (event) { |
|
2429 dataRecord.package_infuse_abv = parseFloat(event.args.value); |
|
2430 calcCarbonation(); |
|
2431 }); |
2377 $('#bottle_amount').on('change', function (event) { |
2432 $('#bottle_amount').on('change', function (event) { |
2378 dataRecord.bottle_amount = parseFloat(event.args.value); |
2433 var vnew = parseFloat(event.args.value); |
|
2434 var vtot = dataRecord.package_volume + dataRecord.package_infuse_amount; |
|
2435 if (vnew > vtot) |
|
2436 vnew = vtot; |
|
2437 diff = dataRecord.bottle_amount - vnew; |
|
2438 dataRecord.bottle_amount = Math.round((dataRecord.bottle_amount - diff) * 1000) / 1000; |
|
2439 dataRecord.keg_amount = Math.round((dataRecord.keg_amount + diff) * 1000) / 1000; |
|
2440 $('#bottle_amount').val(parseFloat(dataRecord.bottle_amount)); |
|
2441 $('#keg_amount').val(parseFloat(dataRecord.keg_amount)); |
2379 calcCarbonation(); |
2442 calcCarbonation(); |
2380 }); |
2443 }); |
2381 $('#keg_amount').on('change', function (event) { |
2444 $('#keg_amount').on('change', function (event) { |
2382 dataRecord.keg_amount = parseFloat(event.args.value); |
2445 var vnew = parseFloat(event.args.value); |
|
2446 var vtot = dataRecord.package_volume + dataRecord.package_infuse_amount; |
|
2447 if (vnew > vtot) |
|
2448 vnew = vtot; |
|
2449 diff = dataRecord.keg_amount - vnew; |
|
2450 dataRecord.bottle_amount = Math.round((dataRecord.bottle_amount + diff) * 1000) / 1000; |
|
2451 dataRecord.keg_amount = Math.round((dataRecord.keg_amount - diff) * 1000) / 1000; |
|
2452 $('#bottle_amount').val(parseFloat(dataRecord.bottle_amount)); |
|
2453 $('#keg_amount').val(parseFloat(dataRecord.keg_amount)); |
2383 calcCarbonation(); |
2454 calcCarbonation(); |
2384 }); |
2455 }); |
2385 $('#bottle_carbonation').on('change', function (event) { |
2456 $('#bottle_carbonation').on('change', function (event) { |
2386 dataRecord.bottle_carbonation = parseFloat(event.args.value); |
2457 dataRecord.bottle_carbonation = parseFloat(event.args.value); |
2387 calcCarbonation(); |
2458 calcCarbonation(); |
2662 primary_end_date: $("#primary_end_date").val(), |
2733 primary_end_date: $("#primary_end_date").val(), |
2663 secondary_temp: parseFloat($("#secondary_temp").jqxNumberInput('decimal')), |
2734 secondary_temp: parseFloat($("#secondary_temp").jqxNumberInput('decimal')), |
2664 secondary_end_date: $("#secondary_end_date").val(), |
2735 secondary_end_date: $("#secondary_end_date").val(), |
2665 tertiary_temp: parseFloat($("#tertiary_temp").jqxNumberInput('decimal')), |
2736 tertiary_temp: parseFloat($("#tertiary_temp").jqxNumberInput('decimal')), |
2666 package_date: $("#package_date").val(), |
2737 package_date: $("#package_date").val(), |
|
2738 package_volume: parseFloat($("#package_volume").jqxNumberInput('decimal')), |
|
2739 package_infuse_amount: parseFloat($("#package_infuse_amount").jqxNumberInput('decimal')), |
|
2740 package_infuse_abv: parseFloat($("#package_infuse_abv").jqxNumberInput('decimal')), |
|
2741 package_infuse_notes: $("#package_infuse_notes").val(), |
|
2742 package_abv: parseFloat($("#package_abv").jqxNumberInput('decimal')), |
2667 bottle_amount: parseFloat($("#bottle_amount").jqxNumberInput('decimal')), |
2743 bottle_amount: parseFloat($("#bottle_amount").jqxNumberInput('decimal')), |
2668 bottle_carbonation: parseFloat($("#bottle_carbonation").jqxNumberInput('decimal')), |
2744 bottle_carbonation: parseFloat($("#bottle_carbonation").jqxNumberInput('decimal')), |
2669 //bottle_priming_sugar: $("#bottle_priming_sugar").val(), |
2745 bottle_priming_water: $("#bottle_priming_water").val(), |
2670 bottle_priming_amount: parseFloat($("#bottle_priming_amount").jqxNumberInput('decimal')), |
2746 bottle_priming_amount: parseFloat($("#bottle_priming_amount").jqxNumberInput('decimal')), |
2671 bottle_carbonation_temp: parseFloat($("#bottle_carbonation_temp").jqxNumberInput('decimal')), |
2747 bottle_carbonation_temp: parseFloat($("#bottle_carbonation_temp").jqxNumberInput('decimal')), |
2672 keg_amount: parseFloat($("#keg_amount").jqxNumberInput('decimal')), |
2748 keg_amount: parseFloat($("#keg_amount").jqxNumberInput('decimal')), |
2673 keg_carbonation: parseFloat($("#keg_carbonation").jqxNumberInput('decimal')), |
2749 keg_carbonation: parseFloat($("#keg_carbonation").jqxNumberInput('decimal')), |
2674 //keg_priming_sugar: $("#keg_priming_sugar").val(), |
2750 keg_priming_water: $("#keg_priming_water").val(), |
2675 keg_priming_amount: parseFloat($("#keg_priming_amount").jqxNumberInput('decimal')), |
2751 keg_priming_amount: parseFloat($("#keg_priming_amount").jqxNumberInput('decimal')), |
2676 keg_carbonation_temp: parseFloat($("#keg_carbonation_temp").jqxNumberInput('decimal')), |
2752 keg_carbonation_temp: parseFloat($("#keg_carbonation_temp").jqxNumberInput('decimal')), |
2677 keg_forced_carb: dataRecord.keg_forced_carb, |
2753 keg_forced_carb: dataRecord.keg_forced_carb, |
2678 keg_pressure: parseFloat($("#keg_pressure").jqxNumberInput('decimal')), |
2754 keg_pressure: parseFloat($("#keg_pressure").jqxNumberInput('decimal')), |
2679 taste_notes: $("#taste_notes").val(), |
2755 taste_notes: $("#taste_notes").val(), |
2885 { name: 'primary_end_date', type: 'string' }, |
2961 { name: 'primary_end_date', type: 'string' }, |
2886 { name: 'secondary_temp', type: 'float' }, |
2962 { name: 'secondary_temp', type: 'float' }, |
2887 { name: 'secondary_end_date', type: 'string' }, |
2963 { name: 'secondary_end_date', type: 'string' }, |
2888 { name: 'tertiary_temp', type: 'float' }, |
2964 { name: 'tertiary_temp', type: 'float' }, |
2889 { name: 'package_date', type: 'string' }, |
2965 { name: 'package_date', type: 'string' }, |
|
2966 { name: 'package_volume', type: 'float' }, |
|
2967 { name: 'package_infuse_amount', type: 'float' }, |
|
2968 { name: 'package_infuse_abv', type: 'float' }, |
|
2969 { name: 'package_infuse_notes', type: 'string' }, |
|
2970 { name: 'package_abv', type: 'float' }, |
2890 { name: 'bottle_amount', type: 'float' }, |
2971 { name: 'bottle_amount', type: 'float' }, |
2891 { name: 'bottle_carbonation', type: 'float' }, |
2972 { name: 'bottle_carbonation', type: 'float' }, |
2892 //{ name: 'bottle_priming_sugar', type: 'int' }, |
2973 { name: 'bottle_priming_water', type: 'int' }, |
2893 { name: 'bottle_priming_amount', type: 'float' }, |
2974 { name: 'bottle_priming_amount', type: 'float' }, |
2894 { name: 'bottle_carbonation_temp', type: 'float' }, |
2975 { name: 'bottle_carbonation_temp', type: 'float' }, |
2895 { name: 'keg_amount', type: 'float' }, |
2976 { name: 'keg_amount', type: 'float' }, |
2896 { name: 'keg_carbonation', type: 'float' }, |
2977 { name: 'keg_carbonation', type: 'float' }, |
2897 //{ name: 'keg_priming_sugar', type: 'int' }, |
2978 { name: 'keg_priming_water', type: 'int' }, |
2898 { name: 'keg_priming_amount', type: 'float' }, |
2979 { name: 'keg_priming_amount', type: 'float' }, |
2899 { name: 'keg_carbonation_temp', type: 'float' }, |
2980 { name: 'keg_carbonation_temp', type: 'float' }, |
2900 { name: 'keg_forced_carb', type: 'int' }, |
2981 { name: 'keg_forced_carb', type: 'int' }, |
2901 { name: 'keg_pressure', type: 'float' }, |
2982 { name: 'keg_pressure', type: 'float' }, |
2902 { name: 'taste_notes', type: 'string' }, |
2983 { name: 'taste_notes', type: 'string' }, |
3089 $("#primary_end_date").val(dataRecord.primary_end_date); |
3170 $("#primary_end_date").val(dataRecord.primary_end_date); |
3090 $("#secondary_temp").val(dataRecord.secondary_temp); |
3171 $("#secondary_temp").val(dataRecord.secondary_temp); |
3091 $("#secondary_end_date").val(dataRecord.secondary_end_date); |
3172 $("#secondary_end_date").val(dataRecord.secondary_end_date); |
3092 $("#tertiary_temp").val(dataRecord.tertiary_temp); |
3173 $("#tertiary_temp").val(dataRecord.tertiary_temp); |
3093 $("#package_date").val(dataRecord.package_date); |
3174 $("#package_date").val(dataRecord.package_date); |
|
3175 $("#package_volume").val(dataRecord.package_volume); |
|
3176 $("#package_infuse_amount").val(dataRecord.package_infuse_amount); |
|
3177 $("#package_infuse_abv").val(dataRecord.package_infuse_abv); |
|
3178 $("#package_infuse_notes").val(dataRecord.package_infuse_notes); |
|
3179 $("#package_abv").val(dataRecord.package_abv); |
3094 $("#bottle_amount").val(dataRecord.bottle_amount); |
3180 $("#bottle_amount").val(dataRecord.bottle_amount); |
3095 $("#bottle_carbonation").val(dataRecord.bottle_carbonation); |
3181 $("#bottle_carbonation").val(dataRecord.bottle_carbonation); |
3096 //$("#bottle_priming_sugar").val(dataRecord.bottle_priming_sugar); |
3182 $("#bottle_priming_water").val(dataRecord.bottle_priming_water); |
3097 $("#bottle_priming_amount").val(dataRecord.bottle_priming_amount); |
3183 $("#bottle_priming_amount").val(dataRecord.bottle_priming_amount); |
3098 $("#bottle_carbonation_temp").val(dataRecord.bottle_carbonation_temp); |
3184 $("#bottle_carbonation_temp").val(dataRecord.bottle_carbonation_temp); |
3099 $("#keg_amount").val(dataRecord.keg_amount); |
3185 $("#keg_amount").val(dataRecord.keg_amount); |
3100 $("#keg_carbonation").val(dataRecord.keg_carbonation); |
3186 $("#keg_carbonation").val(dataRecord.keg_carbonation); |
3101 //$("#keg_priming_sugar").val(dataRecord.keg_priming_sugar); |
3187 $("#keg_priming_water").val(dataRecord.keg_priming_water); |
3102 $("#keg_priming_amount").val(dataRecord.keg_priming_amount); |
3188 $("#keg_priming_amount").val(dataRecord.keg_priming_amount); |
3103 $("#keg_carbonation_temp").val(dataRecord.keg_carbonation_temp); |
3189 $("#keg_carbonation_temp").val(dataRecord.keg_carbonation_temp); |
3104 $("#keg_forced_carb").val(dataRecord.keg_forced_carb); |
3190 $("#keg_forced_carb").val(dataRecord.keg_forced_carb); |
3105 $("#keg_pressure").val(dataRecord.keg_pressure); |
3191 $("#keg_pressure").val(dataRecord.keg_pressure); |
3106 $("#taste_notes").val(dataRecord.taste_notes); |
3192 $("#taste_notes").val(dataRecord.taste_notes); |
5695 // Tab 11, Packaging |
5781 // Tab 11, Packaging |
5696 // TODO: high gravity packaging, extra water and recalc abv, color and ibu. |
5782 // TODO: high gravity packaging, extra water and recalc abv, color and ibu. |
5697 $("#package_date").jqxTooltip({ content: 'De verpakkings datum van dit bier.' }); |
5783 $("#package_date").jqxTooltip({ content: 'De verpakkings datum van dit bier.' }); |
5698 $("#package_date").jqxDateTimeInput( Dateopts ); |
5784 $("#package_date").jqxDateTimeInput( Dateopts ); |
5699 $('#package_date').on('close', function (event) { calcStage(); }); |
5785 $('#package_date').on('close', function (event) { calcStage(); }); |
|
5786 $('#package_volume').jqxTooltip({ content: 'Het beschikbare volume om te bottelen of op fust te zetten.' }); |
|
5787 $('#package_volume').jqxNumberInput( Spin1dec ); |
|
5788 $('#package_infuse_amount').jqxTooltip({ content: 'De hoeveelheid water of drank extra toe te voegen.' }); |
|
5789 $('#package_infuse_amount').jqxNumberInput( Spin3dec ); |
|
5790 $('#package_infuse_abv').jqxTooltip({ content: 'De hoeveelheid alcohol in de drank, of 0.0 als het water is.' }); |
|
5791 $('#package_infuse_abv').jqxNumberInput( Spin1dec ); |
|
5792 $('#package_infuse_notes').jqxTooltip({ content: 'Omschrijving van de extra toevoeging.' }); |
|
5793 $('#package_infuse_notes').jqxInput({ theme: theme, width: 640, height: 23 }); |
|
5794 $('#package_abv').jqxTooltip({ content: 'De uiteindelijke hoeveelheid alcohol volume %.' }); |
|
5795 $('#package_abv').jqxNumberInput( Show1dec ); |
5700 $("#st_carb_min2").jqxTooltip({ content: 'Het minimum aanbevolen koolzuur volume voor deze bierstijl.'}); |
5796 $("#st_carb_min2").jqxTooltip({ content: 'Het minimum aanbevolen koolzuur volume voor deze bierstijl.'}); |
5701 $("#st_carb_min2").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 50, height: 23, decimalDigits: 1, readOnly: true }); |
5797 $("#st_carb_min2").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 50, height: 23, decimalDigits: 1, readOnly: true }); |
5702 $("#st_carb_max2").jqxTooltip({ content: 'Het maximum aamnevolen koolzuur volume voor deze bierstijl.'}); |
5798 $("#st_carb_max2").jqxTooltip({ content: 'Het maximum aamnevolen koolzuur volume voor deze bierstijl.'}); |
5703 $("#st_carb_max2").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 50, height: 23, decimalDigits: 1, readOnly: true }); |
5799 $("#st_carb_max2").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 50, height: 23, decimalDigits: 1, readOnly: true }); |
5704 $("#bottle_amount").jqxTooltip({ content: 'De totale hoeveelheid te bottelen bier.' }); |
5800 $("#bottle_amount").jqxTooltip({ content: 'De totale hoeveelheid te bottelen bier.' }); |
5818 } |
5914 } |
5819 calcCarbonation(); |
5915 calcCarbonation(); |
5820 } |
5916 } |
5821 }); |
5917 }); |
5822 $("#bottle_priming_amount").jqxNumberInput( Show1dec ); |
5918 $("#bottle_priming_amount").jqxNumberInput( Show1dec ); |
|
5919 $("#bottle_priming_water").jqxTooltip({ content: 'De hoeveelheid water om de suiker op te lossen.' }); |
|
5920 $("#bottle_priming_water").jqxNumberInput( Spin3dec ); |
5823 $("#keg_priming_amount").jqxNumberInput( Show1dec ); |
5921 $("#keg_priming_amount").jqxNumberInput( Show1dec ); |
|
5922 $("#keg_priming_water").jqxTooltip({ content: 'De hoeveelheid water om de suiker op te lossen.' }); |
|
5923 $("#keg_priming_water").jqxNumberInput( Spin3dec ); |
5824 $("#bottle_priming_total").jqxNumberInput( Show1dec ); |
5924 $("#bottle_priming_total").jqxNumberInput( Show1dec ); |
5825 $("#bottle_pressure").jqxTooltip({ content: 'De maximal te verwachten druk tijdens het hergisten.' }); |
5925 $("#bottle_pressure").jqxTooltip({ content: 'De maximaal te verwachten druk tijdens het hergisten.' }); |
5826 $("#bottle_pressure").jqxNumberInput( Show1dec ); |
5926 $("#bottle_pressure").jqxNumberInput( Show1dec ); |
5827 $("#keg_priming_total").jqxNumberInput( Show1dec ); |
5927 $("#keg_priming_total").jqxNumberInput( Show1dec ); |
5828 $("#keg_forced_carb").jqxCheckBox({ theme: theme, width: 120, height: 23 }); |
5928 $("#keg_forced_carb").jqxCheckBox({ theme: theme, width: 120, height: 23 }); |
5829 $("#keg_pressure").jqxNumberInput( Show1dec ); |
5929 $("#keg_pressure").jqxNumberInput( Show1dec ); |
5830 $("#bottle_abv").jqxNumberInput( Show1dec ); |
5930 $("#bottle_abv").jqxNumberInput( Show1dec ); |