Recipes in progress loading uses indexes. Recipe from database has added inventory information for the ingredients.

Sat, 02 Feb 2019 21:35:54 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Sat, 02 Feb 2019 21:35:54 +0100
changeset 235
0a063ac5d7f5
parent 234
b8b5efa495bb
child 236
4b8e5478d08f

Recipes in progress loading uses indexes. Recipe from database has added inventory information for the ingredients.

www/includes/db_product.php file | annotate | diff | comparison | revisions
www/js/prod_inprod.js file | annotate | diff | comparison | revisions
--- a/www/includes/db_product.php	Sat Feb 02 20:49:41 2019 +0100
+++ b/www/includes/db_product.php	Sat Feb 02 21:35:54 2019 +0100
@@ -25,30 +25,6 @@
 	}
 
 	$stage = $_POST['stage'];
-	if ($stage == 'Plan')
-		$stageno = 0;
-	else if ($stage == 'Wait')
-		$stageno = 1;
-	else if ($stage == 'Brew')
-		$stageno = 2;
-	else if ($stage == 'Primary')
-		$stageno = 3;
-	else if ($stage == 'Secondary')
-		$stageno = 4;
-	else if ($stage == 'Tertiary')
-		$stageno = 5;
-	else if ($stage == 'Package')
-		$stageno = 6;
-	else if ($stage == 'Carbonation')
-		$stageno = 7;
-	else if ($stage == 'Mature')
-		$stageno = 8;
-	else if ($stage == 'Taste')
-		$stageno = 9;
-	else if ($stage == 'Ready')
-		$stageno = 10;
-	else if ($stage == 'Closed')
-		$stageno = 11;
 
 	// Basic settings
 	if (isset($_POST['uuid'])) {
@@ -319,7 +295,7 @@
 	 * SELECT, produce a list of products that are not yet Closed.
 	 */
 	if (isset($_GET['select']) && ($_GET['select'] == "inprod")) {
-		$query = "SELECT record,name,code,birth,stage FROM products WHERE stage != 'Closed' ORDER BY birth,code;";
+		$query = "SELECT record,name,code,birth,stage FROM products WHERE stage != '11' ORDER BY birth,code;";
 		$result = mysqli_query($connect, $query) or die("SQL Error 1: " . mysqli_error($connect));
 		while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
 			$brews[] = array(
@@ -330,7 +306,7 @@
 				'stage' => $row['stage']
 			);
 		}
-		echo json_encode($brews);
+		echo json_encode($brews, JSON_UNESCAPED_UNICODE);
 		return;
 	}
 
@@ -339,7 +315,7 @@
 	 */
 	if (isset($_GET['select']) && ($_GET['select'] == "ferment")) {
 		$query  = "SELECT code,name,uuid,stage FROM products WHERE ";
-		$query .= "stage='Wait' OR stage='Brew' OR stage='Primary' OR stage='Secondary' OR stage='Tertiary' OR stage='Carbonation' ORDER BY code;";
+		$query .= "stage='1' OR stage='2' OR stage='3' OR stage='4' OR stage='5' OR stage='6' ORDER BY code;";
 		$result = mysqli_query($connect, $query) or die("SQL Error 1: " . mysqli_error($connect));
 		while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
 			$brews[] = array(
@@ -349,7 +325,7 @@
 				'stage' => $row['stage']
 			);
 		}
-		echo json_encode($brews);
+		echo json_encode($brews, JSON_UNESCAPED_UNICODE);
 		return;
 	}
 
@@ -374,8 +350,8 @@
 		$brew .= '","name":"' . str_replace($escapers, $replacements, $row['name']);
 		$brew .= '","code":"' . str_replace($escapers, $replacements, $row['code']);
 		$brew .= '","birth":"' . str_replace($escapers, $replacements, $row['birth']);
-		$brew .= '","stage":"' . str_replace($escapers, $replacements, $row['stage']);
-		$brew .= '","notes":"' . str_replace($escapers, $replacements, $row['notes']);
+		$brew .= '","stage":' . $row['stage'];
+		$brew .= ',"notes":"' . str_replace($escapers, $replacements, $row['notes']);
 		$brew .= '","log_brew":' . $row['log_brew'];
 		$brew .= ',"log_fermentation":' . $row['log_fermentation'];
 		$brew .= ',"inventory_reduced":' . $row['inventory_reduced'];
