Thu, 19 Mar 2020 20:41:18 +0100
Fixed some html errors. Added volume calculations for the brewday tab using a popup tool.
README.design | file | annotate | diff | comparison | revisions | |
www/js/global.js | file | annotate | diff | comparison | revisions | |
www/js/prod_edit.js | file | annotate | diff | comparison | revisions | |
www/prod_edit.php | file | annotate | diff | comparison | revisions |
--- a/README.design Thu Mar 19 13:42:59 2020 +0100 +++ b/README.design Thu Mar 19 20:41:18 2020 +0100 @@ -52,12 +52,8 @@ Bij splits na brouwen, de brouw log records kopieren onder nieuwe code en naam. includes/db_divide.php -Miscs type: add wood. - Hop types: Extract IKE. -Popups in de editors met rekenhulpjes. - https://github.com/beerjson/beerjson
--- a/www/js/global.js Thu Mar 19 13:42:59 2020 +0100 +++ b/www/js/global.js Thu Mar 19 20:41:18 2020 +0100 @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (C) 2014-2019 + * Copyright (C) 2014-2020 * * Michiel Broek <mbroek at mbse dot eu> * @@ -1190,3 +1190,16 @@ } +function kettle_cm(vol, kettle_vol, kettle_height) { + if ((vol > 0) && (kettle_vol > 0) && (vol <= kettle_vol)) + return Round(100 * ((1 - vol / kettle_vol) * kettle_height), 1); + return 0; +} + + +function kettle_vol(cm, kettle_vol, kettle_height) { + if ((cm >= 0) && (kettle_vol > 0) && (cm <= (kettle_height * 100))) + return Round(((kettle_height - (cm / 100)) / kettle_height) * kettle_vol, 1); + return 0; +} +
--- a/www/js/prod_edit.js Thu Mar 19 13:42:59 2020 +0100 +++ b/www/js/prod_edit.js Thu Mar 19 20:41:18 2020 +0100 @@ -31,6 +31,7 @@ resizable: false, isModal: true, modalOpacity: 0.4, + autoOpen: false, okButton: $('#delOk'), cancelButton: $('#delCancel'), initContent: function() { @@ -40,6 +41,19 @@ } }); $('#eventWindow').jqxWindow('hide'); + + $('#volumeWindow').jqxWindow({ + theme: theme, + position: { x: 380, y: 210 }, + width: 500, + height: 200, + resizable: false, + isModal: true, + modalOpacity: 0.4, + autoOpen: false, + cancelButton: $('#volumeReady') + }); + $('#volumeWindow').jqxWindow('hide'); } @@ -66,6 +80,9 @@ data_loaded = 0; error_count = 0; + k_cm = 0; + k_vol = 0; + k_what = 0; hop_flavour = 0, hop_aroma = 0, @@ -3594,6 +3611,8 @@ $('#brew_aeration_time').jqxNumberInput({ spinButtons: false, readOnly: true, width: 90 }); $('#brew_fermenter_extrawater').jqxNumberInput({ spinButtons: false, readOnly: true, width: 90 }); $('#brew_aeration_speed').jqxNumberInput({ spinButtons: false, readOnly: true, width: 90 }); + $('#but_pre_boil').jqxButton({ disabled: true }); + $('#but_after_boil').jqxButton({ disabled: true }); } if (dataRecord.stage == 5) // Lagering, allow packaging $('#package_date').jqxDateTimeInput({ disabled: false }); @@ -5720,6 +5739,50 @@ calcFermentables(); calcIBUs(); }); + $('#ketel_volume').jqxNumberInput(Show1dec); + $('#ketel_cm').jqxNumberInput(Spin1dec); + $('#ketel_cm').on('change', function(event) { + k_cm = parseFloat(event.args.value); + k_vol = kettle_vol(k_cm, dataRecord.eq_kettle_volume, dataRecord.eq_kettle_height); + $('#ketel_volume').val(k_vol); + }); + $('#volumeReady').jqxButton({ template: 'success', width: '90px', theme: theme }); + $('#volumeReady').click(function() { + /* Is it pre or after boil */ + console.log('volumeReady ' + k_what + ' volume: ' + Round(k_vol, 1)); + if (k_what == 0) { + dataRecord.brew_preboil_volume = Round(k_vol, 1); + $('#brew_preboil_volume').val(Round(k_vol, 1)); + } else if (k_what == 1) { + dataRecord.brew_aboil_volume = Round(k_vol, 1); + $('#brew_aboil_volume').val(Round(k_vol, 1)); + } + }); + $('#but_pre_boil').jqxButton({ template: 'success', width: '23px', height: 23, theme: theme }); + $('#but_pre_boil').bind('click', function() { + /* If we already have measured a value, use that. Else use the estimated value. */ + if (dataRecord.brew_preboil_volume > 0) + k_cm = kettle_cm(dataRecord.brew_preboil_volume, dataRecord.eq_kettle_volume, dataRecord.eq_kettle_height); + else + k_cm = kettle_cm(dataRecord.boil_size * 1.04, dataRecord.eq_kettle_volume, dataRecord.eq_kettle_height); + k_vol = kettle_vol(k_cm, dataRecord.eq_kettle_volume, dataRecord.eq_kettle_height); + k_what = 0; + $('#ketel_cm').val(k_cm); + $('#ketel_volume').val(k_vol); + $('#volumeWindow').jqxWindow('open'); + }); + $('#but_after_boil').jqxButton({ template: 'success', width: 23, height: 23, theme: theme }); + $('#but_after_boil').bind('click', function() { + if (dataRecord.brew_aboil_volume > 0) + k_cm = kettle_cm(dataRecord.brew_aboil_volume, dataRecord.eq_kettle_volume, dataRecord.eq_kettle_height); + else + k_cm = kettle_cm(dataRecord.batch_size * 1.04, dataRecord.eq_kettle_volume, dataRecord.eq_kettle_height); + k_vol = kettle_vol(k_cm, dataRecord.eq_kettle_volume, dataRecord.eq_kettle_height); + k_what = 1; + $('#ketel_cm').val(k_cm); + $('#ketel_volume').val(k_vol); + $('#volumeWindow').jqxWindow('open'); + }); $('#est_pre_vol,#est_a_vol').jqxNumberInput(Show1wat); $('#brew_preboil_efficiency,#brew_aboil_efficiency,#brew_sparge_temperature,#brew_sparge_volume,#brew_sparge_est').jqxNumberInput(Show1dec); $('#brew_cooling_to').jqxNumberInput(Spin1dec);
--- a/www/prod_edit.php Thu Mar 19 13:42:59 2020 +0100 +++ b/www/prod_edit.php Thu Mar 19 20:41:18 2020 +0100 @@ -111,7 +111,7 @@ <td style="vertical-align: top; float: right; padding: 3px;">Bitterheid methode:</td> <td style="padding: 3px;"><div style="float: left;" id="ibu_method"></div></td> <td style="vertical-align: top; float: right; padding: 3px;">Energie-inhoud kcal/l:</td> - <td style="padding: 3px;"><div style="float: left;" id="kcal"></div></div></td> + <td style="padding: 3px;"><div style="float: left;" id="kcal"></div></td> </tr> </table> <div style="float: right; margin-top: 20px; margin-bottom: 5px;"> @@ -544,7 +544,7 @@ </tr> <tr> <td style="vertical-align: top; float: right;">Maisch pH:</td> - <td><div style="float: left;" id="brew_mash_ph"></div><div style="float: left; margin-left: 15px;" id="est_mash_ph"></div></td> + <td><div style="float: left;" id="brew_mash_ph"></div><div style="float: left; margin-left: 10px;" id="est_mash_ph"></div></td> <td style="vertical-align: top; float: right;">Voor koken pH:</td> <td><div id="brew_preboil_ph"></div></td> <td style="vertical-align: top; float: right;">Na koken pH:</td> @@ -552,19 +552,19 @@ </tr> <tr> <td style="vertical-align: top; float: right;">Maisch SG:</td> - <td><div style="float: left;" id="brew_mash_sg"></div><div style="float: left; margin-left: 15px;" id="est_mash_sg"></div></td> + <td><div style="float: left;" id="brew_mash_sg"></div><div style="float: left; margin-left: 10px;" id="est_mash_sg"></div></td> <td style="vertical-align: top; float: right;">Voor koken SG:</td> - <td><div style="float: left;" id="brew_preboil_sg"></div><div style="float: left; margin-left: 15px;" id="est_pre_sg"></div></td> + <td><div style="float: left;" id="brew_preboil_sg"></div><div style="float: left; margin-left: 10px;" id="est_pre_sg"></div></td> <td style="vertical-align: top; float: right;">Na koken SG:</td> - <td><div style="float: left;" id="brew_aboil_sg"></div><div style="float: left; margin-left: 15px;" id="est_og3"></div></td> + <td><div style="float: left;" id="brew_aboil_sg"></div><div style="float: left; margin-left: 10px;" id="est_og3"></div></td> </tr> <tr> <td style="vertical-align: top; float: right;">Maisch rendement %:</td> <td><div id="brew_mash_efficiency"></div></td> <td style="vertical-align: top; float: right;">Voor koken vol@100°C:</td> - <td><div style="float: left;" id="brew_preboil_volume"></div><div style="float: left; margin-left: 15px;" id="est_pre_vol"></div></td> + <td><div style="float: left;" id="brew_preboil_volume"></div><div style="float: left; margin-left: 10px;" id="est_pre_vol"></div><input type="button" id="but_pre_boil" value="?" style="margin-left: 10px" /></td> <td style="vertical-align: top; float: right;">Na koken vol@100°C:</td> - <td><div style="float: left;" id="brew_aboil_volume"></div><div style="float: left; margin-left: 15px;" id="est_a_vol"></div></td> + <td><div style="float: left;" id="brew_aboil_volume"></div><div style="float: left; margin-left: 10px;" id="est_a_vol"></div><input type="button" id="but_after_boil" value="?" style="margin-left: 10px" /></td> </tr> <tr> <td colspan="2"> </td> @@ -632,7 +632,7 @@ <td style="vertical-align: top; float: right;">Extra water in gistvat l:</td> <td><div id="brew_fermenter_extrawater"></div></td> <td style="vertical-align: top; float: right;">Kleur in gistvat EBC:</td> - <td><div style="float: left;" id="brew_fermenter_color"></div><div style="float: left; margin-left: 15px;" id="bcolorf" class='ebccolor'> </div></td> + <td><div style="float: left;" id="brew_fermenter_color"></div><div style="float: left; margin-left: 10px;" id="bcolorf" class='ebccolor'> </div></td> </tr> <tr> <td style="vertical-align: top; float: right;">Beluchten snelheid:</td> @@ -903,7 +903,7 @@ <table style="width: 100%;"> <tr> <td align="right" style="vertical-align: top;">Ingrediënt naam:</td> - <td style="padding: 3px;"><input readonly="1" id="wf_name" /></div></td> + <td style="padding: 3px;"><input readonly="1" id="wf_name" /></td> </tr> <tr> <td align="right" style="vertical-align: top;">Ander ingrediënt:</td> @@ -948,7 +948,7 @@ <table style="width: 100%;"> <tr> <td align="right" style="vertical-align: top;">Hop naam:</td> - <td style="padding: 3px;"><input readonly="1" id="wh_name" /></div></td> + <td style="padding: 3px;"><input readonly="1" id="wh_name" /></td> </tr> <tr> <td align="right" style="vertical-align: top;">Andere hop:</td> @@ -989,7 +989,7 @@ <table style="width: 100%;"> <tr> <td align="right" style="vertical-align: top;">Ingrediënt naam:</td> - <td style="padding: 3px;"><input readonly="1" id="wm_name" /></div></td> + <td style="padding: 3px;"><input readonly="1" id="wm_name" /></td> </tr> <tr> <td align="right" style="vertical-align: top;">Ander ingrediënt:</td> @@ -1026,15 +1026,15 @@ <table style="width: 100%;"> <tr> <td align="right" style="vertical-align: top;">Gist naam:</td> - <td style="padding: 3px;"><input readonly="1" id="wy_name" /></div></td> + <td style="padding: 3px;"><input readonly="1" id="wy_name" /></td> </tr> <tr> <td align="right" style="vertical-align: top;">Product code:</td> - <td style="padding: 3px;"><input readonly="1" id="wy_product_id" /></div></td> + <td style="padding: 3px;"><input readonly="1" id="wy_product_id" /></td> </tr> <tr> <td align="right" style="vertical-align: top;">Leverancier:</td> - <td style="padding: 3px;"><input readonly="1" id="wy_laboratory" /></div></td> + <td style="padding: 3px;"><input readonly="1" id="wy_laboratory" /></td> </tr> <tr> <td align="right" style="vertical-align: top;">Andere gist:</td> @@ -1067,7 +1067,7 @@ <table style="width: 100%;"> <tr> <td align="right" style="vertical-align: top;">Stap naam:</td> - <td style="padding: 3px;"><input id="wstep_name" /></div></td> + <td style="padding: 3px;"><input id="wstep_name" /></td> </tr> <tr> <td align="right" style="vertical-align: top;">Stap type:</td> @@ -1102,6 +1102,29 @@ </div> </div> + <div id="volumeWindow"> + <div>Bereken volume in de ketel</div> + <div style="overflow: hidden;"> + <table style="width: 100%;"> + <col width="50%"> + <col width="50%"> + <tr> + <td align="right" style="vertical-align: top;">Ketel volume:</td> + <td style="padding: 3px;"><input readonly="1" id="ketel_volume" /></td> + </tr> + <tr> + <td align="right" style="vertical-align: top;">cm vanaf de bovenrand:</td> + <td style="padding: 3px;"><div id="ketel_cm" /></div></td> + </tr> + <tr> + <td style="padding-top: 30px;" colspan="2" align="center"> + <input id="volumeReady" type="button" value="Ok" /> + </td> + </tr> + </table> + </div> + </div> + <?php confirm_delete(); page_footer();