2701 |
2425 |
2702 if (dataRecord.w1_name == '') { |
2426 if (dataRecord.w1_name == '') { |
2703 return; |
2427 return; |
2704 } |
2428 } |
2705 |
2429 |
|
2430 $('#w1_hardness').val(Hardness(dataRecord.w1_calcium, dataRecord.w1_magnesium)); |
|
2431 $('#w1_ra').val(ResidualAlkalinity(dataRecord.w1_total_alkalinity, dataRecord.w1_calcium, dataRecord.w1_magnesium)); |
|
2432 |
2706 // If there is a dillute water source, mix the waters. |
2433 // If there is a dillute water source, mix the waters. |
2707 if ((dataRecord.w2_name != '') && (dataRecord.w2_name != 'Geen mengwater')) { |
2434 if ((dataRecord.w2_name != '') && (dataRecord.w2_name != 'Geen mengwater')) { |
2708 console.log("calcWater() mixed " + dataRecord.w2_name); |
|
2709 liters = dataRecord.w1_amount + dataRecord.w2_amount; |
2435 liters = dataRecord.w1_amount + dataRecord.w2_amount; |
2710 calcium = mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_calcium, dataRecord.w2_calcium); |
2436 calcium = mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_calcium, dataRecord.w2_calcium); |
2711 magnesium = mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_magnesium, dataRecord.w2_magnesium); |
2437 magnesium = mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_magnesium, dataRecord.w2_magnesium); |
2712 sodium = mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_sodium, dataRecord.w2_sodium); |
2438 sodium = mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_sodium, dataRecord.w2_sodium); |
2713 chloride = mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_chloride, dataRecord.w2_chloride); |
2439 chloride = mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_chloride, dataRecord.w2_chloride); |
2714 sulfate = mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_sulfate, dataRecord.w2_sulfate); |
2440 sulfate = mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_sulfate, dataRecord.w2_sulfate); |
2715 total_alkalinity = mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_total_alkalinity, dataRecord.w2_total_alkalinity); |
2441 total_alkalinity = mix(dataRecord.w1_amount, dataRecord.w2_amount, dataRecord.w1_total_alkalinity, dataRecord.w2_total_alkalinity); |
2716 ph = -Math.log10(((Math.pow(10, -dataRecord.w1_ph) * dataRecord.w1_amount) + (Math.pow(10, -dataRecord.w2_ph) * dataRecord.w2_amount)) / liters); |
2442 ph = -Math.log10(((Math.pow(10, -dataRecord.w1_ph) * dataRecord.w1_amount) + (Math.pow(10, -dataRecord.w2_ph) * dataRecord.w2_amount)) / liters); |
|
2443 $('#w2_hardness').val(Hardness(dataRecord.w2_calcium, dataRecord.w2_magnesium)); |
|
2444 $('#w2_ra').val(ResidualAlkalinity(dataRecord.w2_total_alkalinity, dataRecord.w2_calcium, dataRecord.w2_magnesium)); |
2717 } else { |
2445 } else { |
2718 console.log("calcWater() single"); |
|
2719 liters = dataRecord.w1_amount; |
2446 liters = dataRecord.w1_amount; |
2720 calcium = dataRecord.w1_calcium; |
2447 calcium = dataRecord.w1_calcium; |
2721 magnesium = dataRecord.w1_magnesium; |
2448 magnesium = dataRecord.w1_magnesium; |
2722 sodium = dataRecord.w1_sodium; |
2449 sodium = dataRecord.w1_sodium; |
2723 chloride = dataRecord.w1_chloride; |
2450 chloride = dataRecord.w1_chloride; |
2724 sulfate = dataRecord.w1_sulfate; |
2451 sulfate = dataRecord.w1_sulfate; |
2725 total_alkalinity = dataRecord.w1_total_alkalinity; |
2452 total_alkalinity = dataRecord.w1_total_alkalinity; |
2726 ph = dataRecord.w1_ph; |
2453 ph = dataRecord.w1_ph; |
2727 } |
2454 } |
2728 var bicarbonate = total_alkalinity * 1.22; |
2455 var bicarbonate = Bicarbonate(total_alkalinity, ph); |
2729 |
2456 |
2730 /* Save mixed water ions for later */ |
2457 /* Save mixed water ions for later */ |
2731 var wg_calcium = calcium; |
2458 var wg_calcium = calcium; |
2732 var wg_sodium = sodium; |
2459 var wg_sodium = sodium; |
2733 var wg_total_alkalinity = total_alkalinity; |
2460 var wg_total_alkalinity = total_alkalinity; |
2734 var wg_chloride = chloride; |
2461 var wg_chloride = chloride; |
2735 var wg_sulfate = sulfate; |
2462 var wg_sulfate = sulfate; |
2736 var wg_bicarbonate = bicarbonate; |
2463 var wg_bicarbonate = bicarbonate; |
|
2464 |
|
2465 dataRecord.wg_amount = liters; |
|
2466 dataRecord.wg_ph = ph; |
2737 |
2467 |
2738 $('#wg_amount').val(liters); |
2468 $('#wg_amount').val(liters); |
2739 $('#wg_calcium').val(Round(calcium, 1)); |
2469 $('#wg_calcium').val(Round(calcium, 1)); |
2740 $('#wg_magnesium').val(Round(magnesium, 1)); |
2470 $('#wg_magnesium').val(Round(magnesium, 1)); |
2741 $('#wg_sodium').val(Round(sodium, 1)); |
2471 $('#wg_sodium').val(Round(sodium, 1)); |
2742 $('#wg_bicarbonate').val(Round(bicarbonate, 1)); |
2472 $('#wg_bicarbonate').val(Round(bicarbonate, 1)); |
2743 $('#wg_total_alkalinity').val(Round(total_alkalinity, 1)); |
2473 $('#wg_total_alkalinity').val(Round(total_alkalinity, 1)); |
2744 $('#wg_chloride').val(Round(chloride, 1)); |
2474 $('#wg_chloride').val(Round(chloride, 1)); |
2745 $('#wg_sulfate').val(Round(sulfate, 1)); |
2475 $('#wg_sulfate').val(Round(sulfate, 1)); |
2746 $('#wg_ph').val(Round(ph, 2)); |
2476 $('#wg_ph').val(Round(ph, 2)); |
|
2477 $('#wg_hardness').val(Round(Hardness(calcium, magnesium), 1)); |
|
2478 $('#wg_ra').val(Round(ResidualAlkalinity(total_alkalinity, calcium, magnesium), 1)); |
2747 |
2479 |
2748 var mash_ph = Round(MashpH(), 3); |
2480 var mash_ph = Round(MashpH(), 3); |
2749 console.log('Distilled water mash pH: ' + mash_ph); |
2481 console.log('Distilled water mash pH: ' + mash_ph); |
2750 |
2482 |
2751 /* Calculate Salt additions */ |
2483 /* Calculate Salt additions */ |
2973 } |
2709 } |
2974 |
2710 |
2975 function calcSparge() { |
2711 function calcSparge() { |
2976 |
2712 |
2977 /* Based on the work of ajDeLange. */ |
2713 /* Based on the work of ajDeLange. */ |
|
2714 var ws_calcium, ws_magnesium, ws_total_alkalinity, ws_sodium, ws_chloride; |
|
2715 var ws_sulfate, ws_ph, ws_hardness, ws_ra; |
2978 var TargetpH = dataRecord.sparge_ph; |
2716 var TargetpH = dataRecord.sparge_ph; |
2979 var Source_pH = dataRecord.w1_ph; |
2717 var Source_pH = 7.0; |
2980 var Source_alkalinity = dataRecord.w1_total_alkalinity; |
2718 |
2981 // Select watersource or fallback to the first source. |
2719 // Select watersource or fallback to the first source. |
2982 if (dataRecord.sparge_source == 1) { // Source 2 |
2720 if ((dataRecord.sparge_source == 1) && (dataRecord.w2_ph > 0.0)) { // Source 2 |
2983 if (dataRecord.w2_ph > 0.0) { |
2721 ws_calcium = dataRecord.w2_calcium; |
|
2722 ws_magnesium = dataRecord.w2_magnesium; |
|
2723 ws_total_alkalinity = dataRecord.w2_total_alkalinity; |
|
2724 ws_sodium = dataRecord.w2_sodium; |
|
2725 ws_chloride = dataRecord.w2_chloride; |
|
2726 ws_sulfate = dataRecord.w2_sulfate; |
2984 Source_pH = dataRecord.w2_ph; |
2727 Source_pH = dataRecord.w2_ph; |
2985 Source_alkalinity = dataRecord.w2_total_alkalinity; |
2728 $('#w2_button').jqxRadioButton({ checked: true }); |
2986 } else { |
2729 } else if ((dataRecord.sparge_source == 2) && (dataRecord.w2_ph > 0.0)) { // Mixed |
2987 dataRecord.sparge_source = 0; // Source 1 |
2730 ws_calcium = dataRecord.wg_calcium; |
2988 $('#sparge_source').val(0); |
2731 ws_magnesium = dataRecord.wg_magnesium; |
2989 } |
2732 ws_total_alkalinity = dataRecord.wg_total_alkalinity; |
2990 } else if (dataRecord.sparge_source == 2) { // Mixed |
2733 ws_sodium = dataRecord.wg_sodium; |
2991 if (dataRecord.w2_ph > 0.0) { |
2734 ws_chloride = dataRecord.wg_chloride; |
2992 Source_pH = parseFloat(dataRecord.wg_ph); |
2735 ws_sulfate = dataRecord.wg_sulfate; |
2993 Source_alkalinity = parseFloat(dataRecord.wg_total_alkalinity); |
2736 Source_pH = dataRecord.wg_ph; |
2994 } else { |
2737 $('#wg_button').jqxRadioButton({ checked: true }); |
2995 dataRecord.sparge_source = 0; |
2738 } else { |
2996 $('#sparge_source').val(0); |
2739 ws_calcium = dataRecord.w1_calcium; |
2997 } |
2740 ws_magnesium = dataRecord.w1_magnesium; |
2998 } |
2741 ws_total_alkalinity = dataRecord.w1_total_alkalinity; |
2999 |
2742 ws_sodium = dataRecord.w1_sodium; |
3000 // Step 1: Compute the mole fractions of carbonic (f1) and carbonate(f3) at the source water pH |
2743 ws_chloride = dataRecord.w1_chloride; |
3001 var r1 = Math.pow(10, Source_pH - 6.35); |
2744 ws_sulfate = dataRecord.w1_sulfate; |
3002 var r2 = Math.pow(10, Source_pH - 10.33); |
2745 Source_pH = dataRecord.w1_ph; |
3003 var d = 1 + r1 + r1 * r2; |
2746 $('#w1_button').jqxRadioButton({ checked: true }); |
3004 var f1 = 1 / d; |
2747 } |
3005 var f3 = r1 * r2 / d; |
2748 |
3006 |
2749 if (dataRecord.sparge_volume > 0) { |
3007 //Step 2. Compute the mole fractions at pH = 4.3 (the pH which defines alkalinity) |
2750 ws_calcium += (parseFloat($('#ss_cacl2').jqxNumberInput('decimal')) * MMCa / MMCaCl2 * 1000 + |
3008 var r143 = Math.pow(10, 4.3 - 6.35); |
2751 parseFloat($('#ss_caso4').jqxNumberInput('decimal')) * MMCa / MMCaSO4 * 1000) / dataRecord.sparge_volume; |
3009 var r243 = Math.pow(10, 4.3 - 10.33); |
2752 ws_magnesium += (parseFloat($('#ss_mgso4').jqxNumberInput('decimal')) * MMMg / MMMgSO4 * 1000 + |
3010 var d43 = 1 + r143 + r143 * r243; |
2753 parseFloat($('#ss_mgcl2').jqxNumberInput('decimal')) * MMMg / MMMgCl2 * 1000) / dataRecord.sparge_volume; |
3011 var f143 = 1 / d43; |
2754 ws_sodium += (parseFloat($('#ss_nacl').jqxNumberInput('decimal')) * MMNa / MMNaCl * 1000) / dataRecord.sparge_volume; |
3012 var f343 = r143 * r243 / d43; |
2755 ws_sulfate += (parseFloat($('#ss_caso4').jqxNumberInput('decimal')) * MMSO4 / MMCaSO4 * 1000 + |
3013 |
2756 parseFloat($('#ss_mgso4').jqxNumberInput('decimal')) * MMSO4 / MMMgSO4 * 1000) / dataRecord.sparge_volume; |
3014 //Step 4. Solve |
2757 ws_chloride += (2 * parseFloat($('#ss_cacl2').jqxNumberInput('decimal')) * MMCl / MMCaCl2 * 1000 + |
3015 var Ct = Source_alkalinity / 50 / ((f143 - f1) + (f3 - f343)); |
2758 parseFloat($('#ss_nacl').jqxNumberInput('decimal')) * MMCl / MMNaCl * 1000 + |
3016 |
2759 parseFloat($('#ss_mgcl2').jqxNumberInput('decimal')) * MMCl / MMMgCl2 * 1000) / dataRecord.sparge_volume; |
3017 //Step 5. Compute mole fractions at desired pH |
2760 } |
3018 var r1g = Math.pow(10, TargetpH - 6.35); |
2761 |
3019 var r2g = Math.pow(10, TargetpH - 10.33); |
2762 /* Show the spargewate with salt additions */ |
3020 var dg = 1 + r1g + r1g * r2g; |
2763 $('#sw_calcium').val(Round(ws_calcium, 1)); |
3021 var f1g = 1 / dg; |
2764 $('#sw_magnesium').val(Round(ws_magnesium, 1)); |
3022 var f3g = r1g * r2g / dg; |
2765 $('#sw_sodium').val(Round(ws_sodium, 1)); |
3023 |
2766 $('#sw_sulfate').val(Round(ws_sulfate, 1)); |
3024 //Step 6. Use these to compute the milliequivalents acid required per liter (mEq/L) |
2767 $('#sw_chloride').val(Round(ws_chloride, 1)); |
3025 var Acid = Ct * ((f1g - f1) + (f3 - f3g)) + Math.pow(10, -TargetpH) - Math.pow(10, -Source_pH); //mEq/l |
2768 $('#sw_bicarbonate').val(Round(Bicarbonate(ws_total_alkalinity, Source_pH), 1)); |
3026 Acid += 0.01; // Add acid that would be required for distilled water. |
2769 $('#sw_total_alkalinity').val(Round(ws_total_alkalinity, 1)); |
3027 |
2770 $('#sw_ph').val(dataRecord.sparge_ph); |
3028 //Step 8. Get the acid data. |
2771 $('#sw_hardness').val(Hardness(ws_calcium, ws_magnesium)); |
3029 var AT = dataRecord.sparge_acid_type; |
2772 $('#sw_ra').val(ResidualAlkalinity(ws_total_alkalinity, ws_calcium, ws_magnesium)); |
|
2773 |
|
2774 AT = dataRecord.sparge_acid_type; |
3030 if (AT < 0 || AT >= AcidTypeData.length) { |
2775 if (AT < 0 || AT >= AcidTypeData.length) { |
3031 AT = 0; |
2776 AT = 0; |
3032 dataRecord.sparge_acid_type = 0; |
2777 dataRecord.sparge_acid_type = 0; |
3033 $('#sparge_acid_type').val(0); |
2778 $('#sparge_acid_type').val(AcidTypeData[0].nl); |
3034 dataRecord.sparge_acid_perc = AcidTypeData[0].AcidPrc; |
2779 dataRecord.sparge_acid_perc = AcidTypeData[0].AcidPrc; |
3035 $('#sparge_acid_perc').val(dataRecord.sparge_acid_perc); |
2780 $('#sparge_acid_perc').val(dataRecord.sparge_acid_perc); |
3036 } |
2781 } |
3037 var fract = CalcFrac(TargetpH, AcidTypeData[AT].pK1, AcidTypeData[AT].pK2, AcidTypeData[AT].pK3); |
2782 |
3038 |
2783 /* |
3039 //Step 9. Now divide the mEq required by the "fraction". This is the required number of moles of acid. |
2784 * Auto calculate the required acid |
3040 Acid /= fract; |
2785 */ |
3041 |
2786 if (dataRecord.calc_acid) { |
3042 //Step 10. Multiply by molecular weight of the acid |
2787 // Step 1: Compute the mole fractions of carbonic (f1) and carbonate(f3) at the source water pH |
3043 Acid *= AcidTypeData[AT].MolWt; //mg |
2788 var r1 = Math.pow(10, Source_pH - 6.35); |
3044 |
2789 var r2 = Math.pow(10, Source_pH - 10.33); |
3045 //Step 11. Divide by Specific Gravity and Percentage to get the final ml. |
2790 var d = 1 + r1 + r1 * r2; |
3046 Acid = Acid / AcidTypeData[AT].AcidSG / (dataRecord.sparge_acid_perc / 100); //ml |
2791 var f1 = 1 / d; |
3047 Acid *= dataRecord.sparge_volume; //ml acid total |
2792 var f3 = r1 * r2 / d; |
3048 Acid = Round(Acid, 2); |
2793 |
3049 dataRecord.sparge_acid_amount = Acid / 1000; |
2794 //Step 2. Compute the mole fractions at pH = 4.3 (the pH which defines alkalinity) |
3050 $('#sparge_acid_amount').val(Acid); |
2795 var r143 = Math.pow(10, 4.3 - 6.35); |
|
2796 var r243 = Math.pow(10, 4.3 - 10.33); |
|
2797 var d43 = 1 + r143 + r143 * r243; |
|
2798 var f143 = 1 / d43; |
|
2799 var f343 = r143 * r243 / d43; |
|
2800 |
|
2801 //Step 4. Solve |
|
2802 var Ct = ws_total_alkalinity / 50 / ((f143 - f1) + (f3 - f343)); |
|
2803 |
|
2804 //Step 5. Compute mole fractions at desired pH |
|
2805 var r1g = Math.pow(10, TargetpH - 6.35); |
|
2806 var r2g = Math.pow(10, TargetpH - 10.33); |
|
2807 var dg = 1 + r1g + r1g * r2g; |
|
2808 var f1g = 1 / dg; |
|
2809 var f3g = r1g * r2g / dg; |
|
2810 |
|
2811 //Step 6. Use these to compute the milliequivalents acid required per liter (mEq/L) |
|
2812 var Acid = Ct * ((f1g - f1) + (f3 - f3g)) + Math.pow(10, -TargetpH) - Math.pow(10, -Source_pH); //mEq/l |
|
2813 Acid += 0.01; // Add acid that would be required for distilled water. |
|
2814 |
|
2815 //Step 8. Get the acid data. |
|
2816 var fract = CalcFrac(TargetpH, AcidTypeData[AT].pK1, AcidTypeData[AT].pK2, AcidTypeData[AT].pK3); |
|
2817 |
|
2818 //Step 9. Now divide the mEq required by the "fraction". This is the required number of moles of acid. |
|
2819 Acid /= fract; |
|
2820 |
|
2821 //Step 10. Multiply by molecular weight of the acid |
|
2822 Acid *= AcidTypeData[AT].MolWt; //mg |
|
2823 |
|
2824 //Step 11. Divide by Specific Gravity and Percentage to get the final ml. |
|
2825 var RealSG = Round(((AcidTypeData[AT].AcidSG - 1000) * (dataRecord.sparge_acid_perc / 100)) + 1000, 2); |
|
2826 Acid = Acid / RealSG; //ml |
|
2827 Acid *= dataRecord.sparge_volume; //ml acid total at 100% |
|
2828 Acid /= AcidTypeData[AT].AcidPrc / 100; //ml acid at supplied strength |
|
2829 Acid = Round(Acid, 2); |
|
2830 dataRecord.sparge_acid_amount = Acid / 1000; |
|
2831 $('#sparge_acid_amount').val(Acid); |
|
2832 } |
|
2833 |
|
2834 // Finally calculate the estimate preboil pH |
|
2835 var ph = -Math.log10(((Math.pow(10, -dataRecord.wb_ph) * dataRecord.wg_amount) + (Math.pow(10, -dataRecord.sparge_ph) * dataRecord.sparge_volume)) / |
|
2836 (dataRecord.wg_amount + dataRecord.sparge_volume)); |
|
2837 $('#preboil_ph').val(ph); |
3051 } |
2838 } |
3052 |
2839 |
3053 function calcFermentation() { |
2840 function calcFermentation() { |
3054 var primary_svg, secondary_svg, final_svg, ABV; |
2841 var primary_svg, secondary_svg, final_svg, ABV; |
3055 if (dataRecord.brew_fermenter_sg < 1.020) |
2842 if (dataRecord.brew_fermenter_sg < 1.020) |
3413 } |
3174 } |
3414 } |
3175 } |
3415 |
3176 |
3416 function calcInit() { |
3177 function calcInit() { |
3417 |
3178 |
|
3179 console.log('** calcInit() start'); |
3418 calcMashEfficiency(); |
3180 calcMashEfficiency(); |
3419 calcEfficiencyBeforeBoil(); |
3181 calcEfficiencyBeforeBoil(); |
3420 calcEfficiencyAfterBoil(); |
3182 calcEfficiencyAfterBoil(); |
3421 |
|
3422 $('#calc_acid').on('checked', function(event) { |
|
3423 dataRecord.calc_acid = 1; |
|
3424 calcWater(); |
|
3425 }); |
|
3426 $('#calc_acid').on('unchecked', function(event) { |
|
3427 dataRecord.calc_acid = 0; |
|
3428 calcWater(); |
|
3429 }); |
|
3430 $('#w1_name').jqxDropDownList('selectItem', dataRecord.w1_name); |
|
3431 $('#w2_name').jqxDropDownList('selectItem', dataRecord.w2_name); |
|
3432 // Fix tap water if zero using mash infuse amount. |
|
3433 console.log("mash_infuse: " + mash_infuse + " w1: " + parseFloat($('#w1_amount').jqxNumberInput('decimal')) + " " + dataRecord.w1_amount); |
|
3434 if (parseFloat($('#w1_amount').jqxNumberInput('decimal')) == 0 && mash_infuse > 0) { |
|
3435 $('#w1_amount').val(mash_infuse); |
|
3436 dataRecord.w1_amount = mash_infuse; |
|
3437 $('#wg_amount').val(mash_infuse); |
|
3438 $('#w2_amount').val(0); |
|
3439 dataRecord.w2_amount = 0; |
|
3440 } |
|
3441 calcWater(); |
3183 calcWater(); |
3442 $('#w2_amount').on('change', function(event) { |
|
3443 var newval = parseFloat(event.args.value); |
|
3444 if (newval > parseFloat($('#wg_amount').jqxNumberInput('decimal'))) { |
|
3445 $('#w2_amount').val(dataRecord.w2_amount); |
|
3446 return; |
|
3447 } |
|
3448 dataRecord.w1_amount = parseFloat($('#wg_amount').jqxNumberInput('decimal')) - newval; |
|
3449 $('#w1_amount').val(dataRecord.w1_amount); |
|
3450 dataRecord.w2_amount = newval; |
|
3451 console.log('new: ' + event.args.value + ' w1: ' + dataRecord.w1_amount + ' w2: ' + dataRecord.w2_amount); |
|
3452 calcWater(); |
|
3453 }); |
|
3454 $('#wa_cacl2').on('change', function(event) { |
|
3455 if (event.args) { |
|
3456 setWaterAgent('CaCl2', 0); // This prevents double entries. |
|
3457 setWaterAgent('CaCl2', event.args.value); |
|
3458 calcWater(); |
|
3459 } |
|
3460 }); |
|
3461 $('#wa_caso4').on('change', function(event) { |
|
3462 if (event.args) { |
|
3463 setWaterAgent('CaSO4', 0); |
|
3464 setWaterAgent('CaSO4', event.args.value); |
|
3465 calcWater(); |
|
3466 } |
|
3467 }); |
|
3468 $('#wa_mgso4').on('change', function(event) { |
|
3469 if (event.args) { |
|
3470 setWaterAgent('MgSO4', 0); |
|
3471 setWaterAgent('MgSO4', event.args.value); |
|
3472 calcWater(); |
|
3473 } |
|
3474 }); |
|
3475 $('#wa_nacl').on('change', function(event) { |
|
3476 if (event.args) { |
|
3477 setWaterAgent('NaCl', 0); |
|
3478 setWaterAgent('NaCl', event.args.value); |
|
3479 calcWater(); |
|
3480 } |
|
3481 }); |
|
3482 $('#wa_mgcl2').on('change', function(event) { |
|
3483 if (event.args) { |
|
3484 setWaterAgent('MgCl2', 0); |
|
3485 setWaterAgent('MgCl2', event.args.value); |
|
3486 calcWater(); |
|
3487 } |
|
3488 }); |
|
3489 $('#wa_nahco3').on('change', function(event) { |
|
3490 if (event.args) { |
|
3491 setWaterAgent('NaHCO3', 0); |
|
3492 setWaterAgent('NaHCO3', event.args.value); |
|
3493 calcWater(); |
|
3494 } |
|
3495 }); |
|
3496 $('#wa_caco3').on('change', function(event) { |
|
3497 if (event.args) { |
|
3498 setWaterAgent('CaCO3', 0); |
|
3499 setWaterAgent('CaCO3', event.args.value); |
|
3500 calcWater(); |
|
3501 } |
|
3502 }); |
|
3503 $('#wa_acid_name').on('select', function(event) { |
|
3504 if (event.args) { |
|
3505 var index = event.args.index; |
|
3506 console.log('wa_acid_name ' + index + ' last_acid: ' + last_acid); |
|
3507 setWaterAgent(last_acid, 0); |
|
3508 last_acid = AcidTypeData[index].nl; |
|
3509 dataRecord.wa_acid_name = index; |
|
3510 dataRecord.wa_acid_perc = AcidTypeData[index].AcidPrc; |
|
3511 $('#wa_acid_perc').val(dataRecord.wa_acid_perc); |
|
3512 calcWater(); |
|
3513 setWaterAgent(last_acid, parseFloat($('#wa_acid').jqxNumberInput('decimal'))); |
|
3514 } |
|
3515 }); |
|
3516 $('#wa_acid').on('change', function(event) { |
|
3517 var name = AcidTypeData[dataRecord.wa_acid_name].nl; |
|
3518 setWaterAgent(name, parseFloat(event.args.value)); |
|
3519 calcWater(); |
|
3520 }); |
|
3521 $('#wa_acid_perc').on('change', function(event) { |
|
3522 dataRecord.wa_acid_perc = parseFloat(event.args.value); |
|
3523 calcWater(); |
|
3524 }); |
|
3525 |
|
3526 $('#sparge_ph').on('change', function(event) { |
|
3527 dataRecord.sparge_ph = parseFloat(event.args.value); |
|
3528 calcSparge(); |
|
3529 }); |
|
3530 $('#sparge_volume').on('change', function(event) { |
|
3531 dataRecord.sparge_volume = parseFloat(event.args.value); |
|
3532 $('#brew_sparge_volume').val(dataRecord.sparge_volume); |
|
3533 calcSparge(); |
|
3534 }); |
|
3535 $('#sparge_temp').on('change', function(event) { |
|
3536 dataRecord.sparge_temp = parseFloat(event.args.value); |
|
3537 $('#brew_sparge_temperature').val(dataRecord.sparge_temp); |
|
3538 }); |
|
3539 $('#sparge_source').on('select', function(event) { |
|
3540 if (event.args) { |
|
3541 dataRecord.sparge_source = event.args.index; |
|
3542 calcSparge(); |
|
3543 } |
|
3544 }); |
|
3545 $('#sparge_acid_type').on('select', function(event) { |
|
3546 if (event.args) { |
|
3547 dataRecord.sparge_acid_type = event.args.index; |
|
3548 console.log('new sparge_acid_type: ' + dataRecord.sparge_acid_type); |
|
3549 dataRecord.sparge_acid_perc = AcidTypeData[event.args.index].AcidPrc; |
|
3550 $('#sparge_acid_perc').val(dataRecord.sparge_acid_perc); |
|
3551 calcSparge(); |
|
3552 } |
|
3553 }); |
|
3554 $('#sparge_acid_perc').on('change', function(event) { |
|
3555 dataRecord.sparge_acid_perc = parseFloat(event.args.value); |
|
3556 calcSparge(); |
|
3557 }); |
|
3558 |
|
3559 calcFermentation(); |
3184 calcFermentation(); |
3560 calcCarbonation(); |
3185 // calcCarbonation(); |
3561 $('#package_volume').on('change', function(event) { |
3186 calcIBUs(); |
3562 var diff, tnew, told = dataRecord.package_volume + dataRecord.package_infuse_amount; |
|
3563 dataRecord.package_volume = parseFloat(event.args.value); |
|
3564 if (dataRecord.package_volume > dataRecord.brew_fermenter_volume) { |
|
3565 dataRecord.package_volume = dataRecord.brew_fermenter_volume; |
|
3566 $('#package_volume').val(dataRecord.package_volume); |
|
3567 } |
|
3568 tnew = dataRecord.package_volume + dataRecord.package_infuse_amount; |
|
3569 diff = Round(tnew - told, 3); |
|
3570 if (told > 0) { |
|
3571 dataRecord.bottle_amount = Round(dataRecord.bottle_amount + ((dataRecord.bottle_amount / told) * diff), 3); |
|
3572 dataRecord.keg_amount = Round(dataRecord.keg_amount + ((dataRecord.keg_amount / told) * diff), 3); |
|
3573 } else { |
|
3574 dataRecord.bottle_amount = tnew; |
|
3575 dataRecord.keg_amount = 0; |
|
3576 } |
|
3577 $('#bottle_amount').val(parseFloat(dataRecord.bottle_amount)); |
|
3578 $('#keg_amount').val(parseFloat(dataRecord.keg_amount)); |
|
3579 calcCarbonation(); |
|
3580 }); |
|
3581 $('#package_infuse_amount').on('change', function(event) { |
|
3582 var diff, tnew, told = dataRecord.package_volume + dataRecord.package_infuse_amount; |
|
3583 dataRecord.package_infuse_amount = parseFloat(event.args.value); |
|
3584 tnew = dataRecord.package_volume + dataRecord.package_infuse_amount; |
|
3585 diff = Round(tnew - told, 3); |
|
3586 if (told > 0) { |
|
3587 dataRecord.bottle_amount = Round(dataRecord.bottle_amount + ((dataRecord.bottle_amount / told) * diff), 3); |
|
3588 dataRecord.keg_amount = Round(dataRecord.keg_amount + ((dataRecord.keg_amount / told) * diff), 3); |
|
3589 } else { |
|
3590 dataRecord.bottle_amount = tnew; |
|
3591 dataRecord.keg_amount = 0; |
|
3592 } |
|
3593 $('#bottle_amount').val(parseFloat(dataRecord.bottle_amount)); |
|
3594 $('#keg_amount').val(parseFloat(dataRecord.keg_amount)); |
|
3595 calcCarbonation(); |
|
3596 }); |
|
3597 $('#package_infuse_abv').on('change', function(event) { |
|
3598 dataRecord.package_infuse_abv = parseFloat(event.args.value); |
|
3599 calcCarbonation(); |
|
3600 }); |
|
3601 $('#bottle_amount').on('change', function(event) { |
|
3602 var vtot, vnew = parseFloat(event.args.value); |
|
3603 vtot = Round(dataRecord.package_volume + dataRecord.package_infuse_amount - dataRecord.keg_amount, 3); |
|
3604 if (vnew > vtot) |
|
3605 vnew = vtot; |
|
3606 dataRecord.bottle_amount = Round(vnew, 3); |
|
3607 $('#bottle_amount').val(parseFloat(dataRecord.bottle_amount)); |
|
3608 console.log('vtot:' + vtot + ' vnew:' + vnew + ' bottle:' + dataRecord.bottle_amount + ' keg:' + dataRecord.keg_amount); |
|
3609 calcCarbonation(); |
|
3610 }); |
|
3611 $('#bottle_priming_water').on('change', function(event) { |
|
3612 dataRecord.bottle_priming_water = parseFloat(event.args.value); |
|
3613 calcCarbonation(); |
|
3614 }); |
|
3615 $('#keg_amount').on('change', function(event) { |
|
3616 var vtot, vnew = parseFloat(event.args.value); |
|
3617 vtot = Round(dataRecord.package_volume + dataRecord.package_infuse_amount - dataRecord.bottle_amount, 3); |
|
3618 if (vnew > vtot) |
|
3619 vnew = vtot; |
|
3620 dataRecord.keg_amount = Round(vnew, 3); |
|
3621 $('#keg_amount').val(parseFloat(dataRecord.keg_amount)); |
|
3622 console.log('vtot:' + vtot + ' vnew:' + vnew + ' bottle:' + dataRecord.bottle_amount + ' keg:' + dataRecord.keg_amount); |
|
3623 calcCarbonation(); |
|
3624 }); |
|
3625 $('#keg_priming_water').on('change', function(event) { |
|
3626 dataRecord.keg_priming_water = parseFloat(event.args.value); |
|
3627 calcCarbonation(); |
|
3628 }); |
|
3629 $('#bottle_carbonation').on('change', function(event) { |
|
3630 dataRecord.bottle_carbonation = parseFloat(event.args.value); |
|
3631 calcCarbonation(); |
|
3632 }); |
|
3633 $('#bottle_carbonation_temp').on('change', function(event) { |
|
3634 dataRecord.bottle_carbonation_temp = parseFloat(event.args.value); |
|
3635 calcCarbonation(); |
|
3636 }); |
|
3637 $('#keg_carbonation').on('change', function(event) { |
|
3638 dataRecord.keg_carbonation = parseFloat(event.args.value); |
|
3639 calcCarbonation(); |
|
3640 }); |
|
3641 $('#keg_forced_carb').on('checked', function(event) { |
|
3642 dataRecord.keg_forced_carb = 1; |
|
3643 calcCarbonation(); |
|
3644 }); |
|
3645 $('#keg_forced_carb').on('unchecked', function(event) { |
|
3646 dataRecord.keg_forced_carb = 0; |
|
3647 calcCarbonation(); |
|
3648 }); |
|
3649 $('#keg_carbonation_temp').on('change', function(event) { |
|
3650 dataRecord.keg_carbonation_temp = parseFloat(event.args.value); |
|
3651 calcCarbonation(); |
|
3652 }); |
|
3653 |
|
3654 $('#brew_fermenter_extrawater').on('change', function(event) { |
|
3655 dataRecord.brew_fermenter_extrawater = parseFloat(event.args.value); |
|
3656 calcFermentables(); |
|
3657 calcIBUs(); |
|
3658 calcYeast(); |
|
3659 }); |
|
3660 $('#brew_fermenter_tcloss').on('change', function(event) { |
|
3661 dataRecord.brew_fermenter_tcloss = parseFloat(event.args.value); |
|
3662 calcFermentables(); |
|
3663 calcIBUs(); |
|
3664 calcYeast(); |
|
3665 }); |
|
3666 $('#primary_end_sg').on('change', function(event) { |
|
3667 dataRecord.primary_end_sg = parseFloat(event.args.value); |
|
3668 calcFermentation(); |
|
3669 }); |
|
3670 $('#primary_end_brix').on('change', function(event) { |
|
3671 var OBrix, FBrix, FG; |
|
3672 if (dataRecord.brew_fermenter_sg >= 1.020) { |
|
3673 OBrix = sg_to_plato(dataRecord.brew_fermenter_sg); |
|
3674 FBrix = parseFloat(event.args.value); |
|
3675 FG = brix_to_fg(OBrix, FBrix); |
|
3676 if (FBrix > 0.05) { |
|
3677 $('#primary_end_sg').val(FG); |
|
3678 dataRecord.primary_end_sg = FG; |
|
3679 } |
|
3680 calcFermentation(); |
|
3681 } |
|
3682 }); |
|
3683 $('#secondary_end_sg').on('change', function(event) { |
|
3684 dataRecord.secondary_end_sg = parseFloat(event.args.value); |
|
3685 calcFermentation(); |
|
3686 }); |
|
3687 $('#secondary_end_brix').on('change', function(event) { |
|
3688 var OBrix, FBrix, FG; |
|
3689 if (dataRecord.brew_fermenter_sg >= 1.020) { |
|
3690 OBrix = sg_to_plato(dataRecord.brew_fermenter_sg); |
|
3691 FBrix = parseFloat(event.args.value); |
|
3692 FG = brix_to_fg(OBrix, FBrix); |
|
3693 if (FBrix > 0.05) { |
|
3694 $('#secondary_end_sg').val(FG); |
|
3695 dataRecord.secondary_end_sg = FG; |
|
3696 } |
|
3697 calcFermentation(); |
|
3698 } |
|
3699 }); |
|
3700 $('#final_brix').on('change', function(event) { |
|
3701 var OBrix, FBrix, FG; |
|
3702 if (dataRecord.brew_fermenter_sg >= 1.020) { |
|
3703 OBrix = sg_to_plato(dataRecord.brew_fermenter_sg); |
|
3704 FBrix = parseFloat(event.args.value); |
|
3705 FG = brix_to_fg(OBrix, FBrix); |
|
3706 if (FBrix > 0.05) { |
|
3707 $('#fg').val(FG); |
|
3708 dataRecord.fg = FG; |
|
3709 } |
|
3710 calcFermentation(); |
|
3711 } |
|
3712 }); |
|
3713 $('#fg').on('change', function(event) { |
|
3714 dataRecord.fg = parseFloat(event.args.value); |
|
3715 calcFermentation(); |
|
3716 }); |
|
3717 $('#brew_whirlpool9').on('valueChanged', function(event) { |
|
3718 dataRecord.brew_whirlpool9 = event.args.value; |
|
3719 whirlpoolHops(); |
|
3720 calcIBUs(); |
|
3721 }); |
|
3722 $('#brew_whirlpool7').on('valueChanged', function(event) { |
|
3723 dataRecord.brew_whirlpool7 = event.args.value; |
|
3724 whirlpoolHops(); |
|
3725 calcIBUs(); |
|
3726 }); |
|
3727 $('#brew_whirlpool6').on('valueChanged', function(event) { |
|
3728 dataRecord.brew_whirlpool6 = event.args.value; |
|
3729 whirlpoolHops(); |
|
3730 calcIBUs(); |
|
3731 }); |
|
3732 $('#BLog').jqxButton({ disabled: (dataRecord.log_brew) ? false : true}); |
3187 $('#BLog').jqxButton({ disabled: (dataRecord.log_brew) ? false : true}); |
3733 $('#FLog').jqxButton({ disabled: (dataRecord.log_fermentation) ? false : true}); |
3188 $('#FLog').jqxButton({ disabled: (dataRecord.log_fermentation) ? false : true}); |
3734 $('#ILog').jqxButton({ disabled: (dataRecord.log_ispindel) ? false : true}); |
3189 $('#ILog').jqxButton({ disabled: (dataRecord.log_ispindel) ? false : true}); |
3735 $('#CLog').jqxButton({ disabled: (dataRecord.log_co2pressure) ? false : true}); |
3190 $('#CLog').jqxButton({ disabled: (dataRecord.log_co2pressure) ? false : true}); |
|
3191 console.log('** calcInit() ready'); |
3736 } |
3192 } |
3737 |
3193 |
3738 |
3194 |
3739 // initialize the input fields. |
3195 // initialize the input fields. |
3740 // Tab 1, Algemeen |
3196 // Tab 1, Algemeen |
3945 $('#starter_viability').jqxNumberInput(Show0dec); |
3401 $('#starter_viability').jqxNumberInput(Show0dec); |
3946 |
3402 |
3947 // Tab 7, Mashing |
3403 // Tab 7, Mashing |
3948 $('#mash_name').jqxTooltip({ content: 'De omschrijving van dit maisch profiel.' }); |
3404 $('#mash_name').jqxTooltip({ content: 'De omschrijving van dit maisch profiel.' }); |
3949 $('#mash_name').jqxInput({ theme: theme, width: 320, height: 23 }); |
3405 $('#mash_name').jqxInput({ theme: theme, width: 320, height: 23 }); |
3950 $('#mash_select').jqxDropDownList({ |
|
3951 placeHolder: 'Kies schema:', |
|
3952 theme: theme, |
|
3953 source: mashlist, |
|
3954 displayMember: 'name', |
|
3955 width: 250, |
|
3956 height: 23, |
|
3957 dropDownWidth: 500, |
|
3958 dropDownHeight: 500, |
|
3959 dropDownHorizontalAlignment: 'right' |
|
3960 }); |
|
3961 $('#mash_select').on('select', function(event) { |
|
3962 if (event.args) { |
|
3963 var infused = 0, data, datarecord, rowIDs, rows, i, row, index = event.args.index; |
|
3964 // First delete all current steps |
|
3965 rowIDs = new Array(); |
|
3966 rows = $('#mashGrid').jqxGrid('getdisplayrows'); |
|
3967 for (i = 0; i < rows.length; i++) { |
|
3968 row = rows[i]; |
|
3969 rowIDs.push(row.uid); |
|
3970 } |
|
3971 $('#mashGrid').jqxGrid('deleterow', rowIDs); |
|
3972 // Then add the new steps |
|
3973 datarecord = mashlist.records[index]; |
|
3974 $('#mash_name').val(datarecord.name); |
|
3975 for (i = 0; i < datarecord.steps.length; i++) { |
|
3976 data = datarecord.steps[i]; |
|
3977 row = {}; |
|
3978 row['step_name'] = data.step_name; |
|
3979 row['step_type'] = parseInt(data.step_type); |
|
3980 row['step_temp'] = parseFloat(data.step_temp); |
|
3981 row['end_temp'] = parseFloat(data.end_temp); |
|
3982 row['step_time'] = parseFloat(data.step_time); |
|
3983 row['ramp_time'] = parseFloat(data.ramp_time); |
|
3984 row['step_infuse_temp'] = 0.0; |
|
3985 row['step_infuse_amount'] = 0.0; |
|
3986 if (mash_infuse == 0 && dataRecord.wg_amount > 0) |
|
3987 mash_infuse = dataRecord.wg_amount; |
|
3988 if (data.step_type == 0) { // Infusion |
|
3989 if (i == 0) { |
|
3990 row['step_infuse_amount'] = parseFloat(mash_infuse); |
|
3991 } else { |
|
3992 row['step_infuse_temp'] = 99.0; |
|
3993 } |
|
3994 } |
|
3995 row['step_ph'] = 0.0; |
|
3996 row['step_sg'] = 0.0; |
|
3997 //console.log(i + ' type: ' + row['step_type'] + ' start infusion: ' + parseFloat(row['step_infuse_amount']) + ' mash_infuse: ' + mash_infuse); |
|
3998 infused += parseFloat(row['step_infuse_amount']); |
|
3999 row['step_volume'] = infused; |
|
4000 if (mashkg > 0) |
|
4001 row['step_wg_ratio'] = Round(parseFloat(mash_infuse / mashkg), 6); |
|
4002 else |
|
4003 row['step_wg_ratio'] = 0.0; |
|
4004 $('#mashGrid').jqxGrid('addrow', null, row); |
|
4005 } |
|
4006 calcMash(); |
|
4007 } |
|
4008 }); |
|
4009 $('#est_mashvol').jqxTooltip({ content: 'Het totale volume van het maishwater en de mout in de maish pan.' }); |
3406 $('#est_mashvol').jqxTooltip({ content: 'Het totale volume van het maishwater en de mout in de maish pan.' }); |
4010 $('#est_mashvol').jqxNumberInput(Show1dec); |
3407 $('#est_mashvol').jqxNumberInput(Show1dec); |
4011 $('#est_mashtime').jqxTooltip({ content: 'De totale tijdsduur van het maischen.' }); |
3408 $('#est_mashtime').jqxTooltip({ content: 'De totale tijdsduur van het maischen.' }); |
4012 $('#est_mashtime').jqxInput({ theme: theme, width: 70, height: 23 }); |
3409 $('#est_mashtime').jqxInput({ theme: theme, width: 70, height: 23 }); |
4013 $('#MashReady').jqxButton({ template: 'success', width: '90px', theme: theme }); |
|
4014 $('#MashReady').click(function() { |
|
4015 calcFermentables(); |
|
4016 calcWater(); |
|
4017 calcSparge(); |
|
4018 calcMash(); |
|
4019 }); |
|
4020 $('#wstep_name').jqxInput({ theme: theme, width: 320, height: 23 }); |
|
4021 $('#wstep_name').on('change', function(event) { |
|
4022 var rowdata = $('#mashGrid').jqxGrid('getrowdata', mashRow); |
|
4023 rowdata.step_name = $('#wstep_name').val(); |
|
4024 }); |
|
4025 $('#wstep_type').jqxDropDownList({ |
|
4026 theme: theme, |
|
4027 source: MashStepTypeAdapter, |
|
4028 valueMember: 'id', |
|
4029 displayMember: 'nl', |
|
4030 width: 180, |
|
4031 height: 23, |
|
4032 autoDropDownHeight: true |
|
4033 }); |
|
4034 $('#wstep_type').on('select', function(event) { |
|
4035 if (event.args) { |
|
4036 var rowdata, i, rows, row, index = event.args.index; |
|
4037 rowdata = $('#mashGrid').jqxGrid('getrowdata', mashRow); |
|
4038 if (rowdata.step_type != index) { |
|
4039 rowdata.step_type = index; |
|
4040 $('#wstep_infuse_amount').hide(); |
|
4041 $('#wstep_infuse_temp').hide(); |
|
4042 $('#wstep_pmpt_amount').hide(); |
|
4043 $('#wstep_pmpt_temp').hide(); |
|
4044 if (index == 0) { // Infusion |
|
4045 if (mashRow == 0) { |
|
4046 $('#wstep_infuse_amount').show(); |
|
4047 $('#wstep_pmpt_amount').show(); |
|
4048 } else { |
|
4049 $('#wstep_infuse_temp').show(); |
|
4050 $('#wstep_pmpt_temp').show(); |
|
4051 } |
|
4052 } |
|
4053 if (index == 1) { // Temperature |
|
4054 if (mashRow > 0) |
|
4055 rowdata.step_infuse_amount = 0; |
|
4056 rowdata.step_infuse_temp = 0; |
|
4057 } |
|
4058 if (index == 2) { // Decoction |
|
4059 var rowprev = $('#mashGrid').jqxGrid('getrowdata', mashRow-1); |
|
4060 rowdata.step_infuse_temp = 99; |
|
4061 rowdata.step_infuse_amount = decoctionVol(rowdata.step_volume, rowdata.step_temp, rowprev.end_temp); |
|
4062 console.log('decoction: ' + rowdata.step_infuse_amount + '/' + rowdata.step_infuse_temp); |
|
4063 } |
|
4064 $('#mashGrid').jqxGrid('updaterow', mashRow, rowdata); |
|
4065 mash_infuse = 0; |
|
4066 rows = $('#mashGrid').jqxGrid('getrows'); |
|
4067 for (i = 0; i < rows.length; i++) { |
|
4068 row = rows[i]; |
|
4069 if (row.step_type == 0) // Infusion |
|
4070 mash_infuse += parseFloat(row.step_infuse_amount); |
|
4071 } |
|
4072 calcMash(); |
|
4073 } |
|
4074 } |
|
4075 }); |
|
4076 $('#wstep_temp').on('change', function(event) { |
|
4077 var rowdata = $('#mashGrid').jqxGrid('getrowdata', mashRow); |
|
4078 if (rowdata.step_type == 2) { // Decoction |
|
4079 var rowprev = $('#mashGrid').jqxGrid('getrowdata', mashRow-1); |
|
4080 var a = (dataRecord.eq_tun_weight * dataRecord.eq_tun_specific_heat + rowdata.step_volume * SpecificHeatWater) * |
|
4081 (parseFloat(event.args.value) - rowprev.end_temp); |
|
4082 var b = SpecificHeatWater * (99 - parseFloat(event.args.value)); |
|
4083 if (b > 0) { |
|
4084 rowdata.step_temp = parseFloat(event.args.value); |
|
4085 rowdata.step_infuse_amount = Round(a / b, 2); |
|
4086 } else |
|
4087 rowdata.step_infuse_amount = 0; |
|
4088 console.log('change temp ' + rowdata.step_temp + ' decoction: ' + rowdata.step_infuse_amount + '/' + rowdata.step_infuse_temp); |
|
4089 } else { |
|
4090 rowdata.step_temp = parseFloat(event.args.value); |
|
4091 } |
|
4092 }); |
|
4093 $('#wstep_temp,#wend_temp,#wstep_infuse_amount,#wstep_infuse_temp').jqxNumberInput(Spin1dec); |
|
4094 $('#wend_temp').on('change', function(event) { |
|
4095 var rowdata = $('#mashGrid').jqxGrid('getrowdata', mashRow); |
|
4096 rowdata.end_temp = parseFloat(event.args.value); |
|
4097 }); |
|
4098 $('#wstep_time,#wramp_time').jqxNumberInput(PosInt); |
|
4099 $('#wstep_time').on('change', function(event) { |
|
4100 var rowdata = $('#mashGrid').jqxGrid('getrowdata', mashRow); |
|
4101 rowdata.step_time = parseFloat(event.args.value); |
|
4102 calcMash(); |
|
4103 }); |
|
4104 $('#wstep_ph').jqxNumberInput(Spin2pH); |
|
4105 $('#wstep_ph').on('change', function(event) { |
|
4106 var rowdata = $('#mashGrid').jqxGrid('getrowdata', mashRow); |
|
4107 rowdata.step_ph = parseFloat(event.args.value); |
|
4108 }); |
|
4109 $('#wstep_sg').jqxNumberInput(SGopts); |
|
4110 $('#wstep_sg').on('change', function(event) { |
|
4111 var rowdata = $('#mashGrid').jqxGrid('getrowdata', mashRow); |
|
4112 rowdata.step_sg = parseFloat(event.args.value); |
|
4113 }); |
|
4114 $('#wstep_brix').jqxNumberInput(Spin1dec); |
|
4115 $('#wstep_brix').on('change', function(event) { |
|
4116 /* Use plato_to_sg at this stage */ |
|
4117 var sg = Round(plato_to_sg(parseFloat(event.args.value)), 4); |
|
4118 console.log('brix: ' + parseFloat(event.args.value) + ' sg: ' + sg); |
|
4119 var rowdata = $('#mashGrid').jqxGrid('getrowdata', mashRow); |
|
4120 if (sg <= 1.005) { |
|
4121 sg = 0.0; |
|
4122 } |
|
4123 rowdata.step_sg = sg; |
|
4124 $('#wstep_sg').val(sg); |
|
4125 }); |
|
4126 $('#wramp_time').on('change', function(event) { |
|
4127 var rowdata = $('#mashGrid').jqxGrid('getrowdata', mashRow); |
|
4128 rowdata.ramp_time = parseFloat(event.args.value); |
|
4129 calcMash(); |
|
4130 }); |
|
4131 $('#wstep_infuse_amount').on('change', function(event) { |
|
4132 var row, i, rows, rowdata = $('#mashGrid').jqxGrid('getrowdata', mashRow); |
|
4133 rowdata.step_infuse_amount = parseFloat(event.args.value); |
|
4134 if (mashRow == 0) { |
|
4135 rowdata.step_infuse_amount = parseFloat(event.args.value); |
|
4136 mash_infuse = 0; |
|
4137 rows = $('#mashGrid').jqxGrid('getrows'); |
|
4138 for (i = 0; i < rows.length; i++) { |
|
4139 row = rows[i]; |
|
4140 if (row.step_type == 0) // Infusion |
|
4141 mash_infuse += parseFloat(row.step_infuse_amount); |
|
4142 } |
|
4143 if (dataRecord.w2_amount == 0) { |
|
4144 dataRecord.w1_amount = mash_infuse; |
|
4145 $('#w1_amount').val(mash_infuse); |
|
4146 } else { |
|
4147 var w1_amount = (dataRecord.w1_amount / (dataRecord.w1_amount + dataRecord.w2_amount)) * mash_infuse; |
|
4148 var w2_amount = (dataRecord.w2_amount / (dataRecord.w1_amount + dataRecord.w2_amount)) * mash_infuse; |
|
4149 dataRecord.w1_amount = Round(w1_amount, 3); |
|
4150 dataRecord.w2_amount = Round(w2_amount, 3); |
|
4151 $('#w1_amount').val(dataRecord.w1_amount); |
|
4152 $('#w2_amount').val(dataRecord.w2_amount); |
|
4153 } |
|
4154 $('#wg_amount').val(mash_infuse); |
|
4155 console.log('new infuse amount: ' + mash_infuse); |
|
4156 calcWater(); |
|
4157 calcMash(); |
|
4158 } |
|
4159 }); |
|
4160 $('#wstep_infuse_temp').on('change', function(event) { |
|
4161 var prevdata = $('#mashGrid').jqxGrid('getrowdata', mashRow-1); |
|
4162 var rowdata = $('#mashGrid').jqxGrid('getrowdata', mashRow); |
|
4163 rowdata.step_infuse_temp = parseFloat(event.args.value); |
|
4164 var vol = infusionVol(prevdata.step_volume, mashkg, rowdata.step_infuse_temp, rowdata.step_temp, prevdata.end_temp); |
|
4165 console.log('new vol: ' + vol); |
|
4166 rowdata.step_infuse_amount = vol; |
|
4167 $('#wstep_infuse_amount').val(vol); |
|
4168 }); |
|
4169 |
3410 |
4170 // Tab 8, Water |
3411 // Tab 8, Water |
4171 $('#tgt_bu').jqxNumberInput(Show2wat); |
3412 $('#tgt_bu').jqxNumberInput(Show2wat); |
4172 $('#tgt_so4_cl,#got_so4_cl').jqxNumberInput(Show1wat); |
3413 $('#tgt_so4_cl,#got_so4_cl').jqxNumberInput(Show1wat); |
|
3414 $('#preboil_ph').jqxNumberInput(Show2wat); |
4173 |
3415 |
4174 // Water source 1 |
3416 // Water source 1 |
4175 $('#w1_name').jqxDropDownList({ |
3417 $('#w1_name').jqxInput({ theme: theme, width: 200, height: 23 }); |
4176 placeHolder: 'Kies hoofd water:', |
3418 $('#w1_button').jqxRadioButton({ theme: theme, width: 50, height: 23, disabled: true }); |
4177 theme: theme, |
|
4178 source: waterlist, |
|
4179 displayMember: 'name', |
|
4180 width: 200, |
|
4181 height: 27, |
|
4182 dropDownWidth: 400, |
|
4183 dropDownHeight: 400 |
|
4184 }); |
|
4185 $('#w1_name').on('select', function(event) { |
|
4186 if (event.args) { |
|
4187 var datarecord, index = event.args.index; |
|
4188 datarecord = waterlist.records[index]; |
|
4189 dataRecord.w1_name = datarecord.name; |
|
4190 $('#w1_calcium').val(datarecord.calcium); |
|
4191 dataRecord.w1_calcium = datarecord.calcium; |
|
4192 $('#w1_sulfate').val(datarecord.sulfate); |
|
4193 dataRecord.w1_sulfate = datarecord.sulfate; |
|
4194 $('#w1_chloride').val(datarecord.chloride); |
|
4195 dataRecord.w1_chloride = datarecord.chloride; |
|
4196 $('#w1_sodium').val(datarecord.sodium); |
|
4197 dataRecord.w1_sodium = datarecord.sodium; |
|
4198 $('#w1_magnesium').val(datarecord.magnesium); |
|
4199 dataRecord.w1_magnesium = datarecord.magnesium; |
|
4200 $('#w1_total_alkalinity').val(datarecord.total_alkalinity); |
|
4201 $('#w1_bicarbonate').val(datarecord.total_alkalinity * 1.22); |
|
4202 dataRecord.w1_total_alkalinity = datarecord.total_alkalinity; |
|
4203 $('#w1_ph').val(datarecord.ph); |
|
4204 dataRecord.w1_ph = datarecord.ph; |
|
4205 $('#w1_cost').val(datarecord.cost); |
|
4206 dataRecord.w1_cost = datarecord.cost; |
|
4207 calcWater(); |
|
4208 } |
|
4209 }); |
|
4210 $('#w1_amount,#w1_calcium,#w1_magnesium,#w1_sodium,#w1_bicarbonate,#w1_total_alkalinity,#w1_chloride,#w1_sulfate').jqxNumberInput(Show1wat); |
3419 $('#w1_amount,#w1_calcium,#w1_magnesium,#w1_sodium,#w1_bicarbonate,#w1_total_alkalinity,#w1_chloride,#w1_sulfate').jqxNumberInput(Show1wat); |
4211 $('#w1_ph').jqxNumberInput(Show2wat); |
3420 $('#w1_ph').jqxNumberInput(Show2wat); |
|
3421 $('#w1_hardness').jqxNumberInput(Show1wat); |
|
3422 $('#w1_ra').jqxNumberInput(Show1wat); |
4212 // Water source 2 |
3423 // Water source 2 |
4213 $('#w2_name').jqxDropDownList({ |
3424 $('#w2_name').jqxInput({ theme: theme, width: 200, height: 23 }); |
4214 placeHolder: 'Kies meng water:', |
3425 $('#w2_button').jqxRadioButton({ theme: theme, width: 50, height: 23, disabled: true }); |
4215 theme: theme, |
3426 $('#w2_amount').jqxNumberInput(Show1wat); |
4216 source: water2list, |
|
4217 displayMember: 'name', |
|
4218 width: 200, |
|
4219 height: 27, |
|
4220 dropDownWidth: 400, |
|
4221 dropDownHeight: 400 |
|
4222 }); |
|
4223 $('#w2_name').on('select', function(event) { |
|
4224 if (event.args) { |
|
4225 var datarecord, index = event.args.index; |
|
4226 datarecord = water2list.records[index]; |
|
4227 if (index == 0) { |
|
4228 dataRecord.w2_amount = 0; |
|
4229 $('#w2_amount').val(0); |
|
4230 dataRecord.w1_amount = mash_infuse; |
|
4231 $('#w1_amount').val(mash_infuse); |
|
4232 } |
|
4233 dataRecord.w2_name = datarecord.name; |
|
4234 $('#w2_calcium').val(datarecord.calcium); |
|
4235 dataRecord.w2_calcium = datarecord.calcium; |
|
4236 $('#w2_sulfate').val(datarecord.sulfate); |
|
4237 dataRecord.w2_sulfate = datarecord.sulfate; |
|
4238 $('#w2_chloride').val(datarecord.chloride); |
|
4239 dataRecord.w2_chloride = datarecord.chloride; |
|
4240 $('#w2_sodium').val(datarecord.sodium); |
|
4241 dataRecord.w2_sodium = datarecord.sodium; |
|
4242 $('#w2_magnesium').val(datarecord.magnesium); |
|
4243 dataRecord.w2_magnesium = datarecord.magnesium; |
|
4244 $('#w2_total_alkalinity').val(datarecord.total_alkalinity); |
|
4245 $('#w2_bicarbonate').val(datarecord.total_alkalinity * 1.22); |
|
4246 dataRecord.w2_total_alkalinity = datarecord.total_alkalinity; |
|
4247 $('#w2_ph').val(datarecord.ph); |
|
4248 dataRecord.w2_ph = datarecord.ph; |
|
4249 $('#w2_cost').val(datarecord.cost); |
|
4250 dataRecord.w2_cost = datarecord.cost; |
|
4251 $('#w2_amount').jqxNumberInput({ max: 100000, readOnly: false }); // Set high max to enable the spinbuttons. |
|
4252 calcWater(); |
|
4253 } |
|
4254 }); |
|
4255 $('#w2_amount').jqxTooltip({ content: 'De verdeling van het hoofd en meng water. Het totale maisch water volume blijft gelijk.'}); |
|
4256 $('#w2_amount').jqxNumberInput({ |
|
4257 inputMode: 'simple', spinMode: 'simple', theme: theme, width: 94, height: 23, min: 0, max: 0, decimalDigits: 1, |
|
4258 spinButtons: true, spinButtonsStep: 0.1, readOnly: true |
|
4259 }); |
|
4260 $('#w2_calcium,#w2_magnesium,#w2_sodium,#w2_bicarbonate,#w2_total_alkalinity,#w2_chloride,#w2_sulfate').jqxNumberInput(Show1wat); |
3427 $('#w2_calcium,#w2_magnesium,#w2_sodium,#w2_bicarbonate,#w2_total_alkalinity,#w2_chloride,#w2_sulfate').jqxNumberInput(Show1wat); |
4261 $('#w2_ph').jqxNumberInput(Show2wat); |
3428 $('#w2_ph').jqxNumberInput(Show2wat); |
|
3429 $('#w2_hardness').jqxNumberInput(Show1wat); |
|
3430 $('#w2_ra').jqxNumberInput(Show1wat); |
4262 // Water mixed |
3431 // Water mixed |
|
3432 $('#wg_button').jqxRadioButton({ theme: theme, width: 50, height: 23, disabled: true }); |
4263 $('#wg_amount,#wg_calcium,#wg_magnesium,#wg_sodium,#wg_bicarbonate,#wg_total_alkalinity,#wg_chloride,#wg_sulfate').jqxNumberInput(Show1wat); |
3433 $('#wg_amount,#wg_calcium,#wg_magnesium,#wg_sodium,#wg_bicarbonate,#wg_total_alkalinity,#wg_chloride,#wg_sulfate').jqxNumberInput(Show1wat); |
4264 $('#wg_ph').jqxNumberInput(Show2wat); |
3434 $('#wg_ph').jqxNumberInput(Show2wat); |
|
3435 $('#wg_hardness').jqxNumberInput(Show1wat); |
|
3436 $('#wg_ra').jqxNumberInput(Show1wat); |
4265 // Water treated |
3437 // Water treated |
4266 $('#wb_calcium').jqxTooltip({ content: 'De ideale hoeveelheid Calcium is tussen 40 en 150.'}); |
3438 $('#wb_calcium').jqxTooltip({ content: 'De ideale hoeveelheid Calcium is tussen 40 en 150.'}); |
|
3439 $('#wb_calcium').jqxNumberInput(Show1wat); |
4267 $('#wb_magnesium').jqxTooltip({ content: 'De ideale hoeveelheid Magnesium is tussen 5 en 40.'}); |
3440 $('#wb_magnesium').jqxTooltip({ content: 'De ideale hoeveelheid Magnesium is tussen 5 en 40.'}); |
|
3441 $('#wb_magnesium').jqxNumberInput(Show1wat); |
4268 $('#wb_sodium').jqxTooltip({ content: 'De ideale hoeveelheid Natrium is lager dan 150.'}); |
3442 $('#wb_sodium').jqxTooltip({ content: 'De ideale hoeveelheid Natrium is lager dan 150.'}); |
|
3443 $('#wb_sodium').jqxNumberInput(Show1wat); |
4269 $('#wb_chloride').jqxTooltip({ content: 'De ideale hoeveelheid Chloride is tussen 50 en 150. Samen met Sulfaat minder dan 500.'}); |
3444 $('#wb_chloride').jqxTooltip({ content: 'De ideale hoeveelheid Chloride is tussen 50 en 150. Samen met Sulfaat minder dan 500.'}); |
|
3445 $('#wb_chloride').jqxNumberInput(Show1wat); |
4270 $('#wb_sulfate').jqxTooltip({ content: 'De ideale hoeveelheid Sulfaat is tussen 50 en 400. Samen met Chloride minder dan 500.'}); |
3446 $('#wb_sulfate').jqxTooltip({ content: 'De ideale hoeveelheid Sulfaat is tussen 50 en 400. Samen met Chloride minder dan 500.'}); |
|
3447 $('#wb_sulfate').jqxNumberInput(Show1wat); |
4271 $('#wb_bicarbonate').jqxTooltip({ content: '0 tot 50 lichte bieren, 50 tot 150 amber bieren, 150 tot 250 donkere bieren.'}); |
3448 $('#wb_bicarbonate').jqxTooltip({ content: '0 tot 50 lichte bieren, 50 tot 150 amber bieren, 150 tot 250 donkere bieren.'}); |
4272 $('#wb_calcium,#wb_magnesium,#wb_sodium,#wb_bicarbonate,#wb_total_alkalinity,#wb_chloride,#wb_sulfate').jqxNumberInput(Show1wat); |
3449 $('#wb_bicarbonate').jqxNumberInput(Show1wat); |
4273 $('#wb_ph').jqxNumberInput(Show2wat); |
3450 $('#wb_ph').jqxNumberInput(Show2wat); |
4274 // Water target profile |
3451 $('#wb_hardness').jqxNumberInput(Show1wat); |
4275 $('#pr_name').jqxDropDownList({ |
3452 $('#wb_ra').jqxNumberInput(Show1wat); |
4276 placeHolder: 'Kies doel profiel:', |
3453 // Sparge water |
4277 theme: theme, |
3454 $('#sw_amount').jqxNumberInput(Show1wat); |
4278 source: waterprofiles, |
3455 $('#sw_calcium').jqxNumberInput(Show1wat); |
4279 displayMember: 'name', |
3456 $('#sw_magnesium').jqxNumberInput(Show1wat); |
4280 width: 200, |
3457 $('#sw_sodium').jqxNumberInput(Show1wat); |
4281 height: 27, |
3458 $('#sw_bicarbonate').jqxNumberInput(Show1wat); |
4282 dropDownWidth: 400, |
3459 $('#sw_total_alkalinity').jqxNumberInput(Show1wat); |
4283 dropDownHeight: 300 |
3460 $('#sw_chloride').jqxNumberInput(Show1wat); |
4284 }); |
3461 $('#sw_sulfate').jqxNumberInput(Show1wat); |
4285 $('#pr_name').on('select', function(event) { |
3462 $('#sw_ph').jqxNumberInput(Show2wat); |
4286 if (event.args) { |
3463 $('#sw_hardness').jqxNumberInput(Show1wat); |
4287 var datarecord, index = event.args.index; |
3464 $('#sw_ra').jqxNumberInput(Show1wat); |
4288 datarecord = waterprofiles.records[index]; |
|
4289 $('#pr_calcium').val(datarecord.calcium); |
|
4290 $('#pr_sulfate').val(datarecord.sulfate); |
|
4291 $('#pr_chloride').val(datarecord.chloride); |
|
4292 $('#pr_sodium').val(datarecord.sodium); |
|
4293 $('#pr_magnesium').val(datarecord.magnesium); |
|
4294 $('#pr_total_alkalinity').val(datarecord.total_alkalinity); |
|
4295 $('#pr_bicarbonate').val(datarecord.total_alkalinity * 1.22); |
|
4296 calcWater(); |
|
4297 } |
|
4298 }); |
|
4299 $('#pr_calcium,#pr_magnesium,#pr_sodium,#pr_bicarbonate,#pr_total_alkalinity,#pr_chloride,#pr_sulfate').jqxNumberInput(Show1wat); |
|
4300 |
3465 |
4301 // Water agents |
3466 // Water agents |
4302 $('#wa_cacl2').jqxTooltip({ content: 'Voor het maken van een ander waterprofiel. Voegt calcium en chloride toe. Voor het verbeteren van zoetere bieren.' }); |
3467 $('#wa_cacl2').jqxTooltip({ content: 'Voor het maken van een ander waterprofiel. Voegt calcium en chloride toe. Voor het verbeteren van zoetere bieren.' }); |
|
3468 $('#wa_cacl2').jqxNumberInput(Show2wat); |
|
3469 $('#ss_cacl2').jqxNumberInput(Show2wat); |
|
3470 |
4303 $('#wa_caso4').jqxTooltip({ |
3471 $('#wa_caso4').jqxTooltip({ |
4304 content: 'Gips. Voor het maken van een ander waterprofiel. Voegt calcium en sulfaat toe. Voor het verbeteren van bittere bieren.' |
3472 content: 'Gips. Voor het maken van een ander waterprofiel. Voegt calcium en sulfaat toe. Voor het verbeteren van bittere bieren.' |
4305 }); |
3473 }); |
|
3474 $('#wa_caso4').jqxNumberInput(Show2wat); |
|
3475 $('#ss_caso4').jqxNumberInput(Show2wat); |
|
3476 |
4306 $('#wa_mgso4').jqxTooltip({ content: 'Epsom zout. Voor het maken van een ander waterprofiel. Voegt magnesium en sulfaat toe. Gebruik spaarzaam!' }); |
3477 $('#wa_mgso4').jqxTooltip({ content: 'Epsom zout. Voor het maken van een ander waterprofiel. Voegt magnesium en sulfaat toe. Gebruik spaarzaam!' }); |
|
3478 $('#wa_mgso4').jqxNumberInput(Show2wat); |
|
3479 $('#ss_mgso4').jqxNumberInput(Show2wat); |
|
3480 |
4307 $('#wa_nacl').jqxTooltip({ |
3481 $('#wa_nacl').jqxTooltip({ |
4308 content: 'Keukenzout. Voor het maken van een ander waterprofiel. Voegt natrium en chloride toe. ' + |
3482 content: 'Keukenzout. Voor het maken van een ander waterprofiel. Voegt natrium en chloride toe. ' + |
4309 'Voor het accentueren van zoetheid. Bij hoge dosering wordt het bier ziltig.' |
3483 'Voor het accentueren van zoetheid. Bij hoge dosering wordt het bier ziltig.' |
4310 }); |
3484 }); |
|
3485 $('#wa_nacl').jqxNumberInput(Show2wat); |
|
3486 $('#ss_nacl').jqxNumberInput(Show2wat); |
|
3487 |
4311 $('#wa_mgcl2').jqxTooltip({ content: 'Magnesiumchloride'}); |
3488 $('#wa_mgcl2').jqxTooltip({ content: 'Magnesiumchloride'}); |
|
3489 $('#wa_mgcl2').jqxNumberInput(Show2wat); |
|
3490 $('#ss_mgcl2').jqxNumberInput(Show2wat); |
|
3491 |
4312 $('#wa_nahco3').jqxTooltip({ content: 'Baksoda'}); |
3492 $('#wa_nahco3').jqxTooltip({ content: 'Baksoda'}); |
4313 $('#wa_caco3').jqxTooltip({ content: 'Kalk'}); |
3493 $('#wa_caco3').jqxTooltip({ content: 'Kalk'}); |
4314 $('#wa_cacl2,#wa_caso4,#wa_mgso4,#wa_nacl,#wa_mgcl2,#wa_nahco3,#wa_caco3').jqxNumberInput(Spin1dec); |
3494 $('#wa_nahco3,#wa_caco3').jqxNumberInput(Show2wat); |
|
3495 |
4315 $('#mash_ph').jqxTooltip({ content: 'Maisch pH tussen 5.2 en 5.6. Gebruik 5.2 voor lichte en 5.5 voor donkere bieren.'}); |
3496 $('#mash_ph').jqxTooltip({ content: 'Maisch pH tussen 5.2 en 5.6. Gebruik 5.2 voor lichte en 5.5 voor donkere bieren.'}); |
4316 $('#mash_ph').jqxNumberInput(SpinpH); |
3497 $('#mash_ph').jqxNumberInput(Show2dec); |
4317 $('#calc_acid').jqxCheckBox({ theme: theme, width: 120, height: 23 }); |
3498 |
4318 $('#wa_acid').jqxNumberInput(Spin2dec); |
3499 $('#calc_acid').jqxCheckBox({ theme: theme, width: 120, height: 23, disabled: true }); |
4319 $('#wa_acid_name').jqxDropDownList({ |
3500 |
4320 theme: theme, |
3501 $('#wa_acid_name').jqxInput({ theme: theme, width: 130, height: 23 }); |
4321 source: AcidTypeAdapter, |
3502 $('#wa_acid').jqxNumberInput(Show2dec); |
4322 valueMember: 'id', |
|
4323 displayMember: 'nl', |
|
4324 width: 130, |
|
4325 height: 23, |
|
4326 autoDropDownHeight: true |
|
4327 }); |
|
4328 $('#wa_acid').jqxNumberInput({ symbol: ' ml', symbolPosition: 'right' }); |
3503 $('#wa_acid').jqxNumberInput({ symbol: ' ml', symbolPosition: 'right' }); |
4329 $('#wa_acid_perc,#sparge_acid_perc').jqxNumberInput(Perc0); |
3504 $('#wa_acid_perc').jqxNumberInput(Show0dec); |
4330 $('#wa_acid_perc').jqxNumberInput({ width: 70, symbol: '%', symbolPosition: 'right' }); |
3505 $('#wa_acid_perc').jqxNumberInput({ symbol: '%', symbolPosition: 'right' }); |
|
3506 |
4331 // Sparge water |
3507 // Sparge water |
4332 $('#sparge_temp,#sparge_volume').jqxNumberInput(Spin1dec); |
3508 $('#sparge_ph').jqxNumberInput(Show2dec); |
4333 $('#sparge_ph').jqxNumberInput(SpinpH); |
3509 $('#sparge_acid_amount').jqxNumberInput(Show2dec); |
4334 $('#sparge_source').jqxDropDownList({ |
3510 $('#sparge_acid_amount').jqxNumberInput({ symbol: ' ml', symbolPosition: 'right' }); |
4335 theme: theme, |
3511 $('#sparge_acid_type').jqxInput({ theme: theme, width: 130, height: 23 }); |
4336 source: SpargeSourceAdapter, |
3512 $('#sparge_acid_perc').jqxNumberInput(Show0dec); |
4337 valueMember: 'id', |
|
4338 displayMember: 'nl', |
|
4339 width: 110, |
|
4340 height: 23, |
|
4341 autoDropDownHeight: true |
|
4342 }); |
|
4343 $('#sparge_acid_amount').jqxNumberInput(Spin2dec); |
|
4344 $('#sparge_acid_amount').jqxNumberInput({ spinButtons: false, readOnly: true, symbol: ' ml', symbolPosition: 'right' }); |
|
4345 $('#sparge_acid_type').jqxDropDownList({ |
|
4346 theme: theme, |
|
4347 source: AcidTypeAdapter, |
|
4348 valueMember: 'id', |
|
4349 displayMember: 'nl', |
|
4350 width: 110, |
|
4351 height: 23, |
|
4352 autoDropDownHeight: true |
|
4353 }); |
|
4354 $('#sparge_acid_perc').jqxNumberInput({ symbol: '%', symbolPosition: 'right' }); |
3513 $('#sparge_acid_perc').jqxNumberInput({ symbol: '%', symbolPosition: 'right' }); |
4355 |
3514 |
4356 // Tab 9, Brewday |
3515 // Tab 9, Brewday |
4357 $('#brew_date_start').jqxTooltip({ content: 'Brouw datum en tijd. Voor planning laat de tijd op 00:00:00 staan.' }); |
3516 $('#brew_date_start').jqxTooltip({ content: 'Brouw datum en tijd. Voor planning laat de tijd op 00:00:00 staan.' }); |
4358 $('#brew_date_end').jqxTooltip({ content: 'End datum en tijd van de brouw. Leeg laten als er nog niet gebrouwen is.' }); |
3517 $('#brew_date_end').jqxTooltip({ content: 'End datum en tijd van de brouw. Leeg laten als er nog niet gebrouwen is.' }); |