@@ -387,8 +363,8 @@
 		$brew .= ',"eq_tun_volume":' . floatval($row['eq_tun_volume']);
 		$brew .= ',"eq_tun_weight":' . floatval($row['eq_tun_weight']);
 		$brew .= ',"eq_tun_specific_heat":' . floatval($row['eq_tun_specific_heat']);
-		$brew .= ',"eq_tun_material":"' . $row['eq_tun_material'];
-		$brew .= '","eq_tun_height":' . floatval($row['eq_tun_height']);
+		$brew .= ',"eq_tun_material":' . $row['eq_tun_material'];
+		$brew .= ',"eq_tun_height":' . floatval($row['eq_tun_height']);
 		$brew .= ',"eq_top_up_water":' . floatval($row['eq_top_up_water']);
 		$brew .= ',"eq_trub_chiller_loss":' . floatval($row['eq_trub_chiller_loss']);
 		$brew .= ',"eq_evap_rate":' . floatval($row['eq_evap_rate']);
@@ -419,8 +395,8 @@
 		$brew .= ',"brew_aboil_sg":' . floatval($row['brew_aboil_sg']);
 		$brew .= ',"brew_aboil_ph":' . floatval($row['brew_aboil_ph']);
 		$brew .= ',"brew_aboil_efficiency":' . floatval($row['brew_aboil_efficiency']);
-		$brew .= ',"brew_cooling_method":"' . $row['brew_cooling_method'];
-		$brew .= '","brew_cooling_time":' . floatval($row['brew_cooling_time']);
+		$brew .= ',"brew_cooling_method":' . $row['brew_cooling_method'];
+		$brew .= ',"brew_cooling_time":' . floatval($row['brew_cooling_time']);
 		$brew .= ',"brew_cooling_to":' . floatval($row['brew_cooling_to']);
 		$brew .= ',"brew_whirlpool9":' . floatval($row['brew_whirlpool9']);
 		$brew .= ',"brew_whirlpool7":' . floatval($row['brew_whirlpool7']);
@@ -430,8 +406,8 @@
 		$brew .= ',"brew_fermenter_extrawater":' . floatval($row['brew_fermenter_extrawater']);
 		$brew .= ',"brew_aeration_time":' . floatval($row['brew_aeration_time']);
 		$brew .= ',"brew_aeration_speed":' . floatval($row['brew_aeration_speed']);
-		$brew .= ',"brew_aeration_type":"' . $row['brew_aeration_type'];
-		$brew .= '","brew_fermenter_sg":' . floatval($row['brew_fermenter_sg']);
+		$brew .= ',"brew_aeration_type":' . $row['brew_aeration_type'];
+		$brew .= ',"brew_fermenter_sg":' . floatval($row['brew_fermenter_sg']);
 		$brew .= ',"brew_fermenter_ibu":' . floatval($row['brew_fermenter_ibu']);
 		$brew .= ',"brew_date_end":"' . $row['brew_date_end'];
 		$brew .= '","brew_log_available":' . $row['brew_log_available'];
@@ -448,13 +424,13 @@
 		$brew .= ',"package_date":"' . $row['package_date'];
 		$brew .= '","bottle_amount":' . floatval($row['bottle_amount']);
 		$brew .= ',"bottle_carbonation":' . floatval($row['bottle_carbonation']);
-		$brew .= ',"bottle_priming_sugar":"' . str_replace($escapers, $replacements, $row['bottle_priming_sugar']);
-		$brew .= '","bottle_priming_amount":' . floatval($row['bottle_priming_amount']);
+		$brew .= ',"bottle_priming_sugar":' . $row['bottle_priming_sugar'];
+		$brew .= ',"bottle_priming_amount":' . floatval($row['bottle_priming_amount']);
 		$brew .= ',"bottle_carbonation_temp":' . floatval($row['bottle_carbonation_temp']);
 		$brew .= ',"keg_amount":' . floatval($row['keg_amount']);
 		$brew .= ',"keg_carbonation":' . floatval($row['keg_carbonation']);
