80 height: 150, |
80 height: 150, |
81 isModal: true, |
81 isModal: true, |
82 text: "Laden recept ...", |
82 text: "Laden recept ...", |
83 theme: theme |
83 theme: theme |
84 }); |
84 }); |
|
85 |
|
86 function setReadonly(ro) { |
|
87 var rw = ! ro; |
|
88 var w100 = 100; |
|
89 var w80 = 80; |
|
90 if (ro) { // jqxNumberInput width -20 for no spinbuttons |
|
91 w100 = 80; |
|
92 w80 = 60; |
|
93 } |
|
94 $("#batch_size").jqxNumberInput({ spinButtons: rw, readOnly: ro, width: w100 }); |
|
95 $("#boil_size").jqxNumberInput({ spinButtons: rw, readOnly: ro, width: w100 }); |
|
96 $("#boil_time").jqxNumberInput({ spinButtons: rw, readOnly: ro, width: w100 }); |
|
97 $("#efficiency").jqxNumberInput({ spinButtons: rw, readOnly: ro, width: w100 }); |
|
98 $("#est_og").jqxNumberInput({ spinButtons: rw, readOnly: ro }); |
|
99 $("#type").jqxDropDownList({ disabled: ro }); |
|
100 $("#styleSelect").jqxDropDownList({ disabled: ro }); |
|
101 $("#color_method").jqxDropDownList({ disabled: ro }); |
|
102 $("#ibu_method").jqxDropDownList({ disabled: ro }); |
|
103 $("#Delete").jqxButton({ disabled: ro }); |
|
104 $("#fermentableGrid").jqxGrid({ editable: rw }); |
|
105 $("#faddrowbutton").jqxDropDownList({ disabled: ro }); |
|
106 $("#finstockbutton").jqxCheckBox({ disabled: ro }); |
|
107 $("#fdeleterowbutton").jqxButton({ disabled: ro }); |
|
108 $("#hopGrid").jqxGrid({ editable: rw }); |
|
109 $("#haddrowbutton").jqxDropDownList({ disabled: ro }); |
|
110 $("#hinstockbutton").jqxCheckBox({ disabled: ro }); |
|
111 $("#hdeleterowbutton").jqxButton({ disabled: ro }); |
|
112 $("#miscGrid").jqxGrid({ editable: rw }); |
|
113 $("#maddrowbutton").jqxDropDownList({ disabled: ro }); |
|
114 $("#minstockbutton").jqxCheckBox({ disabled: ro }); |
|
115 $("#mdeleterowbutton").jqxButton({ disabled: ro }); |
|
116 $("#yeastGrid").jqxGrid({ editable: rw }); |
|
117 $("#yaddrowbutton").jqxDropDownList({ disabled: ro }); |
|
118 $("#yinstockbutton").jqxCheckBox({ disabled: ro }); |
|
119 $("#ydeleterowbutton").jqxButton({ disabled: ro }); |
|
120 $("#mashGrid").jqxGrid({ editable: rw }); |
|
121 $("#saddrowbutton").jqxButton({ disabled: ro }); |
|
122 $("#sdeleterowbutton").jqxButton({ disabled: ro }); |
|
123 $("#w1_name").jqxDropDownList({ disabled: ro }); |
|
124 $("#w2_name").jqxDropDownList({ disabled: ro }); |
|
125 $("#pr_name").jqxDropDownList({ disabled: ro }); |
|
126 $("#wa_cacl2").jqxNumberInput({ spinButtons: rw, readOnly: ro, width: w100 }); |
|
127 $("#wa_caso4").jqxNumberInput({ spinButtons: rw, readOnly: ro, width: w100 }); |
|
128 $("#wa_mgso4").jqxNumberInput({ spinButtons: rw, readOnly: ro, width: w100 }); |
|
129 $("#wa_nacl").jqxNumberInput({ spinButtons: rw, readOnly: ro, width: w100 }); |
|
130 $("#mash_ph").jqxNumberInput({ spinButtons: rw, readOnly: ro, width: w100 }); |
|
131 $("#calc_acid").jqxCheckBox({ disabled: ro }); |
|
132 $("#wa_base_name").jqxDropDownList({ disabled: ro }); |
|
133 $("#wa_base").jqxNumberInput({ spinButtons: rw, readOnly: ro, width: w100 }); |
|
134 $("#wa_acid_name").jqxDropDownList({ disabled: ro }); |
|
135 $("#wa_acid").jqxNumberInput({ spinButtons: rw, readOnly: ro, width: w100 }); |
|
136 $("#wa_acid_perc").jqxNumberInput({ spinButtons: rw, readOnly: ro, width: w80 }); |
|
137 $("#sparge_temp").jqxNumberInput({ spinButtons: rw, readOnly: ro, width: w100 }); |
|
138 $("#sparge_volume").jqxNumberInput({ spinButtons: rw, readOnly: ro, width: w100 }); |
|
139 $("#sparge_ph").jqxNumberInput({ spinButtons: rw, readOnly: ro, width: w100 }); |
|
140 $("#sparge_source").jqxDropDownList({ disabled: ro }); |
|
141 $("#sparge_acid_type").jqxDropDownList({ disabled: ro }); |
|
142 $("#sparge_acid_perc").jqxNumberInput({ spinButtons: rw, readOnly: ro, width: w100 }); |
|
143 }; |
85 |
144 |
86 function calcFermentables() { |
145 function calcFermentables() { |
87 console.log("calcFermentables()"); |
146 console.log("calcFermentables()"); |
88 sugarsf = 0; |
147 sugarsf = 0; |
89 sugarsm = 0; |
148 sugarsm = 0; |
264 $("#miscGrid").jqxGrid('setcellvalue', i, 'm_weight', amount); |
323 $("#miscGrid").jqxGrid('setcellvalue', i, 'm_weight', amount); |
265 $("#miscGrid").jqxGrid('setcellvalue', i, 'm_amount', amount / 1000); |
324 $("#miscGrid").jqxGrid('setcellvalue', i, 'm_amount', amount / 1000); |
266 break; |
325 break; |
267 } |
326 } |
268 } |
327 } |
269 // console.log("set something, found: "+found); |
|
270 if (! found) { |
328 if (! found) { |
271 // console.log("need to add this misc"); |
|
272 var miscs = new $.jqx.dataAdapter(miscInvSource, { |
329 var miscs = new $.jqx.dataAdapter(miscInvSource, { |
273 loadComplete: function () { |
330 loadComplete: function () { |
274 var records = miscs.records; |
331 var records = miscs.records; |
275 for (var i = 0; i < records.length; i++) { |
332 for (var i = 0; i < records.length; i++) { |
276 var record = records[i]; |
333 var record = records[i]; |
546 |
597 |
547 var AT = $("#wa_acid_name").val(); |
598 var AT = $("#wa_acid_name").val(); |
548 var BT = $("#wa_base_name").val(); |
599 var BT = $("#wa_base_name").val(); |
549 |
600 |
550 var result = GetAcidSpecs(AT); |
601 var result = GetAcidSpecs(AT); |
551 pK1 = result.pK1; |
602 var pK1 = result.pK1; |
552 pK2 = result.pK2; |
603 var pK2 = result.pK2; |
553 pK3 = result.pK3; |
604 var pK3 = result.pK3; |
554 MolWt = result.MolWt; |
605 var MolWt = result.MolWt; |
555 AcidSG = result.AcidSG; |
606 var AcidSG = result.AcidSG; |
556 AcidPrc = result.AcidPrc; |
607 var AcidPrc = result.AcidPrc; |
557 // console.log(AT+" pK1: "+pK1+" pK2: "+pK2+" pK3: "+pK3+" MolWt: "+MolWt+" AcidSG: "+AcidSG+" AcidPrc: "+AcidPrc); |
|
558 |
608 |
559 if (dataRecord.calc_acid) { |
609 if (dataRecord.calc_acid) { |
560 TpH = parseFloat(dataRecord.mash_ph); |
610 TpH = parseFloat(dataRecord.mash_ph); |
561 protonDeficit = ProtonDeficit(TpH); |
611 protonDeficit = ProtonDeficit(TpH); |
562 console.log("calc_acid tgt: "+TpH+" protonDeficit: "+protonDeficit); |
612 console.log("calc_acid tgt: "+TpH+" protonDeficit: "+protonDeficit); |
579 bicarbonate = bicarbonate - protonDeficit * frac / liters; |
629 bicarbonate = bicarbonate - protonDeficit * frac / liters; |
580 total_alkalinity = bicarbonate * 50 / 61; |
630 total_alkalinity = bicarbonate * 50 / 61; |
581 } else if (protonDeficit < 0) { //Add base |
631 } else if (protonDeficit < 0) { //Add base |
582 $("#wa_acid").val(0); |
632 $("#wa_acid").val(0); |
583 setWaterAgent(last_acid, 0); |
633 setWaterAgent(last_acid, 0); |
584 r1d = Math.pow(10, (TpH - 6.38)); |
634 var r1d = Math.pow(10, (TpH - 6.38)); |
585 r2d = Math.pow(10, (TpH - 10.38)); |
635 var r2d = Math.pow(10, (TpH - 10.38)); |
586 f1d = 1 / (1 + r1d + r1d * r2d); |
636 var f1d = 1 / (1 + r1d + r1d * r2d); |
587 f2d = f1d * r1d; |
637 var f2d = f1d * r1d; |
588 f3d = f2d * r2d; |
638 var f3d = f2d * r2d; |
589 switch (BT) { |
639 switch (BT) { |
590 case 'NaHCO3': base = -protonDeficit / (f1d - f3d); //mmol totaal |
640 case 'NaHCO3': RA = -protonDeficit / (f1d - f3d); //mmol totaal |
591 base = base * MMNaHCO3/1000; //gram |
641 RA = RA * MMNaHCO3/1000; //gram |
592 $("#wa_base").val(Math.round(base * 100) / 100); |
642 $("#wa_base").val(Math.round(RA * 100) / 100); |
593 setWaterAgent(BT, Math.round(base * 100) / 100); |
643 setWaterAgent(BT, Math.round(RA * 100) / 100); |
594 if (liters > 0) { |
644 if (liters > 0) { |
595 // Na |
645 // Na |
596 RA = parseFloat($("#wa_nacl").jqxNumberInput('decimal')) * MMNa / MMNaCl + |
646 RA = parseFloat($("#wa_nacl").jqxNumberInput('decimal')) * MMNa / MMNaCl + |
597 parseFloat($("#wa_base").jqxNumberInput('decimal')) * MMNa / MMNaHCO3; |
647 parseFloat($("#wa_base").jqxNumberInput('decimal')) * MMNa / MMNaHCO3; |
598 RA = 1000 * RA / liters; |
648 RA = 1000 * RA / liters; |
603 bicarbonate = wg_bicarbonate + RA; |
653 bicarbonate = wg_bicarbonate + RA; |
604 total_alkalinity = bicarbonate * 50 / 61; |
654 total_alkalinity = bicarbonate * 50 / 61; |
605 RA = ResidualAlkalinity(wb_total_alkalinity, wb_calcium, wb_magnesium); |
655 RA = ResidualAlkalinity(wb_total_alkalinity, wb_calcium, wb_magnesium); |
606 } |
656 } |
607 break; |
657 break; |
608 case 'Na2CO3': base = -protonDeficit / (2 * f1d + f2d); //mmol totaal |
658 case 'Na2CO3': RA = -protonDeficit / (2 * f1d + f2d); //mmol totaal |
609 base = base * MMNa2CO3/1000; //gram |
659 RA = RA * MMNa2CO3/1000; //gram |
610 $("#wa_base").val(Math.round(base * 100) / 100); |
660 $("#wa_base").val(Math.round(RA * 100) / 100); |
611 setWaterAgent(BT, Math.round(base * 100) / 100); |
661 setWaterAgent(BT, Math.round(RA * 100) / 100); |
612 if (liters > 0) { |
662 if (liters > 0) { |
613 RA = parseFloat($("#wa_nacl").jqxNumberInput('decimal')) * MMNa / MMNaCl + |
663 RA = parseFloat($("#wa_nacl").jqxNumberInput('decimal')) * MMNa / MMNaCl + |
614 parseFloat($("#wa_base").jqxNumberInput('decimal')) * 2 * MMNa / MMNa2CO3; |
664 parseFloat($("#wa_base").jqxNumberInput('decimal')) * 2 * MMNa / MMNa2CO3; |
615 RA = 1000 * RA / liters; |
665 RA = 1000 * RA / liters; |
616 sodium = wg_sodium + RA; |
666 sodium = wg_sodium + RA; |
620 bicarbonate = wg_bicarbonate + RA; |
670 bicarbonate = wg_bicarbonate + RA; |
621 total_alkalinity = bicarbonate * 50 / 61; |
671 total_alkalinity = bicarbonate * 50 / 61; |
622 RA = ResidualAlkalinity(wb_total_alkalinity, wb_calcium, wb_magnesium); |
672 RA = ResidualAlkalinity(wb_total_alkalinity, wb_calcium, wb_magnesium); |
623 } |
673 } |
624 break; |
674 break; |
625 case 'CaCO3': base = -protonDeficit * (f1d - f3d); //mmol totaal |
675 case 'CaCO3': RA = -protonDeficit * (f1d - f3d); //mmol totaal |
626 base = base * MMCaCO3/1000; //gram |
676 RA = RA * MMCaCO3/1000; //gram |
627 //but only 1/3 is effective, so add 3 times as much |
677 //but only 1/3 is effective, so add 3 times as much |
628 base = 3 * base; |
678 RA = 3 * RA; |
629 $("#wa_base").val(Math.round(base * 100) / 100); |
679 $("#wa_base").val(Math.round(RA * 100) / 100); |
630 setWaterAgent(BT, Math.round(base * 100) / 100); |
680 setWaterAgent(BT, Math.round(RA * 100) / 100); |
631 if (liters > 0) { |
681 if (liters > 0) { |
632 //Bicarbonate |
682 //Bicarbonate |
633 RA = parseFloat($("#wa_base").jqxNumberInput('decimal')) / 3 * MMHCO3 / MMCaCO3; |
683 RA = parseFloat($("#wa_base").jqxNumberInput('decimal')) / 3 * MMHCO3 / MMCaCO3; |
634 RA = 1000 * RA / liters; |
684 RA = 1000 * RA / liters; |
635 bicarbonate = wg_bicarbonate + RA; |
685 bicarbonate = wg_bicarbonate + RA; |
641 RA = 1000 * RA / liters; |
691 RA = 1000 * RA / liters; |
642 calcium = wg_calcium + RA; |
692 calcium = wg_calcium + RA; |
643 RA = ResidualAlkalinity(wb_total_alkalinity, wb_calcium, wb_magnesium); |
693 RA = ResidualAlkalinity(wb_total_alkalinity, wb_calcium, wb_magnesium); |
644 } |
694 } |
645 break; |
695 break; |
646 case 'Ca(OH)2': base = -protonDeficit / 19.3; // g |
696 case 'Ca(OH)2': RA = -protonDeficit / 19.3; // g |
647 $("#wa_base").val(Math.round(base * 100) / 100); |
697 $("#wa_base").val(Math.round(RA * 100) / 100); |
648 setWaterAgent(BT, Math.round(base * 100) / 100); |
698 setWaterAgent(BT, Math.round(RA * 100) / 100); |
649 if (liters > 0) { |
699 if (liters > 0) { |
650 // Bicarbonate |
700 // Bicarbonate |
651 RA = -protonDeficit / liters; |
701 RA = -protonDeficit / liters; |
652 total_alkalinity = wg_total_alkalinity + RA; |
702 total_alkalinity = wg_total_alkalinity + RA; |
653 bicarbonate = total_alkalinity * 61 / 50; |
703 bicarbonate = total_alkalinity * 61 / 50; |
725 |
775 |
726 //find the pH where the protondeficit = protondeficit by the acid |
776 //find the pH where the protondeficit = protondeficit by the acid |
727 frac = CalcFrac(pHa, pK1, pK2, pK3); |
777 frac = CalcFrac(pHa, pK1, pK2, pK3); |
728 protonDeficit = Acid * frac; |
778 protonDeficit = Acid * frac; |
729 |
779 |
730 deltapH = 0.001; |
780 var deltapH = 0.001; |
731 deltapd = 0.1; |
781 var deltapd = 0.1; |
732 pd = ProtonDeficit(pHa); |
782 var pd = ProtonDeficit(pHa); |
733 n = 0; |
783 var n = 0; |
734 // console.log("n: "+n+" pd: "+pd+" protonDeficit: "+protonDeficit+" frac: "+frac+" pHa: "+pHa); |
784 // console.log("n: "+n+" pd: "+pd+" protonDeficit: "+protonDeficit+" frac: "+frac+" pHa: "+pHa); |
735 |
785 |
736 while (((pd < (protonDeficit - deltapd)) || (pd > (protonDeficit + deltapd))) && (n < 2000)) { |
786 while (((pd < (protonDeficit - deltapd)) || (pd > (protonDeficit + deltapd))) && (n < 2000)) { |
737 n++; |
787 n++; |
738 if (pd < (protonDeficit-deltapd)) |
788 if (pd < (protonDeficit-deltapd)) |
849 } |
899 } |
850 |
900 |
851 console.log("calcSparge() target pH: "+TargetpH+" Source: "+Source_pH+" alkalinity: "+Source_alkalinity); |
901 console.log("calcSparge() target pH: "+TargetpH+" Source: "+Source_pH+" alkalinity: "+Source_alkalinity); |
852 |
902 |
853 // Step 1: Compute the mole fractions of carbonic (f1o), bicarbonate (f2o) and carbonate(f3o) at the water pH |
903 // Step 1: Compute the mole fractions of carbonic (f1o), bicarbonate (f2o) and carbonate(f3o) at the water pH |
854 r1 = Math.pow(10, Source_pH - 6.38); |
904 var r1 = Math.pow(10, Source_pH - 6.38); |
855 r2 = Math.pow(10, Source_pH - 10.33); |
905 var r2 = Math.pow(10, Source_pH - 10.33); |
856 d = 1 + r1 + r1*r2; |
906 var d = 1 + r1 + r1*r2; |
857 f1 = 1/d; |
907 var f1 = 1/d; |
858 f2 = r1/d; |
908 var f2 = r1/d; |
859 f3 = r1 * r2 / d; |
909 var f3 = r1 * r2 / d; |
860 |
910 |
861 //Step 2. Compute the mole fractions at pH = 4.3 (the pH which defines alkalinity) |
911 //Step 2. Compute the mole fractions at pH = 4.3 (the pH which defines alkalinity) |
862 r143 = Math.pow(10, 4.3 - 6.38); |
912 var r143 = Math.pow(10, 4.3 - 6.38); |
863 r243 = Math.pow(10, 4.3 - 10.33); |
913 var r243 = Math.pow(10, 4.3 - 10.33); |
864 d43 = 1 + r143 + r143*r243; |
914 var d43 = 1 + r143 + r143*r243; |
865 f143 = 1/d43; |
915 var f143 = 1/d43; |
866 f243 = r143 / d43; |
916 var f243 = r143 / d43; |
867 f343 = r143 * r243 / d43; |
917 var f343 = r143 * r243 / d43; |
868 |
918 |
869 //Step 3. Convert the sample alkalinity to milliequivalents/L |
919 //Step 3. Convert the sample alkalinity to milliequivalents/L |
870 alkalinity = Source_alkalinity / 50; |
920 var alkalinity = Source_alkalinity / 50; |
871 //Step 4. Solve |
921 //Step 4. Solve |
872 alkalinity = alkalinity / ((f143-f1)+(f3-f343)); |
922 alkalinity = alkalinity / ((f143-f1)+(f3-f343)); |
873 |
923 |
874 //Step 5. Compute mole fractions at desired pH |
924 //Step 5. Compute mole fractions at desired pH |
875 r1g = Math.pow(10, TargetpH - 6.38); |
925 var r1g = Math.pow(10, TargetpH - 6.38); |
876 r2g = Math.pow(10, TargetpH - 10.33); |
926 var r2g = Math.pow(10, TargetpH - 10.33); |
877 dg = 1 + r1g + r1g*r2g; |
927 var dg = 1 + r1g + r1g*r2g; |
878 f1g = 1/dg; |
928 var f1g = 1/dg; |
879 f2g = r1g / dg; |
929 var f2g = r1g / dg; |
880 f3g = r1g * r2g / dg; |
930 var f3g = r1g * r2g / dg; |
881 |
931 |
882 //Step 6. Use these to compute the milliequivalents acid required per liter (mEq/L) |
932 //Step 6. Use these to compute the milliequivalents acid required per liter (mEq/L) |
883 Acid = alkalinity * ((f1g-f1)+(f3-f3g)) + Math.pow(10, -TargetpH) - Math.pow(10, -Source_pH); //mEq/l |
933 var Acid = alkalinity * ((f1g-f1)+(f3-f3g)) + Math.pow(10, -TargetpH) - Math.pow(10, -Source_pH); //mEq/l |
884 |
934 |
885 if ($("#sparge_acid_type").val() == "") { |
935 if ($("#sparge_acid_type").val() == "") { |
886 $("#sparge_acid_type").val('Melkzuur'); |
936 $("#sparge_acid_type").val('Melkzuur'); |
887 dataRecord.sparge_acid_type = 'Melkzuur'; |
937 dataRecord.sparge_acid_type = 'Melkzuur'; |
888 } |
938 } |
889 AT = dataRecord.sparge_acid_type; |
939 var AT = dataRecord.sparge_acid_type; |
890 var result = GetAcidSpecs(AT); |
940 var result = GetAcidSpecs(AT); |
891 pK1 = result.pK1; |
941 var pK1 = result.pK1; |
892 pK2 = result.pK2; |
942 var pK2 = result.pK2; |
893 pK3 = result.pK3; |
943 var pK3 = result.pK3; |
894 MolWt = result.MolWt; |
944 var MolWt = result.MolWt; |
895 AcidSG = result.AcidSG; |
945 var AcidSG = result.AcidSG; |
896 AcidPrc = result.AcidPrc; |
946 var AcidPrc = result.AcidPrc; |
897 fract = CalcFrac(TargetpH, pK1, pK2, pK3); |
947 var fract = CalcFrac(TargetpH, pK1, pK2, pK3); |
898 |
948 |
899 //Step 9. Now divide the mEq required by the "fraction". This is the required number of moles of acid. |
949 //Step 9. Now divide the mEq required by the "fraction". This is the required number of moles of acid. |
900 Acid /= fract; |
950 Acid /= fract; |
901 |
951 |
902 //Step 10. Multiply by molecular weight of the acid |
952 //Step 10. Multiply by molecular weight of the acid |
915 } |
965 } |
916 |
966 |
917 function calcFermentablesFromOG(OG) { |
967 function calcFermentablesFromOG(OG) { |
918 |
968 |
919 console.log("calcFermentablesFromOG("+OG+")"); |
969 console.log("calcFermentablesFromOG("+OG+")"); |
920 var i; |
|
921 var efficiency = parseFloat($("#efficiency").jqxNumberInput('decimal')); |
970 var efficiency = parseFloat($("#efficiency").jqxNumberInput('decimal')); |
922 var rows = $('#fermentableGrid').jqxGrid('getrows'); |
971 var rows = $('#fermentableGrid').jqxGrid('getrows'); |
923 var sug = sg_to_plato(OG) * parseFloat($("#batch_size").jqxNumberInput('decimal')) * OG / 100; //total amount of sugars in kg |
972 var sug = sg_to_plato(OG) * parseFloat($("#batch_size").jqxNumberInput('decimal')) * OG / 100; //total amount of sugars in kg |
924 var tot = 0; |
973 var tot = 0; |
925 var d; |
974 for (var i = 0; i < rows.length; i++) { |
926 for (i = 0; i < rows.length; i++) { |
975 var row = rows[i]; |
927 row = rows[i]; |
976 var d = row.f_percentage / 100 * (row.f_yield / 100) * (1 - row.f_moisture / 100); |
928 d = row.f_percentage / 100 * (row.f_yield / 100) * (1 - row.f_moisture / 100); |
|
929 if (row.f_added == "Mash") |
977 if (row.f_added == "Mash") |
930 d = efficiency / 100 * d; |
978 d = efficiency / 100 * d; |
931 tot += d; |
979 tot += d; |
932 } |
980 } |
933 |
981 |
934 var totmass = 0; |
982 var totmass = 0; |
935 if (tot) |
983 if (tot) |
936 totmass = sug / tot; |
984 totmass = sug / tot; |
937 |
985 |
938 if (totmass) { |
986 if (totmass) { |
939 for (i = 0; i < rows.length; i++) { |
987 for (var i = 0; i < rows.length; i++) { |
940 row = rows[i]; |
988 var row = rows[i]; |
941 $("#fermentableGrid").jqxGrid('setcellvalue', i, "f_amount", row.f_percentage / 100 * totmass); |
989 $("#fermentableGrid").jqxGrid('setcellvalue', i, "f_amount", row.f_percentage / 100 * totmass); |
942 } |
990 } |
943 } |
991 } |
944 //CalcWaterBalance; |
992 //CalcWaterBalance; |
945 }; |
993 }; |
1274 var records = dataAdapter.records; |
1329 var records = dataAdapter.records; |
1275 dataRecord = records[0]; |
1330 dataRecord = records[0]; |
1276 // Hidden record uuid |
1331 // Hidden record uuid |
1277 $("#name").val(dataRecord.name); |
1332 $("#name").val(dataRecord.name); |
1278 $("#notes").val(dataRecord.notes); |
1333 $("#notes").val(dataRecord.notes); |
|
1334 $("#locked").val(dataRecord.locked); |
1279 $("#st_name").val(dataRecord.st_name); |
1335 $("#st_name").val(dataRecord.st_name); |
1280 $("#st_letter").val(dataRecord.st_letter); |
1336 $("#st_letter").val(dataRecord.st_letter); |
1281 $("#st_guide").val(dataRecord.st_guide); |
1337 $("#st_guide").val(dataRecord.st_guide); |
1282 $("#st_category").val(dataRecord.st_category); |
1338 $("#st_category").val(dataRecord.st_category); |
1283 $("#st_category_number").val(dataRecord.st_category_number); |
1339 $("#st_category_number").val(dataRecord.st_category_number); |
1358 // Inline fermentables editor |
1414 // Inline fermentables editor |
1359 var editFermentable = function (data) { |
1415 var editFermentable = function (data) { |
1360 var fermentableSource = { |
1416 var fermentableSource = { |
1361 localdata: data.fermentables, |
1417 localdata: data.fermentables, |
1362 datatype: "local", |
1418 datatype: "local", |
|
1419 cache: false, |
|
1420 async: false, |
1363 datafields: [ |
1421 datafields: [ |
1364 { name: 'f_name', type: 'string' }, |
1422 { name: 'f_name', type: 'string' }, |
1365 { name: 'f_origin', type: 'string' }, |
1423 { name: 'f_origin', type: 'string' }, |
1366 { name: 'f_supplier', type: 'string' }, |
1424 { name: 'f_supplier', type: 'string' }, |
1367 { name: 'f_amount', type: 'float' }, |
1425 { name: 'f_amount', type: 'float' }, |
1659 var editHop = function (data) { |
1717 var editHop = function (data) { |
1660 var hopSource = { |
1718 var hopSource = { |
1661 localdata: data.hops, |
1719 localdata: data.hops, |
1662 datatype: "local", |
1720 datatype: "local", |
1663 cache: false, |
1721 cache: false, |
|
1722 async: false, |
1664 datafields: [ |
1723 datafields: [ |
1665 { name: 'h_name', type: 'string' }, |
1724 { name: 'h_name', type: 'string' }, |
1666 { name: 'h_origin', type: 'string' }, |
1725 { name: 'h_origin', type: 'string' }, |
1667 { name: 'h_amount', type: 'float' }, |
1726 { name: 'h_amount', type: 'float' }, |
1668 { name: 'h_cost', type: 'float' }, |
1727 { name: 'h_cost', type: 'float' }, |
1879 var editMisc = function (data) { |
1938 var editMisc = function (data) { |
1880 var miscSource = { |
1939 var miscSource = { |
1881 localdata: data.miscs, |
1940 localdata: data.miscs, |
1882 datatype: "local", |
1941 datatype: "local", |
1883 cache: false, |
1942 cache: false, |
|
1943 async: false, |
1884 datafields: [ |
1944 datafields: [ |
1885 { name: 'm_name', type: 'string' }, |
1945 { name: 'm_name', type: 'string' }, |
1886 { name: 'm_amount', type: 'float' }, |
1946 { name: 'm_amount', type: 'float' }, |
1887 { name: 'm_cost', type: 'float' }, |
1947 { name: 'm_cost', type: 'float' }, |
1888 { name: 'm_type', type: 'string' }, |
1948 { name: 'm_type', type: 'string' }, |
2109 var editYeast = function (data) { |
2169 var editYeast = function (data) { |
2110 var yeastSource = { |
2170 var yeastSource = { |
2111 localdata: data.yeasts, |
2171 localdata: data.yeasts, |
2112 datatype: "local", |
2172 datatype: "local", |
2113 cache: false, |
2173 cache: false, |
|
2174 async: false, |
2114 datafields: [ |
2175 datafields: [ |
2115 { name: 'y_name', type: 'string' }, |
2176 { name: 'y_name', type: 'string' }, |
2116 { name: 'y_laboratory', type: 'string' }, |
2177 { name: 'y_laboratory', type: 'string' }, |
2117 { name: 'y_product_id', type: 'string' }, |
2178 { name: 'y_product_id', type: 'string' }, |
2118 { name: 'y_amount', type: 'float' }, |
2179 { name: 'y_amount', type: 'float' }, |
2302 } |
2363 } |
2303 var mashSource = { |
2364 var mashSource = { |
2304 localdata: data.mashs, |
2365 localdata: data.mashs, |
2305 datatype: "local", |
2366 datatype: "local", |
2306 cache: false, |
2367 cache: false, |
|
2368 async: false, |
2307 datafields: [ |
2369 datafields: [ |
2308 { name: 'step_name', type: 'string' }, |
2370 { name: 'step_name', type: 'string' }, |
2309 { name: 'step_type', type: 'string' }, |
2371 { name: 'step_type', type: 'string' }, |
2310 { name: 'step_infuse_amount', type: 'float' }, |
2372 { name: 'step_infuse_amount', type: 'float' }, |
2311 { name: 'step_temp', type: 'float' }, |
2373 { name: 'step_temp', type: 'float' }, |
2368 dataRecord.est_fg = fg; |
2430 dataRecord.est_fg = fg; |
2369 $('#est_fg').val(fg); |
2431 $('#est_fg').val(fg); |
2370 calcInit(); |
2432 calcInit(); |
2371 $('#jqxLoader').jqxLoader('close'); |
2433 $('#jqxLoader').jqxLoader('close'); |
2372 $('#jqxTabs').jqxTabs('first'); |
2434 $('#jqxTabs').jqxTabs('first'); |
|
2435 // setReadonly(dataRecord.locked); |
2373 }, |
2436 }, |
2374 columns: [ |
2437 columns: [ |
2375 { text: 'Stap naam', datafield: 'step_name' }, |
2438 { text: 'Stap naam', datafield: 'step_name' }, |
2376 { text: 'Stap type', datafield: 'step_type', width: 110, columntype: 'dropdownlist', |
2439 { text: 'Stap type', datafield: 'step_type', width: 110, columntype: 'dropdownlist', |
2377 createeditor: function (row, cellvalue, editor, celltext, cellwidth, cellheight) { |
2440 createeditor: function (row, cellvalue, editor, celltext, cellwidth, cellheight) { |
2433 var srcIBU = [ "Tinseth", "Rager", "Daniels" ]; // Only these are supported at this time. |
2496 var srcIBU = [ "Tinseth", "Rager", "Daniels" ]; // Only these are supported at this time. |
2434 var srcBase = [ "NaHCO3", "Na2CO3", "CaCO3", "Ca(OH)2" ]; |
2497 var srcBase = [ "NaHCO3", "Na2CO3", "CaCO3", "Ca(OH)2" ]; |
2435 var srcAcid = [ "Melkzuur", "Zoutzuur", "Fosforzuur", "Zwavelzuur" ]; |
2498 var srcAcid = [ "Melkzuur", "Zoutzuur", "Fosforzuur", "Zwavelzuur" ]; |
2436 var srcSource = [ "Bron 1", "Bron 2", "Gemengd" ]; |
2499 var srcSource = [ "Bron 1", "Bron 2", "Gemengd" ]; |
2437 $("#name").jqxInput({ theme: theme, width: 640, height: 23 }); |
2500 $("#name").jqxInput({ theme: theme, width: 640, height: 23 }); |
|
2501 $("#locked").jqxCheckBox({ theme: theme, width: 120, height: 23 }); |
2438 $("#notes").jqxInput({ theme: theme, width: 960, height: 200 }); |
2502 $("#notes").jqxInput({ theme: theme, width: 960, height: 200 }); |
2439 $("#st_name").jqxInput({ theme: theme, width: 250, height: 23 }); |
2503 $("#st_name").jqxInput({ theme: theme, width: 250, height: 23 }); |
2440 $("#st_letter").jqxInput({ theme: theme, width: 100, height: 23 }); |
2504 $("#st_letter").jqxInput({ theme: theme, width: 100, height: 23 }); |
2441 $("#st_guide").jqxInput({ theme: theme, width: 250, height: 23 }); |
2505 $("#st_guide").jqxInput({ theme: theme, width: 250, height: 23 }); |
2442 $("#st_category").jqxInput({ theme: theme, width: 250, height: 23 }); |
2506 $("#st_category").jqxInput({ theme: theme, width: 250, height: 23 }); |
2694 var mashrow = $('#mashGrid').jqxGrid('getrows'); |
2758 var mashrow = $('#mashGrid').jqxGrid('getrows'); |
2695 var row = { |
2759 var row = { |
2696 record: my_record, |
2760 record: my_record, |
2697 uuid: dataRecord.uuid, |
2761 uuid: dataRecord.uuid, |
2698 name: $("#name").val(), |
2762 name: $("#name").val(), |
|
2763 locked: $("#locked").val(), |
2699 notes: $("#notes").val(), |
2764 notes: $("#notes").val(), |
2700 st_name: $('#st_name').val(), |
2765 st_name: $('#st_name').val(), |
2701 st_letter: $('#st_letter').val(), |
2766 st_letter: $('#st_letter').val(), |
2702 st_guide: $('#st_guide').val(), |
2767 st_guide: $('#st_guide').val(), |
2703 st_type: $('#st_type').val(), |
2768 st_type: $('#st_type').val(), |