Wed, 29 Aug 2018 17:10:31 +0200
Moved three inventory tables and screens to profiles
--- a/www/import/from_brouwhulp.php Wed Aug 29 16:23:57 2018 +0200 +++ b/www/import/from_brouwhulp.php Wed Aug 29 17:10:31 2018 +0200 @@ -181,7 +181,7 @@ global $brouwhulp, $db; echo " Start adding waters to the database\n"; - $sql = "TRUNCATE TABLE inventory_water_profiles;"; + $sql = "TRUNCATE TABLE profile_water;"; if (! $result = mysqli_query($db, $sql)) { printf("Error: %s\n", mysqli_error($db)); } @@ -201,7 +201,7 @@ ($water->DEFAULT_WATER == 'TRUE') ? $sql .= "', default_water='1" : $sql .= "', default_water='0"; ($water->ALWAYS_ON_STOCK == 'TRUE') ? $sql .= "', always_on_stock='1" : $sql .= "', always_on_stock='0"; } else { - $sql = "INSERT INTO inventory_water_profiles SET name='" . mysqli_real_escape_string($db, $water->NAME); + $sql = "INSERT INTO profile_water SET name='" . mysqli_real_escape_string($db, $water->NAME); } if ($water->NOTES) @@ -322,7 +322,7 @@ global $brouwhulp, $db; echo " Start adding styles to the database\n"; - $sql = "TRUNCATE TABLE inventory_styles;"; + $sql = "TRUNCATE TABLE profile_styles;"; if (! $result = mysqli_query($db, $sql)) { printf("Error: %s\n", mysqli_error($db)); } @@ -331,7 +331,7 @@ foreach ($styles->STYLE as $style) { - $sql = "INSERT INTO inventory_styles SET name='" . mysqli_real_escape_string($db, $style->NAME); + $sql = "INSERT INTO profile_styles SET name='" . mysqli_real_escape_string($db, $style->NAME); if ($style->NOTES) $sql .= "', notes='" . mysqli_real_escape_string($db, $style->NOTES); if ($style->CATEGORY) @@ -376,7 +376,7 @@ global $brouwhulp, $db; echo " Start adding mash profiles to the database\n"; - $sql = "TRUNCATE TABLE inventory_mash_profiles;"; + $sql = "TRUNCATE TABLE profile_mash;"; if (! $result = mysqli_query($db, $sql)) { printf("Error: %s\n", mysqli_error($db)); } @@ -384,7 +384,7 @@ $mashes = simplexml_load_file($brouwhulp . '/mashs.xml'); foreach ($mashes->MASH as $mash) { - $sql = "INSERT INTO inventory_mash_profiles SET name='" . mysqli_real_escape_string($db, $mash->NAME); + $sql = "INSERT INTO profile_mash SET name='" . mysqli_real_escape_string($db, $mash->NAME); if ($mash->NOTES) $sql .= "', notes='" . mysqli_real_escape_string($db, $mash->NOTES); @@ -433,8 +433,8 @@ do_hops(); do_yeasts(); do_miscs(); -//do_waters(); -//do_equipments(); +do_waters(); +do_equipments(); do_styles(); do_mash();
--- a/www/includes/db_inventory_mash_profiles.php Wed Aug 29 16:23:57 2018 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -<?php - -require($_SERVER['DOCUMENT_ROOT']."/config.php"); -require($_SERVER['DOCUMENT_ROOT']."/version.php"); - -#Connect to the database -$connect = mysqli_connect(DBASE_HOST, DBASE_USER, DBASE_PASS, DBASE_NAME); -if (! $connect) { - die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); -} - -// get data and store in a json array -$query = "SELECT * FROM inventory_mash_profiles ORDER BY name"; -if (isset($_GET['insert'])) { - // INSERT COMMAND - $sql = "INSERT INTO `inventory_mash_profiles` SET name='" . mysqli_real_escape_string($connect, $_GET['name']); - $sql .= "', notes='" . mysqli_real_escape_string($connect, $_GET['notes']); - $sql .= "', steps='" . json_encode($_GET['steps']); - $sql .= "';"; - $result = mysqli_query($connect, $sql); - if (! $result) { - syslog(LOG_NOTICE, "db_inventory_mash_profiles: ".$sql." result: ".mysqli_error($connect)); - } else { - syslog(LOG_NOTICE, "db_inventory_mash_profiles: inserted ".$_GET['name']); - } - echo $result; - -} else if (isset($_GET['update'])) { - // UPDATE COMMAND - $sql = "UPDATE `inventory_mash_profiles` SET name='" . mysqli_real_escape_string($connect, $_GET['name']); - $sql .= "', notes='" . mysqli_real_escape_string($connect, $_GET['notes']); - $sql .= "', steps='" . json_encode($_GET['steps']); - $sql .= "' WHERE record='" . $_GET['record'] . "';"; - $result = mysqli_query($connect, $sql); - if (! $result) { - syslog(LOG_NOTICE, "db_inventory_mash_profiles: ".$sql." result: ".mysqli_error($connect)); - } else { - syslog(LOG_NOTICE, "db_inventory_mash_profiles: updated record ".$_GET['record']); - } - echo $result; - -} else if (isset($_GET['delete'])) { - // DELETE COMMAND - $sql = "DELETE FROM `inventory_mash_profiles` WHERE record='".$_GET['record']."';"; - $result = mysqli_query($connect, $sql); - if (! $result) { - syslog(LOG_NOTICE, "db_inventory_mash_profiles: ".$sql." result: ".mysqli_error($connect)); - } else { - syslog(LOG_NOTICE, "db_inventory_mash_profiles: deleted record ".$_GET['record']); - } - echo $result; - -} else { - // SELECT COMMAND - $result = mysqli_query($connect, $query) or die("SQL Error 1: " . mysqli_error($connect)); - $mashprofiles = '['; - $comma = FALSE; - while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { - // Manual encode to JSON. - if ($comma) { - $mashprofiles .= ','; - } - $comma = TRUE; - $mashprofiles .= '{"record":' . $row['record']; - $mashprofiles .= ',"name":"' . $row['name']; - $mashprofiles .= '","notes":"' . $row['notes']; - $mashprofiles .= '","steps":' . $row['steps']; - $mashprofiles .= '}'; - } - $mashprofiles .= ']'; - header("Content-type: application/json"); - echo $mashprofiles; -} -?>
--- a/www/includes/db_inventory_styles.php Wed Aug 29 16:23:57 2018 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,123 +0,0 @@ -<?php - -require($_SERVER['DOCUMENT_ROOT']."/config.php"); -require($_SERVER['DOCUMENT_ROOT']."/version.php"); - -#Connect to the database -$connect = mysqli_connect(DBASE_HOST, DBASE_USER, DBASE_PASS, DBASE_NAME); -if (! $connect) { - die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); -} - -// get data and store in a json array -$query = "SELECT * FROM inventory_styles ORDER BY name"; -if (isset($_GET['insert'])) { - // INSERT COMMAND - $sql = "INSERT INTO `inventory_styles` SET name='" . mysqli_real_escape_string($connect, $_GET['name']); - $sql .= "', category='" . mysqli_real_escape_string($connect, $_GET['category']); - $sql .= "', category_number='" . $_GET['category_number']; - $sql .= "', style_letter='" . mysqli_real_escape_string($connect, $_GET['style_letter']); - $sql .= "', style_guide='" . mysqli_real_escape_string($connect, $_GET['style_guide']); - $sql .= "', type='" . $_GET['type']; - $sql .= "', og_min='" . $_GET['og_min']; - $sql .= "', og_max='" . $_GET['og_max']; - $sql .= "', fg_min='" . $_GET['fg_min']; - $sql .= "', fg_max='" . $_GET['fg_max']; - $sql .= "', ibu_min='" . $_GET['ibu_min']; - $sql .= "', ibu_max='" . $_GET['ibu_max']; - $sql .= "', color_min='" . $_GET['color_min']; - $sql .= "', color_max='" . $_GET['color_max']; - $sql .= "', carb_min='" . $_GET['carb_min']; - $sql .= "', carb_max='" . $_GET['carb_max']; - $sql .= "', abv_min='" . $_GET['abv_min']; - $sql .= "', abv_max='" . $_GET['abv_max']; - $sql .= "', notes='" . mysqli_real_escape_string($connect, $_GET['notes']); - $sql .= "', profile='" . mysqli_real_escape_string($connect, $_GET['profile']); - $sql .= "', ingredients='" . mysqli_real_escape_string($connect, $_GET['ingredients']); - $sql .= "', examples='" . mysqli_real_escape_string($connect, $_GET['examples']); - $sql .= "';"; - $result = mysqli_query($connect, $sql); - if (! $result) { - syslog(LOG_NOTICE, "db_inventory_styles: ".$sql." result: ".mysqli_error($connect)); - } else { - syslog(LOG_NOTICE, "db_inventory_styles: inserted ".$_GET['name']); - } - echo $result; - -} else if (isset($_GET['update'])) { - // UPDATE COMMAND - $sql = "UPDATE `inventory_styles` SET name='" . mysqli_real_escape_string($connect, $_GET['name']); - $sql .= "', category='" . mysqli_real_escape_string($connect, $_GET['category']); - $sql .= "', category_number='" . $_GET['category_number']; - $sql .= "', style_letter='" . mysqli_real_escape_string($connect, $_GET['style_letter']); - $sql .= "', style_guide='" . mysqli_real_escape_string($connect, $_GET['style_guide']); - $sql .= "', type='" . $_GET['type']; - $sql .= "', og_min='" . $_GET['og_min']; - $sql .= "', og_max='" . $_GET['og_max']; - $sql .= "', fg_min='" . $_GET['fg_min']; - $sql .= "', fg_max='" . $_GET['fg_max']; - $sql .= "', ibu_min='" . $_GET['ibu_min']; - $sql .= "', ibu_max='" . $_GET['ibu_max']; - $sql .= "', color_min='" . $_GET['color_min']; - $sql .= "', color_max='" . $_GET['color_max']; - $sql .= "', carb_min='" . $_GET['carb_min']; - $sql .= "', carb_max='" . $_GET['carb_max']; - $sql .= "', abv_min='" . $_GET['abv_min']; - $sql .= "', abv_max='" . $_GET['abv_max']; - $sql .= "', notes='" . mysqli_real_escape_string($connect, $_GET['notes']); - $sql .= "', profile='" . mysqli_real_escape_string($connect, $_GET['profile']); - $sql .= "', ingredients='" . mysqli_real_escape_string($connect, $_GET['ingredients']); - $sql .= "', examples='" . mysqli_real_escape_string($connect, $_GET['examples']); - $sql .= "' WHERE record='" . $_GET['record'] . "';"; - $result = mysqli_query($connect, $sql); - if (! $result) { - syslog(LOG_NOTICE, "db_inventory_styles: ".$sql." result: ".mysqli_error($connect)); - } else { - syslog(LOG_NOTICE, "db_inventory_styles: updated record ".$_GET['record']); - } - echo $result; - -} else if (isset($_GET['delete'])) { - // DELETE COMMAND - $sql = "DELETE FROM `inventory_styles` WHERE record='".$_GET['record']."';"; - $result = mysqli_query($connect, $sql); - if (! $result) { - syslog(LOG_NOTICE, "db_inventory_styles: ".$sql." result: ".mysqli_error($connect)); - } else { - syslog(LOG_NOTICE, "db_inventory_styles: deleted record ".$_GET['record']); - } - echo $result; - -} else { - // SELECT COMMAND - $result = mysqli_query($connect, $query) or die("SQL Error 1: " . mysqli_error($connect)); - while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { - $styles[] = array( - 'record' => $row['record'], - 'name' => $row['name'], - 'category' => $row['category'], - 'category_number' => $row['category_number'], - 'style_letter' => $row['style_letter'], - 'style_guide' => $row['style_guide'], - 'type' => $row['type'], - 'og_min' => $row['og_min'], - 'og_max' => $row['og_max'], - 'fg_min' => $row['fg_min'], - 'fg_max' => $row['fg_max'], - 'ibu_min' => $row['ibu_min'], - 'ibu_max' => $row['ibu_max'], - 'color_min' => $row['color_min'], - 'color_max' => $row['color_max'], - 'carb_min' => $row['carb_min'], - 'carb_max' => $row['carb_max'], - 'abv_min' => $row['abv_min'], - 'abv_max' => $row['abv_max'], - 'notes' => $row['notes'], - 'profile' => $row['profile'], - 'ingredients' => $row['ingredients'], - 'examples' => $row['examples'] - ); - } - echo json_encode($styles); -} -?>
--- a/www/includes/db_inventory_water_profiles.php Wed Aug 29 16:23:57 2018 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -<?php - -require($_SERVER['DOCUMENT_ROOT']."/config.php"); -require($_SERVER['DOCUMENT_ROOT']."/version.php"); - -#Connect to the database -$connect = mysqli_connect(DBASE_HOST, DBASE_USER, DBASE_PASS, DBASE_NAME); -if (! $connect) { - die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); -} - -// get data and store in a json array -$query = "SELECT * FROM inventory_water_profiles ORDER BY name"; -if (isset($_GET['insert'])) { - // INSERT COMMAND - $sql = "INSERT INTO `inventory_water_profiles` SET name='" . mysqli_real_escape_string($connect, $_GET['name']); - $sql .= "', calcium='" . $_GET['calcium']; - $sql .= "', bicarbonate='" . $_GET['bicarbonate']; - $sql .= "', sulfate='" . $_GET['sulfate']; - $sql .= "', chloride='" . $_GET['chloride']; - $sql .= "', sodium='" . $_GET['sodium']; - $sql .= "', magnesium='" . $_GET['magnesium']; - $sql .= "', ph='" . $_GET['ph']; - $sql .= "', notes='" . mysqli_real_escape_string($connect, $_GET['notes']); - $sql .= "', total_alkalinity='" . $_GET['total_alkalinity']; - $sql .= "';"; - $result = mysqli_query($connect, $sql); - if (! $result) { - syslog(LOG_NOTICE, "db_inventory_water_profiles: ".$sql." result: ".mysqli_error($connect)); - } else { - syslog(LOG_NOTICE, "db_inventory_water_profiles: inserted ".$_GET['name']); - } - echo $result; - -} else if (isset($_GET['update'])) { - // UPDATE COMMAND - $sql = "UPDATE `inventory_water_profiles` SET name='" . mysqli_real_escape_string($connect, $_GET['name']); - $sql .= "', calcium='" . $_GET['calcium']; - $sql .= "', bicarbonate='" . $_GET['bicarbonate']; - $sql .= "', sulfate='" . $_GET['sulfate']; - $sql .= "', chloride='" . $_GET['chloride']; - $sql .= "', sodium='" . $_GET['sodium']; - $sql .= "', magnesium='" . $_GET['magnesium']; - $sql .= "', ph='" . $_GET['ph']; - $sql .= "', notes='" . mysqli_real_escape_string($connect, $_GET['notes']); - $sql .= "', total_alkalinity='" . $_GET['total_alkalinity']; - $sql .= "' WHERE record='" . $_GET['record'] . "';"; - $result = mysqli_query($connect, $sql); - if (! $result) { - syslog(LOG_NOTICE, "db_inventory_water_profiles: ".$sql." result: ".mysqli_error($connect)); - } else { - syslog(LOG_NOTICE, "db_inventory_water_profiles: updated record ".$_GET['record']); - } - echo $result; - -} else if (isset($_GET['delete'])) { - // DELETE COMMAND - $sql = "DELETE FROM `inventory_water_profiles` WHERE record='".$_GET['record']."';"; - $result = mysqli_query($connect, $sql); - if (! $result) { - syslog(LOG_NOTICE, "db_inventory_water_profiles: ".$sql." result: ".mysqli_error($connect)); - } else { - syslog(LOG_NOTICE, "db_inventory_water_profiles: deleted record ".$_GET['record']); - } - echo $result; - -} else { - // SELECT COMMAND - $result = mysqli_query($connect, $query) or die("SQL Error 1: " . mysqli_error($connect)); - while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { - $waters[] = array( - 'record' => $row['record'], - 'name' => $row['name'], - 'calcium' => $row['calcium'], - 'bicarbonate' => $row['bicarbonate'], - 'sulfate' => $row['sulfate'], - 'chloride' => $row['chloride'], - 'sodium' => $row['sodium'], - 'magnesium' => $row['magnesium'], - 'ph' => $row['ph'], - 'notes' => $row['notes'], - 'total_alkalinity' => $row['total_alkalinity'] - ); - } - echo json_encode($waters); -} -?>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/includes/db_profile_mash.php Wed Aug 29 17:10:31 2018 +0200 @@ -0,0 +1,74 @@ +<?php + +require($_SERVER['DOCUMENT_ROOT']."/config.php"); +require($_SERVER['DOCUMENT_ROOT']."/version.php"); + +#Connect to the database +$connect = mysqli_connect(DBASE_HOST, DBASE_USER, DBASE_PASS, DBASE_NAME); +if (! $connect) { + die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); +} + +// get data and store in a json array +$query = "SELECT * FROM profile_mash ORDER BY name"; +if (isset($_GET['insert'])) { + // INSERT COMMAND + $sql = "INSERT INTO `profile_mash` SET name='" . mysqli_real_escape_string($connect, $_GET['name']); + $sql .= "', notes='" . mysqli_real_escape_string($connect, $_GET['notes']); + $sql .= "', steps='" . json_encode($_GET['steps']); + $sql .= "';"; + $result = mysqli_query($connect, $sql); + if (! $result) { + syslog(LOG_NOTICE, "db_profile_mash: ".$sql." result: ".mysqli_error($connect)); + } else { + syslog(LOG_NOTICE, "db_profile_mash: inserted ".$_GET['name']); + } + echo $result; + +} else if (isset($_GET['update'])) { + // UPDATE COMMAND + $sql = "UPDATE `profile_mash` SET name='" . mysqli_real_escape_string($connect, $_GET['name']); + $sql .= "', notes='" . mysqli_real_escape_string($connect, $_GET['notes']); + $sql .= "', steps='" . json_encode($_GET['steps']); + $sql .= "' WHERE record='" . $_GET['record'] . "';"; + $result = mysqli_query($connect, $sql); + if (! $result) { + syslog(LOG_NOTICE, "db_profile_mash: ".$sql." result: ".mysqli_error($connect)); + } else { + syslog(LOG_NOTICE, "db_profile_mash: updated record ".$_GET['record']); + } + echo $result; + +} else if (isset($_GET['delete'])) { + // DELETE COMMAND + $sql = "DELETE FROM `profile_mash` WHERE record='".$_GET['record']."';"; + $result = mysqli_query($connect, $sql); + if (! $result) { + syslog(LOG_NOTICE, "db_profile_mash: ".$sql." result: ".mysqli_error($connect)); + } else { + syslog(LOG_NOTICE, "db_profile_mash: deleted record ".$_GET['record']); + } + echo $result; + +} else { + // SELECT COMMAND + $result = mysqli_query($connect, $query) or die("SQL Error 1: " . mysqli_error($connect)); + $mashprofiles = '['; + $comma = FALSE; + while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { + // Manual encode to JSON. + if ($comma) { + $mashprofiles .= ','; + } + $comma = TRUE; + $mashprofiles .= '{"record":' . $row['record']; + $mashprofiles .= ',"name":"' . $row['name']; + $mashprofiles .= '","notes":"' . $row['notes']; + $mashprofiles .= '","steps":' . $row['steps']; + $mashprofiles .= '}'; + } + $mashprofiles .= ']'; + header("Content-type: application/json"); + echo $mashprofiles; +} +?>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/includes/db_profile_styles.php Wed Aug 29 17:10:31 2018 +0200 @@ -0,0 +1,123 @@ +<?php + +require($_SERVER['DOCUMENT_ROOT']."/config.php"); +require($_SERVER['DOCUMENT_ROOT']."/version.php"); + +#Connect to the database +$connect = mysqli_connect(DBASE_HOST, DBASE_USER, DBASE_PASS, DBASE_NAME); +if (! $connect) { + die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); +} + +// get data and store in a json array +$query = "SELECT * FROM profile_styles ORDER BY name"; +if (isset($_GET['insert'])) { + // INSERT COMMAND + $sql = "INSERT INTO `profile_styles` SET name='" . mysqli_real_escape_string($connect, $_GET['name']); + $sql .= "', category='" . mysqli_real_escape_string($connect, $_GET['category']); + $sql .= "', category_number='" . $_GET['category_number']; + $sql .= "', style_letter='" . mysqli_real_escape_string($connect, $_GET['style_letter']); + $sql .= "', style_guide='" . mysqli_real_escape_string($connect, $_GET['style_guide']); + $sql .= "', type='" . $_GET['type']; + $sql .= "', og_min='" . $_GET['og_min']; + $sql .= "', og_max='" . $_GET['og_max']; + $sql .= "', fg_min='" . $_GET['fg_min']; + $sql .= "', fg_max='" . $_GET['fg_max']; + $sql .= "', ibu_min='" . $_GET['ibu_min']; + $sql .= "', ibu_max='" . $_GET['ibu_max']; + $sql .= "', color_min='" . $_GET['color_min']; + $sql .= "', color_max='" . $_GET['color_max']; + $sql .= "', carb_min='" . $_GET['carb_min']; + $sql .= "', carb_max='" . $_GET['carb_max']; + $sql .= "', abv_min='" . $_GET['abv_min']; + $sql .= "', abv_max='" . $_GET['abv_max']; + $sql .= "', notes='" . mysqli_real_escape_string($connect, $_GET['notes']); + $sql .= "', profile='" . mysqli_real_escape_string($connect, $_GET['profile']); + $sql .= "', ingredients='" . mysqli_real_escape_string($connect, $_GET['ingredients']); + $sql .= "', examples='" . mysqli_real_escape_string($connect, $_GET['examples']); + $sql .= "';"; + $result = mysqli_query($connect, $sql); + if (! $result) { + syslog(LOG_NOTICE, "db_profile_styles: ".$sql." result: ".mysqli_error($connect)); + } else { + syslog(LOG_NOTICE, "db_profile_styles: inserted ".$_GET['name']); + } + echo $result; + +} else if (isset($_GET['update'])) { + // UPDATE COMMAND + $sql = "UPDATE `profile_styles` SET name='" . mysqli_real_escape_string($connect, $_GET['name']); + $sql .= "', category='" . mysqli_real_escape_string($connect, $_GET['category']); + $sql .= "', category_number='" . $_GET['category_number']; + $sql .= "', style_letter='" . mysqli_real_escape_string($connect, $_GET['style_letter']); + $sql .= "', style_guide='" . mysqli_real_escape_string($connect, $_GET['style_guide']); + $sql .= "', type='" . $_GET['type']; + $sql .= "', og_min='" . $_GET['og_min']; + $sql .= "', og_max='" . $_GET['og_max']; + $sql .= "', fg_min='" . $_GET['fg_min']; + $sql .= "', fg_max='" . $_GET['fg_max']; + $sql .= "', ibu_min='" . $_GET['ibu_min']; + $sql .= "', ibu_max='" . $_GET['ibu_max']; + $sql .= "', color_min='" . $_GET['color_min']; + $sql .= "', color_max='" . $_GET['color_max']; + $sql .= "', carb_min='" . $_GET['carb_min']; + $sql .= "', carb_max='" . $_GET['carb_max']; + $sql .= "', abv_min='" . $_GET['abv_min']; + $sql .= "', abv_max='" . $_GET['abv_max']; + $sql .= "', notes='" . mysqli_real_escape_string($connect, $_GET['notes']); + $sql .= "', profile='" . mysqli_real_escape_string($connect, $_GET['profile']); + $sql .= "', ingredients='" . mysqli_real_escape_string($connect, $_GET['ingredients']); + $sql .= "', examples='" . mysqli_real_escape_string($connect, $_GET['examples']); + $sql .= "' WHERE record='" . $_GET['record'] . "';"; + $result = mysqli_query($connect, $sql); + if (! $result) { + syslog(LOG_NOTICE, "db_profile_styles: ".$sql." result: ".mysqli_error($connect)); + } else { + syslog(LOG_NOTICE, "db_profile_styles: updated record ".$_GET['record']); + } + echo $result; + +} else if (isset($_GET['delete'])) { + // DELETE COMMAND + $sql = "DELETE FROM `profile_styles` WHERE record='".$_GET['record']."';"; + $result = mysqli_query($connect, $sql); + if (! $result) { + syslog(LOG_NOTICE, "db_profile_styles: ".$sql." result: ".mysqli_error($connect)); + } else { + syslog(LOG_NOTICE, "db_profile_styles: deleted record ".$_GET['record']); + } + echo $result; + +} else { + // SELECT COMMAND + $result = mysqli_query($connect, $query) or die("SQL Error 1: " . mysqli_error($connect)); + while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { + $styles[] = array( + 'record' => $row['record'], + 'name' => $row['name'], + 'category' => $row['category'], + 'category_number' => $row['category_number'], + 'style_letter' => $row['style_letter'], + 'style_guide' => $row['style_guide'], + 'type' => $row['type'], + 'og_min' => $row['og_min'], + 'og_max' => $row['og_max'], + 'fg_min' => $row['fg_min'], + 'fg_max' => $row['fg_max'], + 'ibu_min' => $row['ibu_min'], + 'ibu_max' => $row['ibu_max'], + 'color_min' => $row['color_min'], + 'color_max' => $row['color_max'], + 'carb_min' => $row['carb_min'], + 'carb_max' => $row['carb_max'], + 'abv_min' => $row['abv_min'], + 'abv_max' => $row['abv_max'], + 'notes' => $row['notes'], + 'profile' => $row['profile'], + 'ingredients' => $row['ingredients'], + 'examples' => $row['examples'] + ); + } + echo json_encode($styles); +} +?>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/includes/db_profile_water.php Wed Aug 29 17:10:31 2018 +0200 @@ -0,0 +1,87 @@ +<?php + +require($_SERVER['DOCUMENT_ROOT']."/config.php"); +require($_SERVER['DOCUMENT_ROOT']."/version.php"); + +#Connect to the database +$connect = mysqli_connect(DBASE_HOST, DBASE_USER, DBASE_PASS, DBASE_NAME); +if (! $connect) { + die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); +} + +// get data and store in a json array +$query = "SELECT * FROM profile_water ORDER BY name"; +if (isset($_GET['insert'])) { + // INSERT COMMAND + $sql = "INSERT INTO `profile_water` SET name='" . mysqli_real_escape_string($connect, $_GET['name']); + $sql .= "', calcium='" . $_GET['calcium']; + $sql .= "', bicarbonate='" . $_GET['bicarbonate']; + $sql .= "', sulfate='" . $_GET['sulfate']; + $sql .= "', chloride='" . $_GET['chloride']; + $sql .= "', sodium='" . $_GET['sodium']; + $sql .= "', magnesium='" . $_GET['magnesium']; + $sql .= "', ph='" . $_GET['ph']; + $sql .= "', notes='" . mysqli_real_escape_string($connect, $_GET['notes']); + $sql .= "', total_alkalinity='" . $_GET['total_alkalinity']; + $sql .= "';"; + $result = mysqli_query($connect, $sql); + if (! $result) { + syslog(LOG_NOTICE, "db_profile_water: ".$sql." result: ".mysqli_error($connect)); + } else { + syslog(LOG_NOTICE, "db_profile_water: inserted ".$_GET['name']); + } + echo $result; + +} else if (isset($_GET['update'])) { + // UPDATE COMMAND + $sql = "UPDATE `profile_water` SET name='" . mysqli_real_escape_string($connect, $_GET['name']); + $sql .= "', calcium='" . $_GET['calcium']; + $sql .= "', bicarbonate='" . $_GET['bicarbonate']; + $sql .= "', sulfate='" . $_GET['sulfate']; + $sql .= "', chloride='" . $_GET['chloride']; + $sql .= "', sodium='" . $_GET['sodium']; + $sql .= "', magnesium='" . $_GET['magnesium']; + $sql .= "', ph='" . $_GET['ph']; + $sql .= "', notes='" . mysqli_real_escape_string($connect, $_GET['notes']); + $sql .= "', total_alkalinity='" . $_GET['total_alkalinity']; + $sql .= "' WHERE record='" . $_GET['record'] . "';"; + $result = mysqli_query($connect, $sql); + if (! $result) { + syslog(LOG_NOTICE, "db_profile_water: ".$sql." result: ".mysqli_error($connect)); + } else { + syslog(LOG_NOTICE, "db_profile_water: updated record ".$_GET['record']); + } + echo $result; + +} else if (isset($_GET['delete'])) { + // DELETE COMMAND + $sql = "DELETE FROM `profile_water` WHERE record='".$_GET['record']."';"; + $result = mysqli_query($connect, $sql); + if (! $result) { + syslog(LOG_NOTICE, "db_profile_water: ".$sql." result: ".mysqli_error($connect)); + } else { + syslog(LOG_NOTICE, "db_profile_water: deleted record ".$_GET['record']); + } + echo $result; + +} else { + // SELECT COMMAND + $result = mysqli_query($connect, $query) or die("SQL Error 1: " . mysqli_error($connect)); + while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { + $waters[] = array( + 'record' => $row['record'], + 'name' => $row['name'], + 'calcium' => $row['calcium'], + 'bicarbonate' => $row['bicarbonate'], + 'sulfate' => $row['sulfate'], + 'chloride' => $row['chloride'], + 'sodium' => $row['sodium'], + 'magnesium' => $row['magnesium'], + 'ph' => $row['ph'], + 'notes' => $row['notes'], + 'total_alkalinity' => $row['total_alkalinity'] + ); + } + echo json_encode($waters); +} +?>
--- a/www/includes/global.inc.php Wed Aug 29 16:23:57 2018 +0200 +++ b/www/includes/global.inc.php Wed Aug 29 17:10:31 2018 +0200 @@ -115,6 +115,10 @@ </li> </ul> </li> + <li>Productie + </li> + <li>Recepten + </li> <li>Inventaris <ul> <li><a href="inv_suppliers.php">Leveranciers</a></li> @@ -123,13 +127,17 @@ <li><a href="inv_yeasts.php">Gisten</a></li> <li><a href="inv_miscs.php">Overige ingredienten</a></li> <li><a href="inv_water_sources.php">Water bronnen</a></li> - <li><a href="inv_water_profiles.php">Water profielen</a></li> - <li><a href="inv_mash_profiles.php">Maisch schemas</a></li> <li><a href="inv_equipments.php">Brouw apparatuur</a></li> - <li><a href="inv_styles.php">Bierstijlen</a></li> <li><a href="inv_instock.php">Voorraad lijst</a></li> </ul> </li> + <li>Profielen + <ul> + <li><a href="profile_water.php">Water profielen</a></li> + <li><a href="profile_mash.php">Maisch schemas</a></li> + <li><a href="profile_styles.php">Bierstijlen</a></li> + </ul> + </li> <li>Over <ul> <li><a href="#aboutWindow">Informatie</a></li>
--- a/www/inv_mash_profiles.php Wed Aug 29 16:23:57 2018 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -<?php -require_once($_SERVER['DOCUMENT_ROOT'].'/includes/global.inc.php'); -page_header('Maisch schemas', 'inv_mash_profiles'); -?> - - <div id="jqxgrid"></div> - <div style="margin-top: 30px;"> - <div id="cellbegineditevent"></div> - <div style="margin-top: 10px;" id="cellendeditevent"></div> - </div> - - <!-- Popup editor window. --> - <div id="popupWindow"> - <div>Wijzig maisch schema.</div> - <div style="overflow: hidden;"> - <table> - <tr> - <td align="right" style="vertical-align: top;">Schema naam:</td> - <td align="left" colspan="3" style="vertical-align: top;"><input id="name" /></td> - </tr> - <tr> - <td align="right" style="vertical-align: top;">Opmerkingen:</td> - <td align="left" colspan="3"><textarea id="notes"></textarea></td> - </tr> - <tr> - <td align="right" style="vertical-align: top;">Stappen:</td> - <td align="left" colspan="3"><div id="grid">Graat</div></td> - </tr> - <tr> - <td style="padding-top: 10px;" align="right"><input type="button" id="Delete" value="Delete" /></td> - <td align="right"></td> - <td align="right"></td> - <td style="padding-top: 10px;" align="right"> - <input style="margin-right: 5px;" type="button" id="Save" value="Save" /> - <input id="Cancel" type="button" value="Cancel" /> - </td> - </tr> - </table> - </div> - </div> - -<?php -confirm_delete(); -page_footer(); -?>
--- a/www/inv_styles.php Wed Aug 29 16:23:57 2018 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -<?php -require_once($_SERVER['DOCUMENT_ROOT'].'/includes/global.inc.php'); -page_header('Bier stijlen', 'inv_styles'); -?> - - <div id="jqxgrid"></div> - <div style="margin-top: 30px;"> - <div id="cellbegineditevent"></div> - <div style="margin-top: 10px;" id="cellendeditevent"></div> - </div> - - <!-- Popup editor window. --> - <div id="popupWindow"> - <div>Wijzig bier stijl.</div> - <div style="overflow: hidden;"> - <table> - <tr> - <td align="right" style="vertical-align: top;">Bier stijl:</td> - <td align="left" style="vertical-align: top;"><input id="name" /></td> - <td align="right" style="vertical-align: top;">Bier groep:</td> - <td align="left" style="vertical-align: top;"><input id="style_letter" /></td> - </tr> - <tr> - <td align="right" style="vertical-align: top;">Categorie:</td> - <td align="left" style="vertical-align: top;"><input id="category" /></td> - <td align="right" style="vertical-align: top;">Categorie nummer:</td> - <td align="left" style="vertical-align: top;"><input id="category_number" /></td> - </tr> - <tr> - <td align="right" style="vertical-align: top;">Opmerkingen:</td> - <td align="left" colspan="3"><textarea id="notes"></textarea></td> - </tr> - <tr> - <td align="right" style="vertical-align: top;">Type:</td> - <td align="left"><div id="type"></div></td> - <td align="right" style="vertical-align: top;">Stijl gids:</td> - <td align="left" style="vertical-align: top;"><input id="style_guide" /></td> - </tr> - - <tr> - <td align="right" style="vertical-align: top;">Ninimum start SG:</td> - <td align="left" style="vertical-align: top;"><input id="og_min" /></td> - <td align="right" style="vertical-align: top;">Minimum kleur EBC:</td> - <td align="left" style="vertical-align: top;"><input id="color_min" /></td> - </tr> - <tr> - <td align="right" style="vertical-align: top;">Maximum start SG:</td> - <td align="left" style="vertical-align: top;"><input id="og_max" /></td> - <td align="right" style="vertical-align: top;">Maximum kleur EBC:</td> - <td align="left" style="vertical-align: top;"><input id="color_max" /></td> - </tr> - <tr> - <td align="right" style="vertical-align: top;">Minimum eind SG:</td> - <td align="left" style="vertical-align: top;"><input id="fg_min" /></td> - <td align="right" style="vertical-align: top;">Minimum koolzuur vol:</td> - <td align="left" style="vertical-align: top;"><input id="carb_min" /></td> - </tr> - <tr> - <td align="right" style="vertical-align: top;">Maximum eind SG:</td> - <td align="left" style="vertical-align: top;"><input id="fg_max" /></td> - <td align="right" style="vertical-align: top;">Maximum koolzuur vol:</td> - <td align="left" style="vertical-align: top;"><input id="carb_max" /></td> - </tr> - <tr> - <td align="right" style="vertical-align: top;">Minimum bitterheid IBU:</td> - <td align="left" style="vertical-align: top;"><input id="ibu_min" /></td> - <td align="right" style="vertical-align: top;">Minimum alcohol vol %:</td> - <td align="left" style="vertical-align: top;"><input id="abv_min" /></td> - </tr> - <tr> - <td align="right" style="vertical-align: top;">Maximum bitterheid IBU:</td> - <td align="left" style="vertical-align: top;"><input id="ibu_max" /></td> - <td align="right" style="vertical-align: top;">Maximum alcohol vol %:</td> - <td align="left" style="vertical-align: top;"><input id="abv_max" /></td> - </tr> - <tr> - <td align="right" style="vertical-align: top;">Profiel:</td> - <td align="left" colspan="3"><textarea id="profile"></textarea></td> - </tr> - <tr> - <td align="right" style="vertical-align: top;">Ingredienten:</td> - <td align="left" colspan="3"><textarea id="ingredients"></textarea></td> - </tr> - <tr> - <td align="right" style="vertical-align: top;">Voorbeelden:</td> - <td align="left" colspan="3"><textarea id="examples"></textarea></td> - </tr> - <tr> - <td style="padding-top: 10px;" align="right"><input type="button" id="Delete" value="Delete" /></td> - <td align="right"></td> - <td align="right"></td> - <td style="padding-top: 10px;" align="right"> - <input style="margin-right: 5px;" type="button" id="Save" value="Save" /> - <input id="Cancel" type="button" value="Cancel" /> - </td> - </tr> - </table> - </div> - </div> - -<?php -confirm_delete(); -page_footer(); -?>
--- a/www/inv_water_profiles.php Wed Aug 29 16:23:57 2018 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ -<?php -require_once($_SERVER['DOCUMENT_ROOT'].'/includes/global.inc.php'); -page_header('Water profielen', 'inv_water_profiles'); -?> - - <div id="jqxgrid"></div> - <div style="margin-top: 30px;"> - <div id="cellbegineditevent"></div> - <div style="margin-top: 10px;" id="cellendeditevent"></div> - </div> - - <!-- Popup editor window. --> - <div id="popupWindow"> - <div>Wijzig brouwwater profiel.</div> - <div style="overflow: hidden;"> - <table> - <tr> - <td align="right" style="vertical-align: top;">Water naam:</td> - <td align="left" colspan="3" style="vertical-align: top;"><input id="name" /></td> - </tr> - <tr> - <td align="right" style="vertical-align: top;">Calcium (Ca) mg/l:</td> - <td align="left" style="vertical-align: top;"><input id="calcium" /></td> - <td align="right" style="vertical-align: top;">Magnesium (Mg) mg/l:</td> - <td align="left" style="vertical-align: top;"><input id="magnesium" /></td> - </tr> - <tr> - <td align="right" style="vertical-align: top;">Natrium (Na) mg/l:</td> - <td align="left" style="vertical-align: top;"><input id="sodium" /></td> - <td align="right" style="vertical-align: top;">Chloride (Cl) mg/l:</td> - <td align="left" style="vertical-align: top;"><input id="chloride" /></td> - </tr> - <tr> - <td align="right" style="vertical-align: top;">Sulfaat (CaSO4) mg/l:</td> - <td align="left" style="vertical-align: top;"><input id="sulfate" /></td> - <td align="right" style="vertical-align: top;">Zuurgraad (pH):</td> - <td align="left" style="vertical-align: top;"><input id="ph" /></td> - </tr> - <tr> - <td align="right" style="vertical-align: top;">Bicarbonaat (HCO3) mg/l:</td> <!-- Input for total_alkalinity --> - <td align="left" style="vertical-align: top;"><input id="bicarbonate" /></td> - <td align="right" style="vertical-align: top;">Totale alkaliteit (CaCO3) mg/l:</td> - <td align="left" style="vertical-align: top;"><input id="total_alkalinity" /></td> - </tr> - <tr> - <td align="right" style="vertical-align: top;">Opmerkingen:</td> - <td align="left" colspan="3"><textarea id="notes"></textarea></td> - </tr> - <tr> - <td style="padding-top: 10px;" align="right"><input type="button" id="Delete" value="Delete" /></td> - <td align="right"></td> - <td align="right"></td> - <td style="padding-top: 10px;" align="right"> - <input style="margin-right: 5px;" type="button" id="Save" value="Save" /> - <input id="Cancel" type="button" value="Cancel" /> - </td> - </tr> - </table> - </div> - </div> - -<?php -confirm_delete(); -page_footer(); -?>
--- a/www/js/inv_mash_profiles.js Wed Aug 29 16:23:57 2018 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,328 +0,0 @@ -/***************************************************************************** - * Copyright (C) 2014-2018 - * - * Michiel Broek <mbroek at mbse dot eu> - * - * This file is part of BrewCloud - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2, or (at your option) any - * later version. - * - * BrewCloud is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with ThermFerm; see the file COPYING. If not, write to the Free - * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - *****************************************************************************/ - - -function createDelElements() { - $('#eventWindow').jqxWindow({ - theme: theme, - position: { x: 490, y: 210 }, - width: 300, - height: 175, - resizable: false, - isModal: true, - modalOpacity: 0.4, - okButton: $('#delOk'), - cancelButton: $('#delCancel'), - initContent: function () { - $('#delOk').jqxButton({ width: '65px', theme: theme }); - $('#delCancel').jqxButton({ width: '65px', theme: theme }); - $('#delCancel').focus(); - } - }); - $('#eventWindow').jqxWindow('hide'); -} - - -$(document).ready(function () { - var url = "includes/db_inventory_mash_profiles.php"; - // tooltips - $("#name").jqxTooltip({ content: 'De naam voor dit maisch profiel.' }); - $("#notes").jqxTooltip({ content: 'De uitgebreide opmerkingen over dit maich profiel.' }); - $("#grid").jqxTooltip({ content: 'De maisch stappen in dit profiel.'}); - // prepare the data - var source = { - datatype: "json", - cache: false, - datafields: [ - { name: 'record', type: 'number' }, - { name: 'name', type: 'string' }, - { name: 'notes', type: 'string' }, - { name: 'steps', type: 'array' } - ], - id: 'record', - url: url, - deleterow: function (rowid, commit) { - // synchronize with the server - send delete command - var data = "delete=true&" + $.param({ record: rowid }); - $.ajax({ - dataType: 'json', - url: url, - cache: false, - data: data, - success: function (data, status, xhr) { - // delete command is executed. - commit(true); - }, - error: function (jqXHR, textStatus, errorThrown) { - commit(false); - } - }); - }, - addrow: function (rowid, rowdata, position, commit) { - var data = "insert=true&" + $.param(rowdata); - $.ajax({ - dataType: 'json', - url: url, - cache: false, - data: data, - success: function (data, status, xhr) { - commit(true); - }, - error: function(jqXHR, textStatus, errorThrown) { - commit(false); - } - }); - }, - updaterow: function (rowid, rowdata, commit) { - var data = "update=true&" + $.param(rowdata); - $.ajax({ - dataType: 'json', - url: url, - cache: false, - data: data, - success: function (data, status, xhr) { - // update command is executed. - commit(true); - }, - error: function(jqXHR, textStatus, errorThrown) { - commit(false); - } - }); - } - }; - var dataAdapter = new $.jqx.dataAdapter(source); - // Inline steps editor - var editsteps = function (data) { - var generaterow = function () { - var row = {}; - row["step_name"] = "Stap 1"; - row["step_type"] = "Infusion"; - row["step_temp"] = 62.0; - row['step_time'] = 20.0; - row['ramp_time'] = 1.0; - row['end_temp'] = 62.0; - return row; - } - var stepSource = { - localdata: data.steps, - datatype: "local", - datafields: [ - { name: 'step_name', type: 'string' }, - { name: 'step_type', type: 'string' }, - { name: 'step_temp', type: 'float' }, - { name: 'step_time', type: 'float' }, - { name: 'ramp_time', type: 'float' }, - { name: 'end_temp', type: 'float' } - ], - addrow: function (rowid, rowdata, position, commit) { - commit(true); - }, - deleterow: function (rowid, commit) { - commit(true); - } - }; - var stepAdapter = new $.jqx.dataAdapter(stepSource); - $("#grid").jqxGrid({ - width: 640, - height: 330, - source: stepAdapter, - theme: theme, - selectionmode: 'singlerow', - editmode: 'selectedrow', - editable: true, - showtoolbar: true, - rendertoolbar: function (toolbar) { - var me = this; - var container = $("<div style='margin: 5px;'></div>"); - toolbar.append(container); - container.append('<input style="margin-left: 100px;" id="addrowbutton" type="button" value="Nieuwe stap" />'); - container.append('<input style="margin-left: 140px;" id="deleterowbutton" type="button" value="Verwijder stap" />'); - $("#addrowbutton").jqxButton({ theme: theme, width: 150 }); - $("#deleterowbutton").jqxButton({ theme: theme, width: 150 }); - // create new row. - $("#addrowbutton").on('click', function () { - var datarow = generaterow(); - var commit = $("#grid").jqxGrid('addrow', null, datarow); - }); - // delete row. - $("#deleterowbutton").on('click', function () { - var selectedrowindex = $("#grid").jqxGrid('getselectedrowindex'); - var rowscount = $("#grid").jqxGrid('getdatainformation').rowscount; - if (selectedrowindex >= 0 && selectedrowindex < rowscount) { - var id = $("#grid").jqxGrid('getrowid', selectedrowindex); - var commit = $("#grid").jqxGrid('deleterow', id); - } - }); - }, - columns: [ - { text: 'Stap naam', datafield: 'step_name' }, - { text: 'Stap type', datafield: 'step_type', width: 100, columntype: 'dropdownlist', - createeditor: function (row, cellvalue, editor, celltext, cellwidth, cellheight) { - var dataSource = [ "Infusion", "Temperature", "Decoction" ]; - editor.jqxDropDownList({ source: dataSource, dropDownHeight: 95 }); - } - }, - { text: 'Temperatuur', datafield: 'step_temp', width: 80, align: 'right', cellsalign: 'right', cellsformat: 'f1', - validation: function (cell, value) { - if (value < 35 || value > 80) { - return { result: false, message: "De temperatuur moet tussen 35 en 80 zijn." }; - } - return true; - } - }, - { text: 'Eind', datafield: 'end_temp', width: 80, align: 'right', cellsalign: 'right', cellsformat: 'f1', - validation: function (cell, value) { - if (value < 35 || value > 80) { - return { result: false, message: "De temperatuur moet tussen 35 en 80 zijn." }; - } - return true; - } - }, - { text: 'Tijd', datafield: 'step_time', width: 70, align: 'right', cellsalign: 'right', - validation: function (cell, value) { - if (value < 1 || value > 360) { - return { result: false, message: "De tijd moet tussen 1 en 360 zijn." }; - } - return true; - } - }, - { text: 'Stap', datafield: 'ramp_time', width: 70, align: 'right', cellsalign: 'right', - validation: function (cell, value) { - if (value < 1 || value > 60) { - return { result: false, message: "De tijd moet tussen 1 en 60 zijn." }; - } - return true; - } - } - ] - }); - $("#grid").on('cellendedit', function (event) { - $('#grid').jqxGrid('sortby', 'step_temp', 'asc'); - }); - }; - - // initialize the input fields. - $("#name").jqxInput({ theme: theme, width: 250, height: 23 }); - $("#notes").jqxInput({ theme: theme, width: 640, height: 100 }); - var editrow = -1; - // initialize jqxGrid - $("#jqxgrid").jqxGrid({ - width: 1280, - height: 630, - source: dataAdapter, - theme: theme, - showstatusbar: true, - localization: getLocalization(), - renderstatusbar: function (statusbar) { - var container = $("<div style='overflow: hidden; position: relative; margin: 5px;'></div>"); - 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 }); - // add new row. - addButton.click(function (event) { - editrow = -1; - $("#popupWindow").jqxWindow({ position: { x: 230, y: 30 } }); - $("#name").val(''); - $("#notes").val(''); - editsteps(''); - $("#popupWindow").jqxWindow('open'); - }); - }, - filterable: true, - filtermode: 'excel', - columns: [ - { text: 'Maish schema', datafield: 'name', width: 250 }, - { text: 'Opmerkingen', datafield: 'notes' }, - { text: 'Wijzig', datafield: 'Edit', width: 120, align: 'center', columntype: 'button', cellsrenderer: function () { - return "Wijzig"; - }, buttonclick: function (row) { - // open the popup window when the user clicks a button. - editrow = row; - $("#popupWindow").jqxWindow({ position: { x: 230, y: 30 } }); - // get the clicked row's data and initialize the input fields. - var dataRecord = $("#jqxgrid").jqxGrid('getrowdata', editrow); - $("#name").val(dataRecord.name); - $("#notes").val(dataRecord.notes); - editsteps(dataRecord); - // show the popup window. - $("#popupWindow").jqxWindow('open'); - } - } - ] - }); - // initialize the popup window and buttons. - $("#popupWindow").jqxWindow({ - width: 860, - height: 550, - resizable: false, - theme: theme, - isModal: true, - autoOpen: false, - cancelButton: $("#Cancel"), - modalOpacity: 0.40 - }); - $("#popupWindow").on('open', function () { - $("#name").jqxInput('selectAll'); - }); - $("#Delete").jqxButton({ theme: theme }); - $("#Delete").click(function () { - if (editrow >= 0) { - // Open a popup to confirm this action. - $('#eventWindow').jqxWindow('open'); - $("#delOk").click(function () { - var rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); - $("#jqxgrid").jqxGrid('deleterow', rowID); - }); - } - $("#popupWindow").jqxWindow('hide'); - }); - $("#Cancel").jqxButton({ theme: theme }); - $("#Save").jqxButton({ theme: theme }); - // update the edited row when the user clicks the 'Save' button. - $("#Save").click(function () { - var steprows = $('#grid').jqxGrid('getrows'); - if (editrow >= 0) { - var rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); - var row = { - record: rowID, - name: $("#name").val(), - notes: $("#notes").val(), - steps: steprows - }; - $('#jqxgrid').jqxGrid('updaterow', rowID, row); - $("#popupWindow").jqxWindow('hide'); - } else { - // Insert a record - var newrow = { - record: -1, - name: $("#name").val(), - notes: $("#notes").val(), - steps: steprows - }; - $('#jqxgrid').jqxGrid('addrow', null, newrow); - $("#popupWindow").jqxWindow('hide'); - } - }); - createDelElements(); -}); -
--- a/www/js/inv_styles.js Wed Aug 29 16:23:57 2018 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,335 +0,0 @@ -/***************************************************************************** - * Copyright (C) 2014-2018 - * - * Michiel Broek <mbroek at mbse dot eu> - * - * This file is part of BrewCloud - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2, or (at your option) any - * later version. - * - * BrewCloud is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with ThermFerm; see the file COPYING. If not, write to the Free - * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - *****************************************************************************/ - - -function createDelElements() { - $('#eventWindow').jqxWindow({ - theme: theme, - position: { x: 490, y: 210 }, - width: 300, - height: 175, - resizable: false, - isModal: true, - modalOpacity: 0.4, - okButton: $('#delOk'), - cancelButton: $('#delCancel'), - initContent: function () { - $('#delOk').jqxButton({ width: '65px', theme: theme }); - $('#delCancel').jqxButton({ width: '65px', theme: theme }); - $('#delCancel').focus(); - } - }); - $('#eventWindow').jqxWindow('hide'); -} - - -$(document).ready(function () { - var url = "includes/db_inventory_styles.php"; - // prepare the data - var source = { - datatype: "json", - cache: false, - datafields: [ - { name: 'record', type: 'number' }, - { name: 'name', type: 'string' }, - { name: 'category', type: 'string' }, - { name: 'category_number', type: 'number' }, - { name: 'style_letter', type: 'string' }, - { name: 'style_guide', type: 'string' }, - { name: 'type', type: 'string' }, - { name: 'og_min', type: 'float' }, - { name: 'og_max', type: 'float' }, - { name: 'fg_min', type: 'float' }, - { name: 'fg_max', type: 'float' }, - { name: 'ibu_min', type: 'float' }, - { name: 'ibu_max', type: 'float' }, - { name: 'color_min', type: 'float' }, - { name: 'color_max', type: 'float' }, - { name: 'carb_min', type: 'float' }, - { name: 'carb_max', type: 'float' }, - { name: 'abv_min', type: 'float' }, - { name: 'abv_max', type: 'float' }, - { name: 'notes', type: 'string' }, - { name: 'profile', type: 'string' }, - { name: 'ingredients', type: 'string' }, - { name: 'examples', type: 'string' } - ], - id: 'record', - url: url, - deleterow: function (rowid, commit) { - // synchronize with the server - send delete command - var data = "delete=true&" + $.param({ record: rowid }); - $.ajax({ - dataType: 'json', - url: url, - cache: false, - data: data, - success: function (data, status, xhr) { - // delete command is executed. - commit(true); - }, - error: function (jqXHR, textStatus, errorThrown) { - commit(false); - } - }); - }, - addrow: function (rowid, rowdata, position, commit) { - var data = "insert=true&" + $.param(rowdata); - $.ajax({ - dataType: 'json', - url: url, - cache: false, - data: data, - success: function (data, status, xhr) { - commit(true); - }, - error: function(jqXHR, textStatus, errorThrown) { - commit(false); - } - }); - }, - updaterow: function (rowid, rowdata, commit) { - var data = "update=true&" + $.param(rowdata); - $.ajax({ - dataType: 'json', - url: url, - cache: false, - data: data, - success: function (data, status, xhr) { - // update command is executed. - commit(true); - }, - error: function(jqXHR, textStatus, errorThrown) { - commit(false); - } - }); - } - }; - var srcType = [ "Lager", "Ale", "Mead", "Wheat", "Mixed", "Cider" ]; - // initialize the input fields. - $("#name").jqxInput({ theme: theme, width: 250, height: 23 }); - $("#category").jqxInput({ theme: theme, width: 250, height: 23 }); - $("#category_number").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, max: 1000, decimalDigits: 0, spinButtons: true }); - $("#style_letter").jqxInput({ theme: theme, width: 250, height: 23 }); - $("#style_guide").jqxInput({ theme: theme, width: 250, height: 23 }); - $("#type").jqxDropDownList({ theme: theme, source: srcType, width: 90, height: 23, dropDownHeight: 185 }); - $("#og_min").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 1.000, max: 1.200, decimalDigits: 3, spinButtons: true, spinButtonsStep: 0.001 }); - $("#og_max").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 1.000, max: 1.200, decimalDigits: 3, spinButtons: true, spinButtonsStep: 0.001 }); - $("#fg_min").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0.990, max: 1.100, decimalDigits: 3, spinButtons: true, spinButtonsStep: 0.001 }); - $("#fg_max").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 1.000, max: 1.100, decimalDigits: 3, spinButtons: true, spinButtonsStep: 0.001 }); - $("#ibu_min").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, max: 200, decimalDigits: 0, spinButtons: true }); - $("#ibu_max").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, max: 200, decimalDigits: 0, spinButtons: true }); - $("#color_min").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 1, max: 200, decimalDigits: 0, spinButtons: true }); - $("#color_max").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 1, max: 200, decimalDigits: 0, spinButtons: true }); - $("#carb_min").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, max: 5, decimalDigits: 1, spinButtons: true, spinButtonsStep: 0.1 }); - $("#carb_max").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, max: 5, decimalDigits: 1, spinButtons: true, spinButtonsStep: 0.1 }); - $("#abv_min").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, max: 20, decimalDigits: 1, spinButtons: true, spinButtonsStep: 0.1 }); - $("#abv_max").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, max: 20, decimalDigits: 1, spinButtons: true, spinButtonsStep: 0.1 }); - - $("#notes").jqxInput({ theme: theme, width: 640, height: 100 }); - $("#profile").jqxInput({ theme: theme, width: 640, height: 48 }); - $("#ingredients").jqxInput({ theme: theme, width: 640, height: 23 }); - $("#examples").jqxInput({ theme: theme, width: 640, height: 48 }); - var dataAdapter = new $.jqx.dataAdapter(source); - var editrow = -1; - // initialize jqxGrid - $("#jqxgrid").jqxGrid({ - width: 1280, - height: 630, - source: dataAdapter, - theme: theme, - showstatusbar: true, - localization: getLocalization(), - renderstatusbar: function (statusbar) { - var container = $("<div style='overflow: hidden; position: relative; margin: 5px;'></div>"); - 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;'>Nieuw</span></div>"); - container.append(addButton); - statusbar.append(container); - addButton.jqxButton({ theme: theme, width: 120, height: 20 }); - // add new row. - addButton.click(function (event) { - editrow = -1; - $("#popupWindow").jqxWindow({ position: { x: 230, y: 30 } }); - $("#name").val(''); - $("#category").val(''); - $("#category_number").val(''); - $("#style_letter").val(''); - $("#style_guide").val(''); - $("#type").val(''); - $("#og_min").val(''); - $("#og_max").val(''); - $("#fg_min").val(''); - $("#fg_max").val(''); - $("#ibu_min").val(''); - $("#ibu_max").val(''); - $("#color_min").val(''); - $("#color_max").val(''); - $("#carb_min").val(''); - $("#carb_max").val(''); - $("#abv_min").val(''); - $("#abv_max").val(''); - $("#notes").val(''); - $("#profile").val(''); - $("#ingredients").val(''); - $("#examples").val(''); - $("#popupWindow").jqxWindow('open'); - }); - }, - filterable: true, - filtermode: 'excel', - columns: [ - { text: 'Groep', datafield: 'style_letter', width: 30 }, - { text: 'Style Name', datafield: 'name' }, - { text: 'OG', datafield: 'og_min', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f3' }, - { text: 'OG', datafield: 'og_max', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f3' }, - { text: 'FG', datafield: 'fg_min', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f3' }, - { text: 'FG', datafield: 'fg_max', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f3' }, - { text: 'IBU', datafield: 'ibu_min', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f0' }, - { text: 'IBU', datafield: 'ibu_max', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f0' }, - { text: 'EBC', datafield: 'color_min', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f0' }, - { text: 'EBC', datafield: 'color_max', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f0' }, - { text: 'Co2', datafield: 'carb_min', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f1' }, - { text: 'Co2', datafield: 'carb_max', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f1' }, - { text: 'ABV', datafield: 'abv_min', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f1' }, - { text: 'ABV', datafield: 'abv_max', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f1' }, - { text: 'Wijzig', datafield: 'Edit', width: 120, align: 'center', columntype: 'button', cellsrenderer: function () { - return "Wijzig"; - }, buttonclick: function (row) { - // open the popup window when the user clicks a button. - editrow = row; - $("#popupWindow").jqxWindow({ position: { x: 230, y: 30 } }); - // get the clicked row's data and initialize the input fields. - var dataRecord = $("#jqxgrid").jqxGrid('getrowdata', editrow); - $("#name").val(dataRecord.name); - $("#category").val(dataRecord.category); - $("#category_number").val(dataRecord.category_number); - $("#style_letter").val(dataRecord.style_letter); - $("#style_guide").val(dataRecord.style_guide); - $("#type").val(dataRecord.type); - $("#og_min").val(dataRecord.og_min); - $("#og_max").val(dataRecord.og_max); - $("#fg_min").val(dataRecord.fg_min); - $("#fg_max").val(dataRecord.fg_max); - $("#ibu_min").val(dataRecord.ibu_min); - $("#ibu_max").val(dataRecord.ibu_max); - $("#color_min").val(dataRecord.color_min); - $("#color_max").val(dataRecord.color_max); - $("#carb_min").val(dataRecord.carb_min); - $("#carb_max").val(dataRecord.carb_max); - $("#abv_min").val(dataRecord.abv_min); - $("#abv_max").val(dataRecord.abv_max); - $("#notes").val(dataRecord.notes); - $("#profile").val(dataRecord.profile); - $("#ingredients").val(dataRecord.ingredients); - $("#examples").val(dataRecord.examples); - // show the popup window. - $("#popupWindow").jqxWindow('open'); - } - } - ] - }); - // initialize the popup window and buttons. - $("#popupWindow").jqxWindow({ - width: 860, resizable: false, theme: theme, isModal: true, autoOpen: false, cancelButton: $("#Cancel"), modalOpacity: 0.40 - }); - $("#popupWindow").on('open', function () { - $("#name").jqxInput('selectAll'); - }); - $("#Delete").jqxButton({ theme: theme }); - $("#Delete").click(function () { - if (editrow >= 0) { - // Open a popup to confirm this action. - $('#eventWindow').jqxWindow('open'); - $("#delOk").click(function () { - var rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); - $("#jqxgrid").jqxGrid('deleterow', rowID); - }); - } - $("#popupWindow").jqxWindow('hide'); - }); - $("#Cancel").jqxButton({ theme: theme }); - $("#Save").jqxButton({ theme: theme }); - // update the edited row when the user clicks the 'Save' button. - $("#Save").click(function () { - if (editrow >= 0) { - var rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); - var row = { - record: rowID, - name: $("#name").val(), - category: $("#category").val(), - category_number: parseFloat($("#category_number").jqxNumberInput('decimal')), - style_letter: $("#style_letter").val(), - style_guide: $("#style_guide").val(), - type: $("#type").val(), - og_min: parseFloat($("#og_min").jqxNumberInput('decimal')), - og_max: parseFloat($("#og_max").jqxNumberInput('decimal')), - fg_min: parseFloat($("#fg_min").jqxNumberInput('decimal')), - fg_max: parseFloat($("#fg_max").jqxNumberInput('decimal')), - ibu_min: parseFloat($("#ibu_min").jqxNumberInput('decimal')), - ibu_max: parseFloat($("#ibu_max").jqxNumberInput('decimal')), - color_min: parseFloat($("#color_min").jqxNumberInput('decimal')), - color_max: parseFloat($("#color_max").jqxNumberInput('decimal')), - carb_min: parseFloat($("#carb_min").jqxNumberInput('decimal')), - carb_max: parseFloat($("#carb_max").jqxNumberInput('decimal')), - abv_min: parseFloat($("#abv_min").jqxNumberInput('decimal')), - abv_max: parseFloat($("#abv_max").jqxNumberInput('decimal')), - notes: $("#notes").val(), - profile: $("#profile").val(), - ingredients: $("#ingredients").val(), - examples: $("#examples").val() - }; - $('#jqxgrid').jqxGrid('updaterow', rowID, row); - $("#popupWindow").jqxWindow('hide'); - } else { - // Insert a record - var newrow = { - record: -1, - name: $("#name").val(), - category: $("#category").val(), - category_number: parseFloat($("#category_number").jqxNumberInput('decimal')), - style_letter: $("#style_letter").val(), - style_guide: $("#style_guide").val(), - type: $("#type").val(), - og_min: parseFloat($("#og_min").jqxNumberInput('decimal')), - og_max: parseFloat($("#og_max").jqxNumberInput('decimal')), - fg_min: parseFloat($("#fg_min").jqxNumberInput('decimal')), - fg_max: parseFloat($("#fg_max").jqxNumberInput('decimal')), - ibu_min: parseFloat($("#ibu_min").jqxNumberInput('decimal')), - ibu_max: parseFloat($("#ibu_max").jqxNumberInput('decimal')), - color_min: parseFloat($("#color_min").jqxNumberInput('decimal')), - color_max: parseFloat($("#color_max").jqxNumberInput('decimal')), - carb_min: parseFloat($("#carb_min").jqxNumberInput('decimal')), - carb_max: parseFloat($("#carb_max").jqxNumberInput('decimal')), - abv_min: parseFloat($("#abv_min").jqxNumberInput('decimal')), - abv_max: parseFloat($("#abv_max").jqxNumberInput('decimal')), - notes: $("#notes").val(), - profile: $("#profile").val(), - ingredients: $("#ingredients").val(), - examples: $("#examples").val() - }; - $('#jqxgrid').jqxGrid('addrow', null, newrow); - $("#popupWindow").jqxWindow('hide'); - } - }); - createDelElements(); -}); -
--- a/www/js/inv_water_profiles.js Wed Aug 29 16:23:57 2018 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,255 +0,0 @@ -/***************************************************************************** - * Copyright (C) 2014-2018 - * - * Michiel Broek <mbroek at mbse dot eu> - * - * This file is part of BrewCloud - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2, or (at your option) any - * later version. - * - * BrewCloud is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with ThermFerm; see the file COPYING. If not, write to the Free - * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - *****************************************************************************/ - - -function createDelElements() { - $('#eventWindow').jqxWindow({ - theme: theme, - position: { x: 490, y: 210 }, - width: 300, - height: 175, - resizable: false, - isModal: true, - modalOpacity: 0.4, - okButton: $('#delOk'), - cancelButton: $('#delCancel'), - initContent: function () { - $('#delOk').jqxButton({ width: '65px', theme: theme }); - $('#delCancel').jqxButton({ width: '65px', theme: theme }); - $('#delCancel').focus(); - } - }); - $('#eventWindow').jqxWindow('hide'); -} - - -$(document).ready(function () { - var url = "includes/db_inventory_water_profiles.php"; - // prepare the data - var source = { - datatype: "json", - cache: false, - datafields: [ - { name: 'record', type: 'number' }, - { name: 'name', type: 'string' }, - { name: 'calcium', type: 'float' }, - { name: 'bicarbonate', type: 'float' }, - { name: 'sulfate', type: 'float' }, - { name: 'chloride', type: 'float' }, - { name: 'sodium', type: 'float' }, - { name: 'magnesium', type: 'float' }, - { name: 'ph', type: 'float' }, - { name: 'notes', type: 'string' }, - { name: 'total_alkalinity', type: 'float' } - ], - id: 'record', - url: url, - deleterow: function (rowid, commit) { - // synchronize with the server - send delete command - var data = "delete=true&" + $.param({ record: rowid }); - $.ajax({ - dataType: 'json', - url: url, - cache: false, - data: data, - success: function (data, status, xhr) { - // delete command is executed. - commit(true); - }, - error: function (jqXHR, textStatus, errorThrown) { - commit(false); - } - }); - }, - addrow: function (rowid, rowdata, position, commit) { - var data = "insert=true&" + $.param(rowdata); - $.ajax({ - dataType: 'json', - url: url, - cache: false, - data: data, - success: function (data, status, xhr) { - commit(true); - }, - error: function(jqXHR, textStatus, errorThrown) { - commit(false); - } - }); - }, - updaterow: function (rowid, rowdata, commit) { - var data = "update=true&" + $.param(rowdata); - $.ajax({ - dataType: 'json', - url: url, - cache: false, - data: data, - success: function (data, status, xhr) { - // update command is executed. - commit(true); - }, - error: function(jqXHR, textStatus, errorThrown) { - commit(false); - } - }); - } - }; - // initialize the input fields. - $("#name").jqxInput({ theme: theme, width: 250, height: 23 }); - $("#calcium").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, decimalDigits: 1, spinButtons: true }); - $("#bicarbonate").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, decimalDigits: 1, spinButtons: true }); - $("#sulfate").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, decimalDigits: 1, spinButtons: true }); - $("#chloride").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, decimalDigits: 1, spinButtons: true }); - $("#sodium").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, decimalDigits: 1, spinButtons: true }); - $("#magnesium").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, decimalDigits: 1, spinButtons: true }); - $("#ph").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, decimalDigits: 1, spinButtons: true }); - - $("#notes").jqxInput({ theme: theme, width: 640, height: 100 }); - $("#total_alkalinity").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, decimalDigits: 1, spinButtons: true }); - var dataAdapter = new $.jqx.dataAdapter(source); - var editrow = -1; - // initialize jqxGrid - $("#jqxgrid").jqxGrid({ - width: 1280, - height: 630, - source: dataAdapter, - theme: theme, - showstatusbar: true, - localization: getLocalization(), - renderstatusbar: function (statusbar) { - var container = $("<div style='overflow: hidden; position: relative; margin: 5px;'></div>"); - 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;'>Nieuw</span></div>"); - container.append(addButton); - statusbar.append(container); - addButton.jqxButton({ theme: theme, width: 120, height: 20 }); - // add new row. - addButton.click(function (event) { - editrow = -1; - $("#popupWindow").jqxWindow({ position: { x: 230, y: 30 } }); - $("#name").val(''); - $("#calcium").val(''); - $("#bicarbonate").val(''); - $("#sulfate").val(''); - $("#chloride").val(''); - $("#sodium").val(''); - $("#magnesium").val(''); - $("#ph").val(''); - $("#notes").val(''); - $("#total_alkalinity").val(''); - $("#popupWindow").jqxWindow('open'); - }); - }, - filterable: true, - filtermode: 'excel', - columns: [ - { text: 'Water Profiel', datafield: 'name', width: 250 }, - { text: 'Opmerkingen', datafield: 'notes', width: 475 }, - { text: 'Natrium', datafield: 'sodium', width: 80, align: 'right', cellsalign: 'right', cellsformat: 'f1' }, - { text: 'Chloride', datafield: 'chloride', width: 80, align: 'right', cellsalign: 'right', cellsformat: 'f1' }, - { text: 'Sulfaat', datafield: 'sulfate', width: 80, align: 'right', cellsalign: 'right', cellsformat: 'f1' }, - { text: 'Zuurgraad', datafield: 'ph', width: 80, align: 'right', cellsalign: 'right', cellsformat: 'f1' }, - { text: 'Alkaliteit', datafield: 'total_alkalinity', width: 80, align: 'right', cellsalign: 'right', cellsformat: 'f1' }, - { text: 'Wijzig', datafield: 'Edit', columntype: 'button', cellsrenderer: function () { - return "Wijzig"; - }, buttonclick: function (row) { - // open the popup window when the user clicks a button. - editrow = row; - $("#popupWindow").jqxWindow({ position: { x: 230, y: 30 } }); - // get the clicked row's data and initialize the input fields. - var dataRecord = $("#jqxgrid").jqxGrid('getrowdata', editrow); - $("#name").val(dataRecord.name); - $("#calcium").val(dataRecord.calcium); - $("#bicarbonate").val(dataRecord.bicarbonate); - $("#sulfate").val(dataRecord.sulfate); - $("#chloride").val(dataRecord.chloride); - $("#sodium").val(dataRecord.sodium); - $("#magnesium").val(dataRecord.magnesium); - $("#ph").val(dataRecord.ph); - $("#notes").val(dataRecord.notes); - $("#total_alkalinity").val(dataRecord.total_alkalinity); - // show the popup window. - $("#popupWindow").jqxWindow('open'); - } - } - ] - }); - // initialize the popup window and buttons. - $("#popupWindow").jqxWindow({ - width: 860, resizable: false, theme: theme, isModal: true, autoOpen: false, cancelButton: $("#Cancel"), modalOpacity: 0.40 - }); - $("#popupWindow").on('open', function () { - $("#name").jqxInput('selectAll'); - }); - $("#Delete").jqxButton({ theme: theme }); - $("#Delete").click(function () { - if (editrow >= 0) { - // Open a popup to confirm this action. - $('#eventWindow').jqxWindow('open'); - $("#delOk").click(function () { - var rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); - $("#jqxgrid").jqxGrid('deleterow', rowID); - }); - } - $("#popupWindow").jqxWindow('hide'); - }); - $("#Cancel").jqxButton({ theme: theme }); - $("#Save").jqxButton({ theme: theme }); - // update the edited row when the user clicks the 'Save' button. - $("#Save").click(function () { - if (editrow >= 0) { - var rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); - var row = { - record: rowID, - name: $("#name").val(), - calcium: parseFloat($("#calcium").jqxNumberInput('decimal')), - bicarbonate: parseFloat($("#bicarbonate").jqxNumberInput('decimal')), - sulfate: parseFloat($("#sulfate").jqxNumberInput('decimal')), - chloride: parseFloat($("#chloride").jqxNumberInput('decimal')), - sodium: parseFloat($("#sodium").jqxNumberInput('decimal')), - magnesium: parseFloat($("#magnesium").jqxNumberInput('decimal')), - ph: parseFloat($("#ph").jqxNumberInput('decimal')), - notes: $("#notes").val(), - total_alkalinity: parseFloat($("#total_alkalinity").jqxNumberInput('decimal')) - }; - $('#jqxgrid').jqxGrid('updaterow', rowID, row); - $("#popupWindow").jqxWindow('hide'); - } else { - // Insert a record - var newrow = { - record: -1, - name: $("#name").val(), - calcium: parseFloat($("#calcium").jqxNumberInput('decimal')), - bicarbonate: parseFloat($("#bicarbonate").jqxNumberInput('decimal')), - sulfate: parseFloat($("#sulfate").jqxNumberInput('decimal')), - chloride: parseFloat($("#chloride").jqxNumberInput('decimal')), - sodium: parseFloat($("#sodium").jqxNumberInput('decimal')), - magnesium: parseFloat($("#magnesium").jqxNumberInput('decimal')), - ph: parseFloat($("#ph").jqxNumberInput('decimal')), - notes: $("#notes").val(), - total_alkalinity: parseFloat($("#total_alkalinity").jqxNumberInput('decimal')) - }; - $('#jqxgrid').jqxGrid('addrow', null, newrow); - $("#popupWindow").jqxWindow('hide'); - } - }); - createDelElements(); -}); -
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/js/profile_mash.js Wed Aug 29 17:10:31 2018 +0200 @@ -0,0 +1,328 @@ +/***************************************************************************** + * Copyright (C) 2014-2018 + * + * Michiel Broek <mbroek at mbse dot eu> + * + * This file is part of BrewCloud + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * BrewCloud is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with ThermFerm; see the file COPYING. If not, write to the Free + * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + *****************************************************************************/ + + +function createDelElements() { + $('#eventWindow').jqxWindow({ + theme: theme, + position: { x: 490, y: 210 }, + width: 300, + height: 175, + resizable: false, + isModal: true, + modalOpacity: 0.4, + okButton: $('#delOk'), + cancelButton: $('#delCancel'), + initContent: function () { + $('#delOk').jqxButton({ width: '65px', theme: theme }); + $('#delCancel').jqxButton({ width: '65px', theme: theme }); + $('#delCancel').focus(); + } + }); + $('#eventWindow').jqxWindow('hide'); +} + + +$(document).ready(function () { + var url = "includes/db_profile_mash.php"; + // tooltips + $("#name").jqxTooltip({ content: 'De naam voor dit maisch profiel.' }); + $("#notes").jqxTooltip({ content: 'De uitgebreide opmerkingen over dit maich profiel.' }); + $("#grid").jqxTooltip({ content: 'De maisch stappen in dit profiel.'}); + // prepare the data + var source = { + datatype: "json", + cache: false, + datafields: [ + { name: 'record', type: 'number' }, + { name: 'name', type: 'string' }, + { name: 'notes', type: 'string' }, + { name: 'steps', type: 'array' } + ], + id: 'record', + url: url, + deleterow: function (rowid, commit) { + // synchronize with the server - send delete command + var data = "delete=true&" + $.param({ record: rowid }); + $.ajax({ + dataType: 'json', + url: url, + cache: false, + data: data, + success: function (data, status, xhr) { + // delete command is executed. + commit(true); + }, + error: function (jqXHR, textStatus, errorThrown) { + commit(false); + } + }); + }, + addrow: function (rowid, rowdata, position, commit) { + var data = "insert=true&" + $.param(rowdata); + $.ajax({ + dataType: 'json', + url: url, + cache: false, + data: data, + success: function (data, status, xhr) { + commit(true); + }, + error: function(jqXHR, textStatus, errorThrown) { + commit(false); + } + }); + }, + updaterow: function (rowid, rowdata, commit) { + var data = "update=true&" + $.param(rowdata); + $.ajax({ + dataType: 'json', + url: url, + cache: false, + data: data, + success: function (data, status, xhr) { + // update command is executed. + commit(true); + }, + error: function(jqXHR, textStatus, errorThrown) { + commit(false); + } + }); + } + }; + var dataAdapter = new $.jqx.dataAdapter(source); + // Inline steps editor + var editsteps = function (data) { + var generaterow = function () { + var row = {}; + row["step_name"] = "Stap 1"; + row["step_type"] = "Infusion"; + row["step_temp"] = 62.0; + row['step_time'] = 20.0; + row['ramp_time'] = 1.0; + row['end_temp'] = 62.0; + return row; + } + var stepSource = { + localdata: data.steps, + datatype: "local", + datafields: [ + { name: 'step_name', type: 'string' }, + { name: 'step_type', type: 'string' }, + { name: 'step_temp', type: 'float' }, + { name: 'step_time', type: 'float' }, + { name: 'ramp_time', type: 'float' }, + { name: 'end_temp', type: 'float' } + ], + addrow: function (rowid, rowdata, position, commit) { + commit(true); + }, + deleterow: function (rowid, commit) { + commit(true); + } + }; + var stepAdapter = new $.jqx.dataAdapter(stepSource); + $("#grid").jqxGrid({ + width: 640, + height: 330, + source: stepAdapter, + theme: theme, + selectionmode: 'singlerow', + editmode: 'selectedrow', + editable: true, + showtoolbar: true, + rendertoolbar: function (toolbar) { + var me = this; + var container = $("<div style='margin: 5px;'></div>"); + toolbar.append(container); + container.append('<input style="margin-left: 100px;" id="addrowbutton" type="button" value="Nieuwe stap" />'); + container.append('<input style="margin-left: 140px;" id="deleterowbutton" type="button" value="Verwijder stap" />'); + $("#addrowbutton").jqxButton({ theme: theme, width: 150 }); + $("#deleterowbutton").jqxButton({ theme: theme, width: 150 }); + // create new row. + $("#addrowbutton").on('click', function () { + var datarow = generaterow(); + var commit = $("#grid").jqxGrid('addrow', null, datarow); + }); + // delete row. + $("#deleterowbutton").on('click', function () { + var selectedrowindex = $("#grid").jqxGrid('getselectedrowindex'); + var rowscount = $("#grid").jqxGrid('getdatainformation').rowscount; + if (selectedrowindex >= 0 && selectedrowindex < rowscount) { + var id = $("#grid").jqxGrid('getrowid', selectedrowindex); + var commit = $("#grid").jqxGrid('deleterow', id); + } + }); + }, + columns: [ + { text: 'Stap naam', datafield: 'step_name' }, + { text: 'Stap type', datafield: 'step_type', width: 100, columntype: 'dropdownlist', + createeditor: function (row, cellvalue, editor, celltext, cellwidth, cellheight) { + var dataSource = [ "Infusion", "Temperature", "Decoction" ]; + editor.jqxDropDownList({ source: dataSource, dropDownHeight: 95 }); + } + }, + { text: 'Temperatuur', datafield: 'step_temp', width: 80, align: 'right', cellsalign: 'right', cellsformat: 'f1', + validation: function (cell, value) { + if (value < 35 || value > 80) { + return { result: false, message: "De temperatuur moet tussen 35 en 80 zijn." }; + } + return true; + } + }, + { text: 'Eind', datafield: 'end_temp', width: 80, align: 'right', cellsalign: 'right', cellsformat: 'f1', + validation: function (cell, value) { + if (value < 35 || value > 80) { + return { result: false, message: "De temperatuur moet tussen 35 en 80 zijn." }; + } + return true; + } + }, + { text: 'Tijd', datafield: 'step_time', width: 70, align: 'right', cellsalign: 'right', + validation: function (cell, value) { + if (value < 1 || value > 360) { + return { result: false, message: "De tijd moet tussen 1 en 360 zijn." }; + } + return true; + } + }, + { text: 'Stap', datafield: 'ramp_time', width: 70, align: 'right', cellsalign: 'right', + validation: function (cell, value) { + if (value < 1 || value > 60) { + return { result: false, message: "De tijd moet tussen 1 en 60 zijn." }; + } + return true; + } + } + ] + }); + $("#grid").on('cellendedit', function (event) { + $('#grid').jqxGrid('sortby', 'step_temp', 'asc'); + }); + }; + + // initialize the input fields. + $("#name").jqxInput({ theme: theme, width: 250, height: 23 }); + $("#notes").jqxInput({ theme: theme, width: 640, height: 100 }); + var editrow = -1; + // initialize jqxGrid + $("#jqxgrid").jqxGrid({ + width: 1280, + height: 630, + source: dataAdapter, + theme: theme, + showstatusbar: true, + localization: getLocalization(), + renderstatusbar: function (statusbar) { + var container = $("<div style='overflow: hidden; position: relative; margin: 5px;'></div>"); + 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 }); + // add new row. + addButton.click(function (event) { + editrow = -1; + $("#popupWindow").jqxWindow({ position: { x: 230, y: 30 } }); + $("#name").val(''); + $("#notes").val(''); + editsteps(''); + $("#popupWindow").jqxWindow('open'); + }); + }, + filterable: true, + filtermode: 'excel', + columns: [ + { text: 'Maish schema', datafield: 'name', width: 250 }, + { text: 'Opmerkingen', datafield: 'notes' }, + { text: 'Wijzig', datafield: 'Edit', width: 120, align: 'center', columntype: 'button', cellsrenderer: function () { + return "Wijzig"; + }, buttonclick: function (row) { + // open the popup window when the user clicks a button. + editrow = row; + $("#popupWindow").jqxWindow({ position: { x: 230, y: 30 } }); + // get the clicked row's data and initialize the input fields. + var dataRecord = $("#jqxgrid").jqxGrid('getrowdata', editrow); + $("#name").val(dataRecord.name); + $("#notes").val(dataRecord.notes); + editsteps(dataRecord); + // show the popup window. + $("#popupWindow").jqxWindow('open'); + } + } + ] + }); + // initialize the popup window and buttons. + $("#popupWindow").jqxWindow({ + width: 860, + height: 550, + resizable: false, + theme: theme, + isModal: true, + autoOpen: false, + cancelButton: $("#Cancel"), + modalOpacity: 0.40 + }); + $("#popupWindow").on('open', function () { + $("#name").jqxInput('selectAll'); + }); + $("#Delete").jqxButton({ theme: theme }); + $("#Delete").click(function () { + if (editrow >= 0) { + // Open a popup to confirm this action. + $('#eventWindow').jqxWindow('open'); + $("#delOk").click(function () { + var rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); + $("#jqxgrid").jqxGrid('deleterow', rowID); + }); + } + $("#popupWindow").jqxWindow('hide'); + }); + $("#Cancel").jqxButton({ theme: theme }); + $("#Save").jqxButton({ theme: theme }); + // update the edited row when the user clicks the 'Save' button. + $("#Save").click(function () { + var steprows = $('#grid').jqxGrid('getrows'); + if (editrow >= 0) { + var rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); + var row = { + record: rowID, + name: $("#name").val(), + notes: $("#notes").val(), + steps: steprows + }; + $('#jqxgrid').jqxGrid('updaterow', rowID, row); + $("#popupWindow").jqxWindow('hide'); + } else { + // Insert a record + var newrow = { + record: -1, + name: $("#name").val(), + notes: $("#notes").val(), + steps: steprows + }; + $('#jqxgrid').jqxGrid('addrow', null, newrow); + $("#popupWindow").jqxWindow('hide'); + } + }); + createDelElements(); +}); +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/js/profile_styles.js Wed Aug 29 17:10:31 2018 +0200 @@ -0,0 +1,335 @@ +/***************************************************************************** + * Copyright (C) 2014-2018 + * + * Michiel Broek <mbroek at mbse dot eu> + * + * This file is part of BrewCloud + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * BrewCloud is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with ThermFerm; see the file COPYING. If not, write to the Free + * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + *****************************************************************************/ + + +function createDelElements() { + $('#eventWindow').jqxWindow({ + theme: theme, + position: { x: 490, y: 210 }, + width: 300, + height: 175, + resizable: false, + isModal: true, + modalOpacity: 0.4, + okButton: $('#delOk'), + cancelButton: $('#delCancel'), + initContent: function () { + $('#delOk').jqxButton({ width: '65px', theme: theme }); + $('#delCancel').jqxButton({ width: '65px', theme: theme }); + $('#delCancel').focus(); + } + }); + $('#eventWindow').jqxWindow('hide'); +} + + +$(document).ready(function () { + var url = "includes/db_profile_styles.php"; + // prepare the data + var source = { + datatype: "json", + cache: false, + datafields: [ + { name: 'record', type: 'number' }, + { name: 'name', type: 'string' }, + { name: 'category', type: 'string' }, + { name: 'category_number', type: 'number' }, + { name: 'style_letter', type: 'string' }, + { name: 'style_guide', type: 'string' }, + { name: 'type', type: 'string' }, + { name: 'og_min', type: 'float' }, + { name: 'og_max', type: 'float' }, + { name: 'fg_min', type: 'float' }, + { name: 'fg_max', type: 'float' }, + { name: 'ibu_min', type: 'float' }, + { name: 'ibu_max', type: 'float' }, + { name: 'color_min', type: 'float' }, + { name: 'color_max', type: 'float' }, + { name: 'carb_min', type: 'float' }, + { name: 'carb_max', type: 'float' }, + { name: 'abv_min', type: 'float' }, + { name: 'abv_max', type: 'float' }, + { name: 'notes', type: 'string' }, + { name: 'profile', type: 'string' }, + { name: 'ingredients', type: 'string' }, + { name: 'examples', type: 'string' } + ], + id: 'record', + url: url, + deleterow: function (rowid, commit) { + // synchronize with the server - send delete command + var data = "delete=true&" + $.param({ record: rowid }); + $.ajax({ + dataType: 'json', + url: url, + cache: false, + data: data, + success: function (data, status, xhr) { + // delete command is executed. + commit(true); + }, + error: function (jqXHR, textStatus, errorThrown) { + commit(false); + } + }); + }, + addrow: function (rowid, rowdata, position, commit) { + var data = "insert=true&" + $.param(rowdata); + $.ajax({ + dataType: 'json', + url: url, + cache: false, + data: data, + success: function (data, status, xhr) { + commit(true); + }, + error: function(jqXHR, textStatus, errorThrown) { + commit(false); + } + }); + }, + updaterow: function (rowid, rowdata, commit) { + var data = "update=true&" + $.param(rowdata); + $.ajax({ + dataType: 'json', + url: url, + cache: false, + data: data, + success: function (data, status, xhr) { + // update command is executed. + commit(true); + }, + error: function(jqXHR, textStatus, errorThrown) { + commit(false); + } + }); + } + }; + var srcType = [ "Lager", "Ale", "Mead", "Wheat", "Mixed", "Cider" ]; + // initialize the input fields. + $("#name").jqxInput({ theme: theme, width: 250, height: 23 }); + $("#category").jqxInput({ theme: theme, width: 250, height: 23 }); + $("#category_number").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, max: 1000, decimalDigits: 0, spinButtons: true }); + $("#style_letter").jqxInput({ theme: theme, width: 250, height: 23 }); + $("#style_guide").jqxInput({ theme: theme, width: 250, height: 23 }); + $("#type").jqxDropDownList({ theme: theme, source: srcType, width: 90, height: 23, dropDownHeight: 185 }); + $("#og_min").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 1.000, max: 1.200, decimalDigits: 3, spinButtons: true, spinButtonsStep: 0.001 }); + $("#og_max").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 1.000, max: 1.200, decimalDigits: 3, spinButtons: true, spinButtonsStep: 0.001 }); + $("#fg_min").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0.990, max: 1.100, decimalDigits: 3, spinButtons: true, spinButtonsStep: 0.001 }); + $("#fg_max").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 1.000, max: 1.100, decimalDigits: 3, spinButtons: true, spinButtonsStep: 0.001 }); + $("#ibu_min").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, max: 200, decimalDigits: 0, spinButtons: true }); + $("#ibu_max").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, max: 200, decimalDigits: 0, spinButtons: true }); + $("#color_min").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 1, max: 200, decimalDigits: 0, spinButtons: true }); + $("#color_max").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 1, max: 200, decimalDigits: 0, spinButtons: true }); + $("#carb_min").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, max: 5, decimalDigits: 1, spinButtons: true, spinButtonsStep: 0.1 }); + $("#carb_max").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, max: 5, decimalDigits: 1, spinButtons: true, spinButtonsStep: 0.1 }); + $("#abv_min").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, max: 20, decimalDigits: 1, spinButtons: true, spinButtonsStep: 0.1 }); + $("#abv_max").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, max: 20, decimalDigits: 1, spinButtons: true, spinButtonsStep: 0.1 }); + + $("#notes").jqxInput({ theme: theme, width: 640, height: 100 }); + $("#profile").jqxInput({ theme: theme, width: 640, height: 48 }); + $("#ingredients").jqxInput({ theme: theme, width: 640, height: 23 }); + $("#examples").jqxInput({ theme: theme, width: 640, height: 48 }); + var dataAdapter = new $.jqx.dataAdapter(source); + var editrow = -1; + // initialize jqxGrid + $("#jqxgrid").jqxGrid({ + width: 1280, + height: 630, + source: dataAdapter, + theme: theme, + showstatusbar: true, + localization: getLocalization(), + renderstatusbar: function (statusbar) { + var container = $("<div style='overflow: hidden; position: relative; margin: 5px;'></div>"); + 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;'>Nieuw</span></div>"); + container.append(addButton); + statusbar.append(container); + addButton.jqxButton({ theme: theme, width: 120, height: 20 }); + // add new row. + addButton.click(function (event) { + editrow = -1; + $("#popupWindow").jqxWindow({ position: { x: 230, y: 30 } }); + $("#name").val(''); + $("#category").val(''); + $("#category_number").val(''); + $("#style_letter").val(''); + $("#style_guide").val(''); + $("#type").val(''); + $("#og_min").val(''); + $("#og_max").val(''); + $("#fg_min").val(''); + $("#fg_max").val(''); + $("#ibu_min").val(''); + $("#ibu_max").val(''); + $("#color_min").val(''); + $("#color_max").val(''); + $("#carb_min").val(''); + $("#carb_max").val(''); + $("#abv_min").val(''); + $("#abv_max").val(''); + $("#notes").val(''); + $("#profile").val(''); + $("#ingredients").val(''); + $("#examples").val(''); + $("#popupWindow").jqxWindow('open'); + }); + }, + filterable: true, + filtermode: 'excel', + columns: [ + { text: 'Groep', datafield: 'style_letter', width: 30 }, + { text: 'Style Name', datafield: 'name' }, + { text: 'OG', datafield: 'og_min', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f3' }, + { text: 'OG', datafield: 'og_max', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f3' }, + { text: 'FG', datafield: 'fg_min', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f3' }, + { text: 'FG', datafield: 'fg_max', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f3' }, + { text: 'IBU', datafield: 'ibu_min', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f0' }, + { text: 'IBU', datafield: 'ibu_max', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f0' }, + { text: 'EBC', datafield: 'color_min', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f0' }, + { text: 'EBC', datafield: 'color_max', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f0' }, + { text: 'Co2', datafield: 'carb_min', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f1' }, + { text: 'Co2', datafield: 'carb_max', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f1' }, + { text: 'ABV', datafield: 'abv_min', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f1' }, + { text: 'ABV', datafield: 'abv_max', width: 60, align: 'right', cellsalign: 'right', cellsformat: 'f1' }, + { text: 'Wijzig', datafield: 'Edit', width: 120, align: 'center', columntype: 'button', cellsrenderer: function () { + return "Wijzig"; + }, buttonclick: function (row) { + // open the popup window when the user clicks a button. + editrow = row; + $("#popupWindow").jqxWindow({ position: { x: 230, y: 30 } }); + // get the clicked row's data and initialize the input fields. + var dataRecord = $("#jqxgrid").jqxGrid('getrowdata', editrow); + $("#name").val(dataRecord.name); + $("#category").val(dataRecord.category); + $("#category_number").val(dataRecord.category_number); + $("#style_letter").val(dataRecord.style_letter); + $("#style_guide").val(dataRecord.style_guide); + $("#type").val(dataRecord.type); + $("#og_min").val(dataRecord.og_min); + $("#og_max").val(dataRecord.og_max); + $("#fg_min").val(dataRecord.fg_min); + $("#fg_max").val(dataRecord.fg_max); + $("#ibu_min").val(dataRecord.ibu_min); + $("#ibu_max").val(dataRecord.ibu_max); + $("#color_min").val(dataRecord.color_min); + $("#color_max").val(dataRecord.color_max); + $("#carb_min").val(dataRecord.carb_min); + $("#carb_max").val(dataRecord.carb_max); + $("#abv_min").val(dataRecord.abv_min); + $("#abv_max").val(dataRecord.abv_max); + $("#notes").val(dataRecord.notes); + $("#profile").val(dataRecord.profile); + $("#ingredients").val(dataRecord.ingredients); + $("#examples").val(dataRecord.examples); + // show the popup window. + $("#popupWindow").jqxWindow('open'); + } + } + ] + }); + // initialize the popup window and buttons. + $("#popupWindow").jqxWindow({ + width: 860, resizable: false, theme: theme, isModal: true, autoOpen: false, cancelButton: $("#Cancel"), modalOpacity: 0.40 + }); + $("#popupWindow").on('open', function () { + $("#name").jqxInput('selectAll'); + }); + $("#Delete").jqxButton({ theme: theme }); + $("#Delete").click(function () { + if (editrow >= 0) { + // Open a popup to confirm this action. + $('#eventWindow').jqxWindow('open'); + $("#delOk").click(function () { + var rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); + $("#jqxgrid").jqxGrid('deleterow', rowID); + }); + } + $("#popupWindow").jqxWindow('hide'); + }); + $("#Cancel").jqxButton({ theme: theme }); + $("#Save").jqxButton({ theme: theme }); + // update the edited row when the user clicks the 'Save' button. + $("#Save").click(function () { + if (editrow >= 0) { + var rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); + var row = { + record: rowID, + name: $("#name").val(), + category: $("#category").val(), + category_number: parseFloat($("#category_number").jqxNumberInput('decimal')), + style_letter: $("#style_letter").val(), + style_guide: $("#style_guide").val(), + type: $("#type").val(), + og_min: parseFloat($("#og_min").jqxNumberInput('decimal')), + og_max: parseFloat($("#og_max").jqxNumberInput('decimal')), + fg_min: parseFloat($("#fg_min").jqxNumberInput('decimal')), + fg_max: parseFloat($("#fg_max").jqxNumberInput('decimal')), + ibu_min: parseFloat($("#ibu_min").jqxNumberInput('decimal')), + ibu_max: parseFloat($("#ibu_max").jqxNumberInput('decimal')), + color_min: parseFloat($("#color_min").jqxNumberInput('decimal')), + color_max: parseFloat($("#color_max").jqxNumberInput('decimal')), + carb_min: parseFloat($("#carb_min").jqxNumberInput('decimal')), + carb_max: parseFloat($("#carb_max").jqxNumberInput('decimal')), + abv_min: parseFloat($("#abv_min").jqxNumberInput('decimal')), + abv_max: parseFloat($("#abv_max").jqxNumberInput('decimal')), + notes: $("#notes").val(), + profile: $("#profile").val(), + ingredients: $("#ingredients").val(), + examples: $("#examples").val() + }; + $('#jqxgrid').jqxGrid('updaterow', rowID, row); + $("#popupWindow").jqxWindow('hide'); + } else { + // Insert a record + var newrow = { + record: -1, + name: $("#name").val(), + category: $("#category").val(), + category_number: parseFloat($("#category_number").jqxNumberInput('decimal')), + style_letter: $("#style_letter").val(), + style_guide: $("#style_guide").val(), + type: $("#type").val(), + og_min: parseFloat($("#og_min").jqxNumberInput('decimal')), + og_max: parseFloat($("#og_max").jqxNumberInput('decimal')), + fg_min: parseFloat($("#fg_min").jqxNumberInput('decimal')), + fg_max: parseFloat($("#fg_max").jqxNumberInput('decimal')), + ibu_min: parseFloat($("#ibu_min").jqxNumberInput('decimal')), + ibu_max: parseFloat($("#ibu_max").jqxNumberInput('decimal')), + color_min: parseFloat($("#color_min").jqxNumberInput('decimal')), + color_max: parseFloat($("#color_max").jqxNumberInput('decimal')), + carb_min: parseFloat($("#carb_min").jqxNumberInput('decimal')), + carb_max: parseFloat($("#carb_max").jqxNumberInput('decimal')), + abv_min: parseFloat($("#abv_min").jqxNumberInput('decimal')), + abv_max: parseFloat($("#abv_max").jqxNumberInput('decimal')), + notes: $("#notes").val(), + profile: $("#profile").val(), + ingredients: $("#ingredients").val(), + examples: $("#examples").val() + }; + $('#jqxgrid').jqxGrid('addrow', null, newrow); + $("#popupWindow").jqxWindow('hide'); + } + }); + createDelElements(); +}); +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/js/profile_water.js Wed Aug 29 17:10:31 2018 +0200 @@ -0,0 +1,255 @@ +/***************************************************************************** + * Copyright (C) 2014-2018 + * + * Michiel Broek <mbroek at mbse dot eu> + * + * This file is part of BrewCloud + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * BrewCloud is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with ThermFerm; see the file COPYING. If not, write to the Free + * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + *****************************************************************************/ + + +function createDelElements() { + $('#eventWindow').jqxWindow({ + theme: theme, + position: { x: 490, y: 210 }, + width: 300, + height: 175, + resizable: false, + isModal: true, + modalOpacity: 0.4, + okButton: $('#delOk'), + cancelButton: $('#delCancel'), + initContent: function () { + $('#delOk').jqxButton({ width: '65px', theme: theme }); + $('#delCancel').jqxButton({ width: '65px', theme: theme }); + $('#delCancel').focus(); + } + }); + $('#eventWindow').jqxWindow('hide'); +} + + +$(document).ready(function () { + var url = "includes/db_profile_water.php"; + // prepare the data + var source = { + datatype: "json", + cache: false, + datafields: [ + { name: 'record', type: 'number' }, + { name: 'name', type: 'string' }, + { name: 'calcium', type: 'float' }, + { name: 'bicarbonate', type: 'float' }, + { name: 'sulfate', type: 'float' }, + { name: 'chloride', type: 'float' }, + { name: 'sodium', type: 'float' }, + { name: 'magnesium', type: 'float' }, + { name: 'ph', type: 'float' }, + { name: 'notes', type: 'string' }, + { name: 'total_alkalinity', type: 'float' } + ], + id: 'record', + url: url, + deleterow: function (rowid, commit) { + // synchronize with the server - send delete command + var data = "delete=true&" + $.param({ record: rowid }); + $.ajax({ + dataType: 'json', + url: url, + cache: false, + data: data, + success: function (data, status, xhr) { + // delete command is executed. + commit(true); + }, + error: function (jqXHR, textStatus, errorThrown) { + commit(false); + } + }); + }, + addrow: function (rowid, rowdata, position, commit) { + var data = "insert=true&" + $.param(rowdata); + $.ajax({ + dataType: 'json', + url: url, + cache: false, + data: data, + success: function (data, status, xhr) { + commit(true); + }, + error: function(jqXHR, textStatus, errorThrown) { + commit(false); + } + }); + }, + updaterow: function (rowid, rowdata, commit) { + var data = "update=true&" + $.param(rowdata); + $.ajax({ + dataType: 'json', + url: url, + cache: false, + data: data, + success: function (data, status, xhr) { + // update command is executed. + commit(true); + }, + error: function(jqXHR, textStatus, errorThrown) { + commit(false); + } + }); + } + }; + // initialize the input fields. + $("#name").jqxInput({ theme: theme, width: 250, height: 23 }); + $("#calcium").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, decimalDigits: 1, spinButtons: true }); + $("#bicarbonate").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, decimalDigits: 1, spinButtons: true }); + $("#sulfate").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, decimalDigits: 1, spinButtons: true }); + $("#chloride").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, decimalDigits: 1, spinButtons: true }); + $("#sodium").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, decimalDigits: 1, spinButtons: true }); + $("#magnesium").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, decimalDigits: 1, spinButtons: true }); + $("#ph").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, decimalDigits: 1, spinButtons: true }); + + $("#notes").jqxInput({ theme: theme, width: 640, height: 100 }); + $("#total_alkalinity").jqxNumberInput({ inputMode: 'simple', spinMode: 'simple', theme: theme, width: 70, height: 23, min: 0, decimalDigits: 1, spinButtons: true }); + var dataAdapter = new $.jqx.dataAdapter(source); + var editrow = -1; + // initialize jqxGrid + $("#jqxgrid").jqxGrid({ + width: 1280, + height: 630, + source: dataAdapter, + theme: theme, + showstatusbar: true, + localization: getLocalization(), + renderstatusbar: function (statusbar) { + var container = $("<div style='overflow: hidden; position: relative; margin: 5px;'></div>"); + 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;'>Nieuw</span></div>"); + container.append(addButton); + statusbar.append(container); + addButton.jqxButton({ theme: theme, width: 120, height: 20 }); + // add new row. + addButton.click(function (event) { + editrow = -1; + $("#popupWindow").jqxWindow({ position: { x: 230, y: 30 } }); + $("#name").val(''); + $("#calcium").val(''); + $("#bicarbonate").val(''); + $("#sulfate").val(''); + $("#chloride").val(''); + $("#sodium").val(''); + $("#magnesium").val(''); + $("#ph").val(''); + $("#notes").val(''); + $("#total_alkalinity").val(''); + $("#popupWindow").jqxWindow('open'); + }); + }, + filterable: true, + filtermode: 'excel', + columns: [ + { text: 'Water Profiel', datafield: 'name', width: 250 }, + { text: 'Opmerkingen', datafield: 'notes', width: 475 }, + { text: 'Natrium', datafield: 'sodium', width: 80, align: 'right', cellsalign: 'right', cellsformat: 'f1' }, + { text: 'Chloride', datafield: 'chloride', width: 80, align: 'right', cellsalign: 'right', cellsformat: 'f1' }, + { text: 'Sulfaat', datafield: 'sulfate', width: 80, align: 'right', cellsalign: 'right', cellsformat: 'f1' }, + { text: 'Zuurgraad', datafield: 'ph', width: 80, align: 'right', cellsalign: 'right', cellsformat: 'f1' }, + { text: 'Alkaliteit', datafield: 'total_alkalinity', width: 80, align: 'right', cellsalign: 'right', cellsformat: 'f1' }, + { text: 'Wijzig', datafield: 'Edit', columntype: 'button', cellsrenderer: function () { + return "Wijzig"; + }, buttonclick: function (row) { + // open the popup window when the user clicks a button. + editrow = row; + $("#popupWindow").jqxWindow({ position: { x: 230, y: 30 } }); + // get the clicked row's data and initialize the input fields. + var dataRecord = $("#jqxgrid").jqxGrid('getrowdata', editrow); + $("#name").val(dataRecord.name); + $("#calcium").val(dataRecord.calcium); + $("#bicarbonate").val(dataRecord.bicarbonate); + $("#sulfate").val(dataRecord.sulfate); + $("#chloride").val(dataRecord.chloride); + $("#sodium").val(dataRecord.sodium); + $("#magnesium").val(dataRecord.magnesium); + $("#ph").val(dataRecord.ph); + $("#notes").val(dataRecord.notes); + $("#total_alkalinity").val(dataRecord.total_alkalinity); + // show the popup window. + $("#popupWindow").jqxWindow('open'); + } + } + ] + }); + // initialize the popup window and buttons. + $("#popupWindow").jqxWindow({ + width: 860, resizable: false, theme: theme, isModal: true, autoOpen: false, cancelButton: $("#Cancel"), modalOpacity: 0.40 + }); + $("#popupWindow").on('open', function () { + $("#name").jqxInput('selectAll'); + }); + $("#Delete").jqxButton({ theme: theme }); + $("#Delete").click(function () { + if (editrow >= 0) { + // Open a popup to confirm this action. + $('#eventWindow').jqxWindow('open'); + $("#delOk").click(function () { + var rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); + $("#jqxgrid").jqxGrid('deleterow', rowID); + }); + } + $("#popupWindow").jqxWindow('hide'); + }); + $("#Cancel").jqxButton({ theme: theme }); + $("#Save").jqxButton({ theme: theme }); + // update the edited row when the user clicks the 'Save' button. + $("#Save").click(function () { + if (editrow >= 0) { + var rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); + var row = { + record: rowID, + name: $("#name").val(), + calcium: parseFloat($("#calcium").jqxNumberInput('decimal')), + bicarbonate: parseFloat($("#bicarbonate").jqxNumberInput('decimal')), + sulfate: parseFloat($("#sulfate").jqxNumberInput('decimal')), + chloride: parseFloat($("#chloride").jqxNumberInput('decimal')), + sodium: parseFloat($("#sodium").jqxNumberInput('decimal')), + magnesium: parseFloat($("#magnesium").jqxNumberInput('decimal')), + ph: parseFloat($("#ph").jqxNumberInput('decimal')), + notes: $("#notes").val(), + total_alkalinity: parseFloat($("#total_alkalinity").jqxNumberInput('decimal')) + }; + $('#jqxgrid').jqxGrid('updaterow', rowID, row); + $("#popupWindow").jqxWindow('hide'); + } else { + // Insert a record + var newrow = { + record: -1, + name: $("#name").val(), + calcium: parseFloat($("#calcium").jqxNumberInput('decimal')), + bicarbonate: parseFloat($("#bicarbonate").jqxNumberInput('decimal')), + sulfate: parseFloat($("#sulfate").jqxNumberInput('decimal')), + chloride: parseFloat($("#chloride").jqxNumberInput('decimal')), + sodium: parseFloat($("#sodium").jqxNumberInput('decimal')), + magnesium: parseFloat($("#magnesium").jqxNumberInput('decimal')), + ph: parseFloat($("#ph").jqxNumberInput('decimal')), + notes: $("#notes").val(), + total_alkalinity: parseFloat($("#total_alkalinity").jqxNumberInput('decimal')) + }; + $('#jqxgrid').jqxGrid('addrow', null, newrow); + $("#popupWindow").jqxWindow('hide'); + } + }); + createDelElements(); +}); +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/profile_mash.php Wed Aug 29 17:10:31 2018 +0200 @@ -0,0 +1,45 @@ +<?php +require_once($_SERVER['DOCUMENT_ROOT'].'/includes/global.inc.php'); +page_header('Maisch schemas', 'profile_mash'); +?> + + <div id="jqxgrid"></div> + <div style="margin-top: 30px;"> + <div id="cellbegineditevent"></div> + <div style="margin-top: 10px;" id="cellendeditevent"></div> + </div> + + <!-- Popup editor window. --> + <div id="popupWindow"> + <div>Wijzig maisch schema.</div> + <div style="overflow: hidden;"> + <table> + <tr> + <td align="right" style="vertical-align: top;">Schema naam:</td> + <td align="left" colspan="3" style="vertical-align: top;"><input id="name" /></td> + </tr> + <tr> + <td align="right" style="vertical-align: top;">Opmerkingen:</td> + <td align="left" colspan="3"><textarea id="notes"></textarea></td> + </tr> + <tr> + <td align="right" style="vertical-align: top;">Stappen:</td> + <td align="left" colspan="3"><div id="grid">Graat</div></td> + </tr> + <tr> + <td style="padding-top: 10px;" align="right"><input type="button" id="Delete" value="Delete" /></td> + <td align="right"></td> + <td align="right"></td> + <td style="padding-top: 10px;" align="right"> + <input style="margin-right: 5px;" type="button" id="Save" value="Save" /> + <input id="Cancel" type="button" value="Cancel" /> + </td> + </tr> + </table> + </div> + </div> + +<?php +confirm_delete(); +page_footer(); +?>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/profile_styles.php Wed Aug 29 17:10:31 2018 +0200 @@ -0,0 +1,104 @@ +<?php +require_once($_SERVER['DOCUMENT_ROOT'].'/includes/global.inc.php'); +page_header('Bier stijlen', 'profile_styles'); +?> + + <div id="jqxgrid"></div> + <div style="margin-top: 30px;"> + <div id="cellbegineditevent"></div> + <div style="margin-top: 10px;" id="cellendeditevent"></div> + </div> + + <!-- Popup editor window. --> + <div id="popupWindow"> + <div>Wijzig bier stijl.</div> + <div style="overflow: hidden;"> + <table> + <tr> + <td align="right" style="vertical-align: top;">Bier stijl:</td> + <td align="left" style="vertical-align: top;"><input id="name" /></td> + <td align="right" style="vertical-align: top;">Bier groep:</td> + <td align="left" style="vertical-align: top;"><input id="style_letter" /></td> + </tr> + <tr> + <td align="right" style="vertical-align: top;">Categorie:</td> + <td align="left" style="vertical-align: top;"><input id="category" /></td> + <td align="right" style="vertical-align: top;">Categorie nummer:</td> + <td align="left" style="vertical-align: top;"><input id="category_number" /></td> + </tr> + <tr> + <td align="right" style="vertical-align: top;">Opmerkingen:</td> + <td align="left" colspan="3"><textarea id="notes"></textarea></td> + </tr> + <tr> + <td align="right" style="vertical-align: top;">Type:</td> + <td align="left"><div id="type"></div></td> + <td align="right" style="vertical-align: top;">Stijl gids:</td> + <td align="left" style="vertical-align: top;"><input id="style_guide" /></td> + </tr> + + <tr> + <td align="right" style="vertical-align: top;">Ninimum start SG:</td> + <td align="left" style="vertical-align: top;"><input id="og_min" /></td> + <td align="right" style="vertical-align: top;">Minimum kleur EBC:</td> + <td align="left" style="vertical-align: top;"><input id="color_min" /></td> + </tr> + <tr> + <td align="right" style="vertical-align: top;">Maximum start SG:</td> + <td align="left" style="vertical-align: top;"><input id="og_max" /></td> + <td align="right" style="vertical-align: top;">Maximum kleur EBC:</td> + <td align="left" style="vertical-align: top;"><input id="color_max" /></td> + </tr> + <tr> + <td align="right" style="vertical-align: top;">Minimum eind SG:</td> + <td align="left" style="vertical-align: top;"><input id="fg_min" /></td> + <td align="right" style="vertical-align: top;">Minimum koolzuur vol:</td> + <td align="left" style="vertical-align: top;"><input id="carb_min" /></td> + </tr> + <tr> + <td align="right" style="vertical-align: top;">Maximum eind SG:</td> + <td align="left" style="vertical-align: top;"><input id="fg_max" /></td> + <td align="right" style="vertical-align: top;">Maximum koolzuur vol:</td> + <td align="left" style="vertical-align: top;"><input id="carb_max" /></td> + </tr> + <tr> + <td align="right" style="vertical-align: top;">Minimum bitterheid IBU:</td> + <td align="left" style="vertical-align: top;"><input id="ibu_min" /></td> + <td align="right" style="vertical-align: top;">Minimum alcohol vol %:</td> + <td align="left" style="vertical-align: top;"><input id="abv_min" /></td> + </tr> + <tr> + <td align="right" style="vertical-align: top;">Maximum bitterheid IBU:</td> + <td align="left" style="vertical-align: top;"><input id="ibu_max" /></td> + <td align="right" style="vertical-align: top;">Maximum alcohol vol %:</td> + <td align="left" style="vertical-align: top;"><input id="abv_max" /></td> + </tr> + <tr> + <td align="right" style="vertical-align: top;">Profiel:</td> + <td align="left" colspan="3"><textarea id="profile"></textarea></td> + </tr> + <tr> + <td align="right" style="vertical-align: top;">Ingredienten:</td> + <td align="left" colspan="3"><textarea id="ingredients"></textarea></td> + </tr> + <tr> + <td align="right" style="vertical-align: top;">Voorbeelden:</td> + <td align="left" colspan="3"><textarea id="examples"></textarea></td> + </tr> + <tr> + <td style="padding-top: 10px;" align="right"><input type="button" id="Delete" value="Delete" /></td> + <td align="right"></td> + <td align="right"></td> + <td style="padding-top: 10px;" align="right"> + <input style="margin-right: 5px;" type="button" id="Save" value="Save" /> + <input id="Cancel" type="button" value="Cancel" /> + </td> + </tr> + </table> + </div> + </div> + +<?php +confirm_delete(); +page_footer(); +?>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/profile_water.php Wed Aug 29 17:10:31 2018 +0200 @@ -0,0 +1,65 @@ +<?php +require_once($_SERVER['DOCUMENT_ROOT'].'/includes/global.inc.php'); +page_header('Water profielen', 'profile_water'); +?> + + <div id="jqxgrid"></div> + <div style="margin-top: 30px;"> + <div id="cellbegineditevent"></div> + <div style="margin-top: 10px;" id="cellendeditevent"></div> + </div> + + <!-- Popup editor window. --> + <div id="popupWindow"> + <div>Wijzig brouwwater profiel.</div> + <div style="overflow: hidden;"> + <table> + <tr> + <td align="right" style="vertical-align: top;">Water naam:</td> + <td align="left" colspan="3" style="vertical-align: top;"><input id="name" /></td> + </tr> + <tr> + <td align="right" style="vertical-align: top;">Calcium (Ca) mg/l:</td> + <td align="left" style="vertical-align: top;"><input id="calcium" /></td> + <td align="right" style="vertical-align: top;">Magnesium (Mg) mg/l:</td> + <td align="left" style="vertical-align: top;"><input id="magnesium" /></td> + </tr> + <tr> + <td align="right" style="vertical-align: top;">Natrium (Na) mg/l:</td> + <td align="left" style="vertical-align: top;"><input id="sodium" /></td> + <td align="right" style="vertical-align: top;">Chloride (Cl) mg/l:</td> + <td align="left" style="vertical-align: top;"><input id="chloride" /></td> + </tr> + <tr> + <td align="right" style="vertical-align: top;">Sulfaat (CaSO4) mg/l:</td> + <td align="left" style="vertical-align: top;"><input id="sulfate" /></td> + <td align="right" style="vertical-align: top;">Zuurgraad (pH):</td> + <td align="left" style="vertical-align: top;"><input id="ph" /></td> + </tr> + <tr> + <td align="right" style="vertical-align: top;">Bicarbonaat (HCO3) mg/l:</td> <!-- Input for total_alkalinity --> + <td align="left" style="vertical-align: top;"><input id="bicarbonate" /></td> + <td align="right" style="vertical-align: top;">Totale alkaliteit (CaCO3) mg/l:</td> + <td align="left" style="vertical-align: top;"><input id="total_alkalinity" /></td> + </tr> + <tr> + <td align="right" style="vertical-align: top;">Opmerkingen:</td> + <td align="left" colspan="3"><textarea id="notes"></textarea></td> + </tr> + <tr> + <td style="padding-top: 10px;" align="right"><input type="button" id="Delete" value="Delete" /></td> + <td align="right"></td> + <td align="right"></td> + <td style="padding-top: 10px;" align="right"> + <input style="margin-right: 5px;" type="button" id="Save" value="Save" /> + <input id="Cancel" type="button" value="Cancel" /> + </td> + </tr> + </table> + </div> + </div> + +<?php +confirm_delete(); +page_footer(); +?>