-		$brew .= ',"keg_priming_sugar":"' . str_replace($escapers, $replacements, $row['keg_priming_sugar']);
-		$brew .= '","keg_priming_amount":' . floatval($row['keg_priming_amount']);
+		$brew .= ',"keg_priming_sugar":' . $row['keg_priming_sugar'];
+		$brew .= ',"keg_priming_amount":' . floatval($row['keg_priming_amount']);
 		$brew .= ',"keg_carbonation_temp":' . floatval($row['keg_carbonation_temp']);
 		$brew .= ',"keg_forced_carb":' . floatval($row['keg_forced_carb']);
 		$brew .= ',"keg_pressure":' . floatval($row['keg_pressure']);
@@ -471,8 +447,8 @@
 		$brew .= '","st_guide":"' . str_replace($escapers, $replacements, $row['st_guide']);
 		$brew .= '","st_letter":"' . str_replace($escapers, $replacements, $row['st_letter']);
 		$brew .= '","st_name":"'  . str_replace($escapers, $replacements, $row['st_name']);
-		$brew .= '","st_type":"' . str_replace($escapers, $replacements, $row['st_type']);
-		$brew .= '","st_category":"' . str_replace($escapers, $replacements, $row['st_category']);
+		$brew .= '","st_type":' . $row['st_type'];
+		$brew .= ',"st_category":"' . str_replace($escapers, $replacements, $row['st_category']);
 		$brew .= '","st_category_number":' . floatval($row['st_category_number']);
 		$brew .= ',"st_og_min":' . floatval($row['st_og_min']);
 		$brew .= ',"st_og_max":' . floatval($row['st_og_max']);
@@ -486,8 +462,8 @@
 		$brew .= ',"st_carb_max":' . floatval($row['st_carb_max']);
 		$brew .= ',"st_abv_min":' . floatval($row['st_abv_min']);
 		$brew .= ',"st_abv_max":' . floatval($row['st_abv_max']);
-		$brew .= ',"type":"' . $row['type'];
-		$brew .= '","batch_size":' . floatval($row['batch_size']);
+		$brew .= ',"type":' . $row['type'];
+		$brew .= ',"batch_size":' . floatval($row['batch_size']);
 		$brew .= ',"boil_size":' . floatval($row['boil_size']);
 		$brew .= ',"boil_time":' . floatval($row['boil_time']);
 		$brew .= ',"efficiency":' . floatval($row['efficiency']);
@@ -496,15 +472,15 @@
 		$brew .= ',"est_abv":' . floatval($row['est_abv']);
 		$brew .= ',"est_carb":' . floatval($row['est_carb']);
 		$brew .= ',"est_color":' . floatval($row['est_color']);
-		$brew .= ',"color_method":"' . $row['color_method'];
-		$brew .= '","est_ibu":' . floatval($row['est_ibu']);
-		$brew .= ',"ibu_method":"' . $row['ibu_method'];
-		$brew .= '","sparge_temp":' . floatval($row['sparge_temp']);
+		$brew .= ',"color_method":' . $row['color_method'];
+		$brew .= ',"est_ibu":' . floatval($row['est_ibu']);
+		$brew .= ',"ibu_method":' . $row['ibu_method'];
+		$brew .= ',"sparge_temp":' . floatval($row['sparge_temp']);
 		$brew .= ',"sparge_ph":' . floatval($row['sparge_ph']);
 		$brew .= ',"sparge_volume":' . floatval($row['sparge_volume']);
-		$brew .= ',"sparge_source":"' . $row['sparge_source'];
-		$brew .= '","sparge_acid_type":"' . $row['sparge_acid_type'];
-		$brew .= '","sparge_acid_perc":' . floatval($row['sparge_acid_perc']);
+		$brew .= ',"sparge_source":' . $row['sparge_source'];
+		$brew .= ',"sparge_acid_type":' . $row['sparge_acid_type'];
+		$brew .= ',"sparge_acid_perc":' . floatval($row['sparge_acid_perc']);
 		$brew .= ',"sparge_acid_amount":' . floatval($row['sparge_acid_amount']);
 		$brew .= ',"mash_ph":' . $row['mash_ph'];
 		$brew .= ',"mash_name":"' . $row['mash_name'];
