# HG changeset patch # User Michiel Broek # Date 1545741756 -3600 # Node ID 2e4249add363230a7ba20438b49c3f863aef15e3 # Parent 2c9cfe2f086026dd405764eab43de845f54cfecd Import from brouwhulp fix style color ranges. Added calcSVG and calcABV calculation. Added batch size, time, efficiency and og change actions. Added style select and redesigned the first tab to fit this in. When equipment is changed, recalculate the recipe. Added print button. diff -r 2c9cfe2f0860 -r 2e4249add363 www/import/from_brouwhulp.php --- a/www/import/from_brouwhulp.php Mon Dec 24 23:10:52 2018 +0100 +++ b/www/import/from_brouwhulp.php Tue Dec 25 13:42:36 2018 +0100 @@ -366,8 +366,8 @@ $sql .= "', fg_max='" . floatval($style->FG_MAX); $sql .= "', ibu_min='" . floatval($style->IBU_MIN); $sql .= "', ibu_max='" . floatval($style->IBU_MAX); - $sql .= "', color_min='" . floatval($style->COLOR_MIN); - $sql .= "', color_max='" . floatval($style->COLOR_MAX); + $sql .= "', color_min='" . srm_to_ebc(floatval($style->COLOR_MIN)); + $sql .= "', color_max='" . srm_to_ebc(floatval($style->COLOR_MAX)); $sql .= "', carb_min='" . floatval($style->CARB_MIN); $sql .= "', carb_max='" . floatval($style->CARB_MAX); $sql .= "', abv_min='" . floatval($style->ABV_MIN); diff -r 2c9cfe2f0860 -r 2e4249add363 www/js/prod_edit.js --- a/www/js/prod_edit.js Mon Dec 24 23:10:52 2018 +0100 +++ b/www/js/prod_edit.js Tue Dec 25 13:42:36 2018 +0100 @@ -77,10 +77,6 @@ var MMNaCl = 58.443; var MMCaOH2 = 74.06268; - var old_efficiency; - var old_batch_size; - var old_boil_time; - console.log("record:" + my_record + " return:" + my_return + " theme:" + theme); $("#jqxLoader").jqxLoader({ width: 250, @@ -130,6 +126,7 @@ document.getElementById("bcolor").style.background= scolor; document.getElementById("bcolor2").style.background= scolor; pmalts = mashkg / dataRecord.eq_mash_max * 100; + console.log("mash kg: "+mashkg+" max: "+dataRecord.eq_mash_max+" perc: "+pmalts); $("#perc_malts").jqxProgressBar('val', pmalts); $("#perc_sugars").jqxProgressBar('val', psugar); $("#perc_cara").jqxProgressBar('val', pcara); @@ -142,7 +139,7 @@ var vol, vol1, vol2, sug2; var mass1, mass2, efficiency; - for (j = 1; j < 15; j++) { // Maybe needed if there is equipment, not here. + for (j = 1; j < 15; j++) { vol = 0; sug2 = 0; efficiency = parseFloat(dataRecord.efficiency); @@ -195,6 +192,10 @@ //CalcWaterBalance; }; + function calcABV() { + $("#est_abv").val(abvol(parseFloat($("#est_og").jqxNumberInput('decimal')), parseFloat($("#est_fg").jqxNumberInput('decimal')))); + }; + function hopFlavourContribution(bt, vol, use, amount) { var result; @@ -255,6 +256,15 @@ $("#hop_aroma").jqxProgressBar('val', hop_aroma * 10); }; + function calcSVG() { + var rows = $('#yeastGrid').jqxGrid('getrows'); + for (var i = 0; i < rows.length; i++) { + var row = rows[i]; + if (row.y_use == "Primary") + svg = parseFloat(row.y_attenuation); + } + } + function calcSGendMash() { est_mash_sg = 0; var mvol = 0; // Mash volume @@ -305,8 +315,95 @@ calcSGendMash(); calcMashEfficiency(); + $('#batch_size').on('change', function (event) { + console.log("batch_size change:"+event.args.value+" old:"+dataRecord.batch_size); + var new_boil = parseFloat(event.args.value) + dataRecord.boil_size - dataRecord.batch_size; + dataRecord.boil_size = new_boil; + $("#boil_size").val(Math.round(new_boil * 100) / 100); + dataRecord.batch_size = parseFloat(event.args.value); + calcFermentablesFromOG(parseFloat($("#est_og").jqxNumberInput('decimal'))); // Keep the OG + calcFermentables(); + calcSVG(); + calcABV(); + // TODO: adjust the hops, miscs, yeast, water. + calcIBUs(); + }); + $('#boil_time').on('change', function (event) { + console.log("boil_time change:"+parseFloat(event.args.value)+" old:"+dataRecord.boil_time); + var old_evap = parseFloat(dataRecord.boil_size) - parseFloat(dataRecord.batch_size); + var new_evap = old_evap * (parseFloat(event.args.value) / dataRecord.boil_time); + var new_boil = parseFloat(dataRecord.batch_size) + new_evap; + dataRecord.boil_time = parseFloat(event.args.value); + dataRecord.boil_size = new_boil; + $("#boil_size").val(Math.round(new_boil * 100) / 100); + calcFermentables(); + calcSVG(); + calcABV(); + // TODO: adjust the hops, miscs, yeast, water. + calcIBUs(); + }); + $('#efficiency').on('change', function (event) { + console.log("efficiency change:"+event.args.value); + calcFermentables(); + calcSVG(); + calcABV(); + calcIBUs(); + }); + $('#est_og').on('change', function (event) { + console.log("est_og change:"+event.args.value); + calcFermentablesFromOG(event.args.value); // Adjust fermentables amounts + calcFermentables(); // Update the recipe details + calcSVG(); + calcABV(); // and ABV + calcIBUs(); // and the IBU's. + }); + $('#mash_ph').on('change', function (event) { + dataRecord.mash_ph = parseFloat(event.args.value); + $("#tgt_mash_ph").val(parseFloat(event.args.value)); + // calcWater(); + }); }; + $("#styleSelect").jqxDropDownList({ + placeHolder: "Kies bierstijl:", + theme: theme, + source: styleslist, + displayMember: "name", + width: 150, + height: 27, + dropDownVerticalAlignment: 'top', + dropDownWidth: 500, + dropDownHeight: 380, + renderer: function (index, label, value) { + var datarecord = styleslist.records[index]; + return datarecord.style_guide + " " + datarecord.style_letter+ " " + datarecord.name; + } + }); + $("#styleSelect").on('select', function (event) { + if (event.args) { + var index = event.args.index; + var datarecord = styleslist.records[index]; + $("#st_name").val(datarecord.name); + $("#st_category").val(datarecord.category); + $("#st_category_number").val(datarecord.category_number); + $("#st_letter").val(datarecord.style_letter); + $("#st_guide").val(datarecord.style_guide); + $("#st_type").val(datarecord.type); + $("#st_og_min").val(datarecord.og_min); + $("#st_og_max").val(datarecord.og_max); + $("#st_fg_min").val(datarecord.fg_min); + $("#st_fg_max").val(datarecord.fg_max); + $("#st_ibu_min").val(datarecord.ibu_min); + $("#st_ibu_max").val(datarecord.ibu_max); + $("#st_color_min").val(datarecord.color_min); + $("#st_color_max").val(datarecord.color_max); + $("#st_carb_min").val(datarecord.carb_min); + $("#st_carb_max").val(datarecord.carb_max); + $("#st_abv_min").val(datarecord.abv_min); + $("#st_abv_max").val(datarecord.abv_max); + } + }); + // Equipemnt dropdown list var equipmentUrl = "includes/db_inventory_equipments.php"; var equipmentSource = { @@ -334,6 +431,7 @@ { name: 'kettle_volume', type: 'float' }, { name: 'kettle_height', type: 'float' }, { name: 'mash_volume', type: 'float' }, + { name: 'mash_max', type: 'float' }, { name: 'efficiency', type: 'float' } ], url: equipmentUrl, @@ -359,7 +457,11 @@ var datarecord = equipmentlist.records[index]; $("#eq_name").val(datarecord.name); $("#eq_boil_size").val(datarecord.boil_size); + dataRecord.boil_size = datarecord.boil_size; + $("#boil_size").val(datarecord.boil_size); $("#eq_batch_size").val(datarecord.batch_size); + dataRecord.batch_size = datarecord.batch_size; + $("#batch_size").val(datarecord.batch_size); $("#eq_tun_volume").val(datarecord.tun_volume); dataRecord.eq_tun_weight = datarecord.tun_weight; dataRecord.eq_tun_specific_heat = datarecord.tun_specific_heat; @@ -380,7 +482,18 @@ dataRecord.eq_kettle_height = datarecord.kettle_height / 100.0; $("#eq_mash_volume").val(datarecord.mash_volume); $("#eq_mash_max").val(datarecord.mash_max); + dataRecord.eq_mash_max = datarecord.mash_max; + $("#mash_max").val(datarecord.mash_max); $("#eq_efficiency").val(datarecord.efficiency); + dataRecord.efficiency = datarecord.efficiency; + $("#efficiency").val(datarecord.efficiency); + + calcFermentablesFromOG(parseFloat($("#est_og").jqxNumberInput('decimal'))); // Keep the OG + calcFermentables(); + calcSVG(); + calcABV(); + // TODO: adjust the hops, miscs, yeast, water. + calcIBUs(); } }); @@ -422,12 +535,12 @@ $("#est_ibu2").jqxTooltip({ content: 'De bitterheid in IBU. Dit wordt automatisch berekend.' }); $("#est_abv").jqxTooltip({ content: 'Alcohol volume %. Dit wordt automatisch berekend.' }); $("#est_carb").jqxTooltip({ content: 'Koolzuur volume. Dit wordt automatisch berekend.' }); -// $("#st_name").jqxTooltip({ content: 'De bierstijl naam voor dit recept.'}); -// $("#st_letter").jqxTooltip({ content: 'De bierstijl letter voor dit recept.'}); -// $("#st_guide").jqxTooltip({ content: 'De bierstijl gids voor dit recept.'}); -// $("#st_category").jqxTooltip({ content: 'De Amerikaanse bierstijl categorie.'}); -// $("#st_category_number").jqxTooltip({ content: 'De Amerikaanse bierstijl categorie sub nummer.'}); -// $("#st_type").jqxTooltip({ content: 'Het bierstijl type.'}); + $("#st_name").jqxTooltip({ content: 'De bierstijl naam voor dit recept.'}); + $("#st_letter").jqxTooltip({ content: 'De bierstijl letter voor dit recept.'}); + $("#st_guide").jqxTooltip({ content: 'De bierstijl gids voor dit recept.'}); + $("#st_category").jqxTooltip({ content: 'De Amerikaanse bierstijl categorie.'}); + $("#st_category_number").jqxTooltip({ content: 'De Amerikaanse bierstijl categorie sub nummer.'}); + $("#st_type").jqxTooltip({ content: 'Het bierstijl type.'}); $("#st_og_min").jqxTooltip({ content: 'Het minimum begin SG voor deze bierstijl.'}); $("#st_og_max").jqxTooltip({ content: 'Het maximum begin SG voor deze bierstijl.'}); $("#st_fg_min").jqxTooltip({ content: 'Het minimum eind SG voor deze bierstijl.'}); @@ -718,12 +831,9 @@ $("#st_carb_max").val(dataRecord.st_carb_max); $("#type").val(dataRecord.type); $("#batch_size").val(dataRecord.batch_size); - old_batch_size = dataRecord.batch_size; $("#boil_size").val(dataRecord.boil_size); $("#boil_time").val(dataRecord.boil_time); - old_boil_time = dataRecord.boil_time; $("#efficiency").val(dataRecord.efficiency); - old_efficiency = dataRecord.efficiency; $("#est_og").val(dataRecord.est_og); $("#est_og2").val(dataRecord.est_og); $("#est_fg").val(dataRecord.est_fg); @@ -1690,7 +1800,7 @@ }); }, ready: function() { -// calcSVG(); + calcSVG(); $('#jqxTabs').jqxTabs('next'); }, columns: [ @@ -1903,7 +2013,7 @@ $("#code").jqxInput({ theme: theme, width: 100, height: 23 }); $("#birth").jqxDateTimeInput({ theme: theme, width: 150, height: 23, formatString: 'yyyy-MM-dd' }); $("#stage").jqxInput({ theme: theme, width: 100, height: 23 }); - $("#notes").jqxInput({ theme: theme, width: 960, height: 200 }); + $("#notes").jqxInput({ theme: theme, width: 960, height: 100 }); $("#log_brew").jqxCheckBox({ theme: theme, width: 120, height: 23, disabled : true }); $("#log_fermentation").jqxCheckBox({ theme: theme, width: 120, height: 23, disabled : true }); $("#inventory_reduced").jqxCheckBox({ theme: theme, width: 120, height: 23 }); @@ -1936,7 +2046,7 @@ $("#eq_boil_time").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 70, height: 23, decimalDigits: 0 }); $("#eq_top_up_kettle").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 70, height: 23, decimalDigits: 1 }); $("#eq_hop_utilization").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 70, height: 23, decimalDigits: 0 }); - $("#eq_notes").jqxInput({ theme: theme, width: 800, height: 100 }); + $("#eq_notes").jqxInput({ theme: theme, width: 960, height: 200 }); $("#eq_lauter_volume").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 70, height: 23, decimalDigits: 1 }); $("#eq_lauter_deadspace").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 70, height: 23, decimalDigits: 1 }); $("#eq_kettle_volume").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 70, height: 23, decimalDigits: 1 }); @@ -1981,11 +2091,18 @@ // Packaging // Tasting + $("#st_name").jqxInput({ theme: theme, width: 250, height: 23 }); + $("#st_letter").jqxInput({ theme: theme, width: 100, height: 23 }); + $("#st_guide").jqxInput({ theme: theme, width: 250, height: 23 }); + $("#st_category").jqxInput({ theme: theme, width: 250, height: 23 }); + $("#st_category_number").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 50, height: 23, decimalDigits: 0, readOnly: true }); + $("#st_type").jqxInput({ theme: theme, width: 90, height: 23 }); + $("#type").jqxDropDownList({ theme: theme, source: srcType, width: 125, height: 23, dropDownHeight: 95 }); $("#batch_size").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 100, height: 23, min: 4, decimalDigits: 1, spinButtons: true, spinButtonsStep: 0.1, symbol: 'L', symbolPosition: 'right' }); $("#boil_size").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 100, height: 23, decimalDigits: 2, readOnly: true, symbol: 'L', symbolPosition: 'right' }); $("#boil_time").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 100, height: 23, min: 4, max: 360, decimalDigits: 0, spinButtons: true }); $("#efficiency").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 100, height: 23, min: 40, max: 100, decimalDigits: 0, spinButtons: true, symbol: '%', symbolPosition: 'right' }); - $("#est_og").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 70, height: 23, decimalDigits: 3 }); + $("#est_og").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 100, height: 23, min: 1.000, max: 1.200, decimalDigits: 3, spinButtons: true, spinButtonsStep: 0.001 }); $("#est_og2").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 100, height: 23, decimalDigits: 3, readOnly: true }); $("#st_og_min").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 50, height: 23, decimalDigits: 3, readOnly: true }); $("#st_og_max").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 50, height: 23, decimalDigits: 3, readOnly: true }); @@ -2185,6 +2302,13 @@ }); // Buttons below + $("#Print").jqxButton({ template: "info", width: '80px', theme: theme }); + $("#Print").click(function () { + // Open print in a new tab. + var url="prod_print.php?record=" + my_record; + window.open(url); + }); + $("#Delete").jqxButton({ template: "danger", width: '80px', theme: theme }); $("#Delete").click(function () { // Open a popup to confirm this action. @@ -2256,12 +2380,12 @@ eq_mash_volume: parseFloat($("#eq_mash_volume").jqxNumberInput('decimal')), eq_mash_max: parseFloat($("#eq_mash_max").jqxNumberInput('decimal')), eq_efficiency: parseFloat($("#eq_efficiency").jqxNumberInput('decimal')), - // st_name: $('#st_name').val(), - // st_letter: $('#st_letter').val(), - // st_guide: $('#st_guide').val(), - // st_type: $('#st_type').val(), - // st_category: $('#st_category').val(), - // st_category_number: parseFloat($("#st_category_number").jqxNumberInput('decimal')), + st_name: $('#st_name').val(), + st_letter: $('#st_letter').val(), + st_guide: $('#st_guide').val(), + st_type: $('#st_type').val(), + st_category: $('#st_category').val(), + st_category_number: parseFloat($("#st_category_number").jqxNumberInput('decimal')), st_og_min: parseFloat($("#st_og_min").jqxNumberInput('decimal')), st_og_max: parseFloat($("#st_og_max").jqxNumberInput('decimal')), st_fg_min: parseFloat($("#st_fg_min").jqxNumberInput('decimal')), diff -r 2c9cfe2f0860 -r 2e4249add363 www/prod_edit.php --- a/www/prod_edit.php Mon Dec 24 23:10:52 2018 +0100 +++ b/www/prod_edit.php Tue Dec 25 13:42:36 2018 +0100 @@ -65,6 +65,31 @@
+
+ + + + Bierstijl gegevens + +
Stylenlijst
+ + + Stijlgids: + + Bier stijl: + + Bier groep: + + + + Stijl type: + + Categorie: + + Categorie nr: +
+ + Start SG:
Eind SG: @@ -89,10 +114,11 @@ -
+
+ - +