www/js/prod_edit.js

changeset 760
fce78f57a44d
parent 759
89bcab49284a
child 764
e95744b6b31d
equal deleted inserted replaced
759:89bcab49284a 760:fce78f57a44d
258 k_what = 0; 258 k_what = 0;
259 259
260 hop_flavour = 0, 260 hop_flavour = 0,
261 hop_aroma = 0, 261 hop_aroma = 0,
262 mash_infuse = 0, 262 mash_infuse = 0,
263 last_base = '',
264 last_acid = '', 263 last_acid = '',
265 264
266 MMCa = 40.048, 265 MMCa = 40.048,
267 MMMg = 24.305, 266 MMMg = 24.305,
268 MMNa = 22.98976928, 267 MMNa = 22.98976928,
722 $('#wb_magnesium').val(dataRecord.wb_magnesium); 721 $('#wb_magnesium').val(dataRecord.wb_magnesium);
723 $('#wb_total_alkalinity').val(dataRecord.wb_total_alkalinity); 722 $('#wb_total_alkalinity').val(dataRecord.wb_total_alkalinity);
724 $('#wb_ph').val(dataRecord.wb_ph); 723 $('#wb_ph').val(dataRecord.wb_ph);
725 $('#wa_acid_name').val(dataRecord.wa_acid_name); 724 $('#wa_acid_name').val(dataRecord.wa_acid_name);
726 $('#wa_acid_perc').val(dataRecord.wa_acid_perc); 725 $('#wa_acid_perc').val(dataRecord.wa_acid_perc);
727 $('#wa_base_name').val(dataRecord.wa_base_name); 726 // $('#wa_base_name').val(dataRecord.wa_base_name);
728 $('#starter_type').val(dataRecord.starter_type); 727 $('#starter_type').val(dataRecord.starter_type);
729 $('#starter_sg').val(dataRecord.starter_sg); 728 $('#starter_sg').val(dataRecord.starter_sg);
730 $('#starter_viability').val(dataRecord.starter_viability); 729 $('#starter_viability').val(dataRecord.starter_viability);
731 $('#yeast_prod_date').val(dataRecord.yeast_prod_date); 730 $('#yeast_prod_date').val(dataRecord.yeast_prod_date);
732 $('#yeast_pitchrate').val(dataRecord.yeast_pitchrate); 731 $('#yeast_pitchrate').val(dataRecord.yeast_pitchrate);
1272 case 'Zwavelzuur': 1271 case 'Zwavelzuur':
1273 $('#wa_acid_name').val(3); 1272 $('#wa_acid_name').val(3);
1274 $('#wa_acid').val(row.m_amount * 1000); 1273 $('#wa_acid').val(row.m_amount * 1000);
1275 $('#wa_acid_perc').val(AcidTypeData[3].AcidPrc); 1274 $('#wa_acid_perc').val(AcidTypeData[3].AcidPrc);
1276 last_acid = 'Zwavelzuur'; 1275 last_acid = 'Zwavelzuur';
1277 break;
1278 case 'Na2CO3':
1279 $('#wa_base_name').val(0);
1280 $('#wa_base').val(row.m_amount * 1000);
1281 last_base = 'Na2CO3';
1282 break;
1283 case 'Ca(OH)2':
1284 $('#wa_base_name').val(1);
1285 $('#wa_base').val(row.m_amount * 1000);
1286 last_base = 'Ca(OH)2';
1287 break; 1276 break;
1288 } 1277 }
1289 } 1278 }
1290 return data; 1279 return data;
1291 }, 1280 },
2940 case 'Zoutzuur': 2929 case 'Zoutzuur':
2941 case 'Fosforzuur': 2930 case 'Fosforzuur':
2942 case 'Zwavelzuur': 2931 case 'Zwavelzuur':
2943 $('#wa_acid').val(row.m_amount * 1000); 2932 $('#wa_acid').val(row.m_amount * 1000);
2944 break; 2933 break;
2945 case 'Na2CO3':
2946 case 'Ca(OH)2':
2947 $('#wa_base').val(row.m_amount * 1000);
2948 break;
2949 } 2934 }
2950 } 2935 }
2951 }; 2936 };
2952 2937
2953 function adjustYeasts(factor) { 2938 function adjustYeasts(factor) {
3242 ph = 0, 3227 ph = 0,
3243 RA = 0, 3228 RA = 0,
3244 frac = 0, 3229 frac = 0,
3245 TpH = 0, 3230 TpH = 0,
3246 protonDeficit = 0, 3231 protonDeficit = 0,
3247 AT, BT, 3232 AT, /*BT,*/
3248 r1d, r2d, f1d, f2d, f3d, 3233 r1d, r2d, f1d, f2d, f3d,
3249 deltapH, deltapd, pd, n, 3234 deltapH, deltapd, pd, n,
3250 Res; 3235 Res;
3251 3236
3252 if (dataRecord.w1_name == '') { 3237 if (dataRecord.w1_name == '') {
3325 if (parseFloat(dataRecord.wa_acid_perc) == 0) { 3310 if (parseFloat(dataRecord.wa_acid_perc) == 0) {
3326 dataRecord.wa_acid_perc = AcidTypeData[AT].AcidPrc; 3311 dataRecord.wa_acid_perc = AcidTypeData[AT].AcidPrc;
3327 $('#wa_acid_perc').val(AcidTypeData[AT].AcidPrc); 3312 $('#wa_acid_perc').val(AcidTypeData[AT].AcidPrc);
3328 } 3313 }
3329 3314
3330 if (dataRecord.wa_base_name < 0 || dataRecord.wa_base_name > 3) {
3331 $('#wa_base_name').val(0);
3332 dataRecord.wa_base_name = 0;
3333 }
3334 if (last_base == '')
3335 last_base = BaseTypeData[dataRecord.wa_base_name].nl;
3336
3337 AT = dataRecord.wa_acid_name; 3315 AT = dataRecord.wa_acid_name;
3338 BT = dataRecord.wa_base_name;
3339 3316
3340 /* Note that the next calculations do not correct the pH change by the added salts. 3317 /* Note that the next calculations do not correct the pH change by the added salts.
3341 This pH change is at most 0.1 pH and is a minor difference in Acid amount. */ 3318 This pH change is at most 0.1 pH and is a minor difference in Acid amount. */
3342 3319
3343 if (dataRecord.calc_acid) { 3320 if (dataRecord.calc_acid) {
3345 $('.c_mashph').show(); 3322 $('.c_mashph').show();
3346 TpH = parseFloat(dataRecord.mash_ph); 3323 TpH = parseFloat(dataRecord.mash_ph);
3347 protonDeficit = ProtonDeficit(TpH); 3324 protonDeficit = ProtonDeficit(TpH);
3348 //console.log('calc_acid tgt: ' + TpH + ' protonDeficit: ' + protonDeficit); 3325 //console.log('calc_acid tgt: ' + TpH + ' protonDeficit: ' + protonDeficit);
3349 if (protonDeficit > 0) { // Add acid 3326 if (protonDeficit > 0) { // Add acid
3350 $('#wa_base').val(0);
3351 dataRecord.wa_base = 0;
3352 setWaterAgent(last_base, 0);
3353 frac = CalcFrac(TpH, AcidTypeData[AT].pK1, AcidTypeData[AT].pK2, AcidTypeData[AT].pK3); 3327 frac = CalcFrac(TpH, AcidTypeData[AT].pK1, AcidTypeData[AT].pK2, AcidTypeData[AT].pK3);
3354 Acid = protonDeficit / frac; 3328 Acid = protonDeficit / frac;
3355 Acid *= AcidTypeData[AT].MolWt; // mg 3329 Acid *= AcidTypeData[AT].MolWt; // mg
3356 Acidmg = Acid; 3330 Acidmg = Acid;
3357 Acid = Acid / AcidTypeData[AT].AcidSG; // ml 3331 Acid = Acid / AcidTypeData[AT].AcidSG; // ml
3360 $('#wa_acid').val(Acid); 3334 $('#wa_acid').val(Acid);
3361 setWaterAgent(AcidTypeData[AT].nl, Acid); 3335 setWaterAgent(AcidTypeData[AT].nl, Acid);
3362 3336
3363 bicarbonate = bicarbonate - protonDeficit * frac / liters; 3337 bicarbonate = bicarbonate - protonDeficit * frac / liters;
3364 total_alkalinity = bicarbonate * 50 / 61; 3338 total_alkalinity = bicarbonate * 50 / 61;
3365 } else if (protonDeficit < 0) { //Add base
3366 $('#wa_acid').val(0);
3367 dataRecord.wa_acid = 0;
3368 setWaterAgent(last_acid, 0);
3369 r1d = Math.pow(10, (TpH - 6.35));
3370 r2d = Math.pow(10, (TpH - 10.33));
3371 f1d = 1 / (1 + r1d + r1d * r2d);
3372 f2d = f1d * r1d;
3373 f3d = f2d * r2d;
3374 switch (BT) {
3375 // case 0:
3376 // RA = -protonDeficit / (f1d - f3d); // Sodiumbicarbonate, mmol totaal
3377 // RA = RA * MMNaHCO3 / 1000; //gram
3378 // $('#wa_base').val(Round(RA, 2));
3379 // setWaterAgent('NaHCO3', Round(RA, 2));
3380 // if (liters > 0) {
3381 // // Na
3382 // RA = (parseFloat($('#wa_nacl').jqxNumberInput('decimal')) * MMNa / MMNaCl * 1000 +
3383 // parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMNa / MMNaHCO3 * 1000) / liters;
3384 // sodium = wg_sodium + RA;
3385 // // HCO3
3386 // RA = (parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMHCO3 / MMNaHCO3 * 1000) / liters;
3387 // bicarbonate = wg_bicarbonate + RA;
3388 // total_alkalinity = bicarbonate * 50 / 61;
3389 // }
3390 // break;
3391 case 0:
3392 RA = -protonDeficit / (2 * f1d + f2d); // Sodiumcarbonate, mmol totaal
3393 RA = RA * MMNa2CO3 / 1000; //gram
3394 $('#wa_base').val(Round(RA, 2));
3395 setWaterAgent('Na2CO3', Round(RA, 2));
3396 if (liters > 0) {
3397 RA = (parseFloat($('#wa_nacl').jqxNumberInput('decimal')) * MMNa / MMNaCl * 1000+
3398 parseFloat($('#wa_base').jqxNumberInput('decimal')) * 2 * MMNa / MMNa2CO3 * 1000) / liters;
3399 sodium = wg_sodium + RA;
3400 // HCO3
3401 RA = (parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMHCO3 / MMNa2CO3 * 1000) / liters;
3402 bicarbonate = wg_bicarbonate + RA;
3403 total_alkalinity = bicarbonate * 50 / 61;
3404 }
3405 break;
3406 // case 2:
3407 // RA = -protonDeficit * (f1d - f3d); // Calciumcarbonate, mmol totaal
3408 // RA = RA * MMCaCO3 / 1000; //gram
3409 // //but only 1/3 is effective, so add 3 times as much
3410 // RA = 3 * RA;
3411 // $('#wa_base').val(Round(RA, 2));
3412 // setWaterAgent('CaCO3', Round(RA, 2));
3413 // if (liters > 0) {
3414 // //Bicarbonate
3415 // RA = (parseFloat($('#wa_base').jqxNumberInput('decimal')) / 3 * MMHCO3 / MMCaCO3 * 1000) / liters;
3416 // bicarbonate = wg_bicarbonate + RA;
3417 // total_alkalinity = bicarbonate * 50 / 61;
3418 // //Ca precipitates out as Ca10(PO4)6(OH)2
3419 // RA = (parseFloat($('#wa_cacl2').jqxNumberInput('decimal')) * MMCa / MMCaCl2 * 1000 +
3420 // parseFloat($('#wa_caso4').jqxNumberInput('decimal')) * MMCa / MMCaSO4 * 1000 +
3421 // parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMCa / MMCaCO3 * 1000) / liters;
3422 // calcium = wg_calcium + RA;
3423 // }
3424 // break;
3425 case 1:
3426 RA = -protonDeficit / 19.3; // Calciumhydroxide
3427 $('#wa_base').val(Round(RA, 2));
3428 setWaterAgent('Ca(OH)2', Round(RA, 2));
3429 if (liters > 0) {
3430 // Bicarbonate
3431 RA = -protonDeficit / liters;
3432 total_alkalinity = wg_total_alkalinity + RA;
3433 bicarbonate = total_alkalinity * 61 / 50;
3434 // Calcium
3435 RA = (parseFloat($('#wa_cacl2').jqxNumberInput('decimal')) * MMCa / MMCaCl2 * 1000 +
3436 parseFloat($('#wa_caso4').jqxNumberInput('decimal')) * MMCa / MMCaSO4 * 1000 +
3437 parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMCa / MMCaOH2 * 1000) / liters;
3438 calcium = wg_calcium + RA;
3439 }
3440 break;
3441 }
3442 } 3339 }
3443 ph = TpH; 3340 ph = TpH;
3444 $('#wb_ph').val(Round(ph, 2)); 3341 $('#wb_ph').val(Round(ph, 2));
3445 $('#est_mash_ph').val(Round(ph, 2)); 3342 $('#est_mash_ph').val(Round(ph, 2));
3446 } else { 3343 } else {
3447 /* Manual calculate pH */ 3344 /* Manual calculate pH */
3448 $('.c_mashph').hide(); 3345 $('.c_mashph').hide();
3449 console.log('calc_acid no'); 3346 console.log('calc_acid no');
3450 if (parseFloat($('#wa_base').jqxNumberInput('decimal')) > 0 && liters > 0) {
3451 /* First add the base salts */
3452 switch (BT) {
3453 // case 0: // Sodiumbicarbonate, Na
3454 // RA = (parseFloat($('#wa_nacl').jqxNumberInput('decimal')) * MMNa / MMNaCl * 1000 +
3455 // parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMNa / MMNaHCO3 * 1000) / liters;
3456 // sodium = wg_sodium + RA;
3457 // // HCO3
3458 // RA = (parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMHCO3 / MMNaHCO3 * 1000) / liters;
3459 // bicarbonate = wg_bicarbonate + RA;
3460 // total_alkalinity = bicarbonate * 50 / 61;
3461 // break;
3462 case 0: // Sodiumcarbonate
3463 RA = (parseFloat($('#wa_nacl').jqxNumberInput('decimal')) * MMNa / MMNaCl * 1000 +
3464 parseFloat($('#wa_base').jqxNumberInput('decimal')) * 2 * MMNa / MMNa2CO3 * 1000) / liters;
3465 sodium = wg_sodium + RA;
3466 // HCO3
3467 RA = (parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMHCO3 / MMNa2CO3 * 1000) / liters;
3468 bicarbonate = wg_bicarbonate + RA;
3469 total_alkalinity = bicarbonate * 50 / 61;
3470 break;
3471 // case 2: // Calciumcarbonate: Bicarbonate
3472 // RA = (parseFloat($('#wa_base').jqxNumberInput('decimal')) / 3 * MMHCO3 * 1000 / MMCaCO3) / liters;
3473 // bicarbonate = wg_bicarbonate + RA;
3474 // total_alkalinity = bicarbonate * 50 / 61;
3475 // // Ca
3476 // RA = (parseFloat($('#wa_cacl2').jqxNumberInput('decimal')) * MMCa * 1000 / MMCaCl2 +
3477 // parseFloat($('#wa_caso4').jqxNumberInput('decimal')) * MMCa * 1000 / MMCaSO4 +
3478 // parseFloat($('#wa_base').jqxNumberInput('decimal')) * MMCa * 1000/ MMCaCO3) / liters;
3479 // calcium = wg_calcium + RA;
3480 // break;
3481 }
3482 }
3483
3484 pHa = Round(ph, 3); // Adjusted water pH 3347 pHa = Round(ph, 3); // Adjusted water pH
3485 // Then calculate the new pH with added acids and malts 3348 // Then calculate the new pH with added acids and malts
3486 console.log('Mash pH: ' + pHa); 3349 console.log('Mash pH: ' + pHa);
3487 Acid = AcidTypeData[AT].AcidSG * (parseFloat(dataRecord.wa_acid_perc) / 100); // ml 3350 Acid = AcidTypeData[AT].AcidSG * (parseFloat(dataRecord.wa_acid_perc) / 100); // ml
3488 Acid *= parseFloat($('#wa_acid').jqxNumberInput('decimal')); 3351 Acid *= parseFloat($('#wa_acid').jqxNumberInput('decimal'));
3889 $('#wa_mgcl2').jqxNumberInput(spinstate); 3752 $('#wa_mgcl2').jqxNumberInput(spinstate);
3890 $('#wa_nahco3').jqxNumberInput(spinstate); 3753 $('#wa_nahco3').jqxNumberInput(spinstate);
3891 $('#wa_caco3').jqxNumberInput(spinstate); 3754 $('#wa_caco3').jqxNumberInput(spinstate);
3892 $('#mash_ph').jqxNumberInput(spinstate); 3755 $('#mash_ph').jqxNumberInput(spinstate);
3893 $('#calc_acid').jqxCheckBox(onval); 3756 $('#calc_acid').jqxCheckBox(onval);
3894 $('#wa_base_name').jqxDropDownList(onval);
3895 $('#wa_base').jqxNumberInput(spinstate);
3896 $('#wa_acid_name').jqxDropDownList(onval); 3757 $('#wa_acid_name').jqxDropDownList(onval);
3897 $('#wa_acid').jqxNumberInput(spinstate); 3758 $('#wa_acid').jqxNumberInput(spinstate);
3898 $('#wa_acid_perc').jqxNumberInput(spinsmall); 3759 $('#wa_acid_perc').jqxNumberInput(spinsmall);
3899 $('#sparge_temp').jqxNumberInput(spinstate); 3760 $('#sparge_temp').jqxNumberInput(spinstate);
3900 $('#sparge_volume').jqxNumberInput(spinstate); 3761 $('#sparge_volume').jqxNumberInput(spinstate);
4255 if (event.args) { 4116 if (event.args) {
4256 setWaterAgent('CaCO3', 0); 4117 setWaterAgent('CaCO3', 0);
4257 setWaterAgent('CaCO3', event.args.value); 4118 setWaterAgent('CaCO3', event.args.value);
4258 calcWater(); 4119 calcWater();
4259 } 4120 }
4260 });
4261 $('#wa_base_name').on('select', function(event) {
4262 if (event.args) {
4263 var index = event.args.index;
4264 console.log('wa_base_name ' + index);
4265 setWaterAgent(last_base, 0);
4266 last_base = BaseTypeData[index].nl;
4267 setWaterAgent(last_base, parseFloat($('#wa_base').jqxNumberInput('decimal')));
4268 dataRecord.wa_base_name = index;
4269 calcWater();
4270 }
4271 });
4272 $('#wa_base').on('change', function(event) {
4273 var name = BaseTypeData[$('#wa_base_name').val()].nl;
4274 setWaterAgent(name, parseFloat(event.args.value));
4275 calcWater();
4276 }); 4121 });
4277 $('#wa_acid_name').on('select', function(event) { 4122 $('#wa_acid_name').on('select', function(event) {
4278 if (event.args) { 4123 if (event.args) {
4279 var index = event.args.index; 4124 var index = event.args.index;
4280 console.log('wa_acid_name ' + index + ' last_acid: ' + last_acid); 4125 console.log('wa_acid_name ' + index + ' last_acid: ' + last_acid);
4881 wb_magnesium: parseFloat($('#wb_magnesium').jqxNumberInput('decimal')), 4726 wb_magnesium: parseFloat($('#wb_magnesium').jqxNumberInput('decimal')),
4882 wb_total_alkalinity: parseFloat($('#wb_total_alkalinity').jqxNumberInput('decimal')), 4727 wb_total_alkalinity: parseFloat($('#wb_total_alkalinity').jqxNumberInput('decimal')),
4883 wb_ph: parseFloat($('#wb_ph').jqxNumberInput('decimal')), 4728 wb_ph: parseFloat($('#wb_ph').jqxNumberInput('decimal')),
4884 wa_acid_name: parseInt($('#wa_acid_name').val()), 4729 wa_acid_name: parseInt($('#wa_acid_name').val()),
4885 wa_acid_perc: parseFloat($('#wa_acid_perc').jqxNumberInput('decimal')), 4730 wa_acid_perc: parseFloat($('#wa_acid_perc').jqxNumberInput('decimal')),
4886 wa_base_name: parseInt($('#wa_base_name').val()), 4731 wa_base_name: 0,
4887 starter_enable: dataRecord.starter_enable, 4732 starter_enable: dataRecord.starter_enable,
4888 starter_type: $('#starter_type').val(), 4733 starter_type: $('#starter_type').val(),
4889 starter_sg: parseFloat($('#starter_sg').jqxNumberInput('decimal')), 4734 starter_sg: parseFloat($('#starter_sg').jqxNumberInput('decimal')),
4890 starter_viability: parseFloat($('#starter_viability').jqxNumberInput('decimal')), 4735 starter_viability: parseFloat($('#starter_viability').jqxNumberInput('decimal')),
4891 yeast_prod_date: $('#yeast_prod_date').val(), 4736 yeast_prod_date: $('#yeast_prod_date').val(),
6165 $('#wa_caco3').jqxTooltip({ content: 'Kalk'}); 6010 $('#wa_caco3').jqxTooltip({ content: 'Kalk'});
6166 $('#wa_cacl2,#wa_caso4,#wa_mgso4,#wa_nacl,#wa_mgcl2,#wa_nahco3,#wa_caco3').jqxNumberInput(Spin1dec); 6011 $('#wa_cacl2,#wa_caso4,#wa_mgso4,#wa_nacl,#wa_mgcl2,#wa_nahco3,#wa_caco3').jqxNumberInput(Spin1dec);
6167 $('#mash_ph').jqxTooltip({ content: 'Maisch pH tussen 5.2 en 5.6. Gebruik 5.2 voor lichte en 5.5 voor donkere bieren.'}); 6012 $('#mash_ph').jqxTooltip({ content: 'Maisch pH tussen 5.2 en 5.6. Gebruik 5.2 voor lichte en 5.5 voor donkere bieren.'});
6168 $('#mash_ph').jqxNumberInput(SpinpH); 6013 $('#mash_ph').jqxNumberInput(SpinpH);
6169 $('#calc_acid').jqxCheckBox({ theme: theme, width: 120, height: 23 }); 6014 $('#calc_acid').jqxCheckBox({ theme: theme, width: 120, height: 23 });
6170 $('#wa_base_name').jqxDropDownList({ 6015 $('#wa_acid').jqxNumberInput(Spin2dec);
6171 theme: theme,
6172 source: BaseTypeAdapter,
6173 valueMember: 'id',
6174 displayMember: 'nl',
6175 width: 170,
6176 height: 23,
6177 autoDropDownHeight: true
6178 });
6179 $('#wa_base,#wa_acid').jqxNumberInput(Spin2dec);
6180 $('#wa_base').jqxNumberInput({ symbol: ' gr', symbolPosition: 'right' });
6181 $('#wa_acid_name').jqxDropDownList({ 6016 $('#wa_acid_name').jqxDropDownList({
6182 theme: theme, 6017 theme: theme,
6183 source: AcidTypeAdapter, 6018 source: AcidTypeAdapter,
6184 valueMember: 'id', 6019 valueMember: 'id',
6185 displayMember: 'nl', 6020 displayMember: 'nl',
6186 width: 170, 6021 width: 130,
6187 height: 23, 6022 height: 23,
6188 autoDropDownHeight: true 6023 autoDropDownHeight: true
6189 }); 6024 });
6190 $('#wa_acid').jqxNumberInput({ symbol: ' ml', symbolPosition: 'right' }); 6025 $('#wa_acid').jqxNumberInput({ symbol: ' ml', symbolPosition: 'right' });
6191 $('#wa_acid_perc,#sparge_acid_perc').jqxNumberInput(Perc0); 6026 $('#wa_acid_perc,#sparge_acid_perc').jqxNumberInput(Perc0);

mercurial