@@ -529,10 +505,88 @@
 		$brew .= ',"w2_total_alkalinity":' . $row['w2_total_alkalinity'];
 		$brew .= ',"w2_ph":' . $row['w2_ph'];
 		$brew .= ',"w2_cost":' . $row['w2_cost'];
-		$brew .= ',"fermentables":' . $row['json_fermentables'];
-		$brew .= ',"hops":' . $row['json_hops'];
-		$brew .= ',"miscs":' . $row['json_miscs'];
-		$brew .= ',"yeasts":' . $row['json_yeasts'];
+		$brew .= ',"wa_acid_name":' . $row['wa_acid_name'];
+		$brew .= ',"wa_acid_perc":' . $row['wa_acid_perc'];
+		$brew .= ',"wa_base_name":' . $row['wa_base_name'];
+		if (isset($_GET['record'])) {
+			// Append stock information.
+			$fermentables = json_decode($row['json_fermentables'], true);
+			for ($i = 0; $i < count($fermentables); $i++) {
+				$fermentables[$i]['f_inventory'] = 0;   // Not in stock
+				$fermentables[$i]['f_avail'] = 0;       // Ingredient not in db
+				$sql2 = "SELECT inventory FROM inventory_fermentables ";
+				$sql2 .= "WHERE name='".str_replace($rescapers, $rreplacements, $fermentables[$i]['f_name'])."' AND";
+				$sql2 .= " supplier='".str_replace($rescapers, $rreplacements, $fermentables[$i]['f_supplier'])."'";
+				if ($result2 = mysqli_query($connect, $sql2)) {
+					if ($obj = mysqli_fetch_object($result2)) {
+						$fermentables[$i]['f_inventory'] = floatval($obj->inventory);
+						$fermentables[$i]['f_avail'] = 1;
+					}
+					mysqli_free_result($result2);
+				}
+			}
+			$brew .= ',"fermentables":' . json_encode($fermentables, JSON_UNESCAPED_UNICODE);
+
+			$hops = json_decode($row['json_hops'], true);
+			for ($i = 0; $i < count($hops); $i++) {
+				$hops[$i]['h_inventory'] = 0;   // Not in stock
+				$hops[$i]['h_avail'] = 0;       // Ingredient not in db
+				$sql2 = "SELECT inventory FROM inventory_hops ";
+				$sql2 .= "WHERE name='".str_replace($rescapers, $rreplacements, $hops[$i]['h_name'])."' AND";
+				$sql2 .= " origin='".str_replace($rescapers, $rreplacements, $hops[$i]['h_origin'])."' AND";
+				$sql2 .= " form='".$hops[$i]['h_form']."'";
+				if ($result2 = mysqli_query($connect, $sql2)) {
+					if ($obj = mysqli_fetch_object($result2)) {
+						$hops[$i]['h_inventory'] = floatval($obj->inventory);
+						$hops[$i]['h_avail'] = 1;
+					}
+					mysqli_free_result($result2);
+				}
+			}
+			$brew .= ',"hops":' . json_encode($hops, JSON_UNESCAPED_UNICODE);
+
+			$miscs = json_decode($row['json_miscs'], true);
+			for ($i = 0; $i < count($miscs); $i++) {
+				$miscs[$i]['m_inventory'] = 0;   // Not in stock
+				$miscs[$i]['m_avail'] = 0;       // Ingredient not in db
+				$sql2 = "SELECT inventory FROM inventory_miscs ";
+				$sql2 .= "WHERE name='".str_replace($rescapers, $rreplacements, $miscs[$i]['m_name'])."' AND";
+				$sql2 .= " type='".$miscs[$i]['m_type']."'";
+				if ($result2 = mysqli_query($connect, $sql2)) {
+					if ($obj = mysqli_fetch_object($result2)) {
+						$miscs[$i]['m_inventory'] = floatval($obj->inventory);
+						$miscs[$i]['m_avail'] = 1;
+					}
+					mysqli_free_result($result2);
+				}
+			}
+			$brew .= ',"miscs":' . json_encode($miscs, JSON_UNESCAPED_UNICODE);
+
+			$yeasts = json_decode($row['json_yeasts'], true);
+			for ($i = 0; $i < count($yeasts); $i++) {
+				$yeasts[$i]['y_inventory'] = 0;   // Not in stock
+				$yeasts[$i]['y_avail'] = 0;       // Ingredient not in db
+				$sql2 = "SELECT inventory FROM inventory_yeasts ";
+				$sql2 .= "WHERE name='".str_replace($rescapers, $rreplacements, $yeasts[$i]['y_name'])."' AND";
+				$sql2 .= " form='".str_replace($rescapers, $rreplacements, $yeasts[$i]['y_form'])."' AND";
+				$sql2 .= " laboratory='".str_replace($rescapers, $rreplacements, $yeasts[$i]['y_laboratory'])."' AND";
+				$sql2 .= " product_id='".str_replace($rescapers, $rreplacements, $yeasts[$i]['y_product_id'])."'";
+				if ($result2 = mysqli_query($connect, $sql2)) {
+					if ($obj = mysqli_fetch_object($result2)) {
+						$yeasts[$i]['y_inventory'] = floatval($obj->inventory);
+						$yeasts[$i]['y_avail'] = 1;
+					}
+					mysqli_free_result($result2);
+				}
+			}
+			$brew .= ',"yeasts":' . json_encode($yeasts, JSON_UNESCAPED_UNICODE);
+		} else {
+			// Just leave it
+			$brew .= ',"fermentables":' . $row['json_fermentables'];
+			$brew .= ',"hops":' . $row['json_hops'];
+			$brew .= ',"miscs":' . $row['json_miscs'];
+			$brew .= ',"yeasts":' . $row['json_yeasts'];
+		}
 		$brew .= ',"mashs":' . $row['json_mashs'];
 		$brew .= '}';
 //		syslog(LOG_NOTICE, $brew);
