Fri, 01 Mar 2019 14:29:09 +0100
Added recipe export menu.
README.design | file | annotate | diff | comparison | revisions | |
www/Makefile | file | annotate | diff | comparison | revisions | |
www/js/rec_edit.js | file | annotate | diff | comparison | revisions | |
www/js/rec_export.js | file | annotate | diff | comparison | revisions | |
www/prod_duplicate.php | file | annotate | diff | comparison | revisions | |
www/prod_export.php | file | annotate | diff | comparison | revisions | |
www/rec_duplicate.php | file | annotate | diff | comparison | revisions | |
www/rec_export.php | file | annotate | diff | comparison | revisions | |
www/rec_toproduct.php | file | annotate | diff | comparison | revisions |
--- a/README.design Thu Feb 28 22:50:58 2019 +0100 +++ b/README.design Fri Mar 01 14:29:09 2019 +0100 @@ -141,7 +141,7 @@ TODO: -Copieren recepten tussen products en recipes, maar ook dupliceren. Import. +Import van recepten. Import van ingredienten vanuit xml bestanden zoals die van brouwhulp. Export ingredienten naar xml.
--- a/www/Makefile Thu Feb 28 22:50:58 2019 +0100 +++ b/www/Makefile Fri Mar 01 14:29:09 2019 +0100 @@ -4,17 +4,20 @@ include ../Makefile.global SRC = cmd_fermenter.php config.php.dist crontasks.php favicon.ico gen_about.php \ - getbrewlog.php getfermentablesources.php \ - getfermenter.php getfermentlog.php gethopsources.php getmiscsources.php \ - getnode.php getwatersources.php getyeastsources.php index.php \ + getbrewlog.php getfermentablesources.php getfermenter.php getfermentlog.php \ + gethopsources.php getmiscsources.php getnode.php getwatersources.php \ + getyeastsources.php index.php \ inv_equipments.php inv_fermentables.php inv_hops.php inv_instock.php \ - inv_miscs.php inv_suppliers.php inv_waters.php inv_yeasts.php log_brew.php \ - log_fermentation.php mon_brewer.php mon_fermenter.php mon_node.php \ + inv_miscs.php inv_suppliers.php inv_waters.php inv_yeasts.php \ + log_brew.php log_fermentation.php \ + mon_brewer.php mon_fermenter.php mon_node.php \ prod_archive_code.php prod_archive_date.php prod_archive_name.php prod_beerxml.php \ - prod_duplicate.php prod_edit.php prod_export.php prod_impbrew.php prod_inprod.php prod_new.php \ - prod_print.php prod_reduce.php prod_torecipe.php profile_fermentation.php \ - profile_mash.php profile_setup.php profile_styles.php profile_water.php \ - rec_beerxml.php rec_edit.php rec_export.php rec_main.php rec_new.php rec_print.php \ + prod_duplicate.php prod_edit.php prod_export.php prod_impbrew.php prod_inprod.php \ + prod_new.php prod_print.php prod_reduce.php prod_torecipe.php \ + profile_fermentation.php profile_mash.php profile_setup.php profile_styles.php \ + profile_water.php \ + rec_beerxml.php rec_duplicate.php rec_edit.php rec_export.php rec_main.php \ + rec_new.php rec_print.php rec_toproduct.php \ upl_brew.php version.php SUB = version.php.in images/* css/* jqwidgets/* jqwidgets/styles/* \ jqwidgets/styles/images/* jqwidgets/globalization/* js/* \
--- a/www/js/rec_edit.js Thu Feb 28 22:50:58 2019 +0100 +++ b/www/js/rec_edit.js Fri Mar 01 14:29:09 2019 +0100 @@ -3678,8 +3678,8 @@ $("#Export").jqxButton({ template: "info", width: '80px', theme: theme }); $("#Export").click(function () { saveRecord(); - var url="rec_beerxml.php?record=" + my_record; - window.open(url); + var url="rec_export.php?record=" + my_record + "&return=" + my_return + "&name=" + dataRecord.name; + window.location.href = url; }); $("#Delete").jqxButton({ template: "danger", width: '80px', theme: theme });
--- a/www/js/rec_export.js Thu Feb 28 22:50:58 2019 +0100 +++ b/www/js/rec_export.js Fri Mar 01 14:29:09 2019 +0100 @@ -23,5 +23,38 @@ $(document).ready(function () { + var choice = 0; + $("#name").html(my_name); + $("#jqxRadioButton1").jqxRadioButton({ theme: theme, width: 250, height: 23 }); + $("#jqxRadioButton2").jqxRadioButton({ theme: theme, width: 250, height: 23 }); + $("#jqxRadioButton3").jqxRadioButton({ theme: theme, width: 250, height: 23 }); + $('#jqxRadioButton1').on('checked', function (event) { + $('#Start').jqxButton({ disabled: false }); + choice = 1; + }); + $('#jqxRadioButton2').on('checked', function (event) { + $('#Start').jqxButton({ disabled: false }); + choice = 2; + }); + $('#jqxRadioButton3').on('checked', function (event) { + $('#Start').jqxButton({ disabled: false }); + choice = 3; + }); + + $('#Start').jqxButton({ template: "success", width: '100px', theme: theme, disabled: true }); + $('#Start').click(function () { + if (choice == 1) { + var url="rec_beerxml.php?record=" + my_record; + window.open(url); + } else if (choice == 2) { + var url="rec_duplicate.php?record=" + my_record; + window.open(url); + } else if (choice == 3) { + var url="rec_toproduct.php?record=" + my_record; + window.open(url); + } + // Return to the original product + window.location.href = my_return + "?record=" + my_record; + }); });
--- a/www/prod_duplicate.php Thu Feb 28 22:50:58 2019 +0100 +++ b/www/prod_duplicate.php Fri Mar 01 14:29:09 2019 +0100 @@ -1,9 +1,5 @@ <?php require_once('config.php'); -//require_once('includes/formulas.php'); -//require_once($_SERVER['DOCUMENT_ROOT'].'/config.php'); -//require_once($_SERVER['DOCUMENT_ROOT'].'/includes/formulas.php'); - $link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME); if (! $link) { @@ -15,7 +11,6 @@ } date_default_timezone_set('Europe/Amsterdam'); -//setlocale ( LC_ALL, 'nl_NL.UTF-8'); if (isset($_GET["record"])) $record = $_GET["record"]; else
--- a/www/prod_export.php Thu Feb 28 22:50:58 2019 +0100 +++ b/www/prod_export.php Fri Mar 01 14:29:09 2019 +0100 @@ -18,15 +18,15 @@ </tr> <tr> <td align="right" style="vertical-align: top;">Maak beerxml bestand:</td> - <td align="left"><div style='margin-left: 10px;' id='jqxRadioButton1'></td> + <td align="left"><div style='margin-left: 10px;' id='jqxRadioButton1'></div></td> </tr> <tr> <td align="right" style="vertical-align: top;">Dupliceer als nieuw product:</td> - <td align="left"><div style='margin-left: 10px;' id='jqxRadioButton2'></td> + <td align="left"><div style='margin-left: 10px;' id='jqxRadioButton2'></div></td> </tr> <tr> <td align="right" style="vertical-align: top;">Copieer als recept:</td> - <td align="left"><div style='margin-left: 10px;' id='jqxRadioButton3'></td> + <td align="left"><div style='margin-left: 10px;' id='jqxRadioButton3'></div></td> </tr> <tr><td colspan="2"> </td></tr> <tr>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/rec_duplicate.php Fri Mar 01 14:29:09 2019 +0100 @@ -0,0 +1,109 @@ +<?php +require_once('config.php'); + +$link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME); +if (! $link) { + die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); +} +if (! mysqli_set_charset($link, "utf8" )) { + echo "error"; + return 1; +} + +date_default_timezone_set('Europe/Amsterdam'); +if (isset($_GET["record"])) + $record = $_GET["record"]; +else + $record = 78; +$result = mysqli_query($link, "SELECT * FROM recipes WHERE record='".$record."'"); +$row = mysqli_fetch_array($result); + +/* + * Make this duplicate a fresh recipe. + */ +$sql = "INSERT INTO `recipes` SET "; +$sql .= "name='" . mysqli_real_escape_string($link, $row['name']) . ' [duplicate]'; +$sql .= "', uuid='" . str_replace("\n", "", file_get_contents('/proc/sys/kernel/random/uuid')); +$sql .= "', notes='" . mysqli_real_escape_string($link, $row['notes']); +$sql .= "', locked='0"; +$sql .= "', st_name='" . mysqli_real_escape_string($link, $row['st_name']); +$sql .= "', st_letter='" . mysqli_real_escape_string($link, $row['st_letter']); +$sql .= "', st_guide='" . mysqli_real_escape_string($link, $row['st_guide']); +$sql .= "', st_type='" . $row['st_type']; +$sql .= "', st_category='" . mysqli_real_escape_string($link, $row['st_category']); +$sql .= "', st_category_number='" . $row['st_category_number']; +$sql .= "', st_og_min='" . $row['st_og_min']; +$sql .= "', st_og_max='" . $row['st_og_max']; +$sql .= "', st_fg_min='" . $row['st_fg_min']; +$sql .= "', st_fg_max='" . $row['st_fg_max']; +$sql .= "', st_ibu_min='" . $row['st_ibu_min']; +$sql .= "', st_ibu_max='" . $row['st_ibu_max']; +$sql .= "', st_color_min='" . $row['st_color_min']; +$sql .= "', st_color_max='" . $row['st_color_max']; +$sql .= "', st_carb_min='" . $row['st_carb_min']; +$sql .= "', st_carb_max='" . $row['st_carb_max']; +$sql .= "', st_abv_min='" . $row['st_abv_min']; +$sql .= "', st_abv_max='" . $row['st_abv_max']; +$sql .= "', type='" . $row['type']; +$sql .= "', batch_size='" . $row['batch_size']; +$sql .= "', boil_size='" . $row['boil_size']; +$sql .= "', boil_time='" . $row['boil_time']; +$sql .= "', efficiency='" . $row['efficiency']; +$sql .= "', est_og='" . $row['est_og']; +$sql .= "', est_fg='" . $row['est_fg']; +$sql .= "', est_abv='" . $row['est_abv']; +$sql .= "', est_carb='" . $row['est_carb']; +$sql .= "', est_color='" . $row['est_color']; +$sql .= "', color_method='" . $row['color_method']; +$sql .= "', est_ibu='" . $row['est_ibu']; +$sql .= "', ibu_method='" . $row['ibu_method']; +$sql .= "', sparge_temp='" . $row['sparge_temp']; +$sql .= "', sparge_ph='" . $row['sparge_ph']; +$sql .= "', sparge_volume='" . $row['sparge_volume']; +$sql .= "', sparge_source='" . $row['sparge_source']; +$sql .= "', sparge_acid_type='" . $row['sparge_acid_type']; +$sql .= "', sparge_acid_perc='" . $row['sparge_acid_perc']; +$sql .= "', sparge_acid_amount='0"; +$sql .= "', mash_ph='" . $row['mash_ph']; +$sql .= "', mash_name='" . $row['mash_name']; +$sql .= "', calc_acid='" . $row['calc_acid']; +$sql .= "', w1_name='" . mysqli_real_escape_string($link, $row['w1_name']); +$sql .= "', w1_amount='" . $row['w1_amount']; +$sql .= "', w1_calcium='" . $row['w1_calcium']; +$sql .= "', w1_sulfate='" . $row['w1_sulfate']; +$sql .= "', w1_chloride='" . $row['w1_chloride']; +$sql .= "', w1_sodium='" . $row['w1_sodium']; +$sql .= "', w1_magnesium='" . $row['w1_magnesium']; +$sql .= "', w1_total_alkalinity='" . $row['w1_total_alkalinity']; +$sql .= "', w1_ph='" . $row['w1_ph']; +$sql .= "', w1_cost='" . $row['w1_cost']; +$sql .= "', w2_name='" . mysqli_real_escape_string($link, $row['w2_name']); +$sql .= "', w2_amount='" . $row['w2_amount']; +$sql .= "', w2_calcium='" . $row['w2_calcium']; +$sql .= "', w2_sulfate='" . $row['w2_sulfate']; +$sql .= "', w2_chloride='" . $row['w2_chloride']; +$sql .= "', w2_sodium='" . $row['w2_sodium']; +$sql .= "', w2_magnesium='" . $row['w2_magnesium']; +$sql .= "', w2_total_alkalinity='" . $row['w2_total_alkalinity']; +$sql .= "', w2_ph='" . $row['w2_ph']; +$sql .= "', w2_cost='" . $row['w2_cost']; +$sql .= "', wa_acid_name='" . $row['wa_acid_name']; +$sql .= "', wa_acid_perc='" . $row['wa_acid_perc']; +$sql .= "', wa_base_name='" . $row['wa_base_name']; +$sql .= "', json_fermentables='" . $row['json_fermentables']; +$sql .= "', json_hops='" . $row['json_hops']; +$sql .= "', json_miscs='" . $row['json_miscs']; +$sql .= "', json_yeasts='" . $row['json_yeasts']; +$sql .= "', json_mashs='" . $row['json_mashs']; +$sql .= "';"; +syslog(LOG_NOTICE, $sql); + +$result = mysqli_query($link, $sql); +if (! $result) { + syslog(LOG_NOTICE, "rec_duplicate: result: ".mysqli_error($link)); +} else { + $lastid = mysqli_insert_id($link); + syslog(LOG_NOTICE, "rec_duplicate: inserted record ".$lastid); +} +echo "<script>window.close();</script>"; +exit;
--- a/www/rec_export.php Thu Feb 28 22:50:58 2019 +0100 +++ b/www/rec_export.php Fri Mar 01 14:29:09 2019 +0100 @@ -4,6 +4,33 @@ ?> <div id="MainPanel"> + <div id='export_table'> + <table style='width: 100%; padding: 10px;'> + <tr><th colspan=2>Export recept</th></tr> + <tr><td colspan="2"> </td></tr> + <tr> + <td align="right" style="vertical-align: top;">Naam:</td> + <td align="left"><div style='margin-left: 10px;' id='name'></div></td> + </tr> + <tr> + <td align="right" style="vertical-align: top;">Maak beerxml bestand:</td> + <td align="left"><div style='margin-left: 10px;' id='jqxRadioButton1'></div></td> + </tr> + <tr> + <td align="right" style="vertical-align: top;">Dupliceer als nieuw recept:</td> + <td align="left"><div style='margin-left: 10px;' id='jqxRadioButton2'></div></td> + </tr> + <tr> + <td align="right" style="vertical-align: top;">Copieer als brouw product:</td> + <td align="left"><div style='margin-left: 10px;' id='jqxRadioButton3'></div></td> + </tr> + <tr><td colspan="2"> </td></tr> + <tr> + <td align="right" style="vertical-align: top;"></td> + <td align="left"><input type="button" id="Start" value="Start" /></td> + </tr> + </table> + </div> </div> <?php
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/rec_toproduct.php Fri Mar 01 14:29:09 2019 +0100 @@ -0,0 +1,142 @@ +<?php +require_once('config.php'); + + +$link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME); +if (! $link) { + die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); +} +if (! mysqli_set_charset($link, "utf8" )) { + echo "error"; + return 1; +} + +date_default_timezone_set('Europe/Amsterdam'); +if (isset($_GET["record"])) + $record = $_GET["record"]; +else + $record = 78; +$result = mysqli_query($link, "SELECT * FROM recipes WHERE record='".$record."'"); +$row = mysqli_fetch_array($result); + + +/* + * Copy this to a fresh product. + */ +$sql = "INSERT INTO `products` SET "; +$sql .= "name='" . mysqli_real_escape_string($link, $row['name']); +$sql .= "', uuid='" . str_replace("\n", "", file_get_contents('/proc/sys/kernel/random/uuid')); +$sql .= "', code='" . date("YmdHi"); +$sql .= "', birth='" . date("Y-m-d"); +$sql .= "', stage='1"; +$sql .= "', notes='" . mysqli_real_escape_string($link, $row['notes']); +$sql .= "', log_brew='0', log_fermentation='0', inventory_reduced='0', locked='0"; +// Equipment +$sql .= "', eq_name='Kies zelf een installatie!"; +$sql .= "', eq_boil_size='" . $row['boil_size']; +$sql .= "', eq_batch_size='" . $row['batch_size']; +$sql .= "', eq_tun_volume='20', eq_tun_weight='2', eq_tun_specific_heat='0.11', eq_tun_material='0"; +$sql .= "', eq_tun_height='20', eq_top_up_water='0', eq_trub_chiller_loss='0.5', eq_evap_rate='1.8"; +$sql .= "', eq_boil_time='" . $row['boil_time']; +$sql .= "', eq_calc_boil_volume='1', eq_top_up_kettle='0', eq_hop_utilization='100', eq_notes='"; +$sql .= "', eq_lauter_volume='20', eq_lauter_height='20', eq_lauter_deadspace='0.5', eq_kettle_volume='20"; +$sql .= "', eq_kettle_height='20', eq_mash_volume='18', eq_mash_max='6', eq_efficiency='75"; +// brewdate +$sql .= "', brew_date_start=NULL, brew_mash_ph='0.0', brew_mash_sg='1.000"; +$sql .= "', brew_sparge_temperature='0', brew_sparge_volume='0', brew_sparge_ph='0.0"; +$sql .= "', brew_preboil_volume='0', brew_preboil_sg='0', brew_preboil_ph='0.0"; +$sql .= "', brew_aboil_volume='0', brew_aboil_sg='0', brew_aboil_ph='0.0', brew_aboil_efficiency='0"; +$sql .= "', brew_cooling_method='0', brew_cooling_time='0', brew_cooling_to='20"; +$sql .= "', brew_whirlpool9='0', brew_whirlpool7='0', brew_whirlpool6='0', brew_whirlpool2='0"; +$sql .= "', brew_aeration_time='0', brew_aeration_speed='0', brew_aeration_type='0"; +$sql .= "', brew_fermenter_volume='" . floatval($row['batch_size']) - 0.5; +$sql .= "', brew_fermenter_extrawater='0', brew_fermenter_tcloss='0.5', brew_fermenter_sg='0"; +$sql .= "', brew_fermenter_ibu='0', brew_fermenter_color='0', brew_date_end=NULL, og='0', fg='0"; +$sql .= "', primary_start_temp='0', primary_max_temp='0', primary_end_temp='0', primary_end_date=NULL, primary_end_sg='0"; +$sql .= "', secondary_temp='0', secondary_end_date=NULL, tertiary_temp='0"; +$sql .= "', package_date=NULL"; +$sql .= ", bottle_amount='0', bottle_carbonation='0', bottle_priming_sugar='0', bottle_priming_amount='0', bottle_carbonation_temp='23"; +$sql .= "', keg_amount='0', keg_carbonation='0', keg_priming_sugar='0', keg_priming_amount='0', keg_carbonation_temp='23"; +$sql .= "', keg_forced_carb='0', keg_pressure='0"; +$sql .= "', taste_notes='"; +$sql .= "', taste_rate='0"; +$sql .= "', taste_date=NULL"; +$sql .= ", taste_color='"; +$sql .= "', taste_transparency='"; +$sql .= "', taste_head='"; +$sql .= "', taste_aroma='"; +$sql .= "', taste_taste='"; +$sql .= "', taste_mouthfeel='"; +$sql .= "', taste_aftertaste='"; +// Style +$sql .= "', st_name='" . mysqli_real_escape_string($link, $row['st_name']); +$sql .= "', st_letter='" . mysqli_real_escape_string($link, $row['st_letter']); +$sql .= "', st_guide='" . mysqli_real_escape_string($link, $row['st_guide']); +$sql .= "', st_type='" . $row['st_type']; +$sql .= "', st_category='" . mysqli_real_escape_string($link, $row['st_category']); +$sql .= "', st_category_number='" . $row['st_category_number']; +$sql .= "', st_og_min='" . $row['st_og_min']; +$sql .= "', st_og_max='" . $row['st_og_max']; +$sql .= "', st_fg_min='" . $row['st_fg_min']; +$sql .= "', st_fg_max='" . $row['st_fg_max']; +$sql .= "', st_ibu_min='" . $row['st_ibu_min']; +$sql .= "', st_ibu_max='" . $row['st_ibu_max']; +$sql .= "', st_color_min='" . $row['st_color_min']; +$sql .= "', st_color_max='" . $row['st_color_max']; +$sql .= "', st_carb_min='" . $row['st_carb_min']; +$sql .= "', st_carb_max='" . $row['st_carb_max']; +$sql .= "', st_abv_min='" . $row['st_abv_min']; +$sql .= "', st_abv_max='" . $row['st_abv_max']; +$sql .= "', type='" . $row['type']; +$sql .= "', batch_size='" . $row['batch_size']; +$sql .= "', boil_size='" . $row['boil_size']; +$sql .= "', boil_time='" . $row['boil_time']; +$sql .= "', efficiency='" . $row['efficiency']; +$sql .= "', est_og='0.000"; +$sql .= "', est_fg='0.000"; +$sql .= "', est_abv='0.0"; +$sql .= "', est_carb='0"; +$sql .= "', est_color='0"; +$sql .= "', color_method='0"; +$sql .= "', est_ibu='0"; +$sql .= "', ibu_method='0"; +$sql .= "', sparge_temp='85"; +$sql .= "', sparge_ph='5.8"; +$sql .= "', sparge_volume='" . floatval($row['boil_size']) / 2; +$sql .= "', sparge_source='0"; +$sql .= "', sparge_acid_type='0"; +$sql .= "', sparge_acid_perc='80"; +$sql .= "', sparge_acid_amount='0"; +$sql .= "', mash_ph='5.4"; +$sql .= "', mash_name='"; +$sql .= "', calc_acid='1"; +$sql .= "', w1_name='Tap water"; +$sql .= "', w1_amount='18"; +$sql .= "', w1_calcium='0"; +$sql .= "', w1_sulfate='0"; +$sql .= "', w1_chloride='0"; +$sql .= "', w1_sodium='0"; +$sql .= "', w1_magnesium='0"; +$sql .= "', w1_total_alkalinity='0"; +$sql .= "', w1_ph='7.0"; +$sql .= "', w1_cost='0.0"; +$sql .= "', wa_acid_name='0"; +$sql .= "', wa_acid_perc='0"; +$sql .= "', wa_base_name='0"; +$sql .= "', json_fermentables='" . $row['json_fermentables']; +$sql .= "', json_hops='" . $row['json_hops']; +$sql .= "', json_miscs='" . $row['json_miscs']; +$sql .= "', json_yeasts='" . $row['json_yeasts']; +$sql .= "', json_mashs='" . $row['json_mashs']; +$sql .= "';"; +syslog(LOG_NOTICE, $sql); + +$result = mysqli_query($link, $sql); +if (! $result) { + syslog(LOG_NOTICE, "rec_toproduct: result: ".mysqli_error($link)); +} else { + $lastid = mysqli_insert_id($link); + syslog(LOG_NOTICE, "rec_toproduct: inserted record ".$lastid); +} +echo "<script>window.close();</script>"; +exit;