--- a/www/js/prod_inprod.js	Sat Feb 02 20:49:41 2019 +0100
+++ b/www/js/prod_inprod.js	Sat Feb 02 21:35:54 2019 +0100
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * Copyright (C) 2018
+ * Copyright (C) 2018-2019
  *
  * Michiel Broek <mbroek at mbse dot eu>
  *
@@ -30,7 +30,7 @@
 			{ name: 'name', type: 'string' },
 			{ name: 'code', type: 'string' },
 			{ name: 'birth', type: 'string' },
-			{ name: 'stage', type: 'string' },
+			{ name: 'stage', type: 'int' },
 		],
 		id: 'record',
 		url: "includes/db_product.php?select=inprod"
@@ -49,21 +49,23 @@
 			var addButton = $("<div style='float: right; margin-right: 15px;'><img style='position: relative; margin-top: 2px;' src='images/add.png'/><span style='margin-left: 4px; position: relative; top: -3px;'>Add</span></div>");
 			container.append(addButton);
 			statusbar.append(container);
-			addButton.jqxButton({ theme: theme, width: 120, height: 20 });
+			addButton.jqxButton({ theme: theme, width: 90, height: 20 });
 			// add new recipe.
 			addButton.click(function (event) {
 				var url= "prod_new.php?return=prod_inprod.php";
 				window.location.href = url;
 			});
 		},
-		filterable: true,
-		filtermode: 'excel',
 		columns: [
 			{ text: 'Datum', datafield: 'birth', width: 120 },
 			{ text: 'Code', datafield: 'code', width: 120 },
 			{ text: 'Naam', datafield: 'name' },
-			{ text: 'Fase', datafield: 'stage', width: 130 },
-			{ text: 'Wijzig', datafield: 'Edit', width: 120, align: 'center', columntype: 'button', cellsrenderer: function () {
+			{ text: 'Fase', datafield: 'stage', width: 130,
+			  cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) {
+				return "<div style='margin: 4px;'>" + StageData[value].nl + "</div>";
+			  }
+		       	},
+			{ text: 'Wijzig', datafield: 'Edit', width: 100, align: 'center', columntype: 'button', cellsrenderer: function () {
 				return "Wijzig";
 				}, buttonclick: function (row) {
 					var datarecord = dataAdapter.records[row];

mercurial