# HG changeset patch # User Michiel Broek # Date 1571397166 -7200 # Node ID d25a1b160dbac8ed10dab2721f7d3e4721a24804 # Parent 9e43b216ccd396e3831ef23537444b32b108b61c# Parent c6021dd94afba70e3c89fe2d206813d6aea52dcd Merged with default diff -r 9e43b216ccd3 -r d25a1b160dba README.design --- a/README.design Sat Sep 14 10:41:35 2019 +0200 +++ b/README.design Fri Oct 18 13:12:46 2019 +0200 @@ -14,6 +14,9 @@ Bug: Metingen en berekeningen met afgelezen Brix waardes kloppen niet op het eind van de vergisting. Gaat vooral fout met de Saison. + Eind SG na koken klopt niet als er suiker in de vergisting toegevoegd wordt. + In de js code is dit est_og3 en niet est_og, maar est_og3 is niet beschikbaar + in de php code. Wish: Giststarter bereken gist viability. Viability zelf wordt al gebruikt. @@ -23,31 +26,40 @@ Gisten: = Cultures? Extra vlaggen: - POF+ (Phenolic Off Flavor Positive) (Ferulic acid to 4-vinyl-guaiacol) glucoamlylase+ - zymocide+ (K1,K2,K28 or Klus) (killer yeast gen) (Alleen in wijngist?) - sta1 (diastatic) beta glucosidase -Gist typen: Brettanomyces, Wild yeast, Kveik, Spontaneous. -Gist klasse: N/A, Saccharomyces cerevisiae, Saccharomyces pastorianus, Saccharomyces Bayanus, +Gist typen: Wild yeast, Spontaneous. Nieuwe velden: - class int32 low16 high16 - none none - Saccharomyces cerevisiae - pastorianus - Bayanus - pofpos boolean - zymocide int4 none, K1, K2, K28, Klus - sta1 boolean - + pofpos boolean POF+ (Phenolic Off Flavor Positive) (Ferulic acid to 4-vinyl-guaiacol) + zymocide int4 none, K1, K2, K28, Klus zymocide+ (K1,K2,K28 or Klus) (killer yeast gen) (Alleen in wijngist?) + sta1 boolean Diastatic gen + harvest_top boolean Kveik top/bottom harvest + harvest_time int16 Kveik harvest after nn hours + pitch_temperature float Kveik pitch temperature + bacteria boolean Kveik has bacteria flag Toevoegen Barrel/Oak aging vergisting stap. Wort souring stap. Add dry-hop toevoegen moment. -Split batch. +Split batch: + 1. After sparge, before boil. + 2. After boil, before primary. + 3. After primary + 4. After secondary (several dry-hops) + 5. After lagering (separated packaging) + +Split fields: +divide_type 0:none 1:after mash 2:after boil 3:after primary 4:after secondary 5:after tertiary +divide_size amount in liters of this part. +divide_parts hoeveel afsplitsingen. +divide_from uuid +Via Export module dialoog maken, keuze aantal afsplitsels en grootte per stuk. 10 stuks. +Procedure: Genereer afsplitsels met uniek uuid en moeder uuid. Pas volumes aan na splitspunt. +Afsplitsels naam aanpassen, code een -n volgnummer toevoegen. +Daarna, markeer master en reduceer volume na splitspunt. Miscs type: add wood. diff -r 9e43b216ccd3 -r d25a1b160dba bmsd/Makefile --- a/bmsd/Makefile Sat Sep 14 10:41:35 2019 +0200 +++ b/bmsd/Makefile Fri Oct 18 13:12:46 2019 +0200 @@ -55,7 +55,7 @@ # DO NOT DELETE THIS LINE - MAKE DEPEND RELIES ON IT # Dependencies generated by make depend -mqtt.o: bms.h xutil.h mqtt.h nodes.h fermenters.h +mqtt.o: bms.h xutil.h mqtt.h nodes.h fermenters.h co2meters.h lock.o: lock.h bms.h futil.h nodes.o: bms.h xutil.h nodes.h mysql.h futil.o: bms.h futil.h diff -r 9e43b216ccd3 -r d25a1b160dba bmsd/bms.h --- a/bmsd/bms.h Sat Sep 14 10:41:35 2019 +0200 +++ b/bmsd/bms.h Fri Oct 18 13:12:46 2019 +0200 @@ -76,7 +76,7 @@ /** - * @brief Structure for the nodes. Database table 'nodes'. + * @brief Structure for the nodes. Database table 'mon_nodes'. */ typedef struct _sys_node_list { struct _sys_node_list *next; @@ -151,7 +151,7 @@ /** - * @brief Structure for the fermenters. Stored in database table 'fermenters'. + * @brief Structure for the fermenters. Stored in database table 'mon_fermenters'. */ typedef struct _fermenter_list { struct _fermenter_list *next; @@ -249,6 +249,49 @@ /** + * @brief Structure for the co2meters. Stored in database table 'mon_co2meters'. + */ +typedef struct _co2meter_list { + struct _co2meter_list *next; + char *uuid; ///< Fixed uuid string + char *alias; ///< Fixed short name + char *node; ///< Fixed node name + bool online; ///< Online status + char *mode; ///< Working mode + uint32_t alarm; ///< Alarm bits + char *beercode; ///< Beer unique code + char *beername; ///< Beer name in fermenter + char *beeruuid; ///< Beer uuid in fermenter + char *temperature_state; ///< Temperature sensor state + char *temperature_address; ///< Temperature sensor address + float temperature; ///< Temperature value + char *pressure_state; ///< Pressure sensor state + uint8_t pressure_channel; ///< Pressure sensor channel + float pressure_voltage; ///< Pressure voltage reading + float pressure_zero; ///< Pressure zero offset voltage + float pressure_bar; ///< Pressure in bar +} sys_co2meter_list; + + + +/** + * @brief Strcuture holding a co2 pressure log entry. + */ +typedef struct co2meter_log { + char *datetime; ///< Date/time stamp + char *product_uuid; ///< Product uuid + char *product_code; ///< Product code + char *product_name; ///< Product name + float temperature; ///< Temperature + float pressure; ///< Pressure + char *uuid; ///< Unit uuid + char *node; ///< Unit node + char *alias; ///< Unit alias +} co2pressure_log; + + + +/** * @brief Brew computer controllers. Must have hardware + installation + recipe data. */ typedef struct _brewer_list { diff -r 9e43b216ccd3 -r d25a1b160dba bmsd/co2meters.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bmsd/co2meters.c Fri Oct 18 13:12:46 2019 +0200 @@ -0,0 +1,350 @@ +/** + * @file co2meters.c + * @brief Handle co2meters status + * @author Michiel Broek + * + * Copyright (C) 2019 + * + * This file is part of the bms (Brewery Management System) + * + * 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. + * + * bms 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. + */ + + +#include "bms.h" +#include "xutil.h" +#include "co2meters.h" +#include "mysql.h" + + +sys_co2meter_list *co2meters = NULL; + +extern int debug; +extern sys_config Config; +extern MYSQL *con; +extern MYSQL_RES *res_set; +extern MYSQL_ROW row; + + + +void co2meter_set(char *edge_node, char *alias, char *payload) +{ + struct json_object *jobj, *val, *sensor; + sys_co2meter_list *co2meter, *tmpp; + bool new_co2meter = true; + +// fprintf(stdout, "co2meter_set: %s/%s %s\n", edge_node, alias, payload); + + /* + * Search co2meter record in the memory array and use it if found. + */ + if (co2meters) { + for (tmpp = co2meters; tmpp; tmpp = tmpp->next) { + if ((strcmp(tmpp->alias, alias) == 0) && (strcmp(tmpp->node, edge_node) == 0)) { + new_co2meter = false; + co2meter = tmpp; + break; + } + } + } + +// printf("new_co2meter %s\n", new_co2meter ? "true":"false"); + + /* + * Allocate new co2meter if not yet known. + */ + if (new_co2meter) { + co2meter = (sys_co2meter_list *)malloc(sizeof(sys_co2meter_list)); + memset(co2meter, 0, sizeof(sys_co2meter_list)); + co2meter->alias = xstrcpy(alias); + co2meter->node = xstrcpy(edge_node); + co2meter->mode = xstrcpy((char *)"OFF"); + } + + if (! co2meter->online) { + co2meter->online = true; + syslog(LOG_NOTICE, "Online co2meter %s/%s mode %s", edge_node, alias, co2meter->mode); + } + + /* + * Process the JSON formatted payload. + * Update only the fields that are found in the payload. + */ + jobj = json_tokener_parse(payload); + + if (json_object_object_get_ex(jobj, "uuid", &val)) { + if (co2meter->uuid) + free(co2meter->uuid); + co2meter->uuid = xstrcpy((char *)json_object_get_string(val)); + } + if (json_object_object_get_ex(jobj, "mode", &val)) { + if (co2meter->mode) { + if (strcmp(co2meter->mode, (char *)json_object_get_string(val))) { + syslog(LOG_NOTICE, "Change mode co2meter %s/%s: %s to %s", edge_node, alias, co2meter->mode, (char *)json_object_get_string(val)); + } + free(co2meter->mode); + } + co2meter->mode = xstrcpy((char *)json_object_get_string(val)); + } + if (json_object_object_get_ex(jobj, "alarm", &val)) { + co2meter->alarm = json_object_get_int(val); + } + if (json_object_object_get_ex(jobj, "temperature", &sensor)) { + if (json_object_object_get_ex(sensor, "address", &val)) { + if (co2meter->temperature_address) + free(co2meter->temperature_address); + co2meter->temperature_address = xstrcpy((char *)json_object_get_string(val)); + } + if (json_object_object_get_ex(sensor, "state", &val)) { + if (co2meter->temperature_state) + free(co2meter->temperature_state); + co2meter->temperature_state = xstrcpy((char *)json_object_get_string(val)); + } + if (json_object_object_get_ex(sensor, "temperature", &val)) { + co2meter->temperature = json_object_get_double(val); + } + } + if (json_object_object_get_ex(jobj, "pressure", &sensor)) { + if (json_object_object_get_ex(sensor, "state", &val)) { + if (co2meter->pressure_state) + free(co2meter->pressure_state); + co2meter->pressure_state = xstrcpy((char *)json_object_get_string(val)); + } + if (json_object_object_get_ex(sensor, "channel", &val)) { + co2meter->pressure_channel = json_object_get_int(val); + } + if (json_object_object_get_ex(sensor, "voltage", &val)) { + co2meter->pressure_voltage = json_object_get_double(val); + } + if (json_object_object_get_ex(sensor, "zero", &val)) { + co2meter->pressure_zero = json_object_get_double(val); + } + if (json_object_object_get_ex(sensor, "bar", &val)) { + co2meter->pressure_bar = json_object_get_double(val); + } + } + json_object_put(jobj); + +// co2meter_dump(co2meter); + + if (new_co2meter) { + if (co2meters == NULL) { + co2meters = co2meter; + } else { + for (tmpp = co2meters; tmpp; tmpp = tmpp->next) { + if (tmpp->next == NULL) { + tmpp->next = co2meter; + break; + } + } + } + co2meter_mysql_insert(co2meter); + } else { + co2meter_mysql_update(co2meter); + } + +} + + + +/* + * With DBIRTH all active co2meters are publishd in an array. + */ +void co2meter_birth_data(char *topic, char *payload) +{ + char *message_type, *edge_node, *alias; + struct json_object *jobj, *val, *metric, *units, *unit; + int arraylen; + + strtok(topic, "/"); // ignore namespace + strtok(NULL, "/"); + message_type = strtok(NULL, "/"); + edge_node = strtok(NULL, "/\0"); + alias = strtok(NULL, "/\0"); + + if ((alias == NULL) && (strcmp("DBIRTH", message_type) == 0)) { + /* + * Global initial DBIRTH message with array of co2meters. + */ + jobj = json_tokener_parse(payload); + + if (json_object_object_get_ex(jobj, "metric", &metric)) { + if (json_object_object_get_ex(metric, "units", &units)) { + arraylen = json_object_array_length(units); + for (int i = 0; i < arraylen; i++) { + /* + * Parse the array of units + */ + unit = json_object_array_get_idx(units, i); + + if (json_object_object_get_ex(unit, "alias", &val)) { + if (alias) + free(alias); + alias = xstrcpy((char *)json_object_get_string(val)); + co2meter_set(edge_node, alias, (char *)json_object_to_json_string_ext(unit, 0)); + free(alias); + alias = NULL; + } + } + } + } + json_object_put(jobj); + return; + } + + /* + * The rest are errors. + */ + printf("ERROR co2meter_birth_data: %s %s %s\n", message_type, edge_node, alias); +} + + + +void co2meter_log(char *topic, char *payload) +{ + char *edge_node, *alias, *line, buf[128], *logfile; + struct json_object *jobj, *val, *metric; + co2pressure_log *log; + struct tm *mytime; + time_t timestamp; + FILE *fp; + + strtok(topic, "/"); // ignore namespace + strtok(NULL, "/"); // group_id + strtok(NULL, "/"); // message_type + edge_node = strtok(NULL, "/\0"); + alias = strtok(NULL, "/\0"); + + log = (co2pressure_log *)malloc(sizeof(co2pressure_log)); + memset(log, 0, sizeof(co2pressure_log)); + + log->node = xstrcpy(edge_node); + log->alias = xstrcpy(alias); + jobj = json_tokener_parse(payload); + + timestamp = time(NULL); + log->datetime = malloc(21); + mytime = localtime(×tamp); + snprintf(log->datetime, 20, "%04d-%02d-%02d %02d:%02d:%02d", + mytime->tm_year + 1900, mytime->tm_mon + 1, mytime->tm_mday, mytime->tm_hour, mytime->tm_min, mytime->tm_sec); + + if (json_object_object_get_ex(jobj, "metric", &metric)) { + if (json_object_object_get_ex(metric, "uuid", &val)) { + if (strcmp((char *)"(null)", json_object_get_string(val))) + log->uuid = xstrcpy((char *)json_object_get_string(val)); + } + if (json_object_object_get_ex(metric, "temperature", &val)) { + log->temperature = json_object_get_double(val); + } + if (json_object_object_get_ex(metric, "pressure", &val)) { + log->pressure = json_object_get_double(val); + } + } + json_object_put(jobj); + + /* + * Because co2meters are not so smart and don't hold product information + * search the missing pieces in the database. + */ + snprintf(buf, 127, "SELECT beercode,beername,beeruuid FROM mon_co2meters WHERE uuid='%s'", log->uuid); + if (mysql_query(con, buf)) { + syslog(LOG_NOTICE, "MySQL: %s error %u (%s))", buf, mysql_errno(con), mysql_error(con)); + } else { + res_set = mysql_store_result(con); + if (res_set == NULL) { + syslog(LOG_NOTICE, "MySQL: mysq_store_result error %u (%s))", mysql_errno(con), mysql_error(con)); + } else { + if ((row = mysql_fetch_row(res_set)) != NULL) { + log->product_code = xstrcpy(row[0]); + log->product_name = xstrcpy(row[1]); + log->product_uuid = xstrcpy(row[2]); + } + } + } + + /* + * Build csv log line + */ + line = xstrcpy(log->datetime); + line = xstrcat(line, (char *)","); + snprintf(buf, 64, "%.3f", log->temperature); + line = xstrcat(line, buf); + line = xstrcat(line, (char *)","); + snprintf(buf, 64, "%.3f", log->pressure); + line = xstrcat(line, buf); + line = xstrcat(line, (char *)","); + line = xstrcat(line, log->uuid); + + /* + * Build logfile name + */ + logfile = xstrcpy(Config.web_root); + logfile = xstrcat(logfile, (char *)"/log/co2pressure/"); + logfile = xstrcat(logfile, log->product_code); + logfile = xstrcat(logfile, (char *)" "); + logfile = xstrcat(logfile, log->product_name); + logfile = xstrcat(logfile, (char *)".log"); + + if (debug) + fprintf(stdout, "%s %s\n", logfile, line); + + fp = fopen(logfile, "a"); + if (fp) { + fprintf(fp, "%s\n", line); + fclose(fp); + } else { + syslog(LOG_NOTICE, "cannot append to `%s'", logfile); + } + + free(logfile); + logfile = NULL; + free(line); + line = NULL; + + if (log->datetime) + free(log->datetime); + if (log->product_uuid ) + free(log->product_uuid ); + if (log->product_code ) + free(log->product_code ); + if (log->product_name ) + free(log->product_name ); + if (log->uuid) + free(log->uuid); + if (log->node) + free(log->node); + if (log->alias) + free(log->alias); + free(log); +} + + + +void co2meter_dump(sys_co2meter_list *co2meter) +{ + if (debug) { + printf("uuid %s\n", co2meter->uuid); + printf("alias %s\n", co2meter->alias); + printf("node %s\n", co2meter->node); + printf("online %s\n", co2meter->online ? "yes":"no"); + printf("product %s / %s\n", co2meter->beercode, co2meter->beername); + printf("Temperature %-16s %10s %8.3f\n", co2meter->temperature_address, co2meter->temperature_state, co2meter->temperature); + printf("Pressure %10s %d %.3f %.3f %.3f\n", co2meter->pressure_state, co2meter->pressure_channel, + co2meter->pressure_voltage, co2meter->pressure_zero, co2meter->pressure_bar); + printf("mode %s\n", co2meter->mode); + } +} + + diff -r 9e43b216ccd3 -r d25a1b160dba bmsd/co2meters.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bmsd/co2meters.h Fri Oct 18 13:12:46 2019 +0200 @@ -0,0 +1,26 @@ +/** + * @file co2meters.h + */ + +#ifndef _CO2METERS_H +#define _CO2METERS_H + +void co2meter_dump(sys_co2meter_list *co2meter); + +/** + * @brief Birth of a co2meter or data update. Create it in the database if + * never seen before, else just update the database entry. + * @param topic The MQTT topic string, contains the co2meter type and name. + * @param payload The JSON formatted payload with the co2meter details. + */ +void co2meter_birth_data(char *topic, char *payload); + +/** + * @brief Data logging from co2meters. + * @param topic The MQTT topic string, contains the co2meter type and name. + * @param payload The JSON formatted payload with the co2meter details. + */ +void co2meter_log(char *topic, char *payload); + + +#endif diff -r 9e43b216ccd3 -r d25a1b160dba bmsd/mqtt.c --- a/bmsd/mqtt.c Sat Sep 14 10:41:35 2019 +0200 +++ b/bmsd/mqtt.c Fri Oct 18 13:12:46 2019 +0200 @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (C) 2017-2018 + * Copyright (C) 2017-2019 * * Michiel Broek * @@ -25,6 +25,7 @@ #include "mqtt.h" #include "nodes.h" #include "fermenters.h" +#include "co2meters.h" extern sys_config Config; @@ -95,10 +96,10 @@ topic = xstrcat(topic, (char *)"/#"); mosquitto_subscribe(mosq, NULL, topic, 0); free(topic); - topic = xstrcpy((char *)"mbv1.0/fermenters/#"); // Subscribe to fermenter messages. + topic = xstrcpy((char *)"mbv1.0/fermenters/#"); // Subscribe to fermenter messages. mosquitto_subscribe(mosq, NULL, topic, 0); free(topic); - topic = xstrcpy((char *)"mbv1.0/brewcontrol/#"); // Subscribe to brewcontrol messages. + topic = xstrcpy((char *)"mbv1.0/co2meters/#"); // Subscribe to co2meter messages. mosquitto_subscribe(mosq, NULL, topic, 0); free(topic); topic = NULL; @@ -170,6 +171,14 @@ fermenter_log(message->topic, (char *)message->payload); return; } + if (strstr(message->topic, (char *)"co2meters") && strstr(message->topic, (char *)"DBIRTH")) { + co2meter_birth_data(message->topic, (char *)message->payload); + return; + } + if (strstr(message->topic, (char *)"co2meters") && strstr(message->topic, (char *)"DLOG")) { + co2meter_log(message->topic, (char *)message->payload); + return; + } syslog(LOG_NOTICE, "MQTT: message callback %s :: %d", message->topic, message->payloadlen); } else { if (strstr(message->topic, (char *)"NBIRTH")) { diff -r 9e43b216ccd3 -r d25a1b160dba bmsd/mysql.c --- a/bmsd/mysql.c Sat Sep 14 10:41:35 2019 +0200 +++ b/bmsd/mysql.c Fri Oct 18 13:12:46 2019 +0200 @@ -35,6 +35,7 @@ extern sys_config Config; extern sys_node_list *nodes; extern sys_fermenter_list *fermenters; +extern sys_co2meter_list *co2meters; extern int debug; @@ -60,7 +61,8 @@ { sys_node_list *node, *tmpp; sys_fermenter_list *fermenter, *tmpf; - int ncnt = 0, fcnt = 0; + sys_co2meter_list *co2meter, *tmpc; + int ccnt = 0, ncnt = 0, fcnt = 0; con = mysql_init(NULL); if (con == NULL) { @@ -226,7 +228,51 @@ } } - syslog(LOG_NOTICE, "MySQL: loaded %d nodes, %d fermenters", ncnt, fcnt); + if (mysql_query(con, "SELECT * FROM mon_co2meters")) { + syslog(LOG_NOTICE, "MySQL: SELECT * FROM mon_co2meters error %u (%s))", mysql_errno(con), mysql_error(con)); + } else { + res_set = mysql_store_result(con); + if (res_set == NULL) { + syslog(LOG_NOTICE, "MySQL: mysq_store_result error %u (%s))", mysql_errno(con), mysql_error(con)); + } else { + while ((row = mysql_fetch_row(res_set)) != NULL) { + co2meter = (sys_co2meter_list *)malloc(sizeof(sys_co2meter_list)); + memset(co2meter, 0, sizeof(sys_co2meter_list)); + co2meter->next = NULL; + co2meter->uuid = xstrcpy(row[1]); + co2meter->alias = xstrcpy(row[2]); + co2meter->node = xstrcpy(row[3]); + co2meter->online = 0; // Will be set later + co2meter->beercode = xstrcpy(row[5]); + co2meter->beername = xstrcpy(row[6]); + co2meter->beeruuid = xstrcpy(row[7]); + co2meter->mode = xstrcpy(row[8]); + co2meter->temperature_state = xstrcpy(row[9]); + co2meter->temperature_address = xstrcpy(row[10]); + co2meter->temperature = atof(row[11]); + co2meter->pressure_state = xstrcpy(row[12]); + co2meter->pressure_channel = atoi(row[13]); + co2meter->pressure_voltage = atof(row[14]); + co2meter->pressure_zero = atof(row[15]); + co2meter->pressure_bar = atof(row[16]); + + if (co2meters == NULL) { + co2meters = co2meter; + } else { + for (tmpc = co2meters; tmpc; tmpc = tmpc->next) { + if (tmpc->next == NULL) { + tmpc->next = co2meter; + break; + } + } + } + ccnt++; + } + mysql_free_result(res_set); + } + } + + syslog(LOG_NOTICE, "MySQL: loaded %d nodes, %d fermenters, %d co2meters", ncnt, fcnt, ccnt); return 0; } @@ -234,6 +280,7 @@ void bms_mysql_end(void) { + sys_co2meter_list *tmpp, *oldtmpp; sys_fermenter_list *tmpf, *oldtmpf; sys_node_list *tmpn, *oldtmpn; @@ -243,6 +290,28 @@ if (debug) fprintf(stdout, "MySQL: disconnected\n"); + for (tmpp = co2meters; tmpp; tmpp = oldtmpp) { + oldtmpp = tmpp->next; + if (tmpp->uuid) + free(tmpp->uuid); + if (tmpp->alias) + free(tmpp->alias); + if (tmpp->node) + free(tmpp->node); + if (tmpp->beercode) + free(tmpp->beercode); + if (tmpp->beername) + free(tmpp->beername); + if (tmpp->beeruuid) + free(tmpp->beeruuid); + if (tmpp->temperature_address) + free(tmpp->temperature_address); + if (tmpp->temperature_state) + free(tmpp->temperature_state); + if (tmpp->pressure_state) + free(tmpp->pressure_state); + free(tmpp); + } for (tmpf = fermenters; tmpf; tmpf = oldtmpf) { oldtmpf = tmpf->next; if (tmpf->uuid) @@ -531,3 +600,58 @@ } + +void co2meter_mysql_insert(sys_co2meter_list *co2meter) +{ + char *query = malloc(2560); + + snprintf(query, 2559, + "INSERT INTO mon_co2meters SET uuid='%s', alias='%s', node='%s', online='%d', mode='%s', alarm='%d', " \ + "temperature_address='%s', temperature_state='%s', temperature='%.3f', " \ + "pressure_state='%s', pressure_channel='%d', pressure_voltage='%.3f', pressure_zero='%.3f', pressure_bar='%.3f'", + co2meter->uuid, co2meter->alias, co2meter->node, co2meter->online ? 1:0, co2meter->mode, co2meter->alarm, + co2meter->temperature_address, co2meter->temperature_state, co2meter->temperature, + co2meter->pressure_state, co2meter->pressure_channel, co2meter->pressure_voltage, co2meter->pressure_zero, co2meter->pressure_bar); + + if (bms_mysql_query(query) == 0) { + syslog(LOG_NOTICE, "MySQL: insert new co2meter %s/%s", co2meter->node, co2meter->alias); + } + free(query); +} + + + +void co2meter_mysql_update(sys_co2meter_list *co2meter) +{ + char *query = malloc(2560); + + snprintf(query, 2559, + "UPDATE mon_co2meters SET online='%d', mode='%s', alarm='%d', " \ + "temperature_address='%s', temperature_state='%s', temperature='%.3f', " \ + "pressure_state='%s', pressure_channel='%d', pressure_voltage='%.3f', pressure_zero='%.3f', pressure_bar='%.3f' " \ + "WHERE uuid='%s'", + co2meter->online ? 1:0, co2meter->mode, co2meter->alarm, + co2meter->temperature_address, co2meter->temperature_state, co2meter->temperature, + co2meter->pressure_state, co2meter->pressure_channel, co2meter->pressure_voltage, co2meter->pressure_zero, co2meter->pressure_bar, + co2meter->uuid); + + bms_mysql_query(query); + free(query); +} + + + +void co2meter_mysql_death(char *node, char *alias) +{ + char *query = malloc(512); + + if (alias) + snprintf(query, 511, "UPDATE mon_co2meters SET online='0' WHERE node='%s' and alias='%s'", node, alias); + else + snprintf(query, 511, "UPDATE mon_co2meters SET online='0' WHERE node='%s'", node); + + bms_mysql_query(query); + free(query); +} + + diff -r 9e43b216ccd3 -r d25a1b160dba bmsd/mysql.h --- a/bmsd/mysql.h Sat Sep 14 10:41:35 2019 +0200 +++ b/bmsd/mysql.h Fri Oct 18 13:12:46 2019 +0200 @@ -37,5 +37,9 @@ void fermenter_mysql_update(sys_fermenter_list *fermenter); void fermenter_mysql_death(char *node, char *alias); +void co2meter_mysql_insert(sys_co2meter_list *co2meter); +void co2meter_mysql_update(sys_co2meter_list *co2meter); +void co2meter_mysql_death(char *node, char *alias); + #endif diff -r 9e43b216ccd3 -r d25a1b160dba bmsd/nodes.c --- a/bmsd/nodes.c Sat Sep 14 10:41:35 2019 +0200 +++ b/bmsd/nodes.c Fri Oct 18 13:12:46 2019 +0200 @@ -3,7 +3,7 @@ * @brief Handle nodes status * @author Michiel Broek * - * Copyright (C) 2018 + * Copyright (C) 2018-2019 * * This file is part of the bms (Brewery Management System) * @@ -33,6 +33,8 @@ extern int debug; extern sys_fermenter_list *fermenters; +extern sys_co2meter_list *co2meters; + void node_birth_data(char *topic, char *payload) @@ -244,6 +246,7 @@ { sys_node_list *tmpn; sys_fermenter_list *tmpf; + sys_co2meter_list *tmpc; time_t now = time(NULL); for (tmpn = nodes; tmpn; tmpn = tmpn->next) { @@ -261,6 +264,16 @@ } } } + + for (tmpc = co2meters; tmpc; tmpc = tmpc->next) { + if (strcmp(tmpc->node, tmpn->node) == 0) { + if (tmpc->online) { + syslog(LOG_NOTICE, "Timeout co2meter %s/%s", tmpc->node, tmpc->alias); + tmpc->online = false; + co2meter_mysql_death(tmpc->node, tmpc->alias); + } + } + } } } } diff -r 9e43b216ccd3 -r d25a1b160dba config.status diff -r 9e43b216ccd3 -r d25a1b160dba configure diff -r 9e43b216ccd3 -r d25a1b160dba configure.ac --- a/configure.ac Sat Sep 14 10:41:35 2019 +0200 +++ b/configure.ac Fri Oct 18 13:12:46 2019 +0200 @@ -8,7 +8,7 @@ dnl General settings dnl After changeing the version number, run autoconf! PACKAGE="bms" -VERSION="0.4.8" +VERSION="0.4.9" COPYRIGHT="Copyright (C) 2016-2019 Michiel Broek, All Rights Reserved" CYEARS="2016-2019" AC_SUBST(PACKAGE) diff -r 9e43b216ccd3 -r d25a1b160dba doc/bms-ch8.sgml --- a/doc/bms-ch8.sgml Sat Sep 14 10:41:35 2019 +0200 +++ b/doc/bms-ch8.sgml Fri Oct 18 13:12:46 2019 +0200 @@ -30,11 +30,9 @@ De volgende group_id namen zijn gedefinieerd: -brewery is voor de bms applicatie zelf. Nog uitwerken. -fermenters is voor vergisting controllers. -brewcontrol is een brouw controller. Deze controller kan een deel -of geheel brouwproces uitvoeren. -pressure is een drukmeter om bijvoorbeeld hergisting op de fles +brewery is voor de bms applicatie zelf. Nog uitwerken. +fermenters is voor vergisting controllers. +co2meters is een drukmeter om bijvoorbeeld hergisting op de fles te monitoren. @@ -79,10 +77,11 @@ Netwerk payload formaat voor een node De payload zoals die door een node verstuurd wordt. Het wordt in json formaat -verzonder zonder extra spaties en opmaak zoals hieronder is te zien. Het timestamp -is de unix tijd sinds 1 januari 1970. Het `seq' nummer wordt met ieder bericht met 1 -verhoogd. - +verzonden zonder extra spaties en opmaak zoals hieronder is te zien. Het timestamp +is de unix tijd sinds 1 januari 1970. Niet alle controllers sturen een timestamp, +controllers zonder klok laten dit weg. De tijd wordt dan door bmsd +ingevuld en is de tijd dat het bericht ontvangen wordt. +Het `seq' nummer wordt met ieder bericht met 1 verhoogd. { "timestamp": 1532201089, @@ -319,25 +318,52 @@ De bestandsnamen zijn product_code\ product_name.log. Het interne formaat is: - 2014-11-15 18:39,BEER,PRIMARY,20.312,19.750,-1.500,20.5,18.6,18.8,35,12345,0,67890,Whatsup,Fermenter - | | | | | | | | | | | | | | | - 0 datetime + | | | | | | | | | | | | | | - 1 werkwijze ---------+ | | | | | | | | | | | | | - 2 vergisting fase ---------+ | | | | | | | | | | | | - 3 temperatuur lucht --------------+ | | | | | | | | | | | - 4 temperatuur bier ----------------------+ | | | | | | | | | | - 5 temperatuur koeler ---------------------------+ | | | | | | | | | - 6 temperatuur ruimte ----------------------------------+ | | | | | | | | - 7 instelwaarde laag ----------------------------------------+ | | | | | | | - 8 instelwaarde hoog ---------------------------------------------+ | | | | | | - 9 verwarming vermogen -----------------------------------------------+ | | | | | -10 verwarming verbruik ---------------------------------------------------+ | | | | -11 koeler vermogen -----------------------------------------------------------+ | | | -12 koeler verbruik ---------------------------------------------------------------+ | | -13 gebeurtenis --------------------------------------------------------------------------+ | -14 vergister uuid --------------------------------------------------------------------------------+ + 2014-11-15 18:39:12,BEER,PRIMARY,20.312,19.750,-1.500,20.5,18.6,18.8,35,12345,0,67890,Whatsup,Fermenter + | | | | | | | | | | | | | | | + 0 datetime + | | | | | | | | | | | | | | + 1 werkwijze ------------+ | | | | | | | | | | | | | + 2 vergisting fase ------------+ | | | | | | | | | | | | + 3 temperatuur lucht -----------------+ | | | | | | | | | | | + 4 temperatuur bier -------------------------+ | | | | | | | | | | + 5 temperatuur koeler ------------------------------+ | | | | | | | | | + 6 temperatuur ruimte -------------------------------------+ | | | | | | | | + 7 instelwaarde laag -------------------------------------------+ | | | | | | | + 8 instelwaarde hoog ------------------------------------------------+ | | | | | | + 9 verwarming vermogen --------------------------------------------------+ | | | | | +10 verwarming verbruik ------------------------------------------------------+ | | | | +11 koeler vermogen --------------------------------------------------------------+ | | | +12 koeler verbruik ------------------------------------------------------------------+ | | +13 gebeurtenis -----------------------------------------------------------------------------+ | +14 vergister uuid -----------------------------------------------------------------------------------+ + +Netwerk payload log formaat voor CO2 meters. + +Voor iedere actieve CO2 meter wordt bij iedere systeemstart een logbericht +gestuurd. Dit is ongeveer iedere 5 minuten. Omdat de CO2 meters eenvoudige +controllers zijn is er geen tijd en product informatie beschikbaar. Deze +ontbrekende gegevens worden aangevuld door bmsd + + + + + +De ontvangen CO2 log gegevens worden niet opgeslagen in de SQL database +maar in platte tekst bestanden. Hierdoor is de gelogde informatie sneller toegankelijk. +Ieder brouw product heeft zijn eigen bestand. +De bestanden staan in www/logs/co2pressure/. +De bestandsnamen zijn product_code\ product_name.log. +Het interne formaat is: + + 2019-10-11 16:13:33,22.250,5.964,c0ffeeee-dead-beef-caf0-3c71bffe4054 + | | | | + 0 datetime + | | | + 1 temperatuur ----------+ | | + 2 CO2 flesdruk in bar ---------+ | + 3 meter uuid -------------------------------------+ + + diff -r 9e43b216ccd3 -r d25a1b160dba www/Makefile --- a/www/Makefile Sat Sep 14 10:41:35 2019 +0200 +++ b/www/Makefile Fri Oct 18 13:12:46 2019 +0200 @@ -3,16 +3,17 @@ include ../Makefile.global -SRC = cmd_fermenter.php config.php.dist crontasks.php favicon.ico gen_about.php \ - getbrewlog.php getfermentablesources.php getfermenter.php getfermentlog.php \ - gethopsources.php getmiscsources.php getnode.php getwatersources.php \ - getyeastsources.php import_ingredients.php index.php \ +SRC = cmd_fermenter.php cmd_co2meter.php \ + config.php.dist crontasks.php favicon.ico gen_about.php \ + getbrewlog.php getco2meter.php getco2pressurelog.php getfermentablesources.php \ + getfermenter.php getfermentlog.php gethopsources.php getmiscsources.php getnode.php \ + getwatersources.php getyeastsources.php import_ingredients.php index.php \ inv_equipments.php inv_fermentables.php inv_hops.php inv_instock.php \ inv_miscs.php inv_suppliers.php inv_waters.php inv_yeasts.php \ - log_brew.php log_fermentation.php \ - mon_brewer.php mon_fermenter.php mon_node.php \ + log_brew.php log_co2pressure.php log_fermentation.php \ + mon_brewer.php mon_co2meter.php mon_fermenter.php mon_node.php \ prod_archive_code.php prod_archive_date.php prod_archive_name.php prod_beerxml.php \ - prod_checklist.php prod_duplicate.php prod_edit.php prod_export.php prod_forum.php \ + prod_checklist.php prod_divide.php prod_duplicate.php prod_edit.php prod_export.php prod_forum.php \ prod_impbrew.php prod_inprod.php prod_new.php prod_print.php prod_torecipe.php \ prod_r_efficiency.php prod_r_yeast.php prod_r_totals.php \ profile_fermentation.php profile_mash.php profile_setup.php profile_styles.php \ diff -r 9e43b216ccd3 -r d25a1b160dba www/cmd_co2meter.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/cmd_co2meter.php Fri Oct 18 13:12:46 2019 +0200 @@ -0,0 +1,24 @@ + diff -r 9e43b216ccd3 -r d25a1b160dba www/css/style-min.css --- a/www/css/style-min.css Sat Sep 14 10:41:35 2019 +0200 +++ b/www/css/style-min.css Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -body{background:#ccc;font-family:Verdana,Arial,sans-serif;margin:0}#MainPanel,#fermenter{width:1278px;height:628px;border:2px solid #4297d7;background:#252526;float:left;color:#eee}#water_totals{width:960px;background:#353536;margin-top:15px;border:1px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#propagator{width:800px;background:#353536;margin-top:15px;border:1px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#export_table,#about_table{width:960px;background:#353536;margin:150px;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#node_table{width:600px;background:#353536;margin:50px;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_table{width:960px;height:210px;background:#252526;margin:5px;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}.ebccolor{float:left;margin-left:10px;width:75px;height:23px;border:1px solid #59b4d4;border-radius:6px;moz-border-radius:6px;webkit-border-radius:6px;background:#212121}#fermenter_thermometers{width:960px;height:390px;float:left;background-color:#252526;margin:5px;margin-top:3px;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_panel_top{width:290px;height:100px;float:right;margin:5px;background-color:#252526;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_doorled,#fermenter_lightled,#fermenter_alarmled,#fermenter_powerled{width:50px;height:30px;float:left;text-align:center;margin-top:15px;margin-left:20px}#fermenter_panel_display{width:290px;height:98px;float:right;margin:5px;margin-top:3px;background-color:#252526;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_display{width:145px;height:98px;float:left;text-align:center}#fermenter_panel_control{width:290px;height:150px;float:right;margin:5px;margin-top:3px;background-color:#252526;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_led1,#fermenter_led2,#fermenter_led3{width:96px;height:30px;float:left;text-align:center;margin-top:13px}#fermenter_toggle1{float:left;margin-left:29px;margin-top:20px}#fermenter_toggle2,#fermenter_toggle3{float:left;margin-left:60px;margin-top:20px}#fermenter_panel_buttons{width:290px;height:227px;float:right;margin:5px;margin-top:3px;background-color:#252526;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}.LEDred_on{margin:5px auto;width:18px;height:18px;background-color:#F40;border-radius:50%;box-shadow:#000 0 0 4px 1px,inset #C33 0 -1px 5px,#f44 0 2px 12px}.LEDred_off{margin:5px auto;width:18px;height:18px;background-color:#820;border-radius:50%;box-shadow:#400 0 0 1px 1px}.LEDyellow_on{margin:5px auto;width:18px;height:18px;background-color:#FF0;border-radius:50%;box-shadow:#000 0 0 4px 1px,inset #860 0 -1px 5px,#DD0 0 2px 12px}.LEDyellow_off{margin:5px auto;width:18px;height:18px;background-color:#A90;border-radius:50%;box-shadow:#440 0 0 1px 1px}.LEDgreen_on{margin:5px auto;width:18px;height:18px;background-color:#5E0;border-radius:50%;box-shadow:#000 0 0 4px 1px,inset #270 0 -1px 5px,#5D0 0 2px 12px}.LEDgreen_off{margin:5px auto;width:18px;height:18px;background-color:#270;border-radius:50%;box-shadow:#250 0 0 1px 1px}.LEDblue_on{margin:5px auto;width:18px;height:18px;background-color:#4AF;border-radius:50%;box-shadow:#000 0 0 4px 1px,inset #247 0 -1px 5px,#48F 0 2px 12px}.LEDblue_off{margin:5px auto;width:18px;height:18px;background-color:#137;border-radius:50%;box-shadow:#024 0 0 1px 1px}#hintBase,#hintStyle,#hintEq{float:left;margin-top:30px;margin-right:20px;padding:5px;width:600px;color:yellow}#section{margin:5px}#baseButtonsWrapper{float:right;margin-top:30px;margin-right:10px;width:160px}#styleButtonsWrapper{float:right;margin-top:30px;margin-right:10px;width:320px}#eqButtonsWrapper{float:right;margin-top:30px;margin-right:10px;width:320px}#completedButtonsWrapper{float:right;margin-right:10px;width:320px;margin-top:160px}.nextButton{float:right;margin-left:0}.backButton{float:left;margin-left:10px} \ No newline at end of file +body{background:#ccc;font-family:Verdana,Arial,sans-serif;margin:0}#MainPanel,#fermenter,#co2meter{width:1278px;height:628px;border:2px solid #4297d7;background:#252526;float:left;color:#eee}#water_totals{width:960px;background:#353536;margin-top:15px;border:1px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#propagator{width:800px;background:#353536;margin-top:15px;border:1px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#export_table,#about_table{width:960px;background:#353536;margin:150px;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#node_table{width:600px;background:#353536;margin:50px;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_table,#co2meter_table{width:960px;height:210px;background:#252526;margin:5px;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}.ebccolor{float:left;margin-left:10px;width:75px;height:23px;border:1px solid #59b4d4;border-radius:6px;moz-border-radius:6px;webkit-border-radius:6px;background:#212121}#fermenter_thermometers,#co2meter_meters{width:960px;height:390px;float:left;background-color:#252526;margin:5px;margin-top:3px;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_panel_top,#co2meter_panel_top{width:290px;height:100px;float:right;margin:5px;background-color:#252526;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_doorled,#fermenter_lightled,#fermenter_alarmled,#fermenter_powerled{width:50px;height:30px;float:left;text-align:center;margin-top:15px;margin-left:20px}#co2meter_alarmled,#co2meter_powerled{width:50px;height:30px;float:right;text-align:center;margin-top:15px;margin-right:20px}#co2meter_panel_display{width:290px;height:260px;float:right;margin:5px;margin-top:3px;background-color:#252526;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_panel_display{width:290px;height:98px;float:right;margin:5px;margin-top:3px;background-color:#252526;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_display{width:145px;height:98px;float:left;text-align:center}#fermenter_panel_control{width:290px;height:150px;float:right;margin:5px;margin-top:3px;background-color:#252526;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_led1,#fermenter_led2,#fermenter_led3{width:96px;height:30px;float:left;text-align:center;margin-top:13px}#fermenter_toggle1{float:left;margin-left:29px;margin-top:20px}#fermenter_toggle2,#fermenter_toggle3{float:left;margin-left:60px;margin-top:20px}#fermenter_panel_buttons,#co2meter_panel_buttons{width:290px;height:227px;float:right;margin:5px;margin-top:3px;background-color:#252526;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}.LEDred_on{margin:5px auto;width:18px;height:18px;background-color:#F40;border-radius:50%;box-shadow:#000 0 0 4px 1px,inset #C33 0 -1px 5px,#f44 0 2px 12px}.LEDred_off{margin:5px auto;width:18px;height:18px;background-color:#820;border-radius:50%;box-shadow:#400 0 0 1px 1px}.LEDyellow_on{margin:5px auto;width:18px;height:18px;background-color:#FF0;border-radius:50%;box-shadow:#000 0 0 4px 1px,inset #860 0 -1px 5px,#DD0 0 2px 12px}.LEDyellow_off{margin:5px auto;width:18px;height:18px;background-color:#A90;border-radius:50%;box-shadow:#440 0 0 1px 1px}.LEDgreen_on{margin:5px auto;width:18px;height:18px;background-color:#5E0;border-radius:50%;box-shadow:#000 0 0 4px 1px,inset #270 0 -1px 5px,#5D0 0 2px 12px}.LEDgreen_off{margin:5px auto;width:18px;height:18px;background-color:#270;border-radius:50%;box-shadow:#250 0 0 1px 1px}.LEDblue_on{margin:5px auto;width:18px;height:18px;background-color:#4AF;border-radius:50%;box-shadow:#000 0 0 4px 1px,inset #247 0 -1px 5px,#48F 0 2px 12px}.LEDblue_off{margin:5px auto;width:18px;height:18px;background-color:#137;border-radius:50%;box-shadow:#024 0 0 1px 1px}#hintBase,#hintStyle,#hintEq{float:left;margin-top:30px;margin-right:20px;padding:5px;width:600px;color:yellow}#section{margin:5px}#baseButtonsWrapper{float:right;margin-top:30px;margin-right:10px;width:160px}#styleButtonsWrapper{float:right;margin-top:30px;margin-right:10px;width:320px}#eqButtonsWrapper{float:right;margin-top:30px;margin-right:10px;width:320px}#completedButtonsWrapper{float:right;margin-right:10px;width:320px;margin-top:160px}.nextButton{float:right;margin-left:0}.backButton{float:left;margin-left:10px} \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/css/style.css --- a/www/css/style.css Sat Sep 14 10:41:35 2019 +0200 +++ b/www/css/style.css Fri Oct 18 13:12:46 2019 +0200 @@ -9,7 +9,8 @@ #MainPanel, -#fermenter { +#fermenter, +#co2meter { width: 1278px; height: 628px; border: 2px solid #4297d7; @@ -63,7 +64,8 @@ -#fermenter_table { +#fermenter_table, +#co2meter_table { width: 960px; height: 210px; background: #252526; @@ -88,13 +90,13 @@ /* - * +----------------------------------------------------_ + * +----------------------------------------------------+ * |+-------------------++--------++-------------------+| * || || || || * || || chiller|| || * || || || || - * || |+--------+| || - * || Air temp | | Beer temp || + * || Air temp |+--------+| Beer temp || + * || Temperature | | Pressure || * || | | || * || | | || * || | | || @@ -102,7 +104,8 @@ * +----------------------------------------------------+ */ -#fermenter_thermometers { +#fermenter_thermometers, +#co2meter_meters { width: 960px; height: 390px; float: left; @@ -136,7 +139,8 @@ * | | * +-------------------------------+ */ -#fermenter_panel_top { +#fermenter_panel_top, +#co2meter_panel_top { width: 290px; height: 100px; float: right; @@ -159,6 +163,27 @@ margin-left: 20px; } +#co2meter_alarmled, +#co2meter_powerled { + width: 50px; + height: 30px; + float: right; + text-align: center; + margin-top: 15px; + margin-right: 20px; +} + +#co2meter_panel_display { + width: 290px; + height: 260px; + float: right; + margin: 5px; + margin-top: 3px; + background-color: #252526; + border: 2px solid; + border-color: #59b4d4; + border-radius: 5px 5px 5px 5px; +} #fermenter_panel_display { width: 290px; @@ -215,7 +240,8 @@ } -#fermenter_panel_buttons { +#fermenter_panel_buttons, +#co2meter_panel_buttons { width: 290px; height: 227px; float: right; diff -r 9e43b216ccd3 -r d25a1b160dba www/getco2meter.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/getco2meter.php Fri Oct 18 13:12:46 2019 +0200 @@ -0,0 +1,16 @@ +query($query); +$resultArray = $result->fetch_array(MYSQLI_ASSOC); +header("Content-type: application/json"); +echo json_encode($resultArray); diff -r 9e43b216ccd3 -r d25a1b160dba www/getco2pressurelog.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/getco2pressurelog.php Fri Oct 18 13:12:46 2019 +0200 @@ -0,0 +1,97 @@ +seek(PHP_INT_MAX); +// $file->key() = lines in the file. + +define ('MAX_INTERVALS', 10); +$GRAPH_INTERVAL = array ( 0, 1, 5, 15, 30, 60, 120, 240, 480, 720 ); +$GRAPH_DATALINES = array ( 0, 800, 3200, 12000, 24000, 48000, 96000, 192000, 384000, 768000 ); + + +for ($graphstep = 1; $graphstep <= MAX_INTERVALS; $graphstep++) { + if ($file->key() < $GRAPH_DATALINES[$graphstep]) + break; +} +if ($graphstep > MAX_INTERVALS) + $graphstep = MAX_INTERVALS; + +//echo $code . '.log lines=' . $file->key() . ' interval=' . $GRAPH_INTERVAL[$graphstep] . ' graphstep=' . $graphstep . PHP_EOL; + +/* + * 2014-11-15 18:39:12,TEMPERATURE,PRESSURE,UUID + * | | | | + * datetime + | | | + * temperature ------------+ | | + * pressure --------------------------+ | + * unit uuid --------------------------------+ + */ + + +$handle = @fopen($filename, "r"); +if ($handle) { + $lines = 0; + while (($buffer = fgets($handle, 4096)) !== false) { + + $buffer = preg_replace( "/\r|\n/", "", $buffer); + $row = explode(",", $buffer); + + $hr = intval(substr($buffer, 11, 2)); + if ((($graphstep == 1)) || + (($graphstep == 2) && ((substr($buffer, 15, 1) == '0') || (substr($buffer, 15, 1) == '5'))) || + (($graphstep == 3) && ((substr($buffer, 14, 2) == '00') || (substr($buffer, 14, 2) == '15') || + (substr($buffer, 14, 2) == '30') || (substr($buffer, 14, 2) == '45'))) || + (($graphstep == 4) && ((substr($buffer, 14, 2) == '00') || (substr($buffer, 14, 2) == '30'))) || + (($graphstep == 5) && (substr($buffer, 14, 2) == '00')) || + (($graphstep == 6) && (substr($buffer, 14, 2) == '00') && (($hr % 2) == 0)) || + (($graphstep == 7) && (substr($buffer, 14, 2) == '00') && (($hr % 4) == 0)) || + (($graphstep == 8) && (substr($buffer, 14, 2) == '00') && (($hr % 8) == 0)) || + (($graphstep == 9) && (substr($buffer, 14, 2) == '00') && (($hr % 12) == 0))) { +// echo $hr . ' ' . $row[1] . ' ' . $buffer; + $lines++; + +// $heat_used = $cool_used = 0; +// if ($row[10] && ($row[10] != "NA") && ($heater_l > 0)) { +// $heat_used = round((intval($row[10]) - $heater_l) * 100 / ($GRAPH_INTERVAL[$graphstep] * 60)); +// } +// if ($row[12] && ($row[12] != "NA") && ($cooler_l > 0)) { +// $cool_used = round((intval($row[12]) - $cooler_l) * 100 / ($GRAPH_INTERVAL[$graphstep] * 60)); +// } + + +// echo $GRAPH_INTERVAL[$graphstep] . ' ' . $heat_used . ' ' . $cool_used . PHP_EOL; + +// if (($heat_used <= 100) && ($cool_used <= 100)) { + $logs[] = array( + 'date' => $row[0], + 'temperature' => $row[1], + 'pressure' => $row[2] + ); +// } + +// if ($row[10] && ($row[10] != "NA")) +// $heater_l = intval($row[10]); +// if ($row[12] && ($row[12] != "NA")) +// $cooler_l = intval($row[12]); + } + + } + if (!feof($handle)) { + echo "Error: unexpected fgets() fail\n"; + } + fclose($handle); +} +header("Content-type: application/json"); +echo json_encode($logs); +//echo $lines . ' lines' . PHP_EOL; diff -r 9e43b216ccd3 -r d25a1b160dba www/images/beerbottle.png Binary file www/images/beerbottle.png has changed diff -r 9e43b216ccd3 -r d25a1b160dba www/includes/constants.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/includes/constants.php Fri Oct 18 13:12:46 2019 +0200 @@ -0,0 +1,27 @@ + diff -r 9e43b216ccd3 -r d25a1b160dba www/includes/db_divides.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/includes/db_divides.php Fri Oct 18 13:12:46 2019 +0200 @@ -0,0 +1,78 @@ + $row['record'], + 'divide_from' => $row['divide_from'], + 'divide_type' => $row['divide_type'], + 'divide_size' => $row['divide_size'], + 'divide_part' => $row['divide_part'], + 'name' => $row['name'], + 'code' => $row['code'] + ); + } + header("Content-type: application/json"); + echo json_encode($divides); +} +?> diff -r 9e43b216ccd3 -r d25a1b160dba www/includes/db_inventory_fermentables.php --- a/www/includes/db_inventory_fermentables.php Sat Sep 14 10:41:35 2019 +0200 +++ b/www/includes/db_inventory_fermentables.php Fri Oct 18 13:12:46 2019 +0200 @@ -2,6 +2,7 @@ require($_SERVER['DOCUMENT_ROOT']."/config.php"); require($_SERVER['DOCUMENT_ROOT']."/version.php"); +require($_SERVER['DOCUMENT_ROOT']."/includes/constants.php"); #Connect to the database @@ -21,7 +22,7 @@ } $sql .= "name='" . mysqli_real_escape_string($connect, $_POST['name']); - $sql .= "', type='" . $_POST['type']; + $sql .= "', type='" . array_search($_POST['type'], $fermentabletype); $sql .= "', yield='" . $_POST['yield']; $sql .= "', color='" . $_POST['color']; ($_POST['add_after_boil'] == 'true') ? $sql .= "', add_after_boil='1" : $sql .= "', add_after_boil='0"; @@ -35,11 +36,11 @@ $sql .= "', dissolved_protein='" . $_POST['dissolved_protein']; $sql .= "', max_in_batch='" . $_POST['max_in_batch']; ($_POST['recommend_mash'] == 'true') ? $sql .= "', recommend_mash='1" : $sql .= "', recommend_mash='0"; - $sql .= "', added='" . $_POST['added']; + $sql .= "', added='" . array_search($_POST['added'], $added); ($_POST['always_on_stock'] == 'true') ? $sql .= "', always_on_stock='1" : $sql .= "', always_on_stock='0"; $sql .= "', di_ph='" . $_POST['di_ph']; $sql .= "', acid_to_ph_57='" . $_POST['acid_to_ph_57']; - $sql .= "', graintype='" . $_POST['graintype']; + $sql .= "', graintype='" . array_search($_POST['graintype'], $graintype); $sql .= "', inventory='" . $_POST['inventory']; $sql .= "', cost='" . $_POST['cost'] . "'"; if ($_POST['production_date'] == '') @@ -90,7 +91,7 @@ $fermentables[] = array( 'record' => $row['record'], 'name' => $row['name'], - 'type' => $row['type'], + 'type' => $fermentabletype[$row['type']], 'yield' => $row['yield'], 'color' => $row['color'], 'add_after_boil' => $row['add_after_boil'], @@ -104,11 +105,11 @@ 'dissolved_protein' => $row['dissolved_protein'], 'max_in_batch' => $row['max_in_batch'], 'recommend_mash' => $row['recommend_mash'], - 'added' => $row['added'], + 'added' => $added[$row['added']], 'always_on_stock' => $row['always_on_stock'], 'di_ph' => $row['di_ph'], 'acid_to_ph_57' => $row['acid_to_ph_57'], - 'graintype' => $row['graintype'], + 'graintype' => $graintype[$row['graintype']], 'inventory' => $row['inventory'], 'cost' => $row['cost'], 'production_date' => $row['production_date'], diff -r 9e43b216ccd3 -r d25a1b160dba www/includes/db_inventory_hops.php --- a/www/includes/db_inventory_hops.php Sat Sep 14 10:41:35 2019 +0200 +++ b/www/includes/db_inventory_hops.php Fri Oct 18 13:12:46 2019 +0200 @@ -2,6 +2,7 @@ require($_SERVER['DOCUMENT_ROOT']."/config.php"); require($_SERVER['DOCUMENT_ROOT']."/version.php"); +require($_SERVER['DOCUMENT_ROOT']."/includes/constants.php"); #Connect to the database @@ -27,8 +28,8 @@ $sql .= "', cohumulone='" . $_POST['cohumulone']; $sql .= "', myrcene='" . $_POST['myrcene']; $sql .= "', hsi='" . $_POST['hsi']; - $sql .= "', type='" . $_POST['type']; - $sql .= "', form='" . $_POST['form']; + $sql .= "', type='" . array_search($_POST['type'], $hoptype); + $sql .= "', form='" . array_search($_POST['form'], $hopform); $sql .= "', notes='" . mysqli_real_escape_string($connect, $_POST['notes']); $sql .= "', origin='" . mysqli_real_escape_string($connect, $_POST['origin']); $sql .= "', substitutes='" . mysqli_real_escape_string($connect, $_POST['substitutes']); @@ -91,8 +92,8 @@ 'cohumulone' => $row['cohumulone'], 'myrcene' => $row['myrcene'], 'hsi' => $row['hsi'], - 'type' => $row['type'], - 'form' => $row['form'], + 'type' => $hoptype[$row['type']], + 'form' => $hopform[$row['form']], 'notes' => $row['notes'], 'origin' => $row['origin'], 'substitutes' => $row['substitutes'], diff -r 9e43b216ccd3 -r d25a1b160dba www/includes/db_inventory_miscs.php --- a/www/includes/db_inventory_miscs.php Sat Sep 14 10:41:35 2019 +0200 +++ b/www/includes/db_inventory_miscs.php Fri Oct 18 13:12:46 2019 +0200 @@ -2,6 +2,7 @@ require($_SERVER['DOCUMENT_ROOT']."/config.php"); require($_SERVER['DOCUMENT_ROOT']."/version.php"); +require($_SERVER['DOCUMENT_ROOT']."/includes/constants.php"); #Connect to the database $connect = mysqli_connect(DBASE_HOST, DBASE_USER, DBASE_PASS, DBASE_NAME); @@ -19,8 +20,8 @@ } $sql .= "name='" . mysqli_real_escape_string($connect, $_POST['name']); - $sql .= "', type='" . $_POST['type']; - $sql .= "', use_use='" . $_POST['use_use']; + $sql .= "', type='" . array_search($_POST['type'], $misctype); + $sql .= "', use_use='" . array_search($_POST['use_use'], $miscuse); $sql .= "', time='" . $_POST['time']; ($_POST['amount_is_weight'] == 'true') ? $sql .= "', amount_is_weight='1" : $sql .= "', amount_is_weight='0"; $sql .= "', use_for='" . mysqli_real_escape_string($connect, $_POST['use_for']); @@ -77,8 +78,8 @@ $miscs[] = array( 'record' => $row['record'], 'name' => $row['name'], - 'type' => $row['type'], - 'use_use' => $row['use_use'], + 'type' => $misctype[$row['type']], + 'use_use' => $miscuse[$row['use_use']], 'time' => $row['time'], 'amount_is_weight' => $row['amount_is_weight'], 'use_for' => $row['use_for'], diff -r 9e43b216ccd3 -r d25a1b160dba www/includes/db_inventory_yeasts.php --- a/www/includes/db_inventory_yeasts.php Sat Sep 14 10:41:35 2019 +0200 +++ b/www/includes/db_inventory_yeasts.php Fri Oct 18 13:12:46 2019 +0200 @@ -2,6 +2,7 @@ require($_SERVER['DOCUMENT_ROOT']."/config.php"); require($_SERVER['DOCUMENT_ROOT']."/version.php"); +require($_SERVER['DOCUMENT_ROOT']."/includes/constants.php"); #Connect to the database $connect = mysqli_connect(DBASE_HOST, DBASE_USER, DBASE_PASS, DBASE_NAME); @@ -10,6 +11,7 @@ } mysqli_set_charset($connect, "utf8" ); + // get data and store in a json array if (isset($_POST['insert']) || isset($_POST['update'])) { if (isset($_POST['insert'])) { @@ -20,8 +22,8 @@ } $sql .= "name='" . mysqli_real_escape_string($connect, $_POST['name']); - $sql .= "', type='" . $_POST['type']; - $sql .= "', form='" . $_POST['form']; + $sql .= "', type='" . array_search($_POST['type'], $yeasttype); + $sql .= "', form='" . array_search($_POST['form'], $yeastform); $sql .= "', laboratory='" . mysqli_real_escape_string($connect, $_POST['laboratory']); $sql .= "', product_id='" . mysqli_real_escape_string($connect, $_POST['product_id']); $sql .= "', min_temperature='" . $_POST['min_temperature']; @@ -33,6 +35,13 @@ $sql .= "', max_reuse='" . $_POST['max_reuse']; $sql .= "', cells='" . floatval($_POST['cells']) * 1000000000.0; $sql .= "', tolerance='" . $_POST['tolerance']; + ($_POST['sta1'] == 'true') ? $sql .= "', sta1='1" : $sql .= "', sta1='0"; + ($_POST['bacteria'] == 'true') ? $sql .= "', bacteria='1" : $sql .= "', bacteria='0"; + ($_POST['harvest_top'] == 'true') ? $sql .= "', harvest_top='1" : $sql .= "', harvest_top='0"; + $sql .= "', harvest_time='" . $_POST['harvest_time']; + $sql .= "', pitch_temperature='" . floatval($_POST['pitch_temperature']); + ($_POST['pofpos'] == 'true') ? $sql .= "', pofpos='1" : $sql .= "', pofpos='0"; + $sql .= "', zymocide='" . $_POST['zymocide']; $sql .= "', inventory='" . $_POST['inventory']; $sql .= "', cost='" . $_POST['cost'] . "'"; if ($_POST['production_date'] == '') @@ -83,8 +92,8 @@ $yeasts[] = array( 'record' => $row['record'], 'name' => $row['name'], - 'type' => $row['type'], - 'form' => $row['form'], + 'type' => $yeasttype[$row['type']], + 'form' => $yeastform[$row['form']], 'laboratory' => $row['laboratory'], 'product_id' => $row['product_id'], 'min_temperature' => $row['min_temperature'], @@ -99,7 +108,14 @@ 'production_date' => $row['production_date'], 'tht_date' => $row['tht_date'], 'cells' => floatval($row['cells']) / 1000000000.0, - 'tolerance' => $row['tolerance'] + 'tolerance' => $row['tolerance'], + 'sta1' => $row['sta1'], + 'bacteria' => $row['bacteria'], + 'harvest_top' => $row['harvest_top'], + 'harvest_time' => $row['harvest_time'], + 'pitch_temperature' => floatval($row['pitch_temperature']), + 'pofpos' => $row['pofpos'], + 'zymocide' => $row['zymocide'] ); } header("Content-type: application/json"); diff -r 9e43b216ccd3 -r d25a1b160dba www/includes/db_product.php --- a/www/includes/db_product.php Sat Sep 14 10:41:35 2019 +0200 +++ b/www/includes/db_product.php Fri Oct 18 13:12:46 2019 +0200 @@ -245,7 +245,7 @@ $sql .= "', wa_acid_perc='" . $_POST['wa_acid_perc']; $sql .= "', wa_base_name='" . $_POST['wa_base_name']; if ($_POST['starter_enable'] == 0) { - $sql .= "', starter_enable='0', starter_type='0', starter_sg='1.040', starter_viability='97"; + $sql .= "', starter_enable='0', starter_type='0', starter_sg='1.037', starter_viability='97"; $sql .= "', prop1_type='0', prop1_volume='0', prop2_type='0', prop2_volume='0"; $sql .= "', prop3_type='0', prop3_volume='0', prop4_type='0', prop4_volume='0"; } else { @@ -262,7 +262,10 @@ $sql .= "', prop4_type='" . $_POST['prop4_type']; $sql .= "', prop4_volume='" . $_POST['prop4_volume']; } -// syslog(LOG_NOTICE, $sql); + $sql .= "', divide_type='" . $_POST['divide_type']; + $sql .= "', divide_size='" . $_POST['divide_size']; + $sql .= "', divide_parts='" . $_POST['divide_parts']; + //syslog(LOG_NOTICE, $sql); $fermentables = '['; $comma = FALSE; @@ -313,6 +316,7 @@ } } $fermentables .= ']'; + //syslog(LOG_NOTICE, $fermentables); $sql .= "', json_fermentables='" . $fermentables; $hops = '['; @@ -358,6 +362,7 @@ } } $hops .= ']'; + //syslog(LOG_NOTICE, 'hops: ' . $hops); $sql .= "', json_hops='" . $hops; $miscs = '['; @@ -394,6 +399,7 @@ } } $miscs .= ']'; + //syslog(LOG_NOTICE, 'miscs: ' . $miscs); $sql .= "', json_miscs='" . $miscs; $yeasts = '['; @@ -435,6 +441,7 @@ } } $yeasts .= ']'; + //syslog(LOG_NOTICE, $yeasts); $sql .= "', json_yeasts='" . $yeasts; $mashs = '['; @@ -467,6 +474,7 @@ } } $mashs .= ']'; + //syslog(LOG_NOTICE, $mashs); $sql .= "', json_mashs='" . $mashs; if (isset($_POST['insert'])) { @@ -490,6 +498,25 @@ } echo $result; +} else if (isset($_POST['splitit'])) { + /* + * Update split batch details + */ + $sql = "UPDATE `products` SET "; + $sql .= "divide_type='" . $_POST['divide_type']; + $sql .= "', divide_size='" . $_POST['divide_size']; + $sql .= "', divide_parts='" . $_POST['divide_parts']; + $sql .= "' WHERE record='" . $_POST['record'] . "';"; + syslog(LOG_NOTICE, $sql); + + $result = mysqli_query($connect, $sql); + if (! $result) { + syslog(LOG_NOTICE, "db_product: result: ".mysqli_error($connect)); + } else { + syslog(LOG_NOTICE, "db_product: updated (divide) record ".$_POST['record']); + } + echo $result; + } else if (isset($_POST['delete'])) { /* * DELETE command. @@ -836,6 +863,10 @@ $brew .= ',"prop4_type":' . $row['prop4_type']; $brew .= ',"prop4_volume":' . $row['prop4_volume']; + $brew .= ',"divide_type":' . $row['divide_type']; + $brew .= ',"divide_size":' . floatval($row['divide_size']); + $brew .= ',"divide_parts":' . $row['divide_parts']; + if (isset($_GET['record'])) { // Append stock information. $fermentables = json_decode($row['json_fermentables'], true); diff -r 9e43b216ccd3 -r d25a1b160dba www/includes/global.inc.php --- a/www/includes/global.inc.php Sat Sep 14 10:41:35 2019 +0200 +++ b/www/includes/global.inc.php Fri Oct 18 13:12:46 2019 +0200 @@ -54,6 +54,14 @@ $my_select = $_GET['select']; else $my_select = ''; +if (isset($_GET['split'])) + $my_split = $_GET['split']; +else + $my_split = 0; +if (isset($_GET['stage'])) + $my_stage = $_GET['stage']; +else + $my_stage = 0; $escapers = array("\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c"); $replacements = array("\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b"); @@ -99,6 +107,8 @@ global $my_name; global $my_code; global $my_select; + global $my_stage; + global $my_split; global $my_brewery_name; global $my_factor_mashhop; global $my_factor_fwh; @@ -123,8 +133,8 @@ '.PHP_EOL; + echo ' '.PHP_EOL; ?> @@ -190,7 +200,7 @@
  • Monitoren
    • Systemen -
    • Productie diff -r 9e43b216ccd3 -r d25a1b160dba www/inv_instock.php --- a/www/inv_instock.php Sat Sep 14 10:41:35 2019 +0200 +++ b/www/inv_instock.php Fri Oct 18 13:12:46 2019 +0200 @@ -1,5 +1,6 @@ AddCol( 26,'Type','L'); $this->AddCol( 26,'Leverancier','L'); $this->AddCol( 68,'Vergistbaar ingredient','L'); @@ -85,7 +87,6 @@ $this->ColorIndex=0; $this->ProcessingTable=true; - $type = array( 'Mout', 'Suiker', 'V Extract', 'Extract', 'Ongemout graan' ); $sql = "SELECT type,name,supplier,inventory,cost FROM inventory_fermentables WHERE inventory > 0 ORDER BY type,supplier,name"; $result = mysqli_query($link, $sql); $tot_fermentables = 0.0; @@ -97,7 +98,7 @@ $this->SetX($this->TableX); $ci=$this->ColorIndex; $this->SetFillColor($this->RowColors[$ci][0],$this->RowColors[$ci][1],$this->RowColors[$ci][2]); - $this->Cell(26,5,$type[$row['type']],0,0,'L',true); + $this->Cell(26,5,$fermentabletype[$row['type']],0,0,'L',true); $this->Cell(26,5,iconv('UTF-8','windows-1252',$row['supplier']),0,0,'L',true); $this->Cell(68,5,iconv('UTF-8','windows-1252',$row['name']),0,0,'L',true); $this->Cell(30,5,sprintf("%10.3f kg",$row['inventory']),0,0,'R',true); @@ -119,6 +120,7 @@ } function TableHops($link,$prop) { + global $hopform; $this->AddCol( 30,'Land','L'); $this->AddCol( 75,'Hoppen','L'); $this->AddCol( 15,'Soort','L'); @@ -135,7 +137,6 @@ $this->ColorIndex=0; $this->ProcessingTable=true; - $type = array( 'Pellets', 'Plugs', 'Bellen' ); $result = mysqli_query($link, "SELECT name,form,origin,inventory,cost FROM inventory_hops WHERE inventory > 0 ORDER BY origin,name"); $tot_hops = 0.0; @@ -149,7 +150,7 @@ $this->SetFillColor($this->RowColors[$ci][0],$this->RowColors[$ci][1],$this->RowColors[$ci][2]); $this->Cell(30,5,iconv('UTF-8','windows-1252',$row['origin']),0,0,'L',true); $this->Cell(75,5,iconv('UTF-8','windows-1252',$row['name']),0,0,'L',true); - $this->Cell(15,5,$type[$row['form']],0,0,'L',true); + $this->Cell(15,5,$hopform[$row['form']],0,0,'L',true); $this->Cell(30,5,sprintf("%10.1f gr",$stock),0,0,'R',true); $this->Cell(20,5,sprintf("%8.2f ",$row['cost']).EURO,0,0,'R',true); $this->Cell(20,5,sprintf("%8.2f ",$value).EURO,0,0,'R',true); @@ -223,6 +224,7 @@ } function TableMiscs($link,$prop) { + global $misctype; $this->AddCol( 30,'Type','L'); $this->AddCol( 90,'Ingredient','L'); $this->AddCol( 30,'Voorraad','R'); @@ -240,7 +242,6 @@ $result = mysqli_query($link, "SELECT name,type,amount_is_weight,inventory,cost FROM inventory_miscs WHERE inventory > 0 ORDER BY type,name"); $tot_miscs = 0.0; - $type = array( 'Specerij', 'Kruid', 'Smaakstof', 'Klaringsmiddel', 'Brouwzout', 'Gistvoeding', 'Anders' ); while($row=mysqli_fetch_array($result)) { $value = $row['inventory'] * $row['cost']; @@ -251,7 +252,7 @@ $this->SetX($this->TableX); $ci=$this->ColorIndex; $this->SetFillColor($this->RowColors[$ci][0],$this->RowColors[$ci][1],$this->RowColors[$ci][2]); - $this->Cell(30,5,$type[$row['type']],0,0,'L',true); + $this->Cell(30,5,$misctype[$row['type']],0,0,'L',true); $this->Cell(90,5,iconv('UTF-8','windows-1252',$row['name']),0,0,'L',true); $this->Cell(30,5,sprintf("%10.1f ",$stock).$amount,0,0,'R',true); $this->Cell(20,5,sprintf("%8.2f ",$row['cost']).EURO,0,0,'R',true); diff -r 9e43b216ccd3 -r d25a1b160dba www/inv_yeasts.php --- a/www/inv_yeasts.php Sat Sep 14 10:41:35 2019 +0200 +++ b/www/inv_yeasts.php Fri Oct 18 13:12:46 2019 +0200 @@ -16,39 +16,41 @@ - + - + - + + + - + - - - + + + @@ -59,31 +61,53 @@ - - + + + + + + + + + + - + + + + + + + + + + + + + + + + + + - - - - + diff -r 9e43b216ccd3 -r d25a1b160dba www/js/global-min.js --- a/www/js/global-min.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/global-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -var StageData=[{id:0,en:"Plan",nl:"Plan"},{id:1,en:"Wait",nl:"Wacht"},{id:2,en:"Brew",nl:"Brouwen"},{id:3,en:"Primary",nl:"Hoofdgisting"},{id:4,en:"Secondary",nl:"Nagisting"},{id:5,en:"Tertiary",nl:"Lagering"},{id:6,en:"Package",nl:"Afvullen"},{id:7,en:"Carbonation",nl:"Hergisten"},{id:8,en:"Mature",nl:"Rijpen"},{id:9,en:"Taste",nl:"Proeven"},{id:10,en:"Ready",nl:"Gereed"},{id:11,en:"Closed",nl:"Afgesloten"}],StageSource={localdata:StageData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},StageAdapter=new $.jqx.dataAdapter(StageSource),MaterialData=[{id:0,en:"Stainless Steel",nl:"RVS",sh:0.11},{id:1,en:"Aluminium",nl:"Aluminium",sh:0.22},{id:2,en:"Plastics",nl:"Kunststof",sh:0.46},{id:3,en:"Copper",nl:"Koper",sh:0.092}],MaterialSource={localdata:MaterialData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"},{name:"sh"}]},MaterialAdapter=new $.jqx.dataAdapter(MaterialSource),FermentableTypeData=[{id:0,en:"Grain",nl:"Mout"},{id:1,en:"Sugar",nl:"Suiker"},{id:2,en:"Extract",nl:"Vloeibaar extract"},{id:3,en:"Dry extract",nl:"Droog extract"},{id:4,en:"Adjunct",nl:"Ongemout graan"}],FermentableTypeSource={localdata:FermentableTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},FermentableTypeAdapter=new $.jqx.dataAdapter(FermentableTypeSource),GrainTypeData=[{id:0,en:"Base",nl:"Basismout"},{id:1,en:"Roast",nl:"Geroosterde mout"},{id:2,en:"Crystal",nl:"Cara- of crystalmout"},{id:3,en:"Kilned",nl:"Geëeste mout"},{id:4,en:"Sour malt",nl:"Zuurmout"},{id:5,en:"Special",nl:"Speciale mout"},{id:6,en:"No malt",nl:"Geen mout"}],GrainTypeSource={localdata:GrainTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},GrainTypeAdapter=new $.jqx.dataAdapter(GrainTypeSource),AddedData=[{id:0,en:"Mash",nl:"Maischen"},{id:1,en:"Boil",nl:"Koken"},{id:2,en:"Fermentation",nl:"Vergisten"},{id:3,en:"Lagering",nl:"Nagisten/lageren"},{id:4,en:"Bottle",nl:"Bottelen"},{id:5,en:"Kegs",nl:"Fust"}],AddedSource={localdata:AddedData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},AddedAdapter=new $.jqx.dataAdapter(AddedSource),HopTypeData=[{id:0,en:"Bittering",nl:"Bitterhop"},{id:1,en:"Aroma",nl:"Aromahop"},{id:2,en:"Both",nl:"Beide"}],HopTypeSource={localdata:HopTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},HopTypeAdapter=new $.jqx.dataAdapter(HopTypeSource),HopFormData=[{id:0,en:"Pellet",nl:"Pellets"},{id:1,en:"Plug",nl:"Plugs"},{id:2,en:"Leaf",nl:"Bloemen"},{id:3,en:"Leaf wet",nl:"Hop nat"},{id:4,en:"Cryo",nl:"Cryo"}],HopFormSource={localdata:HopFormData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},HopFormAdapter=new $.jqx.dataAdapter(HopFormSource),HopUseData=[{id:0,en:"Mash",nl:"Maischhop"},{id:1,en:"First wort",nl:"First wort hop"},{id:2,en:"Boil",nl:"Koken"},{id:3,en:"Aroma",nl:"Vlamuit"},{id:4,en:"Whirlpool",nl:"Whirlpool"},{id:5,en:"Dry hop",nl:"Koudhop"}],HopUseSource={localdata:HopUseData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},HopUseAdapter=new $.jqx.dataAdapter(HopUseSource),YeastTypeData=[{id:0,en:"Lager",nl:"Ondergist"},{id:1,en:"Ale",nl:"Bovengist"},{id:2,en:"Wheat",nl:"Tarwegist"},{id:3,en:"Wine",nl:"Wijngist"},{id:4,en:"Champagne",nl:"Champagnegist"}],YeastTypeSource={localdata:YeastTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},YeastTypeAdapter=new $.jqx.dataAdapter(YeastTypeSource),YeastFormData=[{id:0,en:"Liquid",nl:"Vloeibaar",cells:100000000000},{id:1,en:"Dry",nl:"Korrel",cells:15000000000},{id:2,en:"Slant",nl:"Schuine buis",cells:1700000000},{id:3,en:"Culture",nl:"Slurry",cells:1700000000},{id:4,en:"Frozen",nl:"Ingevroren",cells:1700000000},{id:5,en:"Bottle",nl:"Depot",cells:1700000000}],YeastFormSource={localdata:YeastFormData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"},{name:"cells"}]},YeastFormAdapter=new $.jqx.dataAdapter(YeastFormSource),YeastUseData=[{id:0,en:"Primary",nl:"Hoofdgisting"},{id:1,en:"Secondary",nl:"Nagisting"},{id:2,en:"Tertiary",nl:"Lagering"},{id:3,en:"Bottle",nl:"Bottelen"}],YeastUseSource={localdata:YeastUseData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"},{name:"cells"}]},YeastUseAdapter=new $.jqx.dataAdapter(YeastUseSource),FlocculationData=[{id:0,en:"Low",nl:"Laag"},{id:1,en:"Medium",nl:"Medium"},{id:2,en:"High",nl:"Hoog"},{id:3,en:"Very high",nl:"Zeer hoog"}],FlocculationSource={localdata:FlocculationData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},FlocculationAdapter=new $.jqx.dataAdapter(FlocculationSource),StarterTypeData=[{id:0,en:"Stirred",nl:"Geroerd"},{id:1,en:"Shaken",nl:"Geschud"},{id:2,en:"Simple",nl:"Simpel"}],StarterTypeSource={localdata:StarterTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},StarterTypeAdapter=new $.jqx.dataAdapter(StarterTypeSource),MiscTypeData=[{id:0,en:"Spice",nl:"Specerij"},{id:1,en:"Herb",nl:"Kruid"},{id:2,en:"Flavor",nl:"Smaakstof"},{id:3,en:"Fining",nl:"Klaringsmiddel"},{id:4,en:"Water agent",nl:"Brouwzout"},{id:5,en:"Yeast nutrient",nl:"Gistvoeding"},{id:6,en:"Other",nl:"Overig"}],MiscTypeSource={localdata:MiscTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},MiscTypeAdapter=new $.jqx.dataAdapter(MiscTypeSource),MiscUseData=[{id:0,en:"Starter",nl:"Starter"},{id:1,en:"Mash",nl:"Maischen"},{id:2,en:"Boil",nl:"Koken"},{id:3,en:"Primary",nl:"Hoofdvergisting"},{id:4,en:"Secondary",nl:"Nagisting/lagering"},{id:5,en:"Bottling",nl:"Bottelen"}],MiscUseSource={localdata:MiscUseData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},MiscUseAdapter=new $.jqx.dataAdapter(MiscUseSource),StyleTypeData=[{id:0,en:"Lager",nl:"Ondergistend bier"},{id:1,en:"Ale",nl:"Bovengistend bier"},{id:2,en:"Mead",nl:"Mede"},{id:3,en:"Wheat",nl:"Tarwebier"},{id:4,en:"Mixed",nl:"Gemengd"},{id:5,en:"Cider",nl:"Cider"}],StyleTypeSource={localdata:StyleTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},StyleTypeAdapter=new $.jqx.dataAdapter(StyleTypeSource),MashStepTypeData=[{id:0,en:"Infusion",nl:"Infusie"},{id:1,en:"Temperature",nl:"Verwarming"},{id:2,en:"Decoction",nl:"Decoctie"}],MashStepTypeSource={localdata:MashStepTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},MashStepTypeAdapter=new $.jqx.dataAdapter(MashStepTypeSource),RecipeTypeData=[{id:0,en:"Extract",nl:"Extract"},{id:1,en:"Partial Mash",nl:"Deelmaisch"},{id:2,en:"All Grain",nl:"Mout"}],RecipeTypeSource={localdata:RecipeTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},RecipeTypeAdapter=new $.jqx.dataAdapter(RecipeTypeSource),IBUmethodData=[{id:0,en:"Tinseth",nl:"Tinseth"},{id:1,en:"Rager",nl:"Rager"},{id:2,en:"Daniels",nl:"Daniels"}],IBUmethodSource={localdata:IBUmethodData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},IBUmethodAdapter=new $.jqx.dataAdapter(IBUmethodSource),ColorMethodData=[{id:0,en:"Morey",nl:"Morey"},{id:1,en:"Mosher",nl:"Mosher"},{id:2,en:"Daniels",nl:"Daniels"},{id:3,en:"Halberstadt",nl:"Halberstadt"},{id:4,en:"Naudts",nl:"Naudts"}],ColorMethodSource={localdata:ColorMethodData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},ColorMethodAdapter=new $.jqx.dataAdapter(ColorMethodSource),CoolingTypeData=[{id:0,en:"-",nl:"-"},{id:1,en:"Emersion chiller",nl:"Dompelkoeler"},{id:2,en:"Counterflow chiller",nl:"Tegenstroomkoeler"},{id:3,en:"Au bain marie",nl:"Au bain marie"},{id:4,en:"Natural",nl:"Laten afkoelen"}],CoolingTypeSource={localdata:CoolingTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},CoolingTypeAdapter=new $.jqx.dataAdapter(CoolingTypeSource),AerationTypeData=[{id:0,en:"None",nl:"Geen"},{id:1,en:"Air",nl:"Lucht"},{id:2,en:"Oxygen",nl:"Zuurstof"}],AerationTypeSource={localdata:AerationTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},AerationTypeAdapter=new $.jqx.dataAdapter(AerationTypeSource),AcidTypeData=[{id:0,en:"Lactic",nl:"Melkzuur"},{id:1,en:"Hydrochloric",nl:"Zoutzuur"},{id:2,en:"Phosphoric",nl:"Fosforzuur"},{id:3,en:"Sulfuric",nl:"Zwavelzuur"}],AcidTypeSource={localdata:AcidTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},AcidTypeAdapter=new $.jqx.dataAdapter(AcidTypeSource),BaseTypeData=[{id:0,en:"Sodiumbicarbonate",nl:"NaHCO3"},{id:1,en:"Sodiumcarbonate",nl:"Na2CO3"},{id:2,en:"Calciumcarbonate",nl:"CaCO3"},{id:3,en:"Calciumhydroxide",nl:"Ca(OH)2"}],BaseTypeSource={localdata:BaseTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},BaseTypeAdapter=new $.jqx.dataAdapter(BaseTypeSource),SpargeSourceData=[{id:0,en:"Source 1",nl:"Bron 1"},{id:1,en:"Source 2",nl:"Bron 2"},{id:2,en:"Mixed",nl:"Gemengd"}],SpargeSourceSource={localdata:SpargeSourceData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},SpargeSourceAdapter=new $.jqx.dataAdapter(SpargeSourceSource),Show1wat={inputMode:"simple",theme:theme,width:74,height:23,decimalDigits:1,readOnly:true},Show2wat={inputMode:"simple",theme:theme,width:74,height:23,decimalDigits:2,readOnly:true},Show3wat={inputMode:"simple",theme:theme,width:74,height:23,decimalDigits:3,readOnly:true},Smal0dec={inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:0,readOnly:true},Smal1dec={inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:1,readOnly:true},Show0dec={inputMode:"simple",theme:theme,width:90,height:23,readOnly:true,decimalDigits:0},Show1dec={inputMode:"simple",theme:theme,width:90,height:23,readOnly:true,decimalDigits:1},Show2dec={inputMode:"simple",theme:theme,width:90,height:23,readOnly:true,decimalDigits:2},Show3dec={inputMode:"simple",theme:theme,width:90,height:23,readOnly:true,decimalDigits:3},SGopts={inputMode:"simple",theme:theme,width:110,height:23,min:0.99,max:1.199,decimalDigits:3,spinButtons:true},Spin1dec={inputMode:"simple",theme:theme,width:110,height:23,min:0,decimalDigits:1,spinButtons:true},Spin2dec={inputMode:"simple",theme:theme,width:110,height:23,min:0,decimalDigits:2,spinButtons:true},Spin3dec={inputMode:"simple",theme:theme,width:110,height:23,min:0,decimalDigits:3,spinButtons:true},SpinpH={inputMode:"simple",theme:theme,width:110,height:23,min:1,max:14,decimalDigits:1,spinButtons:true},Spin2pH={inputMode:"simple",theme:theme,width:110,height:23,min:1,max:14,decimalDigits:2,spinButtons:true},YeastT={inputMode:"simple",theme:theme,width:110,height:23,min:0,max:40,decimalDigits:1,spinButtons:true},PosInt={inputMode:"simple",theme:theme,width:110,height:23,min:0,decimalDigits:0,spinButtons:true},Perc1dec={inputMode:"simple",theme:theme,width:110,height:23,min:0,max:100,decimalDigits:1,spinButtons:true},Perc0={inputMode:"simple",theme:theme,width:110,height:23,min:0,max:100,decimalDigits:0,spinButtons:true},Dateopts={theme:theme,width:150,height:23,allowNullDate:true,todayString:"Vandaag",clearString:"Wissen",showFooter:true,formatString:"yyyy-MM-dd",enableBrowserBoundsDetection:true},DateTimeopts={theme:theme,width:230,height:23,allowNullDate:true,todayString:"Vandaag",clearString:"Wissen",showFooter:true,formatString:"yyyy-MM-dd HH:mm:ss",enableBrowserBoundsDetection:true,showTimeButton:true},sugardensity=1.611,stylesSource={datatype:"json",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:"int"},{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"}],url:"includes/db_profile_styles.php"},styleslist=new $.jqx.dataAdapter(stylesSource),equipmentSource={datatype:"json",datafields:[{name:"name",type:"string"},{name:"boil_size",type:"float"},{name:"batch_size",type:"float"},{name:"tun_volume",type:"float"},{name:"tun_weight",type:"float"},{name:"tun_specific_heat",type:"float"},{name:"tun_material",type:"int"},{name:"tun_height",type:"float"},{name:"top_up_water",type:"float"},{name:"trub_chiller_loss",type:"float"},{name:"evap_rate",type:"float"},{name:"boil_time",type:"float"},{name:"calc_boil_volume",type:"int"},{name:"top_up_kettle",type:"float"},{name:"hop_utilization",type:"float"},{name:"notes",type:"string"},{name:"lauter_volume",type:"float"},{name:"lauter_height",type:"float"},{name:"lauter_deadspace",type:"float"},{name:"kettle_volume",type:"float"},{name:"kettle_height",type:"float"},{name:"mash_volume",type:"float"},{name:"mash_max",type:"float"},{name:"efficiency",type:"float"}],url:"includes/db_inventory_equipments.php"},equipmentlist=new $.jqx.dataAdapter(equipmentSource),fermentableInvSource={datatype:"json",datafields:[{name:"record",type:"number"},{name:"name",type:"string"},{name:"type",type:"int"},{name:"yield",type:"float"},{name:"color",type:"float"},{name:"add_after_boil",type:"int"},{name:"origin",type:"string"},{name:"supplier",type:"string"},{name:"coarse_fine_diff",type:"float"},{name:"moisture",type:"float"},{name:"diastatic_power",type:"float"},{name:"protein",type:"float"},{name:"dissolved_protein",type:"float"},{name:"max_in_batch",type:"float"},{name:"recommend_mash",type:"int"},{name:"graintype",type:"int"},{name:"di_ph",type:"float"},{name:"acid_to_ph_57",type:"float"},{name:"inventory",type:"float"},{name:"cost",type:"float"}],url:"getfermentablesources.php"},fermentableinstock=false,fermentablelist=new $.jqx.dataAdapter(fermentableInvSource,{beforeLoadComplete:function(a){var d,b,c=new Array();for(b=0;b299){c=299}e=[250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,249,248,247,246,245,244,243,242,241,240,239,238,237,236,235,234,233,232,231,230,229,228,227,226,225,224,223,222,221,220,219,218,217,216,215,214,213,212,211,210,209,208,207,206,205,204,203,202,201,200,200,199,199,198,198,197,197,196,196,195,195,194,194,193,193,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,191,190,189,188,187,186,185,184,183,182,181,180,179,178,177,175,174,172,171,169,168,167,195,164,162,161,159,158,157,155,154,152,151,149,148,147,145,144,142,141,139,138,137,135,134,132,131,129,128,127,125,124,122,121,119,118,117,115,114,112,111,109,108,107,105,104,102,101,99,98,97,95,94,92,91,89,88,87,85,84,82,81,79,78,77,75,74,72,71,69,68,67,65,64,62,61,59,58,57,55,54,52,51,49,48,47,45,44,43,41,39,38,37,37,36,36,35,35,34,34,33,33,32,32,31,31,30,30,29,29,28,28,27,27,26,26,25,25,24,24,23,23,22,22,21,21,20,20,19,19,18,18,17,17,16,16,15,15,14,14,13,13,12,12,11,11,10,10,9,9,8,8];d=[250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,249,248,247,246,245,244,242,240,238,236,234,232,230,228,226,224,222,220,218,216,214,212,210,208,206,204,202,200,198,196,194,192,190,188,186,184,182,180,178,176,174,172,170,168,166,164,162,160,158,156,154,152,150,148,146,144,142,141,140,139,139,138,137,136,136,135,134,133,133,132,131,130,130,129,128,127,127,126,125,124,124,123,122,121,121,120,119,118,118,117,116,115,115,114,113,112,112,111,110,109,109,108,107,106,106,105,104,103,103,102,101,100,100,99,98,97,97,96,95,94,94,93,92,91,91,90,89,88,88,87,86,85,85,84,83,82,82,81,80,79,78,77,76,75,75,74,73,72,72,71,70,69,69,68,67,66,66,65,64,63,63,62,61,60,60,59,58,57,57,56,55,54,54,53,52,51,51,50,49,48,48,47,46,45,45,44,43,42,42,41,40,39,39,38,37,36,36,35,34,33,33,32,31,30,30,29,28,27,27,26,25,24,24,23,22,22,22,21,21,21,20,20,20,19,19,19,18,18,18,17,17,17,16,16,16,15,15,15,14,14,14,13,13,13,12,12,12,11,11,11,10,10,10,9,9,9,8,8,8,7,7,7,6,6,6,5,5,5,4,4,4,3,3,3];f=[210,204,199,193,188,182,177,171,166,160,155,149,144,138,133,127,122,116,111,105,100,94,89,83,78,72,67,61,56,50,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,55,55,55,55,54,54,54,54,53,53,53,53,52,52,52,52,51,51,51,51,50,50,50,50,49,49,48,47,47,46,45,45,44,43,43,42,41,41,40,39,39,38,37,37,36,35,34,33,32,31,29,28,27,26,25,24,23,21,20,19,18,17,16,15,13,12,11,10,9,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22,21,21,21,20,20,20,19,19,19,18,18,18,17,17,17,17,16,16,15,15,15,14,14,14,13,13,13,12,12,12,11,11,11,10,10,10,9,9,9,8,8,8,7,7,7,6,6,6,5,5,5,4,4,4,3,3,3,2,2,2];b=e[c]*65536+d[c]*256+f[c];a=b.toString(16).toUpperCase();if(a.length<6){a="0"+a}return"#"+a}function sg_to_plato(a){return((135.997*a-630.272)*a+1111.14)*a-616.868}function plato_to_sg(a){return 1+(a/(258.6-((a/258.2)*227.1)))}function brix_to_sg(a){if(my_brix_correction>0){return plato_to_sg(a/my_brix_correction)}else{return plato_to_sg(a)}}function sg_to_brix(a){return sg_to_plato(a)*my_brix_correction}function estimate_sg(c,e){var a,d,b;a=100*c/e;d=plato_to_sg(a);for(b=0;b<20;b++){if(d>0){a=100*c/(e*d)}d=plato_to_sg(a)}return Round(d,4)}function estimate_fg(f,i,e,h,c,g,j){var b,d,a;if(f>40){f=0}if(i>50){i=0}if((e>0)&&(h>0)){b=e;if(b<2){b=2}if(b>5.5){b=5.5}if(c<60){c=60}if(c>72){c=72}}else{b=3.5;c=67;h=75}if(g<30){g=77}d=0.00825*g+0.00817*b-0.00684*c+0.00026*h-0.00356*i+0.00553*f+0.547;a=Round(1+(1-d)*(j-1),4);console.log("estimate_fg("+f+","+i+","+b+","+h+","+c+","+g+","+j+") AttBeer:"+d+" fg:"+a);return a}function CalcFrac(f,e,d,b){var g,a,i,k,h,c,j;g=Math.pow(10,f-e);a=Math.pow(10,f-d);i=Math.pow(10,f-b);k=1/(1+g+g*a+g*a*i);h=g*k;c=g*a*k;j=g*a*i*k;return h+2*c+3*j}function lintner_to_kolbach(a){return(3.5*a)-16}function kolbach_to_lintner(a){return(a+16)/3.5}; \ No newline at end of file +var StageData=[{id:0,en:"Plan",nl:"Plan"},{id:1,en:"Wait",nl:"Wacht"},{id:2,en:"Brew",nl:"Brouwen"},{id:3,en:"Primary",nl:"Hoofdgisting"},{id:4,en:"Secondary",nl:"Nagisting"},{id:5,en:"Tertiary",nl:"Lagering"},{id:6,en:"Package",nl:"Afvullen"},{id:7,en:"Carbonation",nl:"Hergisten"},{id:8,en:"Mature",nl:"Rijpen"},{id:9,en:"Taste",nl:"Proeven"},{id:10,en:"Ready",nl:"Gereed"},{id:11,en:"Closed",nl:"Afgesloten"}],StageSource={localdata:StageData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},StageAdapter=new $.jqx.dataAdapter(StageSource),SplitData=[{id:0,en:"Not divided",nl:"Niet gesplitst",ok:100},{id:1,en:"After mash",nl:"Na maischen",ok:2},{id:2,en:"After boil",nl:"Na koken",ok:2},{id:3,en:"After cooling",nl:"Na koelen",ok:2},{id:4,en:"After primary",nl:"Na hoofdgisting",ok:3},{id:5,en:"After secondary",nl:"Na nagisting",ok:4},{id:6,en:"After tertiary",nl:"Na lageren",ok:5}],SplitSource={localdata:SplitData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"},{name:"ok"}]},SplitAdapter=new $.jqx.dataAdapter(SplitSource),MaterialData=[{id:0,en:"Stainless Steel",nl:"RVS",sh:0.11},{id:1,en:"Aluminium",nl:"Aluminium",sh:0.22},{id:2,en:"Plastics",nl:"Kunststof",sh:0.46},{id:3,en:"Copper",nl:"Koper",sh:0.092}],MaterialSource={localdata:MaterialData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"},{name:"sh"}]},MaterialAdapter=new $.jqx.dataAdapter(MaterialSource),FermentableTypeData=[{id:0,en:"Grain",nl:"Mout"},{id:1,en:"Sugar",nl:"Suiker"},{id:2,en:"Extract",nl:"Vloeibaar extract"},{id:3,en:"Dry extract",nl:"Droog extract"},{id:4,en:"Adjunct",nl:"Ongemout graan"}],FermentableTypeSource={localdata:FermentableTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},FermentableTypeAdapter=new $.jqx.dataAdapter(FermentableTypeSource),GrainTypeData=[{id:0,en:"Base",nl:"Basismout"},{id:1,en:"Roast",nl:"Geroosterde mout"},{id:2,en:"Crystal",nl:"Cara- of crystalmout"},{id:3,en:"Kilned",nl:"Geëeste mout"},{id:4,en:"Sour malt",nl:"Zuurmout"},{id:5,en:"Special",nl:"Speciale mout"},{id:6,en:"No malt",nl:"Geen mout"}],GrainTypeSource={localdata:GrainTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},GrainTypeAdapter=new $.jqx.dataAdapter(GrainTypeSource),AddedData=[{id:0,en:"Mash",nl:"Maischen"},{id:1,en:"Boil",nl:"Koken"},{id:2,en:"Fermentation",nl:"Vergisten"},{id:3,en:"Lagering",nl:"Nagisten/lageren"},{id:4,en:"Bottle",nl:"Bottelen"},{id:5,en:"Kegs",nl:"Fust"}],AddedSource={localdata:AddedData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},AddedAdapter=new $.jqx.dataAdapter(AddedSource),HopTypeData=[{id:0,en:"Bittering",nl:"Bitterhop"},{id:1,en:"Aroma",nl:"Aromahop"},{id:2,en:"Both",nl:"Beide"}],HopTypeSource={localdata:HopTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},HopTypeAdapter=new $.jqx.dataAdapter(HopTypeSource),HopFormData=[{id:0,en:"Pellet",nl:"Pellets"},{id:1,en:"Plug",nl:"Plugs"},{id:2,en:"Leaf",nl:"Bloemen"},{id:3,en:"Leaf wet",nl:"Hop nat"},{id:4,en:"Cryo",nl:"Cryo"}],HopFormSource={localdata:HopFormData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},HopFormAdapter=new $.jqx.dataAdapter(HopFormSource),HopUseData=[{id:0,en:"Mash",nl:"Maischhop"},{id:1,en:"First wort",nl:"First wort"},{id:2,en:"Boil",nl:"Koken"},{id:3,en:"Aroma",nl:"Vlamuit"},{id:4,en:"Whirlpool",nl:"Whirlpool"},{id:5,en:"Dry hop",nl:"Koudhop"}],HopUseSource={localdata:HopUseData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},HopUseAdapter=new $.jqx.dataAdapter(HopUseSource),YeastTypeData=[{id:0,en:"Lager",nl:"Ondergist"},{id:1,en:"Ale",nl:"Bovengist"},{id:2,en:"Wheat",nl:"Tarwegist"},{id:3,en:"Wine",nl:"Wijngist"},{id:4,en:"Champagne",nl:"Champagnegist"},{id:5,en:"Brett",nl:"Brett"},{id:6,en:"Kveik",nl:"Kveik"},{id:7,en:"Hybrid",nl:"Hybride"}],YeastTypeSource={localdata:YeastTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},YeastTypeAdapter=new $.jqx.dataAdapter(YeastTypeSource),YeastFormData=[{id:0,en:"Liquid",nl:"Vloeibaar",cells:100000000000},{id:1,en:"Dry",nl:"Droog",cells:15000000000},{id:2,en:"Slant",nl:"Schuine buis",cells:1700000000},{id:3,en:"Culture",nl:"Slurry",cells:1700000000},{id:4,en:"Frozen",nl:"Ingevroren",cells:1700000000},{id:5,en:"Bottle",nl:"Depot",cells:1700000000},{id:6,en:"Dried",nl:"Gedroogd",cells:9000000000}],YeastFormSource={localdata:YeastFormData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"},{name:"cells"}]},YeastFormAdapter=new $.jqx.dataAdapter(YeastFormSource),YeastUseData=[{id:0,en:"Primary",nl:"Hoofdgisting"},{id:1,en:"Secondary",nl:"Nagisting"},{id:2,en:"Tertiary",nl:"Lagering"},{id:3,en:"Bottle",nl:"Bottelen"}],YeastUseSource={localdata:YeastUseData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"},{name:"cells"}]},YeastUseAdapter=new $.jqx.dataAdapter(YeastUseSource),FlocculationData=[{id:0,en:"Low",nl:"Laag"},{id:1,en:"Medium",nl:"Medium"},{id:2,en:"High",nl:"Hoog"},{id:3,en:"Very high",nl:"Zeer hoog"}],FlocculationSource={localdata:FlocculationData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},FlocculationAdapter=new $.jqx.dataAdapter(FlocculationSource),ZymocideData=[{id:0,en:"None",nl:"Niet"},{id:1,en:"K1",nl:"K1"},{id:2,en:"K2",nl:"K2"},{id:3,en:"K28",nl:"K28"},{id:4,en:"Klus",nl:"Klus"}],ZymocideSource={localdata:ZymocideData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},ZymocideAdapter=new $.jqx.dataAdapter(ZymocideSource),StarterTypeData=[{id:0,en:"Stirred",nl:"Geroerd"},{id:1,en:"Shaken",nl:"Geschud"},{id:2,en:"Simple",nl:"Simpel"}],StarterTypeSource={localdata:StarterTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},StarterTypeAdapter=new $.jqx.dataAdapter(StarterTypeSource),MiscTypeData=[{id:0,en:"Spice",nl:"Specerij"},{id:1,en:"Herb",nl:"Kruid"},{id:2,en:"Flavor",nl:"Smaakstof"},{id:3,en:"Fining",nl:"Klaringsmiddel"},{id:4,en:"Water agent",nl:"Brouwzout"},{id:5,en:"Yeast nutrient",nl:"Gistvoeding"},{id:6,en:"Other",nl:"Anders"}],MiscTypeSource={localdata:MiscTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},MiscTypeAdapter=new $.jqx.dataAdapter(MiscTypeSource),MiscUseData=[{id:0,en:"Starter",nl:"Starter"},{id:1,en:"Mash",nl:"Maischen"},{id:2,en:"Boil",nl:"Koken"},{id:3,en:"Primary",nl:"Hoofdvergisting"},{id:4,en:"Secondary",nl:"Nagisting/lagering"},{id:5,en:"Bottling",nl:"Bottelen"}],MiscUseSource={localdata:MiscUseData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},MiscUseAdapter=new $.jqx.dataAdapter(MiscUseSource),StyleTypeData=[{id:0,en:"Lager",nl:"Ondergistend bier"},{id:1,en:"Ale",nl:"Bovengistend bier"},{id:2,en:"Mead",nl:"Mede"},{id:3,en:"Wheat",nl:"Tarwebier"},{id:4,en:"Mixed",nl:"Gemengd"},{id:5,en:"Cider",nl:"Cider"}],StyleTypeSource={localdata:StyleTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},StyleTypeAdapter=new $.jqx.dataAdapter(StyleTypeSource),MashStepTypeData=[{id:0,en:"Infusion",nl:"Infusie"},{id:1,en:"Temperature",nl:"Verwarming"},{id:2,en:"Decoction",nl:"Decoctie"}],MashStepTypeSource={localdata:MashStepTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},MashStepTypeAdapter=new $.jqx.dataAdapter(MashStepTypeSource),RecipeTypeData=[{id:0,en:"Extract",nl:"Extract"},{id:1,en:"Partial Mash",nl:"Deelmaisch"},{id:2,en:"All Grain",nl:"Mout"}],RecipeTypeSource={localdata:RecipeTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},RecipeTypeAdapter=new $.jqx.dataAdapter(RecipeTypeSource),IBUmethodData=[{id:0,en:"Tinseth",nl:"Tinseth"},{id:1,en:"Rager",nl:"Rager"},{id:2,en:"Daniels",nl:"Daniels"}],IBUmethodSource={localdata:IBUmethodData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},IBUmethodAdapter=new $.jqx.dataAdapter(IBUmethodSource),ColorMethodData=[{id:0,en:"Morey",nl:"Morey"},{id:1,en:"Mosher",nl:"Mosher"},{id:2,en:"Daniels",nl:"Daniels"},{id:3,en:"Halberstadt",nl:"Halberstadt"},{id:4,en:"Naudts",nl:"Naudts"}],ColorMethodSource={localdata:ColorMethodData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},ColorMethodAdapter=new $.jqx.dataAdapter(ColorMethodSource),CoolingTypeData=[{id:0,en:"-",nl:"-"},{id:1,en:"Emersion chiller",nl:"Dompelkoeler"},{id:2,en:"Counterflow chiller",nl:"Tegenstroomkoeler"},{id:3,en:"Au bain marie",nl:"Au bain marie"},{id:4,en:"Natural",nl:"Laten afkoelen"}],CoolingTypeSource={localdata:CoolingTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},CoolingTypeAdapter=new $.jqx.dataAdapter(CoolingTypeSource),AerationTypeData=[{id:0,en:"None",nl:"Geen"},{id:1,en:"Air",nl:"Lucht"},{id:2,en:"Oxygen",nl:"Zuurstof"}],AerationTypeSource={localdata:AerationTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},AerationTypeAdapter=new $.jqx.dataAdapter(AerationTypeSource),AcidTypeData=[{id:0,en:"Lactic",nl:"Melkzuur"},{id:1,en:"Hydrochloric",nl:"Zoutzuur"},{id:2,en:"Phosphoric",nl:"Fosforzuur"},{id:3,en:"Sulfuric",nl:"Zwavelzuur"}],AcidTypeSource={localdata:AcidTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},AcidTypeAdapter=new $.jqx.dataAdapter(AcidTypeSource),BaseTypeData=[{id:0,en:"Sodiumbicarbonate",nl:"NaHCO3"},{id:1,en:"Sodiumcarbonate",nl:"Na2CO3"},{id:2,en:"Calciumcarbonate",nl:"CaCO3"},{id:3,en:"Calciumhydroxide",nl:"Ca(OH)2"}],BaseTypeSource={localdata:BaseTypeData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},BaseTypeAdapter=new $.jqx.dataAdapter(BaseTypeSource),SpargeSourceData=[{id:0,en:"Source 1",nl:"Bron 1"},{id:1,en:"Source 2",nl:"Bron 2"},{id:2,en:"Mixed",nl:"Gemengd"}],SpargeSourceSource={localdata:SpargeSourceData,datatype:"array",datafields:[{name:"id"},{name:"en"},{name:"nl"}]},SpargeSourceAdapter=new $.jqx.dataAdapter(SpargeSourceSource),Show1wat={inputMode:"simple",theme:theme,width:74,height:23,decimalDigits:1,readOnly:true},Show2wat={inputMode:"simple",theme:theme,width:74,height:23,decimalDigits:2,readOnly:true},Show3wat={inputMode:"simple",theme:theme,width:74,height:23,decimalDigits:3,readOnly:true},Smal0dec={inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:0,readOnly:true},Smal1dec={inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:1,readOnly:true},Show0dec={inputMode:"simple",theme:theme,width:90,height:23,readOnly:true,decimalDigits:0},Show1dec={inputMode:"simple",theme:theme,width:90,height:23,readOnly:true,decimalDigits:1},Show2dec={inputMode:"simple",theme:theme,width:90,height:23,readOnly:true,decimalDigits:2},Show3dec={inputMode:"simple",theme:theme,width:90,height:23,readOnly:true,decimalDigits:3},SGopts={inputMode:"simple",theme:theme,width:110,height:23,min:0.99,max:1.199,decimalDigits:3,spinButtons:true},Spin1dec={inputMode:"simple",theme:theme,width:110,height:23,min:0,decimalDigits:1,spinButtons:true},Spin2dec={inputMode:"simple",theme:theme,width:110,height:23,min:0,decimalDigits:2,spinButtons:true},Spin3dec={inputMode:"simple",theme:theme,width:110,height:23,min:0,decimalDigits:3,spinButtons:true},SpinpH={inputMode:"simple",theme:theme,width:110,height:23,min:1,max:14,decimalDigits:1,spinButtons:true},Spin2pH={inputMode:"simple",theme:theme,width:110,height:23,min:1,max:14,decimalDigits:2,spinButtons:true},YeastT={inputMode:"simple",theme:theme,width:110,height:23,min:0,max:50,decimalDigits:1,spinButtons:true},PosInt={inputMode:"simple",theme:theme,width:110,height:23,min:0,decimalDigits:0,spinButtons:true},Perc1dec={inputMode:"simple",theme:theme,width:110,height:23,min:0,max:100,decimalDigits:1,spinButtons:true},Perc0={inputMode:"simple",theme:theme,width:110,height:23,min:0,max:100,decimalDigits:0,spinButtons:true},Dateopts={theme:theme,width:150,height:23,allowNullDate:true,todayString:"Vandaag",clearString:"Wissen",showFooter:true,formatString:"yyyy-MM-dd",enableBrowserBoundsDetection:true},DateTimeopts={theme:theme,width:230,height:23,allowNullDate:true,todayString:"Vandaag",clearString:"Wissen",showFooter:true,formatString:"yyyy-MM-dd HH:mm:ss",enableBrowserBoundsDetection:true,showTimeButton:true},sugardensity=1.611,stylesSource={datatype:"json",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:"int"},{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"}],url:"includes/db_profile_styles.php"},styleslist=new $.jqx.dataAdapter(stylesSource),equipmentSource={datatype:"json",datafields:[{name:"name",type:"string"},{name:"boil_size",type:"float"},{name:"batch_size",type:"float"},{name:"tun_volume",type:"float"},{name:"tun_weight",type:"float"},{name:"tun_specific_heat",type:"float"},{name:"tun_material",type:"int"},{name:"tun_height",type:"float"},{name:"top_up_water",type:"float"},{name:"trub_chiller_loss",type:"float"},{name:"evap_rate",type:"float"},{name:"boil_time",type:"float"},{name:"calc_boil_volume",type:"int"},{name:"top_up_kettle",type:"float"},{name:"hop_utilization",type:"float"},{name:"notes",type:"string"},{name:"lauter_volume",type:"float"},{name:"lauter_height",type:"float"},{name:"lauter_deadspace",type:"float"},{name:"kettle_volume",type:"float"},{name:"kettle_height",type:"float"},{name:"mash_volume",type:"float"},{name:"mash_max",type:"float"},{name:"efficiency",type:"float"}],url:"includes/db_inventory_equipments.php"},equipmentlist=new $.jqx.dataAdapter(equipmentSource),fermentableInvSource={datatype:"json",datafields:[{name:"record",type:"number"},{name:"name",type:"string"},{name:"type",type:"int"},{name:"yield",type:"float"},{name:"color",type:"float"},{name:"add_after_boil",type:"int"},{name:"origin",type:"string"},{name:"supplier",type:"string"},{name:"coarse_fine_diff",type:"float"},{name:"moisture",type:"float"},{name:"diastatic_power",type:"float"},{name:"protein",type:"float"},{name:"dissolved_protein",type:"float"},{name:"max_in_batch",type:"float"},{name:"recommend_mash",type:"int"},{name:"graintype",type:"int"},{name:"di_ph",type:"float"},{name:"acid_to_ph_57",type:"float"},{name:"inventory",type:"float"},{name:"cost",type:"float"}],url:"getfermentablesources.php"},fermentableinstock=false,fermentablelist=new $.jqx.dataAdapter(fermentableInvSource,{beforeLoadComplete:function(a){var d,b,c=new Array();for(b=0;b299){c=299}e=[250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,249,248,247,246,245,244,243,242,241,240,239,238,237,236,235,234,233,232,231,230,229,228,227,226,225,224,223,222,221,220,219,218,217,216,215,214,213,212,211,210,209,208,207,206,205,204,203,202,201,200,200,199,199,198,198,197,197,196,196,195,195,194,194,193,193,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,191,190,189,188,187,186,185,184,183,182,181,180,179,178,177,175,174,172,171,169,168,167,195,164,162,161,159,158,157,155,154,152,151,149,148,147,145,144,142,141,139,138,137,135,134,132,131,129,128,127,125,124,122,121,119,118,117,115,114,112,111,109,108,107,105,104,102,101,99,98,97,95,94,92,91,89,88,87,85,84,82,81,79,78,77,75,74,72,71,69,68,67,65,64,62,61,59,58,57,55,54,52,51,49,48,47,45,44,43,41,39,38,37,37,36,36,35,35,34,34,33,33,32,32,31,31,30,30,29,29,28,28,27,27,26,26,25,25,24,24,23,23,22,22,21,21,20,20,19,19,18,18,17,17,16,16,15,15,14,14,13,13,12,12,11,11,10,10,9,9,8,8];d=[250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,249,248,247,246,245,244,242,240,238,236,234,232,230,228,226,224,222,220,218,216,214,212,210,208,206,204,202,200,198,196,194,192,190,188,186,184,182,180,178,176,174,172,170,168,166,164,162,160,158,156,154,152,150,148,146,144,142,141,140,139,139,138,137,136,136,135,134,133,133,132,131,130,130,129,128,127,127,126,125,124,124,123,122,121,121,120,119,118,118,117,116,115,115,114,113,112,112,111,110,109,109,108,107,106,106,105,104,103,103,102,101,100,100,99,98,97,97,96,95,94,94,93,92,91,91,90,89,88,88,87,86,85,85,84,83,82,82,81,80,79,78,77,76,75,75,74,73,72,72,71,70,69,69,68,67,66,66,65,64,63,63,62,61,60,60,59,58,57,57,56,55,54,54,53,52,51,51,50,49,48,48,47,46,45,45,44,43,42,42,41,40,39,39,38,37,36,36,35,34,33,33,32,31,30,30,29,28,27,27,26,25,24,24,23,22,22,22,21,21,21,20,20,20,19,19,19,18,18,18,17,17,17,16,16,16,15,15,15,14,14,14,13,13,13,12,12,12,11,11,11,10,10,10,9,9,9,8,8,8,7,7,7,6,6,6,5,5,5,4,4,4,3,3,3];f=[210,204,199,193,188,182,177,171,166,160,155,149,144,138,133,127,122,116,111,105,100,94,89,83,78,72,67,61,56,50,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,55,55,55,55,54,54,54,54,53,53,53,53,52,52,52,52,51,51,51,51,50,50,50,50,49,49,48,47,47,46,45,45,44,43,43,42,41,41,40,39,39,38,37,37,36,35,34,33,32,31,29,28,27,26,25,24,23,21,20,19,18,17,16,15,13,12,11,10,9,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22,21,21,21,20,20,20,19,19,19,18,18,18,17,17,17,17,16,16,15,15,15,14,14,14,13,13,13,12,12,12,11,11,11,10,10,10,9,9,9,8,8,8,7,7,7,6,6,6,5,5,5,4,4,4,3,3,3,2,2,2];b=e[c]*65536+d[c]*256+f[c];a=b.toString(16).toUpperCase();if(a.length<6){a="0"+a}return"#"+a}function sg_to_plato(a){return((135.997*a-630.272)*a+1111.14)*a-616.868}function plato_to_sg(a){return 1+(a/(258.6-((a/258.2)*227.1)))}function brix_to_sg(a){if(my_brix_correction>0){return plato_to_sg(a/my_brix_correction)}else{return plato_to_sg(a)}}function sg_to_brix(a){return sg_to_plato(a)*my_brix_correction}function estimate_sg(c,e){var a,d,b;a=100*c/e;d=plato_to_sg(a);for(b=0;b<20;b++){if(d>0){a=100*c/(e*d)}d=plato_to_sg(a)}return Round(d,4)}function estimate_fg(f,i,e,h,c,g,j){var b,d,a;if(f>40){f=0}if(i>50){i=0}if((e>0)&&(h>0)){b=e;if(b<2){b=2}if(b>5.5){b=5.5}if(c<60){c=60}if(c>72){c=72}}else{b=3.5;c=67;h=75}if(g<30){g=77}d=0.00825*g+0.00817*b-0.00684*c+0.00026*h-0.00356*i+0.00553*f+0.547;a=Round(1+(1-d)*(j-1),4);return a}function CalcFrac(f,e,d,b){var g,a,i,k,h,c,j;g=Math.pow(10,f-e);a=Math.pow(10,f-d);i=Math.pow(10,f-b);k=1/(1+g+g*a+g*a*i);h=g*k;c=g*a*k;j=g*a*i*k;return h+2*c+3*j}function lintner_to_kolbach(a){return(3.5*a)-16}function kolbach_to_lintner(a){return(a+16)/3.5}; \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/global.js --- a/www/js/global.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/global.js Fri Oct 18 13:12:46 2019 +0200 @@ -35,7 +35,7 @@ { id: 8, en: 'Mature', nl: 'Rijpen' }, { id: 9, en: 'Taste', nl: 'Proeven' }, { id: 10, en: 'Ready', nl: 'Gereed' }, - { id: 11, en: 'Closed', nl: 'Afgesloten' } + { id: 11, en: 'Closed', nl: 'Afgesloten' } ], StageSource = { localdata: StageData, @@ -44,6 +44,22 @@ }, StageAdapter = new $.jqx.dataAdapter(StageSource), +SplitData = [ + { id: 0, en: 'Not divided', nl: 'Niet gesplitst', ok: 100 }, + { id: 1, en: 'After mash', nl: 'Na maischen', ok: 2 }, + { id: 2, en: 'After boil', nl: 'Na koken', ok: 2 }, + { id: 3, en: 'After cooling', nl: 'Na koelen', ok: 2 }, + { id: 4, en: 'After primary', nl: 'Na hoofdgisting', ok: 3 }, + { id: 5, en: 'After secondary', nl: 'Na nagisting', ok: 4 }, + { id: 6, en: 'After tertiary', nl: 'Na lageren', ok: 5 } +], +SplitSource = { + localdata: SplitData, + datatype: 'array', + datafields: [{ name: 'id' }, { name: 'en' }, { name: 'nl' }, { name: 'ok' }] +}, +SplitAdapter = new $.jqx.dataAdapter(SplitSource), + MaterialData = [ { id: 0, en: 'Stainless Steel', nl: 'RVS', sh: 0.11 }, { id: 1, en: 'Aluminium', nl: 'Aluminium', sh: 0.22 }, @@ -130,7 +146,7 @@ HopUseData = [ { id: 0, en: 'Mash', nl: 'Maischhop' }, - { id: 1, en: 'First wort', nl: 'First wort hop' }, + { id: 1, en: 'First wort', nl: 'First wort' }, { id: 2, en: 'Boil', nl: 'Koken' }, { id: 3, en: 'Aroma', nl: 'Vlamuit' }, { id: 4, en: 'Whirlpool', nl: 'Whirlpool' }, @@ -148,13 +164,13 @@ { id: 1, en: 'Ale', nl: 'Bovengist' }, { id: 2, en: 'Wheat', nl: 'Tarwegist' }, { id: 3, en: 'Wine', nl: 'Wijngist' }, - { id: 4, en: 'Champagne', nl: 'Champagnegist' } -// { id: 5, en: 'Hybrid', nl: 'Hybride' }, -// { id: 5, en: 'Brett', nl: 'Brett' }, -// { id: 6, en: 'Kveik', nl: 'Kveik' }, -// { id: 7, en: 'Mixed', nl: 'Mixed' }, -// { id: 8, en: 'Spontaneous', nl: 'Spontaan' }, -// { id: 9, en: 'Other', nl: 'Overig' } + { id: 4, en: 'Champagne', nl: 'Champagnegist' }, + { id: 5, en: 'Brett', nl: 'Brett' }, + { id: 6, en: 'Kveik', nl: 'Kveik' }, + { id: 7, en: 'Hybrid', nl: 'Hybride' } +// { id: 8, en: 'Mixed', nl: 'Mixed' }, +// { id: 9, en: 'Spontaneous', nl: 'Spontaan' }, +// { id: 10, en: 'Other', nl: 'Overig' } ], YeastTypeSource = { localdata: YeastTypeData, @@ -165,11 +181,12 @@ YeastFormData = [ { id: 0, en: 'Liquid', nl: 'Vloeibaar', cells: 100000000000 }, - { id: 1, en: 'Dry', nl: 'Korrel', cells: 15000000000 }, + { id: 1, en: 'Dry', nl: 'Droog', cells: 15000000000 }, { id: 2, en: 'Slant', nl: 'Schuine buis', cells: 1700000000 }, { id: 3, en: 'Culture', nl: 'Slurry', cells: 1700000000 }, { id: 4, en: 'Frozen', nl: 'Ingevroren', cells: 1700000000 }, - { id: 5, en: 'Bottle', nl: 'Depot', cells: 1700000000 } + { id: 5, en: 'Bottle', nl: 'Depot', cells: 1700000000 }, + { id: 6, en: 'Dried', nl: 'Gedroogd', cells: 9000000000 } ], YeastFormSource = { localdata: YeastFormData, @@ -204,6 +221,20 @@ }, FlocculationAdapter = new $.jqx.dataAdapter(FlocculationSource), +ZymocideData = [ + { id: 0, en: 'None', nl: 'Niet' }, + { id: 1, en: 'K1', nl: 'K1' }, + { id: 2, en: 'K2', nl: 'K2' }, + { id: 3, en: 'K28', nl: 'K28' }, + { id: 4, en: 'Klus', nl: 'Klus' } +], +ZymocideSource = { + localdata: ZymocideData, + datatype: 'array', + datafields: [{ name: 'id' }, { name: 'en' }, { name: 'nl' }] +}, +ZymocideAdapter = new $.jqx.dataAdapter(ZymocideSource), + StarterTypeData = [ { id: 0, en: 'Stirred', nl: 'Geroerd' }, { id: 1, en: 'Shaken', nl: 'Geschud' }, @@ -223,7 +254,7 @@ { id: 3, en: 'Fining', nl: 'Klaringsmiddel' }, { id: 4, en: 'Water agent', nl: 'Brouwzout' }, { id: 5, en: 'Yeast nutrient', nl: 'Gistvoeding' }, - { id: 6, en: 'Other', nl: 'Overig' } + { id: 6, en: 'Other', nl: 'Anders' } ], MiscTypeSource = { localdata: MiscTypeData, @@ -397,7 +428,7 @@ Spin3dec = { inputMode: 'simple', theme: theme, width: 110, height: 23, min: 0, decimalDigits: 3, spinButtons: true }, SpinpH = { inputMode: 'simple', theme: theme, width: 110, height: 23, min: 1, max: 14, decimalDigits: 1, spinButtons: true }, Spin2pH = { inputMode: 'simple', theme: theme, width: 110, height: 23, min: 1, max: 14, decimalDigits: 2, spinButtons: true }, - YeastT = { inputMode: 'simple', theme: theme, width: 110, height: 23, min: 0, max: 40, decimalDigits: 1, spinButtons: true }, + YeastT = { inputMode: 'simple', theme: theme, width: 110, height: 23, min: 0, max: 50, decimalDigits: 1, spinButtons: true }, PosInt = { inputMode: 'simple', theme: theme, width: 110, height: 23, min: 0, decimalDigits: 0, spinButtons: true }, Perc1dec = { inputMode: 'simple', theme: theme, width: 110, height: 23, min: 0, max: 100, decimalDigits: 1, spinButtons: true }, Perc0 = { inputMode: 'simple', theme: theme, width: 110, height: 23, min: 0, max: 100, decimalDigits: 0, spinButtons: true }, @@ -1060,8 +1091,8 @@ AttBeer = 0.00825 * attenuation + 0.00817 * BD - 0.00684 * Temp + 0.00026 * TotTme - 0.00356 * percCara + 0.00553 * percSugar + 0.547; fg = Round(1 + (1 - AttBeer) * (og - 1), 4); - console.log('estimate_fg(' + percSugar + ',' + percCara + ',' + BD + ',' + TotTme + ',' + - Temp + ',' + attenuation + ',' + og + ') AttBeer:' + AttBeer + ' fg:' + fg); + //console.log('estimate_fg(' + percSugar + ',' + percCara + ',' + BD + ',' + TotTme + ',' + + // Temp + ',' + attenuation + ',' + og + ') AttBeer:' + AttBeer + ' fg:' + fg); return fg; } diff -r 9e43b216ccd3 -r d25a1b160dba www/js/import_ingredients-min.js --- a/www/js/import_ingredients-min.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/import_ingredients-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -$(document).ready(function(){var a="";if(my_select=="fermentables"){a="upl_fermentables.php"}else{if(my_select=="hops"){a="upl_hops.php"}else{if(my_select=="miscs"){a="upl_miscs.php"}else{if(my_select=="yeasts"){a="upl_yeasts.php"}else{if(my_select=="styles"){a="upl_styles.php"}}}}}$("#jqxFileUpload").jqxFileUpload({width:300,browseTemplate:"success",cancelTemplate:"inverse",uploadTemplate:"primary",theme:theme,multipleFilesUpload:false,accept:"application/xml",uploadUrl:a,fileInputName:"fileToUpload"});$("#eventsPanel").jqxPanel({width:800,height:200,theme:theme});$("#jqxFileUpload").on("select",function(d){var c=d.args;var e=c.file;var b=c.size;$("#eventsPanel").jqxPanel("clearcontent");$("#eventsPanel").jqxPanel("append",""+d.type+": "+e+" size: "+b+"
      ")});$("#jqxFileUpload").on("uploadEnd",function(d){var c=d.args;var e=c.file;var b=c.response;$("#eventsPanel").jqxPanel("append",""+d.type+": ontvangen "+e+"
      "+b+"
      ")})}); \ No newline at end of file +$(document).ready(function(){var a="";if(my_select=="fermentables"){a="upl_fermentables.php"}else{if(my_select=="hops"){a="upl_hops.php"}else{if(my_select=="miscs"){a="upl_miscs.php"}else{if(my_select=="yeasts"){a="upl_yeasts.php"}else{if(my_select=="styles"){a="upl_styles.php"}}}}}$("#jqxFileUpload").jqxFileUpload({width:300,browseTemplate:"success",cancelTemplate:"inverse",uploadTemplate:"primary",theme:theme,multipleFilesUpload:false,accept:"application/xml",uploadUrl:a,fileInputName:"fileToUpload"});$("#eventsPanel").jqxPanel({width:800,height:200,theme:theme});$("#jqxFileUpload").on("select",function(d){var c=d.args,e=c.file,b=c.size;$("#eventsPanel").jqxPanel("clearcontent");$("#eventsPanel").jqxPanel("append",""+d.type+": "+e+" size: "+b+"
      ")});$("#jqxFileUpload").on("uploadEnd",function(d){var c=d.args,e=c.file,b=c.response;$("#eventsPanel").jqxPanel("append",""+d.type+": ontvangen "+e+"
      "+b+"
      ")})}); \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/import_ingredients.js --- a/www/js/import_ingredients.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/import_ingredients.js Fri Oct 18 13:12:46 2019 +0200 @@ -53,16 +53,16 @@ theme: theme }); $('#jqxFileUpload').on('select', function (event) { - var args = event.args; - var fileName = args.file; - var fileSize = args.size; + var args = event.args, + fileName = args.file, + fileSize = args.size; $('#eventsPanel').jqxPanel('clearcontent'); $('#eventsPanel').jqxPanel('append', '' + event.type + ': ' + fileName + ' size: ' + fileSize + '
      '); }); $('#jqxFileUpload').on('uploadEnd', function (event) { - var args = event.args; - var fileName = args.file; - var serverResponce = args.response; + var args = event.args, + fileName = args.file, + serverResponce = args.response; $('#eventsPanel').jqxPanel('append', '' + event.type + ': ontvangen ' + fileName + '
      ' + serverResponce + '
      '); }); diff -r 9e43b216ccd3 -r d25a1b160dba www/js/inv_equipments-min.js --- a/www/js/inv_equipments-min.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/inv_equipments-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -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({template:"danger",width:"65px",theme:theme});$("#delCancel").jqxButton({template:"success",width:"65px",theme:theme});$("#delCancel").focus()}});$("#eventWindow").jqxWindow("hide")}$(document).ready(function(){function c(){var j=$("#calc_boil_volume").val(),k=parseFloat($("#boil_size").jqxNumberInput("decimal")),l=parseFloat($("#evap_rate").jqxNumberInput("decimal")),g=parseFloat($("#boil_time").jqxNumberInput("decimal")),h=parseFloat($("#top_up_kettle").jqxNumberInput("decimal")),i;if(j){i=k-(l*g/60)+h;$("#batch_size").val(i)}}$("#name").jqxTooltip({content:"The unique name of this brew equipment."});$("#notes").jqxTooltip({content:"Some notes about the equipment."});$("#tun_volume").jqxTooltip({content:"Mash TUN volume."});$("#tun_height").jqxTooltip({content:"Mash TUN height in cm."});$("#tun_weight").jqxTooltip({content:"Mash TUN weight in Kg."});$("#tun_material").jqxTooltip({content:"Mash TUN material. Needed to calculate the right strike temperature."});$("#mash_volume").jqxTooltip({content:"Liters maisch water voor de eerste maisch stap."});$("#mash_max").jqxTooltip({content:"Maximale moutstort voor deze installatie in Kg."});$("#lauter_volume").jqxTooltip({content:"Total lauter volume."});$("#lauter_height").jqxTooltip({content:"Height of the lauter TUN in cm."});$("#lauter_deadspace").jqxTooltip({content:"Volume loss in the lauter TUN."});$("#efficiency").jqxTooltip({content:"Average efficiency."});$("#kettle_volume").jqxTooltip({content:"Boil kettle volume in liters."});$("#kettle_height").jqxTooltip({content:"Boil kettle height in cm."});$("#boil_size").jqxTooltip({content:"Normal boil volume in liters"});$("#evap_rate").jqxTooltip({content:"Evaporation in liters per hour."});$("#boil_time").jqxTooltip({content:"Normal boil time in minutes."});$("#top_up_kettle").jqxTooltip({content:"Extra water added to the boil."});$("#hop_utilization").jqxTooltip({content:"100% for smaller installations, higher for large breweries."});$("#batch_size").jqxTooltip({content:"Calculated batch size, liters at end of the boil."});$("#trub_chiller_loss").jqxTooltip({content:"Standard loss in liters during transfer to the fermenter."});var b={},a="includes/db_inventory_equipments.php",e={datatype:"json",cache:false,datafields:[{name:"record",type:"number"},{name:"name",type:"string"},{name:"boil_size",type:"float"},{name:"batch_size",type:"float"},{name:"tun_volume",type:"float"},{name:"tun_weight",type:"float"},{name:"tun_specific_heat",type:"float"},{name:"tun_material",type:"int"},{name:"tun_height",type:"float"},{name:"top_up_water",type:"float"},{name:"trub_chiller_loss",type:"float"},{name:"evap_rate",type:"float"},{name:"boil_time",type:"float"},{name:"calc_boil_volume",type:"int"},{name:"top_up_kettle",type:"float"},{name:"hop_utilization",type:"float"},{name:"notes",type:"string"},{name:"lauter_volume",type:"float"},{name:"lauter_height",type:"float"},{name:"lauter_deadspace",type:"float"},{name:"kettle_volume",type:"float"},{name:"kettle_height",type:"float"},{name:"mash_volume",type:"float"},{name:"mash_max",type:"float"},{name:"efficiency",type:"float"}],id:"record",url:a,deleterow:function(g,i){var h="delete=true&"+$.param({record:g});$.ajax({dataType:"json",url:a,cache:false,data:h,type:"POST",success:function(k,j,l){i(true);location.reload(true)},error:function(j,l,k){i(false)}})},addrow:function(h,k,g,j){var i="insert=true&"+$.param(k);$.ajax({dataType:"json",url:a,cache:false,data:i,type:"POST",success:function(m,l,n){j(true);location.reload(true)},error:function(l,n,m){j(false)}})},updaterow:function(g,j,i){var h="update=true&"+$.param(j);$.ajax({dataType:"json",url:a,cache:false,data:h,type:"POST",success:function(l,k,m){i(true);location.reload(true)},error:function(k,m,l){i(false)}})}};$("#name").jqxInput({theme:theme,width:250,height:23});$("#notes").jqxInput({theme:theme,width:640,height:100});$("#boil_size").jqxNumberInput(Spin1dec);$("#batch_size").jqxNumberInput(Spin2dec);$("#batch_size").jqxNumberInput({spinButtonsStep:0.5});$("#tun_volume").jqxNumberInput(Spin1dec);$("#tun_weight").jqxNumberInput(Spin2dec);$("#tun_specific_heat").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:70,height:23,decimalDigits:3});$("#tun_material").jqxDropDownList({theme:theme,source:MaterialAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#tun_height").jqxNumberInput(Spin1dec);$("#top_up_water").jqxNumberInput(Spin1dec);$("#trub_chiller_loss").jqxNumberInput(Spin1dec);$("#evap_rate").jqxNumberInput(Spin2dec);$("#boil_time").jqxNumberInput(PosInt);$("#boil_time").jqxNumberInput({max:1440});$("#calc_boil_volume").jqxCheckBox({theme:theme,width:120,height:23});$("#calc_boil_volume").on("checked",function(g){$("#batch_size").jqxNumberInput({readOnly:true,width:90,spinButtons:false})});$("#calc_boil_volume").on("unchecked",function(g){$("#batch_size").jqxNumberInput({readOnly:false,width:110,spinButtons:true})});$("#top_up_kettle").jqxNumberInput(Spin1dec);$("#hop_utilization").jqxNumberInput(Perc0);$("#hop_utilization").jqxNumberInput({Max:200});$("#lauter_volume").jqxNumberInput(Spin1dec);$("#lauter_height").jqxNumberInput(Spin1dec);$("#lauter_deadspace").jqxNumberInput(Spin1dec);$("#kettle_volume").jqxNumberInput(Spin1dec);$("#kettle_height").jqxNumberInput(Spin1dec);$("#mash_volume").jqxNumberInput(Spin1dec);$("#mash_max").jqxNumberInput(Spin1dec);$("#efficiency").jqxNumberInput(Perc1dec);var f=new $.jqx.dataAdapter(e);var d=-1;$("#jqxgrid").jqxGrid({width:1280,height:630,source:f,theme:theme,showstatusbar:true,renderstatusbar:function(i){var h,g=$("
      ");h=$("
      Nieuw
      ");g.append(h);i.append(g);h.jqxButton({theme:theme,width:90,height:20});h.click(function(j){d=-1;$("#popupWindow").jqxWindow({position:{x:110,y:30}});$("#name").val("Nieuwe brouwset");$("#boil_size").val(18);$("#batch_size").val(15.3);$("#tun_volume").val(20);$("#tun_weight").val(2);$("#tun_specific_heat").val(0.11);$("#tun_material").val(0);$("#tun_height").val(20);$("#top_up_water").val(0);$("#trub_chiller_loss").val(0.5);$("#evap_rate").val(1.8);$("#boil_time").val(90);$("#calc_boil_volume").val(1);$("#top_up_kettle").val(0);$("#hop_utilization").val(100);$("#notes").val("");$("#lauter_volume").val(20);$("#lauter_height").val(20);$("#lauter_deadspace").val(0.5);$("#kettle_volume").val(20);$("#kettle_height").val(20);$("#mash_volume").val(18);$("#mash_max").val(6);$("#efficiency").val(75);$("#popupWindow").jqxWindow("open")})},filterable:false,ready:function(){$("#boil_size").on("change",function(g){c()});$("#evap_rate").on("change",function(g){c()});$("#boil_time").on("change",function(g){c()});$("#top_up_kettle").on("change",function(g){c()});$("#calc_boil_volume").on("change",function(g){c()});$("#tun_material").on("change",function(g){b.tun_specific_heat=MaterialData[g.args.index].sh;$("#tun_specific_heat").val(b.tun_specific_heat)})},columns:[{text:"Installatie naam",datafield:"name",width:200},{text:"Kook volume",datafield:"boil_size",width:110,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Batch volume",datafield:"batch_size",width:110,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Opmerkingen",datafield:"notes"},{text:"",datafield:"Edit",width:100,align:"center",columntype:"button",cellsrenderer:function(){return"Wijzig"},buttonclick:function(g){d=g;$("#popupWindow").jqxWindow({position:{x:110,y:30}});b=$("#jqxgrid").jqxGrid("getrowdata",d);$("#name").val(b.name);$("#boil_size").val(b.boil_size);$("#batch_size").val(b.batch_size);$("#tun_volume").val(b.tun_volume);$("#tun_weight").val(b.tun_weight);$("#tun_specific_heat").val(b.tun_specific_heat);$("#tun_material").val(b.tun_material);$("#tun_height").val(b.tun_height);$("#top_up_water").val(b.top_up_water);$("#trub_chiller_loss").val(b.trub_chiller_loss);$("#evap_rate").val(b.evap_rate);$("#boil_time").val(b.boil_time);$("#calc_boil_volume").val(b.calc_boil_volume);$("#top_up_kettle").val(b.top_up_kettle);$("#hop_utilization").val(b.hop_utilization);$("#notes").val(b.notes);$("#lauter_volume").val(b.lauter_volume);$("#lauter_height").val(b.lauter_height);$("#lauter_deadspace").val(b.lauter_deadspace);$("#kettle_volume").val(b.kettle_volume);$("#kettle_height").val(b.kettle_height);$("#mash_volume").val(b.mash_volume);$("#mash_max").val(b.mash_max);$("#efficiency").val(b.efficiency);$("#popupWindow").jqxWindow("open")}}]});$("#popupWindow").jqxWindow({width:1050,height:600,resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#Cancel"),modalOpacity:0.4});$("#popupWindow").on("open",function(){$("#name").jqxInput("selectAll")});$("#Delete").jqxButton({template:"danger",width:"90px",theme:theme});$("#Delete").click(function(){if(d>=0){$("#eventWindow").jqxWindow("open");$("#delOk").click(function(){var g=$("#jqxgrid").jqxGrid("getrowid",d);$("#jqxgrid").jqxGrid("deleterow",g)})}$("#popupWindow").jqxWindow("hide")});$("#Cancel").jqxButton({template:"primary",width:"90px",theme:theme});$("#Save").jqxButton({template:"success",width:"90px",theme:theme});$("#Save").click(function(){var h,g=-1;if(d>=0){g=$("#jqxgrid").jqxGrid("getrowid",d)}h={record:g,name:$("#name").val(),boil_size:parseFloat($("#boil_size").jqxNumberInput("decimal")),batch_size:parseFloat($("#batch_size").jqxNumberInput("decimal")),tun_volume:parseFloat($("#tun_volume").jqxNumberInput("decimal")),tun_weight:parseFloat($("#tun_weight").jqxNumberInput("decimal")),tun_specific_heat:parseFloat($("#tun_specific_heat").jqxNumberInput("decimal")),tun_material:$("#tun_material").val(),tun_height:parseFloat($("#tun_height").jqxNumberInput("decimal")),top_up_water:parseFloat($("#top_up_water").jqxNumberInput("decimal")),trub_chiller_loss:parseFloat($("#trub_chiller_loss").jqxNumberInput("decimal")),evap_rate:parseFloat($("#evap_rate").jqxNumberInput("decimal")),boil_time:parseFloat($("#boil_time").jqxNumberInput("decimal")),calc_boil_volume:$("#calc_boil_volume").val(),top_up_kettle:parseFloat($("#top_up_kettle").jqxNumberInput("decimal")),hop_utilization:parseFloat($("#hop_utilization").jqxNumberInput("decimal")),notes:$("#notes").val(),lauter_volume:parseFloat($("#lauter_volume").jqxNumberInput("decimal")),lauter_height:parseFloat($("#lauter_height").jqxNumberInput("decimal")),lauter_deadspace:parseFloat($("#lauter_deadspace").jqxNumberInput("decimal")),kettle_volume:parseFloat($("#kettle_volume").jqxNumberInput("decimal")),kettle_height:parseFloat($("#kettle_height").jqxNumberInput("decimal")),mash_volume:parseFloat($("#mash_volume").jqxNumberInput("decimal")),mash_max:parseFloat($("#mash_max").jqxNumberInput("decimal")),efficiency:parseFloat($("#efficiency").jqxNumberInput("decimal"))};if(d>=0){$("#jqxgrid").jqxGrid("updaterow",g,h)}else{$("#jqxgrid").jqxGrid("addrow",null,h)}$("#popupWindow").jqxWindow("hide")});createDelElements()}); \ No newline at end of file +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({template:"danger",width:"65px",theme:theme});$("#delCancel").jqxButton({template:"success",width:"65px",theme:theme});$("#delCancel").focus()}});$("#eventWindow").jqxWindow("hide")}$(document).ready(function(){function c(){var j=$("#calc_boil_volume").val(),k=parseFloat($("#boil_size").jqxNumberInput("decimal")),l=parseFloat($("#evap_rate").jqxNumberInput("decimal")),g=parseFloat($("#boil_time").jqxNumberInput("decimal")),h=parseFloat($("#top_up_kettle").jqxNumberInput("decimal")),i;if(j){i=k-(l*g/60)+h;$("#batch_size").val(i)}}$("#name").jqxTooltip({content:"The unique name of this brew equipment."});$("#notes").jqxTooltip({content:"Some notes about the equipment."});$("#tun_volume").jqxTooltip({content:"Mash TUN volume."});$("#tun_height").jqxTooltip({content:"Mash TUN height in cm."});$("#tun_weight").jqxTooltip({content:"Mash TUN weight in Kg."});$("#tun_material").jqxTooltip({content:"Mash TUN material. Needed to calculate the right strike temperature."});$("#mash_volume").jqxTooltip({content:"Liters maisch water voor de eerste maisch stap."});$("#mash_max").jqxTooltip({content:"Maximale moutstort voor deze installatie in Kg."});$("#lauter_volume").jqxTooltip({content:"Total lauter volume."});$("#lauter_height").jqxTooltip({content:"Height of the lauter TUN in cm."});$("#lauter_deadspace").jqxTooltip({content:"Volume loss in the lauter TUN."});$("#efficiency").jqxTooltip({content:"Average efficiency."});$("#kettle_volume").jqxTooltip({content:"Boil kettle volume in liters."});$("#kettle_height").jqxTooltip({content:"Boil kettle height in cm."});$("#boil_size").jqxTooltip({content:"Normal boil volume in liters"});$("#evap_rate").jqxTooltip({content:"Evaporation in liters per hour."});$("#boil_time").jqxTooltip({content:"Normal boil time in minutes."});$("#top_up_kettle").jqxTooltip({content:"Extra water added to the boil."});$("#hop_utilization").jqxTooltip({content:"100% for smaller installations, higher for large breweries."});$("#batch_size").jqxTooltip({content:"Calculated batch size, liters at end of the boil."});$("#trub_chiller_loss").jqxTooltip({content:"Standard loss in liters during transfer to the fermenter."});var b={},a="includes/db_inventory_equipments.php",e={datatype:"json",cache:false,datafields:[{name:"record",type:"number"},{name:"name",type:"string"},{name:"boil_size",type:"float"},{name:"batch_size",type:"float"},{name:"tun_volume",type:"float"},{name:"tun_weight",type:"float"},{name:"tun_specific_heat",type:"float"},{name:"tun_material",type:"int"},{name:"tun_height",type:"float"},{name:"top_up_water",type:"float"},{name:"trub_chiller_loss",type:"float"},{name:"evap_rate",type:"float"},{name:"boil_time",type:"float"},{name:"calc_boil_volume",type:"int"},{name:"top_up_kettle",type:"float"},{name:"hop_utilization",type:"float"},{name:"notes",type:"string"},{name:"lauter_volume",type:"float"},{name:"lauter_height",type:"float"},{name:"lauter_deadspace",type:"float"},{name:"kettle_volume",type:"float"},{name:"kettle_height",type:"float"},{name:"mash_volume",type:"float"},{name:"mash_max",type:"float"},{name:"efficiency",type:"float"}],id:"record",url:a,deleterow:function(g,i){var h="delete=true&"+$.param({record:g});$.ajax({dataType:"json",url:a,cache:false,data:h,type:"POST",success:function(k,j,l){i(true);location.reload(true)},error:function(j,l,k){i(false)}})},addrow:function(h,k,g,j){var i="insert=true&"+$.param(k);$.ajax({dataType:"json",url:a,cache:false,data:i,type:"POST",success:function(m,l,n){j(true);location.reload(true)},error:function(l,n,m){j(false)}})},updaterow:function(g,j,i){var h="update=true&"+$.param(j);$.ajax({dataType:"json",url:a,cache:false,data:h,type:"POST",success:function(l,k,m){i(true);location.reload(true)},error:function(k,m,l){i(false)}})}},f=new $.jqx.dataAdapter(e),d=-1;$("#name").jqxInput({theme:theme,width:250,height:23});$("#notes").jqxInput({theme:theme,width:640,height:100});$("#boil_size").jqxNumberInput(Spin1dec);$("#batch_size").jqxNumberInput(Spin2dec);$("#batch_size").jqxNumberInput({spinButtonsStep:0.5});$("#tun_volume").jqxNumberInput(Spin1dec);$("#tun_weight").jqxNumberInput(Spin2dec);$("#tun_specific_heat").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:70,height:23,decimalDigits:3});$("#tun_material").jqxDropDownList({theme:theme,source:MaterialAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#tun_height").jqxNumberInput(Spin1dec);$("#top_up_water").jqxNumberInput(Spin1dec);$("#trub_chiller_loss").jqxNumberInput(Spin1dec);$("#evap_rate").jqxNumberInput(Spin2dec);$("#boil_time").jqxNumberInput(PosInt);$("#boil_time").jqxNumberInput({max:1440});$("#calc_boil_volume").jqxCheckBox({theme:theme,width:120,height:23});$("#calc_boil_volume").on("checked",function(g){$("#batch_size").jqxNumberInput({readOnly:true,width:90,spinButtons:false})});$("#calc_boil_volume").on("unchecked",function(g){$("#batch_size").jqxNumberInput({readOnly:false,width:110,spinButtons:true})});$("#top_up_kettle").jqxNumberInput(Spin1dec);$("#hop_utilization").jqxNumberInput(Perc0);$("#hop_utilization").jqxNumberInput({Max:200});$("#lauter_volume").jqxNumberInput(Spin1dec);$("#lauter_height").jqxNumberInput(Spin1dec);$("#lauter_deadspace").jqxNumberInput(Spin1dec);$("#kettle_volume").jqxNumberInput(Spin1dec);$("#kettle_height").jqxNumberInput(Spin1dec);$("#mash_volume").jqxNumberInput(Spin1dec);$("#mash_max").jqxNumberInput(Spin1dec);$("#efficiency").jqxNumberInput(Perc1dec);$("#jqxgrid").jqxGrid({width:1280,height:630,source:f,theme:theme,showstatusbar:true,renderstatusbar:function(i){var h,g=$("
      ");h=$("
      Nieuw
      ");g.append(h);i.append(g);h.jqxButton({theme:theme,width:90,height:20});h.click(function(j){d=-1;$("#popupWindow").jqxWindow({position:{x:110,y:30}});$("#name").val("Nieuwe brouwset");$("#boil_size").val(18);$("#batch_size").val(15.3);$("#tun_volume").val(20);$("#tun_weight").val(2);$("#tun_specific_heat").val(0.11);$("#tun_material").val(0);$("#tun_height").val(20);$("#top_up_water").val(0);$("#trub_chiller_loss").val(0.5);$("#evap_rate").val(1.8);$("#boil_time").val(90);$("#calc_boil_volume").val(1);$("#top_up_kettle").val(0);$("#hop_utilization").val(100);$("#notes").val("");$("#lauter_volume").val(20);$("#lauter_height").val(20);$("#lauter_deadspace").val(0.5);$("#kettle_volume").val(20);$("#kettle_height").val(20);$("#mash_volume").val(18);$("#mash_max").val(6);$("#efficiency").val(75);$("#popupWindow").jqxWindow("open")})},filterable:false,ready:function(){$("#boil_size").on("change",function(g){c()});$("#evap_rate").on("change",function(g){c()});$("#boil_time").on("change",function(g){c()});$("#top_up_kettle").on("change",function(g){c()});$("#calc_boil_volume").on("change",function(g){c()});$("#tun_material").on("change",function(g){b.tun_specific_heat=MaterialData[g.args.index].sh;$("#tun_specific_heat").val(b.tun_specific_heat)})},columns:[{text:"Installatie naam",datafield:"name",width:200},{text:"Kook volume",datafield:"boil_size",width:110,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Batch volume",datafield:"batch_size",width:110,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Opmerkingen",datafield:"notes"},{text:"",datafield:"Edit",width:100,align:"center",columntype:"button",cellsrenderer:function(){return"Wijzig"},buttonclick:function(g){d=g;$("#popupWindow").jqxWindow({position:{x:110,y:30}});b=$("#jqxgrid").jqxGrid("getrowdata",d);$("#name").val(b.name);$("#boil_size").val(b.boil_size);$("#batch_size").val(b.batch_size);$("#tun_volume").val(b.tun_volume);$("#tun_weight").val(b.tun_weight);$("#tun_specific_heat").val(b.tun_specific_heat);$("#tun_material").val(b.tun_material);$("#tun_height").val(b.tun_height);$("#top_up_water").val(b.top_up_water);$("#trub_chiller_loss").val(b.trub_chiller_loss);$("#evap_rate").val(b.evap_rate);$("#boil_time").val(b.boil_time);$("#calc_boil_volume").val(b.calc_boil_volume);$("#top_up_kettle").val(b.top_up_kettle);$("#hop_utilization").val(b.hop_utilization);$("#notes").val(b.notes);$("#lauter_volume").val(b.lauter_volume);$("#lauter_height").val(b.lauter_height);$("#lauter_deadspace").val(b.lauter_deadspace);$("#kettle_volume").val(b.kettle_volume);$("#kettle_height").val(b.kettle_height);$("#mash_volume").val(b.mash_volume);$("#mash_max").val(b.mash_max);$("#efficiency").val(b.efficiency);$("#popupWindow").jqxWindow("open")}}]});$("#popupWindow").jqxWindow({width:1050,height:600,resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#Cancel"),modalOpacity:0.4});$("#popupWindow").on("open",function(){$("#name").jqxInput("selectAll")});$("#Delete").jqxButton({template:"danger",width:"90px",theme:theme});$("#Delete").click(function(){if(d>=0){$("#eventWindow").jqxWindow("open");$("#delOk").click(function(){var g=$("#jqxgrid").jqxGrid("getrowid",d);$("#jqxgrid").jqxGrid("deleterow",g)})}$("#popupWindow").jqxWindow("hide")});$("#Cancel").jqxButton({template:"primary",width:"90px",theme:theme});$("#Save").jqxButton({template:"success",width:"90px",theme:theme});$("#Save").click(function(){var h,g=-1;if(d>=0){g=$("#jqxgrid").jqxGrid("getrowid",d)}h={record:g,name:$("#name").val(),boil_size:parseFloat($("#boil_size").jqxNumberInput("decimal")),batch_size:parseFloat($("#batch_size").jqxNumberInput("decimal")),tun_volume:parseFloat($("#tun_volume").jqxNumberInput("decimal")),tun_weight:parseFloat($("#tun_weight").jqxNumberInput("decimal")),tun_specific_heat:parseFloat($("#tun_specific_heat").jqxNumberInput("decimal")),tun_material:$("#tun_material").val(),tun_height:parseFloat($("#tun_height").jqxNumberInput("decimal")),top_up_water:parseFloat($("#top_up_water").jqxNumberInput("decimal")),trub_chiller_loss:parseFloat($("#trub_chiller_loss").jqxNumberInput("decimal")),evap_rate:parseFloat($("#evap_rate").jqxNumberInput("decimal")),boil_time:parseFloat($("#boil_time").jqxNumberInput("decimal")),calc_boil_volume:$("#calc_boil_volume").val(),top_up_kettle:parseFloat($("#top_up_kettle").jqxNumberInput("decimal")),hop_utilization:parseFloat($("#hop_utilization").jqxNumberInput("decimal")),notes:$("#notes").val(),lauter_volume:parseFloat($("#lauter_volume").jqxNumberInput("decimal")),lauter_height:parseFloat($("#lauter_height").jqxNumberInput("decimal")),lauter_deadspace:parseFloat($("#lauter_deadspace").jqxNumberInput("decimal")),kettle_volume:parseFloat($("#kettle_volume").jqxNumberInput("decimal")),kettle_height:parseFloat($("#kettle_height").jqxNumberInput("decimal")),mash_volume:parseFloat($("#mash_volume").jqxNumberInput("decimal")),mash_max:parseFloat($("#mash_max").jqxNumberInput("decimal")),efficiency:parseFloat($("#efficiency").jqxNumberInput("decimal"))};if(d>=0){$("#jqxgrid").jqxGrid("updaterow",g,h)}else{$("#jqxgrid").jqxGrid("addrow",null,h)}$("#popupWindow").jqxWindow("hide")});createDelElements()}); \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/inv_equipments.js --- a/www/js/inv_equipments.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/inv_equipments.js Fri Oct 18 13:12:46 2019 +0200 @@ -168,7 +168,9 @@ } }); } - }; + }, + dataAdapter = new $.jqx.dataAdapter(source), + editrow = -1; // initialize the input fields. $("#name").jqxInput({ theme: theme, width: 250, height: 23 }); @@ -213,8 +215,6 @@ $("#mash_max").jqxNumberInput( Spin1dec ); $("#efficiency").jqxNumberInput( Perc1dec ); - var dataAdapter = new $.jqx.dataAdapter(source); - var editrow = -1; // initialize jqxGrid $("#jqxgrid").jqxGrid({ width: 1280, diff -r 9e43b216ccd3 -r d25a1b160dba www/js/inv_fermentables-min.js --- a/www/js/inv_fermentables-min.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/inv_fermentables-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -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({template:"danger",width:"65px",theme:theme});$("#delCancel").jqxButton({template:"success",width:"65px",theme:theme});$("#delCancel").focus()}});$("#eventWindow").jqxWindow("hide")}$(document).ready(function(){function d(h,g){$("#totval").val(h*g)}var b={},a="includes/db_inventory_fermentables.php",e={datatype:"json",cache:false,datafields:[{name:"record",type:"number"},{name:"name",type:"string"},{name:"type",type:"int"},{name:"yield",type:"float"},{name:"color",type:"float"},{name:"add_after_boil",type:"int"},{name:"origin",type:"string"},{name:"supplier",type:"string"},{name:"notes",type:"string"},{name:"coarse_fine_diff",type:"float"},{name:"moisture",type:"float"},{name:"diastatic_power",type:"float"},{name:"protein",type:"float"},{name:"dissolved_protein",type:"float"},{name:"max_in_batch",type:"float"},{name:"recommend_mash",type:"int"},{name:"added",type:"int"},{name:"always_on_stock",type:"int"},{name:"di_ph",type:"float"},{name:"acid_to_ph_57",type:"float"},{name:"graintype",type:"int"},{name:"inventory",type:"float"},{name:"cost",type:"float"},{name:"production_date",type:"string"},{name:"tht_date",type:"string"}],id:"record",url:a,deleterow:function(g,i){var h="delete=true&"+$.param({record:g});$.ajax({dataType:"json",url:a,cache:false,data:h,type:"POST",success:function(k,j,l){i(true);location.reload(true)},error:function(j,l,k){i(false)}})},addrow:function(h,k,g,j){var i="insert=true&"+$.param(k);$.ajax({dataType:"json",url:a,cache:false,data:i,type:"POST",success:function(m,l,n){j(true);location.reload(true)},error:function(l,n,m){j(false)}})},updaterow:function(g,j,i){var h="update=true&"+$.param(j);$.ajax({dataType:"json",url:a,cache:false,data:h,type:"POST",success:function(l,k,m){i(true);location.reload(true)},error:function(k,m,l){i(false)}})}},f=new $.jqx.dataAdapter(e),c=-1;$("#name").jqxInput({theme:theme,width:640,height:23});$("#type").jqxDropDownList({theme:theme,source:FermentableTypeAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#yield").jqxNumberInput(Spin1dec);$("#color").jqxNumberInput(Spin1dec);$("#add_after_boil").jqxCheckBox({theme:theme,width:120,height:23});$("#origin").jqxInput({theme:theme,width:250,height:23});$("#supplier").jqxInput({theme:theme,width:250,height:23});$("#notes").jqxInput({theme:theme,width:640,height:100});$("#coarse_fine_diff").jqxNumberInput(Spin1dec);$("#moisture").jqxNumberInput(Spin1dec);$("#diastatic_power").jqxNumberInput(PosInt);$("#protein").jqxNumberInput(Spin1dec);$("#dissolved_protein").jqxNumberInput(Spin1dec);$("#max_in_batch").jqxNumberInput(Perc1dec);$("#recommend_mash").jqxCheckBox({theme:theme,width:120,height:23});$("#added").jqxDropDownList({theme:theme,source:AddedAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#always_on_stock").jqxCheckBox({theme:theme,width:120,height:23});$("#di_ph").jqxNumberInput(Spin2pH);$("#acid_to_ph_57").jqxNumberInput({inputMode:"simple",theme:theme,width:110,height:23,min:-1000,max:1000,decimalDigits:4,spinButtons:true});$("#graintype").jqxDropDownList({theme:theme,source:GrainTypeAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#inventory").jqxNumberInput(Spin3dec);$("#production_date").jqxDateTimeInput(Dateopts);$("#cost").jqxNumberInput(Spin2dec);$("#tht_date").jqxDateTimeInput(Dateopts);$("#totval").jqxNumberInput(Show2dec);$("#jqxgrid").jqxGrid({width:1280,height:630,source:f,theme:theme,showstatusbar:true,renderstatusbar:function(i){var g,h,j;g=$("
      ");h=$("
      Nieuw
      ");j=$("
      Import
      ");g.append(h);g.append(j);i.append(g);h.jqxButton({theme:theme,width:90,height:20});j.jqxButton({theme:theme,width:90,height:20});h.click(function(k){c=-1;$("#popupWindow").jqxWindow({position:{x:110,y:30}});$("#name").val("Nieuw product");$("#type").val(0);$("#origin").val("");$("#supplier").val("");$("#notes").val("");$("#yield").val(80);$("#color").val(3);$("#coarse_fine_diff").val(3);$("#moisture").val(4);$("#diastatic_power").val(0);$("#protein").val(0);$("#dissolved_protein").val(0);$("#max_in_batch").val(100);$("#recommend_mash").val(1);$("#always_on_stock").val(0);$("#di_ph").val(0);$("#acid_to_ph_57").val(0);$("#graintype").val(0);$("#add_after_boil").val(0);$("#added").val(0);$("#inventory").val(0);$("#cost").val(0);$("#production_date").val("");$("#tht_date").val("");$("#popupWindow").jqxWindow("open")});j.click(function(k){window.location.href="import_ingredients.php?select=fermentables"})},filterable:true,filtermode:"excel",columns:[{text:"Herkomst",datafield:"origin",width:150},{text:"Producent",datafield:"supplier",width:140},{text:"Vergistbaar product",datafield:"name",menu:false},{text:"Soort",width:135,filtertype:"list",datafield:"type",cellsrenderer:function(h,g,k,j,i,l){return""+FermentableTypeData[k].nl+""}},{text:"Graan type",datafield:"graintype",align:"center",cellsalign:"center",width:125,cellsrenderer:function(h,g,k,j,i,l){return""+GrainTypeData[k].nl+""}},{text:"EBC",datafield:"color",width:60,align:"right",menu:false,cellsalign:"right"},{text:"Opbrengst",datafield:"yield",width:70,align:"right",menu:false,cellsalign:"right",cellsformat:"p1"},{text:"Voorraad",datafield:"inventory",width:100,align:"right",menu:false,cellsrenderer:function(h,g,l,k,j,m){var i="";if(l>0){if(l<1){i=f.formatNumber(l*1000,"f0")+" gr"}else{i=f.formatNumber(l,"f1")+" kg"}}return""+i+""}},{text:"",datafield:"Edit",width:100,align:"center",menu:false,columntype:"button",cellsrenderer:function(){return"Wijzig"},buttonclick:function(g){c=g;$("#popupWindow").jqxWindow({position:{x:110,y:30}});b=$("#jqxgrid").jqxGrid("getrowdata",c);$("#name").val(b.name);$("#type").val(b.type);$("#yield").val(b.yield);$("#color").val(b.color);$("#add_after_boil").val(b.add_after_boil);$("#origin").val(b.origin);$("#supplier").val(b.supplier);$("#notes").val(b.notes);$("#coarse_fine_diff").val(b.coarse_fine_diff);$("#moisture").val(b.moisture);$("#diastatic_power").val(lintner_to_kolbach(b.diastatic_power));$("#protein").val(b.protein);$("#dissolved_protein").val(b.dissolved_protein);$("#max_in_batch").val(b.max_in_batch);$("#recommend_mash").val(b.recommend_mash);$("#added").val(b.added);$("#always_on_stock").val(b.always_on_stock);$("#di_ph").val(b.di_ph);$("#acid_to_ph_57").val(b.acid_to_ph_57);$("#graintype").val(b.graintype);$("#inventory").val(b.inventory);$("#cost").val(b.cost);$("#production_date").val(b.production_date);$("#tht_date").val(b.tht_date);d(b.cost,b.inventory);$("#popupWindow").jqxWindow("open")}}]});$("#cost").on("change",function(g){b.cost=parseFloat(g.args.value);d(b.cost,b.inventory)});$("#inventory").on("change",function(g){b.inventory=parseFloat(g.args.value);d(b.cost,b.inventory)});$("#popupWindow").jqxWindow({width:1050,height:550,resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#Cancel"),modalOpacity:0.4});$("#popupWindow").on("open",function(){$("#name").jqxInput("selectAll")});$("#Delete").jqxButton({template:"danger",width:"90px",theme:theme});$("#Delete").click(function(){if(c>=0){$("#eventWindow").jqxWindow("open");$("#delOk").click(function(){var g=$("#jqxgrid").jqxGrid("getrowid",c);$("#jqxgrid").jqxGrid("deleterow",g)})}$("#popupWindow").jqxWindow("hide")});$("#Cancel").jqxButton({template:"primary",width:"90px",theme:theme});$("#Clone").jqxButton({template:"warning",width:"90px",theme:theme});$("#Clone").click(function(){var g={record:-1,name:$("#name").val()+" kopie",type:$("#type").val(),yield:parseFloat($("#yield").jqxNumberInput("decimal")),color:parseFloat($("#color").jqxNumberInput("decimal")),add_after_boil:$("#add_after_boil").val(),origin:$("#origin").val(),supplier:$("#supplier").val(),notes:$("#notes").val(),coarse_fine_diff:parseFloat($("#coarse_fine_diff").jqxNumberInput("decimal")),moisture:parseFloat($("#moisture").jqxNumberInput("decimal")),diastatic_power:kolbach_to_lintner(parseFloat($("#diastatic_power").jqxNumberInput("decimal"))),protein:parseFloat($("#protein").jqxNumberInput("decimal")),dissolved_protein:parseFloat($("#dissolved_protein").jqxNumberInput("decimal")),max_in_batch:parseFloat($("#max_in_batch").jqxNumberInput("decimal")),recommend_mash:$("#recommend_mash").val(),added:$("#added").val(),always_on_stock:$("#always_on_stock").val(),di_ph:parseFloat($("#di_ph").jqxNumberInput("decimal")),acid_to_ph_57:parseFloat($("#acid_to_ph_57").jqxNumberInput("decimal")),graintype:$("#graintype").val(),inventory:0,cost:parseFloat($("#cost").jqxNumberInput("decimal")),production_date:"",tht_date:""};$("#jqxgrid").jqxGrid("addrow",null,g);$("#popupWindow").jqxWindow("hide")});$("#Save").jqxButton({template:"success",width:"90px",theme:theme});$("#Save").click(function(){var h,g=-1;if(c>=0){g=$("#jqxgrid").jqxGrid("getrowid",c)}h={record:g,name:$("#name").val(),type:$("#type").val(),yield:parseFloat($("#yield").jqxNumberInput("decimal")),color:parseFloat($("#color").jqxNumberInput("decimal")),add_after_boil:$("#add_after_boil").val(),origin:$("#origin").val(),supplier:$("#supplier").val(),notes:$("#notes").val(),coarse_fine_diff:parseFloat($("#coarse_fine_diff").jqxNumberInput("decimal")),moisture:parseFloat($("#moisture").jqxNumberInput("decimal")),diastatic_power:kolbach_to_lintner(parseFloat($("#diastatic_power").jqxNumberInput("decimal"))),protein:parseFloat($("#protein").jqxNumberInput("decimal")),dissolved_protein:parseFloat($("#dissolved_protein").jqxNumberInput("decimal")),max_in_batch:parseFloat($("#max_in_batch").jqxNumberInput("decimal")),recommend_mash:$("#recommend_mash").val(),added:$("#added").val(),always_on_stock:$("#always_on_stock").val(),di_ph:parseFloat($("#di_ph").jqxNumberInput("decimal")),acid_to_ph_57:parseFloat($("#acid_to_ph_57").jqxNumberInput("decimal")),graintype:$("#graintype").val(),inventory:parseFloat($("#inventory").jqxNumberInput("decimal")),cost:parseFloat($("#cost").jqxNumberInput("decimal")),production_date:$("#production_date").val(),tht_date:$("#tht_date").val(),};if(c>=0){$("#jqxgrid").jqxGrid("updaterow",g,h)}else{$("#jqxgrid").jqxGrid("addrow",null,h)}$("#popupWindow").jqxWindow("hide")});createDelElements()}); \ No newline at end of file +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({template:"danger",width:"65px",theme:theme});$("#delCancel").jqxButton({template:"success",width:"65px",theme:theme});$("#delCancel").focus()}});$("#eventWindow").jqxWindow("hide")}$(document).ready(function(){function d(h,g){$("#totval").val(h*g)}var b={},a="includes/db_inventory_fermentables.php",e={datatype:"json",cache:false,datafields:[{name:"record",type:"number"},{name:"name",type:"string"},{name:"type",type:"string"},{name:"yield",type:"float"},{name:"color",type:"float"},{name:"add_after_boil",type:"int"},{name:"origin",type:"string"},{name:"supplier",type:"string"},{name:"notes",type:"string"},{name:"coarse_fine_diff",type:"float"},{name:"moisture",type:"float"},{name:"diastatic_power",type:"float"},{name:"protein",type:"float"},{name:"dissolved_protein",type:"float"},{name:"max_in_batch",type:"float"},{name:"recommend_mash",type:"int"},{name:"added",type:"string"},{name:"always_on_stock",type:"int"},{name:"di_ph",type:"float"},{name:"acid_to_ph_57",type:"float"},{name:"graintype",type:"string"},{name:"inventory",type:"float"},{name:"cost",type:"float"},{name:"production_date",type:"string"},{name:"tht_date",type:"string"}],id:"record",url:a,deleterow:function(g,i){var h="delete=true&"+$.param({record:g});$.ajax({dataType:"json",url:a,cache:false,data:h,type:"POST",success:function(k,j,l){i(true);location.reload(true)},error:function(j,l,k){i(false)}})},addrow:function(h,k,g,j){var i="insert=true&"+$.param(k);$.ajax({dataType:"json",url:a,cache:false,data:i,type:"POST",success:function(m,l,n){j(true);location.reload(true)},error:function(l,n,m){j(false)}})},updaterow:function(g,j,i){var h="update=true&"+$.param(j);$.ajax({dataType:"json",url:a,cache:false,data:h,type:"POST",success:function(l,k,m){i(true);location.reload(true)},error:function(k,m,l){i(false)}})}},f=new $.jqx.dataAdapter(e),c=-1;$("#name").jqxInput({theme:theme,width:640,height:23});$("#type").jqxDropDownList({theme:theme,source:FermentableTypeAdapter,valueMember:"nl",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#yield").jqxNumberInput(Spin1dec);$("#color").jqxNumberInput(Spin1dec);$("#add_after_boil").jqxCheckBox({theme:theme,width:120,height:23});$("#origin").jqxInput({theme:theme,width:250,height:23});$("#supplier").jqxInput({theme:theme,width:250,height:23});$("#notes").jqxInput({theme:theme,width:640,height:100});$("#coarse_fine_diff").jqxNumberInput(Spin1dec);$("#moisture").jqxNumberInput(Spin1dec);$("#diastatic_power").jqxNumberInput(PosInt);$("#protein").jqxNumberInput(Spin1dec);$("#dissolved_protein").jqxNumberInput(Spin1dec);$("#max_in_batch").jqxNumberInput(Perc1dec);$("#recommend_mash").jqxCheckBox({theme:theme,width:120,height:23});$("#added").jqxDropDownList({theme:theme,source:AddedAdapter,valueMember:"nl",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#always_on_stock").jqxCheckBox({theme:theme,width:120,height:23});$("#di_ph").jqxNumberInput(Spin2pH);$("#acid_to_ph_57").jqxNumberInput({inputMode:"simple",theme:theme,width:110,height:23,min:-1000,max:1000,decimalDigits:4,spinButtons:true});$("#graintype").jqxDropDownList({theme:theme,source:GrainTypeAdapter,valueMember:"nl",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#inventory").jqxNumberInput(Spin3dec);$("#production_date").jqxDateTimeInput(Dateopts);$("#cost").jqxNumberInput(Spin2dec);$("#tht_date").jqxDateTimeInput(Dateopts);$("#totval").jqxNumberInput(Show2dec);$("#jqxgrid").jqxGrid({width:1280,height:630,source:f,theme:theme,showstatusbar:true,renderstatusbar:function(i){var g,h,j;g=$("
      ");h=$("
      Nieuw
      ");j=$("
      Import
      ");g.append(h);g.append(j);i.append(g);h.jqxButton({theme:theme,width:90,height:20});j.jqxButton({theme:theme,width:90,height:20});h.click(function(k){c=-1;$("#popupWindow").jqxWindow({position:{x:110,y:30}});$("#name").val("Nieuw product");$("#type").val("Mout");$("#origin").val("");$("#supplier").val("");$("#notes").val("");$("#yield").val(80);$("#color").val(3);$("#coarse_fine_diff").val(3);$("#moisture").val(4);$("#diastatic_power").val(0);$("#protein").val(0);$("#dissolved_protein").val(0);$("#max_in_batch").val(100);$("#recommend_mash").val(1);$("#always_on_stock").val(0);$("#di_ph").val(0);$("#acid_to_ph_57").val(0);$("#graintype").val("Basismout");$("#add_after_boil").val(0);$("#added").val("Maischen");$("#inventory").val(0);$("#cost").val(0);$("#production_date").val("");$("#tht_date").val("");$("#popupWindow").jqxWindow("open")});j.click(function(k){window.location.href="import_ingredients.php?select=fermentables"})},filterable:true,filtermode:"excel",columns:[{text:"Herkomst",datafield:"origin",width:150},{text:"Producent",datafield:"supplier",width:140},{text:"Vergistbaar product",datafield:"name",menu:false},{text:"Soort",width:135,filtertype:"list",datafield:"type"},{text:"Graan type",datafield:"graintype",align:"center",cellsalign:"center",width:125},{text:"EBC",datafield:"color",width:60,align:"right",menu:false,cellsalign:"right"},{text:"Opbrengst",datafield:"yield",width:70,align:"right",menu:false,cellsalign:"right",cellsformat:"p1"},{text:"Voorraad",datafield:"inventory",width:100,align:"right",menu:false,cellsrenderer:function(h,g,l,k,j,m){var i="";if(l>0){if(l<1){i=f.formatNumber(l*1000,"f0")+" gr"}else{i=f.formatNumber(l,"f1")+" kg"}}return""+i+""}},{text:"",datafield:"Edit",width:100,align:"center",menu:false,columntype:"button",cellsrenderer:function(){return"Wijzig"},buttonclick:function(g){c=g;$("#popupWindow").jqxWindow({position:{x:110,y:30}});b=$("#jqxgrid").jqxGrid("getrowdata",c);$("#name").val(b.name);$("#type").val(b.type);$("#yield").val(b.yield);$("#color").val(b.color);$("#add_after_boil").val(b.add_after_boil);$("#origin").val(b.origin);$("#supplier").val(b.supplier);$("#notes").val(b.notes);$("#coarse_fine_diff").val(b.coarse_fine_diff);$("#moisture").val(b.moisture);$("#diastatic_power").val(lintner_to_kolbach(b.diastatic_power));$("#protein").val(b.protein);$("#dissolved_protein").val(b.dissolved_protein);$("#max_in_batch").val(b.max_in_batch);$("#recommend_mash").val(b.recommend_mash);$("#added").val(b.added);$("#always_on_stock").val(b.always_on_stock);$("#di_ph").val(b.di_ph);$("#acid_to_ph_57").val(b.acid_to_ph_57);$("#graintype").val(b.graintype);$("#inventory").val(b.inventory);$("#cost").val(b.cost);$("#production_date").val(b.production_date);$("#tht_date").val(b.tht_date);d(b.cost,b.inventory);$("#popupWindow").jqxWindow("open")}}]});$("#cost").on("change",function(g){b.cost=parseFloat(g.args.value);d(b.cost,b.inventory)});$("#inventory").on("change",function(g){b.inventory=parseFloat(g.args.value);d(b.cost,b.inventory)});$("#popupWindow").jqxWindow({width:1050,height:550,resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#Cancel"),modalOpacity:0.4});$("#popupWindow").on("open",function(){$("#name").jqxInput("selectAll")});$("#Delete").jqxButton({template:"danger",width:"90px",theme:theme});$("#Delete").click(function(){if(c>=0){$("#eventWindow").jqxWindow("open");$("#delOk").click(function(){var g=$("#jqxgrid").jqxGrid("getrowid",c);$("#jqxgrid").jqxGrid("deleterow",g)})}$("#popupWindow").jqxWindow("hide")});$("#Cancel").jqxButton({template:"primary",width:"90px",theme:theme});$("#Clone").jqxButton({template:"warning",width:"90px",theme:theme});$("#Clone").click(function(){var g={record:-1,name:$("#name").val()+" kopie",type:$("#type").val(),yield:parseFloat($("#yield").jqxNumberInput("decimal")),color:parseFloat($("#color").jqxNumberInput("decimal")),add_after_boil:$("#add_after_boil").val(),origin:$("#origin").val(),supplier:$("#supplier").val(),notes:$("#notes").val(),coarse_fine_diff:parseFloat($("#coarse_fine_diff").jqxNumberInput("decimal")),moisture:parseFloat($("#moisture").jqxNumberInput("decimal")),diastatic_power:kolbach_to_lintner(parseFloat($("#diastatic_power").jqxNumberInput("decimal"))),protein:parseFloat($("#protein").jqxNumberInput("decimal")),dissolved_protein:parseFloat($("#dissolved_protein").jqxNumberInput("decimal")),max_in_batch:parseFloat($("#max_in_batch").jqxNumberInput("decimal")),recommend_mash:$("#recommend_mash").val(),added:$("#added").val(),always_on_stock:$("#always_on_stock").val(),di_ph:parseFloat($("#di_ph").jqxNumberInput("decimal")),acid_to_ph_57:parseFloat($("#acid_to_ph_57").jqxNumberInput("decimal")),graintype:$("#graintype").val(),inventory:0,cost:parseFloat($("#cost").jqxNumberInput("decimal")),production_date:"",tht_date:""};$("#jqxgrid").jqxGrid("addrow",null,g);$("#popupWindow").jqxWindow("hide")});$("#Save").jqxButton({template:"success",width:"90px",theme:theme});$("#Save").click(function(){var h,g=-1;if(c>=0){g=$("#jqxgrid").jqxGrid("getrowid",c)}h={record:g,name:$("#name").val(),type:$("#type").val(),yield:parseFloat($("#yield").jqxNumberInput("decimal")),color:parseFloat($("#color").jqxNumberInput("decimal")),add_after_boil:$("#add_after_boil").val(),origin:$("#origin").val(),supplier:$("#supplier").val(),notes:$("#notes").val(),coarse_fine_diff:parseFloat($("#coarse_fine_diff").jqxNumberInput("decimal")),moisture:parseFloat($("#moisture").jqxNumberInput("decimal")),diastatic_power:kolbach_to_lintner(parseFloat($("#diastatic_power").jqxNumberInput("decimal"))),protein:parseFloat($("#protein").jqxNumberInput("decimal")),dissolved_protein:parseFloat($("#dissolved_protein").jqxNumberInput("decimal")),max_in_batch:parseFloat($("#max_in_batch").jqxNumberInput("decimal")),recommend_mash:$("#recommend_mash").val(),added:$("#added").val(),always_on_stock:$("#always_on_stock").val(),di_ph:parseFloat($("#di_ph").jqxNumberInput("decimal")),acid_to_ph_57:parseFloat($("#acid_to_ph_57").jqxNumberInput("decimal")),graintype:$("#graintype").val(),inventory:parseFloat($("#inventory").jqxNumberInput("decimal")),cost:parseFloat($("#cost").jqxNumberInput("decimal")),production_date:$("#production_date").val(),tht_date:$("#tht_date").val(),};if(c>=0){$("#jqxgrid").jqxGrid("updaterow",g,h)}else{$("#jqxgrid").jqxGrid("addrow",null,h)}$("#popupWindow").jqxWindow("hide")});createDelElements()}); \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/inv_fermentables.js --- a/www/js/inv_fermentables.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/inv_fermentables.js Fri Oct 18 13:12:46 2019 +0200 @@ -58,7 +58,7 @@ datafields: [ { name: 'record', type: 'number' }, { name: 'name', type: 'string' }, - { name: 'type', type: 'int' }, + { name: 'type', type: 'string' }, { name: 'yield', type: 'float' }, { name: 'color', type: 'float' }, { name: 'add_after_boil', type: 'int' }, @@ -72,11 +72,11 @@ { name: 'dissolved_protein', type: 'float' }, { name: 'max_in_batch', type: 'float' }, { name: 'recommend_mash', type: 'int' }, - { name: 'added', type: 'int' }, + { name: 'added', type: 'string' }, { name: 'always_on_stock', type: 'int' }, { name: 'di_ph', type: 'float' }, { name: 'acid_to_ph_57', type: 'float' }, - { name: 'graintype', type: 'int' }, + { name: 'graintype', type: 'string' }, { name: 'inventory', type: 'float' }, { name: 'cost', type: 'float' }, { name: 'production_date', type: 'string' }, @@ -145,7 +145,7 @@ $("#type").jqxDropDownList({ theme: theme, source: FermentableTypeAdapter, - valueMember: 'id', + valueMember: 'nl', displayMember: 'nl', width: 180, height: 23, @@ -167,7 +167,7 @@ $("#added").jqxDropDownList({ theme: theme, source: AddedAdapter, - valueMember: 'id', + valueMember: 'nl', displayMember: 'nl', width: 180, height: 23, @@ -179,7 +179,7 @@ $("#graintype").jqxDropDownList({ theme: theme, source: GrainTypeAdapter, - valueMember: 'id', + valueMember: 'nl', displayMember: 'nl', width: 180, height: 23, @@ -213,7 +213,7 @@ editrow = -1; $("#popupWindow").jqxWindow({ position: { x: 110, y: 30 } }); $("#name").val('Nieuw product'); - $("#type").val(0); + $("#type").val('Mout'); $("#origin").val(''); $("#supplier").val(''); $("#notes").val(''); @@ -229,9 +229,9 @@ $("#always_on_stock").val(0); $("#di_ph").val(0); $("#acid_to_ph_57").val(0); - $("#graintype").val(0); + $("#graintype").val('Basismout'); $("#add_after_boil").val(0); - $("#added").val(0); + $("#added").val('Maischen'); $("#inventory").val(0); $("#cost").val(0); $("#production_date").val(''); @@ -248,16 +248,8 @@ { text: 'Herkomst', datafield: 'origin', width: 150 }, { text: 'Producent', datafield: 'supplier', width: 140 }, { text: 'Vergistbaar product', datafield: 'name', menu: false }, - { text: 'Soort', width: 135, filtertype: 'list', datafield: 'type', - cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) { - return "" + FermentableTypeData[value].nl + ""; - } - }, - { text: 'Graan type', datafield: 'graintype', align: 'center', cellsalign: 'center', width: 125, - cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) { - return "" + GrainTypeData[value].nl + ""; - } - }, + { text: 'Soort', width: 135, filtertype: 'list', datafield: 'type' }, + { text: 'Graan type', datafield: 'graintype', align: 'center', cellsalign: 'center', width: 125 }, { text: 'EBC', datafield: 'color', width: 60, align: 'right', menu: false, cellsalign: 'right' }, { text: 'Opbrengst', datafield: 'yield', width: 70, align: 'right', menu: false, cellsalign: 'right', cellsformat: 'p1' }, { text: 'Voorraad', datafield: 'inventory', width: 100, align: 'right', menu: false, diff -r 9e43b216ccd3 -r d25a1b160dba www/js/inv_hops-min.js --- a/www/js/inv_hops-min.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/inv_hops-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -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({template:"danger",width:"65px",theme:theme});$("#delCancel").jqxButton({template:"success",width:"65px",theme:theme});$("#delCancel").focus()}});$("#eventWindow").jqxWindow("hide")}$(document).ready(function(){function d(h,g){$("#totval").val(h*(g/1000))}var b={},a="includes/db_inventory_hops.php",e={datatype:"json",cache:false,datafields:[{name:"record",type:"number"},{name:"name",type:"string"},{name:"alpha",type:"float"},{name:"beta",type:"float"},{name:"humulene",type:"float"},{name:"caryophyllene",type:"float"},{name:"cohumulone",type:"float"},{name:"myrcene",type:"float"},{name:"hsi",type:"float"},{name:"type",type:"int"},{name:"form",type:"int"},{name:"notes",type:"string"},{name:"origin",type:"string"},{name:"substitutes",type:"string"},{name:"always_on_stock",type:"int"},{name:"inventory",type:"float"},{name:"cost",type:"float"},{name:"production_date",type:"string"},{name:"tht_date",type:"string"},{name:"total_oil",type:"float"}],id:"record",url:a,deleterow:function(g,i){var h="delete=true&"+$.param({record:g});$.ajax({dataType:"json",url:a,cache:false,data:h,type:"POST",success:function(k,j,l){i(true);location.reload(true)},error:function(j,l,k){i(false)}})},addrow:function(h,k,g,j){var i="insert=true&"+$.param(k);$.ajax({dataType:"json",url:a,cache:false,data:i,type:"POST",success:function(m,l,n){j(true);location.reload(true)},error:function(l,n,m){j(false)}})},updaterow:function(g,j,i){var h="update=true&"+$.param(j);$.ajax({dataType:"json",url:a,cache:false,data:h,type:"POST",success:function(l,k,m){i(true);location.reload(true)},error:function(k,m,l){i(false)}})}},f=new $.jqx.dataAdapter(e),c=-1;$("#name").jqxInput({theme:theme,width:640,height:23});$("#alpha").jqxNumberInput(Perc1dec);$("#beta").jqxNumberInput(Perc1dec);$("#humulene").jqxNumberInput(Perc1dec);$("#caryophyllene").jqxNumberInput(Perc1dec);$("#cohumulone").jqxNumberInput(Perc1dec);$("#myrcene").jqxNumberInput(Perc1dec);$("#hsi").jqxNumberInput(Perc1dec);$("#type").jqxDropDownList({theme:theme,source:HopTypeAdapter,valueMember:"id",displayMember:"nl",width:150,height:23,autoDropDownHeight:true});$("#form").jqxDropDownList({theme:theme,source:HopFormAdapter,valueMember:"id",displayMember:"nl",width:150,height:23,autoDropDownHeight:true});$("#notes").jqxInput({theme:theme,width:640,height:100});$("#origin").jqxInput({theme:theme,width:320,height:23});$("#substitutes").jqxInput({theme:theme,width:320,height:23});$("#always_on_stock").jqxCheckBox({theme:theme,width:120,height:23});$("#inventory").jqxNumberInput(Spin1dec);$("#production_date").jqxDateTimeInput(Dateopts);$("#cost").jqxNumberInput(Spin2dec);$("#tht_date").jqxDateTimeInput(Dateopts);$("#total_oil").jqxNumberInput(Perc1dec);$("#totval").jqxNumberInput(Show2dec);$("#jqxgrid").jqxGrid({width:1280,height:630,source:f,theme:theme,showstatusbar:true,renderstatusbar:function(i){var g,h,j;g=$("
      ");h=$("
      Nieuw
      ");j=$("
      Import
      ");g.append(h);g.append(j);i.append(g);h.jqxButton({theme:theme,width:90,height:20});j.jqxButton({theme:theme,width:90,height:20});h.click(function(k){c=-1;$("#popupWindow").jqxWindow({position:{x:110,y:30}});$("#name").val("Nieuwe hop");$("#alpha").val(0);$("#beta").val(0);$("#humulene").val(0);$("#caryophyllene").val(0);$("#cohumulone").val(0);$("#myrcene").val(0);$("#hsi").val(0);$("#type").val(0);$("#form").val(0);$("#notes").val("");$("#origin").val("");$("#substitutes").val("");$("#always_on_stock").val(0);$("#inventory").val(0);$("#cost").val(0);$("#production_date").val("");$("#tht_date").val("");$("#total_oil").val(0);$("#popupWindow").jqxWindow("open")});j.click(function(k){window.location.href="import_ingredients.php?select=hops"})},filterable:true,filtermode:"excel",columns:[{text:"Herkomst",datafield:"origin",width:150},{text:"Hop Naam",datafield:"name",menu:false},{text:"Soort",datafield:"type",align:"left",menu:false,width:90,cellsrenderer:function(h,g,k,j,i,l){return''+HopTypeData[k].nl+""}},{text:"Vorm",datafield:"form",align:"left",menu:false,width:90,cellsrenderer:function(h,g,k,j,i,l){return''+HopFormData[k].nl+""}},{text:"Alpha %",datafield:"alpha",width:80,align:"right",cellsalign:"right",menu:false,cellsformat:"p1"},{text:"Beta %",datafield:"beta",width:80,align:"right",cellsalign:"right",menu:false,cellsformat:"p1"},{text:"Cohumuloon %%",datafield:"cohumulone",width:80,align:"right",cellsalign:"right",menu:false,cellsformat:"p1"},{text:"HSI",datafield:"hsi",width:60,align:"right",cellsalign:"right",menu:false,cellsformat:"f1"},{text:"Oogst datum",datafield:"production_date",align:"center",cellsalign:"center",menu:false,width:110},{text:"Voorraad",datafield:"inventory",width:100,align:"right",cellsalign:"right",menu:false,cellsformat:"f1",cellsrenderer:function(h,g,l,k,j,m){var i="";if(l>0){if(l<1000){i=f.formatNumber(l,"f1")+" gr"}else{i=f.formatNumber(l/1000,"f1")+" kg"}}return''+i+""}},{text:"",datafield:"Wijzig",columntype:"button",width:100,align:"center",menu:false,cellsrenderer:function(){return"Wijzig"},buttonclick:function(g){c=g;$("#popupWindow").jqxWindow({position:{x:110,y:30}});b=$("#jqxgrid").jqxGrid("getrowdata",c);$("#name").val(b.name);$("#alpha").val(b.alpha);$("#beta").val(b.beta);$("#humulene").val(b.humulene);$("#caryophyllene").val(b.caryophyllene);$("#cohumulone").val(b.cohumulone);$("#myrcene").val(b.myrcene);$("#hsi").val(b.hsi);$("#type").val(b.type);$("#form").val(b.form);$("#notes").val(b.notes);$("#origin").val(b.origin);$("#substitutes").val(b.substitutes);$("#always_on_stock").val(b.always_on_stock);$("#inventory").val(b.inventory);$("#cost").val(b.cost);$("#production_date").val(b.production_date);$("#tht_date").val(b.tht_date);$("#total_oil").val(b.total_oil);d(b.cost,b.inventory);$("#popupWindow").jqxWindow("open")}}]});$("#cost").on("change",function(g){b.cost=parseFloat(g.args.value);d(b.cost,b.inventory)});$("#inventory").on("change",function(g){b.inventory=parseFloat(g.args.value);d(b.cost,b.inventory)});$("#popupWindow").jqxWindow({width:1050,height:550,resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#Cancel"),modalOpacity:0.4});$("#popupWindow").on("open",function(){$("#name").jqxInput("selectAll")});$("#Delete").jqxButton({template:"danger",width:"90px",theme:theme});$("#Delete").click(function(){if(c>=0){$("#eventWindow").jqxWindow("open");$("#delOk").click(function(){var g=$("#jqxgrid").jqxGrid("getrowid",c);$("#jqxgrid").jqxGrid("deleterow",g)})}$("#popupWindow").jqxWindow("hide")});$("#Cancel").jqxButton({template:"primary",width:"90px",theme:theme});$("#Clone").jqxButton({template:"warning",width:"90px",theme:theme});$("#Clone").click(function(){var g={record:-1,name:$("#name").val()+" kopie",alpha:parseFloat($("#alpha").jqxNumberInput("decimal")),beta:parseFloat($("#beta").jqxNumberInput("decimal")),humulene:parseFloat($("#humulene").jqxNumberInput("decimal")),caryophyllene:parseFloat($("#caryophyllene").jqxNumberInput("decimal")),cohumulone:parseFloat($("#cohumulone").jqxNumberInput("decimal")),myrcene:parseFloat($("#myrcene").jqxNumberInput("decimal")),hsi:parseFloat($("#hsi").jqxNumberInput("decimal")),type:$("#type").val(),form:$("#form").val(),notes:$("#notes").val(),origin:$("#origin").val(),substitutes:$("#substitutes").val(),always_on_stock:$("#always_on_stock").val(),inventory:0,cost:parseFloat($("#cost").jqxNumberInput("decimal")),production_date:"",tht_date:"",total_oil:parseFloat($("#total_oil").jqxNumberInput("decimal"))};$("#jqxgrid").jqxGrid("addrow",null,g);$("#popupWindow").jqxWindow("hide")});$("#Save").jqxButton({template:"success",width:"90px",theme:theme});$("#Save").click(function(){var h,g=-1;if(c>=0){g=$("#jqxgrid").jqxGrid("getrowid",c)}h={record:g,name:$("#name").val(),alpha:parseFloat($("#alpha").jqxNumberInput("decimal")),beta:parseFloat($("#beta").jqxNumberInput("decimal")),humulene:parseFloat($("#humulene").jqxNumberInput("decimal")),caryophyllene:parseFloat($("#caryophyllene").jqxNumberInput("decimal")),cohumulone:parseFloat($("#cohumulone").jqxNumberInput("decimal")),myrcene:parseFloat($("#myrcene").jqxNumberInput("decimal")),hsi:parseFloat($("#hsi").jqxNumberInput("decimal")),type:$("#type").val(),form:$("#form").val(),notes:$("#notes").val(),origin:$("#origin").val(),substitutes:$("#substitutes").val(),always_on_stock:$("#always_on_stock").val(),inventory:parseFloat($("#inventory").jqxNumberInput("decimal")),cost:parseFloat($("#cost").jqxNumberInput("decimal")),production_date:$("#production_date").val(),tht_date:$("#tht_date").val(),total_oil:parseFloat($("#total_oil").jqxNumberInput("decimal"))};if(c>=0){$("#jqxgrid").jqxGrid("updaterow",g,h)}else{$("#jqxgrid").jqxGrid("addrow",null,h)}$("#popupWindow").jqxWindow("hide")});createDelElements()}); \ No newline at end of file +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({template:"danger",width:"65px",theme:theme});$("#delCancel").jqxButton({template:"success",width:"65px",theme:theme});$("#delCancel").focus()}});$("#eventWindow").jqxWindow("hide")}$(document).ready(function(){function d(h,g){$("#totval").val(h*(g/1000))}var b={},a="includes/db_inventory_hops.php",e={datatype:"json",cache:false,datafields:[{name:"record",type:"number"},{name:"name",type:"string"},{name:"alpha",type:"float"},{name:"beta",type:"float"},{name:"humulene",type:"float"},{name:"caryophyllene",type:"float"},{name:"cohumulone",type:"float"},{name:"myrcene",type:"float"},{name:"hsi",type:"float"},{name:"type",type:"string"},{name:"form",type:"string"},{name:"notes",type:"string"},{name:"origin",type:"string"},{name:"substitutes",type:"string"},{name:"always_on_stock",type:"int"},{name:"inventory",type:"float"},{name:"cost",type:"float"},{name:"production_date",type:"string"},{name:"tht_date",type:"string"},{name:"total_oil",type:"float"}],id:"record",url:a,deleterow:function(g,i){var h="delete=true&"+$.param({record:g});$.ajax({dataType:"json",url:a,cache:false,data:h,type:"POST",success:function(k,j,l){i(true);location.reload(true)},error:function(j,l,k){i(false)}})},addrow:function(h,k,g,j){var i="insert=true&"+$.param(k);$.ajax({dataType:"json",url:a,cache:false,data:i,type:"POST",success:function(m,l,n){j(true);location.reload(true)},error:function(l,n,m){j(false)}})},updaterow:function(g,j,i){var h="update=true&"+$.param(j);$.ajax({dataType:"json",url:a,cache:false,data:h,type:"POST",success:function(l,k,m){i(true);location.reload(true)},error:function(k,m,l){i(false)}})}},f=new $.jqx.dataAdapter(e),c=-1;$("#name").jqxInput({theme:theme,width:640,height:23});$("#alpha").jqxNumberInput(Perc1dec);$("#beta").jqxNumberInput(Perc1dec);$("#humulene").jqxNumberInput(Perc1dec);$("#caryophyllene").jqxNumberInput(Perc1dec);$("#cohumulone").jqxNumberInput(Perc1dec);$("#myrcene").jqxNumberInput(Perc1dec);$("#hsi").jqxNumberInput(Perc1dec);$("#type").jqxDropDownList({theme:theme,source:HopTypeAdapter,valueMember:"nl",displayMember:"nl",width:150,height:23,autoDropDownHeight:true});$("#form").jqxDropDownList({theme:theme,source:HopFormAdapter,valueMember:"nl",displayMember:"nl",width:150,height:23,autoDropDownHeight:true});$("#notes").jqxInput({theme:theme,width:640,height:100});$("#origin").jqxInput({theme:theme,width:320,height:23});$("#substitutes").jqxInput({theme:theme,width:320,height:23});$("#always_on_stock").jqxCheckBox({theme:theme,width:120,height:23});$("#inventory").jqxNumberInput(Spin1dec);$("#production_date").jqxDateTimeInput(Dateopts);$("#cost").jqxNumberInput(Spin2dec);$("#tht_date").jqxDateTimeInput(Dateopts);$("#total_oil").jqxNumberInput(Perc1dec);$("#totval").jqxNumberInput(Show2dec);$("#jqxgrid").jqxGrid({width:1280,height:630,source:f,theme:theme,showstatusbar:true,renderstatusbar:function(i){var g,h,j;g=$("
      ");h=$("
      Nieuw
      ");j=$("
      Import
      ");g.append(h);g.append(j);i.append(g);h.jqxButton({theme:theme,width:90,height:20});j.jqxButton({theme:theme,width:90,height:20});h.click(function(k){c=-1;$("#popupWindow").jqxWindow({position:{x:110,y:30}});$("#name").val("Nieuwe hop");$("#alpha").val(0);$("#beta").val(0);$("#humulene").val(0);$("#caryophyllene").val(0);$("#cohumulone").val(0);$("#myrcene").val(0);$("#hsi").val(0);$("#type").val("Bitterhop");$("#form").val("Pellets");$("#notes").val("");$("#origin").val("");$("#substitutes").val("");$("#always_on_stock").val(0);$("#inventory").val(0);$("#cost").val(0);$("#production_date").val("");$("#tht_date").val("");$("#total_oil").val(0);$("#popupWindow").jqxWindow("open")});j.click(function(k){window.location.href="import_ingredients.php?select=hops"})},filterable:true,filtermode:"excel",columns:[{text:"Herkomst",datafield:"origin",width:150},{text:"Hop Naam",datafield:"name",menu:false},{text:"Soort",datafield:"type",align:"left",width:90},{text:"Vorm",datafield:"form",align:"left",width:90},{text:"Alpha %",datafield:"alpha",width:80,align:"right",cellsalign:"right",menu:false,cellsformat:"p1"},{text:"Beta %",datafield:"beta",width:80,align:"right",cellsalign:"right",menu:false,cellsformat:"p1"},{text:"Cohumuloon %%",datafield:"cohumulone",width:80,align:"right",cellsalign:"right",menu:false,cellsformat:"p1"},{text:"HSI",datafield:"hsi",width:60,align:"right",cellsalign:"right",menu:false,cellsformat:"f1"},{text:"Oogst datum",datafield:"production_date",align:"center",cellsalign:"center",menu:false,width:110},{text:"Voorraad",datafield:"inventory",width:100,align:"right",cellsalign:"right",menu:false,cellsformat:"f1",cellsrenderer:function(h,g,l,k,j,m){var i="";if(l>0){if(l<1000){i=f.formatNumber(l,"f1")+" gr"}else{i=f.formatNumber(l/1000,"f1")+" kg"}}return''+i+""}},{text:"",datafield:"Wijzig",columntype:"button",width:100,align:"center",menu:false,cellsrenderer:function(){return"Wijzig"},buttonclick:function(g){c=g;$("#popupWindow").jqxWindow({position:{x:110,y:30}});b=$("#jqxgrid").jqxGrid("getrowdata",c);$("#name").val(b.name);$("#alpha").val(b.alpha);$("#beta").val(b.beta);$("#humulene").val(b.humulene);$("#caryophyllene").val(b.caryophyllene);$("#cohumulone").val(b.cohumulone);$("#myrcene").val(b.myrcene);$("#hsi").val(b.hsi);$("#type").val(b.type);$("#form").val(b.form);$("#notes").val(b.notes);$("#origin").val(b.origin);$("#substitutes").val(b.substitutes);$("#always_on_stock").val(b.always_on_stock);$("#inventory").val(b.inventory);$("#cost").val(b.cost);$("#production_date").val(b.production_date);$("#tht_date").val(b.tht_date);$("#total_oil").val(b.total_oil);d(b.cost,b.inventory);$("#popupWindow").jqxWindow("open")}}]});$("#cost").on("change",function(g){b.cost=parseFloat(g.args.value);d(b.cost,b.inventory)});$("#inventory").on("change",function(g){b.inventory=parseFloat(g.args.value);d(b.cost,b.inventory)});$("#popupWindow").jqxWindow({width:1050,height:550,resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#Cancel"),modalOpacity:0.4});$("#popupWindow").on("open",function(){$("#name").jqxInput("selectAll")});$("#Delete").jqxButton({template:"danger",width:"90px",theme:theme});$("#Delete").click(function(){if(c>=0){$("#eventWindow").jqxWindow("open");$("#delOk").click(function(){var g=$("#jqxgrid").jqxGrid("getrowid",c);$("#jqxgrid").jqxGrid("deleterow",g)})}$("#popupWindow").jqxWindow("hide")});$("#Cancel").jqxButton({template:"primary",width:"90px",theme:theme});$("#Clone").jqxButton({template:"warning",width:"90px",theme:theme});$("#Clone").click(function(){var g={record:-1,name:$("#name").val()+" kopie",alpha:parseFloat($("#alpha").jqxNumberInput("decimal")),beta:parseFloat($("#beta").jqxNumberInput("decimal")),humulene:parseFloat($("#humulene").jqxNumberInput("decimal")),caryophyllene:parseFloat($("#caryophyllene").jqxNumberInput("decimal")),cohumulone:parseFloat($("#cohumulone").jqxNumberInput("decimal")),myrcene:parseFloat($("#myrcene").jqxNumberInput("decimal")),hsi:parseFloat($("#hsi").jqxNumberInput("decimal")),type:$("#type").val(),form:$("#form").val(),notes:$("#notes").val(),origin:$("#origin").val(),substitutes:$("#substitutes").val(),always_on_stock:$("#always_on_stock").val(),inventory:0,cost:parseFloat($("#cost").jqxNumberInput("decimal")),production_date:"",tht_date:"",total_oil:parseFloat($("#total_oil").jqxNumberInput("decimal"))};$("#jqxgrid").jqxGrid("addrow",null,g);$("#popupWindow").jqxWindow("hide")});$("#Save").jqxButton({template:"success",width:"90px",theme:theme});$("#Save").click(function(){var h,g=-1;if(c>=0){g=$("#jqxgrid").jqxGrid("getrowid",c)}h={record:g,name:$("#name").val(),alpha:parseFloat($("#alpha").jqxNumberInput("decimal")),beta:parseFloat($("#beta").jqxNumberInput("decimal")),humulene:parseFloat($("#humulene").jqxNumberInput("decimal")),caryophyllene:parseFloat($("#caryophyllene").jqxNumberInput("decimal")),cohumulone:parseFloat($("#cohumulone").jqxNumberInput("decimal")),myrcene:parseFloat($("#myrcene").jqxNumberInput("decimal")),hsi:parseFloat($("#hsi").jqxNumberInput("decimal")),type:$("#type").val(),form:$("#form").val(),notes:$("#notes").val(),origin:$("#origin").val(),substitutes:$("#substitutes").val(),always_on_stock:$("#always_on_stock").val(),inventory:parseFloat($("#inventory").jqxNumberInput("decimal")),cost:parseFloat($("#cost").jqxNumberInput("decimal")),production_date:$("#production_date").val(),tht_date:$("#tht_date").val(),total_oil:parseFloat($("#total_oil").jqxNumberInput("decimal"))};if(c>=0){$("#jqxgrid").jqxGrid("updaterow",g,h)}else{$("#jqxgrid").jqxGrid("addrow",null,h)}$("#popupWindow").jqxWindow("hide")});createDelElements()}); \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/inv_hops.js --- a/www/js/inv_hops.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/inv_hops.js Fri Oct 18 13:12:46 2019 +0200 @@ -65,8 +65,8 @@ { name: 'cohumulone', type: 'float' }, { name: 'myrcene', type: 'float' }, { name: 'hsi', type: 'float' }, - { name: 'type', type: 'int' }, - { name: 'form', type: 'int' }, + { name: 'type', type: 'string' }, + { name: 'form', type: 'string' }, { name: 'notes', type: 'string' }, { name: 'origin', type: 'string' }, { name: 'substitutes', type: 'string' }, @@ -148,7 +148,7 @@ $("#type").jqxDropDownList({ theme: theme, source: HopTypeAdapter, - valueMember: 'id', + valueMember: 'nl', displayMember: 'nl', width: 150, height: 23, @@ -157,7 +157,7 @@ $("#form").jqxDropDownList({ theme: theme, source: HopFormAdapter, - valueMember: 'id', + valueMember: 'nl', displayMember: 'nl', width: 150, height: 23, @@ -203,8 +203,8 @@ $("#cohumulone").val(0); $("#myrcene").val(0); $("#hsi").val(0); - $("#type").val(0); - $("#form").val(0); + $("#type").val('Bitterhop'); + $("#form").val('Pellets'); $("#notes").val(''); $("#origin").val(''); $("#substitutes").val(''); @@ -225,16 +225,8 @@ columns: [ { text: 'Herkomst', datafield: 'origin', width: 150 }, { text: 'Hop Naam', datafield: 'name', menu: false }, - { text: 'Soort', datafield: 'type', align: 'left', menu: false, width: 90, - cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) { - return '' + HopTypeData[value].nl + ''; - } - }, - { text: 'Vorm', datafield: 'form', align: 'left', menu: false, width: 90, - cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) { - return '' + HopFormData[value].nl + ''; - } - }, + { text: 'Soort', datafield: 'type', align: 'left', width: 90 }, + { text: 'Vorm', datafield: 'form', align: 'left', width: 90 }, { text: 'Alpha %', datafield: 'alpha', width: 80, align: 'right', cellsalign: 'right', menu: false, cellsformat: 'p1' }, { text: 'Beta %', datafield: 'beta', width: 80, align: 'right', cellsalign: 'right', menu: false, cellsformat: 'p1' }, { text: 'Cohumuloon %%', datafield: 'cohumulone', width: 80, align: 'right', cellsalign: 'right', menu: false, cellsformat: 'p1' }, diff -r 9e43b216ccd3 -r d25a1b160dba www/js/inv_miscs-min.js --- a/www/js/inv_miscs-min.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/inv_miscs-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -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({template:"danger",width:"65px",theme:theme});$("#delCancel").jqxButton({template:"success",width:"65px",theme:theme});$("#delCancel").focus()}});$("#eventWindow").jqxWindow("hide")}$(document).ready(function(){function e(i,h){$("#totval").val(i*(h/1000))}function a(h){if(h){$("#pmpt_cost").html("Prijs per kg:");$("#pmpt_inventory").html("Voorraad gram:")}else{$("#pmpt_cost").html("Prijs per liter:");$("#pmpt_inventory").html("Voorraad ml:")}}var c={},b="includes/db_inventory_miscs.php",f={datatype:"json",cache:false,datafields:[{name:"record",type:"number"},{name:"name",type:"string"},{name:"type",type:"int"},{name:"use_use",type:"int"},{name:"time",type:"int"},{name:"amount",type:"float"},{name:"amount_is_weight",type:"int"},{name:"use_for",type:"string"},{name:"notes",type:"string"},{name:"always_on_stock",type:"int"},{name:"inventory",type:"float"},{name:"cost",type:"float"},{name:"production_date",type:"string"},{name:"tht_date",type:"string"}],id:"record",url:b,deleterow:function(h,j){var i="delete=true&"+$.param({record:h});$.ajax({dataType:"json",url:b,cache:false,data:i,type:"POST",success:function(l,k,m){j(true);location.reload(true)},error:function(k,m,l){j(false)}})},addrow:function(i,l,h,k){var j="insert=true&"+$.param(l);$.ajax({dataType:"json",url:b,cache:false,data:j,type:"POST",success:function(n,m,o){k(true);location.reload(true)},error:function(m,o,n){k(false)}})},updaterow:function(h,k,j){var i="update=true&"+$.param(k);$.ajax({dataType:"json",url:b,cache:false,data:i,type:"POST",success:function(m,l,n){j(true);location.reload(true)},error:function(l,n,m){j(false)}})}},g=new $.jqx.dataAdapter(f),d=-1;$("#name").jqxInput({theme:theme,width:640,height:23});$("#notes").jqxInput({theme:theme,width:800,height:100});$("#type").jqxDropDownList({theme:theme,source:MiscTypeAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#use_use").jqxDropDownList({theme:theme,source:MiscUseAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#time").jqxNumberInput(PosInt);$("#amount_is_weight").jqxCheckBox({theme:theme,width:120,height:23});$("#use_for").jqxInput({theme:theme,width:640,height:48});$("#always_on_stock").jqxCheckBox({theme:theme,width:120,height:23});$("#inventory").jqxNumberInput(Spin1dec);$("#production_date").jqxDateTimeInput(Dateopts);$("#cost").jqxNumberInput(Spin2dec);$("#tht_date").jqxDateTimeInput(Dateopts);$("#totval").jqxNumberInput(Show2dec);$("#jqxgrid").jqxGrid({width:1280,height:630,source:g,theme:theme,showstatusbar:true,renderstatusbar:function(j){var h,i,k;h=$("
      ");i=$("
      Nieuw
      ");k=$("
      Import
      ");h.append(i);h.append(k);j.append(h);i.jqxButton({theme:theme,width:90,height:20});k.jqxButton({theme:theme,width:90,height:20});i.click(function(l){d=-1;$("#popupWindow").jqxWindow({position:{x:110,y:30}});$("#name").val("");$("#type").val(0);$("#use_use").val(0);$("#time").val(0);$("#amount_is_weight").val(1);$("#use_for").val("");$("#notes").val("");$("#always_on_stock").val(0);$("#inventory").val(0);$("#cost").val(0);$("#production_date").val("");$("#tht_date").val("");$("#popupWindow").jqxWindow("open")});k.click(function(l){window.location.href="import_ingredients.php?select=miscs"})},filterable:true,filtermode:"excel",columns:[{text:"Ingredient naam",datafield:"name",menu:false},{text:"Type",datafield:"type",align:"left",width:120,cellsrenderer:function(i,h,l,k,j,m){return""+MiscTypeData[l].nl+""}},{text:"Gebruik",datafield:"use_use",align:"left",width:120,cellsrenderer:function(i,h,l,k,j,m){return""+MiscUseData[l].nl+""}},{text:"Tijd",datafield:"time",width:90,align:"left",menu:false,cellsrenderer:function(i,h,l,k,j,n){var m="";if(l>0){if(l==1){m="1 minuut"}else{if(l<60){m=g.formatNumber(l,"f0")+" minuten"}else{if(l==60){m="1 uur"}else{if(l<1440){m=g.formatNumber(l/60,"f0")+" uren"}else{if(l==1440){m="1 dag"}else{m=g.formatNumber(l/1440,"f0")+" dagen"}}}}}}return""+m+""}},{text:"Voorraad",datafield:"inventory",width:110,menu:false,align:"right",cellsrenderer:function(i,h,m,l,k,n){var j="";if(m>0){if(n.amount_is_weight){j=g.formatNumber(m,"f1")+" gr"}else{j=g.formatNumber(m,"f1")+" ml"}}return""+j+""}},{text:"THT datum",datafield:"tht_date",width:100,menu:false,align:"center",cellsalign:"center"},{text:"",datafield:"Edit",columntype:"button",width:100,menu:false,align:"center",cellsrenderer:function(){return"Wijzig"},buttonclick:function(h){d=h;$("#popupWindow").jqxWindow({position:{x:110,y:30}});c=$("#jqxgrid").jqxGrid("getrowdata",d);$("#name").val(c.name);$("#type").val(c.type);$("#use_use").val(c.use_use);$("#time").val(c.time);$("#amount_is_weight").val(c.amount_is_weight);$("#use_for").val(c.use_for);$("#notes").val(c.notes);$("#always_on_stock").val(c.always_on_stock);$("#inventory").val(c.inventory);$("#cost").val(c.cost);$("#production_date").val(c.production_date);$("#tht_date").val(c.tht_date);e(c.cost,c.inventory);a(c.amount_is_weight);$("#popupWindow").jqxWindow("open")}}]});$("#cost").on("change",function(h){c.cost=parseFloat(h.args.value);e(c.cost,c.inventory)});$("#inventory").on("change",function(h){c.inventory=parseFloat(h.args.value);e(c.cost,c.inventory)});$("#amount_is_weight").on("checked",function(h){c.amount_is_weight=true;a(true)});$("#amount_is_weight").on("unchecked",function(h){c.amount_is_weight=false;a(false)});$("#popupWindow").jqxWindow({width:1050,height:550,resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#Cancel"),modalOpacity:0.4});$("#popupWindow").on("open",function(){$("#name").jqxInput("selectAll")});$("#Delete").jqxButton({template:"danger",width:"90px",theme:theme});$("#Delete").click(function(){if(d>=0){$("#eventWindow").jqxWindow("open");$("#delOk").click(function(){var h=$("#jqxgrid").jqxGrid("getrowid",d);$("#jqxgrid").jqxGrid("deleterow",h)})}$("#popupWindow").jqxWindow("hide")});$("#Cancel").jqxButton({template:"primary",width:"90px",theme:theme});$("#Save").jqxButton({template:"success",width:"90px",theme:theme});$("#Save").click(function(){var i,h=-1;if(d>=0){h=$("#jqxgrid").jqxGrid("getrowid",d)}i={record:h,name:$("#name").val(),type:$("#type").val(),use_use:$("#use_use").val(),time:parseFloat($("#time").jqxNumberInput("decimal")),amount_is_weight:$("#amount_is_weight").val(),use_for:$("#use_for").val(),notes:$("#notes").val(),always_on_stock:$("#always_on_stock").val(),inventory:parseFloat($("#inventory").jqxNumberInput("decimal")),cost:parseFloat($("#cost").jqxNumberInput("decimal")),production_date:$("#production_date").val(),tht_date:$("#tht_date").val()};if(d>=0){$("#jqxgrid").jqxGrid("updaterow",h,i)}else{$("#jqxgrid").jqxGrid("addrow",null,i)}$("#popupWindow").jqxWindow("hide")});createDelElements()}); \ No newline at end of file +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({template:"danger",width:"65px",theme:theme});$("#delCancel").jqxButton({template:"success",width:"65px",theme:theme});$("#delCancel").focus()}});$("#eventWindow").jqxWindow("hide")}$(document).ready(function(){function e(i,h){$("#totval").val(i*(h/1000))}function a(h){if(h){$("#pmpt_cost").html("Prijs per kg:");$("#pmpt_inventory").html("Voorraad gram:")}else{$("#pmpt_cost").html("Prijs per liter:");$("#pmpt_inventory").html("Voorraad ml:")}}var c={},b="includes/db_inventory_miscs.php",f={datatype:"json",cache:false,datafields:[{name:"record",type:"number"},{name:"name",type:"string"},{name:"type",type:"string"},{name:"use_use",type:"string"},{name:"time",type:"int"},{name:"amount",type:"float"},{name:"amount_is_weight",type:"int"},{name:"use_for",type:"string"},{name:"notes",type:"string"},{name:"always_on_stock",type:"int"},{name:"inventory",type:"float"},{name:"cost",type:"float"},{name:"production_date",type:"string"},{name:"tht_date",type:"string"}],id:"record",url:b,deleterow:function(h,j){var i="delete=true&"+$.param({record:h});$.ajax({dataType:"json",url:b,cache:false,data:i,type:"POST",success:function(l,k,m){j(true);location.reload(true)},error:function(k,m,l){j(false)}})},addrow:function(i,l,h,k){var j="insert=true&"+$.param(l);$.ajax({dataType:"json",url:b,cache:false,data:j,type:"POST",success:function(n,m,o){k(true);location.reload(true)},error:function(m,o,n){k(false)}})},updaterow:function(h,k,j){var i="update=true&"+$.param(k);$.ajax({dataType:"json",url:b,cache:false,data:i,type:"POST",success:function(m,l,n){j(true);location.reload(true)},error:function(l,n,m){j(false)}})}},g=new $.jqx.dataAdapter(f),d=-1;$("#name").jqxInput({theme:theme,width:640,height:23});$("#notes").jqxInput({theme:theme,width:800,height:100});$("#type").jqxDropDownList({theme:theme,source:MiscTypeAdapter,valueMember:"nl",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#use_use").jqxDropDownList({theme:theme,source:MiscUseAdapter,valueMember:"nl",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#time").jqxNumberInput(PosInt);$("#amount_is_weight").jqxCheckBox({theme:theme,width:120,height:23});$("#use_for").jqxInput({theme:theme,width:640,height:48});$("#always_on_stock").jqxCheckBox({theme:theme,width:120,height:23});$("#inventory").jqxNumberInput(Spin1dec);$("#production_date").jqxDateTimeInput(Dateopts);$("#cost").jqxNumberInput(Spin2dec);$("#tht_date").jqxDateTimeInput(Dateopts);$("#totval").jqxNumberInput(Show2dec);$("#jqxgrid").jqxGrid({width:1280,height:630,source:g,theme:theme,showstatusbar:true,renderstatusbar:function(j){var h,i,k;h=$("
      ");i=$("
      Nieuw
      ");k=$("
      Import
      ");h.append(i);h.append(k);j.append(h);i.jqxButton({theme:theme,width:90,height:20});k.jqxButton({theme:theme,width:90,height:20});i.click(function(l){d=-1;$("#popupWindow").jqxWindow({position:{x:110,y:30}});$("#name").val("");$("#type").val("Specerij");$("#use_use").val("Starter");$("#time").val(0);$("#amount_is_weight").val(1);$("#use_for").val("");$("#notes").val("");$("#always_on_stock").val(0);$("#inventory").val(0);$("#cost").val(0);$("#production_date").val("");$("#tht_date").val("");$("#popupWindow").jqxWindow("open")});k.click(function(l){window.location.href="import_ingredients.php?select=miscs"})},filterable:true,filtermode:"excel",columns:[{text:"Ingredient naam",datafield:"name",menu:false},{text:"Type",datafield:"type",align:"left",width:120},{text:"Gebruik",datafield:"use_use",align:"left",width:120},{text:"Tijd",datafield:"time",width:90,align:"left",menu:false,cellsrenderer:function(i,h,l,k,j,n){var m="";if(l>0){if(l==1){m="1 minuut"}else{if(l<60){m=g.formatNumber(l,"f0")+" minuten"}else{if(l==60){m="1 uur"}else{if(l<1440){m=g.formatNumber(l/60,"f0")+" uren"}else{if(l==1440){m="1 dag"}else{m=g.formatNumber(l/1440,"f0")+" dagen"}}}}}}return""+m+""}},{text:"Voorraad",datafield:"inventory",width:110,menu:false,align:"right",cellsrenderer:function(i,h,m,l,k,n){var j="";if(m>0){if(n.amount_is_weight){j=g.formatNumber(m,"f1")+" gr"}else{j=g.formatNumber(m,"f1")+" ml"}}return""+j+""}},{text:"THT datum",datafield:"tht_date",width:100,menu:false,align:"center",cellsalign:"center"},{text:"",datafield:"Edit",columntype:"button",width:100,menu:false,align:"center",cellsrenderer:function(){return"Wijzig"},buttonclick:function(h){d=h;$("#popupWindow").jqxWindow({position:{x:110,y:30}});c=$("#jqxgrid").jqxGrid("getrowdata",d);$("#name").val(c.name);$("#type").val(c.type);$("#use_use").val(c.use_use);$("#time").val(c.time);$("#amount_is_weight").val(c.amount_is_weight);$("#use_for").val(c.use_for);$("#notes").val(c.notes);$("#always_on_stock").val(c.always_on_stock);$("#inventory").val(c.inventory);$("#cost").val(c.cost);$("#production_date").val(c.production_date);$("#tht_date").val(c.tht_date);e(c.cost,c.inventory);a(c.amount_is_weight);$("#popupWindow").jqxWindow("open")}}]});$("#cost").on("change",function(h){c.cost=parseFloat(h.args.value);e(c.cost,c.inventory)});$("#inventory").on("change",function(h){c.inventory=parseFloat(h.args.value);e(c.cost,c.inventory)});$("#amount_is_weight").on("checked",function(h){c.amount_is_weight=true;a(true)});$("#amount_is_weight").on("unchecked",function(h){c.amount_is_weight=false;a(false)});$("#popupWindow").jqxWindow({width:1050,height:550,resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#Cancel"),modalOpacity:0.4});$("#popupWindow").on("open",function(){$("#name").jqxInput("selectAll")});$("#Delete").jqxButton({template:"danger",width:"90px",theme:theme});$("#Delete").click(function(){if(d>=0){$("#eventWindow").jqxWindow("open");$("#delOk").click(function(){var h=$("#jqxgrid").jqxGrid("getrowid",d);$("#jqxgrid").jqxGrid("deleterow",h)})}$("#popupWindow").jqxWindow("hide")});$("#Cancel").jqxButton({template:"primary",width:"90px",theme:theme});$("#Save").jqxButton({template:"success",width:"90px",theme:theme});$("#Save").click(function(){var i,h=-1;if(d>=0){h=$("#jqxgrid").jqxGrid("getrowid",d)}i={record:h,name:$("#name").val(),type:$("#type").val(),use_use:$("#use_use").val(),time:parseFloat($("#time").jqxNumberInput("decimal")),amount_is_weight:$("#amount_is_weight").val(),use_for:$("#use_for").val(),notes:$("#notes").val(),always_on_stock:$("#always_on_stock").val(),inventory:parseFloat($("#inventory").jqxNumberInput("decimal")),cost:parseFloat($("#cost").jqxNumberInput("decimal")),production_date:$("#production_date").val(),tht_date:$("#tht_date").val()};if(d>=0){$("#jqxgrid").jqxGrid("updaterow",h,i)}else{$("#jqxgrid").jqxGrid("addrow",null,i)}$("#popupWindow").jqxWindow("hide")});createDelElements()}); \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/inv_miscs.js --- a/www/js/inv_miscs.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/inv_miscs.js Fri Oct 18 13:12:46 2019 +0200 @@ -67,8 +67,8 @@ datafields: [ { name: 'record', type: 'number' }, { name: 'name', type: 'string' }, - { name: 'type', type: 'int' }, - { name: 'use_use', type: 'int' }, + { name: 'type', type: 'string' }, + { name: 'use_use', type: 'string' }, { name: 'time', type: 'int' }, { name: 'amount', type: 'float' }, { name: 'amount_is_weight', type: 'int' }, @@ -144,7 +144,7 @@ $("#type").jqxDropDownList({theme: theme, source: MiscTypeAdapter, - valueMember: 'id', + valueMember: 'nl', displayMember: 'nl', width: 180, height: 23, @@ -153,7 +153,7 @@ $("#use_use").jqxDropDownList({ theme: theme, source: MiscUseAdapter, - valueMember: 'id', + valueMember: 'nl', displayMember: 'nl', width: 180, height: 23, @@ -191,8 +191,8 @@ editrow = -1; $("#popupWindow").jqxWindow({ position: { x: 110, y: 30 } }); $("#name").val(''); - $("#type").val(0); - $("#use_use").val(0); + $("#type").val('Specerij'); + $("#use_use").val('Starter'); $("#time").val(0); $("#amount_is_weight").val(1); $("#use_for").val(''); @@ -212,16 +212,8 @@ filtermode: 'excel', columns: [ { text: 'Ingredient naam', datafield: 'name', menu: false }, - { text: 'Type', datafield: 'type', align: 'left', width: 120, - cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) { - return "" + MiscTypeData[value].nl + ""; - } - }, - { text: 'Gebruik', datafield: 'use_use', align: 'left', width: 120, - cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) { - return "" + MiscUseData[value].nl + ""; - } - }, + { text: 'Type', datafield: 'type', align: 'left', width: 120 }, + { text: 'Gebruik', datafield: 'use_use', align: 'left', width: 120 }, { text: 'Tijd', datafield: 'time', width: 90, align: 'left', menu: false, cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) { var duration = ""; diff -r 9e43b216ccd3 -r d25a1b160dba www/js/inv_yeasts-min.js --- a/www/js/inv_yeasts-min.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/inv_yeasts-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -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({template:"danger",width:"65px",theme:theme});$("#delCancel").jqxButton({template:"success",width:"65px",theme:theme});$("#delCancel").focus()}});$("#eventWindow").jqxWindow("hide")}$(document).ready(function(){function d(){$("#totval").val(b.cost*b.inventory);if(b.form==0){$("#pmpt_cost").html("Prijs per pak:");$("#pmpt_inventory").html("Voorraad pak(ken):");$("#pmpt_cells").html("Miljard cellen per pak:");$("#inventory").jqxNumberInput({decimalDigits:0})}else{if(b.form==1){$("#pmpt_cost").html("Prijs per kg:");$("#pmpt_inventory").html("Voorraad gram:");$("#pmpt_cells").html("Miljard cellen per gram:");$("#inventory").jqxNumberInput({decimalDigits:1})}else{$("#pmpt_cost").html("Prijs per liter:");$("#pmpt_inventory").html("Voorraad ml:");$("#pmpt_cells").html("Miljard cellen per ml:");$("#inventory").jqxNumberInput({decimalDigits:1})}}}var b={},a="includes/db_inventory_yeasts.php",e={datatype:"json",cache:false,datafields:[{name:"record",type:"number"},{name:"name",type:"string"},{name:"type",type:"int"},{name:"form",type:"int"},{name:"laboratory",type:"string"},{name:"product_id",type:"string"},{name:"min_temperature",type:"float"},{name:"max_temperature",type:"float"},{name:"flocculation",type:"int"},{name:"attenuation",type:"float"},{name:"notes",type:"string"},{name:"best_for",type:"string"},{name:"max_reuse",type:"int"},{name:"inventory",type:"float"},{name:"cost",type:"float"},{name:"production_date",type:"string"},{name:"tht_date",type:"string"},{name:"cells",type:"float"},{name:"tolerance",type:"float"}],id:"record",url:a,deleterow:function(g,i){var h="delete=true&"+$.param({record:g});$.ajax({dataType:"json",url:a,cache:false,data:h,type:"POST",success:function(k,j,l){i(true);location.reload(true)},error:function(j,l,k){i(false)}})},addrow:function(h,k,g,j){var i="insert=true&"+$.param(k);$.ajax({dataType:"json",url:a,cache:false,data:i,type:"POST",success:function(m,l,n){j(true);location.reload(true)},error:function(l,n,m){j(false)}})},updaterow:function(g,j,i){var h="update=true&"+$.param(j);$.ajax({dataType:"json",url:a,cache:false,data:h,type:"POST",success:function(l,k,m){i(true);location.reload(true)},error:function(k,m,l){i(false)}})}},f=new $.jqx.dataAdapter(e),c=-1;$("#name").jqxInput({theme:theme,width:640,height:23});$("#laboratory").jqxInput({theme:theme,width:320,height:23});$("#product_id").jqxInput({theme:theme,width:320,height:23});$("#type").jqxDropDownList({theme:theme,source:YeastTypeAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#form").jqxDropDownList({theme:theme,source:YeastFormAdapter,valueMember:"id",displayMember:"nl",selectedIndex:0,width:180,height:23,autoDropDownHeight:true});$("#notes").jqxInput({theme:theme,width:800,height:120});$("#best_for").jqxInput({theme:theme,width:320,height:100});$("#inventory").jqxNumberInput(Spin1dec);$("#production_date").jqxDateTimeInput(Dateopts);$("#min_temperature").jqxNumberInput(YeastT);$("#max_temperature").jqxNumberInput(YeastT);$("#flocculation").jqxDropDownList({theme:theme,source:FlocculationAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#attenuation").jqxNumberInput(Perc1dec);$("#max_reuse").jqxNumberInput(PosInt);$("#max_reuse").jqxNumberInput({max:10});$("#cost").jqxNumberInput(Spin2dec);$("#tht_date").jqxDateTimeInput(Dateopts);$("#totval").jqxNumberInput(Show2dec);$("#cells").jqxNumberInput(Spin1dec);$("#tolerance").jqxNumberInput(Perc1dec);$("#tolerance").jqxNumberInput({max:25});$("#jqxgrid").jqxGrid({width:1280,height:630,source:f,theme:theme,showstatusbar:true,renderstatusbar:function(i){var g,h,j;g=$("
      ");h=$("
      Nieuw
      ");j=$("
      Import
      ");g.append(h);g.append(j);i.append(g);h.jqxButton({theme:theme,width:90,height:20});j.jqxButton({theme:theme,width:90,height:20});h.click(function(k){c=-1;$("#popupWindow").jqxWindow({position:{x:110,y:30}});$("#name").val("");$("#laboratory").val("");$("#product_id").val("");$("#type").val(0);$("#form").val(0);$("#min_temperature").val(18);$("#max_temperature").val(22);$("#flocculation").val(0);$("#attenuation").val(77);$("#notes").val("");$("#best_for").val("");$("#max_reuse").val(10);$("#inventory").val(0);$("#cost").val(0);$("#production_date").val("");$("#tht_date").val("");$("#cells").val(1);$("#tolerance").val(0);$("#popupWindow").jqxWindow("open")});j.click(function(k){window.location.href="import_ingredients.php?select=yeasts"})},filterable:true,filtermode:"excel",columns:[{text:"Laboratorium",datafield:"laboratory",width:150},{text:"Product ID",datafield:"product_id",width:120,menu:false},{text:"Gist naam",datafield:"name",menu:false},{text:"Type",datafield:"type",align:"center",cellsalign:"center",menu:false,width:110,cellsrenderer:function(h,g,k,j,i,l){return"
      "+YeastTypeData[k].nl+"
      "}},{text:"Vorm",datafield:"form",align:"center",cellsalign:"center",menu:false,width:110,cellsrenderer:function(h,g,k,j,i,l){return"
      "+YeastFormData[k].nl+"
      "}},{text:"SVG",datafield:"attenuation",width:70,align:"right",cellsalign:"right",menu:false,cellsformat:"p1"},{text:"Tol%",datafield:"tolerance",width:60,align:"right",cellsalign:"right",menu:false,cellsrenderer:function(h,g,l,k,j,m){var i="";if(l>0){i=f.formatNumber(l,"p0")}return''+i+""}},{text:"Voorraad",datafield:"inventory",width:100,align:"right",menu:false,cellsrenderer:function(h,g,l,k,j,m){var i="";if(l>0){if((m.form==0)&&(l>1)){i=f.formatNumber(l,"f0")+" pakken"}else{if(m.form==0){i=f.formatNumber(l,"f0")+" pak"}else{if(m.form==1){i=f.formatNumber(l*1000,"f1")+" gram"}else{i=f.formatNumber(l*1000,"f1")+" ml"}}}}return""+i+""}},{text:"",datafield:"Edit",columntype:"button",width:100,align:"center",menu:false,cellsrenderer:function(){return"Wijzig"},buttonclick:function(g){c=g;$("#popupWindow").jqxWindow({position:{x:110,y:30}});b=$("#jqxgrid").jqxGrid("getrowdata",c);$("#name").val(b.name);$("#laboratory").val(b.laboratory);$("#product_id").val(b.product_id);$("#type").val(b.type);$("#form").val(b.form);$("#min_temperature").val(b.min_temperature);$("#max_temperature").val(b.max_temperature);$("#flocculation").val(b.flocculation);$("#attenuation").val(b.attenuation);$("#notes").val(b.notes);$("#best_for").val(b.best_for);$("#max_reuse").val(b.max_reuse);if(b.form==0){$("#inventory").val(b.inventory)}else{$("#inventory").val(b.inventory*1000)}$("#cost").val(b.cost);$("#production_date").val(b.production_date);$("#tht_date").val(b.tht_date);$("#cells").val(b.cells);$("#tolerance").val(b.tolerance);d();$("#popupWindow").jqxWindow("open")}}]});$("#popupWindow").on("open",function(g){d()});$("#cost").on("change",function(g){b.cost=parseFloat(g.args.value);d()});$("#inventory").on("change",function(g){if(b.form==0){b.inventory=parseFloat(g.args.value)}else{b.inventory=parseFloat(g.args.value)/1000}d()});$("#form").on("select",function(g){if(g.args){b.form=g.args.index;d()}});$("#popupWindow").jqxWindow({width:1050,height:575,resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#Cancel"),modalOpacity:0.4});$("#popupWindow").on("open",function(){$("#name").jqxInput("selectAll")});$("#Delete").jqxButton({template:"danger",width:"90px",theme:theme});$("#Delete").click(function(){if(c>=0){$("#eventWindow").jqxWindow("open");$("#delOk").click(function(){var g=$("#jqxgrid").jqxGrid("getrowid",c);$("#jqxgrid").jqxGrid("deleterow",g)})}$("#popupWindow").jqxWindow("hide")});$("#Cancel").jqxButton({template:"primary",width:"90px",theme:theme});$("#Clone").jqxButton({template:"warning",width:"90px",theme:theme});$("#Clone").click(function(){var g={record:-1,name:$("#name").val()+" kopie",type:$("#type").val(),form:$("#form").val(),laboratory:$("#laboratory").val(),product_id:$("#product_id").val(),min_temperature:parseInt($("#min_temperature").jqxNumberInput("decimal")),max_temperature:parseInt($("#max_temperature").jqxNumberInput("decimal")),flocculation:$("#flocculation").val(),attenuation:parseFloat($("#attenuation").jqxNumberInput("decimal")),notes:$("#notes").val(),best_for:$("#best_for").val(),max_reuse:parseInt($("#max_reuse").jqxNumberInput("decimal")),inventory:0,cost:parseFloat($("#cost").jqxNumberInput("decimal")),production_date:"",tht_date:"",cells:parseFloat($("#cells").jqxNumberInput("decimal")),tolerance:parseFloat($("#tolerance").jqxNumberInput("decimal"))};$("#jqxgrid").jqxGrid("addrow",null,g);$("#popupWindow").jqxWindow("hide")});$("#Save").jqxButton({template:"success",width:"90px",theme:theme});$("#Save").click(function(){var g,i,h=-1;if(c>=0){h=$("#jqxgrid").jqxGrid("getrowid",c)}if(b.form==0){g=parseFloat($("#inventory").jqxNumberInput("decimal"))}else{g=parseFloat($("#inventory").jqxNumberInput("decimal"))/1000}i={record:h,name:$("#name").val(),type:$("#type").val(),form:$("#form").val(),laboratory:$("#laboratory").val(),product_id:$("#product_id").val(),min_temperature:parseInt($("#min_temperature").jqxNumberInput("decimal")),max_temperature:parseInt($("#max_temperature").jqxNumberInput("decimal")),flocculation:$("#flocculation").val(),attenuation:parseFloat($("#attenuation").jqxNumberInput("decimal")),notes:$("#notes").val(),best_for:$("#best_for").val(),max_reuse:parseInt($("#max_reuse").jqxNumberInput("decimal")),inventory:g,cost:parseFloat($("#cost").jqxNumberInput("decimal")),production_date:$("#production_date").val(),tht_date:$("#tht_date").val(),cells:parseFloat($("#cells").jqxNumberInput("decimal")),tolerance:parseFloat($("#tolerance").jqxNumberInput("decimal"))};if(c>=0){$("#jqxgrid").jqxGrid("updaterow",h,i)}else{$("#jqxgrid").jqxGrid("addrow",null,i)}$("#popupWindow").jqxWindow("hide")});createDelElements()}); \ No newline at end of file +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({template:"danger",width:"65px",theme:theme});$("#delCancel").jqxButton({template:"success",width:"65px",theme:theme});$("#delCancel").focus()}});$("#eventWindow").jqxWindow("hide")}$(document).ready(function(){function d(){$("#totval").val(b.cost*b.inventory);if(b.form=="Vloeibaar"){$("#pmpt_cost").html("Prijs per pak:");$("#pmpt_inventory").html("Voorraad pak(ken):");$("#pmpt_cells").html("Miljard cellen per pak:");$("#inventory").jqxNumberInput({decimalDigits:0})}else{if(b.form=="Droog"||b.form=="Gedroogd"){$("#pmpt_cost").html("Prijs per kg:");$("#pmpt_inventory").html("Voorraad gram:");$("#pmpt_cells").html("Miljard cellen per gram:");$("#inventory").jqxNumberInput({decimalDigits:1})}else{$("#pmpt_cost").html("Prijs per liter:");$("#pmpt_inventory").html("Voorraad ml:");$("#pmpt_cells").html("Miljard cellen per ml:");$("#inventory").jqxNumberInput({decimalDigits:1})}}}var b={},a="includes/db_inventory_yeasts.php",e={datatype:"json",cache:false,datafields:[{name:"record",type:"number"},{name:"name",type:"string"},{name:"type",type:"string"},{name:"form",type:"string"},{name:"laboratory",type:"string"},{name:"product_id",type:"string"},{name:"min_temperature",type:"float"},{name:"max_temperature",type:"float"},{name:"flocculation",type:"int"},{name:"attenuation",type:"float"},{name:"notes",type:"string"},{name:"best_for",type:"string"},{name:"max_reuse",type:"int"},{name:"inventory",type:"float"},{name:"cost",type:"float"},{name:"production_date",type:"string"},{name:"tht_date",type:"string"},{name:"cells",type:"float"},{name:"tolerance",type:"float"},{name:"sta1",type:"int"},{name:"bacteria",type:"int"},{name:"harvest_top",type:"int"},{name:"harvest_time",type:"int"},{name:"pitch_temperature",type:"float"},{name:"pofpos",type:"int"},{name:"zymocide",type:"int"}],id:"record",url:a,deleterow:function(g,i){var h="delete=true&"+$.param({record:g});$.ajax({dataType:"json",url:a,cache:false,data:h,type:"POST",success:function(k,j,l){i(true);location.reload(true)},error:function(j,l,k){i(false)}})},addrow:function(h,k,g,j){var i="insert=true&"+$.param(k);$.ajax({dataType:"json",url:a,cache:false,data:i,type:"POST",success:function(m,l,n){j(true);location.reload(true)},error:function(l,n,m){j(false)}})},updaterow:function(g,j,i){var h="update=true&"+$.param(j);$.ajax({dataType:"json",url:a,cache:false,data:h,type:"POST",success:function(l,k,m){i(true);location.reload(true)},error:function(k,m,l){i(false)}})}},f=new $.jqx.dataAdapter(e),c=-1;$("#name").jqxInput({theme:theme,width:640,height:23});$("#laboratory").jqxInput({theme:theme,width:320,height:23});$("#product_id").jqxInput({theme:theme,width:320,height:23});$("#type").jqxDropDownList({theme:theme,source:YeastTypeAdapter,valueMember:"nl",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#form").jqxDropDownList({theme:theme,source:YeastFormAdapter,valueMember:"nl",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#notes").jqxInput({theme:theme,width:800,height:120});$("#best_for").jqxInput({theme:theme,width:320,height:100});$("#inventory").jqxNumberInput(Spin1dec);$("#production_date").jqxDateTimeInput(Dateopts);$("#min_temperature").jqxNumberInput(YeastT);$("#max_temperature").jqxNumberInput(YeastT);$("#flocculation").jqxDropDownList({theme:theme,source:FlocculationAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#attenuation").jqxNumberInput(Perc1dec);$("#max_reuse").jqxNumberInput(PosInt);$("#max_reuse").jqxNumberInput({max:10});$("#cost").jqxNumberInput(Spin2dec);$("#tht_date").jqxDateTimeInput(Dateopts);$("#totval").jqxNumberInput(Show2dec);$("#cells").jqxNumberInput(Spin1dec);$("#tolerance").jqxNumberInput(Perc1dec);$("#tolerance").jqxNumberInput({max:25});$("#sta1").jqxCheckBox({theme:theme,width:120,height:23});$("#sta1").on("checked",function(g){b.sta1=1});$("#sta1").on("unchecked",function(g){b.sta1=0});$("#bacteria").jqxCheckBox({theme:theme,width:120,height:23});$("#bacteria").on("checked",function(g){b.bacteria=1});$("#bacteria").on("unchecked",function(g){b.bacteria=0});$("#harvest_top").jqxCheckBox({theme:theme,width:120,height:23});$("#harvest_top").on("checked",function(g){b.harvest_top=1});$("#harvest_top").on("unchecked",function(g){b.harvest_top=0});$("#harvest_time").jqxNumberInput(PosInt);$("#pitch_temperature").jqxNumberInput(YeastT);$("#pofpos").jqxCheckBox({theme:theme,width:120,height:23});$("#pofpos").on("checked",function(g){b.pofpos=1});$("#pofpos").on("unchecked",function(g){b.pofpos=0});$("#zymocide").jqxDropDownList({theme:theme,source:ZymocideAdapter,valueMember:"id",displayMember:"nl",width:80,height:23,autoDropDownHeight:true});$("#jqxgrid").jqxGrid({width:1280,height:630,source:f,theme:theme,showstatusbar:true,renderstatusbar:function(i){var g,h,j;g=$("
      ");h=$("
      Nieuw
      ");j=$("
      Import
      ");g.append(h);g.append(j);i.append(g);h.jqxButton({theme:theme,width:90,height:20});j.jqxButton({theme:theme,width:90,height:20});h.click(function(k){c=-1;$("#popupWindow").jqxWindow({position:{x:110,y:30}});$("#name").val("");$("#laboratory").val("");$("#product_id").val("");$("#type").val("Bovengist");$("#form").val("Vloeibaar");$("#min_temperature").val(18);$("#max_temperature").val(22);$("#flocculation").val(0);$("#attenuation").val(77);$("#notes").val("");$("#best_for").val("");$("#max_reuse").val(10);$("#inventory").val(0);$("#cost").val(0);$("#production_date").val("");$("#tht_date").val("");$("#cells").val(1);$("#tolerance").val(0);$("#sta1").val(0);$("#bacteria").val(0);$("#harvest_top").val(0);$("#harvest_time").val(0);$("#pitch_temperature").val(0);$("#pofpos").val(0);$("#zymocide").val(0);$("#popupWindow").jqxWindow("open")});j.click(function(k){window.location.href="import_ingredients.php?select=yeasts"})},filterable:true,filtermode:"excel",columns:[{text:"Laboratorium",datafield:"laboratory",width:150},{text:"Product ID",datafield:"product_id",width:120,menu:false},{text:"Gist naam",datafield:"name",menu:false},{text:"Type",datafield:"type",align:"center",cellsalign:"center",width:110},{text:"Vorm",datafield:"form",align:"center",cellsalign:"center",width:110},{text:"SVG",datafield:"attenuation",width:70,align:"right",cellsalign:"right",menu:false,cellsformat:"p1"},{text:"Tol%",datafield:"tolerance",width:60,align:"right",cellsalign:"right",menu:false,cellsrenderer:function(h,g,l,k,j,m){var i="";if(l>0){i=f.formatNumber(l,"p0")}return''+i+""}},{text:"Voorraad",datafield:"inventory",width:100,align:"right",menu:false,cellsrenderer:function(h,g,l,k,j,m){var i="";if(l>0){if((m.form=="Vloeibaar")&&(l>1)){i=f.formatNumber(l,"f0")+" pakken"}else{if(m.form=="Vloeibaar"){i=f.formatNumber(l,"f0")+" pak"}else{if(m.form=="Droog"||m.form=="Gedroogd"){i=f.formatNumber(l*1000,"f1")+" gram"}else{i=f.formatNumber(l*1000,"f1")+" ml"}}}}return""+i+""}},{text:"",datafield:"Edit",columntype:"button",width:100,align:"center",menu:false,cellsrenderer:function(){return"Wijzig"},buttonclick:function(g){c=g;$("#popupWindow").jqxWindow({position:{x:110,y:15}});b=$("#jqxgrid").jqxGrid("getrowdata",c);$("#name").val(b.name);$("#laboratory").val(b.laboratory);$("#product_id").val(b.product_id);$("#type").val(b.type);$("#form").val(b.form);$("#min_temperature").val(parseFloat(b.min_temperature));$("#max_temperature").val(parseFloat(b.max_temperature));$("#flocculation").val(b.flocculation);$("#attenuation").val(b.attenuation);$("#notes").val(b.notes);$("#best_for").val(b.best_for);$("#max_reuse").val(b.max_reuse);if(b.form=="Vloeibaar"){$("#inventory").val(b.inventory)}else{$("#inventory").val(b.inventory*1000)}$("#cost").val(b.cost);$("#production_date").val(b.production_date);$("#tht_date").val(b.tht_date);$("#cells").val(b.cells);$("#tolerance").val(b.tolerance);$("#sta1").val(b.sta1);$("#bacteria").val(b.bacteria);$("#harvest_top").val(b.harvest_top);$("#harvest_time").val(b.harvest_time);$("#pitch_temperature").val(parseFloat(b.pitch_temperature));$("#pofpos").val(b.pofpos);$("#zymocide").val(b.zymocide);d();$("#popupWindow").jqxWindow("open")}}]});$("#popupWindow").on("open",function(g){d()});$("#cost").on("change",function(g){b.cost=parseFloat(g.args.value);d()});$("#inventory").on("change",function(g){if(b.form=="Vloeibaar"){b.inventory=parseFloat(g.args.value)}else{b.inventory=parseFloat(g.args.value)/1000}d()});$("#form").on("select",function(g){b.form=$("#form").val();d()});$("#popupWindow").jqxWindow({width:1050,height:625,resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#Cancel"),modalOpacity:0.4});$("#popupWindow").on("open",function(){$("#name").jqxInput("selectAll")});$("#Delete").jqxButton({template:"danger",width:"90px",theme:theme});$("#Delete").click(function(){if(c>=0){$("#eventWindow").jqxWindow("open");$("#delOk").click(function(){var g=$("#jqxgrid").jqxGrid("getrowid",c);$("#jqxgrid").jqxGrid("deleterow",g)})}$("#popupWindow").jqxWindow("hide")});$("#Cancel").jqxButton({template:"primary",width:"90px",theme:theme});$("#Clone").jqxButton({template:"warning",width:"90px",theme:theme});$("#Clone").click(function(){var g={record:-1,name:$("#name").val()+" kopie",type:$("#type").val(),form:$("#form").val(),laboratory:$("#laboratory").val(),product_id:$("#product_id").val(),min_temperature:parseFloat($("#min_temperature").jqxNumberInput("decimal")),max_temperature:parseFloat($("#max_temperature").jqxNumberInput("decimal")),flocculation:$("#flocculation").val(),attenuation:parseFloat($("#attenuation").jqxNumberInput("decimal")),notes:$("#notes").val(),best_for:$("#best_for").val(),max_reuse:parseInt($("#max_reuse").jqxNumberInput("decimal")),inventory:0,cost:parseFloat($("#cost").jqxNumberInput("decimal")),production_date:"",tht_date:"",cells:parseFloat($("#cells").jqxNumberInput("decimal")),tolerance:parseFloat($("#tolerance").jqxNumberInput("decimal")),sta1:$("#sta1").val(),bacteria:$("#bacteria").val(),harvest_top:$("#harvest_top").val(),harvest_time:$("#harvest_time").val(),pitch_temperature:parseFloat($("#pitch_temperature").jqxNumberInput("decimal")),pofpos:$("#pofpos").val(),zymocide:$("#zymocide").val()};$("#jqxgrid").jqxGrid("addrow",null,g);$("#popupWindow").jqxWindow("hide")});$("#Save").jqxButton({template:"success",width:"90px",theme:theme});$("#Save").click(function(){var g,i,h=-1;if(c>=0){h=$("#jqxgrid").jqxGrid("getrowid",c)}if(b.form=="Vloeibaar"){g=parseFloat($("#inventory").jqxNumberInput("decimal"))}else{g=parseFloat($("#inventory").jqxNumberInput("decimal"))/1000}i={record:h,name:$("#name").val(),type:$("#type").val(),form:$("#form").val(),laboratory:$("#laboratory").val(),product_id:$("#product_id").val(),min_temperature:parseFloat($("#min_temperature").jqxNumberInput("decimal")),max_temperature:parseFloat($("#max_temperature").jqxNumberInput("decimal")),flocculation:$("#flocculation").val(),attenuation:parseFloat($("#attenuation").jqxNumberInput("decimal")),notes:$("#notes").val(),best_for:$("#best_for").val(),max_reuse:parseInt($("#max_reuse").jqxNumberInput("decimal")),inventory:g,cost:parseFloat($("#cost").jqxNumberInput("decimal")),production_date:$("#production_date").val(),tht_date:$("#tht_date").val(),cells:parseFloat($("#cells").jqxNumberInput("decimal")),tolerance:parseFloat($("#tolerance").jqxNumberInput("decimal")),sta1:$("#sta1").val(),bacteria:$("#bacteria").val(),harvest_top:$("#harvest_top").val(),harvest_time:$("#harvest_time").val(),pitch_temperature:parseFloat($("#pitch_temperature").jqxNumberInput("decimal")),pofpos:$("#pofpos").val(),zymocide:$("#zymocide").val()};if(c>=0){$("#jqxgrid").jqxGrid("updaterow",h,i)}else{$("#jqxgrid").jqxGrid("addrow",null,i)}$("#popupWindow").jqxWindow("hide")});createDelElements()}); \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/inv_yeasts.js --- a/www/js/inv_yeasts.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/inv_yeasts.js Fri Oct 18 13:12:46 2019 +0200 @@ -47,12 +47,12 @@ function calcTotal() { $('#totval').val(dataRecord.cost * dataRecord.inventory); - if (dataRecord.form == 0) { // Liquid + if (dataRecord.form == 'Vloeibaar') { // Liquid $("#pmpt_cost").html('Prijs per pak:'); $("#pmpt_inventory").html('Voorraad pak(ken):'); $("#pmpt_cells").html('Miljard cellen per pak:'); $("#inventory").jqxNumberInput({ decimalDigits: 0 }); - } else if (dataRecord.form == 1) { // Dry + } else if (dataRecord.form == 'Droog' || dataRecord.form == 'Gedroogd') { // Dry $("#pmpt_cost").html('Prijs per kg:'); $("#pmpt_inventory").html('Voorraad gram:'); $("#pmpt_cells").html('Miljard cellen per gram:'); @@ -73,8 +73,8 @@ datafields: [ { name: 'record', type: 'number' }, { name: 'name', type: 'string' }, - { name: 'type', type: 'int' }, - { name: 'form', type: 'int' }, + { name: 'type', type: 'string' }, + { name: 'form', type: 'string' }, { name: 'laboratory', type: 'string' }, { name: 'product_id', type: 'string' }, { name: 'min_temperature', type: 'float' }, @@ -89,7 +89,14 @@ { name: 'production_date', type: 'string' }, { name: 'tht_date', type: 'string' }, { name: 'cells', type: 'float' }, - { name: 'tolerance', type: 'float' } + { name: 'tolerance', type: 'float' }, + { name: 'sta1', type: 'int' }, + { name: 'bacteria', type: 'int' }, + { name: 'harvest_top', type: 'int' }, + { name: 'harvest_time', type: 'int' }, + { name: 'pitch_temperature', type: 'float' }, + { name: 'pofpos', type: 'int' }, + { name: 'zymocide', type: 'int' } ], id: 'record', url: url, @@ -156,7 +163,7 @@ $("#type").jqxDropDownList({ theme: theme, source: YeastTypeAdapter, - valueMember: 'id', + valueMember: 'nl', displayMember: 'nl', width: 180, height: 23, @@ -165,9 +172,8 @@ $("#form").jqxDropDownList({ theme: theme, source: YeastFormAdapter, - valueMember: 'id', + valueMember: 'nl', displayMember: 'nl', - selectedIndex: 0, width: 180, height: 23, autoDropDownHeight: true @@ -196,6 +202,29 @@ $("#cells").jqxNumberInput( Spin1dec ); $("#tolerance").jqxNumberInput( Perc1dec ); $("#tolerance").jqxNumberInput({ max: 25 }); + $('#sta1').jqxCheckBox({ theme: theme, width: 120, height: 23 }); + $('#sta1').on('checked', function(event) { dataRecord.sta1 = 1; }); + $('#sta1').on('unchecked', function(event) { dataRecord.sta1 = 0; }); + $('#bacteria').jqxCheckBox({ theme: theme, width: 120, height: 23 }); + $('#bacteria').on('checked', function(event) { dataRecord.bacteria = 1; }); + $('#bacteria').on('unchecked', function(event) { dataRecord.bacteria = 0; }); + $('#harvest_top').jqxCheckBox({ theme: theme, width: 120, height: 23 }); + $('#harvest_top').on('checked', function(event) { dataRecord.harvest_top = 1; }); + $('#harvest_top').on('unchecked', function(event) { dataRecord.harvest_top = 0; }); + $('#harvest_time').jqxNumberInput( PosInt ); + $("#pitch_temperature").jqxNumberInput( YeastT ); + $('#pofpos').jqxCheckBox({ theme: theme, width: 120, height: 23 }); + $('#pofpos').on('checked', function(event) { dataRecord.pofpos = 1; }); + $('#pofpos').on('unchecked', function(event) { dataRecord.pofpos = 0; }); + $("#zymocide").jqxDropDownList({ + theme: theme, + source: ZymocideAdapter, + valueMember: 'id', + displayMember: 'nl', + width: 80, + height: 23, + autoDropDownHeight: true + }); // initialize jqxGrid $("#jqxgrid").jqxGrid({ @@ -221,8 +250,8 @@ $("#name").val(''); $("#laboratory").val(''); $("#product_id").val(''); - $("#type").val(0); - $("#form").val(0); + $("#type").val('Bovengist'); + $("#form").val('Vloeibaar'); $("#min_temperature").val(18); $("#max_temperature").val(22); $("#flocculation").val(0); @@ -236,6 +265,13 @@ $("#tht_date").val(''); $("#cells").val(1); $("#tolerance").val(0); + $("#sta1").val(0); + $("#bacteria").val(0); + $("#harvest_top").val(0); + $("#harvest_time").val(0); + $("#pitch_temperature").val(0); + $("#pofpos").val(0); + $("#zymocide").val(0); $("#popupWindow").jqxWindow('open'); }); impButton.click(function (event) { @@ -248,16 +284,8 @@ { text: 'Laboratorium', datafield: 'laboratory', width: 150 }, { text: 'Product ID', datafield: 'product_id', width: 120, menu: false }, { text: 'Gist naam', datafield: 'name', menu: false }, - { text: 'Type', datafield: 'type', align: 'center', cellsalign: 'center', menu: false, width: 110, - cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) { - return "
      " + YeastTypeData[value].nl + "
      "; - } - }, - { text: 'Vorm', datafield: 'form', align: 'center', cellsalign: 'center', menu: false, width: 110, - cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) { - return "
      " + YeastFormData[value].nl + "
      "; - } - }, + { text: 'Type', datafield: 'type', align: 'center', cellsalign: 'center', width: 110 }, + { text: 'Vorm', datafield: 'form', align: 'center', cellsalign: 'center', width: 110 }, { text: 'SVG', datafield: 'attenuation', width: 70, align: 'right', cellsalign: 'right', menu: false, cellsformat: 'p1' }, { text: 'Tol%', datafield: 'tolerance', width: 60, align: 'right', cellsalign: 'right', menu: false, cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) { @@ -271,11 +299,11 @@ cellsrenderer: function (index, datafield, value, defaultvalue, column, rowdata) { var amount = ""; if (value > 0) { - if ((rowdata.form == 0) && (value > 1)) + if ((rowdata.form == 'Vloeibaar') && (value > 1)) amount = dataAdapter.formatNumber(value,"f0")+" pakken"; - else if (rowdata.form == 0) + else if (rowdata.form == 'Vloeibaar') amount = dataAdapter.formatNumber(value,"f0")+" pak"; - else if (rowdata.form == 1) + else if (rowdata.form == 'Droog' || rowdata.form == 'Gedroogd') amount = dataAdapter.formatNumber(value * 1000,"f1")+" gram"; else amount = dataAdapter.formatNumber(value * 1000,"f1")+" ml"; @@ -288,7 +316,7 @@ }, buttonclick: function (row) { // open the popup window when the user clicks a button. editrow = row; - $("#popupWindow").jqxWindow({ position: { x: 110, y: 30 } }); + $("#popupWindow").jqxWindow({ position: { x: 110, y: 15 } }); // get the clicked row's data and initialize the input fields. dataRecord = $("#jqxgrid").jqxGrid('getrowdata', editrow); $("#name").val(dataRecord.name); @@ -296,14 +324,14 @@ $("#product_id").val(dataRecord.product_id); $("#type").val(dataRecord.type); $("#form").val(dataRecord.form); - $("#min_temperature").val(dataRecord.min_temperature); - $("#max_temperature").val(dataRecord.max_temperature); + $("#min_temperature").val(parseFloat(dataRecord.min_temperature)); + $("#max_temperature").val(parseFloat(dataRecord.max_temperature)); $("#flocculation").val(dataRecord.flocculation); $("#attenuation").val(dataRecord.attenuation); $("#notes").val(dataRecord.notes); $("#best_for").val(dataRecord.best_for); $("#max_reuse").val(dataRecord.max_reuse); - if (dataRecord.form == 0) + if (dataRecord.form == 'Vloeibaar') $("#inventory").val(dataRecord.inventory); else $("#inventory").val(dataRecord.inventory * 1000); @@ -312,6 +340,13 @@ $("#tht_date").val(dataRecord.tht_date); $("#cells").val(dataRecord.cells); $("#tolerance").val(dataRecord.tolerance); + $("#sta1").val(dataRecord.sta1); + $("#bacteria").val(dataRecord.bacteria); + $("#harvest_top").val(dataRecord.harvest_top); + $("#harvest_time").val(dataRecord.harvest_time); + $("#pitch_temperature").val(parseFloat(dataRecord.pitch_temperature)); + $("#pofpos").val(dataRecord.pofpos); + $("#zymocide").val(dataRecord.zymocide); calcTotal(); // show the popup window. $("#popupWindow").jqxWindow('open'); @@ -326,23 +361,21 @@ calcTotal(); }); $("#inventory").on('change', function (event) { - if (dataRecord.form == 0) + if (dataRecord.form == 'Vloeibaar') dataRecord.inventory = parseFloat(event.args.value); else dataRecord.inventory = parseFloat(event.args.value) / 1000.0; calcTotal(); }); $("#form").on('select', function (event) { - if (event.args) { - dataRecord.form = event.args.index; - calcTotal(); - } + dataRecord.form = $("#form").val(); + calcTotal(); }); // initialize the popup window and buttons. $("#popupWindow").jqxWindow({ width: 1050, - height: 575, + height: 625, resizable: false, theme: theme, isModal: true, @@ -375,8 +408,8 @@ form: $("#form").val(), laboratory: $("#laboratory").val(), product_id: $("#product_id").val(), - min_temperature: parseInt($("#min_temperature").jqxNumberInput('decimal')), - max_temperature: parseInt($("#max_temperature").jqxNumberInput('decimal')), + min_temperature: parseFloat($("#min_temperature").jqxNumberInput('decimal')), + max_temperature: parseFloat($("#max_temperature").jqxNumberInput('decimal')), flocculation: $("#flocculation").val(), attenuation: parseFloat($("#attenuation").jqxNumberInput('decimal')), notes: $("#notes").val(), @@ -387,7 +420,14 @@ production_date: '', tht_date: '', cells: parseFloat($("#cells").jqxNumberInput('decimal')), - tolerance: parseFloat($("#tolerance").jqxNumberInput('decimal')) + tolerance: parseFloat($("#tolerance").jqxNumberInput('decimal')), + sta1: $("#sta1").val(), + bacteria: $("#bacteria").val(), + harvest_top: $("#harvest_top").val(), + harvest_time: $("#harvest_time").val(), + pitch_temperature: parseFloat($("#pitch_temperature").jqxNumberInput('decimal')), + pofpos: $("#pofpos").val(), + zymocide: $("#zymocide").val() }; $('#jqxgrid').jqxGrid('addrow', null, row); $("#popupWindow").jqxWindow('hide'); @@ -399,7 +439,7 @@ if (editrow >= 0) { rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); } - if (dataRecord.form == 0) + if (dataRecord.form == 'Vloeibaar') n_inventory = parseFloat($("#inventory").jqxNumberInput('decimal')); else n_inventory = parseFloat($("#inventory").jqxNumberInput('decimal')) / 1000.0; @@ -410,8 +450,8 @@ form: $("#form").val(), laboratory: $("#laboratory").val(), product_id: $("#product_id").val(), - min_temperature: parseInt($("#min_temperature").jqxNumberInput('decimal')), - max_temperature: parseInt($("#max_temperature").jqxNumberInput('decimal')), + min_temperature: parseFloat($("#min_temperature").jqxNumberInput('decimal')), + max_temperature: parseFloat($("#max_temperature").jqxNumberInput('decimal')), flocculation: $("#flocculation").val(), attenuation: parseFloat($("#attenuation").jqxNumberInput('decimal')), notes: $("#notes").val(), @@ -422,7 +462,14 @@ production_date: $("#production_date").val(), tht_date: $("#tht_date").val(), cells: parseFloat($("#cells").jqxNumberInput('decimal')), - tolerance: parseFloat($("#tolerance").jqxNumberInput('decimal')) + tolerance: parseFloat($("#tolerance").jqxNumberInput('decimal')), + sta1: $("#sta1").val(), + bacteria: $("#bacteria").val(), + harvest_top: $("#harvest_top").val(), + harvest_time: $("#harvest_time").val(), + pitch_temperature: parseFloat($("#pitch_temperature").jqxNumberInput('decimal')), + pofpos: $("#pofpos").val(), + zymocide: $("#zymocide").val() }; if (editrow >= 0) { $('#jqxgrid').jqxGrid('updaterow', rowID, row); diff -r 9e43b216ccd3 -r d25a1b160dba www/js/log_brew-min.js --- a/www/js/log_brew-min.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/log_brew-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -$(document).ready(function(){$("#jqxMenu").jqxMenu("destroy");$("#jqxLoader").jqxLoader({width:250,height:150,isModal:true,text:"Opmaken grafiek ...",theme:theme});$("#jqxLoader").jqxLoader("open");function a(){return"https://www.jqwidgets.com/export_server/export.php"}var d={datatype:"json",datafields:[{name:"date",type:"date",format:"yyyy-MM-dd HH:mm"},{name:"version",type:"int"},{name:"code",type:"string"},{name:"name",type:"string"},{name:"pv_mlt",type:"float"},{name:"pv_hlt",type:"float"},{name:"pv_room",type:"float"},{name:"sp_mlt",type:"float"},{name:"sp_hlt",type:"float"},{name:"pwm_mlt",type:"int"},{name:"pwm_hlt",type:"int"},{name:"event",type:"string"}],url:"getbrewlog.php?code="+my_code};var c=new $.jqx.dataAdapter(d,{autoBind:true,async:false,loadComplete:function(){$("#jqxLoader").jqxLoader("close")},loadError:function(g,e,f){}});var b={title:my_code+' "'+my_name+'"',description:"",source:c,xAxis:{dataField:"date",type:"date",formatFunction:function(e){return e.getHours()+":"+e.getMinutes()},toolTipFormatFunction:function(g){var f=g.getHours();var e=g.getMinutes();return g.getDate()+"-"+(g.getMonth()+1)+"-"+g.getFullYear()+" "+(f<10?"0"+f:f)+":"+(e<10?"0"+e:e)},textRotationAngle:300,},colorScheme:"scheme01",seriesGroups:[{type:"spline",valueAxis:{minValue:0,description:"Graden C"},series:[{dataField:"pv_mlt",lineWidth:2,displayText:"MLT"},{dataField:"sp_mlt",lineWidth:1,displayText:"mlt",opacity:0.7},{dataField:"pv_hlt",lineWidth:1,displayText:"HLT"},{dataField:"sp_hlt",lineWidth:1,displayText:"hlt",opacity:0.7},{dataField:"pv_room",lineWidth:1,displayText:"Room",opacity:0.5}]}]};$("#brew_chart").jqxChart(b);$("#print").click(function(){var g=$("#brew_chart")[0].outerHTML;var h=window.open("","","width=865, height=425"),e=h.document.open(),f=''+my_code+" "+my_name+" brouwdag"+g+"";e.write(f);e.close();h.print()});$("#print").jqxButton({template:"primary",width:125,theme:theme});$("#pdfButton").click(function(){$("#brew_chart").jqxChart("saveAsPDF","brouw_"+my_code+".pdf",a())});$("#pdfButton").jqxButton({template:"primary",width:125,theme:theme});$("#pngButton").click(function(){$("#brew_chart").jqxChart("saveAsPNG","brouw_"+my_code+".png",a())});$("#pngButton").jqxButton({template:"primary",width:125,theme:theme});$("#Close").jqxButton({template:"success",width:125,theme:theme});$("#Close").click(function(){window.close()})}); \ No newline at end of file +$(document).ready(function(){$("#jqxMenu").jqxMenu("destroy");$("#jqxLoader").jqxLoader({width:250,height:150,isModal:true,text:"Opmaken grafiek ...",theme:theme});$("#jqxLoader").jqxLoader("open");function a(){return"https://www.jqwidgets.com/export_server/export.php"}var d={datatype:"json",datafields:[{name:"date",type:"date",format:"yyyy-MM-dd HH:mm"},{name:"version",type:"int"},{name:"code",type:"string"},{name:"name",type:"string"},{name:"pv_mlt",type:"float"},{name:"pv_hlt",type:"float"},{name:"pv_room",type:"float"},{name:"sp_mlt",type:"float"},{name:"sp_hlt",type:"float"},{name:"pwm_mlt",type:"int"},{name:"pwm_hlt",type:"int"},{name:"event",type:"string"}],url:"getbrewlog.php?code="+my_code},c=new $.jqx.dataAdapter(d,{autoBind:true,async:false,loadComplete:function(){$("#jqxLoader").jqxLoader("close")},loadError:function(g,e,f){}}),b={title:my_code+' "'+my_name+'"',description:"",source:c,xAxis:{dataField:"date",type:"date",formatFunction:function(e){return e.getHours()+":"+e.getMinutes()},toolTipFormatFunction:function(g){var f=g.getHours(),e=g.getMinutes();return g.getDate()+"-"+(g.getMonth()+1)+"-"+g.getFullYear()+" "+(f<10?"0"+f:f)+":"+(e<10?"0"+e:e)},textRotationAngle:300,},colorScheme:"scheme01",seriesGroups:[{type:"spline",valueAxis:{minValue:0,description:"Graden C"},series:[{dataField:"pv_mlt",lineWidth:2,displayText:"MLT"},{dataField:"sp_mlt",lineWidth:1,displayText:"mlt",opacity:0.7},{dataField:"pv_hlt",lineWidth:1,displayText:"HLT"},{dataField:"sp_hlt",lineWidth:1,displayText:"hlt",opacity:0.7},{dataField:"pv_room",lineWidth:1,displayText:"Room",opacity:0.5}]}]};$("#brew_chart").jqxChart(b);$("#print").click(function(){var g=$("#brew_chart")[0].outerHTML,h=window.open("","","width=865, height=425"),e=h.document.open(),f=''+my_code+" "+my_name+" brouwdag"+g+"";e.write(f);e.close();h.print()});$("#print").jqxButton({template:"primary",width:125,theme:theme});$("#pdfButton").click(function(){$("#brew_chart").jqxChart("saveAsPDF","brouw_"+my_code+".pdf",a())});$("#pdfButton").jqxButton({template:"primary",width:125,theme:theme});$("#pngButton").click(function(){$("#brew_chart").jqxChart("saveAsPNG","brouw_"+my_code+".png",a())});$("#pngButton").jqxButton({template:"primary",width:125,theme:theme});$("#Close").jqxButton({template:"success",width:125,theme:theme});$("#Close").click(function(){window.close()})}); \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/log_brew.js --- a/www/js/log_brew.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/log_brew.js Fri Oct 18 13:12:46 2019 +0200 @@ -55,8 +55,8 @@ { name: "event", type: "string" } ], url: 'getbrewlog.php?code=' + my_code - }; - var dataAdapter = new $.jqx.dataAdapter(sourceA, { + }, + dataAdapter = new $.jqx.dataAdapter(sourceA, { autoBind: true, async: false, loadComplete: function () { @@ -64,9 +64,8 @@ }, loadError: function (jqXHR, status, error) { } - }); - - var settings = { + }), + settings = { title: my_code + ' "' + my_name + '"', description: "", source: dataAdapter, @@ -77,8 +76,8 @@ return value.getHours() + ':' + value.getMinutes(); }, toolTipFormatFunction: function (value) { - var h = value.getHours(); - var m = value.getMinutes(); + var h = value.getHours(), + m = value.getMinutes(); return value.getDate() + '-' + (value.getMonth() + 1) + '-' + value.getFullYear() + ' ' + (h < 10 ? '0' + h : h) + ':' + (m < 10 ? '0' + m : m); }, @@ -105,8 +104,8 @@ $("#brew_chart").jqxChart(settings); $("#print").click(function () { - var content = $("#brew_chart")[0].outerHTML; - var newWindow = window.open("", "", "width=865, height=425"), + var content = $("#brew_chart")[0].outerHTML, + newWindow = window.open("", "", "width=865, height=425"), document = newWindow.document.open(), pageContent = '' + diff -r 9e43b216ccd3 -r d25a1b160dba www/js/log_co2pressure-min.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/js/log_co2pressure-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -0,0 +1,1 @@ +$(document).ready(function(){$("#jqxMenu").jqxMenu("destroy");$("#jqxLoader").jqxLoader({width:250,height:150,isModal:true,text:"Opmaken grafiek ...",theme:theme});$("#jqxLoader").jqxLoader("open");function a(){return"https://www.jqwidgets.com/export_server/export.php"}var d={datatype:"json",datafields:[{name:"date",type:"date",format:"yyyy-MM-dd HH:mm"},{name:"temperature",type:"float"},{name:"pressure",type:"float"},{name:"uuid",type:"string"}],url:"getco2pressurelog.php?code="+my_code+"&name="+my_name},c=new $.jqx.dataAdapter(d,{autoBind:true,async:false,loadComplete:function(){$("#jqxLoader").jqxLoader("close")},loadError:function(g,e,f){}}),b={title:my_code+' "'+my_name+'"',description:"",source:c,xAxis:{dataField:"date",type:"date",formatFunction:function(e){return e.getDate()+"-"+(e.getMonth()+1)+"-"+e.getFullYear()},toolTipFormatFunction:function(g){var f=g.getHours(),e=g.getMinutes();return g.getDate()+"-"+(g.getMonth()+1)+"-"+g.getFullYear()+" "+(f<10?"0"+f:f)+":"+(e<10?"0"+e:e)},textRotationAngle:45,howGridLines:false},colorScheme:"scheme01",seriesGroups:[{type:"area",valueAxis:{minValue:0,displayValueAxis:false,description:"Druk in bar"},series:[{dataField:"pressure",lineWidth:1,displayText:"Druk",opacity:0.4}]},{type:"spline",valueAxis:{minValue:0,description:"Graden C"},series:[{dataField:"temperature",lineWidth:1,displayText:"Temperatuur"}]}]};$("#pressure_chart").jqxChart(b);$("#print").click(function(){var g=$("#pressure_chart")[0].outerHTML,h=window.open("","","width=865, height=425"),e=h.document.open(),f=''+my_code+" "+my_name+" hergisting"+g+"";e.write(f);e.close();h.print()});$("#print").jqxButton({template:"primary",width:125,theme:theme});$("#pdfButton").click(function(){$("#pressure_chart").jqxChart("saveAsPDF","hergisting_"+my_code+".pdf",a())});$("#pdfButton").jqxButton({template:"primary",width:125,theme:theme});$("#pngButton").click(function(){$("#pressure_chart").jqxChart("saveAsPNG","hergisting_"+my_code+".png",a())});$("#pngButton").jqxButton({template:"primary",width:125,theme:theme});$("#Close").jqxButton({template:"success",width:125,theme:theme});$("#Close").click(function(){window.close()})}); \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/log_co2pressure.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/js/log_co2pressure.js Fri Oct 18 13:12:46 2019 +0200 @@ -0,0 +1,141 @@ +/***************************************************************************** + * Copyright (C) 2019 + * + * Michiel Broek + * + * This file is part of BMS + * + * 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. + * + * Brewery Managment System 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. + *****************************************************************************/ + + +$(document).ready(function () { + + $('#jqxMenu').jqxMenu('destroy'); + + $("#jqxLoader").jqxLoader({ + width: 250, + height: 150, + isModal: true, + text: "Opmaken grafiek ...", + theme: theme + }); + $('#jqxLoader').jqxLoader('open'); + + function getExportServer() { + return "https://www.jqwidgets.com/export_server/export.php"; + } + + var sourceA = { + datatype: "json", + datafields: [ + { name: "date", type: "date", format: "yyyy-MM-dd HH:mm" }, + { name: "temperature", type: "float" }, + { name: "pressure", type: "float" }, + { name: "uuid", type: "string" } + ], + url: 'getco2pressurelog.php?code=' + my_code + '&name=' + my_name + }, + dataAdapter = new $.jqx.dataAdapter(sourceA, { + autoBind: true, + async: false, + loadComplete: function () { + $('#jqxLoader').jqxLoader('close'); + }, + loadError: function (jqXHR, status, error) { + } + }), + settings = { + title: my_code + ' "' + my_name + '"', + description: "", + source: dataAdapter, + xAxis: { + dataField: 'date', + type: 'date', + formatFunction: function (value) { + return value.getDate() + '-' + (value.getMonth() + 1) + '-' + value.getFullYear(); + }, + toolTipFormatFunction: function (value) { + var h = value.getHours(), + m = value.getMinutes(); + return value.getDate() + '-' + (value.getMonth() + 1) + '-' + value.getFullYear() + + ' ' + (h < 10 ? '0' + h : h) + ':' + (m < 10 ? '0' + m : m); + }, + textRotationAngle: 45, + howGridLines: false + }, + colorScheme: 'scheme01', + seriesGroups: [ + { + type: "area", + valueAxis: { + minValue: 0, + displayValueAxis: false, + description: "Druk in bar" + }, + series: [ + { dataField: "pressure", lineWidth: 1, displayText: "Druk", opacity: 0.4 } + ] + }, + { + type: 'spline', + valueAxis: { + minValue: 0, + description: 'Graden C' + }, + series: [ + { dataField: "temperature", lineWidth: 1, displayText: "Temperatuur" } + ] + } + ] + }; + $("#pressure_chart").jqxChart(settings); + + $("#print").click(function () { + var content = $("#pressure_chart")[0].outerHTML, + newWindow = window.open("", "", "width=865, height=425"), + document = newWindow.document.open(), + pageContent = + '' + + '' + + '' + + '' + + '' + + '' + my_code + ' ' + my_name + ' hergisting' + + '' + + '' + content + ''; + document.write(pageContent); + document.close(); + newWindow.print(); + }); + $("#print").jqxButton({ template: "primary", width: 125, theme: theme }); + + + $("#pdfButton").click(function () { + $("#pressure_chart").jqxChart("saveAsPDF", "hergisting_"+my_code+".pdf", getExportServer()); + }); + $("#pdfButton").jqxButton({ template: "primary", width: 125, theme: theme }); + + $("#pngButton").click(function () { + $("#pressure_chart").jqxChart("saveAsPNG", "hergisting_"+my_code+".png", getExportServer()); + }); + $("#pngButton").jqxButton({ template: "primary", width: 125, theme: theme }); + + $("#Close").jqxButton({ template: "success", width: 125, theme: theme }); + $("#Close").click(function () { + window.close(); + }); +}); + diff -r 9e43b216ccd3 -r d25a1b160dba www/js/log_fermentation-min.js --- a/www/js/log_fermentation-min.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/log_fermentation-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -$(document).ready(function(){$("#jqxMenu").jqxMenu("destroy");$("#jqxLoader").jqxLoader({width:250,height:150,isModal:true,text:"Opmaken grafiek ...",theme:theme});$("#jqxLoader").jqxLoader("open");function a(){return"https://www.jqwidgets.com/export_server/export.php"}var d={datatype:"json",datafields:[{name:"date",type:"date",format:"yyyy-MM-dd HH:mm"},{name:"air",type:"float"},{name:"beer",type:"float"},{name:"chiller",type:"float"},{name:"room",type:"float"},{name:"tlo",type:"float"},{name:"thi",type:"float"},{name:"heater",type:"int"},{name:"cooler",type:"int"},{name:"event",type:"string"}],url:"getfermentlog.php?code="+my_code+"&name="+my_name};var c=new $.jqx.dataAdapter(d,{autoBind:true,async:false,loadComplete:function(){$("#jqxLoader").jqxLoader("close")},loadError:function(g,e,f){}});var b={title:my_code+' "'+my_name+'"',description:"",source:c,xAxis:{dataField:"date",type:"date",formatFunction:function(e){return e.getDate()+"-"+(e.getMonth()+1)+"-"+e.getFullYear()},toolTipFormatFunction:function(g){var f=g.getHours();var e=g.getMinutes();return g.getDate()+"-"+(g.getMonth()+1)+"-"+g.getFullYear()+" "+(f<10?"0"+f:f)+":"+(e<10?"0"+e:e)},textRotationAngle:45,howGridLines:false,rangeSelector:{size:90,dataField:"beer",serieType:"line",gridLines:{visible:false},}},colorScheme:"scheme01",seriesGroups:[{type:"area",valueAxis:{minValue:0,maxValue:100,displayValueAxis:false,description:"Heat/Cool %"},series:[{dataField:"cooler",lineWidth:1,displayText:"Cool %",opacity:0.4},{dataField:"heater",lineWidth:1,displayText:"Heat %",opacity:0.3}]},{type:"spline",valueAxis:{minValue:0,description:"Graden C"},series:[{dataField:"air",lineWidth:1,displayText:"Air"},{dataField:"beer",lineWidth:2,displayText:"Beer"},{dataField:"tlo",lineWidth:1,displayText:"Target Lo",opacity:0.7},{dataField:"thi",lineWidth:1,displayText:"Target Hi",opacity:0.7},{dataField:"room",lineWidth:1,displayText:"Room",opacity:0.5},{dataField:"chiller",lineWidth:1,displayText:"Chiller",color:"#0000bb"}]}]};$("#fermenter_chart").jqxChart(b);$("#print").click(function(){var g=$("#fermenter_chart")[0].outerHTML;var h=window.open("","","width=865, height=425"),e=h.document.open(),f=''+my_code+" "+my_name+" vergisting"+g+"";e.write(f);e.close();h.print()});$("#print").jqxButton({template:"primary",width:125,theme:theme});$("#pdfButton").click(function(){$("#fermenter_chart").jqxChart("saveAsPDF","vergisting_"+my_code+".pdf",a())});$("#pdfButton").jqxButton({template:"primary",width:125,theme:theme});$("#pngButton").click(function(){$("#fermenter_chart").jqxChart("saveAsPNG","vergisting_"+my_code+".png",a())});$("#pngButton").jqxButton({template:"primary",width:125,theme:theme});$("#Close").jqxButton({template:"success",width:125,theme:theme});$("#Close").click(function(){window.close()})}); \ No newline at end of file +$(document).ready(function(){$("#jqxMenu").jqxMenu("destroy");$("#jqxLoader").jqxLoader({width:250,height:150,isModal:true,text:"Opmaken grafiek ...",theme:theme});$("#jqxLoader").jqxLoader("open");function a(){return"https://www.jqwidgets.com/export_server/export.php"}var d={datatype:"json",datafields:[{name:"date",type:"date",format:"yyyy-MM-dd HH:mm"},{name:"air",type:"float"},{name:"beer",type:"float"},{name:"chiller",type:"float"},{name:"room",type:"float"},{name:"tlo",type:"float"},{name:"thi",type:"float"},{name:"heater",type:"int"},{name:"cooler",type:"int"},{name:"event",type:"string"}],url:"getfermentlog.php?code="+my_code+"&name="+my_name},c=new $.jqx.dataAdapter(d,{autoBind:true,async:false,loadComplete:function(){$("#jqxLoader").jqxLoader("close")},loadError:function(g,e,f){}}),b={title:my_code+' "'+my_name+'"',description:"",source:c,xAxis:{dataField:"date",type:"date",formatFunction:function(e){return e.getDate()+"-"+(e.getMonth()+1)+"-"+e.getFullYear()},toolTipFormatFunction:function(g){var f=g.getHours(),e=g.getMinutes();return g.getDate()+"-"+(g.getMonth()+1)+"-"+g.getFullYear()+" "+(f<10?"0"+f:f)+":"+(e<10?"0"+e:e)},textRotationAngle:45,howGridLines:false,rangeSelector:{size:90,dataField:"beer",serieType:"line",gridLines:{visible:false},}},colorScheme:"scheme01",seriesGroups:[{type:"area",valueAxis:{minValue:0,maxValue:100,displayValueAxis:false,description:"Heat/Cool %"},series:[{dataField:"cooler",lineWidth:1,displayText:"Cool %",opacity:0.4},{dataField:"heater",lineWidth:1,displayText:"Heat %",opacity:0.3}]},{type:"spline",valueAxis:{minValue:0,description:"Graden C"},series:[{dataField:"air",lineWidth:1,displayText:"Air"},{dataField:"beer",lineWidth:2,displayText:"Beer"},{dataField:"tlo",lineWidth:1,displayText:"Target Lo",opacity:0.7},{dataField:"thi",lineWidth:1,displayText:"Target Hi",opacity:0.7},{dataField:"room",lineWidth:1,displayText:"Room",opacity:0.5},{dataField:"chiller",lineWidth:1,displayText:"Chiller",color:"#0000bb"}]}]};$("#fermenter_chart").jqxChart(b);$("#print").click(function(){var g=$("#fermenter_chart")[0].outerHTML,h=window.open("","","width=865, height=425"),e=h.document.open(),f=''+my_code+" "+my_name+" vergisting"+g+"";e.write(f);e.close();h.print()});$("#print").jqxButton({template:"primary",width:125,theme:theme});$("#pdfButton").click(function(){$("#fermenter_chart").jqxChart("saveAsPDF","vergisting_"+my_code+".pdf",a())});$("#pdfButton").jqxButton({template:"primary",width:125,theme:theme});$("#pngButton").click(function(){$("#fermenter_chart").jqxChart("saveAsPNG","vergisting_"+my_code+".png",a())});$("#pngButton").jqxButton({template:"primary",width:125,theme:theme});$("#Close").jqxButton({template:"success",width:125,theme:theme});$("#Close").click(function(){window.close()})}); \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/log_fermentation.js --- a/www/js/log_fermentation.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/log_fermentation.js Fri Oct 18 13:12:46 2019 +0200 @@ -53,8 +53,8 @@ { name: "event", type: "string" } ], url: 'getfermentlog.php?code=' + my_code + '&name=' + my_name - }; - var dataAdapter = new $.jqx.dataAdapter(sourceA, { + }, + dataAdapter = new $.jqx.dataAdapter(sourceA, { autoBind: true, async: false, loadComplete: function () { @@ -62,9 +62,8 @@ }, loadError: function (jqXHR, status, error) { } - }); - - var settings = { + }), + settings = { title: my_code + ' "' + my_name + '"', description: "", source: dataAdapter, @@ -75,8 +74,8 @@ return value.getDate() + '-' + (value.getMonth() + 1) + '-' + value.getFullYear(); }, toolTipFormatFunction: function (value) { - var h = value.getHours(); - var m = value.getMinutes(); + var h = value.getHours(), + m = value.getMinutes(); return value.getDate() + '-' + (value.getMonth() + 1) + '-' + value.getFullYear() + ' ' + (h < 10 ? '0' + h : h) + ':' + (m < 10 ? '0' + m : m); }, @@ -124,8 +123,8 @@ $("#fermenter_chart").jqxChart(settings); $("#print").click(function () { - var content = $("#fermenter_chart")[0].outerHTML; - var newWindow = window.open("", "", "width=865, height=425"), + var content = $("#fermenter_chart")[0].outerHTML, + newWindow = window.open("", "", "width=865, height=425"), document = newWindow.document.open(), pageContent = '' + diff -r 9e43b216ccd3 -r d25a1b160dba www/js/mon_co2meter-min.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/js/mon_co2meter-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -0,0 +1,1 @@ +$(document).ready(function(){var g={},f={},d=false,h=0,i={datatype:"json",cache:false,datafields:[{name:"code",type:"string"},{name:"name",type:"string"},{name:"uuid",type:"string"}],id:"code",url:"includes/db_product.php?select=ferment"},l=new $.jqx.dataAdapter(i,{beforeLoadComplete:function(m){var p,n,o=new Array();f.code="Free";f.name="Dummy";f.uuid="66ecccbf-e942-4a35-af49-8b02314561a5";o.push(f);for(n=0;nPower');$("#select_beer").jqxDropDownList({disabled:true});$("#select_beer").jqxDropDownList("clearSelection");$("#select_beer").hide()}else{$("#co2meter_powerled").html('
      Power');$("#select_beer").show();$("#select_beer").jqxDropDownList({disabled:false})}if(g.online&&(g.alarm!="0")){$("#co2meter_alarmled").html('
      Alarm')}else{$("#co2meter_alarmled").html('
      Alarm')}$("#gaugeContainer_temperature").jqxGauge({caption:{value:"Temp: "+g.temperature.toFixed(3)}});$("#gaugeContainer_temperature").jqxGauge({value:g.temperature});if(g.temperature_state=="OK"){$("#gaugeContainer_temperature").jqxGauge({disabled:false})}else{$("#gaugeContainer_temperature").jqxGauge({disabled:true})}$("#gaugeContainer_pressure").jqxGauge({caption:{value:"Bar: "+g.pressure_bar.toFixed(2)}});$("#gaugeContainer_pressure").jqxGauge({value:g.pressure_bar});if(g.pressure_state=="OK"){$("#gaugeContainer_pressure").jqxGauge({disabled:false})}else{$("#gaugeContainer_pressure").jqxGauge({disabled:true})}}});$("#select_beer").jqxDropDownList({placeHolder:"Kies bier:",theme:theme,source:l,displayMember:"code",width:150,height:24,dropDownWidth:500,autoDropDownHeight:true,renderer:function(n,m,p){var o=l.records[n];return o.code+" - "+o.name}});$("#gaugeContainer_temperature").jqxGauge(c);$("#gaugeContainer_temperature").jqxGauge({caption:{value:"Temp: 00.000"}});$("#gaugeContainer_pressure").jqxGauge(e);$("#gaugeContainer_pressure").jqxGauge({caption:{value:"Bar: 00.000"}});function j(o,m,n){console.log("sendProduct("+o+", "+m+", "+n+")");var p="uuid="+g.uuid+"&beeruuid="+n+"&beercode="+o+"&beername="+m;$.ajax({url:"cmd_co2meter.php",data:p,type:"POST",success:function(q){},error:function(q,s,r){console.log("sendProduct() error")}})}k.dataBind();setInterval(function(){var m=false;if(d){j(g.beercode,g.beername,g.beeruuid);d=false;m=true}if(m){h=4}else{if(h>0){h--}}if(h<=0){k.dataBind();h=20}},500);$("#select_beer").on("select",function(o){if(o.args){var m=o.args.index,n=l.records[m];g.beercode=n.code;g.beername=n.name;g.beeruuid=n.uuid;d=true}});$("#FLog").jqxButton({template:"primary",width:"150px",theme:theme});$("#FLog").click(function(){window.open("log_co2pressure.php?code="+g.beercode+"&name="+g.beername)})}); \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/mon_co2meter.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/js/mon_co2meter.js Fri Oct 18 13:12:46 2019 +0200 @@ -0,0 +1,223 @@ +/***************************************************************************** + * Copyright (C) 2019 + * + * Michiel Broek + * + * This file is part of BMS + * + * 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. + * + * Brewery Management System istributed 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. + *****************************************************************************/ + + +$(document).ready(function () { + + var record = {}, + blank = {}, + newProduct = false, + schedule = 0, + + productSource = { + datatype: "json", + cache: false, + datafields: [ + { name: 'code', type: 'string' }, + { name: 'name', type: 'string' }, + { name: 'uuid', type: 'string' } + ], + id: 'code', + url: "includes/db_product.php?select=ferment" + }, + productlist = new $.jqx.dataAdapter(productSource, { + beforeLoadComplete: function (records) { + var row, i, data = new Array(); + // Create a dummy beer on top to store in idle meters. + blank['code'] = "Free"; // Will override this later. + blank['name'] = 'Dummy'; + blank['uuid'] = '66ecccbf-e942-4a35-af49-8b02314561a5'; + data.push(blank); + for (i = 0; i < records.length; i++) { + row = records[i]; + data.push(row); + } + return data; + }, + loadError: function(jqXHR, status, error) { + $('#err').text(status + ' ' + error); + }, + }), + gaugeoptionst = { + min: 10, max: 40, width: 375, height: 375, + ranges: [{ startValue: 10, endValue: 20, style: { fill: '#3399FF', stroke: '#3399FF' }, endWidth: 10, startWidth: 10 }, + { startValue: 20, endValue: 28, style: { fill: '#00CC33', stroke: '#00CC33' }, endWidth: 10, startWidth: 10 }, + { startValue: 28, endValue: 40, style: { fill: '#FC6A6A', stroke: '#FC6A6A' }, endWidth: 10, startWidth: 10 }], + ticksMinor: { interval: 1, size: '5%' }, + ticksMajor: { interval: 5, size: '9%' }, + labels: { interval: 5 }, + style: { fill: '#eeeeee', stroke: '#666666' }, + value: 0, + colorScheme: 'scheme05' + }, + gaugeoptionsp = { + min: 0, max: 6, width: 375, height: 375, + ranges: [{ startValue: 0, endValue: 3, style: { fill: '#00CC33', stroke: '#00CC33' }, endWidth: 10, startWidth: 10 }, + { startValue: 3, endValue: 6, style: { fill: '#FC6A6A', stroke: '#FC6A6A' }, endWidth: 10, startWidth: 10 }], + ticksMinor: { interval: 0.2, size: '5%' }, + ticksMajor: { interval: 1, size: '9%' }, + labels: { interval: 1 }, + style: { fill: '#eeeeee', stroke: '#666666' }, + value: 0, + colorScheme: 'scheme05' + }, + url = "getco2meter.php?uuid='" + my_uuid + "'", + source = { + datatype: "json", + datafields: [ + { name: 'record', type: 'int' }, + { name: 'uuid', type: 'string' }, + { name: 'alias', type: 'string' }, + { name: 'node', type: 'string' }, + { name: 'online', type: 'int' }, + { name: 'beercode', type: 'string' }, + { name: 'beername', type: 'string' }, + { name: 'beeruuid', type: 'string' }, + { name: 'mode', type: 'string' }, + { name: 'alarm', type: 'int' }, + { name: 'temperature_state', type: 'string' }, + { name: 'temperature', type: 'float' }, + { name: 'pressure_state', type: 'string' }, + { name: 'pressure_bar', type: 'float' } + ], + id: 'record', + url: url + }, + dataAdapter = new $.jqx.dataAdapter(source, { + loadComplete: function (records) { + record = dataAdapter.records[0]; + var oline = (record.online) ? "On-line" : "Off-line"; + $("#info_uuid").html(record.uuid); + $("#info_system").html(record.node + "/" + record.alias); + $("#info_online").html(oline); + $("#info_beer").html(record.beercode + " - " + record.beername); + $("#info_mode").html(record.mode); + blank['name'] = record.alias; + blank['code'] = record.alias.toUpperCase(); + blank['uuid'] = record.uuid; + + if (record.online && (record.mode != "OFF")) { + $("#co2meter_powerled").html('
      Power'); + $("#select_beer").jqxDropDownList({ disabled: true }); + $("#select_beer").jqxDropDownList('clearSelection'); + $("#select_beer").hide(); + } else { + $("#co2meter_powerled").html('
      Power'); + $("#select_beer").show(); + $("#select_beer").jqxDropDownList({ disabled: false }); + + } + if (record.online && (record.alarm != "0")) { + $("#co2meter_alarmled").html('
      Alarm'); + } else { + $("#co2meter_alarmled").html('
      Alarm'); + } + + $("#gaugeContainer_temperature").jqxGauge({ caption: { value: 'Temp: '+record.temperature.toFixed(3) }}); + $('#gaugeContainer_temperature').jqxGauge({ value: record.temperature }); + if (record.temperature_state == "OK") { + $("#gaugeContainer_temperature").jqxGauge({ disabled: false }); + } else { + $("#gaugeContainer_temperature").jqxGauge({ disabled: true }); + } + $("#gaugeContainer_pressure").jqxGauge({ caption: { value: 'Bar: '+record.pressure_bar.toFixed(2) }}); + $('#gaugeContainer_pressure').jqxGauge({ value: record.pressure_bar }); + if (record.pressure_state == "OK") { + $("#gaugeContainer_pressure").jqxGauge({ disabled: false }); + } else { + $("#gaugeContainer_pressure").jqxGauge({ disabled: true }); + } + } + }); + + $("#select_beer").jqxDropDownList({ + placeHolder: "Kies bier:", + theme: theme, + source: productlist, + displayMember: "code", + width: 150, + height: 24, + dropDownWidth: 500, + autoDropDownHeight: true, + renderer: function (index, label, value) { + var datarecord = productlist.records[index]; + return datarecord.code + " - " + datarecord.name; + } + }); + + $("#gaugeContainer_temperature").jqxGauge( gaugeoptionst ); + $("#gaugeContainer_temperature").jqxGauge( { caption: { value: 'Temp: 00.000' }} ); + $("#gaugeContainer_pressure").jqxGauge( gaugeoptionsp ); + $("#gaugeContainer_pressure").jqxGauge( { caption: { value: 'Bar: 00.000' }} ); + + function sendProduct(code, name, uuid) { + + console.log("sendProduct("+code+", "+name+", "+uuid+")"); + var data = 'uuid='+record.uuid+'&beeruuid='+uuid+'&beercode='+code+'&beername='+name; + $.ajax({ + url: "cmd_co2meter.php", + data: data, + type: "POST", + success: function(data) {}, + error: function(jqXHR, textStatus, errorThrown) { console.log("sendProduct() error"); } + }); + } + + // Get the data immediatly and then at regular intervals to refresh. + dataAdapter.dataBind(); + setInterval(function() { + var skip = false; + if (newProduct) { + sendProduct(record.beercode, record.beername, record.beeruuid); + newProduct = false; + skip = true; + } + if (skip) { + schedule = 4; // 2 seconds wait to get the results + } else { + if (schedule > 0) + schedule--; + } + + if (schedule <= 0) { + dataAdapter.dataBind(); + schedule = 20; + } + }, 500); + + $("#select_beer").on('select', function (event) { + if (event.args) { + var index = event.args.index, + datarecord = productlist.records[index]; + record.beercode = datarecord.code; + record.beername = datarecord.name; + record.beeruuid = datarecord.uuid; + newProduct = true; + } + }); + + // The chart button. + $("#FLog").jqxButton({ template: "primary", width: '150px', theme: theme }); + $("#FLog").click(function () { + window.open('log_co2pressure.php?code=' + record.beercode + '&name=' + record.beername); + }); +}); diff -r 9e43b216ccd3 -r d25a1b160dba www/js/mon_fermenter-min.js --- a/www/js/mon_fermenter-min.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/mon_fermenter-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -function createAbortElements(){$("#eventWindow").jqxWindow({theme:theme,position:{x:440,y:210},width:400,height:200,resizable:false,isModal:true,modalOpacity:0.4,okButton:$("#delOk"),cancelButton:$("#delCancel"),initContent:function(){$("#delOk").jqxButton({template:"danger",width:"65px",theme:theme});$("#delCancel").jqxButton({template:"success",width:"65px",theme:theme});$("#delCancel").focus()}});$("#eventWindow").jqxWindow("hide")}$(document).ready(function(){var c={};var e={};var b="";var l=false;var k=false;var w=false;var n=false;var o=0;var t=12;var y=24;var v={datatype:"json",cache:false,datafields:[{name:"code",type:"string"},{name:"name",type:"string"},{name:"uuid",type:"string"},{name:"stage",type:"int"},{name:"yeast_lo",type:"float"},{name:"yeast_hi",type:"float"}],id:"code",url:"includes/db_product.php?select=ferment"};var s=new $.jqx.dataAdapter(v,{beforeLoadComplete:function(z){var B=new Array();e.code="Free";e.name="Dummy";e.uuid="66ecccbf-e942-4a35-af49-8b02314561a5";e.stage=10;e.yeast_lo=12;e.yeast_hi=24;B.push(e);for(var A=0;ADoor')}else{$("#fermenter_doorled").html('
      Door')}if(c.online&&c.light_address&&(c.light_state!="0")){$("#fermenter_lightled").html('
      Light')}else{$("#fermenter_lightled").html('
      Light')}if(c.online&&(c.mode!="OFF")){$("#fermenter_powerled").html('
      Power');$("#select_beer").jqxDropDownList({disabled:true});$("#select_beer").jqxDropDownList("clearSelection");$("#select_beer").hide()}else{$("#fermenter_powerled").html('
      Power');$("#select_beer").show();$("#select_beer").jqxDropDownList({disabled:false})}if(c.online&&(c.alarm!="0")){$("#fermenter_alarmled").html('
      Alarm')}else{$("#fermenter_alarmled").html('
      Alarm')}if(c.online&&(c.heater_state!="0")){$("#fermenter_led1").html('
      Heat')}else{$("#fermenter_led1").html('
      Heat')}if(c.online&&(c.cooler_state!="0")){$("#fermenter_led2").html('
      Cool')}else{$("#fermenter_led2").html('
      Cool')}if(c.online&&(c.fan_state!="0")){$("#fermenter_led3").html('
      Fan')}else{$("#fermenter_led3").html('
      Fan')}if(c.online&&(c.mode=="NONE")){$("#fermenter_toggle1").jqxSwitchButton("enable");$("#fermenter_toggle2").jqxSwitchButton("enable");$("#fermenter_toggle3").jqxSwitchButton("enable")}else{$("#fermenter_toggle1").jqxSwitchButton("disable");$("#fermenter_toggle2").jqxSwitchButton("disable");$("#fermenter_toggle3").jqxSwitchButton("disable");$("#fermenter_toggle1").val((c.heater_state!="0"));$("#fermenter_toggle2").val((c.cooler_state!="0"));$("#fermenter_toggle3").val((c.fan_state!="0"))}if(c.online&&(c.mode=="PROFILE")){if(c.profile_state=="OFF"){$("#select_profile").show();$("#select_profile").jqxDropDownList({disabled:false});$("#info_mode").jqxDropDownList({disabled:false});$("#Profile1").jqxButton({template:"success",value:"Starten"});$("#Profile1").show();$("#Profile2").hide();$("#status_profile").html("")}else{if(c.profile_state=="RUN"){$("#select_profile").jqxDropDownList({disabled:true});$("#select_profile").hide();$("#info_mode").jqxDropDownList({disabled:true});$("#Profile1").jqxButton({template:"danger",value:"Afbreken"});$("#Profile2").jqxButton({template:"primary",value:"Pauze"});$("#Profile1").show();$("#Profile2").show();$("#status_profile").html("Profiel actief, "+c.profile_percent+"% gereed")}else{if(c.profile_state=="PAUSE"){$("#select_profile").jqxDropDownList({disabled:true});$("#select_profile").hide();$("#info_mode").jqxDropDownList({disabled:true});$("#Profile1").jqxButton({template:"danger",value:"Afbreken"});$("#Profile2").jqxButton({template:"success",value:"Doorgaan"});$("#Profile1").show();$("#Profile2").show();$("#status_profile").html("Profiel pauze, "+c.profile_percent+"% gereed")}else{if(c.profile_state=="DONE"){$("#select_profile").jqxDropDownList({disabled:true});$("#select_profile").hide();$("#info_mode").jqxDropDownList({disabled:true});$("#Profile1").jqxButton({template:"primary",value:"Profiel Ok"});$("#Profile1").show();$("#Profile2").hide();$("#status_profile").html("Profiel is gereed")}}}}}else{$("#select_profile").show();$("#select_profile").jqxDropDownList({disabled:false});$("#info_mode").jqxDropDownList({disabled:false});$("#Profile1").hide();$("#Profile2").hide();$("#status_profile").html("")}if(c.online&&(c.webcam_url!="")){$("#Camera").show()}else{$("#Camera").hide()}t=c.yeast_lo;y=c.yeast_hi;var z={ranges:[{startValue:0,endValue:t,style:{fill:"#3399FF",stroke:"#3399FF"},endWidth:10,startWidth:10},{startValue:t,endValue:y,style:{fill:"#00CC33",stroke:"#00CC33"},endWidth:10,startWidth:10},{startValue:y,endValue:40,style:{fill:"#FC6A6A",stroke:"#FC6A6A"},endWidth:10,startWidth:10}]};$("#gaugeContainer_air").jqxGauge(z);$("#gaugeContainer_beer").jqxGauge(z);$("#gaugeContainer_air").jqxGauge({caption:{value:"Air: "+c.air_temperature.toFixed(3)}});$("#gaugeContainer_air").jqxGauge({value:c.air_temperature});if(c.air_state=="OK"){$("#gaugeContainer_air").jqxGauge({disabled:false})}else{$("#gaugeContainer_air").jqxGauge({disabled:true})}$("#gaugeContainer_beer").jqxGauge({caption:{value:"Beer: "+c.beer_temperature.toFixed(3)}});$("#gaugeContainer_beer").jqxGauge({value:c.beer_temperature});if(c.beer_state=="OK"){$("#gaugeContainer_beer").jqxGauge({disabled:false})}else{$("#gaugeContainer_beer").jqxGauge({disabled:true})}$("#gaugeContainer_chiller").jqxGauge({value:c.chiller_temperature});if(c.chiller_state=="OK"){$("#gaugeContainer_chiller").jqxGauge({disabled:false})}else{$("#gaugeContainer_chiller").jqxGauge({disabled:true})}}});r.dataBind();setInterval(function(){var z=false;if(l){i(c.stage,c.mode,c.setpoint_low,c.setpoint_high);l=false;z=true}if(w){q(c.heater_state,c.cooler_state,c.fan_state,c.light_state);w=false;z=true}if(k){p(c.beercode,c.beername,c.beeruuid,c.yeast_lo,c.yeast_hi);k=false;z=true}if(n){u(b);n=false;z=true}if(z){o=4}else{if(o>0){o--}}if(o<=0){r.dataBind();o=20}},500);$("#info_mode").on("change",function(A){var z=A.args;if(z){c.mode=z.item.value;$("#fermenter_toggle1").val(0);$("#fermenter_toggle2").val(0);$("#fermenter_toggle3").val(0)}l=true});$("#info_stage").on("select",function(A){var z=A.args;if(z){c.stage=z.item.value}l=true});$("#select_beer").on("select",function(B){if(B.args){var z=B.args.index;var A=s.records[z];c.beercode=A.code;c.beername=A.name;c.beeruuid=A.uuid;c.yeast_lo=A.yeast_lo;c.yeast_hi=A.yeast_hi;k=true}});$("#select_profile").on("select",function(C){if(C.args){var z=C.args.index;var B=a.records[z];if(B.record==-1){b='{"profile":null}'}else{b='{"profile":{"uuid":"'+B.uuid+'","name":"'+B.name+'",';b+='"inittemp":{"low":'+B.inittemp_lo+',"high":'+B.inittemp_hi+"},";b+='"fridgemode":'+B.fridgemode+',"steps":[';for(var A=0;A0){b+=","}b+='{"steptime":'+D.steptime+',"resttime":'+D.resttime;b+=',"target_lo":'+D.target_lo+',"target_hi":'+D.target_hi;b+=',"fridgemode":'+D.fridgemode+',"name":"'+D.name+'"}'}b+="]}}"}n=true}});$("#target_lo").on("change",function(z){c.setpoint_low=parseFloat(z.args.value);if(c.setpoint_low>c.setpoint_high){c.setpoint_high=c.setpoint_low;$("#target_hi").val(c.setpoint_high)}l=true});$("#target_hi").on("change",function(z){c.setpoint_high=parseFloat(z.args.value);if(c.setpoint_highDoor')}else{$("#fermenter_doorled").html('
      Door')}if(c.online&&c.light_address&&(c.light_state!="0")){$("#fermenter_lightled").html('
      Light')}else{$("#fermenter_lightled").html('
      Light')}if(c.online&&(c.mode!="OFF")){$("#fermenter_powerled").html('
      Power');$("#select_beer").jqxDropDownList({disabled:true});$("#select_beer").jqxDropDownList("clearSelection");$("#select_beer").hide()}else{$("#fermenter_powerled").html('
      Power');$("#select_beer").show();$("#select_beer").jqxDropDownList({disabled:false})}if(c.online&&(c.alarm!="0")){$("#fermenter_alarmled").html('
      Alarm')}else{$("#fermenter_alarmled").html('
      Alarm')}if(c.online&&(c.heater_state!="0")){$("#fermenter_led1").html('
      Heat')}else{$("#fermenter_led1").html('
      Heat')}if(c.online&&(c.cooler_state!="0")){$("#fermenter_led2").html('
      Cool')}else{$("#fermenter_led2").html('
      Cool')}if(c.online&&(c.fan_state!="0")){$("#fermenter_led3").html('
      Fan')}else{$("#fermenter_led3").html('
      Fan')}if(c.online&&(c.mode=="NONE")){$("#fermenter_toggle1").jqxSwitchButton("enable");$("#fermenter_toggle2").jqxSwitchButton("enable");$("#fermenter_toggle3").jqxSwitchButton("enable")}else{$("#fermenter_toggle1").jqxSwitchButton("disable");$("#fermenter_toggle2").jqxSwitchButton("disable");$("#fermenter_toggle3").jqxSwitchButton("disable");$("#fermenter_toggle1").val((c.heater_state!="0"));$("#fermenter_toggle2").val((c.cooler_state!="0"));$("#fermenter_toggle3").val((c.fan_state!="0"))}if(c.online&&(c.mode=="PROFILE")){if(c.profile_state=="OFF"){$("#select_profile").show();$("#select_profile").jqxDropDownList({disabled:false});$("#info_mode").jqxDropDownList({disabled:false});$("#Profile1").jqxButton({template:"success",value:"Starten"});$("#Profile1").show();$("#Profile2").hide();$("#status_profile").html("")}else{if(c.profile_state=="RUN"){$("#select_profile").jqxDropDownList({disabled:true});$("#select_profile").hide();$("#info_mode").jqxDropDownList({disabled:true});$("#Profile1").jqxButton({template:"danger",value:"Afbreken"});$("#Profile2").jqxButton({template:"primary",value:"Pauze"});$("#Profile1").show();$("#Profile2").show();$("#status_profile").html("Profiel actief, "+c.profile_percent+"% gereed")}else{if(c.profile_state=="PAUSE"){$("#select_profile").jqxDropDownList({disabled:true});$("#select_profile").hide();$("#info_mode").jqxDropDownList({disabled:true});$("#Profile1").jqxButton({template:"danger",value:"Afbreken"});$("#Profile2").jqxButton({template:"success",value:"Doorgaan"});$("#Profile1").show();$("#Profile2").show();$("#status_profile").html("Profiel pauze, "+c.profile_percent+"% gereed")}else{if(c.profile_state=="DONE"){$("#select_profile").jqxDropDownList({disabled:true});$("#select_profile").hide();$("#info_mode").jqxDropDownList({disabled:true});$("#Profile1").jqxButton({template:"primary",value:"Profiel Ok"});$("#Profile1").show();$("#Profile2").hide();$("#status_profile").html("Profiel is gereed")}}}}}else{$("#select_profile").show();$("#select_profile").jqxDropDownList({disabled:false});$("#info_mode").jqxDropDownList({disabled:false});$("#Profile1").hide();$("#Profile2").hide();$("#status_profile").html("")}if(c.online&&(c.webcam_url!="")){$("#Camera").show()}else{$("#Camera").hide()}t=c.yeast_lo;y=c.yeast_hi;z={ranges:[{startValue:0,endValue:t,style:{fill:"#3399FF",stroke:"#3399FF"},endWidth:10,startWidth:10},{startValue:t,endValue:y,style:{fill:"#00CC33",stroke:"#00CC33"},endWidth:10,startWidth:10},{startValue:y,endValue:40,style:{fill:"#FC6A6A",stroke:"#FC6A6A"},endWidth:10,startWidth:10}]};$("#gaugeContainer_air").jqxGauge(z);$("#gaugeContainer_beer").jqxGauge(z);$("#gaugeContainer_air").jqxGauge({caption:{value:"Air: "+c.air_temperature.toFixed(3)}});$("#gaugeContainer_air").jqxGauge({value:c.air_temperature});if(c.air_state=="OK"){$("#gaugeContainer_air").jqxGauge({disabled:false})}else{$("#gaugeContainer_air").jqxGauge({disabled:true})}$("#gaugeContainer_beer").jqxGauge({caption:{value:"Beer: "+c.beer_temperature.toFixed(3)}});$("#gaugeContainer_beer").jqxGauge({value:c.beer_temperature});if(c.beer_state=="OK"){$("#gaugeContainer_beer").jqxGauge({disabled:false})}else{$("#gaugeContainer_beer").jqxGauge({disabled:true})}$("#gaugeContainer_chiller").jqxGauge({value:c.chiller_temperature});if(c.chiller_state=="OK"){$("#gaugeContainer_chiller").jqxGauge({disabled:false})}else{$("#gaugeContainer_chiller").jqxGauge({disabled:true})}}});$("#select_beer").jqxDropDownList({placeHolder:"Kies bier:",theme:theme,source:s,displayMember:"code",width:150,height:24,dropDownWidth:500,autoDropDownHeight:true,renderer:function(A,z,C){var B=s.records[A];return B.code+" - "+B.name}});$("#select_profile").jqxDropDownList({placeHolder:"Kies profiel:",theme:theme,source:a,displayMember:"name",width:150,height:24,dropDownWidth:500,autoDropDownHeight:true,});$("#gaugeContainer_air").jqxGauge(g);$("#gaugeContainer_air").jqxGauge({caption:{value:"Air: 00.000"}});$("#gaugeContainer_beer").jqxGauge(g);$("#gaugeContainer_beer").jqxGauge({caption:{value:"Beer: 00.000"}});$("#gaugeContainer_chiller").jqxGauge(h);$("#fermenter_toggle1").jqxSwitchButton(m);$("#fermenter_toggle2").jqxSwitchButton(m);$("#fermenter_toggle3").jqxSwitchButton(m);srcMode=["OFF","NONE","FRIDGE","BEER","PROFILE"];srcStage=["PRIMARY","SECONDARY","TERTIARY","CARBONATION"];$("#info_mode").jqxDropDownList({theme:theme,source:srcMode,width:100,height:24,dropDownHeight:156});$("#info_stage").jqxDropDownList({theme:theme,source:srcStage,width:150,height:24,dropDownHeight:125});$("#target_lo").jqxNumberInput(x);$("#target_hi").jqxNumberInput(x);$("#Profile1").jqxButton({template:"info",width:"150px",height:24,theme:theme});$("#Profile2").jqxButton({template:"info",width:"150px",height:24,theme:theme});$("#Profile1").hide();$("#Profile2").hide();function i(B,D,A,z){console.log("sendBase("+B+", "+D+", "+A+", "+z+")");var C="node="+c.node+"&alias="+c.alias+'&payload={"stage":"'+B;C+='","mode":"'+D+'","setpoint":{"low":'+A+',"high":'+z+"}}";$.ajax({url:"cmd_fermenter.php",data:C,type:"POST",success:function(E){},error:function(E,G,F){console.log("sendBase() error")}})}function q(C,B,A,z){console.log("sendSwitch("+C+", "+B+", "+A+", "+z+")");var D="node="+c.node+"&alias="+c.alias+"&payload=";D+='{"heater":{"state":'+C+'},"cooler":{"state":'+B+'},"fan":{"state":'+A+'},"light":{"state":'+z+"}}";$.ajax({url:"cmd_fermenter.php",data:D,type:"POST",success:function(E){},error:function(E,G,F){console.log("sendSwitch() error")}})}function p(D,B,C,A,z){console.log("sendProduct("+D+", "+B+", "+C+", "+A+", "+z+")");var E="node="+c.node+"&alias="+c.alias+"&payload=";E+='{"product":{"code":"'+D+'","name":"'+B+'","uuid":"'+C+'","yeast_lo":'+A+',"yeast_hi":'+z+"}}";$.ajax({url:"cmd_fermenter.php",data:E,type:"POST",success:function(F){},error:function(F,H,G){console.log("sendProduct() error")}})}function u(A){console.log("sendProfile("+A+")");var z="node="+c.node+"&alias="+c.alias+"&payload="+A;$.ajax({url:"cmd_fermenter.php",data:z,type:"POST",success:function(B){},error:function(B,D,C){console.log("sendProfile() error")}})}r.dataBind();setInterval(function(){var z=false;if(l){i(c.stage,c.mode,c.setpoint_low,c.setpoint_high);l=false;z=true}if(w){q(c.heater_state,c.cooler_state,c.fan_state,c.light_state);w=false;z=true}if(k){p(c.beercode,c.beername,c.beeruuid,c.yeast_lo,c.yeast_hi);k=false;z=true}if(n){u(b);n=false;z=true}if(z){o=4}else{if(o>0){o--}}if(o<=0){r.dataBind();o=20}},500);$("#info_mode").on("change",function(A){var z=A.args;if(z){c.mode=z.item.value;$("#fermenter_toggle1").val(0);$("#fermenter_toggle2").val(0);$("#fermenter_toggle3").val(0)}l=true});$("#info_stage").on("select",function(A){var z=A.args;if(z){c.stage=z.item.value}l=true});$("#select_beer").on("select",function(B){if(B.args){var z=B.args.index,A=s.records[z];c.beercode=A.code;c.beername=A.name;c.beeruuid=A.uuid;c.yeast_lo=A.yeast_lo;c.yeast_hi=A.yeast_hi;k=true}});$("#select_profile").on("select",function(C){if(C.args){var z=C.args.index,B=a.records[z],D,A;if(B.record==-1){b='{"profile":null}'}else{b='{"profile":{"uuid":"'+B.uuid+'","name":"'+B.name+'",';b+='"inittemp":{"low":'+B.inittemp_lo+',"high":'+B.inittemp_hi+"},";b+='"fridgemode":'+B.fridgemode+',"steps":[';for(A=0;A0){b+=","}b+='{"steptime":'+D.steptime+',"resttime":'+D.resttime;b+=',"target_lo":'+D.target_lo+',"target_hi":'+D.target_hi;b+=',"fridgemode":'+D.fridgemode+',"name":"'+D.name+'"}'}b+="]}}"}n=true}});$("#target_lo").on("change",function(z){c.setpoint_low=parseFloat(z.args.value);if(c.setpoint_low>c.setpoint_high){c.setpoint_high=c.setpoint_low;$("#target_hi").val(c.setpoint_high)}l=true});$("#target_hi").on("change",function(z){c.setpoint_high=parseFloat(z.args.value);if(c.setpoint_highDoor'); + } else { + $("#fermenter_doorled").html('
      Door'); + } + if (record.online && record.light_address && (record.light_state != "0")) { + $("#fermenter_lightled").html('
      Light'); + } else { + $("#fermenter_lightled").html('
      Light'); + } + + if (record.online && (record.mode != "OFF")) { + $("#fermenter_powerled").html('
      Power'); + $("#select_beer").jqxDropDownList({ disabled: true }); + $("#select_beer").jqxDropDownList('clearSelection'); + $("#select_beer").hide(); + } else { + $("#fermenter_powerled").html('
      Power'); + $("#select_beer").show(); + $("#select_beer").jqxDropDownList({ disabled: false }); + } + if (record.online && (record.alarm != "0")) { + $("#fermenter_alarmled").html('
      Alarm'); + } else { + $("#fermenter_alarmled").html('
      Alarm'); + } + + if (record.online && (record.heater_state != "0")) { + $("#fermenter_led1").html('
      Heat'); + } else { + $("#fermenter_led1").html('
      Heat'); + } + if (record.online && (record.cooler_state != "0")) { + $("#fermenter_led2").html('
      Cool'); + } else { + $("#fermenter_led2").html('
      Cool'); + } + if (record.online && (record.fan_state != "0")) { + $("#fermenter_led3").html('
      Fan'); + } else { + $("#fermenter_led3").html('
      Fan'); + } + if (record.online && (record.mode == "NONE")) { + $("#fermenter_toggle1").jqxSwitchButton( 'enable' ); + $("#fermenter_toggle2").jqxSwitchButton( 'enable' ); + $("#fermenter_toggle3").jqxSwitchButton( 'enable' ); + } else { + $("#fermenter_toggle1").jqxSwitchButton( 'disable' ); + $("#fermenter_toggle2").jqxSwitchButton( 'disable' ); + $("#fermenter_toggle3").jqxSwitchButton( 'disable' ); + $("#fermenter_toggle1").val( (record.heater_state != "0") ); + $("#fermenter_toggle2").val( (record.cooler_state != "0") ); + $("#fermenter_toggle3").val( (record.fan_state != "0") ); + } + + if (record.online && (record.mode == "PROFILE")) { + if (record.profile_state == "OFF") { + $("#select_profile").show(); + $("#select_profile").jqxDropDownList({ disabled: false }); + $("#info_mode").jqxDropDownList({ disabled: false }); + $('#Profile1').jqxButton({ template: "success", value: "Starten" }); + $("#Profile1").show(); + $("#Profile2").hide(); + $("#status_profile").html(''); + } else if (record.profile_state == "RUN") { + $("#select_profile").jqxDropDownList({ disabled: true }); + $("#select_profile").hide(); + $("#info_mode").jqxDropDownList({ disabled: true }); + $('#Profile1').jqxButton({ template: "danger", value: "Afbreken" }); + $('#Profile2').jqxButton({ template: "primary", value: "Pauze" }); + $("#Profile1").show(); + $("#Profile2").show(); + $("#status_profile").html('Profiel actief, '+record.profile_percent+'% gereed'); + } else if (record.profile_state == "PAUSE") { + $("#select_profile").jqxDropDownList({ disabled: true }); + $("#select_profile").hide(); + $("#info_mode").jqxDropDownList({ disabled: true }); + $('#Profile1').jqxButton({ template: "danger", value: "Afbreken" }); + $('#Profile2').jqxButton({ template: "success", value: "Doorgaan" }); + $("#Profile1").show(); + $("#Profile2").show(); + $("#status_profile").html('Profiel pauze, '+record.profile_percent+'% gereed'); + } else if (record.profile_state == "DONE") { + $("#select_profile").jqxDropDownList({ disabled: true }); + $("#select_profile").hide(); + $("#info_mode").jqxDropDownList({ disabled: true }); + $('#Profile1').jqxButton({ template: "primary", value: "Profiel Ok" }); + $("#Profile1").show(); + $("#Profile2").hide(); + $("#status_profile").html('Profiel is gereed'); + } + } else { + $("#select_profile").show(); + $("#select_profile").jqxDropDownList({ disabled: false }); + $("#info_mode").jqxDropDownList({ disabled: false }); + $("#Profile1").hide(); + $("#Profile2").hide(); + $("#status_profile").html(''); + } + if (record.online && (record.webcam_url != "")) { + $("#Camera").show(); + } else { + $("#Camera").hide(); + } + + yl = record.yeast_lo; + yh = record.yeast_hi; + range = { ranges: [{ startValue: 0, endValue: yl, style: { fill: '#3399FF', stroke: '#3399FF' }, endWidth: 10, startWidth: 10 }, + { startValue: yl, endValue: yh, style: { fill: '#00CC33', stroke: '#00CC33' }, endWidth: 10, startWidth: 10 }, + { startValue: yh, endValue: 40, style: { fill: '#FC6A6A', stroke: '#FC6A6A' }, endWidth: 10, startWidth: 10 }] }; + $("#gaugeContainer_air").jqxGauge( range ); + $("#gaugeContainer_beer").jqxGauge( range ); + + $("#gaugeContainer_air").jqxGauge({ caption: { value: 'Air: '+record.air_temperature.toFixed(3) }}); + $('#gaugeContainer_air').jqxGauge({ value: record.air_temperature }); + if (record.air_state == "OK") { + $("#gaugeContainer_air").jqxGauge({ disabled: false }); + } else { + $("#gaugeContainer_air").jqxGauge({ disabled: true }); + } + $("#gaugeContainer_beer").jqxGauge({ caption: { value: 'Beer: '+record.beer_temperature.toFixed(3) }}); + $('#gaugeContainer_beer').jqxGauge({ value: record.beer_temperature }); + if (record.beer_state == "OK") { + $("#gaugeContainer_beer").jqxGauge({ disabled: false }); + } else { + $("#gaugeContainer_beer").jqxGauge({ disabled: true }); + } + $("#gaugeContainer_chiller").jqxGauge({ value: record.chiller_temperature }); + if (record.chiller_state == "OK") { + $("#gaugeContainer_chiller").jqxGauge({ disabled: false }); + } else { + $("#gaugeContainer_chiller").jqxGauge({ disabled: true }); + } + } + }); + + + + + + $("#select_beer").jqxDropDownList({ placeHolder: "Kies bier:", theme: theme, @@ -103,49 +400,6 @@ return datarecord.code + " - " + datarecord.name; } }); - - var profileSource = { - datatype: "json", - cache: false, - datafields: [ - { name: 'record', type: 'int' }, - { name: 'uuid', type: 'string' }, - { name: 'name', type: 'string' }, - { name: 'inittemp_lo', type: 'float' }, - { name: 'inittemp_hi', type: 'float' }, - { name: 'fridgemode', type: 'int' }, - { name: 'totalsteps', type: 'int' }, - { name: 'duration', type: 'int' }, - { name: 'steps', type: 'array' } - ], - id: 'record', - url: "includes/db_profile_fermentation.php" - }; - var profilelist = new $.jqx.dataAdapter(profileSource, { - beforeLoadComplete: function (records) { - var data = new Array(); - var empty = {}; - // Create a dummy profile on top of the list. - empty['record'] = -1; - empty['uuid'] = ''; - empty['name'] = 'Wis profiel'; - empty['inittemp_lo'] = 20; - empty['inittemp_hi'] = 20; - empty['fridgemode'] = 0; - empty['totalsteps'] = 0; - empty['duration'] = 0; - empty['steps'] = '[]'; - data.push(empty); - for (var i = 0; i < records.length; i++) { - var row = records[i]; - data.push(row); - } - return data; - }, - loadError: function(jqXHR, status, error) { - $('#err').text(status + ' ' + error); - }, - }); $("#select_profile").jqxDropDownList({ placeHolder: "Kies profiel:", theme: theme, @@ -157,46 +411,12 @@ autoDropDownHeight: true, }); - var gaugeoptions = { - min: 0, max: 40, width: 375, height: 375, - ranges: [{ startValue: 0, endValue: yl, style: { fill: '#3399FF', stroke: '#3399FF' }, endWidth: 10, startWidth: 10 }, - { startValue: yl, endValue: yh, style: { fill: '#00CC33', stroke: '#00CC33' }, endWidth: 10, startWidth: 10 }, - { startValue: yh, endValue: 40, style: { fill: '#FC6A6A', stroke: '#FC6A6A' }, endWidth: 10, startWidth: 10 }], - ticksMinor: { interval: 1, size: '5%' }, - ticksMajor: { interval: 5, size: '9%' }, - labels: { interval: 5 }, - style: { fill: '#eeeeee', stroke: '#666666' }, - value: 0, - colorScheme: 'scheme05' - }; - var gaugeSmalloptions = { - min: -15, max: 25, width: 190, height: 190, - ranges: [{ startValue: -15, endValue: 0, startWidth: 5, endWidth: 5, style: { fill: '#3399FF', stroke: '#3399FF' }}, - { startValue: 0, endValue: 10, startWidth: 5, endWidth: 5, style: { fill: '#00CC33', stroke: '#00CC33' }}, - { startValue: 10, endValue: 25, startWidth: 5, endWidth: 5, style: { fill: '#FC6A6A', stroke: '#FC6A6A' }}], - ticksMinor: { interval: 1, size: '5%' }, - ticksMajor: { interval: 5, size: '9%' }, - labels: { interval: 5 }, - style: { fill: '#eeeeee', stroke: '#666666' }, - value: 0, - colorScheme: 'scheme05', - caption: { value: 'Chiller', position: 'bottom', offset: [0, 10] } - }; $("#gaugeContainer_air").jqxGauge( gaugeoptions ); $("#gaugeContainer_air").jqxGauge( { caption: { value: 'Air: 00.000' }} ); $("#gaugeContainer_beer").jqxGauge( gaugeoptions ); $("#gaugeContainer_beer").jqxGauge( { caption: { value: 'Beer: 00.000' }} ); $("#gaugeContainer_chiller").jqxGauge( gaugeSmalloptions ); - var switchoptions = { - height: 68, - width: 35, - onLabel:'AAN', - offLabel:'UIT', - theme: theme, - thumbSize:'50%', - orientation: 'vertical' - }; $("#fermenter_toggle1").jqxSwitchButton( switchoptions ); $("#fermenter_toggle2").jqxSwitchButton( switchoptions ); $("#fermenter_toggle3").jqxSwitchButton( switchoptions ); @@ -206,7 +426,6 @@ $("#info_mode").jqxDropDownList({ theme: theme, source: srcMode, width: 100, height: 24, dropDownHeight: 156 }); $("#info_stage").jqxDropDownList({ theme: theme, source: srcStage, width: 150, height: 24, dropDownHeight: 125 }); - var targetoptions = { inputMode: 'simple', theme: theme, width: 70, min: 0, max: 40, decimalDigits: 1, spinButtons: true }; $("#target_lo").jqxNumberInput( targetoptions ); $("#target_hi").jqxNumberInput( targetoptions ); @@ -218,8 +437,8 @@ function sendBase(stage, mode, tlo, thi) { console.log("sendBase("+stage+", "+mode+", "+tlo+", "+thi+")"); - var data = 'node='+record.node+'&alias='+record.alias+'&payload={"stage":"'+stage; - data += '","mode":"'+mode+'","setpoint":{"low":'+tlo+',"high":'+thi+'}}'; + var data = 'node=' + record.node + '&alias=' + record.alias + '&payload={"stage":"' + stage; + data += '","mode":"' + mode + '","setpoint":{"low":' + tlo + ',"high":' + thi + '}}'; $.ajax({ url: "cmd_fermenter.php", data: data, @@ -270,221 +489,6 @@ }); } - var url = "getfermenter.php?uuid='" + my_uuid + "'"; - var source = { - datatype: "json", - datafields: [ - { name: 'record', type: 'int' }, - { name: 'uuid', type: 'string' }, - { name: 'alias', type: 'string' }, - { name: 'node', type: 'string' }, - { name: 'online', type: 'int' }, - { name: 'beercode', type: 'string' }, - { name: 'beername', type: 'string' }, - { name: 'air_state', type: 'string' }, - { name: 'air_temperature', type: 'float' }, - { name: 'beer_state', type: 'string' }, - { name: 'beer_temperature', type: 'float' }, - { name: 'chiller_state', type: 'string' }, - { name: 'chiller_temperature', type: 'float' }, - { name: 'heater_state', type: 'int' }, - { name: 'heater_usage', type: 'int' }, - { name: 'cooler_state', type: 'int' }, - { name: 'cooler_usage', type: 'int' }, - { name: 'fan_state', type: 'int' }, - { name: 'fan_usage', type: 'int' }, - { name: 'light_address', type: 'string' }, - { name: 'light_state', type: 'int' }, - { name: 'light_usage', type: 'int' }, - { name: 'door_address', type: 'string' }, - { name: 'door_state', type: 'int' }, - { name: 'psu_address', type: 'string' }, - { name: 'psu_state', type: 'int' }, - { name: 'mode', type: 'string' }, - { name: 'alarm', type: 'int' }, - { name: 'setpoint_high', type: 'float' }, - { name: 'setpoint_low', type: 'float' }, - { name: 'profile_uuid', type: 'string' }, - { name: 'profile_name', type: 'string' }, - { name: 'profile_state', type: 'string' }, - { name: 'profile_percent', type: 'int' }, - { name: 'profile_inittemp_high', type: 'float' }, - { name: 'profile_inittemp_low', type: 'float' }, - { name: 'profile_steps', type: 'string' }, - { name: 'stage', type: 'string' }, - { name: 'beeruuid', type: 'string' }, - { name: 'yeast_lo', type: 'float' }, - { name: 'yeast_hi', type: 'float' }, - { name: 'webcam_url', type: 'string' }, - { name: 'webcam_light', type: 'int' } - ], - id: 'record', - url: url - }; - - var dataAdapter = new $.jqx.dataAdapter(source, { - loadComplete: function (records) { - record = dataAdapter.records[0]; - var oline = (record.online) ? "On-line" : "Off-line"; - $("#info_uuid").html(record.uuid); - $("#info_system").html(record.node + "/" + record.alias); - $("#info_online").html(oline); - $("#info_beer").html(record.beercode + " - " + record.beername); - $("#info_mode").jqxDropDownList('selectItem', record.mode); - $("#info_stage").jqxDropDownList('selectItem', record.stage); - $("#info_profile").html(record.profile_name); - blank['name'] = record.alias; - blank['code'] = record.alias.toUpperCase(); - blank['uuid'] = record.uuid; - if (record.profile_name == "") - $("#info_mode").jqxDropDownList('disableItem', "PROFILE"); - else - $("#info_mode").jqxDropDownList('enableItem', "PROFILE"); - $("#target_lo").val(record.setpoint_low); - $("#target_hi").val(record.setpoint_high); - if (record.online && ((record.mode == "FRIDGE") || (record.mode == "BEER"))) { - $("#target_lo").jqxNumberInput({ readOnly: false, Width: 70, spinButtons: true }); - $("#target_hi").jqxNumberInput({ readOnly: false, Width: 70, spinButtons: true }); - } else { - $("#target_lo").jqxNumberInput({ readOnly: true, Width: 50, spinButtons: false }); - $("#target_hi").jqxNumberInput({ readOnly: true, Width: 50, spinButtons: false }); - } - - if (record.online && record.door_address && (record.door_state != "0")) { - $("#fermenter_doorled").html('
      Door'); - } else { - $("#fermenter_doorled").html('
      Door'); - } - if (record.online && record.light_address && (record.light_state != "0")) { - $("#fermenter_lightled").html('
      Light'); - } else { - $("#fermenter_lightled").html('
      Light'); - } - - if (record.online && (record.mode != "OFF")) { - $("#fermenter_powerled").html('
      Power'); - $("#select_beer").jqxDropDownList({ disabled: true }); - $("#select_beer").jqxDropDownList('clearSelection'); - $("#select_beer").hide(); - } else { - $("#fermenter_powerled").html('
      Power'); - $("#select_beer").show(); - $("#select_beer").jqxDropDownList({ disabled: false }); - } - if (record.online && (record.alarm != "0")) { - $("#fermenter_alarmled").html('
      Alarm'); - } else { - $("#fermenter_alarmled").html('
      Alarm'); - } - - if (record.online && (record.heater_state != "0")) { - $("#fermenter_led1").html('
      Heat'); - } else { - $("#fermenter_led1").html('
      Heat'); - } - if (record.online && (record.cooler_state != "0")) { - $("#fermenter_led2").html('
      Cool'); - } else { - $("#fermenter_led2").html('
      Cool'); - } - if (record.online && (record.fan_state != "0")) { - $("#fermenter_led3").html('
      Fan'); - } else { - $("#fermenter_led3").html('
      Fan'); - } - if (record.online && (record.mode == "NONE")) { - $("#fermenter_toggle1").jqxSwitchButton( 'enable' ); - $("#fermenter_toggle2").jqxSwitchButton( 'enable' ); - $("#fermenter_toggle3").jqxSwitchButton( 'enable' ); - } else { - $("#fermenter_toggle1").jqxSwitchButton( 'disable' ); - $("#fermenter_toggle2").jqxSwitchButton( 'disable' ); - $("#fermenter_toggle3").jqxSwitchButton( 'disable' ); - $("#fermenter_toggle1").val( (record.heater_state != "0") ); - $("#fermenter_toggle2").val( (record.cooler_state != "0") ); - $("#fermenter_toggle3").val( (record.fan_state != "0") ); - } - - if (record.online && (record.mode == "PROFILE")) { - if (record.profile_state == "OFF") { - $("#select_profile").show(); - $("#select_profile").jqxDropDownList({ disabled: false }); - $("#info_mode").jqxDropDownList({ disabled: false }); - $('#Profile1').jqxButton({ template: "success", value: "Starten" }); - $("#Profile1").show(); - $("#Profile2").hide(); - $("#status_profile").html(''); - } else if (record.profile_state == "RUN") { - $("#select_profile").jqxDropDownList({ disabled: true }); - $("#select_profile").hide(); - $("#info_mode").jqxDropDownList({ disabled: true }); - $('#Profile1').jqxButton({ template: "danger", value: "Afbreken" }); - $('#Profile2').jqxButton({ template: "primary", value: "Pauze" }); - $("#Profile1").show(); - $("#Profile2").show(); - $("#status_profile").html('Profiel actief, '+record.profile_percent+'% gereed'); - } else if (record.profile_state == "PAUSE") { - $("#select_profile").jqxDropDownList({ disabled: true }); - $("#select_profile").hide(); - $("#info_mode").jqxDropDownList({ disabled: true }); - $('#Profile1').jqxButton({ template: "danger", value: "Afbreken" }); - $('#Profile2').jqxButton({ template: "success", value: "Doorgaan" }); - $("#Profile1").show(); - $("#Profile2").show(); - $("#status_profile").html('Profiel pauze, '+record.profile_percent+'% gereed'); - } else if (record.profile_state == "DONE") { - $("#select_profile").jqxDropDownList({ disabled: true }); - $("#select_profile").hide(); - $("#info_mode").jqxDropDownList({ disabled: true }); - $('#Profile1').jqxButton({ template: "primary", value: "Profiel Ok" }); - $("#Profile1").show(); - $("#Profile2").hide(); - $("#status_profile").html('Profiel is gereed'); - } - } else { - $("#select_profile").show(); - $("#select_profile").jqxDropDownList({ disabled: false }); - $("#info_mode").jqxDropDownList({ disabled: false }); - $("#Profile1").hide(); - $("#Profile2").hide(); - $("#status_profile").html(''); - } - if (record.online && (record.webcam_url != "")) { - $("#Camera").show(); - } else { - $("#Camera").hide(); - } - - yl = record.yeast_lo; - yh = record.yeast_hi; - var range = { ranges: [{ startValue: 0, endValue: yl, style: { fill: '#3399FF', stroke: '#3399FF' }, endWidth: 10, startWidth: 10 }, - { startValue: yl, endValue: yh, style: { fill: '#00CC33', stroke: '#00CC33' }, endWidth: 10, startWidth: 10 }, - { startValue: yh, endValue: 40, style: { fill: '#FC6A6A', stroke: '#FC6A6A' }, endWidth: 10, startWidth: 10 }] }; - $("#gaugeContainer_air").jqxGauge( range ); - $("#gaugeContainer_beer").jqxGauge( range ); - - $("#gaugeContainer_air").jqxGauge({ caption: { value: 'Air: '+record.air_temperature.toFixed(3) }}); - $('#gaugeContainer_air').jqxGauge({ value: record.air_temperature }); - if (record.air_state == "OK") { - $("#gaugeContainer_air").jqxGauge({ disabled: false }); - } else { - $("#gaugeContainer_air").jqxGauge({ disabled: true }); - } - $("#gaugeContainer_beer").jqxGauge({ caption: { value: 'Beer: '+record.beer_temperature.toFixed(3) }}); - $('#gaugeContainer_beer').jqxGauge({ value: record.beer_temperature }); - if (record.beer_state == "OK") { - $("#gaugeContainer_beer").jqxGauge({ disabled: false }); - } else { - $("#gaugeContainer_beer").jqxGauge({ disabled: true }); - } - $("#gaugeContainer_chiller").jqxGauge({ value: record.chiller_temperature }); - if (record.chiller_state == "OK") { - $("#gaugeContainer_chiller").jqxGauge({ disabled: false }); - } else { - $("#gaugeContainer_chiller").jqxGauge({ disabled: true }); - } - } - }); // Get the data immediatly and then at regular intervals to refresh. dataAdapter.dataBind(); @@ -541,8 +545,8 @@ }); $("#select_beer").on('select', function (event) { if (event.args) { - var index = event.args.index; - var datarecord = productlist.records[index]; + var index = event.args.index, + datarecord = productlist.records[index]; record.beercode = datarecord.code; record.beername = datarecord.name; record.beeruuid = datarecord.uuid; @@ -553,16 +557,17 @@ }); $("#select_profile").on('select', function (event) { if (event.args) { - var index = event.args.index; - var datarecord = profilelist.records[index]; + var index = event.args.index, + datarecord = profilelist.records[index], + row, i; if (datarecord.record == -1) { ppayload = '{"profile":null}'; } else { ppayload = '{"profile":{"uuid":"'+datarecord.uuid+'","name":"'+datarecord.name+'",'; ppayload += '"inittemp":{"low":'+datarecord.inittemp_lo+',"high":'+datarecord.inittemp_hi+'},'; ppayload += '"fridgemode":'+datarecord.fridgemode+',"steps":['; - for (var i = 0; i < datarecord.steps.length; i++) { - var row = datarecord.steps[i]; + for (i = 0; i < datarecord.steps.length; i++) { + row = datarecord.steps[i]; if (i > 0) ppayload += ','; ppayload += '{"steptime":'+row['steptime']+',"resttime":'+row['resttime']; @@ -664,15 +669,13 @@ // The chart button. $("#FLog").jqxButton({ template: "primary", width: '150px', theme: theme }); $("#FLog").click(function () { - var url="log_fermentation.php?code=" + record.beercode + "&name=" + record.beername; - window.open(url); + window.open('log_fermentation.php?code=' + record.beercode + '&name=' + record.beername); }); $("#Camera").jqxButton({ template: "primary", width: '150px', theme: theme }); $("#Camera").click(function () { record.light_state = 100; newSwitch = true; - var url=record.webcam_url; - window.open(url); + window.open(record.webcam_url); }); createAbortElements(); }); diff -r 9e43b216ccd3 -r d25a1b160dba www/js/mon_node-min.js --- a/www/js/mon_node-min.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/mon_node-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -$(document).ready(function(){var a="getnode.php?uuid='"+my_uuid+"'";var b={datatype:"json",datafields:[{name:"record",type:"int"},{name:"uuid",type:"string"},{name:"node",type:"string"},{name:"online",type:"bool"},{name:"group_id",type:"string"},{name:"hardwaremake",type:"string"},{name:"hardwaremodel",type:"string"},{name:"os",type:"string"},{name:"os_version",type:"string"},{name:"firmware",type:"string"},{name:"firstseen",type:"string"},{name:"lastseen",type:"string"},{name:"temperature",type:"float"},{name:"humidity",type:"float"},{name:"barometer",type:"float"},{name:"gps_latitude",type:"float"},{name:"gps_longitude",type:"float"},{name:"gps_altitude",type:"float"},{name:"net_address",type:"string"},{name:"net_ifname",type:"string"},{name:"net_rssi",type:"int"}],id:"record",url:a};var c=new $.jqx.dataAdapter(b,{loadComplete:function(e){var d=c.records[0];var f="
      ";f+="
      Gist naam:
      Productcode:
      Opmerkingen:
      Type:
      Minimum temperatuur °C:
      Gist vorm:
      Maximum temperatuur °C:
      Laboratorium: Vergistingsgraad %:
      Geschikt voor:Maximum Hergebruik:
      Alcohol tolerantie:
      Flocculatie:
      Alcohol tolerantie:
      Maximum Hergebruik:
      POF+:
      Zymocide+:
      Ent temperatuur °C:

      STA1 (diastatic) gen:
      Oogst van boven:
      Oogst tijd uren:
      Bevat bacteriën:

      Voorraad xx:
      Productie datum:
      Prijs per xx:
      Waarde voorraad €:
      THT datum:
      Waarde voorraad €:
      ";f+="";f+="";f+="";f+="";f+="";f+="";f+="";f+="";f+="";f+="";f+="";if(d.online){f+="";if(d.humidity>0){f+=""}if(d.barometer>0){f+=""}if((d.gps_latitude!=0)&&(d.gps_longitude!=0)){f+=""}f+=""}f+="";f+="";$("#ContentPanel").html(f)}});c.dataBind();setInterval(function(){c.dataBind()},30000)}); \ No newline at end of file +$(document).ready(function(){var a="getnode.php?uuid='"+my_uuid+"'",b={datatype:"json",datafields:[{name:"record",type:"int"},{name:"uuid",type:"string"},{name:"node",type:"string"},{name:"online",type:"bool"},{name:"group_id",type:"string"},{name:"hardwaremake",type:"string"},{name:"hardwaremodel",type:"string"},{name:"os",type:"string"},{name:"os_version",type:"string"},{name:"firmware",type:"string"},{name:"firstseen",type:"string"},{name:"lastseen",type:"string"},{name:"temperature",type:"float"},{name:"humidity",type:"float"},{name:"barometer",type:"float"},{name:"gps_latitude",type:"float"},{name:"gps_longitude",type:"float"},{name:"gps_altitude",type:"float"},{name:"net_address",type:"string"},{name:"net_ifname",type:"string"},{name:"net_rssi",type:"int"}],id:"record",url:a},c=new $.jqx.dataAdapter(b,{loadComplete:function(e){var d=c.records[0],f="
      ";f+="
      Systeem overzicht
      Uuid"+d.uuid+"
      Systeem"+d.node+"
      Online"+d.online+"
      Type"+d.group_id+"
      Eerst gezien"+d.firstseen+"
      Laatst gezien"+d.lastseen+"
      Hardware maker"+d.hardwaremake+"
      Hardware model"+d.hardwaremodel+"
      OS"+d.os+" versie: "+d.os_version+"
      Firmware"+d.firmware+"
      Temperatuur"+d.temperature.toFixed(1)+"°C
      Vochtigheid"+d.humidity.toFixed(1)+"%
      Luchtdruk"+d.barometer.toFixed(0)+"
      GPS"+d.gps_latitude+" "+d.gps_longitude+" "+d.gps_altitude+"
      Netwerk"+d.net_ifname+" "+d.net_address+"
      ";f+="";f+="";f+="";f+="";f+="";f+="";f+="";f+="";f+="";f+="";f+="";if(d.online){f+="";if(d.humidity>0){f+=""}if(d.barometer>0){f+=""}if((d.gps_latitude!=0)&&(d.gps_longitude!=0)){f+=""}f+=""}f+="";f+="";$("#ContentPanel").html(f)}});c.dataBind();setInterval(function(){c.dataBind()},30000)}); \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/mon_node.js --- a/www/js/mon_node.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/mon_node.js Fri Oct 18 13:12:46 2019 +0200 @@ -23,8 +23,8 @@ $(document).ready(function () { - var url = "getnode.php?uuid='" + my_uuid + "'"; - var source = { + var url = "getnode.php?uuid='" + my_uuid + "'", + source = { datatype: "json", datafields: [ { name: 'record', type: 'int' }, @@ -51,24 +51,23 @@ ], id: 'record', url: url - }; - - var dataAdapter = new $.jqx.dataAdapter(source, { + }, + dataAdapter = new $.jqx.dataAdapter(source, { loadComplete: function (records) { - var record = dataAdapter.records[0]; - var html = "
      "; - html += "
      Systeem overzicht
      Uuid"+d.uuid+"
      Systeem"+d.node+"
      Online"+d.online+"
      Type"+d.group_id+"
      Eerst gezien"+d.firstseen+"
      Laatst gezien"+d.lastseen+"
      Hardware maker"+d.hardwaremake+"
      Hardware model"+d.hardwaremodel+"
      OS"+d.os+" versie: "+d.os_version+"
      Firmware"+d.firmware+"
      Temperatuur"+d.temperature.toFixed(1)+"°C
      Vochtigheid"+d.humidity.toFixed(1)+"%
      Luchtdruk"+d.barometer.toFixed(0)+"
      GPS"+d.gps_latitude+" "+d.gps_longitude+" "+d.gps_altitude+"
      Netwerk"+d.net_ifname+" "+d.net_address+"
      "; - html += ""; - html += ""; - html += ""; - html += ""; - html += ""; - html += ""; - html += ""; - html += ""; - html += ""; - html += ""; - html += ""; + var record = dataAdapter.records[0], + html = "
      "; + html += "
      Systeem overzicht
      Uuid" + record.uuid + "
      Systeem" + record.node + "
      Online" + record.online + "
      Type" + record.group_id + "
      Eerst gezien" + record.firstseen + "
      Laatst gezien" + record.lastseen + "
      Hardware maker" + record.hardwaremake+ "
      Hardware model" + record.hardwaremodel+ "
      OS" + record.os + " versie: " + record.os_version + "
      Firmware" + record.firmware + "
      "; + html += ""; + html += ""; + html += ""; + html += ""; + html += ""; + html += ""; + html += ""; + html += ""; + html += ""; + html += ""; + html += ""; if (record.online) { html += ""; if (record.humidity > 0) { diff -r 9e43b216ccd3 -r d25a1b160dba www/js/prod_divide-min.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/js/prod_divide-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -0,0 +1,1 @@ +$(document).ready(function(){$("#divide_type").jqxDropDownList({theme:theme,source:SplitAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});function e(){rows=$("#splitGrid").jqxGrid("getrows");c=Round(d,1);for(f=0;f');q.append(p);p.append('');p.append('');$("#saddrowbutton").jqxButton({template:"primary",theme:theme,disabled:true,height:27,width:150});$("#saddrowbutton").on("click",function(){var r={},s=$("#splitGrid").jqxGrid("getdatainformation").rowscount;r.split_code=j.code+"-"+(s+1);r.split_name=j.name+" "+(s+1);r.split_size=0;$("#splitGrid").jqxGrid("addrow",null,r);$("#sdeleterowbutton").jqxButton({disabled:false});$("#divide_type").jqxDropDownList({disabled:true})});$("#sdeleterowbutton").jqxButton({template:"danger",theme:theme,disabled:true,height:27,width:150});$("#sdeleterowbutton").on("click",function(){var t,s,r;t=$("#splitGrid").jqxGrid("getdatainformation").rowscount;s=$("#splitGrid").jqxGrid("getrowid",t-1);r=$("#splitGrid").jqxGrid("getrowdata",s);c+=r.split_size;if(c>d){c=d}$("#leftover").val(c);$("#splitGrid").jqxGrid("deleterow",s);if(t==1){$("#sdeleterowbutton").jqxButton({disabled:true});$("#divide_type").jqxDropDownList({disabled:false})}})},columns:[{text:"Splits code",datafield:"split_code",width:120,editable:false},{text:"Splits naam",datafield:"split_name"},{text:"Splits volume",datafield:"split_size",width:120,align:"right",cellsalign:"right",cellsformat:"f1",columntype:"numberinput",validation:function(p,q){if(q<0||q>g){return{result:false,message:"Volume should be between 0 and "+g+" liter"}}return true},createeditor:function(r,p,q){q.jqxNumberInput({decimalDigits:1,digits:3})}}]});$("#splitGrid").on("cellbeginedit",function(q){var p=q.args;k(p.rowindex)});$("#splitGrid").on("cellvaluechanged",function(q){var p=q.args;e()})};l.dataBind();m(j);$("#name").jqxTooltip({content:"De naam voor dit product."});$("#name").jqxInput({theme:theme,width:640,height:23});$("#code").jqxTooltip({content:"Product code nummer."});$("#code").jqxInput({theme:theme,width:100,height:23});$("#stage").jqxTooltip({content:"De productie fase van dit product."});$("#stage").jqxInput({theme:theme,width:100,height:23});$("#available").jqxNumberInput(Show1dec);$("#leftover").jqxNumberInput(Show1dec);$("#divide_type").val(0);$("#divide_type").on("change",function(n){var i=n.args.index;console.log("divide_type:"+i);j.divide_type=i;switch(i){case 0:d=0;break;case 1:d=j.boil_size;break;case 2:d=j.batch_size;break;case 3:d=j.brew_fermenter_volume;break;case 4:case 5:d=Round(j.brew_fermenter_volume*0.92,1);break;case 6:d=j.package_volume;break}c=d;h=Round(0.1*d,1);$("#available").val(d);$("#leftover").val(c);if(i!=0){$("#saddrowbutton").jqxButton({disabled:false})}else{$("#saddrowbutton").jqxButton({disabled:true})}});$("#Cancel").jqxButton({template:"primary",width:"80px",theme:theme});$("#Cancel").bind("click",function(){window.location.href=my_return});$("#Save").jqxButton({template:"success",width:"80px",theme:theme});$("#Save").bind("click",function(){var p,q,n,r,o;if(c!=d){console.log("Save and there are splits");r={};r.divide_from=j.uuid;r.divide_type=j.divide_type;r.divide_size=c;r.divide_part=0;r.name=j.name;r.code=j.code;o="insert=true&"+$.param(r);$.ajax({dataType:"json",url:durl,cache:false,data:o,type:"POST",success:function(s,i,t){console.log("insert divides: 0")},error:function(i,t,s){console.log("insert divides: "+t)}});p=$("#splitGrid").jqxGrid("getrows");for(n=0;n + * + * This file is part of BMS + * + * 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. + *****************************************************************************/ + + +$(document).ready(function () { + + $('#divide_type').jqxDropDownList({ + theme: theme, + source: SplitAdapter, + valueMember: 'id', + displayMember: 'nl', + width: 180, + height: 23, + autoDropDownHeight: true + }); + + // Calculate the volume in the main batch. + function calcLeftover() { + rows = $('#splitGrid').jqxGrid('getrows'); + leftover = Round(available, 1); + for (i = 0; i < rows.length; i++) { + row = rows[i]; + leftover -= row.split_size; + //console.log('i:' + i + ' split_size:' + row.split_size); + } + $('#leftover').val(leftover); + //console.log('calcLeftover():' + leftover); + } + + // Calculate available volume but ignore the current row. + function calcRoom(r) { + var rows, row, i, vol = 0; + + rows = $('#splitGrid').jqxGrid('getrows'); + for (i = 0; i < rows.length; i++) { + row = rows[i]; + if (i != r) + vol += row.split_size; + } + maxvolume = Round(available - minvolume - vol, 1); + console.log('calcRoom(' + r + '):' + vol + ' room:' + maxvolume); + } + + var dataRecord = {}, + i, + available = 0, + leftover = 0, + minvolume = 0, + maxvolume = 0, + url = 'includes/db_product.php', + + // Prepare the data + source = { + datatype: 'json', + cache: false, + datafields: [ + // From prod_main + { name: 'record', type: 'number' }, + { name: 'uuid', type: 'string' }, + { name: 'name', type: 'string' }, + { name: 'code', type: 'string' }, + { name: 'birth', type: 'string' }, + { name: 'stage', type: 'int' }, + { name: 'notes', type: 'string' }, + { name: 'log_brew', type: 'int' }, + { name: 'log_fermentation', type: 'int' }, + { name: 'inventory_reduced', type: 'int' }, + { name: 'locked', type: 'int' }, + { name: 'eq_name', type: 'string' }, + { name: 'eq_boil_size', type: 'float' }, + { name: 'eq_batch_size', type: 'float' }, + { name: 'eq_tun_volume', type: 'float' }, + { name: 'eq_tun_weight', type: 'float' }, + { name: 'eq_tun_specific_heat', type: 'float' }, + { name: 'eq_tun_material', type: 'int' }, + { name: 'eq_tun_height', type: 'float' }, + { name: 'eq_top_up_water', type: 'float' }, + { name: 'eq_trub_chiller_loss', type: 'float' }, + { name: 'eq_evap_rate', type: 'float' }, + { name: 'eq_boil_time', type: 'float' }, + { name: 'eq_calc_boil_volume', type: 'int' }, + { name: 'eq_top_up_kettle', type: 'float' }, + { name: 'eq_hop_utilization', type: 'float' }, + { name: 'eq_notes', type: 'string' }, + { name: 'eq_lauter_volume', type: 'float' }, + { name: 'eq_lauter_height', type: 'float' }, + { name: 'eq_lauter_deadspace', type: 'float' }, + { name: 'eq_kettle_volume', type: 'float' }, + { name: 'eq_kettle_height', type: 'float' }, + { name: 'eq_mash_volume', type: 'float' }, + { name: 'eq_mash_max', type: 'float' }, + { name: 'eq_efficiency', type: 'float' }, + { name: 'brew_date_start', type: 'string' }, + { name: 'brew_mash_ph', type: 'float' }, + { name: 'brew_mash_sg', type: 'float' }, + { name: 'brew_mash_efficiency', type: 'float' }, + { name: 'brew_sparge_est', type: 'float' }, + { name: 'brew_sparge_ph', type: 'float' }, + { name: 'brew_preboil_volume', type: 'float' }, + { name: 'brew_preboil_sg', type: 'float' }, + { name: 'brew_preboil_ph', type: 'float' }, + { name: 'brew_preboil_efficiency', type: 'float' }, + { name: 'brew_aboil_volume', type: 'float' }, + { name: 'brew_aboil_sg', type: 'float' }, + { name: 'brew_aboil_ph', type: 'float' }, + { name: 'brew_aboil_efficiency', type: 'float' }, + { name: 'brew_cooling_method', type: 'int' }, + { name: 'brew_cooling_time', type: 'float' }, + { name: 'brew_cooling_to', type: 'float' }, + { name: 'brew_whirlpool9', type: 'float' }, + { name: 'brew_whirlpool7', type: 'float' }, + { name: 'brew_whirlpool6', type: 'float' }, + { name: 'brew_whirlpool2', type: 'float' }, + { name: 'brew_fermenter_volume', type: 'float' }, + { name: 'brew_fermenter_extrawater', type: 'float' }, + { name: 'brew_fermenter_tcloss', type: 'float' }, + { name: 'brew_aeration_time', type: 'float' }, + { name: 'brew_aeration_speed', type: 'float' }, + { name: 'brew_aeration_type', type: 'int' }, + { name: 'brew_fermenter_sg', type: 'float' }, + { name: 'brew_fermenter_ibu', type: 'float' }, + { name: 'brew_fermenter_color', type: 'float' }, + { name: 'brew_date_end', type: 'string' }, + { name: 'og', type: 'float' }, + { name: 'fg', type: 'float' }, + { name: 'primary_start_temp', type: 'float' }, + { name: 'primary_max_temp', type: 'float' }, + { name: 'primary_end_temp', type: 'float' }, + { name: 'primary_end_sg', type: 'float' }, + { name: 'primary_end_date', type: 'string' }, + { name: 'secondary_temp', type: 'float' }, + { name: 'secondary_end_sg', type: 'float' }, + { name: 'secondary_end_date', type: 'string' }, + { name: 'tertiary_temp', type: 'float' }, + { name: 'package_date', type: 'string' }, + { name: 'package_volume', type: 'float' }, + { name: 'package_infuse_amount', type: 'float' }, + { name: 'package_infuse_abv', type: 'float' }, + { name: 'package_infuse_notes', type: 'string' }, + { name: 'package_abv', type: 'float' }, + { name: 'package_ph', type: 'float' }, + { name: 'bottle_amount', type: 'float' }, + { name: 'bottle_carbonation', type: 'float' }, + { name: 'bottle_priming_water', type: 'float' }, + { name: 'bottle_priming_amount', type: 'float' }, + { name: 'bottle_carbonation_temp', type: 'float' }, + { name: 'keg_amount', type: 'float' }, + { name: 'keg_carbonation', type: 'float' }, + { name: 'keg_priming_water', type: 'float' }, + { name: 'keg_priming_amount', type: 'float' }, + { name: 'keg_carbonation_temp', type: 'float' }, + { name: 'keg_forced_carb', type: 'int' }, + { name: 'keg_pressure', type: 'float' }, + { name: 'taste_notes', type: 'string' }, + { name: 'taste_rate', type: 'float' }, + { name: 'taste_date', type: 'string' }, + { name: 'taste_color', type: 'string' }, + { name: 'taste_transparency', type: 'string' }, + { name: 'taste_head', type: 'string' }, + { name: 'taste_aroma', type: 'string' }, + { name: 'taste_taste', type: 'string' }, + { name: 'taste_mouthfeel', type: 'string' }, + { name: 'taste_aftertaste', type: 'string' }, + { name: 'st_name', type: 'string' }, + { name: 'st_letter', type: 'string' }, + { name: 'st_guide', type: 'string' }, + { name: 'st_category', type: 'string' }, + { name: 'st_category_number', type: 'float' }, + { name: 'st_type', type: 'int' }, + { name: 'st_og_min', type: 'float' }, + { name: 'st_og_max', type: 'float' }, + { name: 'st_fg_min', type: 'float' }, + { name: 'st_fg_max', type: 'float' }, + { name: 'st_ibu_min', type: 'float' }, + { name: 'st_ibu_max', type: 'float' }, + { name: 'st_color_min', type: 'float' }, + { name: 'st_color_max', type: 'float' }, + { name: 'st_carb_min', type: 'float' }, + { name: 'st_carb_max', type: 'float' }, + { name: 'st_abv_min', type: 'float' }, + { name: 'st_abv_max', type: 'float' }, + { name: 'type', type: 'int' }, + { name: 'batch_size', type: 'float' }, + { name: 'boil_size', type: 'float' }, + { name: 'boil_time', type: 'float' }, + { name: 'efficiency', type: 'float' }, + { name: 'est_og', type: 'float' }, + { name: 'est_fg', type: 'float' }, + { name: 'est_abv', type: 'float' }, + { name: 'est_color', type: 'float' }, + { name: 'color_method', type: 'int' }, + { name: 'est_ibu', type: 'float' }, + { name: 'ibu_method', type: 'int' }, + { name: 'est_carb', type: 'float' }, + { name: 'sparge_temp', type: 'float' }, + { name: 'sparge_ph', type: 'float' }, + { name: 'sparge_volume', type: 'float' }, + { name: 'sparge_source', type: 'int' }, + { name: 'sparge_acid_type', type: 'int' }, + { name: 'sparge_acid_perc', type: 'float' }, + { name: 'sparge_acid_amount', type: 'float' }, + { name: 'mash_ph', type: 'float' }, + { name: 'mash_name', type: 'string' }, + { name: 'calc_acid', type: 'int' }, + { name: 'w1_name', type: 'string' }, + { name: 'w1_amount', type: 'float' }, + { name: 'w1_calcium', type: 'float' }, + { name: 'w1_sulfate', type: 'float' }, + { name: 'w1_chloride', type: 'float' }, + { name: 'w1_sodium', type: 'float' }, + { name: 'w1_magnesium', type: 'float' }, + { name: 'w1_total_alkalinity', type: 'float' }, + { name: 'w1_ph', type: 'float' }, + { name: 'w1_cost', type: 'float' }, + { name: 'w2_name', type: 'string' }, + { name: 'w2_amount', type: 'float' }, + { name: 'w2_calcium', type: 'float' }, + { name: 'w2_sulfate', type: 'float' }, + { name: 'w2_chloride', type: 'float' }, + { name: 'w2_sodium', type: 'float' }, + { name: 'w2_magnesium', type: 'float' }, + { name: 'w2_total_alkalinity', type: 'float' }, + { name: 'w2_ph', type: 'float' }, + { name: 'w2_cost', type: 'float' }, + { name: 'wg_amount', type: 'float' }, + { name: 'wg_calcium', type: 'float' }, + { name: 'wg_sulfate', type: 'float' }, + { name: 'wg_chloride', type: 'float' }, + { name: 'wg_sodium', type: 'float' }, + { name: 'wg_magnesium', type: 'float' }, + { name: 'wg_total_alkalinity', type: 'float' }, + { name: 'wg_ph', type: 'float' }, + { name: 'wb_calcium', type: 'float' }, + { name: 'wb_sulfate', type: 'float' }, + { name: 'wb_chloride', type: 'float' }, + { name: 'wb_sodium', type: 'float' }, + { name: 'wb_magnesium', type: 'float' }, + { name: 'wb_total_alkalinity', type: 'float' }, + { name: 'wb_ph', type: 'float' }, + { name: 'wa_acid_name', type: 'int' }, + { name: 'wa_acid_perc', type: 'int' }, + { name: 'wa_base_name', type: 'int' }, + { name: 'starter_enable', type: 'int' }, + { name: 'starter_type', type: 'int' }, + { name: 'starter_sg', type: 'float' }, + { name: 'starter_viability', type: 'int' }, + { name: 'starter_viability', type: 'int' }, + { name: 'prop1_type', type: 'int' }, + { name: 'prop1_volume', type: 'float' }, + { name: 'prop2_type', type: 'int' }, + { name: 'prop2_volume', type: 'float' }, + { name: 'prop3_type', type: 'int' }, + { name: 'prop3_volume', type: 'float' }, + { name: 'prop4_type', type: 'int' }, + { name: 'prop4_volume', type: 'float' }, + { name: 'divide_type', type: 'int' }, + { name: 'divide_size', type: 'float' }, + { name: 'divide_parts', type: 'int' }, + { name: 'fermentables', type: 'string' }, + { name: 'hops', type: 'string' }, + { name: 'miscs', type: 'string' }, + { name: 'yeasts', type: 'string' }, + { name: 'mashs', type: 'string' } + ], + id: 'record', + url: url + '?record=' + my_record + }, + + // Load data and select one record. + dataAdapter = new $.jqx.dataAdapter(source, { + loadComplete: function() { + var records = dataAdapter.records; + dataRecord = records[0]; + // Hidden record uuid + $('#name').val(dataRecord.name); + $('#code').val(dataRecord.code); + $('#stage').val(StageData[dataRecord.stage].nl); + // Disable stages that are already done. + for (i = 0; i < SplitData.length; i++) { + console.log('i:' + i + ' ok:' + SplitData[i].ok + ' stage:' + dataRecord.stage); + if (SplitData[i].ok < dataRecord.stage) + $("#divide_type").jqxDropDownList('disableAt', i); + } + }, + loadError: function(jqXHR, status, error) { + }, + beforeLoadComplete: function(records) { + $('#jqxLoader').jqxLoader('open'); + } + }); + + durl = 'includes/db_divides.php', + + // Prepare the data + dividerec = { + datatype: 'json', + cache: false, + datafields: [ + // From prod_main + { name: 'record', type: 'number' }, + { name: 'divide_from', type: 'string' }, + { name: 'divide_type', type: 'int' }, + { name: 'divide_size', type: 'float' }, + { name: 'name', type: 'string' }, + { name: 'code', type: 'string' } + ], + id: 'record', + url: durl + '?record=' + my_record + }; + + var editSplit = function(data) { + var splitSource = { + datatype: 'local', + cache: false, + async: false, + datafields: [ + { name: 'split_code', type: 'string' }, + { name: 'split_name', type: 'string' }, + { name: 'split_size', type: 'float' } + ], + addrow: function(rowid, rowdata, position, commit) { + console.log('split addrow ' + rowid); + commit(true); + }, + deleterow: function(rowid, commit) { + console.log('split deleterow ' + rowid); + commit(true); + } + }, + splitAdapter = new $.jqx.dataAdapter(splitSource, {}); + $('#splitGrid').jqxGrid({ + width: 1240, + height: 375, + source: splitAdapter, + editable: true, + enabletooltips: true, + selectionmode: 'singlecell', + editmode: 'click', + theme: theme, + showtoolbar: true, + rendertoolbar: function(toolbar) { + var container = $('
      '); + toolbar.append(container); + container.append(''); + container.append(''); + $('#saddrowbutton').jqxButton({ template: 'primary', theme: theme, disabled: true, height: 27, width: 150 }); + $('#saddrowbutton').on('click', function() { + var row = {}, rowscount = $('#splitGrid').jqxGrid('getdatainformation').rowscount; + row['split_code'] = dataRecord.code + '-' + (rowscount + 1); + row['split_name'] = dataRecord.name + ' ' + (rowscount + 1); + row['split_size'] = 0; + $('#splitGrid').jqxGrid('addrow', null, row); + $('#sdeleterowbutton').jqxButton({ disabled: false }); // Enable delete + $('#divide_type').jqxDropDownList({ disabled: true }); // Disable dropdown + }); + // Delete last added split + $('#sdeleterowbutton').jqxButton({ template: 'danger', theme: theme, disabled: true, height: 27, width: 150 }); + $('#sdeleterowbutton').on('click', function() { + var rowscount, id, row; + rowscount = $('#splitGrid').jqxGrid('getdatainformation').rowscount; + id = $('#splitGrid').jqxGrid('getrowid', rowscount - 1); + // First, give back this batch volume. + row = $('#splitGrid').jqxGrid('getrowdata', id); + leftover += row.split_size; + if (leftover > available) + leftover = available; + $('#leftover').val(leftover); + // Then delete the row. + $('#splitGrid').jqxGrid('deleterow', id); + if (rowscount == 1) { + $('#sdeleterowbutton').jqxButton({ disabled: true }); // No more rows + $('#divide_type').jqxDropDownList({ disabled: false }); + } + }); + }, + columns: [ + { text: 'Splits code', datafield: 'split_code', width: 120, editable: false }, + { text: 'Splits naam', datafield: 'split_name' }, + { text: 'Splits volume', datafield: 'split_size', width: 120, align: 'right', cellsalign: 'right', cellsformat: 'f1', columntype: 'numberinput', + validation: function (cell, value) { + if (value < 0 || value > maxvolume) { + return { result: false, message: 'Volume should be between 0 and ' + maxvolume + ' liter' }; + } + return true; + }, + createeditor: function (row, cellvalue, editor) { + editor.jqxNumberInput({ decimalDigits: 1, digits: 3 }); + } + } + ] + }); + $('#splitGrid').on('cellbeginedit', function (event) { + var args = event.args; + calcRoom(args.rowindex); // Make maxvolume available. + }); + $('#splitGrid').on('cellvaluechanged', function (event) { + var args = event.args; + //console.log("cellvaluechanged, Column: " + args.datafield + ", Row: " + (1 + args.rowindex) + ", Value: " + args.value); + calcLeftover(); + }); + }; + + dataAdapter.dataBind(); + editSplit(dataRecord); + + // initialize the input fields. + $('#name').jqxTooltip({ content: 'De naam voor dit product.' }); + $('#name').jqxInput({ theme: theme, width: 640, height: 23 }); + $('#code').jqxTooltip({ content: 'Product code nummer.' }); + $('#code').jqxInput({ theme: theme, width: 100, height: 23 }); + $('#stage').jqxTooltip({ content: 'De productie fase van dit product.' }); + $('#stage').jqxInput({ theme: theme, width: 100, height: 23 }); + $('#available').jqxNumberInput(Show1dec); + $('#leftover').jqxNumberInput(Show1dec); + $('#divide_type').val(0); + $('#divide_type').on('change', function(event) { + var index = event.args.index; + console.log('divide_type:' + index); + dataRecord.divide_type = index; + switch (index) { + case 0: + available = 0; + break; + case 1: + available = dataRecord.boil_size; + break; + case 2: + available = dataRecord.batch_size; + break; + case 3: + available = dataRecord.brew_fermenter_volume; + break; + case 4: + case 5: + available = Round(dataRecord.brew_fermenter_volume * 0.92, 1); // Estimate volume without yeast trub + break; + case 6: + available = dataRecord.package_volume; + break; + } + leftover = available; + minvolume = Round(0.1 * available, 1); + $('#available').val(available); + $('#leftover').val(leftover); + if (index != 0) { + $('#saddrowbutton').jqxButton({ disabled: false }); + } else { + $('#saddrowbutton').jqxButton({ disabled: true }); + } + }); + + $('#Cancel').jqxButton({ template: 'primary', width: '80px', theme: theme }); + $('#Cancel').bind('click', function() { + window.location.href = my_return; + }); + + $('#Save').jqxButton({ template: 'success', width: '80px', theme: theme }); + $('#Save').bind('click', function() { + var rows, row, i, div, data; + if (leftover != available) { + console.log('Save and there are splits'); + + // Record 0, the master data + div = {}; + div.divide_from = dataRecord.uuid; + div.divide_type = dataRecord.divide_type; + div.divide_size = leftover; + div.divide_part = 0; + div.name = dataRecord.name; + div.code = dataRecord.code; + data = 'insert=true&' + $.param(div); + $.ajax({ + dataType: 'json', + url: durl, + cache: false, + data: data, + type: "POST", + success: function (data, status, xhr) { + console.log('insert divides: 0'); + }, + error: function(jqXHR, textStatus, errorThrown) { + console.log('insert divides: ' + textStatus); + } + }); + + rows = $('#splitGrid').jqxGrid('getrows'); + for (i = 0; i < rows.length; i++) { + row = rows[i]; + console.log('split ' + i); + div = {}; + div.divide_from = dataRecord.uuid; + div.divide_type = dataRecord.divide_type; + div.divide_size = row.split_size; + div.divide_part = i + 1; + div.name = row.split_name; + div.code = row.split_code; + data = 'insert=true&' + $.param(div); + $.ajax({ + dataType: 'json', + url: durl, + cache: false, + data: data, + type: "POST", + success: function (data, status, xhr) { + console.log('insert divides: ' + i); + }, + error: function(jqXHR, textStatus, errorThrown) { + console.log('insert divides: ' + textStatus); + } + }); + } + + div = {}; + div.record = dataRecord.record; + div.divide_type = dataRecord.divide_type; + div.divide_size = leftover; + div.divide_parts = i; + data = 'splitit=true&' + $.param(div); + $.ajax({ + dataType: 'json', + url: url, + cache: false, + data: data, + type: "POST", + success: function (data, status, xhr) { + console.log('updated products'); + }, + error: function(jqXHR, textStatus, errorThrown) { + console.log('updated products: ' + textStatus); + } + }); + } + window.location.href = my_return; + }); + +}); diff -r 9e43b216ccd3 -r d25a1b160dba www/js/prod_edit-min.js --- a/www/js/prod_edit-min.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/prod_edit-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -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({template:"danger",width:"65px",theme:theme});$("#delCancel").jqxButton({template:"success",width:"65px",theme:theme});$("#delCancel").focus()}});$("#eventWindow").jqxWindow("hide")}$(document).ready(function(){var ae,l=false,al=0,aZ=0,a1=0,I=0,ac=0,aD=77,ap=0,x=0.75,aa=0,p=1,ab=1,ai=1,P=1,c=1,aY=0,V=0,C=0,aU="",ag="",A=40.048,aq=24.305,ad=22.98976928,q=35.453,aI=96.0626,r=61.01684,an=172.171,T=147.015,g=100.087,aK=246.475,aF=84.007,y=105.996,b=58.443,aJ=74.06268,u=0,aL={},B=1,a=0,e={},aw=0,aH={},aE=0,f={},ak=0,D={},aA=4.445e-7,ay=4.68e-11,d={},E="includes/db_product.php",H=0.87,aR={datatype:"json",cache:false,datafields:[{name:"record",type:"number"},{name:"uuid",type:"string"},{name:"name",type:"string"},{name:"code",type:"string"},{name:"birth",type:"string"},{name:"stage",type:"int"},{name:"notes",type:"string"},{name:"log_brew",type:"int"},{name:"log_fermentation",type:"int"},{name:"inventory_reduced",type:"int"},{name:"locked",type:"int"},{name:"eq_name",type:"string"},{name:"eq_boil_size",type:"float"},{name:"eq_batch_size",type:"float"},{name:"eq_tun_volume",type:"float"},{name:"eq_tun_weight",type:"float"},{name:"eq_tun_specific_heat",type:"float"},{name:"eq_tun_material",type:"int"},{name:"eq_tun_height",type:"float"},{name:"eq_top_up_water",type:"float"},{name:"eq_trub_chiller_loss",type:"float"},{name:"eq_evap_rate",type:"float"},{name:"eq_boil_time",type:"float"},{name:"eq_calc_boil_volume",type:"int"},{name:"eq_top_up_kettle",type:"float"},{name:"eq_hop_utilization",type:"float"},{name:"eq_notes",type:"string"},{name:"eq_lauter_volume",type:"float"},{name:"eq_lauter_height",type:"float"},{name:"eq_lauter_deadspace",type:"float"},{name:"eq_kettle_volume",type:"float"},{name:"eq_kettle_height",type:"float"},{name:"eq_mash_volume",type:"float"},{name:"eq_mash_max",type:"float"},{name:"eq_efficiency",type:"float"},{name:"brew_date_start",type:"string"},{name:"brew_mash_ph",type:"float"},{name:"brew_mash_sg",type:"float"},{name:"brew_mash_efficiency",type:"float"},{name:"brew_sparge_est",type:"float"},{name:"brew_sparge_ph",type:"float"},{name:"brew_preboil_volume",type:"float"},{name:"brew_preboil_sg",type:"float"},{name:"brew_preboil_ph",type:"float"},{name:"brew_preboil_efficiency",type:"float"},{name:"brew_aboil_volume",type:"float"},{name:"brew_aboil_sg",type:"float"},{name:"brew_aboil_ph",type:"float"},{name:"brew_aboil_efficiency",type:"float"},{name:"brew_cooling_method",type:"int"},{name:"brew_cooling_time",type:"float"},{name:"brew_cooling_to",type:"float"},{name:"brew_whirlpool9",type:"float"},{name:"brew_whirlpool7",type:"float"},{name:"brew_whirlpool6",type:"float"},{name:"brew_whirlpool2",type:"float"},{name:"brew_fermenter_volume",type:"float"},{name:"brew_fermenter_extrawater",type:"float"},{name:"brew_fermenter_tcloss",type:"float"},{name:"brew_aeration_time",type:"float"},{name:"brew_aeration_speed",type:"float"},{name:"brew_aeration_type",type:"int"},{name:"brew_fermenter_sg",type:"float"},{name:"brew_fermenter_ibu",type:"float"},{name:"brew_fermenter_color",type:"float"},{name:"brew_date_end",type:"string"},{name:"og",type:"float"},{name:"fg",type:"float"},{name:"primary_start_temp",type:"float"},{name:"primary_max_temp",type:"float"},{name:"primary_end_temp",type:"float"},{name:"primary_end_sg",type:"float"},{name:"primary_end_date",type:"string"},{name:"secondary_temp",type:"float"},{name:"secondary_end_sg",type:"float"},{name:"secondary_end_date",type:"string"},{name:"tertiary_temp",type:"float"},{name:"package_date",type:"string"},{name:"package_volume",type:"float"},{name:"package_infuse_amount",type:"float"},{name:"package_infuse_abv",type:"float"},{name:"package_infuse_notes",type:"string"},{name:"package_abv",type:"float"},{name:"package_ph",type:"float"},{name:"bottle_amount",type:"float"},{name:"bottle_carbonation",type:"float"},{name:"bottle_priming_water",type:"float"},{name:"bottle_priming_amount",type:"float"},{name:"bottle_carbonation_temp",type:"float"},{name:"keg_amount",type:"float"},{name:"keg_carbonation",type:"float"},{name:"keg_priming_water",type:"float"},{name:"keg_priming_amount",type:"float"},{name:"keg_carbonation_temp",type:"float"},{name:"keg_forced_carb",type:"int"},{name:"keg_pressure",type:"float"},{name:"taste_notes",type:"string"},{name:"taste_rate",type:"float"},{name:"taste_date",type:"string"},{name:"taste_color",type:"string"},{name:"taste_transparency",type:"string"},{name:"taste_head",type:"string"},{name:"taste_aroma",type:"string"},{name:"taste_taste",type:"string"},{name:"taste_mouthfeel",type:"string"},{name:"taste_aftertaste",type:"string"},{name:"st_name",type:"string"},{name:"st_letter",type:"string"},{name:"st_guide",type:"string"},{name:"st_category",type:"string"},{name:"st_category_number",type:"float"},{name:"st_type",type:"int"},{name:"st_og_min",type:"float"},{name:"st_og_max",type:"float"},{name:"st_fg_min",type:"float"},{name:"st_fg_max",type:"float"},{name:"st_ibu_min",type:"float"},{name:"st_ibu_max",type:"float"},{name:"st_color_min",type:"float"},{name:"st_color_max",type:"float"},{name:"st_carb_min",type:"float"},{name:"st_carb_max",type:"float"},{name:"st_abv_min",type:"float"},{name:"st_abv_max",type:"float"},{name:"type",type:"int"},{name:"batch_size",type:"float"},{name:"boil_size",type:"float"},{name:"boil_time",type:"float"},{name:"efficiency",type:"float"},{name:"est_og",type:"float"},{name:"est_fg",type:"float"},{name:"est_abv",type:"float"},{name:"est_color",type:"float"},{name:"color_method",type:"int"},{name:"est_ibu",type:"float"},{name:"ibu_method",type:"int"},{name:"est_carb",type:"float"},{name:"sparge_temp",type:"float"},{name:"sparge_ph",type:"float"},{name:"sparge_volume",type:"float"},{name:"sparge_source",type:"int"},{name:"sparge_acid_type",type:"int"},{name:"sparge_acid_perc",type:"float"},{name:"sparge_acid_amount",type:"float"},{name:"mash_ph",type:"float"},{name:"mash_name",type:"string"},{name:"calc_acid",type:"int"},{name:"w1_name",type:"string"},{name:"w1_amount",type:"float"},{name:"w1_calcium",type:"float"},{name:"w1_sulfate",type:"float"},{name:"w1_chloride",type:"float"},{name:"w1_sodium",type:"float"},{name:"w1_magnesium",type:"float"},{name:"w1_total_alkalinity",type:"float"},{name:"w1_ph",type:"float"},{name:"w1_cost",type:"float"},{name:"w2_name",type:"string"},{name:"w2_amount",type:"float"},{name:"w2_calcium",type:"float"},{name:"w2_sulfate",type:"float"},{name:"w2_chloride",type:"float"},{name:"w2_sodium",type:"float"},{name:"w2_magnesium",type:"float"},{name:"w2_total_alkalinity",type:"float"},{name:"w2_ph",type:"float"},{name:"w2_cost",type:"float"},{name:"wg_amount",type:"float"},{name:"wg_calcium",type:"float"},{name:"wg_sulfate",type:"float"},{name:"wg_chloride",type:"float"},{name:"wg_sodium",type:"float"},{name:"wg_magnesium",type:"float"},{name:"wg_total_alkalinity",type:"float"},{name:"wg_ph",type:"float"},{name:"wb_calcium",type:"float"},{name:"wb_sulfate",type:"float"},{name:"wb_chloride",type:"float"},{name:"wb_sodium",type:"float"},{name:"wb_magnesium",type:"float"},{name:"wb_total_alkalinity",type:"float"},{name:"wb_ph",type:"float"},{name:"wa_acid_name",type:"int"},{name:"wa_acid_perc",type:"int"},{name:"wa_base_name",type:"int"},{name:"starter_enable",type:"int"},{name:"starter_type",type:"int"},{name:"starter_sg",type:"float"},{name:"starter_viability",type:"int"},{name:"prop1_type",type:"int"},{name:"prop1_volume",type:"float"},{name:"prop2_type",type:"int"},{name:"prop2_volume",type:"float"},{name:"prop3_type",type:"int"},{name:"prop3_volume",type:"float"},{name:"prop4_type",type:"int"},{name:"prop4_volume",type:"float"},{name:"fermentables",type:"array"},{name:"hops",type:"array"},{name:"miscs",type:"array"},{name:"yeasts",type:"array"},{name:"mashs",type:"array"}],id:"record",url:E+"?record="+my_record},ah=new $.jqx.dataAdapter(aR,{loadComplete:function(){var i=ah.records;d=i[0];$("#name").val(d.name);$("#code").val(d.code);$("#birth").val(d.birth);$("#stage").val(StageData[d.stage].nl);$("#notes").val(d.notes);$("#locked").val(d.locked);$("#eq_name").val(d.eq_name);$("#eq_notes").val(d.eq_notes);$("#eq_boil_size").val(d.eq_boil_size);$("#eq_batch_size").val(d.eq_batch_size);$("#eq_tun_volume").val(d.eq_tun_volume);$("#eq_top_up_water").val(d.eq_top_up_water);$("#eq_trub_chiller_loss").val(d.eq_trub_chiller_loss);$("#eq_evap_rate").val(d.eq_evap_rate);$("#eq_boil_time").val(d.eq_boil_time);$("#eq_top_up_kettle").val(d.eq_top_up_kettle);$("#eq_hop_utilization").val(d.eq_hop_utilization);$("#eq_lauter_volume").val(d.eq_lauter_volume);$("#eq_lauter_deadspace").val(d.eq_lauter_deadspace);$("#eq_kettle_volume").val(d.eq_kettle_volume);$("#eq_mash_volume").val(d.eq_mash_volume);$("#eq_mash_max").val(d.eq_mash_max);$("#eq_efficiency").val(d.eq_efficiency);$("#brew_date_start").val(d.brew_date_start);$("#brew_mash_ph").val(d.brew_mash_ph);$("#brew_mash_sg").val(d.brew_mash_sg);$("#brew_mash_efficiency").val(d.brew_mash_efficiency);$("#brew_sparge_temperature").val(d.sparge_temp);$("#brew_sparge_volume").val(d.sparge_volume);$("#brew_sparge_est").val(d.brew_sparge_est);$("#brew_sparge_ph").val(d.brew_sparge_ph);$("#brew_aeration_type").val(d.brew_aeration_type);$("#brew_aeration_time").val(d.brew_aeration_time);$("#brew_aeration_speed").val(d.brew_aeration_speed);$("#brew_preboil_ph").val(d.brew_preboil_ph);$("#brew_preboil_sg").val(d.brew_preboil_sg);$("#brew_preboil_volume").val(d.brew_preboil_volume);$("#brew_preboil_efficiency").val(d.brew_preboil_efficiency);$("#brew_whirlpool9").val(d.brew_whirlpool9);$("#brew_whirlpool7").val(d.brew_whirlpool7);$("#brew_whirlpool6").val(d.brew_whirlpool6);$("#brew_whirlpool2").val(d.brew_whirlpool2);$("#brew_fermenter_volume").val(d.brew_fermenter_volume);$("#brew_fermenter_sg").val(d.brew_fermenter_sg);$("#brew_fermenter_sg2").val(d.brew_fermenter_sg);$("#brew_fermenter_ibu").val(d.brew_fermenter_ibu);$("#brew_fermenter_color").val(d.brew_fermenter_color);$("#brew_fermenter_extrawater").val(d.brew_fermenter_extrawater);$("#brew_fermenter_tcloss").val(d.brew_fermenter_tcloss);$("#brew_aboil_ph").val(d.brew_aboil_ph);$("#brew_aboil_sg").val(d.brew_aboil_sg);$("#brew_aboil_volume").val(d.brew_aboil_volume);$("#brew_aboil_efficiency").val(d.brew_aboil_efficiency);$("#brew_cooling_to").val(d.brew_cooling_to);$("#brew_cooling_method").val(d.brew_cooling_method);$("#brew_cooling_time").val(d.brew_cooling_time);$("#brew_date_end").val(d.brew_date_end);$("#og").val(d.og);$("#fg").val(d.fg);$("#primary_start_temp").val(d.primary_start_temp);$("#primary_max_temp").val(d.primary_max_temp);$("#primary_end_temp").val(d.primary_end_temp);$("#primary_end_sg").val(d.primary_end_sg);$("#primary_end_date").val(d.primary_end_date);$("#secondary_temp").val(d.secondary_temp);$("#secondary_end_sg").val(d.secondary_end_sg);$("#secondary_end_date").val(d.secondary_end_date);$("#tertiary_temp").val(d.tertiary_temp);$("#package_date").val(d.package_date);$("#package_volume").val(d.package_volume);$("#package_infuse_amount").val(d.package_infuse_amount);$("#package_infuse_abv").val(d.package_infuse_abv);$("#package_infuse_notes").val(d.package_infuse_notes);$("#package_abv").val(d.package_abv);$("#package_ph").val(d.package_ph);$("#bottle_amount").val(d.bottle_amount);$("#bottle_carbonation").val(d.bottle_carbonation);$("#bottle_priming_water").val(d.bottle_priming_water);$("#bottle_priming_amount").val(d.bottle_priming_amount);$("#bottle_carbonation_temp").val(d.bottle_carbonation_temp);$("#keg_amount").val(d.keg_amount);$("#keg_carbonation").val(d.keg_carbonation);$("#keg_priming_water").val(d.keg_priming_water);$("#keg_priming_amount").val(d.keg_priming_amount);$("#keg_carbonation_temp").val(d.keg_carbonation_temp);$("#keg_forced_carb").val(d.keg_forced_carb);$("#keg_pressure").val(d.keg_pressure);$("#taste_notes").val(d.taste_notes);$("#taste_rate").val(d.taste_rate);$("#taste_date").val(d.taste_date);$("#taste_color").val(d.taste_color);$("#taste_transparency").val(d.taste_transparency);$("#taste_head").val(d.taste_head);$("#taste_aroma").val(d.taste_aroma);$("#taste_taste").val(d.taste_taste);$("#taste_mouthfeel").val(d.taste_mouthfeel);$("#taste_aftertaste").val(d.taste_aftertaste);$("#st_name").val(d.st_name);$("#st_letter").val(d.st_letter);$("#st_guide").val(d.st_guide);$("#st_category").val(d.st_category);$("#st_category_number").val(d.st_category_number);$("#st_type").val(StyleTypeData[d.st_type].nl);$("#st_og_min").val(d.st_og_min);$("#st_og_max").val(d.st_og_max);$("#st_fg_min").val(d.st_fg_min);$("#st_fg_max").val(d.st_fg_max);$("#st_abv_min").val(d.st_abv_min);$("#st_abv_max").val(d.st_abv_max);$("#st_color_min").val(d.st_color_min);$("#st_color_max").val(d.st_color_max);$("#st_ibu_min").val(d.st_ibu_min);$("#st_ibu_max").val(d.st_ibu_max);$("#st_carb_min").val(d.st_carb_min);$("#st_carb_min2").val(d.st_carb_min);$("#st_carb_max").val(d.st_carb_max);$("#st_carb_max2").val(d.st_carb_max);$("#type").val(d.type);$("#batch_size").val(d.batch_size);$("#est_a_vol").val(d.batch_size*1.04);$("#boil_size").val(d.boil_size);$("#est_pre_vol").val(d.boil_size*1.04);$("#boil_time").val(d.boil_time);$("#efficiency").val(d.efficiency);$("#est_og").val(d.est_og);$("#est_og2").val(d.est_og);$("#est_og3").val(0);$("#est_fg").val(d.est_fg);$("#est_fg2").val(d.est_fg);$("#est_fg3").val(d.est_fg);$("#est_color").val(d.est_color);$("#est_color2").val(d.est_color);$("#est_abv").val(d.est_abv);$("#color_method").val(d.color_method);$("#est_ibu").val(d.est_ibu);$("#est_ibu2").val(d.est_ibu);$("#ibu_method").val(d.ibu_method);$("#est_carb").val(d.est_carb);$("#mash_name").val(d.mash_name);$("#mash_ph").val(d.mash_ph);$("#sparge_temp").val(d.sparge_temp);$("#sparge_ph").val(d.sparge_ph);$("#sparge_volume").val(d.sparge_volume);$("#sparge_source").val(d.sparge_source);$("#sparge_acid_type").val(d.sparge_acid_type);$("#sparge_acid_perc").val(d.sparge_acid_perc);$("#sparge_acid_amount").val(d.sparge_acid_amount*1000);$("#calc_acid").val(d.calc_acid);$("#w1_name").val(d.w1_name);$("#w1_amount").val(d.w1_amount);$("#w1_calcium").val(d.w1_calcium);$("#w1_sulfate").val(d.w1_sulfate);$("#w1_chloride").val(d.w1_chloride);$("#w1_sodium").val(d.w1_sodium);$("#w1_magnesium").val(d.w1_magnesium);$("#w1_total_alkalinity").val(d.w1_total_alkalinity);$("#w1_ph").val(d.w1_ph);$("#w1_cost").val(d.w1_cost);$("#w2_name").val(d.w2_name);$("#w2_amount").val(d.w2_amount);$("#w2_calcium").val(d.w2_calcium);$("#w2_sulfate").val(d.w2_sulfate);$("#w2_chloride").val(d.w2_chloride);$("#w2_sodium").val(d.w2_sodium);$("#w2_magnesium").val(d.w2_magnesium);$("#w2_total_alkalinity").val(d.w2_total_alkalinity);$("#w2_ph").val(d.w2_ph);$("#w2_cost").val(d.w2_cost);$("#wg_amount").val(d.wg_amount);$("#wg_calcium").val(d.wg_calcium);$("#wg_sulfate").val(d.wg_sulfate);$("#wg_chloride").val(d.wg_chloride);$("#wg_sodium").val(d.wg_sodium);$("#wg_magnesium").val(d.wg_magnesium);$("#wg_total_alkalinity").val(d.wg_total_alkalinity);$("#wg_ph").val(d.wg_ph);$("#wb_calcium").val(d.wb_calcium);$("#wb_sulfate").val(d.wb_sulfate);$("#wb_chloride").val(d.wb_chloride);$("#wb_sodium").val(d.wb_sodium);$("#wb_magnesium").val(d.wb_magnesium);$("#wb_total_alkalinity").val(d.wb_total_alkalinity);$("#wb_ph").val(d.wb_ph);$("#wa_acid_name").val(d.wa_acid_name);$("#wa_acid_perc").val(d.wa_acid_perc);$("#wa_base_name").val(d.wa_base_name);$("#starter_enable").val(d.starter_enable);$("#starter_type").val(d.starter_type);$("#starter_sg").val(d.starter_sg);$("#starter_viability").val(d.starter_viability);$("#prop1_type").val(d.prop1_type);$("#prop1_volume").val(d.prop1_volume);$("#prop2_type").val(d.prop2_type);$("#prop2_volume").val(d.prop2_volume);$("#prop3_type").val(d.prop3_type);$("#prop3_volume").val(d.prop3_volume);$("#prop4_type").val(d.prop4_type);$("#prop4_volume").val(d.prop4_volume);n(d);aT(d);X(d);aM(d);av(d);aV();$("#jqxTabs").jqxTabs("select",2)},loadError:function(a4,i,a3){},beforeLoadComplete:function(i){$("#jqxLoader").jqxLoader("open")}});var n=function(a3){var i={localdata:a3.fermentables,datatype:"local",cache:false,async:false,datafields:[{name:"f_name",type:"string"},{name:"f_origin",type:"string"},{name:"f_supplier",type:"string"},{name:"f_amount",type:"float"},{name:"f_cost",type:"float"},{name:"f_type",type:"int"},{name:"f_yield",type:"float"},{name:"f_color",type:"float"},{name:"f_coarse_fine_diff",type:"float"},{name:"f_moisture",type:"float"},{name:"f_diastatic_power",type:"float"},{name:"f_protein",type:"float"},{name:"f_max_in_batch",type:"float"},{name:"f_graintype",type:"int"},{name:"f_added",type:"int"},{name:"f_dissolved_protein",type:"float"},{name:"f_recommend_mash",type:"int"},{name:"f_add_after_boil",type:"int"},{name:"f_adjust_to_total_100",type:"int"},{name:"f_percentage",type:"float"},{name:"f_di_ph",type:"float"},{name:"f_acid_to_ph_57",type:"float"},{name:"f_inventory",type:"float"},{name:"f_avail",type:"int"}],addrow:function(a6,a8,a5,a7){a7(true)},deleterow:function(a5,a6){a6(true)},updaterow:function(a5,a7,a6){a6(true)}},a4=new $.jqx.dataAdapter(i);$("#fermentableGrid").jqxGrid({width:1240,height:470,source:a4,theme:theme,selectionmode:"singlerow",showtoolbar:true,rendertoolbar:function(a6){var a5=$("
      ");a6.append(a5);a5.append('
      ');a5.append('
      In voorraad:
      ');a5.append('
      ');a5.append('');$("#faddrowbutton").jqxDropDownList({placeHolder:"Kies mout:",theme:theme,template:"primary",source:fermentablelist,displayMember:"name",disabled:(d.stage>3),width:150,height:27,dropDownWidth:500,dropDownHeight:500,renderer:function(a8,a7,ba){var a9=fermentablelist.records[a8];return a9.supplier+" / "+a9.name+" ("+a9.color+" EBC)"}});$("#faddrowbutton").on("select",function(a9){if(a9.args){var a7,a8,ba={},bb=$("#fermentableGrid").jqxGrid("getdatainformation").rowscount;a7=a9.args.index;a8=fermentablelist.records[a7];ba.f_name=a8.name;ba.f_origin=a8.origin;ba.f_supplier=a8.supplier;ba.f_amount=0;ba.f_cost=a8.cost;ba.f_type=a8.type;ba.f_yield=a8.yield;ba.f_color=a8.color;ba.f_coarse_fine_diff=a8.coarse_fine_diff;ba.f_moisture=a8.moisture;ba.f_diastatic_power=a8.diastatic_power;ba.f_protein=a8.protein;ba.f_max_in_batch=a8.max_in_batch;ba.f_graintype=a8.graintype;if(a8.add_after_boil){ba.f_added=2}else{if((a8.type==1)||(a8.type==4)){ba.f_added=1}else{ba.f_added=0}}ba.f_dissolved_protein=a8.dissolved_protein;ba.f_recommend_mash=a8.recommend_mash;ba.f_add_after_boil=a8.add_after_boil;if(bb==0){ba.f_adjust_to_total_100=1;ba.f_percentage=100}else{ba.f_adjust_to_total_100=0;ba.f_percentage=0}ba.f_di_ph=a8.di_ph;ba.f_acid_to_ph_57=a8.acid_to_ph_57;ba.f_inventory=a8.inventory;$("#fermentableGrid").jqxGrid("addrow",null,ba)}});$("#finstockbutton").jqxCheckBox({theme:theme,height:27,disabled:(d.stage>3)});$("#finstockbutton").on("change",function(a7){fermentableinstock=a7.args.checked;fermentablelist.dataBind()});$("#fdeleterowbutton").jqxButton({template:"danger",theme:theme,height:27,width:150,disabled:(d.stage>3)});$("#fdeleterowbutton").on("click",function(){var bd,bc,ba,a9,a8,bb,a7=$("#fermentableGrid").jqxGrid("getselectedrowindex");bd=$("#fermentableGrid").jqxGrid("getdatainformation").rowscount;if(a7>=0&&a71){if(l){for(a8=0;a8'+ba.f_supplier+" / "+ba.f_name+" ("+ba.f_color+" EBC)"}},{text:"Type",width:100,datafield:"f_type",cellsrenderer:function(a6,a5,a9,a8,a7,ba){return''+FermentableTypeData[a9].nl+""}},{text:"Moment",width:110,datafield:"f_added",cellsrenderer:function(a6,a5,a9,a8,a7,ba){return''+AddedData[a9].nl+""}},{text:"Maxinbatch",datafield:"f_max_in_batch",hidden:true},{text:"Opbrengst",datafield:"f_yield",width:90,align:"right",cellsalign:"right",cellsformat:"p1"},{text:"Gewicht Kg",datafield:"f_amount",width:120,align:"right",cellsalign:"right",cellsformat:"f3"},{text:"Voorraad Kg",datafield:"f_inventory",width:120,align:"right",cellsrenderer:function(a9,a7,a8,a5,bb,ba){var a6="#ffffff";if(((d.inventory_reduced<=2)&&(ba.f_added<=1))||((d.inventory_reduced<=3)&&(ba.f_added==2))||((d.inventory_reduced<=5)&&(ba.f_added==3))||((d.inventory_reduced<=6)&&(ba.f_added==4))||((d.inventory_reduced<=6)&&(ba.f_added==5))){if(a8'+a4.formatNumber(a8,"f3")+""}else{return""}}},{text:"Procent",datafield:"f_percentage",width:90,align:"right",cellsrenderer:function(a9,a7,a8,a5,bb,ba){if(ba.f_added>=4){return""}var a6="#ffffff";if(a8>ba.f_max_in_batch){a6="#ff4040"}return''+a4.formatNumber(a8,"p1")+""}},{text:"100%",datafield:"f_adjust_to_total_100",width:70,align:"center",cellsalign:"center",cellsrenderer:function(a6,a5,a9,a8,a7,ba){if(a9==0){return""}return''}},{text:"",datafield:"Edit",columntype:"button",width:100,align:"center",cellsrenderer:function(){return"Wijzig"},buttonclick:function(a5){u=a5;aL=$("#fermentableGrid").jqxGrid("getrowdata",u);if(aL.f_added>=4){alert("Wijzig dit in de Verpakken tab")}else{if(d.stage>3){alert("Ingredieënt is al verwerkt.")}else{$("#wf_name").val(aL.f_name);$("#wf_amount").val(aL.f_amount);$("#wf_percentage").val(aL.f_percentage);$("#wf_max_in_batch").val(aL.f_max_in_batch);$("#wf_adjust_to_total_100").val(aL.f_adjust_to_total_100);$("#wf_added").val(aL.f_added);$("#popupFermentable").jqxWindow("open")}}}}]})},aT=function(i){var a4={localdata:i.hops,datatype:"local",cache:false,async:false,datafields:[{name:"h_name",type:"string"},{name:"h_origin",type:"string"},{name:"h_amount",type:"float"},{name:"h_cost",type:"float"},{name:"h_type",type:"int"},{name:"h_form",type:"int"},{name:"h_useat",type:"int"},{name:"h_time",type:"float"},{name:"h_alpha",type:"float"},{name:"h_beta",type:"float"},{name:"h_hsi",type:"float"},{name:"h_humulene",type:"float"},{name:"h_caryophyllene",type:"float"},{name:"h_cohumulone",type:"float"},{name:"h_myrcene",type:"float"},{name:"h_total_oil",type:"float"},{name:"h_inventory",type:"float"},{name:"h_avail",type:"int"}],addrow:function(a6,a8,a5,a7){console.log("hop addrow "+a6);a7(true)},deleterow:function(a5,a6){console.log("hop deleterow "+a5);a6(true)},updaterow:function(a5,a7,a6){console.log("hop updaterow "+a5);a6(true)}},a3=new $.jqx.dataAdapter(a4);$("#hopGrid").jqxGrid({width:1240,height:560,source:a3,theme:theme,selectionmode:"singlerow",showtoolbar:true,rendertoolbar:function(a6){var a5=$("
      ");a6.append(a5);a5.append('
      ');a5.append('
      In voorraad:
      ');a5.append('
      ');a5.append('');$("#haddrowbutton").jqxDropDownList({placeHolder:"Kies hop:",theme:theme,template:"primary",source:hoplist,disabled:(d.stage>3),displayMember:"name",width:150,height:27,dropDownWidth:500,dropDownHeight:500,renderer:function(a8,a7,ba){var a9=hoplist.records[a8];return a9.origin+" - "+a9.name+" / "+HopFormData[a9.form].nl+" ("+a9.alpha+"% α)"}});$("#haddrowbutton").on("select",function(a9){if(a9.args){var a8,ba={},a7=a9.args.index;a8=hoplist.records[a7];ba.h_name=a8.name;ba.h_origin=a8.origin;ba.h_amount=0;ba.h_cost=a8.cost;ba.h_type=a8.type;ba.h_form=a8.form;ba.h_useat=2;ba.h_time=0;ba.h_alpha=a8.alpha;ba.h_beta=a8.beta;ba.h_hsi=a8.hsi;ba.h_humulene=a8.humulene;ba.h_caryophyllene=a8.caryophyllene;ba.h_cohumulone=a8.cohumulone;ba.h_myrcene=a8.myrcene;ba.h_total_oil=a8.total_oil;ba.h_inventory=a8.inventory;$("#hopGrid").jqxGrid("addrow",null,ba)}$("#haddrowbutton").jqxDropDownList("clearSelection")});$("#hinstockbutton").jqxCheckBox({theme:theme,height:27,disabled:(d.stage>3)});$("#hinstockbutton").on("change",function(a7){hopinstock=a7.args.checked;hoplist.dataBind()});$("#hdeleterowbutton").jqxButton({template:"danger",theme:theme,height:27,width:150,disabled:(d.stage>3)});$("#hdeleterowbutton").on("click",function(){var a9,a8,a7=$("#hopGrid").jqxGrid("getselectedrowindex");a9=$("#hopGrid").jqxGrid("getdatainformation").rowscount;if(a7>=0&&a7'+ba.h_origin+" / "+ba.h_name+""},},{text:"Type",width:90,datafield:"h_type",cellsrenderer:function(a6,a5,a9,a8,a7,ba){return''+HopTypeData[a9].nl+""}},{text:"Vorm",width:90,datafield:"h_form",cellsrenderer:function(a6,a5,a9,a8,a7,ba){return''+HopFormData[a9].nl+""}},{text:"Alpha",datafield:"h_alpha",width:80,align:"right",cellsalign:"right",cellsformat:"p1"},{text:"Gebruik",width:110,datafield:"h_useat",cellsrenderer:function(a6,a5,a9,a8,a7,ba){return''+HopUseData[a9].nl+""}},{text:"Tijdsduur",datafield:"h_time",width:90,align:"right",cellsrenderer:function(a6,a5,a9,a8,a7,bb){var ba="";if((bb.h_useat==2)||(bb.h_useat==4)){ba=ah.formatNumber(a9,"f0")+" min."}else{if(bb.h_useat==5){ba=ah.formatNumber(a9/1440,"f0")+" dagen"}}return''+ba+""}},{text:"IBU",datafield:"ibu",width:80,align:"right",cellsrenderer:function(a6,a5,a9,a8,a7,bb){var ba=toIBU(bb.h_useat,bb.h_form,al,parseFloat($("#batch_size").jqxNumberInput("decimal")),parseFloat(bb.h_amount),parseFloat(bb.h_time),parseFloat(bb.h_alpha),$("#ibu_method").val());return''+ah.formatNumber(ba,"f1")+""}},{text:"Gewicht",datafield:"h_amount",width:110,align:"right",cellsrenderer:function(a6,a5,ba,a9,a8,bb){var a7=ah.formatNumber(ba,"f1")+" kg";if(ba<1){a7=ah.formatNumber(ba*1000,"f1")+" gr"}return''+a7+""}},{text:"Voorraad",datafield:"h_inventory",width:110,align:"right",cellsrenderer:function(a7,a6,bb,ba,a9,bc){if(((d.inventory_reduced<=2)&&(bc.h_useat<=4))||((d.inventory_reduced<=6)&&(bc.h_useat==5))){var a8,a5="#ffffff";if(bb'+a8+""}else{return""}}},{text:"",datafield:"Edit",columntype:"button",width:100,align:"center",cellsrenderer:function(){return"Wijzig"},buttonclick:function(a5){if(d.stage>3){alert("Ingredieënt is al verwerkt.")}else{console.log("edit button row "+a5);a=a5;e=$("#hopGrid").jqxGrid("getrowdata",a);$("#wh_name").val(e.h_name);$("#wh_amount").val(e.h_amount*1000);var a6=toIBU(e.h_useat,e.h_form,al,parseFloat($("#batch_size").jqxNumberInput("decimal")),parseFloat(e.h_amount),parseFloat(e.h_time),parseFloat(e.h_alpha),$("#ibu_method").val());$("#wh_ibu").val(a6);if(e.h_useat==5){$("#wh_time").val(e.h_time/1440)}else{$("#wh_time").val(e.h_time)}$("#wh_useat").val(e.h_useat);$("#popupHop").jqxWindow("open")}}}]})},X=function(a4){var a3={localdata:a4.miscs,datatype:"local",cache:false,async:false,datafields:[{name:"m_name",type:"string"},{name:"m_amount",type:"float"},{name:"m_cost",type:"float"},{name:"m_type",type:"int"},{name:"m_use_use",type:"int"},{name:"m_time",type:"float"},{name:"m_amount_is_weight",type:"int"},{name:"m_inventory",type:"float"},{name:"m_avail",type:"int"}],addrow:function(a6,a8,a5,a7){console.log("misc addrow "+a6);a7(true)},deleterow:function(a5,a6){console.log("misc deleterow "+a5);a6(true)},updaterow:function(a5,a7,a6){console.log("misc updaterow "+a5);a6(true)}},i=new $.jqx.dataAdapter(a3,{beforeLoadComplete:function(a5){var a8,a6,a7=new Array();for(a6=0;a6");a6.append(a5);a5.append('
      ');a5.append('
      In voorraad:
      ');a5.append('
      ');a5.append('');$("#maddrowbutton").jqxDropDownList({placeHolder:"Kies ingrediënt:",theme:theme,template:"primary",source:misclist,disabled:(d.stage>3),displayMember:"name",width:150,height:27,dropDownWidth:500,dropDownHeight:500});$("#maddrowbutton").on("select",function(a9){if(a9.args){var a8,ba={},a7=a9.args.index;a8=misclist.records[a7];ba.m_name=a8.name;ba.m_amount=0;ba.m_cost=a8.cost;ba.m_type=a8.type;ba.m_use_use=a8.use_use;ba.m_time=0;ba.m_amount_is_weight=a8.amount_is_weight;ba.m_inventory=a8.inventory;$("#miscGrid").jqxGrid("addrow",null,ba)}});$("#minstockbutton").jqxCheckBox({theme:theme,height:27,disabled:(d.stage>3)});$("#minstockbutton").on("change",function(a7){miscinstock=a7.args.checked;misclist.dataBind()});$("#mdeleterowbutton").jqxButton({template:"danger",theme:theme,height:27,width:150,disabled:(d.stage>3)});$("#mdeleterowbutton").on("click",function(){var ba,a8,a9,a7=$("#miscGrid").jqxGrid("getselectedrowindex");ba=$("#miscGrid").jqxGrid("getdatainformation").rowscount;a8=$("#miscGrid").jqxGrid("getcellvalue",a7,"m_type");if(a7>=0&&a7'+MiscTypeData[a9].nl+""}},{text:"Gebruik",width:140,datafield:"m_use_use",cellsrenderer:function(a6,a5,a9,a8,a7,ba){return''+MiscUseData[a9].nl+""}},{text:"Tijd",datafield:"m_time",width:90,align:"right",cellsrenderer:function(a6,a5,a9,a8,a7,bb){var ba="";if(bb.m_use_use==2){ba=ah.formatNumber(a9,"f0")+" min."}else{if((bb.m_use_use==3)||(bb.m_use_use==4)){ba=ah.formatNumber(a9/1440,"f0")+" dagen"}}return''+ba+""}},{text:"Hoeveel",datafield:"m_amount",width:110,align:"right",cellsrenderer:function(a6,a5,ba,a8,a7,bb){var a9=bb.m_amount_is_weight?"gr":"ml";return''+ah.formatNumber(ba*1000,"f2")+" "+a9+""}},{text:"Voorraad",datafield:"m_inventory",width:110,align:"right",cellsrenderer:function(a9,a5,ba,bc,a6,bd){var bb,a7,a8;if(((d.inventory_reduced<=2)&&(bd.m_use_use<=2))||((d.inventory_reduced<=3)&&(bd.m_use_use==3))||((d.inventory_reduced<=5)&&(bd.m_use_use==4))||((d.inventory_reduced<=6)&&(bd.m_use_use==5))){bb=bd.m_amount_is_weight?"gr":"ml";a7="#ffffff";if(ba'+a8+""}else{return""}}},{text:"",datafield:"Edit",columntype:"button",width:100,align:"center",cellsrenderer:function(){return"Wijzig"},buttonclick:function(a5){aw=a5;aH=$("#miscGrid").jqxGrid("getrowdata",aw);if(d.stage>3){alert("Ingredieënt is al verwerkt.")}else{if(aH.m_type==4){alert("Brouwzouten wijzigen in de water tab.")}else{console.log("edit button row "+a5);if(aH.m_amount_is_weight){$("#wm_pmpt_amount").html("Gewicht gram:")}else{$("#wm_pmpt_amount").html("Volume ml:")}$("#wm_name").val(aH.m_name);$("#wm_amount").val(aH.m_amount*1000);if((aH.m_use_use==3)||(aH.m_use_use==4)){$("#wm_time").val(aH.m_time/1440)}else{$("#wm_time").val(aH.m_time)}$("#wm_use_use").val(aH.m_use_use);$("#popupMisc").jqxWindow("open")}}}}]})},aM=function(a3){var i={localdata:a3.yeasts,datatype:"local",cache:false,async:false,datafields:[{name:"y_name",type:"string"},{name:"y_laboratory",type:"string"},{name:"y_product_id",type:"string"},{name:"y_amount",type:"float"},{name:"y_cost",type:"float"},{name:"y_type",type:"int"},{name:"y_form",type:"int"},{name:"y_flocculation",type:"int"},{name:"y_min_temperature",type:"float"},{name:"y_max_temperature",type:"float"},{name:"y_attenuation",type:"float"},{name:"y_use",type:"int"},{name:"y_cells",type:"float"},{name:"y_tolerance",type:"float"},{name:"y_inventory",type:"float"},{name:"y_avail",type:"int"}],addrow:function(a6,a8,a5,a7){console.log("yeast addrow "+a6);a7(true)},deleterow:function(a5,a6){console.log("yeast deleterow "+a5);a6(true)},updaterow:function(a5,a7,a6){console.log("yeast updaterow "+a5);a6(true)}},a4=new $.jqx.dataAdapter(i);$("#yeastGrid").jqxGrid({width:1240,height:350,source:a4,theme:theme,selectionmode:"singlerow",showtoolbar:true,rendertoolbar:function(a6){var a5=$('
      ');a6.append(a5);a5.append('
      ');a5.append('
      In voorraad:
      ');a5.append('
      ');a5.append('');$("#yaddrowbutton").jqxDropDownList({placeHolder:"Kies gist:",theme:theme,source:yeastlist,disabled:(d.stage>3),template:"primary",displayMember:"name",width:150,height:27,dropDownWidth:500,dropDownHeight:500,renderer:function(a8,a7,ba){var a9=yeastlist.records[a8];return a9.laboratory+" "+a9.product_id+" "+a9.name}});$("#yaddrowbutton").on("select",function(a9){if(a9.args){var a8,ba={},a7=a9.args.index;a8=yeastlist.records[a7];ba.y_name=a8.name;ba.y_laboratory=a8.laboratory;ba.y_product_id=a8.product_id;ba.y_type=a8.type;ba.y_form=a8.form;ba.y_amount=0;ba.y_cost=a8.cost;ba.y_use=0;ba.y_min_temperature=a8.min_temperature;ba.y_max_temperature=a8.max_temperature;ba.y_attenuation=a8.attenuation;ba.y_flocculation=a8.flocculation;ba.y_cells=a8.cells;ba.y_tolerance=a8.tolerance;ba.y_inventory=a8.inventory;$("#yeastGrid").jqxGrid("addrow",null,ba)}Y();$("#yaddrowbutton").jqxDropDownList("clearSelection")});$("#yinstockbutton").jqxCheckBox({theme:theme,height:27,disabled:(d.stage>3)});$("#yinstockbutton").on("change",function(a7){yeastinstock=a7.args.checked;yeastlist.dataBind()});$("#ydeleterowbutton").jqxButton({template:"danger",theme:theme,height:27,width:150,disabled:(d.stage>3)});$("#ydeleterowbutton").on("click",function(){var a9,a8,a7=$("#yeastGrid").jqxGrid("getselectedrowindex");a8=$("#yeastGrid").jqxGrid("getdatainformation").rowscount;if(a7>=0&&a7'+YeastFormData[a9].nl+""}},{text:"Min. °C",width:70,align:"right",cellsalign:"right",datafield:"y_min_temperature"},{text:"Max. °C",width:70,align:"right",cellsalign:"right",datafield:"y_max_temperature"},{text:"Tol. %",width:60,align:"right",cellsalign:"right",datafield:"y_tolerance",cellsrenderer:function(a7,a6,bb,ba,a9,bc){var a8="",a5="#ffffff";if(bb>0){a8=ah.formatNumber(bb,"f1");if(d.est_abv>bb){a5="#ff4040"}}return''+a8+""}},{text:"Attn. %",width:70,align:"right",cellsalign:"right",datafield:"y_attenuation",cellsformat:"f1"},{text:"Voor",width:120,datafield:"y_use",cellsrenderer:function(a6,a5,a9,a8,a7,ba){return''+YeastUseData[a9].nl+""}},{text:"Hoeveel",datafield:"y_amount",width:90,align:"right",cellsrenderer:function(a6,a5,ba,a9,a8,bb){var a7=ah.formatNumber(ba*1000,"f0")+" ml";if(bb.y_form==0){a7=ah.formatNumber(ba,"f0")+" pk"}else{if(bb.y_form==1){a7=ah.formatNumber(ba*1000,"f1")+" gr"}}return''+a7+""}},{text:"Voorraad",datafield:"y_inventory",width:90,align:"right",cellsrenderer:function(a7,a6,bb,ba,a9,bc){var a5,a8;if(((d.inventory_reduced<=3)&&(bc.y_use==0))||((d.inventory_reduced<=4)&&(bc.y_use==1))||((d.inventory_reduced<=5)&&(bc.y_use==2))||((d.inventory_reduced<=6)&&(bc.y_use==3))){a5="#ffffff";if(bb'+a8+""}else{return""}}},{text:"",datafield:"Edit",columntype:"button",width:90,align:"center",cellsrenderer:function(){return"Wijzig"},buttonclick:function(a5){if(d.stage>3){alert("Ingredieënt is al verwerkt.")}else{aE=a5;f=$("#yeastGrid").jqxGrid("getrowdata",aE);if(f.y_form==0){$("#wy_pmpt_amount").html("Pak(ken):");$("#wy_amount").val(f.y_amount);$("#wy_amount").jqxNumberInput({decimalDigits:0})}else{if(f.y_form==1){$("#wy_pmpt_amount").html("Gewicht gram:");$("#wy_amount").val(f.y_amount*1000);$("#wy_amount").jqxNumberInput({decimalDigits:1})}else{$("#wy_pmpt_amount").html("Volume ml:");$("#wy_amount").val(f.y_amount*1000);$("#wy_amount").jqxNumberInput({decimalDigits:0})}}$("#wy_name").val(f.y_name);$("#wy_laboratory").val(f.y_laboratory);$("#wy_product_id").val(f.y_product_id);$("#wy_use").val(f.y_use);$("#popupYeast").jqxWindow("open")}}}]})},av=function(a4){var a3={localdata:a4.mashs,datatype:"local",cache:false,async:false,datafields:[{name:"step_name",type:"string"},{name:"step_type",type:"int"},{name:"step_infuse_amount",type:"float"},{name:"step_temp",type:"float"},{name:"step_time",type:"float"},{name:"step_thickness",type:"float"},{name:"ramp_time",type:"float"},{name:"end_temp",type:"float"}],addrow:function(a6,a8,a5,a7){console.log("mash addrow "+a6);a7(true)},deleterow:function(a5,a6){console.log("mash deleterow "+a5);a6(true)}},i=new $.jqx.dataAdapter(a3,{beforeLoadComplete:function(a5){C=0;var a6,a8,a7=new Array();for(a6=0;a6');a6.append(a5);a5.append('');a5.append('');$("#saddrowbutton").jqxButton({template:"primary",theme:theme,height:27,width:150,disabled:(d.stage>3)});$("#saddrowbutton").on("click",function(){var a7={},a8=$("#mashGrid").jqxGrid("getdatainformation").rowscount;a7.step_name="Stap "+(a8+1);if(a8>0){a7.step_type=1}else{a7.step_type=0;a7.step_infuse_amount=15}a7.step_temp=62;a7.step_time=20;a7.step_thickness=0;a7.ramp_time=1;a7.end_temp=62;$("#mashGrid").jqxGrid("addrow",null,a7)});$("#sdeleterowbutton").jqxButton({template:"danger",theme:theme,height:27,width:150,disabled:(d.stage>3)});$("#sdeleterowbutton").on("click",function(){var a9,a8,a7=$("#mashGrid").jqxGrid("getselectedrowindex");a9=$("#mashGrid").jqxGrid("getdatainformation").rowscount;if(a7>=0&&a7'+MashStepTypeData[a9].nl+""}},{text:"Start °C",datafield:"step_temp",width:90,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Eind °C",datafield:"end_temp",width:90,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Rust min.",datafield:"step_time",width:90,align:"right",cellsalign:"right"},{text:"Stap min.",datafield:"ramp_time",width:90,align:"right",cellsalign:"right"},{text:"Infuse L.",datafield:"step_infuse_amount",width:90,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"L/Kg.",datafield:"step_thickness",width:90,align:"right",cellsalign:"right",cellsformat:"f2"},{text:"",datafield:"Edit",columntype:"button",width:100,align:"center",cellsrenderer:function(){return"Wijzig"},buttonclick:function(a5){if(d.stage>3){alert("Het maichen is al gedaan.")}else{ak=a5;D=$("#mashGrid").jqxGrid("getrowdata",ak);$("#wstep_name").val(D.step_name);$("#wstep_type").val(D.step_type);$("#wstep_infuse_amount").val(D.step_infuse_amount);$("#wstep_temp").val(D.step_temp);$("#wend_temp").val(D.end_temp);$("#wstep_time").val(D.step_time);$("#wramp_time").val(D.ramp_time);if(D.step_type==0){$("#wstep_infuse_amount").show();$("#wstep_pmpt").show()}else{$("#wstep_infuse_amount").hide();$("#wstep_pmpt").hide()}$("#popupMash").jqxWindow("open")}}}]})};$("#jqxMenu").jqxMenu("destroy");console.log("record:"+my_record+" return:"+my_return+" theme:"+theme);$("#jqxLoader").jqxLoader({width:250,height:150,isModal:true,text:"Laden product ...",theme:theme});function G(){if(d.inventory_reduced>6){$("#ok_pmpt").hide();return}if(p&&ab&&ai&&P&&c){$("#ok_supplies").html("")}else{$("#ok_supplies").html("")}}function aW(){console.log("calcPercentages()");var a3=0,a5,i,a4=$("#fermentableGrid").jqxGrid("getdatainformation").rowscount;if(a4>1){for(ae=0;ae5){bp-=5}bb=Round(bb/bp,2)}if(!(be=$("#fermentableGrid").jqxGrid("getrows"))){return}for(bq=0;bq0){bC+=a9.f_amount*a9.f_moisture/100;bh+=bx}bx=parseFloat(d.efficiency)/100*bx;bt+=bx;ap+=parseFloat(a9.f_amount)}if(a9.f_added==0||a9.f_added==1){bB+=bx}if(a9.f_added==2||a9.f_added==3){bd=(a9.f_yield/100)*(1-a9.f_moisture/100);bj+=a9.f_amount*bd;bs+=a9.f_amount;br+=(bd*sugardensity+(1-bd)*1)*a9.f_amount}if(a9.f_added<4){bc+=a9.f_amount*ebc_to_srm(a9.f_color);bm+=a9.f_amount*a9.f_color*get_kt(a9.f_color);bg+=(a9.f_percentage/100)*a9.f_color}if(B){if(a9.f_added==4){$("#bottle_priming_total").val(a9.f_amount*1000);$("#bottle_priming_sugar").jqxDropDownList("selectItem",a9.f_name)}if(a9.f_added==5){$("#keg_priming_total").val(a9.f_amount*1000);$("#keg_priming_sugar").jqxDropDownList("selectItem",a9.f_name)}}if((((d.inventory_reduced<=2)&&(a9.f_added<=1))||((d.inventory_reduced<=3)&&(a9.f_added==2))||((d.inventory_reduced<=5)&&(a9.f_added==3))||((d.inventory_reduced<=6)&&(a9.f_added==4))||((d.inventory_reduced<=6)&&(a9.f_added==5)))&&a9.f_inventory0){bf=bh/sugardensity+bC;bh=1000*bh/(bf*10);a1=Round(plato_to_sg(bh),5);$("#est_mash_sg").val(a1)}d.est_og=estimate_sg(bB+bj,parseFloat(d.batch_size));$("#est_og").val(d.est_og);$("#est_og2").val(d.est_og);a3=d.est_og;aZ=estimate_sg(bB,parseFloat(d.batch_size));$("#est_og3").val(aZ);al=estimate_sg(bt,parseFloat(d.boil_size));$("#est_pre_sg").val(al);a4=parseFloat(d.batch_size);if(d.brew_aboil_volume>0){a4=d.brew_aboil_volume/1.04}if(d.brew_fermenter_tcloss==0){d.brew_fermenter_tcloss=d.eq_trub_chiller_loss;$("#brew_fermenter_tcloss").val(d.brew_fermenter_tcloss)}d.brew_fermenter_volume=a4-d.brew_fermenter_tcloss+d.brew_fermenter_extrawater;$("#brew_fermenter_volume").val(d.brew_fermenter_volume);by=(d.boil_size-C+(ap*my_grain_absorbtion)+d.eq_lauter_deadspace)*1.03;$("#brew_sparge_est").val(by);bz=d.brew_aboil_sg;if(bz<1.002){bz=aZ}a7=d.brew_fermenter_extrawater;if(d.brew_fermenter_volume>0){a6=sg_to_plato(bz)*d.brew_fermenter_volume*bz/100;a6+=bj;if((d.brew_fermenter_volume*bz+bs)>0){bl=100*a6/(d.brew_fermenter_volume*bz+bs+a7);d.brew_fermenter_sg=Round(plato_to_sg(bl),4);$("#brew_fermenter_sg").val(d.brew_fermenter_sg);if(d.color_method==4){d.brew_fermenter_color=Math.round(((bl/8.6)*bg)+(d.boil_time/60))}else{if(d.color_method==3){d.brew_fermenter_color=Math.round((4.46*bw*bo)/(a4+a7)*bm)}else{a5=bc/(a4+a7)*8.34436;d.brew_fermenter_color=kw_to_ebc(d.color_method,a5)}}$("#brew_fermenter_color").val(d.brew_fermenter_color);bu=ebc_to_color(d.brew_fermenter_color);$("#bcolorf").show();document.getElementById("bcolorf").style.background=bu}}else{d.brew_fermenter_sg=d.brew_fermenter_color=0;$("#brew_fermenter_sg").val(0);$("#brew_fermenter_color").val(0);$("#bcolorf").hide()}if(d.color_method==4){bn=Math.round(((sg_to_plato(d.est_og)/8.6)*bg)+(d.boil_time/60))}else{if(d.color_method==3){bn=Math.round((4.46*bw*bo)/parseFloat(d.batch_size)*bm)}else{a5=bc/parseFloat(d.batch_size)*8.34436;bn=kw_to_ebc(d.color_method,a5)}}d.est_color=bn;$("#est_color").val(bn);$("#est_color2").val(bn);bu=ebc_to_color(bn);document.getElementById("bcolor").style.background=bu;document.getElementById("bcolor2").style.background=bu;pmalts=ap/d.eq_mash_max*100;$("#perc_malts").jqxProgressBar("val",pmalts);$("#perc_sugars").jqxProgressBar("val",I);$("#perc_cara").jqxProgressBar("val",ac);aV();aD=0;aa=0;be=$("#yeastGrid").jqxGrid("getrows");for(bq=0;bqaD){aD=parseFloat(a9.y_attenuation)}if(a9.y_form==0){aa+=(parseFloat(a9.y_cells)/1000000000)*parseFloat(a9.y_amount)*(d.starter_viability/100)}else{aa+=(parseFloat(a9.y_cells)/1000000)*parseFloat(a9.y_amount)}}if((((d.inventory_reduced<=3)&&(a9.y_use==0))||((d.inventory_reduced<=4)&&(a9.y_use==1))||((d.inventory_reduced<=5)&&(a9.y_use==2))||((d.inventory_reduced<=6)&&(a9.y_use==3)))&&(a9.y_inventory0)&&(C>0)&&(bp>0)&&(bb>0)){d.est_fg=estimate_fg(I,ac,C/ap,bp,bb,aD,d.est_og)}else{d.est_fg=estimate_fg(I,ac,0,0,0,aD,d.est_og)}$("#est_fg").val(d.est_fg);$("#est_fg2").val(d.est_fg);$("#est_fg3").val(d.est_fg);bA=d.est_fg;d.est_abv=abvol(d.est_og,d.est_fg);$("#est_abv").val(d.est_abv);$("#est_abv2").val(d.est_abv);if((d.stage>=6)&&(d.fg>0.99)&&(d.fg0)){for(a6=0;a61){a3=d.fg}else{if(a3<=1.0001){a3=d.est_og}}i=sg_to_plato(a3);a4=d.brew_fermenter_volume;if(a4<=0){a4=d.batch_size-d.eq_trub_chiller_loss}return x*a4*i}function L(a4,a6,a3,a5){var i;if(a3==1){i=0.15}else{if(a4>50){i=0.1}else{i=15.25/(6*Math.sqrt(2*Math.PI))*Math.exp(-0.5*Math.pow((a4-21)/6,2));if(i<0.1){i=0.1}}}return(i*a5*1000)/a6}function h(a4,a6,a3,a5){var i=0;if(a3==5){i=1.33}else{if(a4>20){i=0}else{if(a4>7.5){i=10.03/(4*Math.sqrt(2*Math.PI))*Math.exp(-0.5*Math.pow((a4-7.5)/4,2))}else{if(a3==2){i=1}else{if(a3==3){i=1.2}else{if(a3==4){i=1.2}}}}}}return(i*a5*1000)/a6}function at(){var a4=0,a3=0,a6={},a5,a7;V=aY=0;if(!(a6=$("#hopGrid").jqxGrid("getrows"))){return}ab=1;for(a5=0;a5100){aY=100}if(V>100){V=100}console.log("calcIBUs(): "+a4+" flavour: "+aY+" aroma: "+V+" fermenter:"+a3+" supplies:"+ab);d.est_ibu=a4;$("#est_ibu").val(a4);$("#est_ibu2").val(a4);$("#hop_flavour").jqxProgressBar("val",aY);$("#hop_aroma").jqxProgressBar("val",V);$("#brew_fermenter_ibu").val(a3);aV();G()}function O(a4,a5,a3){var i=a5/a3;if(i>3.5){return 0}if(a4==2){return 0.4}if(a4==1){return 0.62}if(i<=1.4){return 1.4}return 2.33-(0.67*i)}function aC(a4,a9,a3){var i=2.72715,ba=a3/a4*1000,a5=Round(ba,1),a6=(d.starter_sg-1)*a4*i,a7=O(a9,a3,a6),a8=Round(a6*a7,1),bb=parseFloat(a8)+a3;console.log("svol:"+a4+" start:"+a3+" irate:"+a5+" egrams:"+a6+" grate:"+a7+" ncells:"+a8);return{svol:a4,irate:a5,prate:Round(ba,1),ncells:a8,totcells:bb,growf:Round(a8/a3,2)}}function F(a9,a3,ba){var a8=[20,40,60,80,100,150,200,250,375,500,625,750,875,1000,1250,1500,2000,2500,3000,4000,5000],a4=a8.length,a5=0,a6=0,bb={},a7;if((parseFloat($("#prop1_volume").jqxNumberInput("decimal"))+parseFloat($("#prop2_volume").jqxNumberInput("decimal"))+parseFloat($("#prop3_volume").jqxNumberInput("decimal"))+parseFloat($("#prop4_volume").jqxNumberInput("decimal")))==0){for(a7=1;a7<5;a7++){$("#prop"+a7+"_type").hide();$("#r"+a7+"_pmpt").show();$("#prop"+a7+"_type").val(a9);$("#prop"+a7+"_volume").hide();$("#prop"+a7+"_volume").val(0);$("#prop"+a7+"_irate").hide();$("#prop"+a7+"_ncells").hide();$("#prop"+a7+"_tcells").hide();$("#prop"+a7+"_growf").hide()}if(a3>ba){return}$("#prop1_type").show();$("#r1_pmpt").hide();$("#prop1_volume").show();$("#prop1_irate").show();$("#prop1_ncells").show();$("#prop1_tcells").show();$("#prop1_growf").show();for(a7=a6;a7<=a4;a7++){a6=a7;a5=a8[a6];bb=aC(a5,a9,a3);if(bb.irate<25){a6=a7-1;a5=a8[a6];bb=aC(a5,a9,a3);break}if(bb.totcells>ba||a7==a4){break}}$("#prop1_volume").val(bb.svol/1000);$("#prop1_irate").val(bb.prate);$("#prop1_ncells").val(bb.ncells);$("#prop1_tcells").val(bb.totcells);$("#prop1_growf").val(bb.growf);if(bb.totcells>ba){return}$("#r2_pmpt").hide();$("#prop2_type").val(a9);$("#prop2_type").show();$("#prop2_volume").show();$("#prop2_irate").show();$("#prop2_ncells").show();$("#prop2_tcells").show();$("#prop2_growf").show();for(a7=a6;a7<=a4;a7++){a6=a7;a5=a8[a6];bb=aC(a5,a9,$("#prop1_tcells").val());if(bb.irate<25){a6=a7-1;a5=a8[a6];bb=aC(a5,a9,$("#prop1_tcells").val());break}if(bb.totcells>ba||a7==a4){break}}$("#prop2_volume").val(bb.svol/1000);$("#prop2_irate").val(bb.prate);$("#prop2_ncells").val(bb.ncells);$("#prop2_tcells").val(bb.totcells);$("#prop2_growf").val(bb.growf);if(bb.totcells>ba){return}$("#r3_pmpt").hide();$("#prop3_type").val(a9);$("#prop3_type").show();$("#prop3_volume").show();$("#prop3_irate").show();$("#prop3_ncells").show();$("#prop3_tcells").show();$("#prop3_growf").show();for(a7=a6;a7<=a4;a7++){a6=a7;a5=a8[a6];bb=aC(a5,a9,$("#prop2_tcells").val());if(bb.irate<25){a6=a7-1;a5=a8[a6];bb=aC(a5,a9,$("#prop2_tcells").val());break}if(bb.totcells>ba||a7==a4){break}}$("#prop3_volume").val(bb.svol/1000);$("#prop3_irate").val(bb.prate);$("#prop3_ncells").val(bb.ncells);$("#prop3_tcells").val(bb.totcells);$("#prop3_growf").val(bb.growf);if(bb.totcells>ba){return}$("#r4_pmpt").hide();$("#prop4_type").val(a9);$("#prop4_type").show();$("#prop4_volume").show();$("#prop4_irate").show();$("#prop4_ncells").show();$("#prop4_tcells").show();$("#prop4_growf").show();for(a7=a6;a7<=a4;a7++){a6=a7;a5=a8[a6];bb=aC(a5,a9,$("#prop3_tcells").val());if(bb.totcells>ba||a7==a4){$("#prop4_volume").val(bb.svol/1000);$("#prop4_irate").val(bb.prate);$("#prop4_ncells").val(bb.ncells);$("#prop4_tcells").val(bb.totcells);$("#prop4_growf").val(bb.growf);return}}}else{if(d.prop1_volume>0){$("#r1_pmpt").hide();$("#prop1_type").show();$("#prop1_volume").show();$("#prop1_irate").show();$("#prop1_ncells").show();$("#prop1_tcells").show();$("#prop1_growf").show();bb=aC($("#prop1_volume").val()*1000,d.prop1_type,a3);$("#prop1_irate").val(bb.prate);$("#prop1_ncells").val(bb.ncells);$("#prop1_tcells").val(bb.totcells);$("#prop1_growf").val(bb.growf)}if(d.prop2_volume>0){$("#r2_pmpt").hide();$("#prop2_type").show();$("#prop2_volume").show();$("#prop2_irate").show();$("#prop2_ncells").show();$("#prop2_tcells").show();$("#prop2_growf").show();bb=aC($("#prop2_volume").val()*1000,d.prop2_type,$("#prop1_tcells").val());$("#prop2_irate").val(bb.prate);$("#prop2_ncells").val(bb.ncells);$("#prop2_tcells").val(bb.totcells);$("#prop2_growf").val(bb.growf)}if(d.prop3_volume>0){$("#r3_pmpt").hide();$("#prop3_type").show();$("#prop3_volume").show();$("#prop3_irate").show();$("#prop3_ncells").show();$("#prop3_tcells").show();$("#prop3_growf").show();bb=aC($("#prop3_volume").val()*1000,d.prop3_type,$("#prop2_tcells").val());$("#prop3_irate").val(bb.prate);$("#prop3_ncells").val(bb.ncells);$("#prop3_tcells").val(bb.totcells);$("#prop3_growf").val(bb.growf)}if(d.prop4_volume>0){$("#r4_pmpt").hide();$("#prop4_type").show();$("#prop4_volume").show();$("#prop4_irate").show();$("#prop4_ncells").show();$("#prop4_tcells").show();$("#prop4_growf").show();bb=aC($("#prop4_volume").val()*1000,d.prop4_type,$("#prop3_tcells").val());$("#prop4_irate").val(bb.prate);$("#prop4_ncells").val(bb.ncells);$("#prop4_tcells").val(bb.totcells);$("#prop4_growf").val(bb.growf)}}}function Y(){var bb,a4,ba,a6,a9,a3,a8,a7,a5=d.brew_fermenter_sg;if(a5<=1.0001&&d.fg>1){a5=d.fg}else{if(a5<=1.0001){a5=d.est_og}}bb=sg_to_plato(a5);a4=d.brew_fermenter_volume;if(a4>0){if(d.brew_fermenter_extrawater>0){a4+=d.brew_fermenter_extrawater}}else{a4=d.batch_size-d.eq_trub_chiller_loss}$("#yeast_cells").val(aa);if(!(ba=$("#yeastGrid").jqxGrid("getrows"))){return}a6=$("#yeastGrid").jqxGrid("getdatainformation").rowscount;if(a6==0){return}for(a3=0;a31.06){x=1}if(a9.y_type==0){x*=2}}}a8=x*a4*bb;console.log("calcYeast() pitchrate:"+x+" start:"+aa+" needed:"+a8+" volume:"+a4);$("#need_cells").val(a8);a7=aa;if(d.starter_enable){F(d.starter_type,aa,a8);for(a3=1;a3<5;a3++){$("#r"+a3+"_irate").html("");$("#r"+a3+"_growf").html("");$("#r"+a3+"_tcells").html("");if(parseFloat($("#prop"+a3+"_volume").val())>0){if((parseFloat($("#prop"+a3+"_irate").val())<25)||(parseFloat($("#prop"+a3+"_irate").val())>100)){$("#r"+a3+"_irate").html("")}else{$("#r"+a3+"_irate").html("")}if(parseFloat($("#prop"+a3+"_growf").val())<1){$("#r"+a3+"_growf").html("")}if(($("#prop"+a3+"_type").val()>0)&&(parseFloat($("#prop"+a3+"_growf").val())>3)){$("#r"+a3+"_growf").html("")}if(parseFloat($("#prop"+a3+"_tcells").val())>a8){$("#r"+a3+"_tcells").html("")}a7=parseFloat($("#prop"+a3+"_tcells").val())}else{$("#r"+a3+"_irate").html("")}}}$("#plato_cells").val(parseFloat(a7/(a4*bb)))}function aj(a5){console.log("adjustHops("+a5+")");var a6,a4,a3,a7=$("#hopGrid").jqxGrid("getdatainformation").rowscount;if(a7==0){return}for(a4=0;a40.5){$("#brew_mash_efficiency").val(100*i/a3)}else{$("#brew_mash_efficiency").val(0)}}function w(){var a4=0,a7={},a6,a8,a5,a3=0;if(!(a7=$("#fermentableGrid").jqxGrid("getrows"))){return}for(a6=0;a60){a3=Round((a5/a4*100),1)}if(a3<0){a3=0}$("#brew_preboil_efficiency").val(a3)}function S(){var a5=0,a4=0,a8={},a7,a9,a6,a3=0;if(!(a8=$("#fermentableGrid").jqxGrid("getrows"))){return}for(a7=0;a70){a3=Round((a6/a5*100),1)}if(a3<0){a3=0}d.brew_aboil_efficiency=a3;$("#brew_aboil_efficiency").val(a3)}function R(){var i=(d.est_og-1)*1000;if(i>0){return d.est_ibu/i}else{return 0.5}}function k(){var i=R();return(-1.2*i+1.4)}function aB(a3,a5){var a9,a4,ba,a8=false,a6,a7=$("#miscGrid").jqxGrid("getrows");if(a5==0){for(a4=0;a4"+i+"")}else{$("#wr_"+a3).html("")}}function aQ(a5,a4,a3,i){if((a5+a4)>0){return((a5*a3)+(a4*i))/(a5+a4)}return 0}function ar(a4,a3,i){return a4-(a3/1.4+i/1.7)}function z(a3){var i=Math.pow(10,-a3);return 100*aA*ay/(i*i+i*aA+aA*ay)}function az(a3){var i=Math.pow(10,-a3);return 100*aA*i/(i*i+i*aA+aA*ay)}function ax(i){return(-2*z(i)-az(i))}function K(a3){var a6=ax(4.3),a4=ax(parseFloat($("#wg_ph").jqxNumberInput("decimal"))),i=ax(a3),a8=-a6+a4,a7=parseFloat($("#wg_total_alkalinity").jqxNumberInput("decimal"))/50/a8,a5=-i+a4;return a7*a5}function am(a3){var a4,a5,i=parseFloat($("#wg_calcium").jqxNumberInput("decimal"))/(A/2);a4=parseFloat($("#wg_magnesium").jqxNumberInput("decimal"))/(aq/2);a5=K(a3);return a5-(i/3.5+a4/7)}function M(a5){var a8,a6,a7,a4,a3,a9=am(a5)*parseFloat($("#wg_amount").jqxNumberInput("decimal"));a8=$("#fermentableGrid").jqxGrid("getrows");for(a6=0;a60.1))){a7=row.f_acid_to_ph_57/(row.f_di_ph-5.7)}else{a4=row.f_color;switch(row.f_graintype){case 0:case 3:case 5:a7=0.014*a4-34.192;break;case 2:a7=-0.0597*a4-32.457;break;case 1:a7=0.0107*a4-54.768;break;case 4:a7=-149;break}}a3=a7*(a5-row.f_di_ph);a9+=a3*row.f_amount}}return a9}function aN(){var a6=0,a4=5.4,a3=0.001,a5=0.1,i=M(a4);while(((i<-a5)||(i>a5))&&(a6<2000)){a6++;if(i<-a5){a4-=a3}else{if(i>a5){a4+=a3}}i=M(a4)}console.log("MashpH() n: "+a6+" pH: "+a4);return a4}function t(i){switch(i){case 0:return{pK1:3.86,pK2:20,pK3:20,MolWt:90.08,AcidSG:1214,AcidPrc:0.88};case 1:return{pK1:-7,pK2:20,pK3:20,MolWt:36.46,AcidSG:1142,AcidPrc:0.28};case 2:return{pK1:2.12,pK2:7.2,pK3:12.44,MolWt:98,AcidSG:1170,AcidPrc:0.25};case 3:return{pK1:-1,pK2:1.92,pK3:20,MolWt:98.07,AcidSG:1700,AcidPrc:0.93}}}function Q(){console.log("calcWater()");var bk=0,bz=0,ba=0,bl=0,bb=0,bw=0,bc=0,bu=0,be=0,bn=0,bF=0,bD=0,bA=0,by,bo,bg,a5,a4,i,bf,a7,a6,bq,bi,a9,br,bj,bx,bp,bh,bs,bE,bt,bd,bB,bm,bC,a8,bv,a3;if(d.w1_name==""){return}if(d.w2_name!=""){bk=d.w1_amount+d.w2_amount;bz=aQ(d.w1_amount,d.w2_amount,d.w1_calcium,d.w2_calcium);ba=aQ(d.w1_amount,d.w2_amount,d.w1_magnesium,d.w2_magnesium);bl=aQ(d.w1_amount,d.w2_amount,d.w1_sodium,d.w2_sodium);bc=aQ(d.w1_amount,d.w2_amount,d.w1_chloride,d.w2_chloride);bu=aQ(d.w1_amount,d.w2_amount,d.w1_sulfate,d.w2_sulfate);bb=aQ(d.w1_amount,d.w2_amount,d.w1_total_alkalinity,d.w2_total_alkalinity);be=-Math.log10(((Math.pow(10,-d.w1_ph)*d.w1_amount)+(Math.pow(10,-d.w2_ph)*d.w2_amount))/bk)}else{bk=d.w1_amount;bz=d.w1_calcium;ba=d.w1_magnesium;bl=d.w1_sodium;bc=d.w1_chloride;bu=d.w1_sulfate;bb=d.w1_total_alkalinity;be=d.w1_ph}$("#wg_amount").val(bk);bB=bz;$("#wg_calcium").val(Math.round(bz*10)/10);$("#wg_magnesium").val(Math.round(ba*10)/10);bm=bl;$("#wg_sodium").val(Math.round(bl*10)/10);bC=bb;$("#wg_total_alkalinity").val(Math.round(bb*10)/10);a8=bc;$("#wg_chloride").val(Math.round(bc*10)/10);bv=bu;$("#wg_sulfate").val(Math.round(bu*10)/10);$("#wg_ph").val(Round(be,1));$("#wb_ph").val(Round(aN(),1));$("#est_mash_ph").val(Round(aN(),1));bw=bb*1.22;a3=bw;bn=parseFloat($("#wa_cacl2").jqxNumberInput("decimal"))*A/T+parseFloat($("#wa_caso4").jqxNumberInput("decimal"))*A/an;bz+=1000*bn/bk;bn=parseFloat($("#wa_mgso4").jqxNumberInput("decimal"))*aq/aK;ba+=1000*bn/bk;bn=parseFloat($("#wa_nacl").jqxNumberInput("decimal"))*ad/b+parseFloat($("#wa_base").jqxNumberInput("decimal"))*ad/aF;bl+=1000*bn/bk;bn=parseFloat($("#wa_caso4").jqxNumberInput("decimal"))*aI/an+parseFloat($("#wa_mgso4").jqxNumberInput("decimal"))*aI/aK;bu+=1000*bn/bk;bn=2*parseFloat($("#wa_cacl2").jqxNumberInput("decimal"))*q/T+parseFloat($("#wa_nacl").jqxNumberInput("decimal"))*q/b;bc+=1000*bn/bk;if($("#wa_acid_name").val()<0||$("#wa_acid_name").val()>3){$("#wa_acid_name").val(0);d.wa_acid_name=0}if(ag==""){ag=AcidTypeData[$("#wa_acid_name").val()].nl}if($("#wa_base_name").val()<0||$("#wa_base_name").val()>3){$("#wa_base_name").val(0);d.wa_base_name=0}if(aU==""){aU=BaseTypeData[$("#wa_base_name").val()].nl}by=d.wa_acid_name;bo=d.wa_base_name;bg=t(by);a5=bg.pK1;a4=bg.pK2;i=bg.pK3;bf=bg.MolWt;a7=bg.AcidSG;a6=bg.AcidPrc;if(d.calc_acid){bD=parseFloat(d.mash_ph);bA=M(bD);console.log("calc_acid tgt: "+bD+" protonDeficit: "+bA);if(bA>0){$("#wa_base").val(0);aB(aU,0);bF=CalcFrac(bD,a5,a4,i);Acid=bA/bF;Acid*=bf;Acidmg=Acid;Acid=Acid/a7;if(parseFloat($("#wa_acid_perc").jqxNumberInput("decimal"))==0){$("#wa_acid_perc").val(a6)}Acid=Acid*a6/(parseFloat($("#wa_acid_perc").jqxNumberInput("decimal"))/100);console.log("Final ml: "+Acid);$("#wa_acid").val(Round(Acid,2));aB(AcidTypeData[by].nl,Round(Acid,2));bw=bw-bA*bF/bk;bb=bw*50/61}else{if(bA<0){$("#wa_acid").val(0);aB(ag,0);bq=Math.pow(10,(bD-6.38));bi=Math.pow(10,(bD-10.38));a9=1/(1+bq+bq*bi);br=a9*bq;bj=br*bi;switch(bo){case 0:bn=-bA/(a9-bj);bn=bn*aF/1000;$("#wa_base").val(Round(bn,2));aB("NaHCO3",Round(bn,2));if(bk>0){bn=parseFloat($("#wa_nacl").jqxNumberInput("decimal"))*ad/b+parseFloat($("#wa_base").jqxNumberInput("decimal"))*ad/aF;bn=1000*bn/bk;bl=bm+bn;bn=parseFloat($("#wa_base").jqxNumberInput("decimal"))*r/aF;bn=1000*bn/bk;bw=a3+bn;bb=bw*50/61;bn=ar(wb_total_alkalinity,wb_calcium,wb_magnesium)}break;case 1:bn=-bA/(2*a9+br);bn=bn*y/1000;$("#wa_base").val(Round(bn,2));aB("Na2CO3",Round(bn,2));if(bk>0){bn=parseFloat($("#wa_nacl").jqxNumberInput("decimal"))*ad/b+parseFloat($("#wa_base").jqxNumberInput("decimal"))*2*ad/y;bn=1000*bn/bk;bl=bm+bn;bn=parseFloat($("#wa_base").jqxNumberInput("decimal"))*r/y;bn=1000*bn/bk;bw=a3+bn;bb=bw*50/61;bn=ar(wb_total_alkalinity,wb_calcium,wb_magnesium)}break;case 2:bn=-bA*(a9-bj);bn=bn*g/1000;bn=3*bn;$("#wa_base").val(Round(bn,2));aB("CaCO3",Round(bn,2));if(bk>0){bn=parseFloat($("#wa_base").jqxNumberInput("decimal"))/3*r/g;bn=1000*bn/bk;bw=a3+bn;bb=bw*50/61;bn=parseFloat($("#wa_cacl2").jqxNumberInput("decimal"))*A/T+parseFloat($("#wa_caso4").jqxNumberInput("decimal"))*A/an+parseFloat($("#wa_base").jqxNumberInput("decimal"))*A/g;bn=1000*bn/bk;bz=bB+bn;bn=ar(wb_total_alkalinity,wb_calcium,wb_magnesium)}break;case 3:bn=-bA/19.3;$("#wa_base").val(Round(bn,2));aB("Ca(OH)2",Round(bn,2));if(bk>0){bn=-bA/bk;bb=bC+bn;bw=bb*61/50;bn=parseFloat($("#wa_cacl2").jqxNumberInput("decimal"))*A/T+parseFloat($("#wa_caso4").jqxNumberInput("decimal"))*A/an+parseFloat($("#wa_base").jqxNumberInput("decimal"))*A/aJ;bn=1000*bn/bk;bz=bB+bn;bn=ar(wb_total_alkalinity,wb_calcium,wb_magnesium)}break}}}be=bD;$("#wb_ph").val(Round(be,1));$("#est_mash_ph").val(Round(be,1))}else{console.log("calc_acid no");if(parseFloat($("#wa_base").jqxNumberInput("decimal"))>0){if(bk>0){switch(bo){case 0:bn=parseFloat($("#wa_nacl").jqxNumberInput("decimal"))*ad/b+parseFloat($("#wa_base").jqxNumberInput("decimal"))*ad/aF;bn=1000*bn/bk;bl=bm+bn;bn=parseFloat($("#wa_base").jqxNumberInput("decimal"))*r/aF;bn=1000*bn/bk;bw=a3+bn;bb=bw*50/61;bn=ar(wb_total_alkalinity,wb_calcium,wb_magnesium);break;case 1:bn=parseFloat($("#wa_nacl").jqxNumberInput("decimal"))*ad/b+parseFloat($("#wa_base").jqxNumberInput("decimal"))*2*ad/y;bn=1000*bn/bk;bl=bm+bn;bn=parseFloat($("#wa_base").jqxNumberInput("decimal"))*r/y;bn=1000*bn/bk;bw=a3+bn;bb=bw*50/61;bn=ar(wb_total_alkalinity,wb_calcium,wb_magnesium);break;case 2:bn=parseFloat($("#wa_base").jqxNumberInput("decimal"))/3*r/g;bn=1000*bn/bk;bw=a3+bn;bb=bw*50/61;bn=ar(wb_total_alkalinity,wb_calcium,wb_magnesium);bn=parseFloat($("#wa_cacl2").jqxNumberInput("decimal"))*A/T+parseFloat($("#wa_caso4").jqxNumberInput("decimal"))*A/an+parseFloat($("#wa_base").jqxNumberInput("decimal"))*A/g;bn=1000*bn/bk;bz=bB+bn;break}}}bD=parseFloat(d.mash_ph);pHa=aN();if(parseFloat($("#wa_acid").jqxNumberInput("decimal"))>0){console.log("TpH: "+bD+" water: "+pHa);Acid=parseFloat($("#wa_acid").jqxNumberInput("decimal"));if(parseFloat($("#wa_acid_perc").jqxNumberInput("decimal"))==0){$("#wa_acid_perc").val(a6)}Acid=Acid/a6*(parseFloat($("#wa_acid_perc").jqxNumberInput("decimal"))/100);Acid*=a7;Acid/=bf;Acidmg=Acid;bF=CalcFrac(pHa,a5,a4,i);bA=Acid*bF;bx=0.001;bp=0.1;bh=M(pHa);bs=0;while(((bh<(bA-bp))||(bh>(bA+bp)))&&(bs<2000)){bs++;if(bh<(bA-bp)){pHa-=bx}else{if(bh>(bA+bp)){pHa+=bx}}bF=CalcFrac(pHa,a5,a4,i);bA=Acid*bF;bh=M(pHa)}console.log("n: "+bs+" pd: "+bh+" protonDeficit: "+bA+" frac: "+bF+" pHa: "+pHa);bn=a3-bA*bF/bk;bw=bn;bb=bn*50/61;be=pHa;$("#wb_ph").val(Round(be,1));$("#est_mash_ph").val(Round(be,1))}}if((by==3)&&(bk>0)){bn=parseFloat($("#wa_caso4").jqxNumberInput("decimal"))*aI/an+parseFloat($("#wa_mgso4").jqxNumberInput("decimal"))*aI/aK+Acidmg/1000*aI/(aI+2);bn=1000*bn/bk;bu=bv+bn}else{if((by==1)&&(bk>0)){bn=parseFloat($("#wa_cacl2").jqxNumberInput("decimal"))*q/T+parseFloat($("#wa_nacl").jqxNumberInput("decimal"))*q/b+Acidmg/1000*q/(q+1);bn=1000*bn/bk;bc=a8+bn}}$("#tgt_bu").val(Round(R(),2));if(R()<0.32){$("#wr_bu").html("Zeer moutig en zoet")}else{if(R()<0.43){$("#wr_bu").html("Moutig, zoet")}else{if(R()<0.52){$("#wr_bu").html("Evenwichtig")}else{if(R()<0.63){$("#wr_bu").html("Licht hoppig, bitter")}else{$("#wr_bu").html("Extra hoppig, zeer bitter")}}}}$("#tgt_cl_so4").val(Round(k(),1));if(bu>0){bn=bc/bu}else{bn=10}$("#got_cl_so4").val(Round(bn,1));bE=0.8*k();bt=1.2*k();bd="normaal";if(bnbt){bd="hoog"}}m("cl_so4",bd);$("#wb_calcium").val(Round(bz,1));$("#wb_magnesium").val(Round(ba,1));$("#wb_sodium").val(Round(bl,1));$("#wb_sulfate").val(Round(bu,1));$("#wb_chloride").val(Round(bc,1));$("#wb_total_alkalinity").val(Round(bb,1));if(bz<40){m("calcium","laag")}else{if(bz>150){m("calcium","hoog")}else{m("calcium","normaal")}}if(ba>=0&&ba<=30){m("magnesium","normaal")}else{m("magnesium","hoog")}if(bl<=150){m("sodium","normaal")}else{m("sodium","hoog")}if(bc<=50){m("chloride","laag")}else{if(bc<=100){m("chloride","normaal")}else{m("chloride","hoog")}}if(bu<=50){m("sulfate","laag")}else{if(bu<=350){m("sulfate","normaal")}else{m("sulfate","hoog")}}if(be<5.2){m("ph","laag")}else{if(be>5.6){m("ph","hoog")}else{m("ph","normaal")}}j();aG();G()}function j(){var a5,bh,bf,bn,bm,bq,bk,bj,bl,a8,bv,bt,a3,a7,ba,bg,br,bp,bs,bi,a4,a9,be,bd,bc,bb,bu,a6,i,bo;a5=d.sparge_ph;bh=d.w1_ph;bf=d.w1_total_alkalinity;if(d.sparge_source==1){if(d.w2_ph>0){bh=d.w2_ph;bf=d.w2_total_alkalinity}else{d.sparge_source=0;$("#sparge_source").val(0)}}else{if(d.sparge_source==2){if(d.w2_ph>0){bh=parseFloat($("#wg_ph").jqxNumberInput("decimal"));bf=parseFloat($("#wg_total_alkalinity").jqxNumberInput("decimal"))}else{d.sparge_source=0;$("#sparge_source").val(0)}}}bn=Math.pow(10,bh-6.38);bm=Math.pow(10,bh-10.373);bq=1+bn+bn*bm;bk=1/bq;bj=bn*bm/bq;bl=Math.pow(10,4.3-6.38);a8=Math.pow(10,4.3-10.373);bv=1+bl+bl*a8;bt=1/bv;a3=bl*a8/bv;a7=bf/50;ba=(a7-1000*(Math.pow(10,-4.3)-Math.pow(10,-bh)))/((bt-bk)+(bj-a3));bg=Math.pow(10,a5-6.38);br=Math.pow(10,a5-10.373);bp=1+bg+bg*br;bs=1/bp;bi=bg*br/bp;a4=ba*((bs-bk)+(bj-bi))+Math.pow(10,-a5)-Math.pow(10,-bh);a4+=0.01;if(d.sparge_acid_type<0||d.sparge_acid_type>3){d.sparge_acid_type=0;$("#sparge_acid_type").val(0)}a9=d.sparge_acid_type;be=t(a9);bd=be.pK1;bc=be.pK2;bb=be.pK3;bu=be.MolWt;a6=be.AcidSG;i=be.AcidPrc;bo=CalcFrac(a5,bd,bc,bb);a4/=bo;a4*=bu;a4=a4/a6;bk=d.sparge_acid_perc;if(bk<=0.1){bk=i}a4=a4*i/(bk/100);a4*=d.sparge_volume;a4=Round(a4,2);d.sparge_acid_amount=a4/1000;$("#sparge_acid_amount").val(a4)}function N(){var a3,i,a5,a4;if(d.brew_fermenter_sg<1.02){return}if((d.primary_end_sg>0.99)&&(d.primary_end_sg0.99)&&(d.secondary_end_sg0.99)&&(d.fg1.005&&d.est_color>3&&d.est_ibu>3){a8=1}if(a8==1&&parseFloat($("#brew_date_start").val())>2000){a8=2}if(a8==2&&($("#brew_date_start").val()=="")){a8=1}if(a8==2&&parseFloat($("#brew_date_end").val())>2000){a8=3}if(a8==3&&parseFloat($("#primary_end_date").val())>2000){a8=4}if(a8==4&&parseFloat($("#secondary_end_date").val())>2000){a8=5}if(a8==5&&parseFloat($("#package_date").val())>2000){a8=6}if(a8>=6&&a8<9){a7=new Date();a3=$("#package_date").val();a3=a3.split("-");a5=new Date(a7.getFullYear(),a7.getMonth(),a7.getDate());a3=new Date(a3[0],a3[1]-1,a3[2]);a9=parseInt(a5.getTime()/1000);a6=parseInt(a3.getTime()/1000);i=a9-a6;a4=i/60/60/24;if(a4>0){if(a4>=42){a8=9}else{if(a4>=14){a8=8}else{a8=7}}}}if(a8==9&&parseFloat($("#taste_date").val())>2000){a8=10}if(a8!=d.stage){console.log("calcStage() old: "+d.stage+" new: "+a8);d.stage=a8}$("#stage").val(StageData[d.stage].nl);if(d.stage>=10){$("#locked").jqxCheckBox({disabled:false})}if(d.stage>1){$("#equipmentSelect").jqxDropDownList({disabled:true});$("#Delete").jqxButton({disabled:true})}if(d.stage<1){$("#jqxTabs").jqxTabs("disableAt",8)}else{$("#jqxTabs").jqxTabs("enableAt",8)}if(d.stage<3){$("#jqxTabs").jqxTabs("disableAt",9)}else{$("#jqxTabs").jqxTabs("enableAt",9);$("#name").jqxInput({disabled:true});$("#code").jqxInput({disabled:true});$("#batch_size").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#boil_size").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#boil_time").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#efficiency").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#est_og").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#type").jqxDropDownList({disabled:true});$("#styleSelect").jqxDropDownList({disabled:true});$("#color_method").jqxDropDownList({disabled:true});$("#ibu_method").jqxDropDownList({disabled:true});$("#mash_select").jqxDropDownList({disabled:true});$("#w1_name").jqxDropDownList({disabled:true});$("#w2_name").jqxDropDownList({disabled:true});$("#w2_amount").jqxNumberInput({readOnly:true});$("#pr_name").jqxDropDownList({disabled:true});$("#wa_cacl2").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#wa_caso4").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#wa_mgso4").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#wa_nacl").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#mash_ph").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#calc_acid").jqxCheckBox({disabled:true});$("#wa_base_name").jqxDropDownList({disabled:true});$("#wa_base").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#wa_acid_name").jqxDropDownList({disabled:true});$("#wa_acid").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#wa_acid_perc").jqxNumberInput({spinButtons:false,readOnly:true,width:70});$("#sparge_temp").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#sparge_volume").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#sparge_ph").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#sparge_source").jqxDropDownList({disabled:true});$("#sparge_acid_type").jqxDropDownList({disabled:true});$("#sparge_acid_perc").jqxNumberInput({spinButtons:false,readOnly:true,width:false});$("#starter_enable").jqxCheckBox({disabled:true});$("#starter_type").jqxDropDownList({disabled:true});$("#starter_try").jqxButton({disabled:true});$("#starter_sg").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#starter_viability").jqxNumberInput({spinButtons:false,readOnly:true,width:90})}if(d.stage>3){$("#brew_date_start").jqxDateTimeInput({disabled:true});$("#brew_date_end").jqxDateTimeInput({disabled:true});$("#brew_mash_ph").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_preboil_ph").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_aboil_ph").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_mash_sg").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_preboil_sg").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_aboil_sg").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_preboil_volume").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_aboil_volume").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_whirlpool9").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_cooling_to").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_whirlpool7").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_cooling_method").jqxDropDownList({disabled:true});$("#brew_whirlpool6").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_cooling_time").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_sparge_ph").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_whirlpool2").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_aeration_type").jqxDropDownList({disabled:true});$("#brew_fermenter_tcloss").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_aeration_time").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_fermenter_extrawater").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_aeration_speed").jqxNumberInput({spinButtons:false,readOnly:true,width:90})}if(d.stage==5){$("#package_date").jqxDateTimeInput({disabled:false})}else{$("#package_date").jqxDateTimeInput({disabled:true})}if(d.stage>=5){$("#primary_start_temp").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#primary_max_temp").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#primary_end_temp").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#primary_end_sg").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#primary_end_brix").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#primary_end_date").jqxDateTimeInput({disabled:true})}if(d.stage>=6){$("#secondary_temp").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#secondary_end_sg").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#secondary_end_date").jqxDateTimeInput({disabled:true});$("#tertiary_temp").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#fg").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#final_brix").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#package_date").jqxDateTimeInput({disabled:true});$("#package_volume").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#package_infuse_amount").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#package_infuse_abv").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#package_infuse_notes").jqxInput({disabled:true});$("#package_ph").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#bottle_amount").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#bottle_priming_water").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#keg_priming_water").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#keg_amount").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#bottle_carbonation").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#keg_carbonation").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#bottle_priming_sugar").jqxDropDownList({disabled:true});$("#keg_priming_sugar").jqxDropDownList({disabled:true});$("#keg_forced_carb").jqxCheckBox({disabled:true});$("#bottle_carbonation_temp").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#keg_carbonation_temp").jqxNumberInput({spinButtons:false,readOnly:true,width:90})}if(d.stage<8){$("#jqxTabs").jqxTabs("disableAt",11)}else{$("#jqxTabs").jqxTabs("enableAt",11)}if(d.stage==11){$("#taste_date").jqxDateTimeInput({disabled:true});$("#taste_rate").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#taste_color").jqxInput({disabled:true});$("#taste_transparency").jqxInput({disabled:true});$("#taste_head").jqxInput({disabled:true});$("#taste_aroma").jqxInput({disabled:true});$("#taste_taste").jqxInput({disabled:true});$("#taste_aftertaste").jqxInput({disabled:true});$("#taste_mouthfeel").jqxInput({disabled:true});$("#taste_notes").jqxInput({disabled:true});$("#notes").jqxInput({disabled:true})}else{$("#notes").jqxInput({disabled:false})}}function J(){if(d.starter_enable){$("#propagator").show();$("#starter_type").jqxDropDownList({disabled:false});$("#starter_try").jqxButton({disabled:false});$("#starter_sg").jqxNumberInput({spinButtons:true,readOnly:false,width:110});$("#starter_viability").jqxNumberInput({spinButtons:true,readOnly:false,width:110})}else{$("#propagator").hide();$("#starter_type").jqxDropDownList({disabled:true});$("#starter_try").jqxButton({disabled:true});$("#starter_sg").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#starter_viability").jqxNumberInput({spinButtons:false,readOnly:true,width:90})}}function aX(){console.log("calcInit()");a0();w();S();$("#starter_enable").on("checked",function(i){d.starter_enable=1;J();Y()});$("#starter_enable").on("unchecked",function(i){d.starter_enable=0;J();Y()});$("#starter_try").click(function(){$("#prop1_volume").val(0);$("#prop2_volume").val(0);$("#prop3_volume").val(0);$("#prop4_volume").val(0);Y()});$("#starter_type").on("change",function(i){if(i.args){d.starter_type=i.args.index;Y()}});$("#starter_sg").on("change",function(i){if(i.args){d.starter_sg=i.args.value;Y()}});$("#starter_viability").on("change",function(i){if(i.args){d.starter_viability=i.args.value;U();Y()}});$("#prop1_type").on("change",function(i){if(i.args){d.prop1_type=i.args.index;Y()}});$("#prop1_volume").on("change",function(i){if(i.args){d.prop1_volume=i.args.value;Y()}});$("#prop2_type").on("change",function(i){if(i.args){d.prop2_type=i.args.index;Y()}});$("#prop2_volume").on("change",function(i){if(i.args){d.prop2_volume=i.args.value;Y()}});$("#prop3_type").on("change",function(i){if(i.args){d.prop3_type=i.args.index;Y()}});$("#prop3_volume").on("change",function(i){if(i.args){d.prop3_volume=i.args.value;Y()}});$("#prop4_type").on("change",function(i){if(i.args){d.prop4_type=i.args.index;Y()}});$("#prop4_volume").on("change",function(i){if(i.args){d.prop4_volume=i.args.value;Y()}});$("#calc_acid").on("checked",function(i){d.calc_acid=1;Q()});$("#calc_acid").on("unchecked",function(i){d.calc_acid=0;Q()});$("#w1_name").jqxDropDownList("selectItem",d.w1_name);$("#w2_name").jqxDropDownList("selectItem",d.w2_name);if(parseFloat($("#w1_amount").jqxNumberInput("decimal"))==0&&C>0){$("#w1_amount").val(C);d.w1_amount=C;$("#wg_amount").val(C);$("#w2_amount").val(0);d.w2_amount=0}Q();$("#w2_amount").on("change",function(i){var a3=parseFloat(i.args.value);if(a3>C){$("#w2_amount").val(d.w2_amount);return}d.w1_amount=parseFloat($("#wg_amount").jqxNumberInput("decimal"))-a3;$("#w1_amount").val(d.w1_amount);d.w2_amount=a3;console.log("new: "+i.args.value+" w1: "+d.w1_amount+" w2: "+d.w2_amount);Q()});$("#wa_cacl2").on("change",function(i){if(i.args){aB("CaCl2",0);aB("CaCl2",i.args.value);Q()}});$("#wa_caso4").on("change",function(i){if(i.args){aB("CaSO4",0);aB("CaSO4",i.args.value);Q()}});$("#wa_mgso4").on("change",function(i){if(i.args){aB("MgSO4",0);aB("MgSO4",i.args.value);Q()}});$("#wa_nacl").on("change",function(i){if(i.args){aB("NaCl",0);aB("NaCl",i.args.value);Q()}});$("#wa_base_name").on("change",function(a3){if(a3.args){var i=a3.args.index;console.log("wa_base_name "+i);aB(aU,0);aU=BaseTypeData[i].nl;aB(aU,parseFloat($("#wa_base").jqxNumberInput("decimal")));d.wa_base_name=i;Q()}});$("#wa_base").on("change",function(a3){var i=BaseTypeData[$("#wa_base_name").val()].nl;aB(i,parseFloat(a3.args.value));Q()});$("#wa_acid_name").on("change",function(a3){if(a3.args){var i=a3.args.index;console.log("wa_acid_name "+i);aB(ag,0);ag=AcidTypeData[i].nl;aB(ag,parseFloat($("#wa_acid").jqxNumberInput("decimal")));d.wa_acid_name=i;Q()}});$("#wa_acid").on("change",function(a3){var i=AcidTypeData[$("#wa_acid_name").val()].nl;aB(i,parseFloat(a3.args.value));Q()});$("#wa_acid_perc").on("change",function(i){Q()});$("#color_method").on("change",function(i){d.color_method=i.args.index;U()});$("#ibu_method").on("change",function(i){d.ibu_method=i.args.index;U();at()});$("#batch_size").on("change",function(a4){console.log("batch_size change:"+a4.args.value+" old:"+d.batch_size);$("#est_a_vol").val(a4.args.value*1.04);var i,a3=parseFloat(a4.args.value)+d.boil_size-d.batch_size;i=parseFloat(a4.args.value)/d.batch_size;d.boil_size=a3;$("#boil_size").val(Round(a3,2));$("#est_pre_vol").val(Round(a3*1.04,2));d.sparge_volume*=i;$("#sparge_volume").val(d.sparge_volume);$("#brew_sparge_volume").val(d.sparge_volume);d.batch_size=parseFloat(a4.args.value);af(parseFloat($("#est_og").jqxNumberInput("decimal")));au(i);U();aj(i);a2(i);aP(i);at();Q();j();aO()});$("#boil_time").on("change",function(a4){console.log("boil_time change:"+parseFloat(a4.args.value)+" old:"+d.boil_time);var a3,i,a5=parseFloat(d.boil_size)-parseFloat(d.batch_size);i=a5*(parseFloat(a4.args.value)/d.boil_time);a3=parseFloat(d.batch_size)+i;d.boil_time=parseFloat(a4.args.value);d.boil_size=a3;$("#est_pre_vol").val(Round(a3*1.04,2));$("#boil_size").val(Round(a3,2));U();at();Y()});$("#efficiency").on("change",function(a3){var i=parseFloat($("#est_og").jqxNumberInput("decimal"));d.efficiency=parseFloat(a3.args.value);console.log("efficiency change:"+d.efficiency+" est_og:"+i);af(i);U();at();Y()});$("#est_og").on("change",function(i){d.est_og=parseFloat(i.args.value);console.log("est_og change:"+d.est_og);$("#est_og2").val(d.est_og);af(d.est_og);U();at();aO();Y()});$("#mash_ph").on("change",function(i){d.mash_ph=parseFloat(i.args.value);Q()});$("#sparge_ph").on("change",function(i){d.sparge_ph=parseFloat(i.args.value);j()});$("#sparge_volume").on("change",function(i){d.sparge_volume=parseFloat(i.args.value);$("#brew_sparge_volume").val(d.sparge_volume);j()});$("#sparge_temp").on("change",function(i){d.sparge_temp=parseFloat(i.args.value);$("#brew_sparge_temperature").val(d.sparge_temp)});$("#sparge_source").on("change",function(i){if(i.args){d.sparge_source=i.args.index;j()}});$("#sparge_acid_type").on("change",function(i){if(i.args){d.sparge_acid_type=i.args.index;console.log("new sparge_acid_type: "+d.sparge_acid_type);j()}});$("#sparge_acid_perc").on("change",function(i){d.sparge_acid_perc=parseFloat(i.args.value);j()});N();aS();$("#package_volume").on("change",function(a3){var a4,a5,i=d.package_volume+d.package_infuse_amount;d.package_volume=parseFloat(a3.args.value);if(d.package_volume>d.brew_fermenter_volume){d.package_volume=d.brew_fermenter_volume;$("#package_volume").val(d.package_volume)}a5=d.package_volume+d.package_infuse_amount;a4=a5-i;if(i>0){d.bottle_amount+=(d.bottle_amount/i)*a4;d.keg_amount+=(d.keg_amount/i)*a4}else{d.bottle_amount=a5;d.keg_amount=0}console.log("diff:"+a4+" old:"+i+" bottle:"+d.bottle_amount+" keg:"+d.keg_amount);$("#bottle_amount").val(parseFloat(d.bottle_amount*1000)/1000);$("#keg_amount").val(parseFloat(d.keg_amount*1000)/1000);aS()});$("#package_infuse_amount").on("change",function(a3){var a4,a5,i=d.package_volume+d.package_infuse_amount;d.package_infuse_amount=parseFloat(a3.args.value);a5=d.package_volume+d.package_infuse_amount;a4=a5-i;if(i>0){d.bottle_amount+=(d.bottle_amount/i)*a4;d.keg_amount+=(d.keg_amount/i)*a4}else{d.bottle_amount=a5;d.keg_amount=0}console.log("diff:"+a4+" old:"+i+" bottle:"+d.bottle_amount+" keg:"+d.keg_amount);$("#bottle_amount").val(parseFloat(d.bottle_amount*1000)/1000);$("#keg_amount").val(parseFloat(d.keg_amount*1000)/1000);aS()});$("#package_infuse_abv").on("change",function(i){d.package_infuse_abv=parseFloat(i.args.value);aS()});$("#bottle_amount").on("change",function(a4){var i,a5,a3=parseFloat(a4.args.value);i=d.package_volume+d.package_infuse_amount;if(a3>i){a3=i}a5=d.bottle_amount-a3;d.bottle_amount=Math.round((d.bottle_amount-a5)*1000)/1000;d.keg_amount=Math.round((d.keg_amount+a5)*1000)/1000;$("#bottle_amount").val(parseFloat(d.bottle_amount));$("#keg_amount").val(parseFloat(d.keg_amount));aS()});$("#bottle_priming_water").on("change",function(i){d.bottle_priming_water=parseFloat(i.args.value);aS()});$("#keg_amount").on("change",function(a4){var a5,i,a3=parseFloat(a4.args.value);i=d.package_volume+d.package_infuse_amount;if(a3>i){a3=i}a5=d.keg_amount-a3;d.bottle_amount=Math.round((d.bottle_amount+a5)*1000)/1000;d.keg_amount=Math.round((d.keg_amount-a5)*1000)/1000;$("#bottle_amount").val(parseFloat(d.bottle_amount));$("#keg_amount").val(parseFloat(d.keg_amount));aS()});$("#keg_priming_water").on("change",function(i){d.keg_priming_water=parseFloat(i.args.value);aS()});$("#bottle_carbonation").on("change",function(i){d.bottle_carbonation=parseFloat(i.args.value);aS()});$("#bottle_carbonation_temp").on("change",function(i){d.bottle_carbonation_temp=parseFloat(i.args.value);aS()});$("#keg_carbonation").on("change",function(i){d.keg_carbonation=parseFloat(i.args.value);aS()});$("#keg_forced_carb").on("checked",function(i){d.keg_forced_carb=1;aS()});$("#keg_forced_carb").on("unchecked",function(i){d.keg_forced_carb=0;aS()});$("#keg_carbonation_temp").on("change",function(i){d.keg_carbonation_temp=parseFloat(i.args.value);aS()});$("#brew_fermenter_extrawater").on("change",function(i){d.brew_fermenter_extrawater=parseFloat(i.args.value);U();at();Y()});$("#brew_fermenter_tcloss").on("change",function(i){d.brew_fermenter_tcloss=parseFloat(i.args.value);U();at();Y()});$("#primary_end_sg").on("change",function(i){d.primary_end_sg=parseFloat(i.args.value);N()});$("#primary_end_brix").on("change",function(a3){var a4,a5,i;if(d.brew_fermenter_sg>=1.02){a4=sg_to_brix(d.brew_fermenter_sg);a5=parseFloat(a3.args.value);i=Round(1.0031-0.002318474*a4-0.000007775*(a4*a4)-3.4e-8*Math.pow(a4,3)+0.00574*(a5)+0.00003344*(a5*a5)+8.6e-8*Math.pow(a5,3),4);if(a5>0.05){$("#primary_end_sg").val(i);d.primary_end_sg=i}N()}});$("#secondary_end_sg").on("change",function(i){d.secondary_end_sg=parseFloat(i.args.value);N()});$("#secondary_end_brix").on("change",function(a3){var a4,a5,i;if(d.brew_fermenter_sg>=1.02){a4=sg_to_brix(d.brew_fermenter_sg);a5=parseFloat(a3.args.value);i=Round(1.0031-0.002318474*a4-0.000007775*(a4*a4)-3.4e-8*Math.pow(a4,3)+0.00574*(a5)+0.00003344*(a5*a5)+8.6e-8*Math.pow(a5,3),4);if(a5>0.05){$("#secondary_end_sg").val(i);d.secondary_end_sg=i}N()}});$("#final_brix").on("change",function(a3){var a4,a5,i;if(d.brew_fermenter_sg>=1.02){a4=sg_to_brix(d.brew_fermenter_sg);a5=parseFloat(a3.args.value);i=Round(1.0031-0.002318474*a4-0.000007775*(a4*a4)-3.4e-8*Math.pow(a4,3)+0.00574*(a5)+0.00003344*(a5*a5)+8.6e-8*Math.pow(a5,3),4);if(a5>0.05){$("#fg").val(i);d.fg=i}N()}});$("#fg").on("change",function(i){d.fg=parseFloat(i.args.value);N()});$("#BLog").jqxButton({disabled:(d.log_brew)?false:true});$("#FLog").jqxButton({disabled:(d.log_fermentation)?false:true})}$("#styleSelect").jqxDropDownList({placeHolder:"Kies bierstijl:",theme:theme,source:styleslist,displayMember:"name",width:180,height:23,dropDownVerticalAlignment:"top",dropDownWidth:500,dropDownHeight:380,renderer:function(a3,i,a5){var a4=styleslist.records[a3];return a4.style_guide+" "+a4.style_letter+" "+a4.name}});$("#styleSelect").on("select",function(a4){if(a4.args){var a3,i=a4.args.index;a3=styleslist.records[i];$("#st_name").val(a3.name);$("#st_category").val(a3.category);$("#st_category_number").val(a3.category_number);$("#st_letter").val(a3.style_letter);$("#st_guide").val(a3.style_guide);$("#st_type").val(StyleTypeData[a3.type].nl);$("#st_og_min").val(a3.og_min);$("#st_og_max").val(a3.og_max);$("#st_fg_min").val(a3.fg_min);$("#st_fg_max").val(a3.fg_max);$("#st_ibu_min").val(a3.ibu_min);$("#st_ibu_max").val(a3.ibu_max);$("#st_color_min").val(a3.color_min);$("#st_color_max").val(a3.color_max);$("#st_carb_min").val(a3.carb_min);$("#st_carb_min2").val(a3.carb_min);$("#st_carb_max").val(a3.carb_max);$("#st_carb_max2").val(a3.carb_max);$("#st_abv_min").val(a3.abv_min);$("#st_abv_max").val(a3.abv_max)}});$("#equipmentSelect").jqxDropDownList({placeHolder:"Kies apparatuur:",theme:theme,source:equipmentlist,displayMember:"name",width:170,height:23,dropDownWidth:300,renderer:function(a3,i,a5){var a4=equipmentlist.records[a3];return a4.batch_size+" liter "+a4.name}});$("#equipmentSelect").on("select",function(a5){if(a5.args){var a4,a3,i=a5.args.index;a4=equipmentlist.records[i];a3=a4.batch_size/d.batch_size;$("#eq_name").val(a4.name);$("#eq_boil_size").val(a4.boil_size);d.boil_size=a4.boil_size;$("#boil_size").val(a4.boil_size);$("#eq_batch_size").val(a4.batch_size);d.batch_size=a4.batch_size;$("#batch_size").val(a4.batch_size);$("#est_a_vol").val(a4.batch_size*1.04);$("#eq_tun_volume").val(a4.tun_volume);d.eq_tun_weight=a4.tun_weight;d.eq_tun_specific_heat=a4.tun_specific_heat;d.eq_tun_material=a4.tun_material;d.eq_tun_height=a4.tun_height/100;$("#eq_top_up_water").val(a4.top_up_water);d.eq_trub_chiller_loss=a4.trub_chiller_loss;$("#eq_trub_chiller_loss").val(a4.trub_chiller_loss);$("#eq_evap_rate").val(a4.evap_rate);$("#eq_boil_time").val(a4.boil_time);d.eq_calc_boil_volume=a4.calc_boil_volume;$("#eq_top_up_kettle").val(a4.top_up_kettle);$("#eq_hop_utilization").val(a4.hop_utilization);$("#eq_notes").val(a4.notes);$("#eq_lauter_volume").val(a4.lauter_volume);d.eq_lauter_height=a4.lauter_height/100;$("#eq_lauter_deadspace").val(a4.lauter_deadspace);$("#eq_kettle_volume").val(a4.kettle_volume);d.eq_kettle_height=a4.kettle_height/100;$("#eq_mash_volume").val(a4.mash_volume);$("#eq_mash_max").val(a4.mash_max);d.eq_mash_max=a4.mash_max;$("#mash_max").val(a4.mash_max);$("#eq_efficiency").val(a4.efficiency);d.efficiency=a4.efficiency;$("#efficiency").val(a4.efficiency);d.sparge_volume=Math.round(a4.boil_size*5)/10;$("#sparge_volume").val(d.sparge_volume);$("#brew_sparge_volume").val(d.sparge_volume);$("#est_pre_vol").val(a4.boil_size*1.04);af(parseFloat($("#est_og").jqxNumberInput("decimal")));au(a3);U();aj(a3);a2(a3);aP(a3);at();Q();j()}});function s(i){var a4={record:my_record,uuid:d.uuid,name:$("#name").val(),code:$("#code").val(),birth:$("#birth").val(),stage:d.stage,notes:$("#notes").val(),log_brew:d.log_brew,log_fermentation:d.log_fermentation,inventory_reduced:d.inventory_reduced,locked:d.locked,eq_name:$("#eq_name").val(),eq_boil_size:parseFloat($("#eq_boil_size").jqxNumberInput("decimal")),eq_batch_size:parseFloat($("#eq_batch_size").jqxNumberInput("decimal")),eq_tun_volume:parseFloat($("#eq_tun_volume").jqxNumberInput("decimal")),eq_tun_weight:d.eq_tun_weight,eq_tun_specific_heat:d.eq_tun_specific_heat,eq_tun_material:d.eq_tun_material,eq_tun_height:d.eq_tun_height,eq_top_up_water:parseFloat($("#eq_top_up_water").jqxNumberInput("decimal")),eq_trub_chiller_loss:parseFloat($("#eq_trub_chiller_loss").jqxNumberInput("decimal")),eq_evap_rate:parseFloat($("#eq_evap_rate").jqxNumberInput("decimal")),eq_boil_time:parseFloat($("#eq_boil_time").jqxNumberInput("decimal")),eq_calc_boil_volume:d.eq_calc_boil_volume,eq_top_up_kettle:parseFloat($("#eq_top_up_kettle").jqxNumberInput("decimal")),eq_hop_utilization:parseFloat($("#eq_hop_utilization").jqxNumberInput("decimal")),eq_notes:$("#eq_notes").val(),eq_lauter_volume:parseFloat($("#eq_lauter_volume").jqxNumberInput("decimal")),eq_lauter_height:d.eq_lauter_height,eq_lauter_deadspace:parseFloat($("#eq_lauter_deadspace").jqxNumberInput("decimal")),eq_kettle_volume:parseFloat($("#eq_kettle_volume").jqxNumberInput("decimal")),eq_kettle_height:d.eq_kettle_height,eq_mash_volume:parseFloat($("#eq_mash_volume").jqxNumberInput("decimal")),eq_mash_max:parseFloat($("#eq_mash_max").jqxNumberInput("decimal")),eq_efficiency:parseFloat($("#eq_efficiency").jqxNumberInput("decimal")),brew_date_start:$("#brew_date_start").val(),brew_mash_ph:parseFloat($("#brew_mash_ph").jqxNumberInput("decimal")),brew_mash_sg:parseFloat($("#brew_mash_sg").jqxNumberInput("decimal")),brew_mash_efficiency:parseFloat($("#brew_mash_efficiency").jqxNumberInput("decimal")),brew_sparge_est:parseFloat($("#brew_sparge_est").jqxNumberInput("decimal")),brew_sparge_ph:parseFloat($("#brew_sparge_ph").jqxNumberInput("decimal")),brew_preboil_volume:parseFloat($("#brew_preboil_volume").jqxNumberInput("decimal")),brew_preboil_sg:parseFloat($("#brew_preboil_sg").jqxNumberInput("decimal")),brew_preboil_ph:parseFloat($("#brew_preboil_ph").jqxNumberInput("decimal")),brew_preboil_efficiency:parseFloat($("#brew_preboil_efficiency").jqxNumberInput("decimal")),brew_aboil_volume:parseFloat($("#brew_aboil_volume").jqxNumberInput("decimal")),brew_aboil_sg:parseFloat($("#brew_aboil_sg").jqxNumberInput("decimal")),brew_aboil_ph:parseFloat($("#brew_aboil_ph").jqxNumberInput("decimal")),brew_aboil_efficiency:parseFloat($("#brew_aboil_efficiency").jqxNumberInput("decimal")),brew_cooling_method:$("#brew_cooling_method").val(),brew_cooling_time:parseFloat($("#brew_cooling_time").jqxNumberInput("decimal")),brew_cooling_to:parseFloat($("#brew_cooling_to").jqxNumberInput("decimal")),brew_whirlpool9:parseFloat($("#brew_whirlpool9").jqxNumberInput("decimal")),brew_whirlpool7:parseFloat($("#brew_whirlpool7").jqxNumberInput("decimal")),brew_whirlpool6:parseFloat($("#brew_whirlpool6").jqxNumberInput("decimal")),brew_whirlpool2:parseFloat($("#brew_whirlpool2").jqxNumberInput("decimal")),brew_fermenter_volume:parseFloat($("#brew_fermenter_volume").jqxNumberInput("decimal")),brew_fermenter_extrawater:parseFloat($("#brew_fermenter_extrawater").jqxNumberInput("decimal")),brew_fermenter_tcloss:parseFloat($("#brew_fermenter_tcloss").jqxNumberInput("decimal")),brew_aeration_time:parseFloat($("#brew_aeration_time").jqxNumberInput("decimal")),brew_aeration_speed:parseFloat($("#brew_aeration_speed").jqxNumberInput("decimal")),brew_aeration_type:$("#brew_aeration_type").val(),brew_fermenter_sg:parseFloat($("#brew_fermenter_sg").jqxNumberInput("decimal")),brew_fermenter_ibu:parseFloat($("#brew_fermenter_ibu").jqxNumberInput("decimal")),brew_fermenter_color:parseFloat($("#brew_fermenter_color").jqxNumberInput("decimal")),brew_date_end:$("#brew_date_end").val(),og:d.og,fg:parseFloat($("#fg").jqxNumberInput("decimal")),primary_start_temp:parseFloat($("#primary_start_temp").jqxNumberInput("decimal")),primary_max_temp:parseFloat($("#primary_max_temp").jqxNumberInput("decimal")),primary_end_temp:parseFloat($("#primary_end_temp").jqxNumberInput("decimal")),primary_end_sg:parseFloat($("#primary_end_sg").jqxNumberInput("decimal")),primary_end_date:$("#primary_end_date").val(),secondary_temp:parseFloat($("#secondary_temp").jqxNumberInput("decimal")),secondary_end_sg:parseFloat($("#secondary_end_sg").jqxNumberInput("decimal")),secondary_end_date:$("#secondary_end_date").val(),tertiary_temp:parseFloat($("#tertiary_temp").jqxNumberInput("decimal")),package_date:$("#package_date").val(),package_volume:parseFloat($("#package_volume").jqxNumberInput("decimal")),package_infuse_amount:parseFloat($("#package_infuse_amount").jqxNumberInput("decimal")),package_infuse_abv:parseFloat($("#package_infuse_abv").jqxNumberInput("decimal")),package_infuse_notes:$("#package_infuse_notes").val(),package_abv:parseFloat($("#package_abv").jqxNumberInput("decimal")),package_ph:parseFloat($("#package_ph").jqxNumberInput("decimal")),bottle_amount:parseFloat($("#bottle_amount").jqxNumberInput("decimal")),bottle_carbonation:parseFloat($("#bottle_carbonation").jqxNumberInput("decimal")),bottle_priming_water:parseFloat($("#bottle_priming_water").jqxNumberInput("decimal")),bottle_priming_amount:parseFloat($("#bottle_priming_amount").jqxNumberInput("decimal")),bottle_carbonation_temp:parseFloat($("#bottle_carbonation_temp").jqxNumberInput("decimal")),keg_amount:parseFloat($("#keg_amount").jqxNumberInput("decimal")),keg_carbonation:parseFloat($("#keg_carbonation").jqxNumberInput("decimal")),keg_priming_water:parseFloat($("#keg_priming_water").jqxNumberInput("decimal")),keg_priming_amount:parseFloat($("#keg_priming_amount").jqxNumberInput("decimal")),keg_carbonation_temp:parseFloat($("#keg_carbonation_temp").jqxNumberInput("decimal")),keg_forced_carb:d.keg_forced_carb,keg_pressure:parseFloat($("#keg_pressure").jqxNumberInput("decimal")),taste_notes:$("#taste_notes").val(),taste_rate:parseFloat($("#taste_rate").jqxNumberInput("decimal")),taste_date:$("#taste_date").val(),taste_color:$("#taste_color").val(),taste_transparency:$("#taste_transparency").val(),taste_head:$("#taste_head").val(),taste_aroma:$("#taste_aroma").val(),taste_taste:$("#taste_taste").val(),taste_mouthfeel:$("#taste_mouthfeel").val(),taste_aftertaste:$("#taste_aftertaste").val(),st_name:$("#st_name").val(),st_letter:$("#st_letter").val(),st_guide:$("#st_guide").val(),st_type:d.st_type,st_category:$("#st_category").val(),st_category_number:parseFloat($("#st_category_number").jqxNumberInput("decimal")),st_og_min:parseFloat($("#st_og_min").jqxNumberInput("decimal")),st_og_max:parseFloat($("#st_og_max").jqxNumberInput("decimal")),st_fg_min:parseFloat($("#st_fg_min").jqxNumberInput("decimal")),st_fg_max:parseFloat($("#st_fg_max").jqxNumberInput("decimal")),st_ibu_min:parseFloat($("#st_ibu_min").jqxNumberInput("decimal")),st_ibu_max:parseFloat($("#st_ibu_max").jqxNumberInput("decimal")),st_color_min:parseFloat($("#st_color_min").jqxNumberInput("decimal")),st_color_max:parseFloat($("#st_color_max").jqxNumberInput("decimal")),st_carb_min:parseFloat($("#st_carb_min").jqxNumberInput("decimal")),st_carb_max:parseFloat($("#st_carb_max").jqxNumberInput("decimal")),st_abv_min:parseFloat($("#st_abv_min").jqxNumberInput("decimal")),st_abv_max:parseFloat($("#st_abv_max").jqxNumberInput("decimal")),type:$("#type").val(),batch_size:parseFloat($("#batch_size").jqxNumberInput("decimal")),boil_size:parseFloat($("#boil_size").jqxNumberInput("decimal")),boil_time:parseFloat($("#boil_time").jqxNumberInput("decimal")),efficiency:parseFloat($("#efficiency").jqxNumberInput("decimal")),est_og:parseFloat($("#est_og").jqxNumberInput("decimal")),est_fg:parseFloat($("#est_fg").jqxNumberInput("decimal")),est_abv:parseFloat($("#est_abv").jqxNumberInput("decimal")),est_color:parseFloat($("#est_color").jqxNumberInput("decimal")),color_method:$("#color_method").val(),est_ibu:parseFloat($("#est_ibu").jqxNumberInput("decimal")),ibu_method:$("#ibu_method").val(),est_carb:parseFloat($("#est_carb").jqxNumberInput("decimal")),mash_name:$("#mash_name").val(),mash_ph:parseFloat($("#mash_ph").jqxNumberInput("decimal")),sparge_temp:parseFloat($("#sparge_temp").jqxNumberInput("decimal")),sparge_ph:parseFloat($("#sparge_ph").jqxNumberInput("decimal")),sparge_volume:parseFloat($("#sparge_volume").jqxNumberInput("decimal")),sparge_source:$("#sparge_source").val(),sparge_acid_type:$("#sparge_acid_type").val(),sparge_acid_perc:parseFloat($("#sparge_acid_perc").jqxNumberInput("decimal")),sparge_acid_amount:d.sparge_acid_amount,calc_acid:d.calc_acid,w1_name:$("#w1_name").val(),w1_amount:parseFloat($("#w1_amount").jqxNumberInput("decimal")),w1_calcium:parseFloat($("#w1_calcium").jqxNumberInput("decimal")),w1_sulfate:parseFloat($("#w1_sulfate").jqxNumberInput("decimal")),w1_chloride:parseFloat($("#w1_chloride").jqxNumberInput("decimal")),w1_sodium:parseFloat($("#w1_sodium").jqxNumberInput("decimal")),w1_magnesium:parseFloat($("#w1_magnesium").jqxNumberInput("decimal")),w1_total_alkalinity:parseFloat($("#w1_total_alkalinity").jqxNumberInput("decimal")),w1_ph:parseFloat($("#w1_ph").jqxNumberInput("decimal")),w1_cost:d.w1_cost,w2_name:$("#w2_name").val(),w2_amount:parseFloat($("#w2_amount").jqxNumberInput("decimal")),w2_calcium:parseFloat($("#w2_calcium").jqxNumberInput("decimal")),w2_sulfate:parseFloat($("#w2_sulfate").jqxNumberInput("decimal")),w2_chloride:parseFloat($("#w2_chloride").jqxNumberInput("decimal")),w2_sodium:parseFloat($("#w2_sodium").jqxNumberInput("decimal")),w2_magnesium:parseFloat($("#w2_magnesium").jqxNumberInput("decimal")),w2_total_alkalinity:parseFloat($("#w2_total_alkalinity").jqxNumberInput("decimal")),w2_ph:parseFloat($("#w2_ph").jqxNumberInput("decimal")),w2_cost:d.w2_cost,wg_amount:parseFloat($("#wg_amount").jqxNumberInput("decimal")),wg_calcium:parseFloat($("#wg_calcium").jqxNumberInput("decimal")),wg_sulfate:parseFloat($("#wg_sulfate").jqxNumberInput("decimal")),wg_chloride:parseFloat($("#wg_chloride").jqxNumberInput("decimal")),wg_sodium:parseFloat($("#wg_sodium").jqxNumberInput("decimal")),wg_magnesium:parseFloat($("#wg_magnesium").jqxNumberInput("decimal")),wg_total_alkalinity:parseFloat($("#wg_total_alkalinity").jqxNumberInput("decimal")),wg_ph:parseFloat($("#wg_ph").jqxNumberInput("decimal")),wb_calcium:parseFloat($("#wb_calcium").jqxNumberInput("decimal")),wb_sulfate:parseFloat($("#wb_sulfate").jqxNumberInput("decimal")),wb_chloride:parseFloat($("#wb_chloride").jqxNumberInput("decimal")),wb_sodium:parseFloat($("#wb_sodium").jqxNumberInput("decimal")),wb_magnesium:parseFloat($("#wb_magnesium").jqxNumberInput("decimal")),wb_total_alkalinity:parseFloat($("#wb_total_alkalinity").jqxNumberInput("decimal")),wb_ph:parseFloat($("#wb_ph").jqxNumberInput("decimal")),wa_acid_name:$("#wa_acid_name").val(),wa_acid_perc:parseFloat($("#wa_acid_perc").jqxNumberInput("decimal")),wa_base_name:$("#wa_base_name").val(),starter_enable:d.starter_enable,starter_type:$("#starter_type").val(),starter_sg:parseFloat($("#starter_sg").jqxNumberInput("decimal")),starter_viability:parseFloat($("#starter_viability").jqxNumberInput("decimal")),prop1_type:$("#prop1_type").val(),prop1_volume:parseFloat($("#prop1_volume").jqxNumberInput("decimal")),prop2_type:$("#prop2_type").val(),prop2_volume:parseFloat($("#prop2_volume").jqxNumberInput("decimal")),prop3_type:$("#prop3_type").val(),prop3_volume:parseFloat($("#prop3_volume").jqxNumberInput("decimal")),prop4_type:$("#prop4_type").val(),prop4_volume:parseFloat($("#prop4_volume").jqxNumberInput("decimal")),fermentables:$("#fermentableGrid").jqxGrid("getrows"),hops:$("#hopGrid").jqxGrid("getrows"),miscs:$("#miscGrid").jqxGrid("getrows"),yeasts:$("#yeastGrid").jqxGrid("getrows"),mashs:$("#mashGrid").jqxGrid("getrows")},a3="update=true&"+$.param(a4);$.ajax({dataType:"json",url:E,cache:false,data:a3,async:false,type:"POST",success:function(a6,a5,a7){console.log("saveRecord("+i+") success");if(i){window.location.href=my_return}else{window.location.href="prod_export.php?record="+my_record+"&return="+my_return+"&select="+my_select+"&code="+d.code+"&name="+d.name}},error:function(a5,a7,a6){console.log("saveRecord() "+a7)}})}ah.dataBind();$("#name").jqxTooltip({content:"De naam voor dit product."});$("#name").jqxInput({theme:theme,width:640,height:23});$("#code").jqxTooltip({content:"Product code nummer."});$("#code").jqxInput({theme:theme,width:100,height:23});$("#birth").jqxTooltip({content:"De ontwerp datum van dit product."});$("#birth").jqxInput({theme:theme,width:120,height:23});$("#stage").jqxTooltip({content:"De productie fase van dit product."});$("#stage").jqxInput({theme:theme,width:100,height:23});$("#locked").jqxCheckBox({theme:theme,width:120,height:23,disabled:true});$("#locked").on("checked",function(i){if(d.stage>=10){d.locked=1;d.stage=11;aV()}});$("#locked").on("unchecked",function(i){if(d.stage>=10){d.locked=0;d.stage=10;aV()}});$("#notes").jqxTooltip({content:"De uitgebreide opmerkingen over dit product."});$("#notes").jqxInput({theme:theme,width:960,height:100});$("#type").jqxTooltip({content:"Het brouw type van dit recept."});$("#type").jqxDropDownList({theme:theme,source:RecipeTypeAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#efficiency").jqxTooltip({content:"Het rendement van maischen en koken."});$("#efficiency").jqxNumberInput(Perc1dec);$("#batch_size").jqxTooltip({content:"Het volume van het gekoelde wort na het koken."});$("#batch_size").jqxNumberInput(Spin1dec);$("#batch_size").jqxNumberInput({min:4});$("#boil_time").jqxTooltip({content:"De kooktijd in minuten."});$("#boil_time").jqxNumberInput(PosInt);$("#boil_time").jqxNumberInput({min:4,max:360});$("#boil_size").jqxTooltip({content:"Het volume van het wort voor het koken."});$("#boil_size").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:2,readOnly:true});$("#st_guide").jqxTooltip({content:"De bierstijl gids voor dit recept."});$("#st_guide").jqxInput({theme:theme,width:250,height:23});$("#st_name").jqxTooltip({content:"De bierstijl naam voor dit recept."});$("#st_name").jqxInput({theme:theme,width:250,height:23});$("#st_letter").jqxTooltip({content:"De bierstijl letter voor dit recept."});$("#st_letter").jqxInput({theme:theme,width:90,height:23});$("#st_type").jqxTooltip({content:"Het bierstijl type."});$("#st_type").jqxInput({theme:theme,width:250,height:23});$("#st_category").jqxTooltip({content:"De Amerikaanse bierstijl categorie."});$("#st_category").jqxInput({theme:theme,width:250,height:23});$("#st_category_number").jqxTooltip({content:"De Amerikaanse bierstijl categorie sub nummer."});$("#st_category_number").jqxNumberInput(Smal0dec);$("#est_og").jqxTooltip({content:"Het begin SG wat je wilt bereiken. De moutstort wordt automatisch herberekend."});$("#est_og").jqxNumberInput(SGopts);$("#st_og_min").jqxTooltip({content:"Het minimum begin SG voor deze bierstijl."});$("#st_og_min").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:3,readOnly:true});$("#st_og_max").jqxTooltip({content:"Het maximum begin SG voor deze bierstijl."});$("#st_og_max").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:3,readOnly:true});$("#est_fg").jqxTooltip({content:"Het verwachte eind SG. Dit wordt automatisch berekend."});$("#est_fg").jqxNumberInput(Show3dec);$("#st_fg_min").jqxTooltip({content:"Het minimum eind SG voor deze bierstijl."});$("#st_fg_min").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:3,readOnly:true});$("#st_fg_max").jqxTooltip({content:"Het maximum eind SG voor deze bierstijl."});$("#st_fg_max").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:3,readOnly:true});$("#est_abv").jqxTooltip({content:"Alcohol volume %. Dit wordt automatisch berekend."});$("#est_abv").jqxNumberInput(Smal1dec);$("#st_abv_min").jqxTooltip({content:"Het minimum alcohol volume % voor deze bierstijl."});$("#st_abv_min").jqxNumberInput(Smal1dec);$("#st_abv_max").jqxTooltip({content:"Het maximum alcohol volume % voor deze bierstijl."});$("#st_abv_max").jqxNumberInput(Smal1dec);$("#est_color").jqxTooltip({content:"De kleur in EBC. Dit wordt automatisch berekend."});$("#est_color").jqxNumberInput(Show0dec);$("#st_color_min").jqxTooltip({content:"De minimum kleur voor deze bierstijl."});$("#st_color_min").jqxNumberInput(Smal0dec);$("#st_color_max").jqxTooltip({content:"De maximum kleur voor deze bierstijl."});$("#st_color_max").jqxNumberInput(Smal0dec);$("#color_method").jqxDropDownList({theme:theme,source:ColorMethodAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#est_ibu").jqxTooltip({content:"De bitterheid in IBU. Dit wordt automatisch berekend."});$("#est_ibu").jqxNumberInput(Show0dec);$("#st_ibu_min").jqxTooltip({content:"De minimum bitterheid voor deze bierstijl."});$("#st_ibu_min").jqxNumberInput(Smal0dec);$("#st_ibu_max").jqxTooltip({content:"De maximum bitterheid voor deze bierstijl."});$("#st_ibu_max").jqxNumberInput(Smal0dec);$("#ibu_method").jqxDropDownList({theme:theme,source:IBUmethodAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true,dropDownVerticalAlignment:"top"});$("#kcal").jqxTooltip({content:"Energie-inhoud in kcal/liter."});$("#kcal").jqxNumberInput(Smal0dec);$("#est_carb").jqxTooltip({content:"Koolzuur volume. Dit wordt automatisch berekend."});$("#est_carb").jqxNumberInput(Smal1dec);$("#st_carb_min").jqxTooltip({content:"Het minimum koolzuur volume voor deze bierstijl."});$("#st_carb_min").jqxNumberInput(Smal1dec);$("#st_carb_max").jqxTooltip({content:"Het maximum koolzuur volume voor deze bierstijl."});$("#st_carb_max").jqxNumberInput(Smal1dec);$("#eq_name").jqxTooltip({content:"De naam van deze brouw apparatuur."});$("#eq_name").jqxInput({theme:theme,width:250,height:23});$("#eq_boil_size").jqxTooltip({content:"Normaal kook volume in liters"});$("#eq_boil_size").jqxNumberInput(Show1dec);$("#eq_batch_size").jqxTooltip({content:"Berekende batch grootte in liters aan het eind van de kook."});$("#eq_batch_size").jqxNumberInput(Show1dec);$("#eq_tun_volume").jqxTooltip({content:"Maisch ketel volume."});$("#eq_tun_volume").jqxNumberInput(Show1dec);$("#eq_top_up_water").jqxTooltip({content:"Extra water in het gistvat."});$("#eq_top_up_water").jqxNumberInput(Show1dec);$("#eq_trub_chiller_loss").jqxTooltip({content:"Standaard verlies bij het overbrengen naar het gistvat."});$("#eq_trub_chiller_loss").jqxNumberInput(Show1dec);$("#eq_evap_rate").jqxTooltip({content:"Verdamping in liters per uur."});$("#eq_evap_rate").jqxNumberInput(Show2dec);$("#eq_boil_time").jqxTooltip({content:"Normale kooktijd in minuten."});$("#eq_boil_time").jqxNumberInput(Show0dec);$("#eq_top_up_kettle").jqxTooltip({content:"Extra water toevoegen tijdens de kook."});$("#eq_top_up_kettle").jqxNumberInput(Show1dec);$("#eq_hop_utilization").jqxTooltip({content:"100% voor kleine installaties, hoger voor grote brouwerijen."});$("#eq_hop_utilization").jqxNumberInput(Show0dec);$("#eq_notes").jqxTooltip({content:"Opmerkingen over deze apparatuur."});$("#eq_notes").jqxInput({theme:theme,width:960,height:200});$("#eq_lauter_volume").jqxTooltip({content:"Filterkuip volume."});$("#eq_lauter_volume").jqxNumberInput(Show1dec);$("#eq_lauter_deadspace").jqxTooltip({content:"Filterkuip verlies in liters."});$("#eq_lauter_deadspace").jqxNumberInput(Show1dec);$("#eq_kettle_volume").jqxTooltip({content:"Kook ketel volume in liters."});$("#eq_kettle_volume").jqxNumberInput(Show1dec);$("#eq_mash_volume").jqxTooltip({content:"Maisch water voor de eerste stap."});$("#eq_mash_volume").jqxNumberInput(Show1dec);$("#eq_mash_max").jqxTooltip({content:"De maximale moutstort in Kg."});$("#eq_mash_max").jqxNumberInput(Show1dec);$("#eq_efficiency").jqxTooltip({content:"Gemiddeld brouwzaal rendement."});$("#eq_efficiency").jqxNumberInput(Show1dec);$("#est_color2").jqxTooltip({content:"De kleur in EBC. Dit wordt automatisch berekend."});$("#est_color2").jqxNumberInput(Show0dec);$("#est_og2").jqxTooltip({content:"Het geschatte begin SG van dit product."});$("#est_og2").jqxNumberInput(Show3dec);$("#mash_kg").jqxTooltip({content:"Het gewicht van alle mouten in de maisch."});$("#mash_kg").jqxNumberInput(Show3dec);$("#perc_malts").jqxProgressBar({width:300,height:23,theme:theme,showText:true,max:120,animationDuration:0,colorRanges:[{stop:90,color:"#008C00"},{stop:100,color:"#EB7331"},{stop:120,color:"#FF0000"}],renderText:function(i){return(Math.round(parseInt(i)*1.2))+"%"}});$("#perc_sugars").jqxProgressBar({width:300,height:23,theme:theme,showText:true,max:50,animationDuration:0,colorRanges:[{stop:20,color:"#008C00"},{stop:50,color:"#FF0000"}],renderText:function(i){return(Math.round(parseInt(i)*5)/10)+"%"}});$("#perc_cara").jqxProgressBar({width:300,height:23,theme:theme,showText:true,max:50,animationDuration:0,colorRanges:[{stop:25,color:"#008C00"},{stop:50,color:"#FF0000"}],renderText:function(i){return(Math.round(parseInt(i)*5)/10)+"%"}});$("#ferm_lintner").jqxProgressBar({width:300,height:23,theme:theme,showText:true,max:200,animationDuration:0,colorRanges:[{stop:30,color:"#FF0000"},{stop:40,color:"#EB7331"},{stop:200,color:"#008C00"}],renderText:function(i){return(parseInt(i)*2)+" lintner"}});$("#popupFermentable").jqxWindow({width:800,height:300,position:{x:230,y:100},resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#FermentableReady"),modalOpacity:0.4});$("#FermentableReady").jqxButton({template:"success",width:"90px",theme:theme});$("#FermentableReady").click(function(){var a3,i=$("#fermentableGrid").jqxGrid("getrowid",u);console.log("FermentableReady row:"+u+" ID:"+i);a3={f_name:aL.f_name,f_origin:aL.f_origin,f_supplier:aL.f_supplier,f_amount:aL.f_amount,f_cost:aL.f_cost,f_type:aL.f_type,f_yield:aL.f_yield,f_color:aL.f_color,f_coarse_fine_diff:aL.f_coarse_fine_diff,f_moisture:aL.f_moisture,f_diastatic_power:aL.f_diastatic_power,f_protein:aL.f_protein,f_max_in_batch:aL.f_max_in_batch,f_graintype:aL.f_graintype,f_added:aL.f_added,f_dissolved_protein:aL.f_dissolved_protein,f_recommend_mash:aL.f_recommend_mash,f_add_after_boil:aL.f_add_after_boil,f_adjust_to_total_100:aL.f_adjust_to_total_100,f_percentage:aL.f_percentage,f_di_ph:aL.f_di_ph,f_acid_to_ph_57:aL.f_acid_to_ph_57,f_inventory:aL.f_inventory,f_avail:aL.f_avail};$("#fermentableGrid").jqxGrid("updaterow",i,a3);aW();U();at();aO()});$("#wf_name").jqxInput({theme:theme,width:320,height:23});$("#wf_instock").jqxCheckBox({theme:theme,height:23});$("#wf_instock").on("change",function(i){fermentableinstock=i.args.checked;fermentablelist.dataBind()});$("#wf_select").jqxDropDownList({placeHolder:"Kies mout:",theme:theme,source:fermentablelist,displayMember:"name",width:150,height:23,dropDownWidth:500,dropDownHeight:500,renderer:function(a3,i,a5){var a4=fermentablelist.records[a3];return a4.supplier+" / "+a4.name+" ("+a4.color+" EBC)"}});$("#wf_select").on("select",function(a4){if(a4.args){var a3,i=a4.args.index;a3=fermentablelist.records[i];$("#wf_name").val(a3.name);aL.f_name=a3.name;aL.f_origin=a3.origin;aL.f_supplier=a3.supplier;aL.f_type=a3.type;aL.f_cost=a3.cost;aL.f_yield=a3.yield;aL.f_color=a3.color;aL.f_coarse_fine_diff=a3.coarse_fine_diff;aL.f_moisture=a3.moisture;aL.f_diastatic_power=a3.diastatic_power;aL.f_protein=a3.protein;aL.f_max_in_batch=a3.max_in_batch;aL.f_graintype=a3.graintype;aL.f_dissolved_protein=a3.dissolved_protein;aL.f_recommend_mash=a3.recommend_mash;aL.f_add_after_boil=a3.add_after_boil;aL.f_di_ph=a3.di_ph;aL.f_acid_to_ph_57=a3.acid_to_ph_57;aL.f_inventory=a3.inventory}});$("#wf_amount").jqxNumberInput(Spin3dec);$("#wf_amount").on("change",function(i){console.log("amount changed: "+i.args.value);$("#fermentableGrid").jqxGrid("setcellvalue",u,"f_amount",i.args.value);aL.f_amount=i.args.value;if(!l){aW();U();at();aO()}});$("#wf_percentage").jqxNumberInput(Perc1dec);$("#wf_percentage").on("change",function(a3){var a5,a9,bb,ba,a6,a8,i,a7,bc,a4=Math.round(aL.f_percentage*10)/10;a5=a3.args.value;console.log("percentage changed: "+a5+" old: "+a4);aL.f_percent=a5;a9=$("#fermentableGrid").jqxGrid("getdatainformation").rowscount;if((a4!=a5)&&(a9>1)){bb=$("#fermentableGrid").jqxGrid("getrowdata",u);if(bb.f_adjust_to_total_100){$("#wf_percentage").val(a4)}else{ba=a5-a4;a6=0;for(ae=0;aeparseFloat($("#boil_time").jqxNumberInput("decimal"))){a3=parseFloat($("#boil_time").jqxNumberInput("decimal"));$("#wh_time").val(a3)}e.h_time=a3}else{if(e.h_useat==4){if(a3>120){a3=120;$("#wh_time").val(a3)}e.h_time=a3}else{if(e.h_useat==5){if(a3>21){a3=21;$("#wh_time").val(a3)}e.h_time=a3*1440}}}a4=toIBU(e.h_useat,e.h_form,al,parseFloat($("#batch_size").jqxNumberInput("decimal")),parseFloat(e.h_amount),parseFloat(e.h_time),parseFloat(e.h_alpha),$("#ibu_method").val());$("#wh_ibu").val(a4)});$("#wh_useat").jqxDropDownList({theme:theme,source:HopUseAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true,dropDownVerticalAlignment:"top"});$("#wh_useat").on("select",function(a3){if(a3.args){var i=a3.args.index;e.h_useat=i;if((i==0)||(i==1)){e.h_time=parseFloat(d.boil_time);$("#wh_time").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#wh_time").val(e.h_time)}else{if(i==3){e.h_time=0;$("#wh_time").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#wh_time").val(0)}else{$("#wh_time").jqxNumberInput({spinButtons:true,readOnly:false,width:110})}}if(i==5){$("#wh_pmpt_time").html("Tijd in dagen")}else{$("#wh_pmpt_time").html("Tijd in minuten")}}});$("#popupMisc").jqxWindow({width:800,height:275,position:{x:230,y:100},resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#MiscReady"),modalOpacity:0.4});$("#MiscReady").jqxButton({template:"success",width:"90px",theme:theme});$("#MiscReady").click(function(){var a3,i=$("#miscGrid").jqxGrid("getrowid",aw);console.log("MiscReady row:"+aw+" ID:"+i);a3={m_name:aH.m_name,m_amount:aH.m_amount,m_cost:aH.m_cost,m_type:aH.m_type,m_use_use:aH.m_use_use,m_time:aH.m_time,m_amount_is_weight:aH.m_amount_is_weight,m_inventory:aH.m_inventory,m_avail:aH.m_avail};$("#miscGrid").jqxGrid("updaterow",i,a3);aG()});$("#wm_name").jqxInput({theme:theme,width:320,height:23});$("#wm_instock").jqxCheckBox({theme:theme,height:23});$("#wm_instock").on("change",function(i){miscinstock=i.args.checked;misclist.dataBind()});$("#wm_select").jqxDropDownList({placeHolder:"Kies ingrediënt:",theme:theme,source:misclist,displayMember:"name",width:150,height:23,dropDownWidth:500,dropDownHeight:500});$("#wm_select").on("select",function(a4){if(a4.args){var a3,i=a4.args.index;a3=misclist.records[i];$("#wm_name").val(a3.name);aH.m_name=a3.name;aH.m_cost=a3.cost;aH.m_type=a3.type;aH.m_use_use=a3.use_use;aH.m_amount_is_weight=a3.amount_is_weight;aH.m_inventory=a3.inventory}});$("#wm_amount").jqxNumberInput(Spin2dec);$("#wm_amount").on("change",function(i){console.log("amount changed: "+i.args.value);aH.m_amount=parseFloat(i.args.value)/1000});$("#wm_time").jqxNumberInput(PosInt);$("#wm_time").on("change",function(i){var a3=parseFloat(i.args.value);if(aH.m_use_use==2){if(a3>parseFloat($("#boil_time").jqxNumberInput("decimal"))){a3=parseFloat($("#boil_time").jqxNumberInput("decimal"));$("#wm_time").val(a3)}aH.m_time=a3}else{if((aH.m_use_use==3)||(aH.m_use_use==4)){if(a3>21){a3=21;$("#wm_time").val(a3)}aH.m_time=a3*1440}}});$("#wm_use_use").jqxDropDownList({theme:theme,source:MiscUseAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true,dropDownVerticalAlignment:"top"});$("#wm_use_use").on("select",function(a3){if(a3.args){var i=a3.args.index;aH.m_use_use=i;if((i==2)||(i==3)||(i==4)){$("#wm_time").jqxNumberInput({spinButtons:true,readOnly:false,width:110})}else{$("#wm_time").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#wm_time").val(0);aH.m_time=0}}});$("#est_fg2").jqxTooltip({content:"Het verwachte eind SG. Dit wordt automatisch berekend."});$("#est_fg2").jqxNumberInput(Show3dec);$("#est_abv2").jqxTooltip({content:"Alcohol volume %. Dit wordt automatisch berekend."});$("#est_abv2").jqxNumberInput(Smal1dec);$("#yeast_cells").jqxNumberInput(Show1dec);$("#need_cells").jqxNumberInput(Show1dec);$("#plato_cells").jqxNumberInput(Show2dec);$("#popupYeast").jqxWindow({width:800,height:300,position:{x:230,y:100},resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#YeastReady"),modalOpacity:0.4});$("#YeastReady").jqxButton({template:"success",width:"90px",theme:theme});$("#YeastReady").click(function(){var a3,i=$("#yeastGrid").jqxGrid("getrowid",aE);console.log("YeastReady row:"+aE+" ID:"+i);a3={y_name:f.y_name,y_laboratory:f.y_laboratory,y_product_id:f.y_product_id,y_amount:f.y_amount,y_cost:f.y_cost,y_type:f.y_type,y_form:f.y_form,y_flocculation:f.y_flocculation,y_min_temperature:f.y_min_temperature,y_max_temperature:f.y_max_temperature,y_attenuation:f.y_attenuation,y_use:f.y_use,y_cells:f.y_cells,y_tolerance:f.y_tolerance,y_inventory:f.y_inventory,y_avail:f.y_avail};$("#yeastGrid").jqxGrid("updaterow",i,a3);U();Y()});$("#wy_name").jqxInput({theme:theme,width:320,height:23});$("#wy_laboratory").jqxInput({theme:theme,width:320,height:23});$("#wy_product_id").jqxInput({theme:theme,width:320,height:23});$("#wy_instock").jqxCheckBox({theme:theme,height:23});$("#wy_instock").on("change",function(i){yeastinstock=i.args.checked;yeastlist.dataBind()});$("#wy_select").jqxDropDownList({placeHolder:"Kies gist:",theme:theme,source:yeastlist,displayMember:"name",width:150,height:23,dropDownWidth:500,dropDownHeight:500,renderer:function(a3,i,a5){var a4=yeastlist.records[a3];return a4.laboratory+" "+a4.product_id+" "+a4.name}});$("#wy_select").on("select",function(a4){if(a4.args){var a3,i=a4.args.index;a3=yeastlist.records[i];$("#wy_name").val(a3.name);$("#wy_laboratory").val(a3.laboratory);$("#wy_product_id").val(a3.product_id);f.y_name=a3.name;f.y_cost=a3.cost;f.y_type=a3.type;f.y_form=a3.form;f.y_laboratory=a3.laboratory;f.y_product_id=a3.product_id;f.y_min_temperature=a3.min_temperature;f.y_max_temperature=a3.max_temperature;f.y_flocculation=a3.flocculation;f.y_attenuation=a3.attenuation;f.y_cells=a3.cells;f.y_inventory=a3.inventory;if(f.y_form==0){$("#wy_pmpt_amount").html("Pak(ken):")}else{if(f.y_form==1){$("#wy_pmpt_amount").html("Gewicht gram:")}else{$("#wy_pmpt_amount").html("Volume ml:")}}U();Y()}});$("#wy_amount").jqxNumberInput(Spin1dec);$("#wy_amount").on("change",function(a3){var i=parseFloat(a3.args.value);if(f.y_form!=0){i=parseFloat(a3.args.value)/1000}f.y_amount=i;U();Y()});$("#wy_use").jqxDropDownList({theme:theme,source:YeastUseAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true,dropDownVerticalAlignment:"top"});$("#wy_use").on("select",function(a3){if(a3.args){var i=a3.args.index;f.y_use=i;U();Y()}});for(ae=1;ae<5;ae++){$("#prop"+ae+"_type").jqxDropDownList({theme:theme,source:StarterTypeAdapter,valueMember:"id",displayMember:"nl",width:120,height:23,autoDropDownHeight:true});$("#prop"+ae+"_type").hide();$("#prop"+ae+"_volume").jqxNumberInput(Spin3dec);$("#prop"+ae+"_volume").hide();$("#prop"+ae+"_irate").jqxNumberInput(Show1dec);$("#prop"+ae+"_irate").hide();$("#prop"+ae+"_ncells").jqxNumberInput(Show1dec);$("#prop"+ae+"_ncells").hide();$("#prop"+ae+"_tcells").jqxNumberInput(Show1dec);$("#prop"+ae+"_tcells").hide();$("#prop"+ae+"_growf").jqxNumberInput(Show2dec);$("#prop"+ae+"_growf").hide()}$("#starter_enable").jqxCheckBox({theme:theme,height:23});$("#starter_type").jqxDropDownList({theme:theme,source:StarterTypeAdapter,valueMember:"id",displayMember:"nl",width:120,height:23,autoDropDownHeight:true});$("#starter_sg").jqxNumberInput(SGopts);$("#starter_viability").jqxNumberInput(Perc0);$("#starter_try").jqxButton({template:"primary",width:"100px",height:23,theme:theme});$("#mash_name").jqxTooltip({content:"De omschrijving van dit maisch profiel."});$("#mash_name").jqxInput({theme:theme,width:320,height:23});$("#mash_select").jqxDropDownList({placeHolder:"Kies schema:",theme:theme,source:mashlist,displayMember:"name",width:250,height:23,dropDownWidth:500,dropDownHeight:500,dropDownHorizontalAlignment:"right"});$("#mash_select").on("select",function(a7){if(a7.args){var a9,a6,a3,a8,a5,ba,a4=a7.args.index;a3=new Array();a8=$("#mashGrid").jqxGrid("getdisplayrows");for(a5=0;a50){C=d.w1_amount}if(a5==0){ba.step_infuse_amount=C}else{ba.step_infuse_amount=0}if(ap>0){ba.step_thickness=parseFloat(C/ap)}else{ba.step_thickness=0}ba.step_temp=a9.step_temp;ba.end_temp=a9.end_temp;ba.step_time=a9.step_time;ba.ramp_time=a9.ramp_time;$("#mashGrid").jqxGrid("addrow",null,ba)}aO()}});$("#est_mashvol").jqxTooltip({content:"Het totale volume van het maishwater en de mout in de maish pan."});$("#est_mashvol").jqxNumberInput(Show1dec);$("#est_mashtime").jqxTooltip({content:"De totale tijdsduur van het maischen."});$("#est_mashtime").jqxInput({theme:theme,width:70,height:23});$("#popupMash").jqxWindow({width:800,height:350,position:{x:230,y:100},resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#MashReady"),modalOpacity:0.4});$("#MashReady").jqxButton({template:"success",width:"90px",theme:theme});$("#MashReady").click(function(){aO()});$("#wstep_name").jqxInput({theme:theme,width:320,height:23});$("#wstep_name").on("change",function(i){var a3=$("#mashGrid").jqxGrid("getrowdata",ak);a3.step_name=i.args.value});$("#wstep_type").jqxDropDownList({theme:theme,source:MashStepTypeAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#wstep_type").on("select",function(a5){if(a5.args){var a8,a4,a6,a7,a3=a5.args.index;a8=$("#mashGrid").jqxGrid("getrowdata",ak);a8.step_type=a3;if(a3==0){$("#wstep_infuse_amount").show();$("#wstep_pmpt").show()}else{a8.step_infuse_amount=0;$("#wstep_infuse_amount").hide();$("#wstep_pmpt").hide()}C=0;a6=$("#mashGrid").jqxGrid("getrows");for(a4=0;a4=0){a9=$("#fermentableGrid").jqxGrid("getrowid",a6);$("#fermentableGrid").jqxGrid("updaterow",a9,ba)}else{$("#fermentableGrid").jqxGrid("addrow",null,ba)}aS()}});$("#keg_priming_sugar").jqxDropDownList({placeHolder:"Kies suiker:",theme:theme,source:fermentablesugars,displayMember:"name",width:200,height:23,dropDownWidth:300,dropDownHeight:400});$("#keg_priming_sugar").on("select",function(a7){if(a7.args){var a9,a3,a6=-1,a5,a8,a4,ba={};a3=a7.args.index;a5=fermentablesugars.records[a3];a8=$("#fermentableGrid").jqxGrid("getrows");for(a4=0;a4=0){a9=$("#fermentableGrid").jqxGrid("getrowid",a6);$("#fermentableGrid").jqxGrid("updaterow",a9,ba)}else{$("#fermentableGrid").jqxGrid("addrow",null,ba)}aS()}});$("#bottle_priming_amount").jqxNumberInput(Show1dec);$("#bottle_priming_water").jqxTooltip({content:"De hoeveelheid water om de suiker op te lossen."});$("#bottle_priming_water").jqxNumberInput(Spin3dec);$("#keg_priming_amount").jqxNumberInput(Show1dec);$("#keg_priming_water").jqxTooltip({content:"De hoeveelheid water om de suiker op te lossen."});$("#keg_priming_water").jqxNumberInput(Spin3dec);$("#bottle_priming_total").jqxNumberInput(Show1dec);$("#bottle_pressure").jqxTooltip({content:"De maximaal te verwachten druk tijdens het hergisten."});$("#bottle_pressure").jqxNumberInput(Show1dec);$("#keg_priming_total").jqxNumberInput(Show1dec);$("#keg_forced_carb").jqxCheckBox({theme:theme,width:120,height:23});$("#keg_pressure").jqxNumberInput(Show1dec);$("#bottle_abv").jqxNumberInput(Show2dec);$("#keg_abv").jqxNumberInput(Show2dec);$("#bottle_carbonation_temp").jqxNumberInput(YeastT);$("#keg_carbonation_temp").jqxNumberInput(YeastT);$("#taste_date").jqxTooltip({content:"De proef datum van dit bier."});$("#taste_date").jqxDateTimeInput(Dateopts);$("#taste_date").on("close",function(i){aV()});$("#taste_rate").jqxTooltip({content:"Het cijfer voor dit bier van 1 tot 10."});$("#taste_rate").jqxNumberInput(Spin1dec);$("#taste_rate").jqxNumberInput({max:10});$("#taste_color").jqxTooltip({content:"De kleur van het bier."});$("#taste_color").jqxInput({theme:theme,width:320,height:23});$("#taste_transparency").jqxTooltip({content:"De helderheid van het bier."});$("#taste_transparency").jqxInput({theme:theme,width:320,height:23});$("#taste_head").jqxTooltip({content:"Het schuim op het bier."});$("#taste_head").jqxInput({theme:theme,width:320,height:23});$("#taste_aroma").jqxTooltip({content:"Het aroma van het bier."});$("#taste_aroma").jqxInput({theme:theme,width:960,height:23});$("#taste_taste").jqxTooltip({content:"De smaak van het bier."});$("#taste_taste").jqxInput({theme:theme,width:960,height:23});$("#taste_aftertaste").jqxTooltip({content:"De nasmaak van het bier."});$("#taste_aftertaste").jqxInput({theme:theme,width:960,height:23});$("#taste_mouthfeel").jqxTooltip({content:"Het mondgevoelvan het bier."});$("#taste_mouthfeel").jqxInput({theme:theme,width:960,height:23});$("#taste_notes").jqxTooltip({content:"Het oordeel en opmerkingen over dit bier."});$("#taste_notes").jqxInput({theme:theme,width:960,height:100});$("#jqxTabs").jqxTabs({theme:theme,width:1280,height:660,autoHeight:false,position:"top"});$("#Export").jqxButton({template:"info",width:"80px",theme:theme});$("#Export").bind("click",function(){s(0)});$("#Delete").jqxButton({template:"danger",width:"80px",theme:theme});$("#Delete").bind("click",function(){$("#eventWindow").jqxWindow("open");$("#delOk").click(function(){var i="delete=true&"+$.param({uuid:d.uuid});$.ajax({dataType:"json",url:E,cache:false,data:i,type:"POST",success:function(a4,a3,a5){window.location.href=my_return},error:function(a3,a5,a4){}})})});$("#Cancel").jqxButton({template:"primary",width:"80px",theme:theme});$("#Cancel").bind("click",function(){window.location.href=my_return});$("#Save").jqxButton({template:"success",width:"80px",theme:theme});$("#Save").bind("click",function(){s(1)});createDelElements()}); \ No newline at end of file +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({template:"danger",width:"65px",theme:theme});$("#delCancel").jqxButton({template:"success",width:"65px",theme:theme});$("#delCancel").focus()}});$("#eventWindow").jqxWindow("hide")}$(document).ready(function(){var ae,l=false,al=0,aZ=0,a1=0,I=0,ac=0,aD=77,ap=0,x=0.75,aa=0,p=1,ab=1,ai=1,P=1,c=1,aY=0,V=0,C=0,aU="",ag="",A=40.048,aq=24.305,ad=22.98976928,q=35.453,aI=96.0626,r=61.01684,an=172.171,T=147.015,g=100.087,aK=246.475,aF=84.007,y=105.996,b=58.443,aJ=74.06268,u=0,aL={},B=1,a=0,e={},aw=0,aH={},aE=0,f={},ak=0,D={},aA=4.445e-7,ay=4.68e-11,d={},E="includes/db_product.php",H=0.87,aR={datatype:"json",cache:false,datafields:[{name:"record",type:"number"},{name:"uuid",type:"string"},{name:"name",type:"string"},{name:"code",type:"string"},{name:"birth",type:"string"},{name:"stage",type:"int"},{name:"notes",type:"string"},{name:"log_brew",type:"int"},{name:"log_fermentation",type:"int"},{name:"inventory_reduced",type:"int"},{name:"locked",type:"int"},{name:"eq_name",type:"string"},{name:"eq_boil_size",type:"float"},{name:"eq_batch_size",type:"float"},{name:"eq_tun_volume",type:"float"},{name:"eq_tun_weight",type:"float"},{name:"eq_tun_specific_heat",type:"float"},{name:"eq_tun_material",type:"int"},{name:"eq_tun_height",type:"float"},{name:"eq_top_up_water",type:"float"},{name:"eq_trub_chiller_loss",type:"float"},{name:"eq_evap_rate",type:"float"},{name:"eq_boil_time",type:"float"},{name:"eq_calc_boil_volume",type:"int"},{name:"eq_top_up_kettle",type:"float"},{name:"eq_hop_utilization",type:"float"},{name:"eq_notes",type:"string"},{name:"eq_lauter_volume",type:"float"},{name:"eq_lauter_height",type:"float"},{name:"eq_lauter_deadspace",type:"float"},{name:"eq_kettle_volume",type:"float"},{name:"eq_kettle_height",type:"float"},{name:"eq_mash_volume",type:"float"},{name:"eq_mash_max",type:"float"},{name:"eq_efficiency",type:"float"},{name:"brew_date_start",type:"string"},{name:"brew_mash_ph",type:"float"},{name:"brew_mash_sg",type:"float"},{name:"brew_mash_efficiency",type:"float"},{name:"brew_sparge_est",type:"float"},{name:"brew_sparge_ph",type:"float"},{name:"brew_preboil_volume",type:"float"},{name:"brew_preboil_sg",type:"float"},{name:"brew_preboil_ph",type:"float"},{name:"brew_preboil_efficiency",type:"float"},{name:"brew_aboil_volume",type:"float"},{name:"brew_aboil_sg",type:"float"},{name:"brew_aboil_ph",type:"float"},{name:"brew_aboil_efficiency",type:"float"},{name:"brew_cooling_method",type:"int"},{name:"brew_cooling_time",type:"float"},{name:"brew_cooling_to",type:"float"},{name:"brew_whirlpool9",type:"float"},{name:"brew_whirlpool7",type:"float"},{name:"brew_whirlpool6",type:"float"},{name:"brew_whirlpool2",type:"float"},{name:"brew_fermenter_volume",type:"float"},{name:"brew_fermenter_extrawater",type:"float"},{name:"brew_fermenter_tcloss",type:"float"},{name:"brew_aeration_time",type:"float"},{name:"brew_aeration_speed",type:"float"},{name:"brew_aeration_type",type:"int"},{name:"brew_fermenter_sg",type:"float"},{name:"brew_fermenter_ibu",type:"float"},{name:"brew_fermenter_color",type:"float"},{name:"brew_date_end",type:"string"},{name:"og",type:"float"},{name:"fg",type:"float"},{name:"primary_start_temp",type:"float"},{name:"primary_max_temp",type:"float"},{name:"primary_end_temp",type:"float"},{name:"primary_end_sg",type:"float"},{name:"primary_end_date",type:"string"},{name:"secondary_temp",type:"float"},{name:"secondary_end_sg",type:"float"},{name:"secondary_end_date",type:"string"},{name:"tertiary_temp",type:"float"},{name:"package_date",type:"string"},{name:"package_volume",type:"float"},{name:"package_infuse_amount",type:"float"},{name:"package_infuse_abv",type:"float"},{name:"package_infuse_notes",type:"string"},{name:"package_abv",type:"float"},{name:"package_ph",type:"float"},{name:"bottle_amount",type:"float"},{name:"bottle_carbonation",type:"float"},{name:"bottle_priming_water",type:"float"},{name:"bottle_priming_amount",type:"float"},{name:"bottle_carbonation_temp",type:"float"},{name:"keg_amount",type:"float"},{name:"keg_carbonation",type:"float"},{name:"keg_priming_water",type:"float"},{name:"keg_priming_amount",type:"float"},{name:"keg_carbonation_temp",type:"float"},{name:"keg_forced_carb",type:"int"},{name:"keg_pressure",type:"float"},{name:"taste_notes",type:"string"},{name:"taste_rate",type:"float"},{name:"taste_date",type:"string"},{name:"taste_color",type:"string"},{name:"taste_transparency",type:"string"},{name:"taste_head",type:"string"},{name:"taste_aroma",type:"string"},{name:"taste_taste",type:"string"},{name:"taste_mouthfeel",type:"string"},{name:"taste_aftertaste",type:"string"},{name:"st_name",type:"string"},{name:"st_letter",type:"string"},{name:"st_guide",type:"string"},{name:"st_category",type:"string"},{name:"st_category_number",type:"float"},{name:"st_type",type:"int"},{name:"st_og_min",type:"float"},{name:"st_og_max",type:"float"},{name:"st_fg_min",type:"float"},{name:"st_fg_max",type:"float"},{name:"st_ibu_min",type:"float"},{name:"st_ibu_max",type:"float"},{name:"st_color_min",type:"float"},{name:"st_color_max",type:"float"},{name:"st_carb_min",type:"float"},{name:"st_carb_max",type:"float"},{name:"st_abv_min",type:"float"},{name:"st_abv_max",type:"float"},{name:"type",type:"int"},{name:"batch_size",type:"float"},{name:"boil_size",type:"float"},{name:"boil_time",type:"float"},{name:"efficiency",type:"float"},{name:"est_og",type:"float"},{name:"est_fg",type:"float"},{name:"est_abv",type:"float"},{name:"est_color",type:"float"},{name:"color_method",type:"int"},{name:"est_ibu",type:"float"},{name:"ibu_method",type:"int"},{name:"est_carb",type:"float"},{name:"sparge_temp",type:"float"},{name:"sparge_ph",type:"float"},{name:"sparge_volume",type:"float"},{name:"sparge_source",type:"int"},{name:"sparge_acid_type",type:"int"},{name:"sparge_acid_perc",type:"float"},{name:"sparge_acid_amount",type:"float"},{name:"mash_ph",type:"float"},{name:"mash_name",type:"string"},{name:"calc_acid",type:"int"},{name:"w1_name",type:"string"},{name:"w1_amount",type:"float"},{name:"w1_calcium",type:"float"},{name:"w1_sulfate",type:"float"},{name:"w1_chloride",type:"float"},{name:"w1_sodium",type:"float"},{name:"w1_magnesium",type:"float"},{name:"w1_total_alkalinity",type:"float"},{name:"w1_ph",type:"float"},{name:"w1_cost",type:"float"},{name:"w2_name",type:"string"},{name:"w2_amount",type:"float"},{name:"w2_calcium",type:"float"},{name:"w2_sulfate",type:"float"},{name:"w2_chloride",type:"float"},{name:"w2_sodium",type:"float"},{name:"w2_magnesium",type:"float"},{name:"w2_total_alkalinity",type:"float"},{name:"w2_ph",type:"float"},{name:"w2_cost",type:"float"},{name:"wg_amount",type:"float"},{name:"wg_calcium",type:"float"},{name:"wg_sulfate",type:"float"},{name:"wg_chloride",type:"float"},{name:"wg_sodium",type:"float"},{name:"wg_magnesium",type:"float"},{name:"wg_total_alkalinity",type:"float"},{name:"wg_ph",type:"float"},{name:"wb_calcium",type:"float"},{name:"wb_sulfate",type:"float"},{name:"wb_chloride",type:"float"},{name:"wb_sodium",type:"float"},{name:"wb_magnesium",type:"float"},{name:"wb_total_alkalinity",type:"float"},{name:"wb_ph",type:"float"},{name:"wa_acid_name",type:"int"},{name:"wa_acid_perc",type:"int"},{name:"wa_base_name",type:"int"},{name:"starter_enable",type:"int"},{name:"starter_type",type:"int"},{name:"starter_sg",type:"float"},{name:"starter_viability",type:"int"},{name:"prop1_type",type:"int"},{name:"prop1_volume",type:"float"},{name:"prop2_type",type:"int"},{name:"prop2_volume",type:"float"},{name:"prop3_type",type:"int"},{name:"prop3_volume",type:"float"},{name:"prop4_type",type:"int"},{name:"prop4_volume",type:"float"},{name:"divide_type",type:"int"},{name:"divide_size",type:"float"},{name:"divide_parts",type:"int"},{name:"fermentables",type:"array"},{name:"hops",type:"array"},{name:"miscs",type:"array"},{name:"yeasts",type:"array"},{name:"mashs",type:"array"}],id:"record",url:E+"?record="+my_record},ah=new $.jqx.dataAdapter(aR,{loadComplete:function(){var i=ah.records;d=i[0];$("#name").val(d.name);$("#code").val(d.code);$("#birth").val(d.birth);$("#stage").val(StageData[d.stage].nl);$("#notes").val(d.notes);$("#locked").val(d.locked);$("#eq_name").val(d.eq_name);$("#eq_notes").val(d.eq_notes);$("#eq_boil_size").val(d.eq_boil_size);$("#eq_batch_size").val(d.eq_batch_size);$("#eq_tun_volume").val(d.eq_tun_volume);$("#eq_top_up_water").val(d.eq_top_up_water);$("#eq_trub_chiller_loss").val(d.eq_trub_chiller_loss);$("#eq_evap_rate").val(d.eq_evap_rate);$("#eq_boil_time").val(d.eq_boil_time);$("#eq_top_up_kettle").val(d.eq_top_up_kettle);$("#eq_hop_utilization").val(d.eq_hop_utilization);$("#eq_lauter_volume").val(d.eq_lauter_volume);$("#eq_lauter_deadspace").val(d.eq_lauter_deadspace);$("#eq_kettle_volume").val(d.eq_kettle_volume);$("#eq_mash_volume").val(d.eq_mash_volume);$("#eq_mash_max").val(d.eq_mash_max);$("#eq_efficiency").val(d.eq_efficiency);$("#brew_date_start").val(d.brew_date_start);$("#brew_mash_ph").val(d.brew_mash_ph);$("#brew_mash_sg").val(d.brew_mash_sg);$("#brew_mash_efficiency").val(d.brew_mash_efficiency);$("#brew_sparge_temperature").val(d.sparge_temp);$("#brew_sparge_volume").val(d.sparge_volume);$("#brew_sparge_est").val(d.brew_sparge_est);$("#brew_sparge_ph").val(d.brew_sparge_ph);$("#brew_aeration_type").val(d.brew_aeration_type);$("#brew_aeration_time").val(d.brew_aeration_time);$("#brew_aeration_speed").val(d.brew_aeration_speed);$("#brew_preboil_ph").val(d.brew_preboil_ph);$("#brew_preboil_sg").val(d.brew_preboil_sg);$("#brew_preboil_volume").val(d.brew_preboil_volume);$("#brew_preboil_efficiency").val(d.brew_preboil_efficiency);$("#brew_whirlpool9").val(d.brew_whirlpool9);$("#brew_whirlpool7").val(d.brew_whirlpool7);$("#brew_whirlpool6").val(d.brew_whirlpool6);$("#brew_whirlpool2").val(d.brew_whirlpool2);$("#brew_fermenter_volume").val(d.brew_fermenter_volume);$("#brew_fermenter_sg").val(d.brew_fermenter_sg);$("#brew_fermenter_sg2").val(d.brew_fermenter_sg);$("#brew_fermenter_ibu").val(d.brew_fermenter_ibu);$("#brew_fermenter_color").val(d.brew_fermenter_color);$("#brew_fermenter_extrawater").val(d.brew_fermenter_extrawater);$("#brew_fermenter_tcloss").val(d.brew_fermenter_tcloss);$("#brew_aboil_ph").val(d.brew_aboil_ph);$("#brew_aboil_sg").val(d.brew_aboil_sg);$("#brew_aboil_volume").val(d.brew_aboil_volume);$("#brew_aboil_efficiency").val(d.brew_aboil_efficiency);$("#brew_cooling_to").val(d.brew_cooling_to);$("#brew_cooling_method").val(d.brew_cooling_method);$("#brew_cooling_time").val(d.brew_cooling_time);$("#brew_date_end").val(d.brew_date_end);$("#og").val(d.og);$("#fg").val(d.fg);$("#primary_start_temp").val(d.primary_start_temp);$("#primary_max_temp").val(d.primary_max_temp);$("#primary_end_temp").val(d.primary_end_temp);$("#primary_end_sg").val(d.primary_end_sg);$("#primary_end_date").val(d.primary_end_date);$("#secondary_temp").val(d.secondary_temp);$("#secondary_end_sg").val(d.secondary_end_sg);$("#secondary_end_date").val(d.secondary_end_date);$("#tertiary_temp").val(d.tertiary_temp);$("#package_date").val(d.package_date);$("#package_volume").val(d.package_volume);$("#package_infuse_amount").val(d.package_infuse_amount);$("#package_infuse_abv").val(d.package_infuse_abv);$("#package_infuse_notes").val(d.package_infuse_notes);$("#package_abv").val(d.package_abv);$("#package_ph").val(d.package_ph);$("#bottle_amount").val(d.bottle_amount);$("#bottle_carbonation").val(d.bottle_carbonation);$("#bottle_priming_water").val(d.bottle_priming_water);$("#bottle_priming_amount").val(d.bottle_priming_amount);$("#bottle_carbonation_temp").val(d.bottle_carbonation_temp);$("#keg_amount").val(d.keg_amount);$("#keg_carbonation").val(d.keg_carbonation);$("#keg_priming_water").val(d.keg_priming_water);$("#keg_priming_amount").val(d.keg_priming_amount);$("#keg_carbonation_temp").val(d.keg_carbonation_temp);$("#keg_forced_carb").val(d.keg_forced_carb);$("#keg_pressure").val(d.keg_pressure);$("#taste_notes").val(d.taste_notes);$("#taste_rate").val(d.taste_rate);$("#taste_date").val(d.taste_date);$("#taste_color").val(d.taste_color);$("#taste_transparency").val(d.taste_transparency);$("#taste_head").val(d.taste_head);$("#taste_aroma").val(d.taste_aroma);$("#taste_taste").val(d.taste_taste);$("#taste_mouthfeel").val(d.taste_mouthfeel);$("#taste_aftertaste").val(d.taste_aftertaste);$("#st_name").val(d.st_name);$("#st_letter").val(d.st_letter);$("#st_guide").val(d.st_guide);$("#st_category").val(d.st_category);$("#st_category_number").val(d.st_category_number);$("#st_type").val(StyleTypeData[d.st_type].nl);$("#st_og_min").val(d.st_og_min);$("#st_og_max").val(d.st_og_max);$("#st_fg_min").val(d.st_fg_min);$("#st_fg_max").val(d.st_fg_max);$("#st_abv_min").val(d.st_abv_min);$("#st_abv_max").val(d.st_abv_max);$("#st_color_min").val(d.st_color_min);$("#st_color_max").val(d.st_color_max);$("#st_ibu_min").val(d.st_ibu_min);$("#st_ibu_max").val(d.st_ibu_max);$("#st_carb_min").val(d.st_carb_min);$("#st_carb_min2").val(d.st_carb_min);$("#st_carb_max").val(d.st_carb_max);$("#st_carb_max2").val(d.st_carb_max);$("#type").val(d.type);$("#batch_size").val(d.batch_size);$("#est_a_vol").val(d.batch_size*1.04);$("#boil_size").val(d.boil_size);$("#est_pre_vol").val(d.boil_size*1.04);$("#boil_time").val(d.boil_time);$("#efficiency").val(d.efficiency);$("#est_og").val(d.est_og);$("#est_og2").val(d.est_og);$("#est_og3").val(0);$("#est_fg").val(d.est_fg);$("#est_fg2").val(d.est_fg);$("#est_fg3").val(d.est_fg);$("#est_color").val(d.est_color);$("#est_color2").val(d.est_color);$("#est_abv").val(d.est_abv);$("#color_method").val(d.color_method);$("#est_ibu").val(d.est_ibu);$("#est_ibu2").val(d.est_ibu);$("#ibu_method").val(d.ibu_method);$("#est_carb").val(d.est_carb);$("#mash_name").val(d.mash_name);$("#mash_ph").val(d.mash_ph);$("#sparge_temp").val(d.sparge_temp);$("#sparge_ph").val(d.sparge_ph);$("#sparge_volume").val(d.sparge_volume);$("#sparge_source").val(d.sparge_source);$("#sparge_acid_type").val(d.sparge_acid_type);$("#sparge_acid_perc").val(d.sparge_acid_perc);$("#sparge_acid_amount").val(d.sparge_acid_amount*1000);$("#calc_acid").val(d.calc_acid);$("#w1_name").val(d.w1_name);$("#w1_amount").val(d.w1_amount);$("#w1_calcium").val(d.w1_calcium);$("#w1_sulfate").val(d.w1_sulfate);$("#w1_chloride").val(d.w1_chloride);$("#w1_sodium").val(d.w1_sodium);$("#w1_magnesium").val(d.w1_magnesium);$("#w1_total_alkalinity").val(d.w1_total_alkalinity);$("#w1_ph").val(d.w1_ph);$("#w1_cost").val(d.w1_cost);$("#w2_name").val(d.w2_name);$("#w2_amount").val(d.w2_amount);$("#w2_calcium").val(d.w2_calcium);$("#w2_sulfate").val(d.w2_sulfate);$("#w2_chloride").val(d.w2_chloride);$("#w2_sodium").val(d.w2_sodium);$("#w2_magnesium").val(d.w2_magnesium);$("#w2_total_alkalinity").val(d.w2_total_alkalinity);$("#w2_ph").val(d.w2_ph);$("#w2_cost").val(d.w2_cost);$("#wg_amount").val(d.wg_amount);$("#wg_calcium").val(d.wg_calcium);$("#wg_sulfate").val(d.wg_sulfate);$("#wg_chloride").val(d.wg_chloride);$("#wg_sodium").val(d.wg_sodium);$("#wg_magnesium").val(d.wg_magnesium);$("#wg_total_alkalinity").val(d.wg_total_alkalinity);$("#wg_ph").val(d.wg_ph);$("#wb_calcium").val(d.wb_calcium);$("#wb_sulfate").val(d.wb_sulfate);$("#wb_chloride").val(d.wb_chloride);$("#wb_sodium").val(d.wb_sodium);$("#wb_magnesium").val(d.wb_magnesium);$("#wb_total_alkalinity").val(d.wb_total_alkalinity);$("#wb_ph").val(d.wb_ph);$("#wa_acid_name").val(d.wa_acid_name);$("#wa_acid_perc").val(d.wa_acid_perc);$("#wa_base_name").val(d.wa_base_name);$("#starter_enable").val(d.starter_enable);$("#starter_type").val(d.starter_type);$("#starter_sg").val(d.starter_sg);$("#starter_viability").val(d.starter_viability);$("#prop1_type").val(d.prop1_type);$("#prop1_volume").val(d.prop1_volume);$("#prop2_type").val(d.prop2_type);$("#prop2_volume").val(d.prop2_volume);$("#prop3_type").val(d.prop3_type);$("#prop3_volume").val(d.prop3_volume);$("#prop4_type").val(d.prop4_type);$("#prop4_volume").val(d.prop4_volume);$("#divide_type").val(SplitData[d.divide_type].nl);$("#divide_parts").val(d.divide_parts);n(d);aT(d);X(d);aM(d);av(d);aV();$("#jqxTabs").jqxTabs("select",2)},loadError:function(a4,i,a3){},beforeLoadComplete:function(i){$("#jqxLoader").jqxLoader("open")}});var n=function(a3){var i={localdata:a3.fermentables,datatype:"local",cache:false,async:false,datafields:[{name:"f_name",type:"string"},{name:"f_origin",type:"string"},{name:"f_supplier",type:"string"},{name:"f_amount",type:"float"},{name:"f_cost",type:"float"},{name:"f_type",type:"int"},{name:"f_yield",type:"float"},{name:"f_color",type:"float"},{name:"f_coarse_fine_diff",type:"float"},{name:"f_moisture",type:"float"},{name:"f_diastatic_power",type:"float"},{name:"f_protein",type:"float"},{name:"f_max_in_batch",type:"float"},{name:"f_graintype",type:"int"},{name:"f_added",type:"int"},{name:"f_dissolved_protein",type:"float"},{name:"f_recommend_mash",type:"int"},{name:"f_add_after_boil",type:"int"},{name:"f_adjust_to_total_100",type:"int"},{name:"f_percentage",type:"float"},{name:"f_di_ph",type:"float"},{name:"f_acid_to_ph_57",type:"float"},{name:"f_inventory",type:"float"},{name:"f_avail",type:"int"}],addrow:function(a6,a8,a5,a7){a7(true)},deleterow:function(a5,a6){a6(true)},updaterow:function(a5,a7,a6){a6(true)}},a4=new $.jqx.dataAdapter(i);$("#fermentableGrid").jqxGrid({width:1240,height:470,source:a4,theme:theme,selectionmode:"singlerow",showtoolbar:true,rendertoolbar:function(a6){var a5=$("
      ");a6.append(a5);a5.append('
      ');a5.append('
      In voorraad:
      ');a5.append('
      ');a5.append('');$("#faddrowbutton").jqxDropDownList({placeHolder:"Kies mout:",theme:theme,template:"primary",source:fermentablelist,displayMember:"name",disabled:(d.stage>3),width:150,height:27,dropDownWidth:500,dropDownHeight:500,renderer:function(a8,a7,ba){var a9=fermentablelist.records[a8];return a9.supplier+" / "+a9.name+" ("+a9.color+" EBC)"}});$("#faddrowbutton").on("select",function(a9){if(a9.args){var a7,a8,ba={},bb=$("#fermentableGrid").jqxGrid("getdatainformation").rowscount;a7=a9.args.index;a8=fermentablelist.records[a7];ba.f_name=a8.name;ba.f_origin=a8.origin;ba.f_supplier=a8.supplier;ba.f_amount=0;ba.f_cost=a8.cost;ba.f_type=a8.type;ba.f_yield=a8.yield;ba.f_color=a8.color;ba.f_coarse_fine_diff=a8.coarse_fine_diff;ba.f_moisture=a8.moisture;ba.f_diastatic_power=a8.diastatic_power;ba.f_protein=a8.protein;ba.f_max_in_batch=a8.max_in_batch;ba.f_graintype=a8.graintype;if(a8.add_after_boil){ba.f_added=2}else{if((a8.type==1)||(a8.type==4)){ba.f_added=1}else{ba.f_added=0}}ba.f_dissolved_protein=a8.dissolved_protein;ba.f_recommend_mash=a8.recommend_mash;ba.f_add_after_boil=a8.add_after_boil;if(bb==0){ba.f_adjust_to_total_100=1;ba.f_percentage=100}else{ba.f_adjust_to_total_100=0;ba.f_percentage=0}ba.f_di_ph=a8.di_ph;ba.f_acid_to_ph_57=a8.acid_to_ph_57;ba.f_inventory=a8.inventory;$("#fermentableGrid").jqxGrid("addrow",null,ba)}});$("#finstockbutton").jqxCheckBox({theme:theme,height:27,disabled:(d.stage>3)});$("#finstockbutton").on("change",function(a7){fermentableinstock=a7.args.checked;fermentablelist.dataBind()});$("#fdeleterowbutton").jqxButton({template:"danger",theme:theme,height:27,width:150,disabled:(d.stage>3)});$("#fdeleterowbutton").on("click",function(){var bd,bc,ba,a9,a8,bb,a7=$("#fermentableGrid").jqxGrid("getselectedrowindex");bd=$("#fermentableGrid").jqxGrid("getdatainformation").rowscount;if(a7>=0&&a71){if(l){for(a8=0;a8'+ba.f_supplier+" / "+ba.f_name+" ("+ba.f_color+" EBC)"}},{text:"Type",width:100,datafield:"f_type",cellsrenderer:function(a6,a5,a9,a8,a7,ba){return''+FermentableTypeData[a9].nl+""}},{text:"Moment",width:110,datafield:"f_added",cellsrenderer:function(a6,a5,a9,a8,a7,ba){return''+AddedData[a9].nl+""}},{text:"Maxinbatch",datafield:"f_max_in_batch",hidden:true},{text:"Opbrengst",datafield:"f_yield",width:90,align:"right",cellsalign:"right",cellsformat:"p1"},{text:"Gewicht Kg",datafield:"f_amount",width:120,align:"right",cellsalign:"right",cellsformat:"f3"},{text:"Voorraad Kg",datafield:"f_inventory",width:120,align:"right",cellsrenderer:function(a9,a7,a8,a5,bb,ba){var a6="#ffffff";if(((d.inventory_reduced<=2)&&(ba.f_added<=1))||((d.inventory_reduced<=3)&&(ba.f_added==2))||((d.inventory_reduced<=5)&&(ba.f_added==3))||((d.inventory_reduced<=6)&&(ba.f_added==4))||((d.inventory_reduced<=6)&&(ba.f_added==5))){if(a8'+a4.formatNumber(a8,"f3")+""}else{return""}}},{text:"Procent",datafield:"f_percentage",width:90,align:"right",cellsrenderer:function(a9,a7,a8,a5,bb,ba){if(ba.f_added>=4){return""}var a6="#ffffff";if(a8>ba.f_max_in_batch){a6="#ff4040"}return''+a4.formatNumber(a8,"p1")+""}},{text:"100%",datafield:"f_adjust_to_total_100",width:70,align:"center",cellsalign:"center",cellsrenderer:function(a6,a5,a9,a8,a7,ba){if(a9==0){return""}return''}},{text:"",datafield:"Edit",columntype:"button",width:100,align:"center",cellsrenderer:function(){return"Wijzig"},buttonclick:function(a5){u=a5;aL=$("#fermentableGrid").jqxGrid("getrowdata",u);if(aL.f_added>=4){alert("Wijzig dit in de Verpakken tab")}else{if(d.stage>3){alert("Ingredieënt is al verwerkt.")}else{$("#wf_name").val(aL.f_name);$("#wf_amount").val(aL.f_amount);$("#wf_percentage").val(aL.f_percentage);$("#wf_max_in_batch").val(aL.f_max_in_batch);$("#wf_adjust_to_total_100").val(aL.f_adjust_to_total_100);$("#wf_added").val(aL.f_added);$("#popupFermentable").jqxWindow("open")}}}}]})},aT=function(i){var a4={localdata:i.hops,datatype:"local",cache:false,async:false,datafields:[{name:"h_name",type:"string"},{name:"h_origin",type:"string"},{name:"h_amount",type:"float"},{name:"h_cost",type:"float"},{name:"h_type",type:"int"},{name:"h_form",type:"int"},{name:"h_useat",type:"int"},{name:"h_time",type:"float"},{name:"h_alpha",type:"float"},{name:"h_beta",type:"float"},{name:"h_hsi",type:"float"},{name:"h_humulene",type:"float"},{name:"h_caryophyllene",type:"float"},{name:"h_cohumulone",type:"float"},{name:"h_myrcene",type:"float"},{name:"h_total_oil",type:"float"},{name:"h_inventory",type:"float"},{name:"h_avail",type:"int"}],addrow:function(a6,a8,a5,a7){console.log("hop addrow "+a6);a7(true)},deleterow:function(a5,a6){console.log("hop deleterow "+a5);a6(true)},updaterow:function(a5,a7,a6){console.log("hop updaterow "+a5);a6(true)}},a3=new $.jqx.dataAdapter(a4);$("#hopGrid").jqxGrid({width:1240,height:560,source:a3,theme:theme,selectionmode:"singlerow",showtoolbar:true,rendertoolbar:function(a6){var a5=$("
      ");a6.append(a5);a5.append('
      ');a5.append('
      In voorraad:
      ');a5.append('
      ');a5.append('');$("#haddrowbutton").jqxDropDownList({placeHolder:"Kies hop:",theme:theme,template:"primary",source:hoplist,disabled:(d.stage>3),displayMember:"name",width:150,height:27,dropDownWidth:500,dropDownHeight:500,renderer:function(a8,a7,ba){var a9=hoplist.records[a8];return a9.origin+" - "+a9.name+" / "+HopFormData[a9.form].nl+" ("+a9.alpha+"% α)"}});$("#haddrowbutton").on("select",function(a9){if(a9.args){var a8,ba={},a7=a9.args.index;a8=hoplist.records[a7];ba.h_name=a8.name;ba.h_origin=a8.origin;ba.h_amount=0;ba.h_cost=a8.cost;ba.h_type=a8.type;ba.h_form=a8.form;ba.h_useat=2;ba.h_time=0;ba.h_alpha=a8.alpha;ba.h_beta=a8.beta;ba.h_hsi=a8.hsi;ba.h_humulene=a8.humulene;ba.h_caryophyllene=a8.caryophyllene;ba.h_cohumulone=a8.cohumulone;ba.h_myrcene=a8.myrcene;ba.h_total_oil=a8.total_oil;ba.h_inventory=a8.inventory;$("#hopGrid").jqxGrid("addrow",null,ba)}$("#haddrowbutton").jqxDropDownList("clearSelection")});$("#hinstockbutton").jqxCheckBox({theme:theme,height:27,disabled:(d.stage>3)});$("#hinstockbutton").on("change",function(a7){hopinstock=a7.args.checked;hoplist.dataBind()});$("#hdeleterowbutton").jqxButton({template:"danger",theme:theme,height:27,width:150,disabled:(d.stage>3)});$("#hdeleterowbutton").on("click",function(){var a9,a8,a7=$("#hopGrid").jqxGrid("getselectedrowindex");a9=$("#hopGrid").jqxGrid("getdatainformation").rowscount;if(a7>=0&&a7'+ba.h_origin+" / "+ba.h_name+""},},{text:"Type",width:90,datafield:"h_type",cellsrenderer:function(a6,a5,a9,a8,a7,ba){return''+HopTypeData[a9].nl+""}},{text:"Vorm",width:90,datafield:"h_form",cellsrenderer:function(a6,a5,a9,a8,a7,ba){return''+HopFormData[a9].nl+""}},{text:"Alpha",datafield:"h_alpha",width:80,align:"right",cellsalign:"right",cellsformat:"p1"},{text:"Gebruik",width:110,datafield:"h_useat",cellsrenderer:function(a6,a5,a9,a8,a7,ba){return''+HopUseData[a9].nl+""}},{text:"Tijdsduur",datafield:"h_time",width:90,align:"right",cellsrenderer:function(a6,a5,a9,a8,a7,bb){var ba="";if((bb.h_useat==2)||(bb.h_useat==4)){ba=ah.formatNumber(a9,"f0")+" min."}else{if(bb.h_useat==5){ba=ah.formatNumber(a9/1440,"f0")+" dagen"}}return''+ba+""}},{text:"IBU",datafield:"ibu",width:80,align:"right",cellsrenderer:function(a6,a5,a9,a8,a7,bb){var ba=toIBU(bb.h_useat,bb.h_form,al,parseFloat($("#batch_size").jqxNumberInput("decimal")),parseFloat(bb.h_amount),parseFloat(bb.h_time),parseFloat(bb.h_alpha),$("#ibu_method").val());return''+ah.formatNumber(ba,"f1")+""}},{text:"Gewicht",datafield:"h_amount",width:110,align:"right",cellsrenderer:function(a6,a5,ba,a9,a8,bb){var a7=ah.formatNumber(ba,"f1")+" kg";if(ba<1){a7=ah.formatNumber(ba*1000,"f1")+" gr"}return''+a7+""}},{text:"Voorraad",datafield:"h_inventory",width:110,align:"right",cellsrenderer:function(a7,a6,bb,ba,a9,bc){if(((d.inventory_reduced<=2)&&(bc.h_useat<=4))||((d.inventory_reduced<=6)&&(bc.h_useat==5))){var a8,a5="#ffffff";if(bb'+a8+""}else{return""}}},{text:"",datafield:"Edit",columntype:"button",width:100,align:"center",cellsrenderer:function(){return"Wijzig"},buttonclick:function(a5){if(d.stage>3){alert("Ingredieënt is al verwerkt.")}else{console.log("edit button row "+a5);a=a5;e=$("#hopGrid").jqxGrid("getrowdata",a);$("#wh_name").val(e.h_name);$("#wh_amount").val(e.h_amount*1000);var a6=toIBU(e.h_useat,e.h_form,al,parseFloat($("#batch_size").jqxNumberInput("decimal")),parseFloat(e.h_amount),parseFloat(e.h_time),parseFloat(e.h_alpha),$("#ibu_method").val());$("#wh_ibu").val(a6);if(e.h_useat==5){$("#wh_time").val(e.h_time/1440)}else{$("#wh_time").val(e.h_time)}$("#wh_useat").val(e.h_useat);$("#popupHop").jqxWindow("open")}}}]})},X=function(a4){var a3={localdata:a4.miscs,datatype:"local",cache:false,async:false,datafields:[{name:"m_name",type:"string"},{name:"m_amount",type:"float"},{name:"m_cost",type:"float"},{name:"m_type",type:"int"},{name:"m_use_use",type:"int"},{name:"m_time",type:"float"},{name:"m_amount_is_weight",type:"int"},{name:"m_inventory",type:"float"},{name:"m_avail",type:"int"}],addrow:function(a6,a8,a5,a7){console.log("misc addrow "+a6);a7(true)},deleterow:function(a5,a6){console.log("misc deleterow "+a5);a6(true)},updaterow:function(a5,a7,a6){console.log("misc updaterow "+a5);a6(true)}},i=new $.jqx.dataAdapter(a3,{beforeLoadComplete:function(a5){var a8,a6,a7=new Array();for(a6=0;a6");a6.append(a5);a5.append('
      ');a5.append('
      In voorraad:
      ');a5.append('
      ');a5.append('');$("#maddrowbutton").jqxDropDownList({placeHolder:"Kies ingrediënt:",theme:theme,template:"primary",source:misclist,disabled:(d.stage>3),displayMember:"name",width:150,height:27,dropDownWidth:500,dropDownHeight:500});$("#maddrowbutton").on("select",function(a9){if(a9.args){var a8,ba={},a7=a9.args.index;a8=misclist.records[a7];ba.m_name=a8.name;ba.m_amount=0;ba.m_cost=a8.cost;ba.m_type=a8.type;ba.m_use_use=a8.use_use;ba.m_time=0;ba.m_amount_is_weight=a8.amount_is_weight;ba.m_inventory=a8.inventory;$("#miscGrid").jqxGrid("addrow",null,ba)}});$("#minstockbutton").jqxCheckBox({theme:theme,height:27,disabled:(d.stage>3)});$("#minstockbutton").on("change",function(a7){miscinstock=a7.args.checked;misclist.dataBind()});$("#mdeleterowbutton").jqxButton({template:"danger",theme:theme,height:27,width:150,disabled:(d.stage>3)});$("#mdeleterowbutton").on("click",function(){var ba,a8,a9,a7=$("#miscGrid").jqxGrid("getselectedrowindex");ba=$("#miscGrid").jqxGrid("getdatainformation").rowscount;a8=$("#miscGrid").jqxGrid("getcellvalue",a7,"m_type");if(a7>=0&&a7'+MiscTypeData[a9].nl+""}},{text:"Gebruik",width:140,datafield:"m_use_use",cellsrenderer:function(a6,a5,a9,a8,a7,ba){return''+MiscUseData[a9].nl+""}},{text:"Tijd",datafield:"m_time",width:90,align:"right",cellsrenderer:function(a6,a5,a9,a8,a7,bb){var ba="";if(bb.m_use_use==2){ba=ah.formatNumber(a9,"f0")+" min."}else{if((bb.m_use_use==3)||(bb.m_use_use==4)){ba=ah.formatNumber(a9/1440,"f0")+" dagen"}}return''+ba+""}},{text:"Hoeveel",datafield:"m_amount",width:110,align:"right",cellsrenderer:function(a6,a5,ba,a8,a7,bb){var a9=bb.m_amount_is_weight?"gr":"ml";return''+ah.formatNumber(ba*1000,"f2")+" "+a9+""}},{text:"Voorraad",datafield:"m_inventory",width:110,align:"right",cellsrenderer:function(a9,a5,ba,bc,a6,bd){var bb,a7,a8;if(((d.inventory_reduced<=2)&&(bd.m_use_use<=2))||((d.inventory_reduced<=3)&&(bd.m_use_use==3))||((d.inventory_reduced<=5)&&(bd.m_use_use==4))||((d.inventory_reduced<=6)&&(bd.m_use_use==5))){bb=bd.m_amount_is_weight?"gr":"ml";a7="#ffffff";if(ba'+a8+""}else{return""}}},{text:"",datafield:"Edit",columntype:"button",width:100,align:"center",cellsrenderer:function(){return"Wijzig"},buttonclick:function(a5){aw=a5;aH=$("#miscGrid").jqxGrid("getrowdata",aw);if(d.stage>3){alert("Ingredieënt is al verwerkt.")}else{if(aH.m_type==4){alert("Brouwzouten wijzigen in de water tab.")}else{console.log("edit button row "+a5);if(aH.m_amount_is_weight){$("#wm_pmpt_amount").html("Gewicht gram:")}else{$("#wm_pmpt_amount").html("Volume ml:")}$("#wm_name").val(aH.m_name);$("#wm_amount").val(aH.m_amount*1000);if((aH.m_use_use==3)||(aH.m_use_use==4)){$("#wm_time").val(aH.m_time/1440)}else{$("#wm_time").val(aH.m_time)}$("#wm_use_use").val(aH.m_use_use);$("#popupMisc").jqxWindow("open")}}}}]})},aM=function(a3){var i={localdata:a3.yeasts,datatype:"local",cache:false,async:false,datafields:[{name:"y_name",type:"string"},{name:"y_laboratory",type:"string"},{name:"y_product_id",type:"string"},{name:"y_amount",type:"float"},{name:"y_cost",type:"float"},{name:"y_type",type:"int"},{name:"y_form",type:"int"},{name:"y_flocculation",type:"int"},{name:"y_min_temperature",type:"float"},{name:"y_max_temperature",type:"float"},{name:"y_attenuation",type:"float"},{name:"y_use",type:"int"},{name:"y_cells",type:"float"},{name:"y_tolerance",type:"float"},{name:"y_inventory",type:"float"},{name:"y_avail",type:"int"}],addrow:function(a6,a8,a5,a7){console.log("yeast addrow "+a6);a7(true)},deleterow:function(a5,a6){console.log("yeast deleterow "+a5);a6(true)},updaterow:function(a5,a7,a6){console.log("yeast updaterow "+a5);a6(true)}},a4=new $.jqx.dataAdapter(i);$("#yeastGrid").jqxGrid({width:1240,height:350,source:a4,theme:theme,selectionmode:"singlerow",showtoolbar:true,rendertoolbar:function(a6){var a5=$('
      ');a6.append(a5);a5.append('
      ');a5.append('
      In voorraad:
      ');a5.append('
      ');a5.append('');$("#yaddrowbutton").jqxDropDownList({placeHolder:"Kies gist:",theme:theme,source:yeastlist,disabled:(d.stage>3),template:"primary",displayMember:"name",width:150,height:27,dropDownWidth:500,dropDownHeight:500,renderer:function(a8,a7,ba){var a9=yeastlist.records[a8];return a9.laboratory+" "+a9.product_id+" "+a9.name}});$("#yaddrowbutton").on("select",function(a9){if(a9.args){var a8,ba={},a7=a9.args.index;a8=yeastlist.records[a7];ba.y_name=a8.name;ba.y_laboratory=a8.laboratory;ba.y_product_id=a8.product_id;ba.y_type=a8.type;ba.y_form=a8.form;ba.y_amount=0;ba.y_cost=a8.cost;ba.y_use=0;ba.y_min_temperature=a8.min_temperature;ba.y_max_temperature=a8.max_temperature;ba.y_attenuation=a8.attenuation;ba.y_flocculation=a8.flocculation;ba.y_cells=a8.cells;ba.y_tolerance=a8.tolerance;ba.y_inventory=a8.inventory;$("#yeastGrid").jqxGrid("addrow",null,ba)}Y();$("#yaddrowbutton").jqxDropDownList("clearSelection")});$("#yinstockbutton").jqxCheckBox({theme:theme,height:27,disabled:(d.stage>3)});$("#yinstockbutton").on("change",function(a7){yeastinstock=a7.args.checked;yeastlist.dataBind()});$("#ydeleterowbutton").jqxButton({template:"danger",theme:theme,height:27,width:150,disabled:(d.stage>3)});$("#ydeleterowbutton").on("click",function(){var a9,a8,a7=$("#yeastGrid").jqxGrid("getselectedrowindex");a8=$("#yeastGrid").jqxGrid("getdatainformation").rowscount;if(a7>=0&&a7'+YeastFormData[a9].nl+""}},{text:"Min. °C",width:70,align:"right",cellsalign:"right",datafield:"y_min_temperature"},{text:"Max. °C",width:70,align:"right",cellsalign:"right",datafield:"y_max_temperature"},{text:"Tol. %",width:60,align:"right",cellsalign:"right",datafield:"y_tolerance",cellsrenderer:function(a7,a6,bb,ba,a9,bc){var a8="",a5="#ffffff";if(bb>0){a8=ah.formatNumber(bb,"f1");if(d.est_abv>bb){a5="#ff4040"}}return''+a8+""}},{text:"Attn. %",width:70,align:"right",cellsalign:"right",datafield:"y_attenuation",cellsformat:"f1"},{text:"Voor",width:120,datafield:"y_use",cellsrenderer:function(a6,a5,a9,a8,a7,ba){return''+YeastUseData[a9].nl+""}},{text:"Hoeveel",datafield:"y_amount",width:90,align:"right",cellsrenderer:function(a6,a5,ba,a9,a8,bb){var a7=ah.formatNumber(ba*1000,"f0")+" ml";if(bb.y_form==0){a7=ah.formatNumber(ba,"f0")+" pk"}else{if(bb.y_form==1||bb.y_form==6){a7=ah.formatNumber(ba*1000,"f1")+" gr"}}return''+a7+""}},{text:"Voorraad",datafield:"y_inventory",width:90,align:"right",cellsrenderer:function(a7,a6,bb,ba,a9,bc){var a5,a8;if(((d.inventory_reduced<=3)&&(bc.y_use==0))||((d.inventory_reduced<=4)&&(bc.y_use==1))||((d.inventory_reduced<=5)&&(bc.y_use==2))||((d.inventory_reduced<=6)&&(bc.y_use==3))){a5="#ffffff";if(bb'+a8+""}else{return""}}},{text:"",datafield:"Edit",columntype:"button",width:90,align:"center",cellsrenderer:function(){return"Wijzig"},buttonclick:function(a5){if(d.stage>3){alert("Ingredieënt is al verwerkt.")}else{aE=a5;f=$("#yeastGrid").jqxGrid("getrowdata",aE);if(f.y_form==0){$("#wy_pmpt_amount").html("Pak(ken):");$("#wy_amount").val(f.y_amount);$("#wy_amount").jqxNumberInput({decimalDigits:0})}else{if(f.y_form==1||f.y_form==6){$("#wy_pmpt_amount").html("Gewicht gram:");$("#wy_amount").val(f.y_amount*1000);$("#wy_amount").jqxNumberInput({decimalDigits:1})}else{$("#wy_pmpt_amount").html("Volume ml:");$("#wy_amount").val(f.y_amount*1000);$("#wy_amount").jqxNumberInput({decimalDigits:0})}}$("#wy_name").val(f.y_name);$("#wy_laboratory").val(f.y_laboratory);$("#wy_product_id").val(f.y_product_id);$("#wy_use").val(f.y_use);$("#popupYeast").jqxWindow("open")}}}]})},av=function(a4){var a3={localdata:a4.mashs,datatype:"local",cache:false,async:false,datafields:[{name:"step_name",type:"string"},{name:"step_type",type:"int"},{name:"step_infuse_amount",type:"float"},{name:"step_temp",type:"float"},{name:"step_time",type:"float"},{name:"step_thickness",type:"float"},{name:"ramp_time",type:"float"},{name:"end_temp",type:"float"}],addrow:function(a6,a8,a5,a7){console.log("mash addrow "+a6);a7(true)},deleterow:function(a5,a6){console.log("mash deleterow "+a5);a6(true)}},i=new $.jqx.dataAdapter(a3,{beforeLoadComplete:function(a5){C=0;var a6,a8,a7=new Array();for(a6=0;a6');a6.append(a5);a5.append('');a5.append('');$("#saddrowbutton").jqxButton({template:"primary",theme:theme,height:27,width:150,disabled:(d.stage>3)});$("#saddrowbutton").on("click",function(){var a7={},a8=$("#mashGrid").jqxGrid("getdatainformation").rowscount;a7.step_name="Stap "+(a8+1);if(a8>0){a7.step_type=1}else{a7.step_type=0;a7.step_infuse_amount=15}a7.step_temp=62;a7.step_time=20;a7.step_thickness=0;a7.ramp_time=1;a7.end_temp=62;$("#mashGrid").jqxGrid("addrow",null,a7)});$("#sdeleterowbutton").jqxButton({template:"danger",theme:theme,height:27,width:150,disabled:(d.stage>3)});$("#sdeleterowbutton").on("click",function(){var a9,a8,a7=$("#mashGrid").jqxGrid("getselectedrowindex");a9=$("#mashGrid").jqxGrid("getdatainformation").rowscount;if(a7>=0&&a7'+MashStepTypeData[a9].nl+""}},{text:"Start °C",datafield:"step_temp",width:90,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Eind °C",datafield:"end_temp",width:90,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Rust min.",datafield:"step_time",width:90,align:"right",cellsalign:"right"},{text:"Stap min.",datafield:"ramp_time",width:90,align:"right",cellsalign:"right"},{text:"Infuse L.",datafield:"step_infuse_amount",width:90,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"L/Kg.",datafield:"step_thickness",width:90,align:"right",cellsalign:"right",cellsformat:"f2"},{text:"",datafield:"Edit",columntype:"button",width:100,align:"center",cellsrenderer:function(){return"Wijzig"},buttonclick:function(a5){if(d.stage>3){alert("Het maichen is al gedaan.")}else{ak=a5;D=$("#mashGrid").jqxGrid("getrowdata",ak);$("#wstep_name").val(D.step_name);$("#wstep_type").val(D.step_type);$("#wstep_infuse_amount").val(D.step_infuse_amount);$("#wstep_temp").val(D.step_temp);$("#wend_temp").val(D.end_temp);$("#wstep_time").val(D.step_time);$("#wramp_time").val(D.ramp_time);if(D.step_type==0){$("#wstep_infuse_amount").show();$("#wstep_pmpt").show()}else{$("#wstep_infuse_amount").hide();$("#wstep_pmpt").hide()}$("#popupMash").jqxWindow("open")}}}]})};$("#jqxMenu").jqxMenu("destroy");console.log("record:"+my_record+" return:"+my_return+" theme:"+theme);$("#jqxLoader").jqxLoader({width:250,height:150,isModal:true,text:"Laden product ...",theme:theme});function G(){if(d.inventory_reduced>6){$("#ok_pmpt").hide();return}if(p&&ab&&ai&&P&&c){$("#ok_supplies").html("")}else{$("#ok_supplies").html("")}}function aW(){console.log("calcPercentages()");var a3=0,a5,i,a4=$("#fermentableGrid").jqxGrid("getdatainformation").rowscount;if(a4>1){for(ae=0;ae5){bp-=5}bb=Round(bb/bp,2)}if(!(be=$("#fermentableGrid").jqxGrid("getrows"))){return}for(bq=0;bq0){bC+=a9.f_amount*a9.f_moisture/100;bh+=bx}bx=parseFloat(d.efficiency)/100*bx;bt+=bx;ap+=parseFloat(a9.f_amount)}if(a9.f_added==0||a9.f_added==1){bB+=bx}if(a9.f_added==2||a9.f_added==3){bd=(a9.f_yield/100)*(1-a9.f_moisture/100);bj+=a9.f_amount*bd;bs+=a9.f_amount;br+=(bd*sugardensity+(1-bd)*1)*a9.f_amount}if(a9.f_added<4){bc+=a9.f_amount*ebc_to_srm(a9.f_color);bm+=a9.f_amount*a9.f_color*get_kt(a9.f_color);bg+=(a9.f_percentage/100)*a9.f_color}if(B){if(a9.f_added==4){$("#bottle_priming_total").val(a9.f_amount*1000);$("#bottle_priming_sugar").jqxDropDownList("selectItem",a9.f_name)}if(a9.f_added==5){$("#keg_priming_total").val(a9.f_amount*1000);$("#keg_priming_sugar").jqxDropDownList("selectItem",a9.f_name)}}if((((d.inventory_reduced<=2)&&(a9.f_added<=1))||((d.inventory_reduced<=3)&&(a9.f_added==2))||((d.inventory_reduced<=5)&&(a9.f_added==3))||((d.inventory_reduced<=6)&&(a9.f_added==4))||((d.inventory_reduced<=6)&&(a9.f_added==5)))&&a9.f_inventory0){bf=bh/sugardensity+bC;bh=1000*bh/(bf*10);a1=Round(plato_to_sg(bh),5);$("#est_mash_sg").val(a1)}d.est_og=estimate_sg(bB+bj,parseFloat(d.batch_size));$("#est_og").val(d.est_og);$("#est_og2").val(d.est_og);a3=d.est_og;aZ=estimate_sg(bB,parseFloat(d.batch_size));$("#est_og3").val(aZ);al=estimate_sg(bt,parseFloat(d.boil_size));$("#est_pre_sg").val(al);a4=parseFloat(d.batch_size);if(d.brew_aboil_volume>0){a4=d.brew_aboil_volume/1.04}if(d.brew_fermenter_tcloss==0){d.brew_fermenter_tcloss=d.eq_trub_chiller_loss;$("#brew_fermenter_tcloss").val(d.brew_fermenter_tcloss)}d.brew_fermenter_volume=a4-d.brew_fermenter_tcloss+d.brew_fermenter_extrawater;$("#brew_fermenter_volume").val(d.brew_fermenter_volume);by=(d.boil_size-C+(ap*my_grain_absorbtion)+d.eq_lauter_deadspace)*1.03;$("#brew_sparge_est").val(by);bz=d.brew_aboil_sg;if(bz<1.002){bz=aZ}a7=d.brew_fermenter_extrawater;if(d.brew_fermenter_volume>0){a6=sg_to_plato(bz)*d.brew_fermenter_volume*bz/100;a6+=bj;if((d.brew_fermenter_volume*bz+bs)>0){bl=100*a6/(d.brew_fermenter_volume*bz+bs+a7);d.brew_fermenter_sg=Round(plato_to_sg(bl),4);$("#brew_fermenter_sg").val(d.brew_fermenter_sg);if(d.color_method==4){d.brew_fermenter_color=Math.round(((bl/8.6)*bg)+(d.boil_time/60))}else{if(d.color_method==3){d.brew_fermenter_color=Math.round((4.46*bw*bo)/(a4+a7)*bm)}else{a5=bc/(a4+a7)*8.34436;d.brew_fermenter_color=kw_to_ebc(d.color_method,a5)}}$("#brew_fermenter_color").val(d.brew_fermenter_color);bu=ebc_to_color(d.brew_fermenter_color);$("#bcolorf").show();document.getElementById("bcolorf").style.background=bu}}else{d.brew_fermenter_sg=d.brew_fermenter_color=0;$("#brew_fermenter_sg").val(0);$("#brew_fermenter_color").val(0);$("#bcolorf").hide()}if(d.color_method==4){bn=Math.round(((sg_to_plato(d.est_og)/8.6)*bg)+(d.boil_time/60))}else{if(d.color_method==3){bn=Math.round((4.46*bw*bo)/parseFloat(d.batch_size)*bm)}else{a5=bc/parseFloat(d.batch_size)*8.34436;bn=kw_to_ebc(d.color_method,a5)}}d.est_color=bn;$("#est_color").val(bn);$("#est_color2").val(bn);bu=ebc_to_color(bn);document.getElementById("bcolor").style.background=bu;document.getElementById("bcolor2").style.background=bu;pmalts=ap/d.eq_mash_max*100;$("#perc_malts").jqxProgressBar("val",pmalts);$("#perc_sugars").jqxProgressBar("val",I);$("#perc_cara").jqxProgressBar("val",ac);aV();aD=0;aa=0;be=$("#yeastGrid").jqxGrid("getrows");for(bq=0;bqaD){aD=parseFloat(a9.y_attenuation)}if(a9.y_form==0){aa+=(parseFloat(a9.y_cells)/1000000000)*parseFloat(a9.y_amount)*(d.starter_viability/100)}else{aa+=(parseFloat(a9.y_cells)/1000000)*parseFloat(a9.y_amount)}}if((((d.inventory_reduced<=3)&&(a9.y_use==0))||((d.inventory_reduced<=4)&&(a9.y_use==1))||((d.inventory_reduced<=5)&&(a9.y_use==2))||((d.inventory_reduced<=6)&&(a9.y_use==3)))&&(a9.y_inventory0)&&(C>0)&&(bp>0)&&(bb>0)){d.est_fg=estimate_fg(I,ac,C/ap,bp,bb,aD,d.est_og)}else{d.est_fg=estimate_fg(I,ac,0,0,0,aD,d.est_og)}$("#est_fg").val(d.est_fg);$("#est_fg2").val(d.est_fg);$("#est_fg3").val(d.est_fg);bA=d.est_fg;d.est_abv=abvol(d.est_og,d.est_fg);$("#est_abv").val(d.est_abv);$("#est_abv2").val(d.est_abv);if((d.stage>=6)&&(d.fg>0.99)&&(d.fg0)){for(a6=0;a61){a3=d.fg}else{if(a3<=1.0001){a3=d.est_og}}i=sg_to_plato(a3);a4=d.brew_fermenter_volume;if(a4<=0){a4=d.batch_size-d.eq_trub_chiller_loss}return x*a4*i}function L(a4,a6,a3,a5){var i;if(a3==1){i=0.15}else{if(a4>50){i=0.1}else{i=15.25/(6*Math.sqrt(2*Math.PI))*Math.exp(-0.5*Math.pow((a4-21)/6,2));if(i<0.1){i=0.1}}}return(i*a5*1000)/a6}function h(a4,a6,a3,a5){var i=0;if(a3==5){i=1.33}else{if(a4>20){i=0}else{if(a4>7.5){i=10.03/(4*Math.sqrt(2*Math.PI))*Math.exp(-0.5*Math.pow((a4-7.5)/4,2))}else{if(a3==2){i=1}else{if(a3==3){i=1.2}else{if(a3==4){i=1.2}}}}}}return(i*a5*1000)/a6}function at(){var a4=0,a3=0,a6={},a5,a7;V=aY=0;if(!(a6=$("#hopGrid").jqxGrid("getrows"))){return}ab=1;for(a5=0;a5100){aY=100}if(V>100){V=100}console.log("calcIBUs(): "+a4+" flavour: "+aY+" aroma: "+V+" fermenter:"+a3+" supplies:"+ab);d.est_ibu=a4;$("#est_ibu").val(a4);$("#est_ibu2").val(a4);$("#hop_flavour").jqxProgressBar("val",aY);$("#hop_aroma").jqxProgressBar("val",V);$("#brew_fermenter_ibu").val(a3);aV();G()}function O(a4,a5,a3){var i=a5/a3;if(i>3.5){return 0}if(a4==2){return 0.4}if(a4==1){return 0.62}if(i<=1.4){return 1.4}return 2.33-(0.67*i)}function aC(a4,a9,a3){var i=2.72715,ba=a3/a4*1000,a5=Round(ba,1),a6=(d.starter_sg-1)*a4*i,a7=O(a9,a3,a6),a8=Round(a6*a7,1),bb=parseFloat(a8)+a3;return{svol:a4,irate:a5,prate:Round(ba,1),ncells:a8,totcells:bb,growf:Round(a8/a3,2)}}function F(a9,a3,ba){var a8=[20,40,60,80,100,150,200,250,375,500,625,750,875,1000,1250,1500,2000,2500,3000,4000,5000],a4=a8.length,a5=0,a6=0,bb={},a7;if((parseFloat($("#prop1_volume").jqxNumberInput("decimal"))+parseFloat($("#prop2_volume").jqxNumberInput("decimal"))+parseFloat($("#prop3_volume").jqxNumberInput("decimal"))+parseFloat($("#prop4_volume").jqxNumberInput("decimal")))==0){for(a7=1;a7<5;a7++){$("#prop"+a7+"_type").hide();$("#r"+a7+"_pmpt").show();$("#prop"+a7+"_type").val(a9);$("#prop"+a7+"_volume").hide();$("#prop"+a7+"_volume").val(0);$("#prop"+a7+"_irate").hide();$("#prop"+a7+"_ncells").hide();$("#prop"+a7+"_tcells").hide();$("#prop"+a7+"_growf").hide()}if(a3>ba){return}$("#prop1_type").show();$("#r1_pmpt").hide();$("#prop1_volume").show();$("#prop1_irate").show();$("#prop1_ncells").show();$("#prop1_tcells").show();$("#prop1_growf").show();for(a7=a6;a7<=a4;a7++){a6=a7;a5=a8[a6];bb=aC(a5,a9,a3);if(bb.irate<25){a6=a7-1;a5=a8[a6];bb=aC(a5,a9,a3);break}if(bb.totcells>ba||a7==a4){break}}$("#prop1_volume").val(bb.svol/1000);$("#prop1_irate").val(bb.prate);$("#prop1_ncells").val(bb.ncells);$("#prop1_tcells").val(bb.totcells);$("#prop1_growf").val(bb.growf);if(bb.totcells>ba){return}$("#r2_pmpt").hide();$("#prop2_type").val(a9);$("#prop2_type").show();$("#prop2_volume").show();$("#prop2_irate").show();$("#prop2_ncells").show();$("#prop2_tcells").show();$("#prop2_growf").show();for(a7=a6;a7<=a4;a7++){a6=a7;a5=a8[a6];bb=aC(a5,a9,$("#prop1_tcells").val());if(bb.irate<25){a6=a7-1;a5=a8[a6];bb=aC(a5,a9,$("#prop1_tcells").val());break}if(bb.totcells>ba||a7==a4){break}}$("#prop2_volume").val(bb.svol/1000);$("#prop2_irate").val(bb.prate);$("#prop2_ncells").val(bb.ncells);$("#prop2_tcells").val(bb.totcells);$("#prop2_growf").val(bb.growf);if(bb.totcells>ba){return}$("#r3_pmpt").hide();$("#prop3_type").val(a9);$("#prop3_type").show();$("#prop3_volume").show();$("#prop3_irate").show();$("#prop3_ncells").show();$("#prop3_tcells").show();$("#prop3_growf").show();for(a7=a6;a7<=a4;a7++){a6=a7;a5=a8[a6];bb=aC(a5,a9,$("#prop2_tcells").val());if(bb.irate<25){a6=a7-1;a5=a8[a6];bb=aC(a5,a9,$("#prop2_tcells").val());break}if(bb.totcells>ba||a7==a4){break}}$("#prop3_volume").val(bb.svol/1000);$("#prop3_irate").val(bb.prate);$("#prop3_ncells").val(bb.ncells);$("#prop3_tcells").val(bb.totcells);$("#prop3_growf").val(bb.growf);if(bb.totcells>ba){return}$("#r4_pmpt").hide();$("#prop4_type").val(a9);$("#prop4_type").show();$("#prop4_volume").show();$("#prop4_irate").show();$("#prop4_ncells").show();$("#prop4_tcells").show();$("#prop4_growf").show();for(a7=a6;a7<=a4;a7++){a6=a7;a5=a8[a6];bb=aC(a5,a9,$("#prop3_tcells").val());if(bb.totcells>ba||a7==a4){$("#prop4_volume").val(bb.svol/1000);$("#prop4_irate").val(bb.prate);$("#prop4_ncells").val(bb.ncells);$("#prop4_tcells").val(bb.totcells);$("#prop4_growf").val(bb.growf);return}}}else{if(d.prop1_volume>0){$("#r1_pmpt").hide();$("#prop1_type").show();$("#prop1_volume").show();$("#prop1_irate").show();$("#prop1_ncells").show();$("#prop1_tcells").show();$("#prop1_growf").show();bb=aC($("#prop1_volume").val()*1000,d.prop1_type,a3);$("#prop1_irate").val(bb.prate);$("#prop1_ncells").val(bb.ncells);$("#prop1_tcells").val(bb.totcells);$("#prop1_growf").val(bb.growf)}if(d.prop2_volume>0){$("#r2_pmpt").hide();$("#prop2_type").show();$("#prop2_volume").show();$("#prop2_irate").show();$("#prop2_ncells").show();$("#prop2_tcells").show();$("#prop2_growf").show();bb=aC($("#prop2_volume").val()*1000,d.prop2_type,$("#prop1_tcells").val());$("#prop2_irate").val(bb.prate);$("#prop2_ncells").val(bb.ncells);$("#prop2_tcells").val(bb.totcells);$("#prop2_growf").val(bb.growf)}if(d.prop3_volume>0){$("#r3_pmpt").hide();$("#prop3_type").show();$("#prop3_volume").show();$("#prop3_irate").show();$("#prop3_ncells").show();$("#prop3_tcells").show();$("#prop3_growf").show();bb=aC($("#prop3_volume").val()*1000,d.prop3_type,$("#prop2_tcells").val());$("#prop3_irate").val(bb.prate);$("#prop3_ncells").val(bb.ncells);$("#prop3_tcells").val(bb.totcells);$("#prop3_growf").val(bb.growf)}if(d.prop4_volume>0){$("#r4_pmpt").hide();$("#prop4_type").show();$("#prop4_volume").show();$("#prop4_irate").show();$("#prop4_ncells").show();$("#prop4_tcells").show();$("#prop4_growf").show();bb=aC($("#prop4_volume").val()*1000,d.prop4_type,$("#prop3_tcells").val());$("#prop4_irate").val(bb.prate);$("#prop4_ncells").val(bb.ncells);$("#prop4_tcells").val(bb.totcells);$("#prop4_growf").val(bb.growf)}}}function Y(){var bb,a4,ba,a6,a9,a3,a8,a7,a5=d.brew_fermenter_sg;if(a5<=1.0001&&d.fg>1){a5=d.fg}else{if(a5<=1.0001){a5=d.est_og}}bb=sg_to_plato(a5);a4=d.brew_fermenter_volume;if(a4>0){if(d.brew_fermenter_extrawater>0){a4+=d.brew_fermenter_extrawater}}else{a4=d.batch_size-d.eq_trub_chiller_loss}$("#yeast_cells").val(aa);if(!(ba=$("#yeastGrid").jqxGrid("getrows"))){return}a6=$("#yeastGrid").jqxGrid("getdatainformation").rowscount;if(a6==0){return}for(a3=0;a31.06){x=1}if(a9.y_type==0){x*=2}if(a9.y_type==6){x=0.25}}}a8=Round(x*a4*bb,1);console.log("calcYeast() pitchrate:"+x+" start:"+aa+" needed:"+a8+" volume:"+a4);$("#need_cells").val(a8);a7=aa;if(d.starter_enable){F(d.starter_type,aa,a8);for(a3=1;a3<5;a3++){$("#r"+a3+"_irate").html("");$("#r"+a3+"_growf").html("");$("#r"+a3+"_tcells").html("");if(parseFloat($("#prop"+a3+"_volume").val())>0){if((parseFloat($("#prop"+a3+"_irate").val())<25)||(parseFloat($("#prop"+a3+"_irate").val())>100)){$("#r"+a3+"_irate").html("")}else{$("#r"+a3+"_irate").html("")}if(parseFloat($("#prop"+a3+"_growf").val())<1){$("#r"+a3+"_growf").html("")}if(($("#prop"+a3+"_type").val()>0)&&(parseFloat($("#prop"+a3+"_growf").val())>3)){$("#r"+a3+"_growf").html("")}if(parseFloat($("#prop"+a3+"_tcells").val())>a8){$("#r"+a3+"_tcells").html("")}a7=parseFloat($("#prop"+a3+"_tcells").val())}else{$("#r"+a3+"_irate").html("")}}}$("#plato_cells").val(parseFloat(a7/(a4*bb)))}function aj(a5){console.log("adjustHops("+a5+")");var a6,a4,a3,a7=$("#hopGrid").jqxGrid("getdatainformation").rowscount;if(a7==0){return}for(a4=0;a40.5){$("#brew_mash_efficiency").val(100*i/a3)}else{$("#brew_mash_efficiency").val(0)}}function w(){var a4=0,a7={},a6,a8,a5,a3=0;if(!(a7=$("#fermentableGrid").jqxGrid("getrows"))){return}for(a6=0;a60){a3=Round((a5/a4*100),1)}if(a3<0){a3=0}$("#brew_preboil_efficiency").val(a3)}function S(){var a5=0,a4=0,a8={},a7,a9,a6,a3=0;if(!(a8=$("#fermentableGrid").jqxGrid("getrows"))){return}for(a7=0;a70){a3=Round((a6/a5*100),1)}if(a3<0){a3=0}d.brew_aboil_efficiency=a3;$("#brew_aboil_efficiency").val(a3)}function R(){var i=(d.est_og-1)*1000;if(i>0){return d.est_ibu/i}else{return 0.5}}function k(){var i=R();return(-1.2*i+1.4)}function aB(a3,a5){var a9,a4,ba,a8=false,a6,a7=$("#miscGrid").jqxGrid("getrows");if(a5==0){for(a4=0;a4"+i+"")}else{$("#wr_"+a3).html("")}}function aQ(a5,a4,a3,i){if((a5+a4)>0){return((a5*a3)+(a4*i))/(a5+a4)}return 0}function ar(a4,a3,i){return a4-(a3/1.4+i/1.7)}function z(a3){var i=Math.pow(10,-a3);return 100*aA*ay/(i*i+i*aA+aA*ay)}function az(a3){var i=Math.pow(10,-a3);return 100*aA*i/(i*i+i*aA+aA*ay)}function ax(i){return(-2*z(i)-az(i))}function K(a3){var a6=ax(4.3),a4=ax(parseFloat($("#wg_ph").jqxNumberInput("decimal"))),i=ax(a3),a8=-a6+a4,a7=parseFloat($("#wg_total_alkalinity").jqxNumberInput("decimal"))/50/a8,a5=-i+a4;return a7*a5}function am(a3){var a4,a5,i=parseFloat($("#wg_calcium").jqxNumberInput("decimal"))/(A/2);a4=parseFloat($("#wg_magnesium").jqxNumberInput("decimal"))/(aq/2);a5=K(a3);return a5-(i/3.5+a4/7)}function M(a5){var a8,a6,a7,a4,a3,a9=am(a5)*parseFloat($("#wg_amount").jqxNumberInput("decimal"));a8=$("#fermentableGrid").jqxGrid("getrows");for(a6=0;a60.1))){a7=row.f_acid_to_ph_57/(row.f_di_ph-5.7)}else{a4=row.f_color;switch(row.f_graintype){case 0:case 3:case 5:a7=0.014*a4-34.192;break;case 2:a7=-0.0597*a4-32.457;break;case 1:a7=0.0107*a4-54.768;break;case 4:a7=-149;break}}a3=a7*(a5-row.f_di_ph);a9+=a3*row.f_amount}}return a9}function aN(){var a6=0,a4=5.4,a3=0.001,a5=0.1,i=M(a4);while(((i<-a5)||(i>a5))&&(a6<2000)){a6++;if(i<-a5){a4-=a3}else{if(i>a5){a4+=a3}}i=M(a4)}a4=Round(a4,2);return a4}function t(i){switch(i){case 0:return{pK1:3.86,pK2:20,pK3:20,MolWt:90.08,AcidSG:1214,AcidPrc:0.88};case 1:return{pK1:-7,pK2:20,pK3:20,MolWt:36.46,AcidSG:1142,AcidPrc:0.28};case 2:return{pK1:2.12,pK2:7.2,pK3:12.44,MolWt:98,AcidSG:1170,AcidPrc:0.25};case 3:return{pK1:-1,pK2:1.92,pK3:20,MolWt:98.07,AcidSG:1700,AcidPrc:0.93}}}function Q(){var bk=0,bz=0,ba=0,bl=0,bb=0,bw=0,bc=0,bu=0,be=0,bn=0,bF=0,bD=0,bA=0,by,bo,bg,a5,a4,i,bf,a7,a6,bq,bi,a9,br,bj,bx,bp,bh,bs,bE,bt,bd,bB,bm,bC,a8,bv,a3;if(d.w1_name==""){return}if(d.w2_name!=""){bk=d.w1_amount+d.w2_amount;bz=aQ(d.w1_amount,d.w2_amount,d.w1_calcium,d.w2_calcium);ba=aQ(d.w1_amount,d.w2_amount,d.w1_magnesium,d.w2_magnesium);bl=aQ(d.w1_amount,d.w2_amount,d.w1_sodium,d.w2_sodium);bc=aQ(d.w1_amount,d.w2_amount,d.w1_chloride,d.w2_chloride);bu=aQ(d.w1_amount,d.w2_amount,d.w1_sulfate,d.w2_sulfate);bb=aQ(d.w1_amount,d.w2_amount,d.w1_total_alkalinity,d.w2_total_alkalinity);be=-Math.log10(((Math.pow(10,-d.w1_ph)*d.w1_amount)+(Math.pow(10,-d.w2_ph)*d.w2_amount))/bk)}else{bk=d.w1_amount;bz=d.w1_calcium;ba=d.w1_magnesium;bl=d.w1_sodium;bc=d.w1_chloride;bu=d.w1_sulfate;bb=d.w1_total_alkalinity;be=d.w1_ph}$("#wg_amount").val(bk);bB=bz;$("#wg_calcium").val(Math.round(bz*10)/10);$("#wg_magnesium").val(Math.round(ba*10)/10);bm=bl;$("#wg_sodium").val(Math.round(bl*10)/10);bC=bb;$("#wg_total_alkalinity").val(Math.round(bb*10)/10);a8=bc;$("#wg_chloride").val(Math.round(bc*10)/10);bv=bu;$("#wg_sulfate").val(Math.round(bu*10)/10);$("#wg_ph").val(Round(be,1));$("#wb_ph").val(Round(aN(),1));$("#est_mash_ph").val(Round(aN(),1));bw=bb*1.22;a3=bw;bn=parseFloat($("#wa_cacl2").jqxNumberInput("decimal"))*A/T+parseFloat($("#wa_caso4").jqxNumberInput("decimal"))*A/an;bz+=1000*bn/bk;bn=parseFloat($("#wa_mgso4").jqxNumberInput("decimal"))*aq/aK;ba+=1000*bn/bk;bn=parseFloat($("#wa_nacl").jqxNumberInput("decimal"))*ad/b+parseFloat($("#wa_base").jqxNumberInput("decimal"))*ad/aF;bl+=1000*bn/bk;bn=parseFloat($("#wa_caso4").jqxNumberInput("decimal"))*aI/an+parseFloat($("#wa_mgso4").jqxNumberInput("decimal"))*aI/aK;bu+=1000*bn/bk;bn=2*parseFloat($("#wa_cacl2").jqxNumberInput("decimal"))*q/T+parseFloat($("#wa_nacl").jqxNumberInput("decimal"))*q/b;bc+=1000*bn/bk;if($("#wa_acid_name").val()<0||$("#wa_acid_name").val()>3){$("#wa_acid_name").val(0);d.wa_acid_name=0}if(ag==""){ag=AcidTypeData[$("#wa_acid_name").val()].nl}if($("#wa_base_name").val()<0||$("#wa_base_name").val()>3){$("#wa_base_name").val(0);d.wa_base_name=0}if(aU==""){aU=BaseTypeData[$("#wa_base_name").val()].nl}by=d.wa_acid_name;bo=d.wa_base_name;bg=t(by);a5=bg.pK1;a4=bg.pK2;i=bg.pK3;bf=bg.MolWt;a7=bg.AcidSG;a6=bg.AcidPrc;if(d.calc_acid){bD=parseFloat(d.mash_ph);bA=M(bD);if(bA>0){$("#wa_base").val(0);aB(aU,0);bF=CalcFrac(bD,a5,a4,i);Acid=bA/bF;Acid*=bf;Acidmg=Acid;Acid=Acid/a7;if(parseFloat($("#wa_acid_perc").jqxNumberInput("decimal"))==0){$("#wa_acid_perc").val(a6)}Acid=Round(Acid*a6/(parseFloat($("#wa_acid_perc").jqxNumberInput("decimal"))/100),2);$("#wa_acid").val(Acid);aB(AcidTypeData[by].nl,Acid);bw=bw-bA*bF/bk;bb=bw*50/61}else{if(bA<0){$("#wa_acid").val(0);aB(ag,0);bq=Math.pow(10,(bD-6.38));bi=Math.pow(10,(bD-10.38));a9=1/(1+bq+bq*bi);br=a9*bq;bj=br*bi;switch(bo){case 0:bn=-bA/(a9-bj);bn=bn*aF/1000;$("#wa_base").val(Round(bn,2));aB("NaHCO3",Round(bn,2));if(bk>0){bn=parseFloat($("#wa_nacl").jqxNumberInput("decimal"))*ad/b+parseFloat($("#wa_base").jqxNumberInput("decimal"))*ad/aF;bn=1000*bn/bk;bl=bm+bn;bn=parseFloat($("#wa_base").jqxNumberInput("decimal"))*r/aF;bn=1000*bn/bk;bw=a3+bn;bb=bw*50/61;bn=ar(wb_total_alkalinity,wb_calcium,wb_magnesium)}break;case 1:bn=-bA/(2*a9+br);bn=bn*y/1000;$("#wa_base").val(Round(bn,2));aB("Na2CO3",Round(bn,2));if(bk>0){bn=parseFloat($("#wa_nacl").jqxNumberInput("decimal"))*ad/b+parseFloat($("#wa_base").jqxNumberInput("decimal"))*2*ad/y;bn=1000*bn/bk;bl=bm+bn;bn=parseFloat($("#wa_base").jqxNumberInput("decimal"))*r/y;bn=1000*bn/bk;bw=a3+bn;bb=bw*50/61;bn=ar(wb_total_alkalinity,wb_calcium,wb_magnesium)}break;case 2:bn=-bA*(a9-bj);bn=bn*g/1000;bn=3*bn;$("#wa_base").val(Round(bn,2));aB("CaCO3",Round(bn,2));if(bk>0){bn=parseFloat($("#wa_base").jqxNumberInput("decimal"))/3*r/g;bn=1000*bn/bk;bw=a3+bn;bb=bw*50/61;bn=parseFloat($("#wa_cacl2").jqxNumberInput("decimal"))*A/T+parseFloat($("#wa_caso4").jqxNumberInput("decimal"))*A/an+parseFloat($("#wa_base").jqxNumberInput("decimal"))*A/g;bn=1000*bn/bk;bz=bB+bn;bn=ar(wb_total_alkalinity,wb_calcium,wb_magnesium)}break;case 3:bn=-bA/19.3;$("#wa_base").val(Round(bn,2));aB("Ca(OH)2",Round(bn,2));if(bk>0){bn=-bA/bk;bb=bC+bn;bw=bb*61/50;bn=parseFloat($("#wa_cacl2").jqxNumberInput("decimal"))*A/T+parseFloat($("#wa_caso4").jqxNumberInput("decimal"))*A/an+parseFloat($("#wa_base").jqxNumberInput("decimal"))*A/aJ;bn=1000*bn/bk;bz=bB+bn;bn=ar(wb_total_alkalinity,wb_calcium,wb_magnesium)}break}}}be=bD;$("#wb_ph").val(Round(be,1));$("#est_mash_ph").val(Round(be,1))}else{console.log("calc_acid no");if(parseFloat($("#wa_base").jqxNumberInput("decimal"))>0){if(bk>0){switch(bo){case 0:bn=parseFloat($("#wa_nacl").jqxNumberInput("decimal"))*ad/b+parseFloat($("#wa_base").jqxNumberInput("decimal"))*ad/aF;bn=1000*bn/bk;bl=bm+bn;bn=parseFloat($("#wa_base").jqxNumberInput("decimal"))*r/aF;bn=1000*bn/bk;bw=a3+bn;bb=bw*50/61;bn=ar(wb_total_alkalinity,wb_calcium,wb_magnesium);break;case 1:bn=parseFloat($("#wa_nacl").jqxNumberInput("decimal"))*ad/b+parseFloat($("#wa_base").jqxNumberInput("decimal"))*2*ad/y;bn=1000*bn/bk;bl=bm+bn;bn=parseFloat($("#wa_base").jqxNumberInput("decimal"))*r/y;bn=1000*bn/bk;bw=a3+bn;bb=bw*50/61;bn=ar(wb_total_alkalinity,wb_calcium,wb_magnesium);break;case 2:bn=parseFloat($("#wa_base").jqxNumberInput("decimal"))/3*r/g;bn=1000*bn/bk;bw=a3+bn;bb=bw*50/61;bn=ar(wb_total_alkalinity,wb_calcium,wb_magnesium);bn=parseFloat($("#wa_cacl2").jqxNumberInput("decimal"))*A/T+parseFloat($("#wa_caso4").jqxNumberInput("decimal"))*A/an+parseFloat($("#wa_base").jqxNumberInput("decimal"))*A/g;bn=1000*bn/bk;bz=bB+bn;break}}}bD=parseFloat(d.mash_ph);pHa=aN();if(parseFloat($("#wa_acid").jqxNumberInput("decimal"))>0){console.log("TpH: "+bD+" water: "+pHa);Acid=parseFloat($("#wa_acid").jqxNumberInput("decimal"));if(parseFloat($("#wa_acid_perc").jqxNumberInput("decimal"))==0){$("#wa_acid_perc").val(a6)}Acid=Acid/a6*(parseFloat($("#wa_acid_perc").jqxNumberInput("decimal"))/100);Acid*=a7;Acid/=bf;Acidmg=Acid;bF=CalcFrac(pHa,a5,a4,i);bA=Acid*bF;bx=0.001;bp=0.1;bh=M(pHa);bs=0;while(((bh<(bA-bp))||(bh>(bA+bp)))&&(bs<2000)){bs++;if(bh<(bA-bp)){pHa-=bx}else{if(bh>(bA+bp)){pHa+=bx}}bF=CalcFrac(pHa,a5,a4,i);bA=Acid*bF;bh=M(pHa)}console.log("n: "+bs+" pd: "+bh+" protonDeficit: "+bA+" frac: "+bF+" pHa: "+pHa);bn=a3-bA*bF/bk;bw=bn;bb=bn*50/61;be=pHa;$("#wb_ph").val(Round(be,1));$("#est_mash_ph").val(Round(be,1))}}if((by==3)&&(bk>0)){bn=parseFloat($("#wa_caso4").jqxNumberInput("decimal"))*aI/an+parseFloat($("#wa_mgso4").jqxNumberInput("decimal"))*aI/aK+Acidmg/1000*aI/(aI+2);bn=1000*bn/bk;bu=bv+bn}else{if((by==1)&&(bk>0)){bn=parseFloat($("#wa_cacl2").jqxNumberInput("decimal"))*q/T+parseFloat($("#wa_nacl").jqxNumberInput("decimal"))*q/b+Acidmg/1000*q/(q+1);bn=1000*bn/bk;bc=a8+bn}}$("#tgt_bu").val(Round(R(),2));if(R()<0.32){$("#wr_bu").html("Zeer moutig en zoet")}else{if(R()<0.43){$("#wr_bu").html("Moutig, zoet")}else{if(R()<0.52){$("#wr_bu").html("Evenwichtig")}else{if(R()<0.63){$("#wr_bu").html("Licht hoppig, bitter")}else{$("#wr_bu").html("Extra hoppig, zeer bitter")}}}}$("#tgt_cl_so4").val(Round(k(),1));if(bu>0){bn=bc/bu}else{bn=10}$("#got_cl_so4").val(Round(bn,1));bE=0.8*k();bt=1.2*k();bd="normaal";if(bnbt){bd="hoog"}}m("cl_so4",bd);$("#wb_calcium").val(Round(bz,1));$("#wb_magnesium").val(Round(ba,1));$("#wb_sodium").val(Round(bl,1));$("#wb_sulfate").val(Round(bu,1));$("#wb_chloride").val(Round(bc,1));$("#wb_total_alkalinity").val(Round(bb,1));if(bz<40){m("calcium","laag")}else{if(bz>150){m("calcium","hoog")}else{m("calcium","normaal")}}if(ba>=0&&ba<=30){m("magnesium","normaal")}else{m("magnesium","hoog")}if(bl<=150){m("sodium","normaal")}else{m("sodium","hoog")}if(bc<=50){m("chloride","laag")}else{if(bc<=100){m("chloride","normaal")}else{m("chloride","hoog")}}if(bu<=50){m("sulfate","laag")}else{if(bu<=350){m("sulfate","normaal")}else{m("sulfate","hoog")}}if(be<5.2){m("ph","laag")}else{if(be>5.6){m("ph","hoog")}else{m("ph","normaal")}}j();aG();G()}function j(){var a5,bh,bf,bn,bm,bq,bk,bj,bl,a8,bv,bt,a3,a7,ba,bg,br,bp,bs,bi,a4,a9,be,bd,bc,bb,bu,a6,i,bo;a5=d.sparge_ph;bh=d.w1_ph;bf=d.w1_total_alkalinity;if(d.sparge_source==1){if(d.w2_ph>0){bh=d.w2_ph;bf=d.w2_total_alkalinity}else{d.sparge_source=0;$("#sparge_source").val(0)}}else{if(d.sparge_source==2){if(d.w2_ph>0){bh=parseFloat($("#wg_ph").jqxNumberInput("decimal"));bf=parseFloat($("#wg_total_alkalinity").jqxNumberInput("decimal"))}else{d.sparge_source=0;$("#sparge_source").val(0)}}}bn=Math.pow(10,bh-6.38);bm=Math.pow(10,bh-10.373);bq=1+bn+bn*bm;bk=1/bq;bj=bn*bm/bq;bl=Math.pow(10,4.3-6.38);a8=Math.pow(10,4.3-10.373);bv=1+bl+bl*a8;bt=1/bv;a3=bl*a8/bv;a7=bf/50;ba=(a7-1000*(Math.pow(10,-4.3)-Math.pow(10,-bh)))/((bt-bk)+(bj-a3));bg=Math.pow(10,a5-6.38);br=Math.pow(10,a5-10.373);bp=1+bg+bg*br;bs=1/bp;bi=bg*br/bp;a4=ba*((bs-bk)+(bj-bi))+Math.pow(10,-a5)-Math.pow(10,-bh);a4+=0.01;if(d.sparge_acid_type<0||d.sparge_acid_type>3){d.sparge_acid_type=0;$("#sparge_acid_type").val(0)}a9=d.sparge_acid_type;be=t(a9);bd=be.pK1;bc=be.pK2;bb=be.pK3;bu=be.MolWt;a6=be.AcidSG;i=be.AcidPrc;bo=CalcFrac(a5,bd,bc,bb);a4/=bo;a4*=bu;a4=a4/a6;bk=d.sparge_acid_perc;if(bk<=0.1){bk=i}a4=a4*i/(bk/100);a4*=d.sparge_volume;a4=Round(a4,2);d.sparge_acid_amount=a4/1000;$("#sparge_acid_amount").val(a4)}function N(){var a3,i,a5,a4;if(d.brew_fermenter_sg<1.02){return}if((d.primary_end_sg>0.99)&&(d.primary_end_sg0.99)&&(d.secondary_end_sg0.99)&&(d.fg1.005&&d.est_color>3&&d.est_ibu>3){a8=1}if(a8==1&&parseFloat($("#brew_date_start").val())>2000){a8=2}if(a8==2&&($("#brew_date_start").val()=="")){a8=1}if(a8==2&&parseFloat($("#brew_date_end").val())>2000){a8=3}if(a8==3&&parseFloat($("#primary_end_date").val())>2000){a8=4}if(a8==4&&parseFloat($("#secondary_end_date").val())>2000){a8=5}if(a8==5&&parseFloat($("#package_date").val())>2000){a8=6}if(a8>=6&&a8<9){a7=new Date();a3=$("#package_date").val();a3=a3.split("-");a5=new Date(a7.getFullYear(),a7.getMonth(),a7.getDate());a3=new Date(a3[0],a3[1]-1,a3[2]);a9=parseInt(a5.getTime()/1000);a6=parseInt(a3.getTime()/1000);i=a9-a6;a4=i/60/60/24;if(a4>0){if(a4>=42){a8=9}else{if(a4>=14){a8=8}else{a8=7}}}}if(a8==9&&parseFloat($("#taste_date").val())>2000){a8=10}if(a8!=d.stage){console.log("calcStage() old: "+d.stage+" new: "+a8);d.stage=a8}$("#stage").val(StageData[d.stage].nl);if(d.stage>=10){$("#locked").jqxCheckBox({disabled:false})}if(d.stage>1){$("#equipmentSelect").jqxDropDownList({disabled:true});$("#Delete").jqxButton({disabled:true})}if(d.stage<1){$("#jqxTabs").jqxTabs("disableAt",8)}else{$("#jqxTabs").jqxTabs("enableAt",8)}if(d.stage<3){$("#jqxTabs").jqxTabs("disableAt",9)}else{$("#jqxTabs").jqxTabs("enableAt",9);$("#name").jqxInput({disabled:true});$("#code").jqxInput({disabled:true});$("#batch_size").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#boil_size").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#boil_time").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#efficiency").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#est_og").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#type").jqxDropDownList({disabled:true});$("#styleSelect").jqxDropDownList({disabled:true});$("#color_method").jqxDropDownList({disabled:true});$("#ibu_method").jqxDropDownList({disabled:true});$("#mash_select").jqxDropDownList({disabled:true});$("#w1_name").jqxDropDownList({disabled:true});$("#w2_name").jqxDropDownList({disabled:true});$("#w2_amount").jqxNumberInput({readOnly:true});$("#pr_name").jqxDropDownList({disabled:true});$("#wa_cacl2").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#wa_caso4").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#wa_mgso4").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#wa_nacl").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#mash_ph").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#calc_acid").jqxCheckBox({disabled:true});$("#wa_base_name").jqxDropDownList({disabled:true});$("#wa_base").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#wa_acid_name").jqxDropDownList({disabled:true});$("#wa_acid").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#wa_acid_perc").jqxNumberInput({spinButtons:false,readOnly:true,width:70});$("#sparge_temp").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#sparge_volume").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#sparge_ph").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#sparge_source").jqxDropDownList({disabled:true});$("#sparge_acid_type").jqxDropDownList({disabled:true});$("#sparge_acid_perc").jqxNumberInput({spinButtons:false,readOnly:true,width:false});$("#starter_enable").jqxCheckBox({disabled:true});$("#starter_type").jqxDropDownList({disabled:true});$("#starter_try").jqxButton({disabled:true});$("#starter_sg").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#starter_viability").jqxNumberInput({spinButtons:false,readOnly:true,width:90})}if(d.stage>3){$("#brew_date_start").jqxDateTimeInput({disabled:true});$("#brew_date_end").jqxDateTimeInput({disabled:true});$("#brew_mash_ph").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_preboil_ph").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_aboil_ph").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_mash_sg").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_preboil_sg").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_aboil_sg").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_preboil_volume").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_aboil_volume").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_whirlpool9").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_cooling_to").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_whirlpool7").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_cooling_method").jqxDropDownList({disabled:true});$("#brew_whirlpool6").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_cooling_time").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_sparge_ph").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_whirlpool2").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_aeration_type").jqxDropDownList({disabled:true});$("#brew_fermenter_tcloss").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_aeration_time").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_fermenter_extrawater").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#brew_aeration_speed").jqxNumberInput({spinButtons:false,readOnly:true,width:90})}if(d.stage==5){$("#package_date").jqxDateTimeInput({disabled:false})}else{$("#package_date").jqxDateTimeInput({disabled:true})}if(d.stage>=5){$("#primary_start_temp").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#primary_max_temp").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#primary_end_temp").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#primary_end_sg").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#primary_end_brix").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#primary_end_date").jqxDateTimeInput({disabled:true})}if(d.stage>=6){$("#secondary_temp").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#secondary_end_sg").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#secondary_end_date").jqxDateTimeInput({disabled:true});$("#tertiary_temp").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#fg").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#final_brix").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#package_date").jqxDateTimeInput({disabled:true});$("#package_volume").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#package_infuse_amount").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#package_infuse_abv").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#package_infuse_notes").jqxInput({disabled:true});$("#package_ph").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#bottle_amount").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#bottle_priming_water").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#keg_priming_water").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#keg_amount").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#bottle_carbonation").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#keg_carbonation").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#bottle_priming_sugar").jqxDropDownList({disabled:true});$("#keg_priming_sugar").jqxDropDownList({disabled:true});$("#keg_forced_carb").jqxCheckBox({disabled:true});$("#bottle_carbonation_temp").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#keg_carbonation_temp").jqxNumberInput({spinButtons:false,readOnly:true,width:90})}if(d.stage<8){$("#jqxTabs").jqxTabs("disableAt",11)}else{$("#jqxTabs").jqxTabs("enableAt",11)}if(d.stage==11){$("#taste_date").jqxDateTimeInput({disabled:true});$("#taste_rate").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#taste_color").jqxInput({disabled:true});$("#taste_transparency").jqxInput({disabled:true});$("#taste_head").jqxInput({disabled:true});$("#taste_aroma").jqxInput({disabled:true});$("#taste_taste").jqxInput({disabled:true});$("#taste_aftertaste").jqxInput({disabled:true});$("#taste_mouthfeel").jqxInput({disabled:true});$("#taste_notes").jqxInput({disabled:true});$("#notes").jqxInput({disabled:true})}else{$("#notes").jqxInput({disabled:false})}}function J(){if(d.starter_enable){$("#propagator").show();$("#starter_type").jqxDropDownList({disabled:false});$("#starter_try").jqxButton({disabled:false});$("#starter_sg").jqxNumberInput({spinButtons:true,readOnly:false,width:110});$("#starter_viability").jqxNumberInput({spinButtons:true,readOnly:false,width:110})}else{$("#propagator").hide();$("#starter_type").jqxDropDownList({disabled:true});$("#starter_try").jqxButton({disabled:true});$("#starter_sg").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#starter_viability").jqxNumberInput({spinButtons:false,readOnly:true,width:90})}}function aX(){console.log("calcInit()");a0();w();S();$("#starter_enable").on("checked",function(i){d.starter_enable=1;J();Y()});$("#starter_enable").on("unchecked",function(i){d.starter_enable=0;J();Y()});$("#starter_try").click(function(){$("#prop1_volume").val(0);$("#prop2_volume").val(0);$("#prop3_volume").val(0);$("#prop4_volume").val(0);Y()});$("#starter_type").on("change",function(i){if(i.args){d.starter_type=i.args.index;Y()}});$("#starter_sg").on("change",function(i){if(i.args){d.starter_sg=i.args.value;Y()}});$("#starter_viability").on("change",function(i){if(i.args){d.starter_viability=i.args.value;U();Y()}});$("#prop1_type").on("change",function(i){if(i.args){d.prop1_type=i.args.index;Y()}});$("#prop1_volume").on("change",function(i){if(i.args){d.prop1_volume=i.args.value;Y()}});$("#prop2_type").on("change",function(i){if(i.args){d.prop2_type=i.args.index;Y()}});$("#prop2_volume").on("change",function(i){if(i.args){d.prop2_volume=i.args.value;Y()}});$("#prop3_type").on("change",function(i){if(i.args){d.prop3_type=i.args.index;Y()}});$("#prop3_volume").on("change",function(i){if(i.args){d.prop3_volume=i.args.value;Y()}});$("#prop4_type").on("change",function(i){if(i.args){d.prop4_type=i.args.index;Y()}});$("#prop4_volume").on("change",function(i){if(i.args){d.prop4_volume=i.args.value;Y()}});$("#calc_acid").on("checked",function(i){d.calc_acid=1;Q()});$("#calc_acid").on("unchecked",function(i){d.calc_acid=0;Q()});$("#w1_name").jqxDropDownList("selectItem",d.w1_name);$("#w2_name").jqxDropDownList("selectItem",d.w2_name);if(parseFloat($("#w1_amount").jqxNumberInput("decimal"))==0&&C>0){$("#w1_amount").val(C);d.w1_amount=C;$("#wg_amount").val(C);$("#w2_amount").val(0);d.w2_amount=0}Q();$("#w2_amount").on("change",function(i){var a3=parseFloat(i.args.value);if(a3>C){$("#w2_amount").val(d.w2_amount);return}d.w1_amount=parseFloat($("#wg_amount").jqxNumberInput("decimal"))-a3;$("#w1_amount").val(d.w1_amount);d.w2_amount=a3;console.log("new: "+i.args.value+" w1: "+d.w1_amount+" w2: "+d.w2_amount);Q()});$("#wa_cacl2").on("change",function(i){if(i.args){aB("CaCl2",0);aB("CaCl2",i.args.value);Q()}});$("#wa_caso4").on("change",function(i){if(i.args){aB("CaSO4",0);aB("CaSO4",i.args.value);Q()}});$("#wa_mgso4").on("change",function(i){if(i.args){aB("MgSO4",0);aB("MgSO4",i.args.value);Q()}});$("#wa_nacl").on("change",function(i){if(i.args){aB("NaCl",0);aB("NaCl",i.args.value);Q()}});$("#wa_base_name").on("change",function(a3){if(a3.args){var i=a3.args.index;console.log("wa_base_name "+i);aB(aU,0);aU=BaseTypeData[i].nl;aB(aU,parseFloat($("#wa_base").jqxNumberInput("decimal")));d.wa_base_name=i;Q()}});$("#wa_base").on("change",function(a3){var i=BaseTypeData[$("#wa_base_name").val()].nl;aB(i,parseFloat(a3.args.value));Q()});$("#wa_acid_name").on("change",function(a3){if(a3.args){var i=a3.args.index;console.log("wa_acid_name "+i);aB(ag,0);ag=AcidTypeData[i].nl;aB(ag,parseFloat($("#wa_acid").jqxNumberInput("decimal")));d.wa_acid_name=i;Q()}});$("#wa_acid").on("change",function(a3){var i=AcidTypeData[$("#wa_acid_name").val()].nl;aB(i,parseFloat(a3.args.value));Q()});$("#wa_acid_perc").on("change",function(i){Q()});$("#color_method").on("change",function(i){d.color_method=i.args.index;U()});$("#ibu_method").on("change",function(i){d.ibu_method=i.args.index;U();at()});$("#batch_size").on("change",function(a4){console.log("batch_size change:"+a4.args.value+" old:"+d.batch_size);$("#est_a_vol").val(a4.args.value*1.04);var i,a3=parseFloat(a4.args.value)+d.boil_size-d.batch_size;i=parseFloat(a4.args.value)/d.batch_size;d.boil_size=a3;$("#boil_size").val(Round(a3,2));$("#est_pre_vol").val(Round(a3*1.04,2));d.sparge_volume*=i;$("#sparge_volume").val(d.sparge_volume);$("#brew_sparge_volume").val(d.sparge_volume);d.batch_size=parseFloat(a4.args.value);af(parseFloat($("#est_og").jqxNumberInput("decimal")));au(i);U();aj(i);a2(i);aP(i);at();Q();j();aO()});$("#boil_time").on("change",function(a4){console.log("boil_time change:"+parseFloat(a4.args.value)+" old:"+d.boil_time);var a3,i,a5=parseFloat(d.boil_size)-parseFloat(d.batch_size);i=a5*(parseFloat(a4.args.value)/d.boil_time);a3=parseFloat(d.batch_size)+i;d.boil_time=parseFloat(a4.args.value);d.boil_size=a3;$("#est_pre_vol").val(Round(a3*1.04,2));$("#boil_size").val(Round(a3,2));U();at();Y()});$("#efficiency").on("change",function(a3){var i=parseFloat($("#est_og").jqxNumberInput("decimal"));d.efficiency=parseFloat(a3.args.value);console.log("efficiency change:"+d.efficiency+" est_og:"+i);af(i);U();at();Y()});$("#est_og").on("change",function(i){d.est_og=parseFloat(i.args.value);console.log("est_og change:"+d.est_og);$("#est_og2").val(d.est_og);af(d.est_og);U();at();aO();Y()});$("#mash_ph").on("change",function(i){d.mash_ph=parseFloat(i.args.value);Q()});$("#sparge_ph").on("change",function(i){d.sparge_ph=parseFloat(i.args.value);j()});$("#sparge_volume").on("change",function(i){d.sparge_volume=parseFloat(i.args.value);$("#brew_sparge_volume").val(d.sparge_volume);j()});$("#sparge_temp").on("change",function(i){d.sparge_temp=parseFloat(i.args.value);$("#brew_sparge_temperature").val(d.sparge_temp)});$("#sparge_source").on("change",function(i){if(i.args){d.sparge_source=i.args.index;j()}});$("#sparge_acid_type").on("change",function(i){if(i.args){d.sparge_acid_type=i.args.index;console.log("new sparge_acid_type: "+d.sparge_acid_type);j()}});$("#sparge_acid_perc").on("change",function(i){d.sparge_acid_perc=parseFloat(i.args.value);j()});N();aS();$("#package_volume").on("change",function(a3){var a4,a5,i=d.package_volume+d.package_infuse_amount;d.package_volume=parseFloat(a3.args.value);if(d.package_volume>d.brew_fermenter_volume){d.package_volume=d.brew_fermenter_volume;$("#package_volume").val(d.package_volume)}a5=d.package_volume+d.package_infuse_amount;a4=a5-i;if(i>0){d.bottle_amount+=(d.bottle_amount/i)*a4;d.keg_amount+=(d.keg_amount/i)*a4}else{d.bottle_amount=a5;d.keg_amount=0}console.log("diff:"+a4+" old:"+i+" bottle:"+d.bottle_amount+" keg:"+d.keg_amount);$("#bottle_amount").val(parseFloat(d.bottle_amount*1000)/1000);$("#keg_amount").val(parseFloat(d.keg_amount*1000)/1000);aS()});$("#package_infuse_amount").on("change",function(a3){var a4,a5,i=d.package_volume+d.package_infuse_amount;d.package_infuse_amount=parseFloat(a3.args.value);a5=d.package_volume+d.package_infuse_amount;a4=a5-i;if(i>0){d.bottle_amount+=(d.bottle_amount/i)*a4;d.keg_amount+=(d.keg_amount/i)*a4}else{d.bottle_amount=a5;d.keg_amount=0}console.log("diff:"+a4+" old:"+i+" bottle:"+d.bottle_amount+" keg:"+d.keg_amount);$("#bottle_amount").val(parseFloat(d.bottle_amount*1000)/1000);$("#keg_amount").val(parseFloat(d.keg_amount*1000)/1000);aS()});$("#package_infuse_abv").on("change",function(i){d.package_infuse_abv=parseFloat(i.args.value);aS()});$("#bottle_amount").on("change",function(a4){var i,a5,a3=parseFloat(a4.args.value);i=d.package_volume+d.package_infuse_amount;if(a3>i){a3=i}a5=d.bottle_amount-a3;d.bottle_amount=Math.round((d.bottle_amount-a5)*1000)/1000;d.keg_amount=Math.round((d.keg_amount+a5)*1000)/1000;$("#bottle_amount").val(parseFloat(d.bottle_amount));$("#keg_amount").val(parseFloat(d.keg_amount));aS()});$("#bottle_priming_water").on("change",function(i){d.bottle_priming_water=parseFloat(i.args.value);aS()});$("#keg_amount").on("change",function(a4){var a5,i,a3=parseFloat(a4.args.value);i=d.package_volume+d.package_infuse_amount;if(a3>i){a3=i}a5=d.keg_amount-a3;d.bottle_amount=Math.round((d.bottle_amount+a5)*1000)/1000;d.keg_amount=Math.round((d.keg_amount-a5)*1000)/1000;$("#bottle_amount").val(parseFloat(d.bottle_amount));$("#keg_amount").val(parseFloat(d.keg_amount));aS()});$("#keg_priming_water").on("change",function(i){d.keg_priming_water=parseFloat(i.args.value);aS()});$("#bottle_carbonation").on("change",function(i){d.bottle_carbonation=parseFloat(i.args.value);aS()});$("#bottle_carbonation_temp").on("change",function(i){d.bottle_carbonation_temp=parseFloat(i.args.value);aS()});$("#keg_carbonation").on("change",function(i){d.keg_carbonation=parseFloat(i.args.value);aS()});$("#keg_forced_carb").on("checked",function(i){d.keg_forced_carb=1;aS()});$("#keg_forced_carb").on("unchecked",function(i){d.keg_forced_carb=0;aS()});$("#keg_carbonation_temp").on("change",function(i){d.keg_carbonation_temp=parseFloat(i.args.value);aS()});$("#brew_fermenter_extrawater").on("change",function(i){d.brew_fermenter_extrawater=parseFloat(i.args.value);U();at();Y()});$("#brew_fermenter_tcloss").on("change",function(i){d.brew_fermenter_tcloss=parseFloat(i.args.value);U();at();Y()});$("#primary_end_sg").on("change",function(i){d.primary_end_sg=parseFloat(i.args.value);N()});$("#primary_end_brix").on("change",function(a3){var a4,a5,i;if(d.brew_fermenter_sg>=1.02){a4=sg_to_brix(d.brew_fermenter_sg);a5=parseFloat(a3.args.value);i=Round(1.0031-0.002318474*a4-0.000007775*(a4*a4)-3.4e-8*Math.pow(a4,3)+0.00574*(a5)+0.00003344*(a5*a5)+8.6e-8*Math.pow(a5,3),4);if(a5>0.05){$("#primary_end_sg").val(i);d.primary_end_sg=i}N()}});$("#secondary_end_sg").on("change",function(i){d.secondary_end_sg=parseFloat(i.args.value);N()});$("#secondary_end_brix").on("change",function(a3){var a4,a5,i;if(d.brew_fermenter_sg>=1.02){a4=sg_to_brix(d.brew_fermenter_sg);a5=parseFloat(a3.args.value);i=Round(1.0031-0.002318474*a4-0.000007775*(a4*a4)-3.4e-8*Math.pow(a4,3)+0.00574*(a5)+0.00003344*(a5*a5)+8.6e-8*Math.pow(a5,3),4);if(a5>0.05){$("#secondary_end_sg").val(i);d.secondary_end_sg=i}N()}});$("#final_brix").on("change",function(a3){var a4,a5,i;if(d.brew_fermenter_sg>=1.02){a4=sg_to_brix(d.brew_fermenter_sg);a5=parseFloat(a3.args.value);i=Round(1.0031-0.002318474*a4-0.000007775*(a4*a4)-3.4e-8*Math.pow(a4,3)+0.00574*(a5)+0.00003344*(a5*a5)+8.6e-8*Math.pow(a5,3),4);if(a5>0.05){$("#fg").val(i);d.fg=i}N()}});$("#fg").on("change",function(i){d.fg=parseFloat(i.args.value);N()});$("#BLog").jqxButton({disabled:(d.log_brew)?false:true});$("#FLog").jqxButton({disabled:(d.log_fermentation)?false:true})}$("#styleSelect").jqxDropDownList({placeHolder:"Kies bierstijl:",theme:theme,source:styleslist,displayMember:"name",width:180,height:23,dropDownVerticalAlignment:"top",dropDownWidth:500,dropDownHeight:380,renderer:function(a3,i,a5){var a4=styleslist.records[a3];return a4.style_guide+" "+a4.style_letter+" "+a4.name}});$("#styleSelect").on("select",function(a4){if(a4.args){var a3,i=a4.args.index;a3=styleslist.records[i];$("#st_name").val(a3.name);$("#st_category").val(a3.category);$("#st_category_number").val(a3.category_number);$("#st_letter").val(a3.style_letter);$("#st_guide").val(a3.style_guide);$("#st_type").val(StyleTypeData[a3.type].nl);$("#st_og_min").val(a3.og_min);$("#st_og_max").val(a3.og_max);$("#st_fg_min").val(a3.fg_min);$("#st_fg_max").val(a3.fg_max);$("#st_ibu_min").val(a3.ibu_min);$("#st_ibu_max").val(a3.ibu_max);$("#st_color_min").val(a3.color_min);$("#st_color_max").val(a3.color_max);$("#st_carb_min").val(a3.carb_min);$("#st_carb_min2").val(a3.carb_min);$("#st_carb_max").val(a3.carb_max);$("#st_carb_max2").val(a3.carb_max);$("#st_abv_min").val(a3.abv_min);$("#st_abv_max").val(a3.abv_max)}});$("#equipmentSelect").jqxDropDownList({placeHolder:"Kies apparatuur:",theme:theme,source:equipmentlist,displayMember:"name",width:170,height:23,dropDownWidth:300,renderer:function(a3,i,a5){var a4=equipmentlist.records[a3];return a4.batch_size+" liter "+a4.name}});$("#equipmentSelect").on("select",function(a5){if(a5.args){var a4,a3,i=a5.args.index;a4=equipmentlist.records[i];a3=a4.batch_size/d.batch_size;$("#eq_name").val(a4.name);$("#eq_boil_size").val(a4.boil_size);d.boil_size=a4.boil_size;$("#boil_size").val(a4.boil_size);$("#eq_batch_size").val(a4.batch_size);d.batch_size=a4.batch_size;$("#batch_size").val(a4.batch_size);$("#est_a_vol").val(a4.batch_size*1.04);$("#eq_tun_volume").val(a4.tun_volume);d.eq_tun_weight=a4.tun_weight;d.eq_tun_specific_heat=a4.tun_specific_heat;d.eq_tun_material=a4.tun_material;d.eq_tun_height=a4.tun_height/100;$("#eq_top_up_water").val(a4.top_up_water);d.eq_trub_chiller_loss=a4.trub_chiller_loss;$("#eq_trub_chiller_loss").val(a4.trub_chiller_loss);$("#eq_evap_rate").val(a4.evap_rate);$("#eq_boil_time").val(a4.boil_time);d.eq_calc_boil_volume=a4.calc_boil_volume;$("#eq_top_up_kettle").val(a4.top_up_kettle);$("#eq_hop_utilization").val(a4.hop_utilization);$("#eq_notes").val(a4.notes);$("#eq_lauter_volume").val(a4.lauter_volume);d.eq_lauter_height=a4.lauter_height/100;$("#eq_lauter_deadspace").val(a4.lauter_deadspace);$("#eq_kettle_volume").val(a4.kettle_volume);d.eq_kettle_height=a4.kettle_height/100;$("#eq_mash_volume").val(a4.mash_volume);$("#eq_mash_max").val(a4.mash_max);d.eq_mash_max=a4.mash_max;$("#mash_max").val(a4.mash_max);$("#eq_efficiency").val(a4.efficiency);d.efficiency=a4.efficiency;$("#efficiency").val(a4.efficiency);d.sparge_volume=Math.round(a4.boil_size*5)/10;$("#sparge_volume").val(d.sparge_volume);$("#brew_sparge_volume").val(d.sparge_volume);$("#est_pre_vol").val(a4.boil_size*1.04);af(parseFloat($("#est_og").jqxNumberInput("decimal")));au(a3);U();aj(a3);a2(a3);aP(a3);at();Q();j()}});function s(i){var a4={record:my_record,uuid:d.uuid,name:$("#name").val(),code:$("#code").val(),birth:$("#birth").val(),stage:d.stage,notes:$("#notes").val(),log_brew:d.log_brew,log_fermentation:d.log_fermentation,inventory_reduced:d.inventory_reduced,locked:d.locked,eq_name:$("#eq_name").val(),eq_boil_size:parseFloat($("#eq_boil_size").jqxNumberInput("decimal")),eq_batch_size:parseFloat($("#eq_batch_size").jqxNumberInput("decimal")),eq_tun_volume:parseFloat($("#eq_tun_volume").jqxNumberInput("decimal")),eq_tun_weight:d.eq_tun_weight,eq_tun_specific_heat:d.eq_tun_specific_heat,eq_tun_material:d.eq_tun_material,eq_tun_height:d.eq_tun_height,eq_top_up_water:parseFloat($("#eq_top_up_water").jqxNumberInput("decimal")),eq_trub_chiller_loss:parseFloat($("#eq_trub_chiller_loss").jqxNumberInput("decimal")),eq_evap_rate:parseFloat($("#eq_evap_rate").jqxNumberInput("decimal")),eq_boil_time:parseFloat($("#eq_boil_time").jqxNumberInput("decimal")),eq_calc_boil_volume:d.eq_calc_boil_volume,eq_top_up_kettle:parseFloat($("#eq_top_up_kettle").jqxNumberInput("decimal")),eq_hop_utilization:parseFloat($("#eq_hop_utilization").jqxNumberInput("decimal")),eq_notes:$("#eq_notes").val(),eq_lauter_volume:parseFloat($("#eq_lauter_volume").jqxNumberInput("decimal")),eq_lauter_height:d.eq_lauter_height,eq_lauter_deadspace:parseFloat($("#eq_lauter_deadspace").jqxNumberInput("decimal")),eq_kettle_volume:parseFloat($("#eq_kettle_volume").jqxNumberInput("decimal")),eq_kettle_height:d.eq_kettle_height,eq_mash_volume:parseFloat($("#eq_mash_volume").jqxNumberInput("decimal")),eq_mash_max:parseFloat($("#eq_mash_max").jqxNumberInput("decimal")),eq_efficiency:parseFloat($("#eq_efficiency").jqxNumberInput("decimal")),brew_date_start:$("#brew_date_start").val(),brew_mash_ph:parseFloat($("#brew_mash_ph").jqxNumberInput("decimal")),brew_mash_sg:parseFloat($("#brew_mash_sg").jqxNumberInput("decimal")),brew_mash_efficiency:parseFloat($("#brew_mash_efficiency").jqxNumberInput("decimal")),brew_sparge_est:parseFloat($("#brew_sparge_est").jqxNumberInput("decimal")),brew_sparge_ph:parseFloat($("#brew_sparge_ph").jqxNumberInput("decimal")),brew_preboil_volume:parseFloat($("#brew_preboil_volume").jqxNumberInput("decimal")),brew_preboil_sg:parseFloat($("#brew_preboil_sg").jqxNumberInput("decimal")),brew_preboil_ph:parseFloat($("#brew_preboil_ph").jqxNumberInput("decimal")),brew_preboil_efficiency:parseFloat($("#brew_preboil_efficiency").jqxNumberInput("decimal")),brew_aboil_volume:parseFloat($("#brew_aboil_volume").jqxNumberInput("decimal")),brew_aboil_sg:parseFloat($("#brew_aboil_sg").jqxNumberInput("decimal")),brew_aboil_ph:parseFloat($("#brew_aboil_ph").jqxNumberInput("decimal")),brew_aboil_efficiency:parseFloat($("#brew_aboil_efficiency").jqxNumberInput("decimal")),brew_cooling_method:$("#brew_cooling_method").val(),brew_cooling_time:parseFloat($("#brew_cooling_time").jqxNumberInput("decimal")),brew_cooling_to:parseFloat($("#brew_cooling_to").jqxNumberInput("decimal")),brew_whirlpool9:parseFloat($("#brew_whirlpool9").jqxNumberInput("decimal")),brew_whirlpool7:parseFloat($("#brew_whirlpool7").jqxNumberInput("decimal")),brew_whirlpool6:parseFloat($("#brew_whirlpool6").jqxNumberInput("decimal")),brew_whirlpool2:parseFloat($("#brew_whirlpool2").jqxNumberInput("decimal")),brew_fermenter_volume:parseFloat($("#brew_fermenter_volume").jqxNumberInput("decimal")),brew_fermenter_extrawater:parseFloat($("#brew_fermenter_extrawater").jqxNumberInput("decimal")),brew_fermenter_tcloss:parseFloat($("#brew_fermenter_tcloss").jqxNumberInput("decimal")),brew_aeration_time:parseFloat($("#brew_aeration_time").jqxNumberInput("decimal")),brew_aeration_speed:parseFloat($("#brew_aeration_speed").jqxNumberInput("decimal")),brew_aeration_type:$("#brew_aeration_type").val(),brew_fermenter_sg:parseFloat($("#brew_fermenter_sg").jqxNumberInput("decimal")),brew_fermenter_ibu:parseFloat($("#brew_fermenter_ibu").jqxNumberInput("decimal")),brew_fermenter_color:parseFloat($("#brew_fermenter_color").jqxNumberInput("decimal")),brew_date_end:$("#brew_date_end").val(),og:d.og,fg:parseFloat($("#fg").jqxNumberInput("decimal")),primary_start_temp:parseFloat($("#primary_start_temp").jqxNumberInput("decimal")),primary_max_temp:parseFloat($("#primary_max_temp").jqxNumberInput("decimal")),primary_end_temp:parseFloat($("#primary_end_temp").jqxNumberInput("decimal")),primary_end_sg:parseFloat($("#primary_end_sg").jqxNumberInput("decimal")),primary_end_date:$("#primary_end_date").val(),secondary_temp:parseFloat($("#secondary_temp").jqxNumberInput("decimal")),secondary_end_sg:parseFloat($("#secondary_end_sg").jqxNumberInput("decimal")),secondary_end_date:$("#secondary_end_date").val(),tertiary_temp:parseFloat($("#tertiary_temp").jqxNumberInput("decimal")),package_date:$("#package_date").val(),package_volume:parseFloat($("#package_volume").jqxNumberInput("decimal")),package_infuse_amount:parseFloat($("#package_infuse_amount").jqxNumberInput("decimal")),package_infuse_abv:parseFloat($("#package_infuse_abv").jqxNumberInput("decimal")),package_infuse_notes:$("#package_infuse_notes").val(),package_abv:parseFloat($("#package_abv").jqxNumberInput("decimal")),package_ph:parseFloat($("#package_ph").jqxNumberInput("decimal")),bottle_amount:parseFloat($("#bottle_amount").jqxNumberInput("decimal")),bottle_carbonation:parseFloat($("#bottle_carbonation").jqxNumberInput("decimal")),bottle_priming_water:parseFloat($("#bottle_priming_water").jqxNumberInput("decimal")),bottle_priming_amount:parseFloat($("#bottle_priming_amount").jqxNumberInput("decimal")),bottle_carbonation_temp:parseFloat($("#bottle_carbonation_temp").jqxNumberInput("decimal")),keg_amount:parseFloat($("#keg_amount").jqxNumberInput("decimal")),keg_carbonation:parseFloat($("#keg_carbonation").jqxNumberInput("decimal")),keg_priming_water:parseFloat($("#keg_priming_water").jqxNumberInput("decimal")),keg_priming_amount:parseFloat($("#keg_priming_amount").jqxNumberInput("decimal")),keg_carbonation_temp:parseFloat($("#keg_carbonation_temp").jqxNumberInput("decimal")),keg_forced_carb:d.keg_forced_carb,keg_pressure:parseFloat($("#keg_pressure").jqxNumberInput("decimal")),taste_notes:$("#taste_notes").val(),taste_rate:parseFloat($("#taste_rate").jqxNumberInput("decimal")),taste_date:$("#taste_date").val(),taste_color:$("#taste_color").val(),taste_transparency:$("#taste_transparency").val(),taste_head:$("#taste_head").val(),taste_aroma:$("#taste_aroma").val(),taste_taste:$("#taste_taste").val(),taste_mouthfeel:$("#taste_mouthfeel").val(),taste_aftertaste:$("#taste_aftertaste").val(),st_name:$("#st_name").val(),st_letter:$("#st_letter").val(),st_guide:$("#st_guide").val(),st_type:d.st_type,st_category:$("#st_category").val(),st_category_number:parseFloat($("#st_category_number").jqxNumberInput("decimal")),st_og_min:parseFloat($("#st_og_min").jqxNumberInput("decimal")),st_og_max:parseFloat($("#st_og_max").jqxNumberInput("decimal")),st_fg_min:parseFloat($("#st_fg_min").jqxNumberInput("decimal")),st_fg_max:parseFloat($("#st_fg_max").jqxNumberInput("decimal")),st_ibu_min:parseFloat($("#st_ibu_min").jqxNumberInput("decimal")),st_ibu_max:parseFloat($("#st_ibu_max").jqxNumberInput("decimal")),st_color_min:parseFloat($("#st_color_min").jqxNumberInput("decimal")),st_color_max:parseFloat($("#st_color_max").jqxNumberInput("decimal")),st_carb_min:parseFloat($("#st_carb_min").jqxNumberInput("decimal")),st_carb_max:parseFloat($("#st_carb_max").jqxNumberInput("decimal")),st_abv_min:parseFloat($("#st_abv_min").jqxNumberInput("decimal")),st_abv_max:parseFloat($("#st_abv_max").jqxNumberInput("decimal")),type:$("#type").val(),batch_size:parseFloat($("#batch_size").jqxNumberInput("decimal")),boil_size:parseFloat($("#boil_size").jqxNumberInput("decimal")),boil_time:parseFloat($("#boil_time").jqxNumberInput("decimal")),efficiency:parseFloat($("#efficiency").jqxNumberInput("decimal")),est_og:parseFloat($("#est_og").jqxNumberInput("decimal")),est_fg:parseFloat($("#est_fg").jqxNumberInput("decimal")),est_abv:parseFloat($("#est_abv").jqxNumberInput("decimal")),est_color:parseFloat($("#est_color").jqxNumberInput("decimal")),color_method:$("#color_method").val(),est_ibu:parseFloat($("#est_ibu").jqxNumberInput("decimal")),ibu_method:$("#ibu_method").val(),est_carb:parseFloat($("#est_carb").jqxNumberInput("decimal")),mash_name:$("#mash_name").val(),mash_ph:parseFloat($("#mash_ph").jqxNumberInput("decimal")),sparge_temp:parseFloat($("#sparge_temp").jqxNumberInput("decimal")),sparge_ph:parseFloat($("#sparge_ph").jqxNumberInput("decimal")),sparge_volume:parseFloat($("#sparge_volume").jqxNumberInput("decimal")),sparge_source:$("#sparge_source").val(),sparge_acid_type:$("#sparge_acid_type").val(),sparge_acid_perc:parseFloat($("#sparge_acid_perc").jqxNumberInput("decimal")),sparge_acid_amount:d.sparge_acid_amount,calc_acid:d.calc_acid,w1_name:$("#w1_name").val(),w1_amount:parseFloat($("#w1_amount").jqxNumberInput("decimal")),w1_calcium:parseFloat($("#w1_calcium").jqxNumberInput("decimal")),w1_sulfate:parseFloat($("#w1_sulfate").jqxNumberInput("decimal")),w1_chloride:parseFloat($("#w1_chloride").jqxNumberInput("decimal")),w1_sodium:parseFloat($("#w1_sodium").jqxNumberInput("decimal")),w1_magnesium:parseFloat($("#w1_magnesium").jqxNumberInput("decimal")),w1_total_alkalinity:parseFloat($("#w1_total_alkalinity").jqxNumberInput("decimal")),w1_ph:parseFloat($("#w1_ph").jqxNumberInput("decimal")),w1_cost:d.w1_cost,w2_name:$("#w2_name").val(),w2_amount:parseFloat($("#w2_amount").jqxNumberInput("decimal")),w2_calcium:parseFloat($("#w2_calcium").jqxNumberInput("decimal")),w2_sulfate:parseFloat($("#w2_sulfate").jqxNumberInput("decimal")),w2_chloride:parseFloat($("#w2_chloride").jqxNumberInput("decimal")),w2_sodium:parseFloat($("#w2_sodium").jqxNumberInput("decimal")),w2_magnesium:parseFloat($("#w2_magnesium").jqxNumberInput("decimal")),w2_total_alkalinity:parseFloat($("#w2_total_alkalinity").jqxNumberInput("decimal")),w2_ph:parseFloat($("#w2_ph").jqxNumberInput("decimal")),w2_cost:d.w2_cost,wg_amount:parseFloat($("#wg_amount").jqxNumberInput("decimal")),wg_calcium:parseFloat($("#wg_calcium").jqxNumberInput("decimal")),wg_sulfate:parseFloat($("#wg_sulfate").jqxNumberInput("decimal")),wg_chloride:parseFloat($("#wg_chloride").jqxNumberInput("decimal")),wg_sodium:parseFloat($("#wg_sodium").jqxNumberInput("decimal")),wg_magnesium:parseFloat($("#wg_magnesium").jqxNumberInput("decimal")),wg_total_alkalinity:parseFloat($("#wg_total_alkalinity").jqxNumberInput("decimal")),wg_ph:parseFloat($("#wg_ph").jqxNumberInput("decimal")),wb_calcium:parseFloat($("#wb_calcium").jqxNumberInput("decimal")),wb_sulfate:parseFloat($("#wb_sulfate").jqxNumberInput("decimal")),wb_chloride:parseFloat($("#wb_chloride").jqxNumberInput("decimal")),wb_sodium:parseFloat($("#wb_sodium").jqxNumberInput("decimal")),wb_magnesium:parseFloat($("#wb_magnesium").jqxNumberInput("decimal")),wb_total_alkalinity:parseFloat($("#wb_total_alkalinity").jqxNumberInput("decimal")),wb_ph:parseFloat($("#wb_ph").jqxNumberInput("decimal")),wa_acid_name:$("#wa_acid_name").val(),wa_acid_perc:parseFloat($("#wa_acid_perc").jqxNumberInput("decimal")),wa_base_name:$("#wa_base_name").val(),starter_enable:d.starter_enable,starter_type:$("#starter_type").val(),starter_sg:parseFloat($("#starter_sg").jqxNumberInput("decimal")),starter_viability:parseFloat($("#starter_viability").jqxNumberInput("decimal")),prop1_type:$("#prop1_type").val(),prop1_volume:parseFloat($("#prop1_volume").jqxNumberInput("decimal")),prop2_type:$("#prop2_type").val(),prop2_volume:parseFloat($("#prop2_volume").jqxNumberInput("decimal")),prop3_type:$("#prop3_type").val(),prop3_volume:parseFloat($("#prop3_volume").jqxNumberInput("decimal")),prop4_type:$("#prop4_type").val(),prop4_volume:parseFloat($("#prop4_volume").jqxNumberInput("decimal")),divide_type:d.divide_type,divide_size:d.divide_size,divide_parts:d.divide_parts,fermentables:$("#fermentableGrid").jqxGrid("getrows"),hops:$("#hopGrid").jqxGrid("getrows"),miscs:$("#miscGrid").jqxGrid("getrows"),yeasts:$("#yeastGrid").jqxGrid("getrows"),mashs:$("#mashGrid").jqxGrid("getrows")},a3="update=true&"+$.param(a4);$.ajax({dataType:"json",url:E,cache:false,data:a3,async:false,type:"POST",success:function(a6,a5,a7){console.log("saveRecord("+i+") success");if(i){window.location.href=my_return}else{window.location.href="prod_export.php?record="+my_record+"&return="+my_return+"&select="+my_select+"&code="+d.code+"&name="+d.name+"&stage="+d.stage+"&split="+d.divide_type}},error:function(a5,a7,a6){console.log("saveRecord() "+a7)}})}ah.dataBind();$("#name").jqxTooltip({content:"De naam voor dit product."});$("#name").jqxInput({theme:theme,width:640,height:23});$("#code").jqxTooltip({content:"Product code nummer."});$("#code").jqxInput({theme:theme,width:100,height:23});$("#birth").jqxTooltip({content:"De ontwerp datum van dit product."});$("#birth").jqxInput({theme:theme,width:120,height:23});$("#stage").jqxTooltip({content:"De productie fase van dit product."});$("#stage").jqxInput({theme:theme,width:100,height:23});$("#locked").jqxCheckBox({theme:theme,width:120,height:23,disabled:true});$("#locked").on("checked",function(i){if(d.stage>=10){d.locked=1;d.stage=11;aV()}});$("#locked").on("unchecked",function(i){if(d.stage>=10){d.locked=0;d.stage=10;aV()}});$("#divide_parts").jqxTooltip({content:"Het aantal gesplitste brouw producten."});$("#divide_parts").jqxNumberInput(Show0dec);$("#divide_type").jqxTooltip({content:"Het splitsing moment in het productie proces."});$("#divide_type").jqxInput({theme:theme,width:120,height:23});$("#notes").jqxTooltip({content:"De uitgebreide opmerkingen over dit product."});$("#notes").jqxInput({theme:theme,width:960,height:100});$("#type").jqxTooltip({content:"Het brouw type van dit recept."});$("#type").jqxDropDownList({theme:theme,source:RecipeTypeAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#efficiency").jqxTooltip({content:"Het rendement van maischen en koken."});$("#efficiency").jqxNumberInput(Perc1dec);$("#batch_size").jqxTooltip({content:"Het volume van het gekoelde wort na het koken."});$("#batch_size").jqxNumberInput(Spin1dec);$("#batch_size").jqxNumberInput({min:4});$("#boil_time").jqxTooltip({content:"De kooktijd in minuten."});$("#boil_time").jqxNumberInput(PosInt);$("#boil_time").jqxNumberInput({min:4,max:360});$("#boil_size").jqxTooltip({content:"Het volume van het wort voor het koken."});$("#boil_size").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:2,readOnly:true});$("#st_guide").jqxTooltip({content:"De bierstijl gids voor dit recept."});$("#st_guide").jqxInput({theme:theme,width:250,height:23});$("#st_name").jqxTooltip({content:"De bierstijl naam voor dit recept."});$("#st_name").jqxInput({theme:theme,width:250,height:23});$("#st_letter").jqxTooltip({content:"De bierstijl letter voor dit recept."});$("#st_letter").jqxInput({theme:theme,width:90,height:23});$("#st_type").jqxTooltip({content:"Het bierstijl type."});$("#st_type").jqxInput({theme:theme,width:250,height:23});$("#st_category").jqxTooltip({content:"De Amerikaanse bierstijl categorie."});$("#st_category").jqxInput({theme:theme,width:250,height:23});$("#st_category_number").jqxTooltip({content:"De Amerikaanse bierstijl categorie sub nummer."});$("#st_category_number").jqxNumberInput(Smal0dec);$("#est_og").jqxTooltip({content:"Het begin SG wat je wilt bereiken. De moutstort wordt automatisch herberekend."});$("#est_og").jqxNumberInput(SGopts);$("#st_og_min").jqxTooltip({content:"Het minimum begin SG voor deze bierstijl."});$("#st_og_min").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:3,readOnly:true});$("#st_og_max").jqxTooltip({content:"Het maximum begin SG voor deze bierstijl."});$("#st_og_max").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:3,readOnly:true});$("#est_fg").jqxTooltip({content:"Het verwachte eind SG. Dit wordt automatisch berekend."});$("#est_fg").jqxNumberInput(Show3dec);$("#st_fg_min").jqxTooltip({content:"Het minimum eind SG voor deze bierstijl."});$("#st_fg_min").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:3,readOnly:true});$("#st_fg_max").jqxTooltip({content:"Het maximum eind SG voor deze bierstijl."});$("#st_fg_max").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:3,readOnly:true});$("#est_abv").jqxTooltip({content:"Alcohol volume %. Dit wordt automatisch berekend."});$("#est_abv").jqxNumberInput(Smal1dec);$("#st_abv_min").jqxTooltip({content:"Het minimum alcohol volume % voor deze bierstijl."});$("#st_abv_min").jqxNumberInput(Smal1dec);$("#st_abv_max").jqxTooltip({content:"Het maximum alcohol volume % voor deze bierstijl."});$("#st_abv_max").jqxNumberInput(Smal1dec);$("#est_color").jqxTooltip({content:"De kleur in EBC. Dit wordt automatisch berekend."});$("#est_color").jqxNumberInput(Show0dec);$("#st_color_min").jqxTooltip({content:"De minimum kleur voor deze bierstijl."});$("#st_color_min").jqxNumberInput(Smal0dec);$("#st_color_max").jqxTooltip({content:"De maximum kleur voor deze bierstijl."});$("#st_color_max").jqxNumberInput(Smal0dec);$("#color_method").jqxDropDownList({theme:theme,source:ColorMethodAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#est_ibu").jqxTooltip({content:"De bitterheid in IBU. Dit wordt automatisch berekend."});$("#est_ibu").jqxNumberInput(Show0dec);$("#st_ibu_min").jqxTooltip({content:"De minimum bitterheid voor deze bierstijl."});$("#st_ibu_min").jqxNumberInput(Smal0dec);$("#st_ibu_max").jqxTooltip({content:"De maximum bitterheid voor deze bierstijl."});$("#st_ibu_max").jqxNumberInput(Smal0dec);$("#ibu_method").jqxDropDownList({theme:theme,source:IBUmethodAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true,dropDownVerticalAlignment:"top"});$("#kcal").jqxTooltip({content:"Energie-inhoud in kcal/liter."});$("#kcal").jqxNumberInput(Smal0dec);$("#est_carb").jqxTooltip({content:"Koolzuur volume. Dit wordt automatisch berekend."});$("#est_carb").jqxNumberInput(Smal1dec);$("#st_carb_min").jqxTooltip({content:"Het minimum koolzuur volume voor deze bierstijl."});$("#st_carb_min").jqxNumberInput(Smal1dec);$("#st_carb_max").jqxTooltip({content:"Het maximum koolzuur volume voor deze bierstijl."});$("#st_carb_max").jqxNumberInput(Smal1dec);$("#eq_name").jqxTooltip({content:"De naam van deze brouw apparatuur."});$("#eq_name").jqxInput({theme:theme,width:250,height:23});$("#eq_boil_size").jqxTooltip({content:"Normaal kook volume in liters"});$("#eq_boil_size").jqxNumberInput(Show1dec);$("#eq_batch_size").jqxTooltip({content:"Berekende batch grootte in liters aan het eind van de kook."});$("#eq_batch_size").jqxNumberInput(Show1dec);$("#eq_tun_volume").jqxTooltip({content:"Maisch ketel volume."});$("#eq_tun_volume").jqxNumberInput(Show1dec);$("#eq_top_up_water").jqxTooltip({content:"Extra water in het gistvat."});$("#eq_top_up_water").jqxNumberInput(Show1dec);$("#eq_trub_chiller_loss").jqxTooltip({content:"Standaard verlies bij het overbrengen naar het gistvat."});$("#eq_trub_chiller_loss").jqxNumberInput(Show1dec);$("#eq_evap_rate").jqxTooltip({content:"Verdamping in liters per uur."});$("#eq_evap_rate").jqxNumberInput(Show2dec);$("#eq_boil_time").jqxTooltip({content:"Normale kooktijd in minuten."});$("#eq_boil_time").jqxNumberInput(Show0dec);$("#eq_top_up_kettle").jqxTooltip({content:"Extra water toevoegen tijdens de kook."});$("#eq_top_up_kettle").jqxNumberInput(Show1dec);$("#eq_hop_utilization").jqxTooltip({content:"100% voor kleine installaties, hoger voor grote brouwerijen."});$("#eq_hop_utilization").jqxNumberInput(Show0dec);$("#eq_notes").jqxTooltip({content:"Opmerkingen over deze apparatuur."});$("#eq_notes").jqxInput({theme:theme,width:960,height:200});$("#eq_lauter_volume").jqxTooltip({content:"Filterkuip volume."});$("#eq_lauter_volume").jqxNumberInput(Show1dec);$("#eq_lauter_deadspace").jqxTooltip({content:"Filterkuip verlies in liters."});$("#eq_lauter_deadspace").jqxNumberInput(Show1dec);$("#eq_kettle_volume").jqxTooltip({content:"Kook ketel volume in liters."});$("#eq_kettle_volume").jqxNumberInput(Show1dec);$("#eq_mash_volume").jqxTooltip({content:"Maisch water voor de eerste stap."});$("#eq_mash_volume").jqxNumberInput(Show1dec);$("#eq_mash_max").jqxTooltip({content:"De maximale moutstort in Kg."});$("#eq_mash_max").jqxNumberInput(Show1dec);$("#eq_efficiency").jqxTooltip({content:"Gemiddeld brouwzaal rendement."});$("#eq_efficiency").jqxNumberInput(Show1dec);$("#est_color2").jqxTooltip({content:"De kleur in EBC. Dit wordt automatisch berekend."});$("#est_color2").jqxNumberInput(Show0dec);$("#est_og2").jqxTooltip({content:"Het geschatte begin SG van dit product."});$("#est_og2").jqxNumberInput(Show3dec);$("#mash_kg").jqxTooltip({content:"Het gewicht van alle mouten in de maisch."});$("#mash_kg").jqxNumberInput(Show3dec);$("#perc_malts").jqxProgressBar({width:300,height:23,theme:theme,showText:true,max:120,animationDuration:0,colorRanges:[{stop:90,color:"#008C00"},{stop:100,color:"#EB7331"},{stop:120,color:"#FF0000"}],renderText:function(i){return(Math.round(parseInt(i)*1.2))+"%"}});$("#perc_sugars").jqxProgressBar({width:300,height:23,theme:theme,showText:true,max:50,animationDuration:0,colorRanges:[{stop:20,color:"#008C00"},{stop:50,color:"#FF0000"}],renderText:function(i){return(Math.round(parseInt(i)*5)/10)+"%"}});$("#perc_cara").jqxProgressBar({width:300,height:23,theme:theme,showText:true,max:50,animationDuration:0,colorRanges:[{stop:25,color:"#008C00"},{stop:50,color:"#FF0000"}],renderText:function(i){return(Math.round(parseInt(i)*5)/10)+"%"}});$("#ferm_lintner").jqxProgressBar({width:300,height:23,theme:theme,showText:true,max:200,animationDuration:0,colorRanges:[{stop:30,color:"#FF0000"},{stop:40,color:"#EB7331"},{stop:200,color:"#008C00"}],renderText:function(i){return(parseInt(i)*2)+" lintner"}});$("#popupFermentable").jqxWindow({width:800,height:300,position:{x:230,y:100},resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#FermentableReady"),modalOpacity:0.4});$("#FermentableReady").jqxButton({template:"success",width:"90px",theme:theme});$("#FermentableReady").click(function(){var a3,i=$("#fermentableGrid").jqxGrid("getrowid",u);console.log("FermentableReady row:"+u+" ID:"+i);a3={f_name:aL.f_name,f_origin:aL.f_origin,f_supplier:aL.f_supplier,f_amount:aL.f_amount,f_cost:aL.f_cost,f_type:aL.f_type,f_yield:aL.f_yield,f_color:aL.f_color,f_coarse_fine_diff:aL.f_coarse_fine_diff,f_moisture:aL.f_moisture,f_diastatic_power:aL.f_diastatic_power,f_protein:aL.f_protein,f_max_in_batch:aL.f_max_in_batch,f_graintype:aL.f_graintype,f_added:aL.f_added,f_dissolved_protein:aL.f_dissolved_protein,f_recommend_mash:aL.f_recommend_mash,f_add_after_boil:aL.f_add_after_boil,f_adjust_to_total_100:aL.f_adjust_to_total_100,f_percentage:aL.f_percentage,f_di_ph:aL.f_di_ph,f_acid_to_ph_57:aL.f_acid_to_ph_57,f_inventory:aL.f_inventory,f_avail:aL.f_avail};$("#fermentableGrid").jqxGrid("updaterow",i,a3);aW();U();at();aO()});$("#wf_name").jqxInput({theme:theme,width:320,height:23});$("#wf_instock").jqxCheckBox({theme:theme,height:23});$("#wf_instock").on("change",function(i){fermentableinstock=i.args.checked;fermentablelist.dataBind()});$("#wf_select").jqxDropDownList({placeHolder:"Kies mout:",theme:theme,source:fermentablelist,displayMember:"name",width:150,height:23,dropDownWidth:500,dropDownHeight:500,renderer:function(a3,i,a5){var a4=fermentablelist.records[a3];return a4.supplier+" / "+a4.name+" ("+a4.color+" EBC)"}});$("#wf_select").on("select",function(a4){if(a4.args){var a3,i=a4.args.index;a3=fermentablelist.records[i];$("#wf_name").val(a3.name);aL.f_name=a3.name;aL.f_origin=a3.origin;aL.f_supplier=a3.supplier;aL.f_type=a3.type;aL.f_cost=a3.cost;aL.f_yield=a3.yield;aL.f_color=a3.color;aL.f_coarse_fine_diff=a3.coarse_fine_diff;aL.f_moisture=a3.moisture;aL.f_diastatic_power=a3.diastatic_power;aL.f_protein=a3.protein;aL.f_max_in_batch=a3.max_in_batch;aL.f_graintype=a3.graintype;aL.f_dissolved_protein=a3.dissolved_protein;aL.f_recommend_mash=a3.recommend_mash;aL.f_add_after_boil=a3.add_after_boil;aL.f_di_ph=a3.di_ph;aL.f_acid_to_ph_57=a3.acid_to_ph_57;aL.f_inventory=a3.inventory}});$("#wf_amount").jqxNumberInput(Spin3dec);$("#wf_amount").on("change",function(i){console.log("amount changed: "+i.args.value);$("#fermentableGrid").jqxGrid("setcellvalue",u,"f_amount",i.args.value);aL.f_amount=i.args.value;if(!l){aW();U();at();aO()}});$("#wf_percentage").jqxNumberInput(Perc1dec);$("#wf_percentage").on("change",function(a3){var a5,a9,bb,ba,a6,a8,i,a7,bc,a4=Math.round(aL.f_percentage*10)/10;a5=a3.args.value;console.log("percentage changed: "+a5+" old: "+a4);aL.f_percent=a5;a9=$("#fermentableGrid").jqxGrid("getdatainformation").rowscount;if((a4!=a5)&&(a9>1)){bb=$("#fermentableGrid").jqxGrid("getrowdata",u);if(bb.f_adjust_to_total_100){$("#wf_percentage").val(a4)}else{ba=a5-a4;a6=0;for(ae=0;aeparseFloat($("#boil_time").jqxNumberInput("decimal"))){a3=parseFloat($("#boil_time").jqxNumberInput("decimal"));$("#wh_time").val(a3)}e.h_time=a3}else{if(e.h_useat==4){if(a3>120){a3=120;$("#wh_time").val(a3)}e.h_time=a3}else{if(e.h_useat==5){if(a3>21){a3=21;$("#wh_time").val(a3)}e.h_time=a3*1440}}}a4=toIBU(e.h_useat,e.h_form,al,parseFloat($("#batch_size").jqxNumberInput("decimal")),parseFloat(e.h_amount),parseFloat(e.h_time),parseFloat(e.h_alpha),$("#ibu_method").val());$("#wh_ibu").val(a4)});$("#wh_useat").jqxDropDownList({theme:theme,source:HopUseAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true,dropDownVerticalAlignment:"top"});$("#wh_useat").on("select",function(a3){if(a3.args){var i=a3.args.index;e.h_useat=i;if((i==0)||(i==1)){e.h_time=parseFloat(d.boil_time);$("#wh_time").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#wh_time").val(e.h_time)}else{if(i==3){e.h_time=0;$("#wh_time").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#wh_time").val(0)}else{$("#wh_time").jqxNumberInput({spinButtons:true,readOnly:false,width:110})}}if(i==5){$("#wh_pmpt_time").html("Tijd in dagen")}else{$("#wh_pmpt_time").html("Tijd in minuten")}}});$("#popupMisc").jqxWindow({width:800,height:275,position:{x:230,y:100},resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#MiscReady"),modalOpacity:0.4});$("#MiscReady").jqxButton({template:"success",width:"90px",theme:theme});$("#MiscReady").click(function(){var a3,i=$("#miscGrid").jqxGrid("getrowid",aw);console.log("MiscReady row:"+aw+" ID:"+i);a3={m_name:aH.m_name,m_amount:aH.m_amount,m_cost:aH.m_cost,m_type:aH.m_type,m_use_use:aH.m_use_use,m_time:aH.m_time,m_amount_is_weight:aH.m_amount_is_weight,m_inventory:aH.m_inventory,m_avail:aH.m_avail};$("#miscGrid").jqxGrid("updaterow",i,a3);aG()});$("#wm_name").jqxInput({theme:theme,width:320,height:23});$("#wm_instock").jqxCheckBox({theme:theme,height:23});$("#wm_instock").on("change",function(i){miscinstock=i.args.checked;misclist.dataBind()});$("#wm_select").jqxDropDownList({placeHolder:"Kies ingrediënt:",theme:theme,source:misclist,displayMember:"name",width:150,height:23,dropDownWidth:500,dropDownHeight:500});$("#wm_select").on("select",function(a4){if(a4.args){var a3,i=a4.args.index;a3=misclist.records[i];$("#wm_name").val(a3.name);aH.m_name=a3.name;aH.m_cost=a3.cost;aH.m_type=a3.type;aH.m_use_use=a3.use_use;aH.m_amount_is_weight=a3.amount_is_weight;aH.m_inventory=a3.inventory}});$("#wm_amount").jqxNumberInput(Spin2dec);$("#wm_amount").on("change",function(i){console.log("amount changed: "+i.args.value);aH.m_amount=parseFloat(i.args.value)/1000});$("#wm_time").jqxNumberInput(PosInt);$("#wm_time").on("change",function(i){var a3=parseFloat(i.args.value);if(aH.m_use_use==2){if(a3>parseFloat($("#boil_time").jqxNumberInput("decimal"))){a3=parseFloat($("#boil_time").jqxNumberInput("decimal"));$("#wm_time").val(a3)}aH.m_time=a3}else{if((aH.m_use_use==3)||(aH.m_use_use==4)){if(a3>21){a3=21;$("#wm_time").val(a3)}aH.m_time=a3*1440}}});$("#wm_use_use").jqxDropDownList({theme:theme,source:MiscUseAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true,dropDownVerticalAlignment:"top"});$("#wm_use_use").on("select",function(a3){if(a3.args){var i=a3.args.index;aH.m_use_use=i;if((i==2)||(i==3)||(i==4)){$("#wm_time").jqxNumberInput({spinButtons:true,readOnly:false,width:110})}else{$("#wm_time").jqxNumberInput({spinButtons:false,readOnly:true,width:90});$("#wm_time").val(0);aH.m_time=0}}});$("#est_fg2").jqxTooltip({content:"Het verwachte eind SG. Dit wordt automatisch berekend."});$("#est_fg2").jqxNumberInput(Show3dec);$("#est_abv2").jqxTooltip({content:"Alcohol volume %. Dit wordt automatisch berekend."});$("#est_abv2").jqxNumberInput(Smal1dec);$("#yeast_cells").jqxTooltip({content:"Het aantal beschikbare gistcellen zonder eventuele starter."});$("#yeast_cells").jqxNumberInput(Show1dec);$("#need_cells").jqxTooltip({content:"Het aantal nodige cellen is afhankelijk van het biertype."});$("#need_cells").jqxNumberInput(Show1dec);$("#plato_cells").jqxTooltip({content:"De berekende hoeveelheid gistcellen in miljard per ml per graad Plato. Dit is de zogenaamde pitchrate."});$("#plato_cells").jqxNumberInput(Show2dec);$("#popupYeast").jqxWindow({width:800,height:300,position:{x:230,y:100},resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#YeastReady"),modalOpacity:0.4});$("#YeastReady").jqxButton({template:"success",width:"90px",theme:theme});$("#YeastReady").click(function(){var a3,i=$("#yeastGrid").jqxGrid("getrowid",aE);console.log("YeastReady row:"+aE+" ID:"+i);a3={y_name:f.y_name,y_laboratory:f.y_laboratory,y_product_id:f.y_product_id,y_amount:f.y_amount,y_cost:f.y_cost,y_type:f.y_type,y_form:f.y_form,y_flocculation:f.y_flocculation,y_min_temperature:f.y_min_temperature,y_max_temperature:f.y_max_temperature,y_attenuation:f.y_attenuation,y_use:f.y_use,y_cells:f.y_cells,y_tolerance:f.y_tolerance,y_inventory:f.y_inventory,y_avail:f.y_avail};$("#yeastGrid").jqxGrid("updaterow",i,a3);U();Y()});$("#wy_name").jqxInput({theme:theme,width:320,height:23});$("#wy_laboratory").jqxInput({theme:theme,width:320,height:23});$("#wy_product_id").jqxInput({theme:theme,width:320,height:23});$("#wy_instock").jqxCheckBox({theme:theme,height:23});$("#wy_instock").on("change",function(i){yeastinstock=i.args.checked;yeastlist.dataBind()});$("#wy_select").jqxDropDownList({placeHolder:"Kies gist:",theme:theme,source:yeastlist,displayMember:"name",width:150,height:23,dropDownWidth:500,dropDownHeight:500,renderer:function(a3,i,a5){var a4=yeastlist.records[a3];return a4.laboratory+" "+a4.product_id+" "+a4.name}});$("#wy_select").on("select",function(a4){if(a4.args){var a3,i=a4.args.index;a3=yeastlist.records[i];$("#wy_name").val(a3.name);$("#wy_laboratory").val(a3.laboratory);$("#wy_product_id").val(a3.product_id);f.y_name=a3.name;f.y_cost=a3.cost;f.y_type=a3.type;f.y_form=a3.form;f.y_laboratory=a3.laboratory;f.y_product_id=a3.product_id;f.y_min_temperature=a3.min_temperature;f.y_max_temperature=a3.max_temperature;f.y_flocculation=a3.flocculation;f.y_attenuation=a3.attenuation;f.y_cells=a3.cells;f.y_inventory=a3.inventory;if(f.y_form==0){$("#wy_pmpt_amount").html("Pak(ken):")}else{if(f.y_form==1||f.y_form==6){$("#wy_pmpt_amount").html("Gewicht gram:")}else{$("#wy_pmpt_amount").html("Volume ml:")}}U();Y()}});$("#wy_amount").jqxNumberInput(Spin1dec);$("#wy_amount").on("change",function(a3){var i=parseFloat(a3.args.value);if(f.y_form!=0){i=parseFloat(a3.args.value)/1000}f.y_amount=i;U();Y()});$("#wy_use").jqxDropDownList({theme:theme,source:YeastUseAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true,dropDownVerticalAlignment:"top"});$("#wy_use").on("select",function(a3){if(a3.args){var i=a3.args.index;f.y_use=i;U();Y()}});for(ae=1;ae<5;ae++){$("#prop"+ae+"_type").jqxDropDownList({theme:theme,source:StarterTypeAdapter,valueMember:"id",displayMember:"nl",width:120,height:23,autoDropDownHeight:true});$("#prop"+ae+"_type").hide();$("#prop"+ae+"_volume").jqxTooltip({content:"Het volume van deze starter stap."});$("#prop"+ae+"_volume").jqxNumberInput(Spin3dec);$("#prop"+ae+"_volume").hide();$("#prop"+ae+"_irate").jqxTooltip({content:"Voor de beste gistgroei, houd de injectie factor tussen de 25 en 100 miljoen cellen per ml."});$("#prop"+ae+"_irate").jqxNumberInput(Show1dec);$("#prop"+ae+"_irate").hide();$("#prop"+ae+"_ncells").jqxTooltip({content:"Het aantal miljard nieuwe gistcellen in deze stap."});$("#prop"+ae+"_ncells").jqxNumberInput(Show1dec);$("#prop"+ae+"_ncells").hide();$("#prop"+ae+"_tcells").jqxTooltip({content:"Het totaal aantal miljard gistcellen na deze stap."});$("#prop"+ae+"_tcells").jqxNumberInput(Show1dec);$("#prop"+ae+"_tcells").hide();$("#prop"+ae+"_growf").jqxTooltip({content:"De groeifactor, minstens 1. Ongeroerde starters komen meestal niet boven de 3."});$("#prop"+ae+"_growf").jqxNumberInput(Show2dec);$("#prop"+ae+"_growf").hide()}$("#starter_enable").jqxCheckBox({theme:theme,height:23});$("#starter_type").jqxDropDownList({theme:theme,source:StarterTypeAdapter,valueMember:"id",displayMember:"nl",width:120,height:23,autoDropDownHeight:true});$("#starter_sg").jqxTooltip({content:"Het ideale starter SG moet tussen de 1.030 en 1.040 zijn. Optimaal is 1.037."});$("#starter_sg").jqxNumberInput(SGopts);$("#starter_viability").jqxTooltip({content:"De gist conditie te berekenen vanaf de productie datum. Vloeibare gist verlist iedere maand ongeveer 20% active cellen."});$("#starter_viability").jqxNumberInput(Perc0);$("#starter_try").jqxButton({template:"primary",width:"100px",height:23,theme:theme});$("#mash_name").jqxTooltip({content:"De omschrijving van dit maisch profiel."});$("#mash_name").jqxInput({theme:theme,width:320,height:23});$("#mash_select").jqxDropDownList({placeHolder:"Kies schema:",theme:theme,source:mashlist,displayMember:"name",width:250,height:23,dropDownWidth:500,dropDownHeight:500,dropDownHorizontalAlignment:"right"});$("#mash_select").on("select",function(a7){if(a7.args){var a9,a6,a3,a8,a5,ba,a4=a7.args.index;a3=new Array();a8=$("#mashGrid").jqxGrid("getdisplayrows");for(a5=0;a50){C=d.w1_amount}if(a5==0){ba.step_infuse_amount=C}else{ba.step_infuse_amount=0}if(ap>0){ba.step_thickness=parseFloat(C/ap)}else{ba.step_thickness=0}ba.step_temp=a9.step_temp;ba.end_temp=a9.end_temp;ba.step_time=a9.step_time;ba.ramp_time=a9.ramp_time;$("#mashGrid").jqxGrid("addrow",null,ba)}aO()}});$("#est_mashvol").jqxTooltip({content:"Het totale volume van het maishwater en de mout in de maish pan."});$("#est_mashvol").jqxNumberInput(Show1dec);$("#est_mashtime").jqxTooltip({content:"De totale tijdsduur van het maischen."});$("#est_mashtime").jqxInput({theme:theme,width:70,height:23});$("#popupMash").jqxWindow({width:800,height:350,position:{x:230,y:100},resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#MashReady"),modalOpacity:0.4});$("#MashReady").jqxButton({template:"success",width:"90px",theme:theme});$("#MashReady").click(function(){aO()});$("#wstep_name").jqxInput({theme:theme,width:320,height:23});$("#wstep_name").on("change",function(i){var a3=$("#mashGrid").jqxGrid("getrowdata",ak);a3.step_name=i.args.value});$("#wstep_type").jqxDropDownList({theme:theme,source:MashStepTypeAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#wstep_type").on("select",function(a5){if(a5.args){var a8,a4,a6,a7,a3=a5.args.index;a8=$("#mashGrid").jqxGrid("getrowdata",ak);a8.step_type=a3;if(a3==0){$("#wstep_infuse_amount").show();$("#wstep_pmpt").show()}else{a8.step_infuse_amount=0;$("#wstep_infuse_amount").hide();$("#wstep_pmpt").hide()}C=0;a6=$("#mashGrid").jqxGrid("getrows");for(a4=0;a4=0){a9=$("#fermentableGrid").jqxGrid("getrowid",a6);$("#fermentableGrid").jqxGrid("updaterow",a9,ba)}else{$("#fermentableGrid").jqxGrid("addrow",null,ba)}aS()}});$("#keg_priming_sugar").jqxDropDownList({placeHolder:"Kies suiker:",theme:theme,source:fermentablesugars,displayMember:"name",width:200,height:23,dropDownWidth:300,dropDownHeight:400});$("#keg_priming_sugar").on("select",function(a7){if(a7.args){var a9,a3,a6=-1,a5,a8,a4,ba={};a3=a7.args.index;a5=fermentablesugars.records[a3];a8=$("#fermentableGrid").jqxGrid("getrows");for(a4=0;a4=0){a9=$("#fermentableGrid").jqxGrid("getrowid",a6);$("#fermentableGrid").jqxGrid("updaterow",a9,ba)}else{$("#fermentableGrid").jqxGrid("addrow",null,ba)}aS()}});$("#bottle_priming_amount").jqxNumberInput(Show1dec);$("#bottle_priming_water").jqxTooltip({content:"De hoeveelheid water om de suiker op te lossen."});$("#bottle_priming_water").jqxNumberInput(Spin3dec);$("#keg_priming_amount").jqxNumberInput(Show1dec);$("#keg_priming_water").jqxTooltip({content:"De hoeveelheid water om de suiker op te lossen."});$("#keg_priming_water").jqxNumberInput(Spin3dec);$("#bottle_priming_total").jqxNumberInput(Show1dec);$("#bottle_pressure").jqxTooltip({content:"De maximaal te verwachten druk tijdens het hergisten."});$("#bottle_pressure").jqxNumberInput(Show1dec);$("#keg_priming_total").jqxNumberInput(Show1dec);$("#keg_forced_carb").jqxCheckBox({theme:theme,width:120,height:23});$("#keg_pressure").jqxNumberInput(Show1dec);$("#bottle_abv").jqxNumberInput(Show2dec);$("#keg_abv").jqxNumberInput(Show2dec);$("#bottle_carbonation_temp").jqxNumberInput(YeastT);$("#keg_carbonation_temp").jqxNumberInput(YeastT);$("#taste_date").jqxTooltip({content:"De proef datum van dit bier."});$("#taste_date").jqxDateTimeInput(Dateopts);$("#taste_date").on("close",function(i){aV()});$("#taste_rate").jqxTooltip({content:"Het cijfer voor dit bier van 1 tot 10."});$("#taste_rate").jqxNumberInput(Spin1dec);$("#taste_rate").jqxNumberInput({max:10});$("#taste_color").jqxTooltip({content:"De kleur van het bier."});$("#taste_color").jqxInput({theme:theme,width:320,height:23});$("#taste_transparency").jqxTooltip({content:"De helderheid van het bier."});$("#taste_transparency").jqxInput({theme:theme,width:320,height:23});$("#taste_head").jqxTooltip({content:"Het schuim op het bier."});$("#taste_head").jqxInput({theme:theme,width:320,height:23});$("#taste_aroma").jqxTooltip({content:"Het aroma van het bier."});$("#taste_aroma").jqxInput({theme:theme,width:960,height:23});$("#taste_taste").jqxTooltip({content:"De smaak van het bier."});$("#taste_taste").jqxInput({theme:theme,width:960,height:23});$("#taste_aftertaste").jqxTooltip({content:"De nasmaak van het bier."});$("#taste_aftertaste").jqxInput({theme:theme,width:960,height:23});$("#taste_mouthfeel").jqxTooltip({content:"Het mondgevoelvan het bier."});$("#taste_mouthfeel").jqxInput({theme:theme,width:960,height:23});$("#taste_notes").jqxTooltip({content:"Het oordeel en opmerkingen over dit bier."});$("#taste_notes").jqxInput({theme:theme,width:960,height:100});$("#jqxTabs").jqxTabs({theme:theme,width:1280,height:660,autoHeight:false,position:"top"});$("#Export").jqxButton({template:"info",width:"80px",theme:theme});$("#Export").bind("click",function(){s(0)});$("#Delete").jqxButton({template:"danger",width:"80px",theme:theme});$("#Delete").bind("click",function(){$("#eventWindow").jqxWindow("open");$("#delOk").click(function(){var i="delete=true&"+$.param({uuid:d.uuid});$.ajax({dataType:"json",url:E,cache:false,data:i,type:"POST",success:function(a4,a3,a5){window.location.href=my_return},error:function(a3,a5,a4){}})})});$("#Cancel").jqxButton({template:"primary",width:"80px",theme:theme});$("#Cancel").bind("click",function(){window.location.href=my_return});$("#Save").jqxButton({template:"success",width:"80px",theme:theme});$("#Save").bind("click",function(){s(1)});createDelElements()}); \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/prod_edit.js --- a/www/js/prod_edit.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/prod_edit.js Fri Oct 18 13:12:46 2019 +0200 @@ -305,6 +305,9 @@ { name: 'prop3_volume', type: 'float' }, { name: 'prop4_type', type: 'int' }, { name: 'prop4_volume', type: 'float' }, + { name: 'divide_type', type: 'int' }, + { name: 'divide_size', type: 'float' }, + { name: 'divide_parts', type: 'int' }, { name: 'fermentables', type: 'array' }, { name: 'hops', type: 'array' }, { name: 'miscs', type: 'array' }, @@ -530,6 +533,9 @@ $('#prop3_volume').val(dataRecord.prop3_volume); $('#prop4_type').val(dataRecord.prop4_type); $('#prop4_volume').val(dataRecord.prop4_volume); + $('#divide_type').val(SplitData[dataRecord.divide_type].nl); + // hidden divide_size + $('#divide_parts').val(dataRecord.divide_parts); editFermentable(dataRecord); editHop(dataRecord); editMisc(dataRecord); @@ -1397,7 +1403,7 @@ var amount = dataAdapter.formatNumber(value * 1000, 'f0') + ' ml'; if (rowdata.y_form == 0) // Liquid amount = dataAdapter.formatNumber(value, 'f0') + ' pk'; - else if (rowdata.y_form == 1) // Dry + else if (rowdata.y_form == 1 || rowdata.y_form == 6) // Dry amount = dataAdapter.formatNumber(value * 1000, 'f1') + ' gr'; return '' + amount + ''; } @@ -1415,7 +1421,7 @@ amount = dataAdapter.formatNumber(value * 1000, 'f0') + ' ml'; if (rowdata.y_form == 0) // Liquid amount = dataAdapter.formatNumber(value, 'f0') + ' pk'; - else if (rowdata.y_form == 1) // Dry + else if (rowdata.y_form == 1 || rowdata.y_form == 6) // Dry amount = dataAdapter.formatNumber(value * 1000, 'f1') + ' gr'; return '' + amount + ''; } else { @@ -1436,7 +1442,7 @@ $('#wy_pmpt_amount').html('Pak(ken):'); $('#wy_amount').val(yeastData.y_amount); $('#wy_amount').jqxNumberInput({ decimalDigits: 0 }); - } else if (yeastData.y_form == 1) { + } else if (yeastData.y_form == 1 || yeastData.y_form == 6) { $('#wy_pmpt_amount').html('Gewicht gram:'); $('#wy_amount').val(yeastData.y_amount * 1000); $('#wy_amount').jqxNumberInput({ decimalDigits: 1 }); @@ -2089,7 +2095,7 @@ ncells = Round(egrams * grate, 1), totcells = parseFloat(ncells) + start; - console.log('svol:' + svol + ' start:' + start + ' irate:' + irate + ' egrams:' + egrams + ' grate:' + grate + ' ncells:' + ncells); + //console.log('svol:' + svol + ' start:' + start + ' irate:' + irate + ' egrams:' + egrams + ' grate:' + grate + ' ncells:' + ncells); return { svol: svol, irate: irate, @@ -2348,13 +2354,15 @@ // pitchrate = 1.25; // Wyeast labs. http://www.wyeastlab.com/hb_pitchrates.cfm if (row.y_type == 0) // lager yeast pitchrate *= 2; + if (row.y_type == 6) // Kveik + pitchrate = 0.25; // Who knows. // if (row.y_form == 1) { // dry yeast // } else { // possible starter needed // } } } - needed = pitchrate * volume * plato; + needed = Round(pitchrate * volume * plato, 1); console.log('calcYeast() pitchrate:' + pitchrate + ' start:' + initcells + ' needed:' + needed + ' volume:' + volume); $('#need_cells').val(needed); use_cells = initcells; @@ -2466,7 +2474,7 @@ return; for (i = 0; i < rowscount; i++) { row = $('#yeastGrid').jqxGrid('getrowdata', i); - if (row.y_form == 1) { // Only adjust dry yeast + if (! dataRecord.starter_enable) { // Only adjust without a starter amount = row.y_amount * factor; $('#yeastGrid').jqxGrid('setcellvalue', i, 'y_amount', amount); } @@ -2714,7 +2722,8 @@ pH += deltapH; pd = ProtonDeficit(pH); } - console.log('MashpH() n: ' + n + ' pH: ' + pH); + pH = Round(pH, 2); + //console.log('MashpH() n: ' + n + ' pH: ' + pH); return pH; } @@ -2733,7 +2742,7 @@ function calcWater() { - console.log('calcWater()'); + //console.log('calcWater()'); var liters = 0, calcium = 0, magnesium = 0, @@ -2852,7 +2861,7 @@ if (dataRecord.calc_acid) { TpH = parseFloat(dataRecord.mash_ph); protonDeficit = ProtonDeficit(TpH); - console.log('calc_acid tgt: ' + TpH + ' protonDeficit: ' + protonDeficit); + //console.log('calc_acid tgt: ' + TpH + ' protonDeficit: ' + protonDeficit); if (protonDeficit > 0) { // Add acid $('#wa_base').val(0); setWaterAgent(last_base, 0); @@ -2864,10 +2873,10 @@ if (parseFloat($('#wa_acid_perc').jqxNumberInput('decimal')) == 0) $('#wa_acid_perc').val(AcidPrc); - Acid = Acid * AcidPrc / (parseFloat($('#wa_acid_perc').jqxNumberInput('decimal')) / 100); // ml - console.log('Final ml: ' + Acid); - $('#wa_acid').val(Round(Acid, 2)); - setWaterAgent(AcidTypeData[AT].nl, Round(Acid, 2)); + Acid = Round(Acid * AcidPrc / (parseFloat($('#wa_acid_perc').jqxNumberInput('decimal')) / 100), 2); // ml + //console.log('Final ml: ' + Acid); + $('#wa_acid').val(Acid); + setWaterAgent(AcidTypeData[AT].nl, Acid); bicarbonate = bicarbonate - protonDeficit * frac / liters; total_alkalinity = bicarbonate * 50 / 61; @@ -4368,6 +4377,9 @@ prop3_volume: parseFloat($('#prop3_volume').jqxNumberInput('decimal')), prop4_type: $('#prop4_type').val(), prop4_volume: parseFloat($('#prop4_volume').jqxNumberInput('decimal')), + divide_type: dataRecord.divide_type, + divide_size: dataRecord.divide_size, + divide_parts: dataRecord.divide_parts, fermentables: $('#fermentableGrid').jqxGrid('getrows'), hops: $('#hopGrid').jqxGrid('getrows'), miscs: $('#miscGrid').jqxGrid('getrows'), @@ -4388,7 +4400,8 @@ window.location.href = my_return; else window.location.href = - 'prod_export.php?record=' + my_record + '&return=' + my_return + '&select=' + my_select + '&code=' + dataRecord.code + '&name=' + dataRecord.name; + 'prod_export.php?record=' + my_record + '&return=' + my_return + '&select=' + my_select + '&code=' + dataRecord.code + '&name=' + dataRecord.name + + '&stage=' + dataRecord.stage + '&split=' + dataRecord.divide_type; }, error: function(jqXHR, textStatus, errorThrown) { console.log('saveRecord() ' + textStatus); @@ -4423,6 +4436,11 @@ calcStage(); } }); + $('#divide_parts').jqxTooltip({ content: 'Het aantal gesplitste brouw producten.' }); + $('#divide_parts').jqxNumberInput(Show0dec); + $('#divide_type').jqxTooltip({ content: 'Het splitsing moment in het productie proces.' }); + $('#divide_type').jqxInput({ theme: theme, width: 120, height: 23 }); + $('#notes').jqxTooltip({ content: 'De uitgebreide opmerkingen over dit product.' }); $('#notes').jqxInput({ theme: theme, width: 960, height: 100 }); $('#type').jqxTooltip({ content: 'Het brouw type van dit recept.' }); @@ -5156,8 +5174,11 @@ $('#est_fg2').jqxNumberInput(Show3dec); $('#est_abv2').jqxTooltip({ content: 'Alcohol volume %. Dit wordt automatisch berekend.' }); $('#est_abv2').jqxNumberInput(Smal1dec); + $('#yeast_cells').jqxTooltip({ content: 'Het aantal beschikbare gistcellen zonder eventuele starter.' }); $('#yeast_cells').jqxNumberInput(Show1dec); + $('#need_cells').jqxTooltip({ content: 'Het aantal nodige cellen is afhankelijk van het biertype.' }); $('#need_cells').jqxNumberInput(Show1dec); + $('#plato_cells').jqxTooltip({ content: 'De berekende hoeveelheid gistcellen in miljard per ml per graad Plato. Dit is de zogenaamde pitchrate.' }); $('#plato_cells').jqxNumberInput(Show2dec); $('#popupYeast').jqxWindow({ width: 800, @@ -5239,7 +5260,7 @@ yeastData.y_inventory = datarecord.inventory; if (yeastData.y_form == 0) { $('#wy_pmpt_amount').html('Pak(ken):'); - } else if (yeastData.y_form == 1) { + } else if (yeastData.y_form == 1 || yeastData.y_form == 6) { $('#wy_pmpt_amount').html('Gewicht gram:'); } else { $('#wy_pmpt_amount').html('Volume ml:'); @@ -5286,14 +5307,19 @@ autoDropDownHeight: true }); $('#prop' + i + '_type').hide(); + $('#prop' + i + '_volume').jqxTooltip({ content: 'Het volume van deze starter stap.' }); $('#prop' + i + '_volume').jqxNumberInput(Spin3dec); $('#prop' + i + '_volume').hide(); + $('#prop' + i + '_irate').jqxTooltip({ content: 'Voor de beste gistgroei, houd de injectie factor tussen de 25 en 100 miljoen cellen per ml.' }); $('#prop' + i + '_irate').jqxNumberInput(Show1dec); $('#prop' + i + '_irate').hide(); + $('#prop' + i + '_ncells').jqxTooltip({ content: 'Het aantal miljard nieuwe gistcellen in deze stap.' }); $('#prop' + i + '_ncells').jqxNumberInput(Show1dec); $('#prop' + i + '_ncells').hide(); + $('#prop' + i + '_tcells').jqxTooltip({ content: 'Het totaal aantal miljard gistcellen na deze stap.' }); $('#prop' + i + '_tcells').jqxNumberInput(Show1dec); $('#prop' + i + '_tcells').hide(); + $('#prop' + i + '_growf').jqxTooltip({ content: 'De groeifactor, minstens 1. Ongeroerde starters komen meestal niet boven de 3.' }); $('#prop' + i + '_growf').jqxNumberInput(Show2dec); $('#prop' + i + '_growf').hide(); } @@ -5307,7 +5333,9 @@ height: 23, autoDropDownHeight: true }); + $('#starter_sg').jqxTooltip({ content: 'Het ideale starter SG moet tussen de 1.030 en 1.040 zijn. Optimaal is 1.037.' }); $('#starter_sg').jqxNumberInput(SGopts); + $('#starter_viability').jqxTooltip({ content: 'De gist conditie te berekenen vanaf de productie datum. Vloeibare gist verlist iedere maand ongeveer 20% active cellen.' }); $('#starter_viability').jqxNumberInput(Perc0); $('#starter_try').jqxButton({ template: 'primary', width: '100px', height: 23, theme: theme }); diff -r 9e43b216ccd3 -r d25a1b160dba www/js/prod_export-min.js --- a/www/js/prod_export-min.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/prod_export-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -$(document).ready(function(){var a=0;$("#name").html(my_name);$("#code").html(my_code);$("#jqxRadioButton1").jqxRadioButton({theme:theme,width:250,height:23});$("#jqxRadioButton2").jqxRadioButton({theme:theme,width:250,height:23});$("#jqxRadioButton3").jqxRadioButton({theme:theme,width:250,height:23});$("#jqxRadioButton4").jqxRadioButton({theme:theme,width:250,height:23});$("#jqxRadioButton5").jqxRadioButton({theme:theme,width:250,height:23});$("#jqxRadioButton6").jqxRadioButton({theme:theme,width:250,height:23});$("#jqxRadioButton1").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=1});$("#jqxRadioButton2").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=2});$("#jqxRadioButton3").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=3});$("#jqxRadioButton4").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=4});$("#jqxRadioButton5").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=5});$("#jqxRadioButton6").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=6});$("#Start").jqxButton({template:"success",width:"100px",theme:theme,disabled:true});$("#Start").click(function(){if(a==1){var b="prod_beerxml.php?record="+my_record;window.open(b)}else{if(a==2){var b="prod_duplicate.php?record="+my_record;window.open(b)}else{if(a==3){var b="prod_torecipe.php?record="+my_record;window.open(b)}else{if(a==4){var b="prod_print.php?record="+my_record;window.open(b)}else{if(a==5){var b="prod_checklist.php?record="+my_record;window.open(b)}else{if(a==6){var b="prod_forum.php?record="+my_record;window.open(b)}}}}}}window.location.href="prod_edit.php?record="+my_record+"&return="+my_return})}); \ No newline at end of file +$(document).ready(function(){var a=0;$("#name").html(my_name);$("#code").html(my_code);$("#jqxRadioButton1").jqxRadioButton({theme:theme,width:250,height:23});$("#jqxRadioButton2").jqxRadioButton({theme:theme,width:250,height:23});$("#jqxRadioButton3").jqxRadioButton({theme:theme,width:250,height:23});$("#jqxRadioButton4").jqxRadioButton({theme:theme,width:250,height:23});$("#jqxRadioButton5").jqxRadioButton({theme:theme,width:250,height:23});$("#jqxRadioButton6").jqxRadioButton({theme:theme,width:250,height:23});$("#jqxRadioButton7").jqxRadioButton({theme:theme,width:250,height:23});if((my_split!=0)||(my_stage>=6)){$("#jqxRadioButton3").jqxRadioButton({disabled:true});document.getElementById("pmpt3").style.color="red"}$("#jqxRadioButton1").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=1});$("#jqxRadioButton2").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=2});$("#jqxRadioButton3").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=3});$("#jqxRadioButton4").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=4});$("#jqxRadioButton5").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=5});$("#jqxRadioButton6").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=6});$("#jqxRadioButton7").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=7});$("#Start").jqxButton({template:"success",width:"100px",theme:theme,disabled:true});$("#Start").click(function(){if(a==1){window.open("prod_beerxml.php?record="+my_record)}else{if(a==2){window.open("prod_duplicate.php?record="+my_record)}else{if(a==3){window.location.href="prod_divide.php?record="+my_record+"&return="+my_return}else{if(a==4){window.open("prod_torecipe.php?record="+my_record)}else{if(a==5){window.open("prod_print.php?record="+my_record)}else{if(a==6){window.open("prod_checklist.php?record="+my_record)}else{if(a==7){window.open("prod_forum.php?record="+my_record)}}}}}}}if(a!=3){window.location.href="prod_edit.php?record="+my_record+"&return="+my_return}})}); \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/prod_export.js --- a/www/js/prod_export.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/prod_export.js Fri Oct 18 13:12:46 2019 +0200 @@ -33,6 +33,12 @@ $("#jqxRadioButton4").jqxRadioButton({ theme: theme, width: 250, height: 23 }); $("#jqxRadioButton5").jqxRadioButton({ theme: theme, width: 250, height: 23 }); $("#jqxRadioButton6").jqxRadioButton({ theme: theme, width: 250, height: 23 }); + $("#jqxRadioButton7").jqxRadioButton({ theme: theme, width: 250, height: 23 }); + if ((my_split != 0) || (my_stage >= 6)) { + $("#jqxRadioButton3").jqxRadioButton({ disabled: true }); + document.getElementById("pmpt3").style.color = "red"; + } + $('#jqxRadioButton1').on('checked', function (event) { $('#Start').jqxButton({ disabled: false }); choice = 1; @@ -42,45 +48,46 @@ choice = 2; }); $('#jqxRadioButton3').on('checked', function (event) { - $('#Start').jqxButton({ disabled: false }); - choice = 3; - }); + $('#Start').jqxButton({ disabled: false }); + choice = 3; + }); $('#jqxRadioButton4').on('checked', function (event) { - $('#Start').jqxButton({ disabled: false }); - choice = 4; - }); + $('#Start').jqxButton({ disabled: false }); + choice = 4; + }); $('#jqxRadioButton5').on('checked', function (event) { $('#Start').jqxButton({ disabled: false }); choice = 5; }); $('#jqxRadioButton6').on('checked', function (event) { + $('#Start').jqxButton({ disabled: false }); + choice = 6; + }); + $('#jqxRadioButton7').on('checked', function (event) { $('#Start').jqxButton({ disabled: false }); - choice = 6; + choice = 7; }); $('#Start').jqxButton({ template: "success", width: '100px', theme: theme, disabled: true }); $('#Start').click(function () { if (choice == 1) { - var url="prod_beerxml.php?record=" + my_record; - window.open(url); + window.open('prod_beerxml.php?record=' + my_record); } else if (choice == 2) { - var url="prod_duplicate.php?record=" + my_record; - window.open(url); + window.open('prod_duplicate.php?record=' + my_record); } else if (choice == 3) { - var url="prod_torecipe.php?record=" + my_record; - window.open(url); + window.location.href = 'prod_divide.php?record=' + my_record + '&return=' + my_return; } else if (choice == 4) { - var url="prod_print.php?record=" + my_record; - window.open(url); + window.open('prod_torecipe.php?record=' + my_record); } else if (choice == 5) { - var url="prod_checklist.php?record=" + my_record; - window.open(url); + window.open('prod_print.php?record=' + my_record); } else if (choice == 6) { - var url="prod_forum.php?record=" + my_record; - window.open(url); + window.open('prod_checklist.php?record=' + my_record); + } else if (choice == 7) { + window.open('prod_forum.php?record=' + my_record); } // Return to the original product - window.location.href = "prod_edit.php?record=" + my_record + "&return=" + my_return; + if (choice != 3) + window.location.href = "prod_edit.php?record=" + my_record + "&return=" + my_return; }); }); diff -r 9e43b216ccd3 -r d25a1b160dba www/js/prod_new-min.js --- a/www/js/prod_new-min.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/prod_new-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -$(document).ready(function(){var a=2;var b=0;var c=0;$("#name").jqxTooltip({content:"De naam voor dit brouw project."});$("#name").jqxInput({theme:theme,width:640,height:23});$("#code").jqxTooltip({content:"Het unieke code nummer van dit brouw project."});$("#code").jqxInput({theme:theme,width:100,height:23});$("#notes").jqxTooltip({content:"De uitgebreide opmerkingen over dit project."});$("#notes").jqxInput({theme:theme,width:960,height:200});$("#type").jqxDropDownList({theme:theme,source:RecipeTypeAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#type").jqxDropDownList("selectItem",2);$("#type").on("select",function(e){if(e.args){a=e.args.index}});$("#st_name").jqxTooltip({content:"De bierstijl naam voor dit recept."});$("#st_name").jqxInput({theme:theme,width:250,height:23});$("#st_category").jqxTooltip({content:"De Amerikaanse bierstijl categorie."});$("#st_category").jqxInput({theme:theme,width:250,height:23});$("#st_category_number").jqxTooltip({content:"De Amerikaanse bierstijl categorie sub nummer."});$("#st_category_number").jqxInput({theme:theme,width:70,height:23});$("#st_letter").jqxTooltip({content:"De bierstijl letter voor dit recept."});$("#st_letter").jqxInput({theme:theme,width:250,height:23});$("#st_guide").jqxTooltip({content:"De bierstijl gids voor dit recept."});$("#st_guide").jqxInput({theme:theme,width:250,height:23});$("#st_notes").jqxInput({theme:theme,width:800,height:100});$("#st_type").jqxTooltip({content:"Het bierstijl type."});$("#st_type").jqxInput({theme:theme,width:250,height:23});$("#st_og_min").jqxTooltip({content:"Het minimum begin SG voor deze bierstijl."});$("#st_og_min").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:3,readOnly:true});$("#st_og_max").jqxTooltip({content:"Het maximum begin SG voor deze bierstijl."});$("#st_og_max").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:3,readOnly:true});$("#st_fg_min").jqxTooltip({content:"Het minimum eind SG voor deze bierstijl."});$("#st_fg_min").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:3,readOnly:true});$("#st_fg_max").jqxTooltip({content:"Het maximum eind SG voor deze bierstijl."});$("#st_fg_max").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:3,readOnly:true});$("#st_ibu_min").jqxTooltip({content:"De minimum bitterheid voor deze bierstijl."});$("#st_ibu_min").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:0,readOnly:true});$("#st_ibu_max").jqxTooltip({content:"De maximum bitterheid voor deze bierstijl."});$("#st_ibu_max").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:0,readOnly:true});$("#st_color_min").jqxTooltip({content:"De minimum kleur voor deze bierstijl."});$("#st_color_min").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:0,readOnly:true});$("#st_color_max").jqxTooltip({content:"De maximum kleur voor deze bierstijl."});$("#st_color_max").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:0,readOnly:true});$("#st_carb_min").jqxTooltip({content:"Het minimum koolzuur volume voor deze bierstijl."});$("#st_carb_min").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:1,readOnly:true});$("#st_carb_max").jqxTooltip({content:"Het maximum koolzuur volume voor deze bierstijl."});$("#st_carb_max").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:1,readOnly:true});$("#st_abv_min").jqxTooltip({content:"Het minimum alcohol volume % voor deze bierstijl."});$("#st_abv_min").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:1,readOnly:true});$("#st_abv_max").jqxTooltip({content:"Het maximum alcohol volume % voor deze bierstijl."});$("#st_abv_max").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:1,readOnly:true});$("#st_profile").jqxInput({theme:theme,width:800,height:48});$("#st_ingredients").jqxInput({theme:theme,width:800,height:23});$("#st_examples").jqxInput({theme:theme,width:800,height:48});$("#styleSelect").jqxDropDownList({placeHolder:"Kies bierstijl:",theme:theme,source:styleslist,displayMember:"name",width:250,height:27,dropDownWidth:500,dropDownHeight:500,renderer:function(f,e,h){var g=styleslist.records[f];return g.style_guide+" "+g.style_letter+" "+g.name}});$("#styleSelect").on("select",function(g){if(g.args){var e=g.args.index;var f=styleslist.records[e];$("#st_name").val(f.name);$("#st_category").val(f.category);$("#st_category_number").val(f.category_number);$("#st_letter").val(f.style_letter);$("#st_guide").val(f.style_guide);b=f.type;$("#st_type").val(StyleTypeData[f.type].nl);$("#st_og_min").val(f.og_min);$("#st_og_max").val(f.og_max);$("#st_fg_min").val(f.fg_min);$("#st_fg_max").val(f.fg_max);$("#st_ibu_min").val(f.ibu_min);$("#st_ibu_max").val(f.ibu_max);$("#st_color_min").val(f.color_min);$("#st_color_max").val(f.color_max);$("#st_carb_min").val(f.carb_min);$("#st_carb_max").val(f.carb_max);$("#st_abv_min").val(f.abv_min);$("#st_abv_max").val(f.abv_max);$("#st_notes").val(f.notes);$("#st_profile").val(f.profile);$("#st_ingredients").val(f.ingredients);$("#st_examples").val(f.examples)}});$("#eq_name").jqxTooltip({content:"De naam van deze brouw apparatuur."});$("#eq_name").jqxInput({theme:theme,width:250,height:23});$("#eq_calc_boil_volume").jqxCheckBox({theme:theme,width:120,height:23,disabled:true});$("#eq_boil_size").jqxTooltip({content:"Normaal kook volume in liters"});$("#eq_boil_size").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_batch_size").jqxTooltip({content:"Berekende batch grootte in liters aan het eind van de kook."});$("#eq_batch_size").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_tun_volume").jqxTooltip({content:"Maisch ketel volume."});$("#eq_tun_volume").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_tun_weight").jqxTooltip({content:"Maisch ketel gewicht."});$("#eq_tun_weight").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_tun_height").jqxTooltip({content:"Maisch ketel hoogte."});$("#eq_tun_height").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_tun_material").jqxTooltip({content:"Maisch ketel materiaal."});$("#eq_tun_material").jqxInput({theme:theme,width:180,height:23});$("#eq_tun_specific_heat").jqxTooltip({content:"Maisch ketel warmte geleiding."});$("#eq_tun_specific_heat").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:3});$("#eq_top_up_water").jqxTooltip({content:"Extra water in het gistvat."});$("#eq_top_up_water").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_trub_chiller_loss").jqxTooltip({content:"Standaard verlies bij het overbrengen naar het gistvat."});$("#eq_trub_chiller_loss").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_evap_rate").jqxTooltip({content:"Verdamping in liters per uur."});$("#eq_evap_rate").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:2,});$("#eq_boil_time").jqxTooltip({content:"Normale kooktijd in minuten."});$("#eq_boil_time").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:0});$("#eq_top_up_kettle").jqxTooltip({content:"Extra water toevoegen tijdens de kook."});$("#eq_top_up_kettle").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_hop_utilization").jqxTooltip({content:"100% voor kleine installaties, hoger voor grote brouwerijen."});$("#eq_hop_utilization").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:0});$("#eq_notes").jqxTooltip({content:"Opmerkingen over deze apparatuur."});$("#eq_notes").jqxInput({theme:theme,width:960,height:100});$("#eq_lauter_volume").jqxTooltip({content:"Filterkuip volume."});$("#eq_lauter_volume").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_lauter_height").jqxTooltip({content:"Filterkuip hoogte."});$("#eq_lauter_height").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_lauter_deadspace").jqxTooltip({content:"Filterkuip verlies in liters."});$("#eq_lauter_deadspace").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_kettle_volume").jqxTooltip({content:"Kook ketel volume in liters."});$("#eq_kettle_volume").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_kettle_height").jqxTooltip({content:"Kook ketel hoogte in cm."});$("#eq_kettle_height").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_mash_volume").jqxTooltip({content:"Maisch water voor de eerste stap."});$("#eq_mash_volume").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_mash_max").jqxTooltip({content:"De maximale moutstort in Kg."});$("#eq_mash_max").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_efficiency").jqxTooltip({content:"Gemiddeld brouwzaal rendement."});$("#eq_efficiency").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#equipmentSelect").jqxDropDownList({placeHolder:"Kies apparatuur:",theme:theme,source:equipmentlist,displayMember:"name",width:250,height:27,dropDownWidth:300,renderer:function(f,e,h){var g=equipmentlist.records[f];return g.batch_size+" liter "+g.name}});$("#equipmentSelect").on("select",function(g){if(g.args){var e=g.args.index;var f=equipmentlist.records[e];$("#eq_name").val(f.name);$("#eq_boil_size").val(f.boil_size);$("#eq_batch_size").val(f.batch_size);$("#eq_tun_volume").val(f.tun_volume);$("#eq_tun_weight").val(f.tun_weight);$("#eq_tun_specific_heat").val(f.tun_specific_heat);c=f.tun_material;$("#eq_tun_material").val(MaterialData[f.tun_material].nl);$("#eq_tun_height").val(f.tun_height);$("#eq_top_up_water").val(f.top_up_water);$("#eq_trub_chiller_loss").val(f.trub_chiller_loss);$("#eq_evap_rate").val(f.evap_rate);$("#eq_boil_time").val(f.boil_time);$("#eq_calc_boil_volume").val(f.calc_boil_volume);$("#eq_top_up_kettle").val(f.top_up_kettle);$("#eq_hop_utilization").val(f.hop_utilization);$("#eq_notes").val(f.notes);$("#eq_lauter_volume").val(f.lauter_volume);$("#eq_lauter_height").val(f.lauter_height);$("#eq_lauter_deadspace").val(f.lauter_deadspace);$("#eq_kettle_volume").val(f.kettle_volume);$("#eq_kettle_height").val(f.kettle_height);$("#eq_mash_volume").val(f.mash_volume);$("#eq_mash_max").val(f.mash_max);$("#eq_efficiency").val(f.efficiency)}});var d=(function(){var e=function(){$("#name").on("change",function(f){d.validate(true)});$("#code").on("change",function(f){d.validate(true)});$("#type").on("change",function(f){d.validate(true)});$("#styleSelect").on("change",function(f){d.validate(true)});$("#equipmentSelect").on("change",function(f){d.validate(true)});$("#nextButtonCompleted").click(function(){var j=new Date();var g=j.getMonth()+1;var f=j.getFullYear()+"-";if(g<10){f=f+"0"}f=f+g+"-";if(j.getDate()<10){f=f+"0"}f=f+j.getDate();var i={record:-1,name:$("#name").val(),code:$("#code").val(),birth:f,stage:0,notes:$("#notes").val(),log_brew:0,log_fermentation:0,inventory_reduced:0,locked:0,eq_name:$("#eq_name").val(),eq_boil_size:parseFloat($("#eq_boil_size").jqxNumberInput("decimal")),eq_batch_size:parseFloat($("#eq_batch_size").jqxNumberInput("decimal")),eq_tun_volume:parseFloat($("#eq_tun_volume").jqxNumberInput("decimal")),eq_tun_weight:parseFloat($("#eq_tun_weight").jqxNumberInput("decimal")),eq_tun_specific_heat:parseFloat($("#eq_tun_specific_heat").jqxNumberInput("decimal")),eq_tun_material:c,eq_tun_height:parseFloat($("#eq_tun_height").jqxNumberInput("decimal"))/100,eq_top_up_water:parseFloat($("#eq_top_up_water").jqxNumberInput("decimal")),eq_trub_chiller_loss:parseFloat($("#eq_trub_chiller_loss").jqxNumberInput("decimal")),eq_evap_rate:parseFloat($("#eq_evap_rate").jqxNumberInput("decimal")),eq_boil_time:parseFloat($("#eq_boil_time").jqxNumberInput("decimal")),eq_calc_boil_volume:$("#eq_calc_boil_volume").val(),eq_top_up_kettle:parseFloat($("#eq_top_up_kettle").jqxNumberInput("decimal")),eq_hop_utilization:parseFloat($("#eq_hop_utilization").jqxNumberInput("decimal")),eq_notes:$("#eq_notes").val(),eq_lauter_volume:parseFloat($("#eq_lauter_volume").jqxNumberInput("decimal")),eq_lauter_height:parseFloat($("#eq_lauter_height").jqxNumberInput("decimal"))/100,eq_lauter_deadspace:parseFloat($("#eq_lauter_deadspace").jqxNumberInput("decimal")),eq_kettle_volume:parseFloat($("#eq_kettle_volume").jqxNumberInput("decimal")),eq_kettle_height:parseFloat($("#eq_kettle_height").jqxNumberInput("decimal"))/100,eq_mash_volume:parseFloat($("#eq_mash_volume").jqxNumberInput("decimal")),eq_mash_max:parseFloat($("#eq_mash_max").jqxNumberInput("decimal")),eq_efficiency:parseFloat($("#eq_efficiency").jqxNumberInput("decimal")),brew_date_start:"",brew_mash_ph:0,brew_mash_sg:1,brew_mash_efficiency:0,brew_sparge_ph:0,brew_sparge_temperature:85,brew_sparge_est:0,brew_preboil_volume:0,brew_preboil_sg:0,brew_preboil_ph:0,brew_preboil_efficiency:0,brew_aboil_volume:0,brew_aboil_sg:0,brew_aboil_ph:0,brew_aboil_efficiency:0,brew_cooling_method:0,brew_cooling_time:0,brew_cooling_to:20,brew_whirlpool9:0,brew_whirlpool7:0,brew_whirlpool6:0,brew_whirlpool2:0,brew_fermenter_volume:parseFloat($("#eq_batch_size").jqxNumberInput("decimal"))-parseFloat($("#eq_trub_chiller_loss").jqxNumberInput("decimal"))+parseFloat($("#eq_top_up_water").jqxNumberInput("decimal")),brew_fermenter_extrawater:parseFloat($("#eq_top_up_water").jqxNumberInput("decimal")),brew_fermenter_tcloss:parseFloat($("#eq_trub_chiller_loss").jqxNumberInput("decimal")),brew_aeration_time:0,brew_aeration_speed:0,brew_aeration_type:0,brew_fermenter_sg:0,brew_fermenter_ibu:0,brew_fermenter_color:0,brew_date_end:"",og:0,fg:0,primary_start_temp:0,primary_max_temp:0,primary_end_temp:0,primary_end_sg:0,primary_end_date:"",secondary_temp:0,secondary_end_date:"",tertiary_temp:0,package_date:"",package_volume:0,package_infuse_amount:0,package_infuse_abv:0,package_infuse_notes:"",package_abv:0,package_ph:0,bottle_amount:0,bottle_carbonation:0,bottle_priming_water:0,bottle_priming_amount:0,bottle_carbonation_temp:23,keg_amount:0,keg_carbonation:0,keg_priming_water:0,keg_priming_amount:0,keg_carbonation_temp:23,keg_forced_carb:1,keg_pressure:0,taste_notes:"",taste_rate:0,taste_date:"",taste_color:"",taste_transparency:"",taste_head:"",taste_aroma:"",taste_taste:"",taste_mouthfeel:"",taste_aftertaste:"",st_name:$("#st_name").val(),st_letter:$("#st_letter").val(),st_guide:$("#st_guide").val(),st_type:b,st_category:$("#st_category").val(),st_category_number:parseFloat($("#st_category_number").jqxNumberInput("decimal")),st_og_min:parseFloat($("#st_og_min").jqxNumberInput("decimal")),st_og_max:parseFloat($("#st_og_max").jqxNumberInput("decimal")),st_fg_min:parseFloat($("#st_fg_min").jqxNumberInput("decimal")),st_fg_max:parseFloat($("#st_fg_max").jqxNumberInput("decimal")),st_ibu_min:parseFloat($("#st_ibu_min").jqxNumberInput("decimal")),st_ibu_max:parseFloat($("#st_ibu_max").jqxNumberInput("decimal")),st_color_min:parseFloat($("#st_color_min").jqxNumberInput("decimal")),st_color_max:parseFloat($("#st_color_max").jqxNumberInput("decimal")),st_carb_min:parseFloat($("#st_carb_min").jqxNumberInput("decimal")),st_carb_max:parseFloat($("#st_carb_max").jqxNumberInput("decimal")),st_abv_min:parseFloat($("#st_abv_min").jqxNumberInput("decimal")),st_abv_max:parseFloat($("#st_abv_max").jqxNumberInput("decimal")),type:a,batch_size:parseFloat($("#eq_batch_size").jqxNumberInput("decimal")),boil_size:parseFloat($("#eq_boil_size").jqxNumberInput("decimal")),boil_time:parseFloat($("#eq_boil_time").jqxNumberInput("decimal")),efficiency:parseFloat($("#eq_efficiency").jqxNumberInput("decimal")),est_og:0,est_fg:0,est_color:0,est_abv:0,est_carb:0,color_method:0,est_ibu:0,ibu_method:0,mash_name:"",mash_ph:5.4,sparge_temp:85,sparge_volume:parseFloat($("#eq_boil_size").jqxNumberInput("decimal"))/2,sparge_ph:5.8,sparge_source:0,sparge_acid_type:0,sparge_acid_perc:80,sparge_acid_amount:0,calc_acid:1,w1_name:"Tap water",w1_amount:parseFloat($("#eq_mash_volume").jqxNumberInput("decimal")),w1_calcium:0,w1_sulfate:0,w1_chloride:0,w1_sodium:0,w1_magnesium:0,w1_total_alkalinity:0,w1_ph:7,w1_cost:0,wa_acid_name:0,wa_acid_perc:80,wa_base_name:0,wg_amount:parseFloat($("#eq_mash_volume").jqxNumberInput("decimal")),wg_calcium:0,wg_sulfate:0,wg_chloride:0,wg_sodium:0,wg_magnesium:0,wg_total_alkalinity:0,wg_ph:7,wb_calcium:0,wb_sulfate:0,wb_sodium:0,wb_chloride:0,wb_magnesium:0,wb_total_alkalinity:0,wb_ph:0,starter_enable:0};var h="insert=true&return="+my_return+"&"+$.param(i);$.ajax({dataType:"json",url:"includes/db_product.php",cache:false,data:h,type:"POST",success:function(l,k,m){window.location.href=my_return},error:function(k,m,l){}})});$(".nextButton").click(function(){d.validate(true);$("#jqxTabs").jqxTabs("next")});$(".backButton").click(function(){d.validate(true);$("#jqxTabs").jqxTabs("previous")})};return{init:function(){$("#jqxTabs").jqxTabs({theme:theme,height:630,width:1280,autoHeight:false,position:"top",keyboardNavigation:false});$("#nextButtonBase").jqxButton({theme:theme,width:150});$("#nextButtonStyle").jqxButton({theme:theme,width:150});$("#backButtonStyle").jqxButton({theme:theme,width:150});$("#nextButtonEq").jqxButton({theme:theme,width:150});$("#backButtonEq").jqxButton({theme:theme,width:150});$("#nextButtonCompleted").jqxButton({theme:theme,width:150});$("#backButtonCompleted").jqxButton({theme:theme,width:150});e();this.validate();this.showHint("Validation hints.")},validate:function(f){if(!this.firstTab(f)){$("#jqxTabs").jqxTabs("disableAt",1);$("#jqxTabs").jqxTabs("disableAt",2);$("#jqxTabs").jqxTabs("disableAt",3);return}else{$("#jqxTabs").jqxTabs("enableAt",1)}if(!this.secondTab(f)){$("#jqxTabs").jqxTabs("disableAt",2);$("#jqxTabs").jqxTabs("disableAt",3);return}else{$("#jqxTabs").jqxTabs("enableAt",2)}if(!this.thirdTab(f)){$("#jqxTabs").jqxTabs("disableAt",3);return}else{$("#jqxTabs").jqxTabs("enableAt",3)}},showHint:function(g,f){if(typeof f==="undefined"){f=".hint"}if(g===""){g="Ok, je mag doorgaan."}$(f).html(""+g+"")},firstTab:function(g){var f=$("#name").val(),i=$("#code").val(),h="";if(f.length<3){h+="Je moet een brouw project naam invullen.
      "}if(i.length<3){h+="Je moet een brouw project code invullen.
      "}if(h!==""){if(g){this.showHint(h,"#hintBase")}return false}this.showHint("Ok, je mag doorgaan.","#hintBase");return true},secondTab:function(g){var f=$("#styleSelect").val(),h="";if(f.length<3){h+="Je moet een bierstijl kiezen.
      "}if(h!==""){if(g){this.showHint(h,"#hintStyle")}return false}this.showHint("Ok, je mag doorgaan.","#hintStyle");return true},thirdTab:function(f){var h=$("#equipmentSelect").val(),g="";if(h.length<3){g+="Je moet een brouw installatie kiezen.
      "}if(g!==""){if(f){this.showHint(g,"#hintEq")}return false}this.showHint("Ok, je mag doorgaan.","#hintEq");return true}}}());d.init()}); \ No newline at end of file +$(document).ready(function(){$("#name").jqxTooltip({content:"De naam voor dit brouw project."});$("#name").jqxInput({theme:theme,width:640,height:23});$("#code").jqxTooltip({content:"Het unieke code nummer van dit brouw project."});$("#code").jqxInput({theme:theme,width:100,height:23});$("#notes").jqxTooltip({content:"De uitgebreide opmerkingen over dit project."});$("#notes").jqxInput({theme:theme,width:960,height:200});$("#type").jqxDropDownList({theme:theme,source:RecipeTypeAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#type").jqxDropDownList("selectItem",2);$("#type").on("select",function(e){if(e.args){a=e.args.index}});$("#st_name").jqxTooltip({content:"De bierstijl naam voor dit recept."});$("#st_name").jqxInput({theme:theme,width:250,height:23});$("#st_category").jqxTooltip({content:"De Amerikaanse bierstijl categorie."});$("#st_category").jqxInput({theme:theme,width:250,height:23});$("#st_category_number").jqxTooltip({content:"De Amerikaanse bierstijl categorie sub nummer."});$("#st_category_number").jqxInput({theme:theme,width:70,height:23});$("#st_letter").jqxTooltip({content:"De bierstijl letter voor dit recept."});$("#st_letter").jqxInput({theme:theme,width:250,height:23});$("#st_guide").jqxTooltip({content:"De bierstijl gids voor dit recept."});$("#st_guide").jqxInput({theme:theme,width:250,height:23});$("#st_notes").jqxInput({theme:theme,width:800,height:100});$("#st_type").jqxTooltip({content:"Het bierstijl type."});$("#st_type").jqxInput({theme:theme,width:250,height:23});$("#st_og_min").jqxTooltip({content:"Het minimum begin SG voor deze bierstijl."});$("#st_og_min").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:3,readOnly:true});$("#st_og_max").jqxTooltip({content:"Het maximum begin SG voor deze bierstijl."});$("#st_og_max").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:3,readOnly:true});$("#st_fg_min").jqxTooltip({content:"Het minimum eind SG voor deze bierstijl."});$("#st_fg_min").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:3,readOnly:true});$("#st_fg_max").jqxTooltip({content:"Het maximum eind SG voor deze bierstijl."});$("#st_fg_max").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:3,readOnly:true});$("#st_ibu_min").jqxTooltip({content:"De minimum bitterheid voor deze bierstijl."});$("#st_ibu_min").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:0,readOnly:true});$("#st_ibu_max").jqxTooltip({content:"De maximum bitterheid voor deze bierstijl."});$("#st_ibu_max").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:0,readOnly:true});$("#st_color_min").jqxTooltip({content:"De minimum kleur voor deze bierstijl."});$("#st_color_min").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:0,readOnly:true});$("#st_color_max").jqxTooltip({content:"De maximum kleur voor deze bierstijl."});$("#st_color_max").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:0,readOnly:true});$("#st_carb_min").jqxTooltip({content:"Het minimum koolzuur volume voor deze bierstijl."});$("#st_carb_min").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:1,readOnly:true});$("#st_carb_max").jqxTooltip({content:"Het maximum koolzuur volume voor deze bierstijl."});$("#st_carb_max").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:1,readOnly:true});$("#st_abv_min").jqxTooltip({content:"Het minimum alcohol volume % voor deze bierstijl."});$("#st_abv_min").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:1,readOnly:true});$("#st_abv_max").jqxTooltip({content:"Het maximum alcohol volume % voor deze bierstijl."});$("#st_abv_max").jqxNumberInput({inputMode:"simple",theme:theme,width:90,height:23,decimalDigits:1,readOnly:true});$("#st_profile").jqxInput({theme:theme,width:800,height:48});$("#st_ingredients").jqxInput({theme:theme,width:800,height:23});$("#st_examples").jqxInput({theme:theme,width:800,height:48});$("#styleSelect").jqxDropDownList({placeHolder:"Kies bierstijl:",theme:theme,source:styleslist,displayMember:"name",width:250,height:27,dropDownWidth:500,dropDownHeight:500,renderer:function(f,e,h){var g=styleslist.records[f];return g.style_guide+" "+g.style_letter+" "+g.name}});$("#styleSelect").on("select",function(g){if(g.args){var e=g.args.index,f=styleslist.records[e];$("#st_name").val(f.name);$("#st_category").val(f.category);$("#st_category_number").val(f.category_number);$("#st_letter").val(f.style_letter);$("#st_guide").val(f.style_guide);b=f.type;$("#st_type").val(StyleTypeData[f.type].nl);$("#st_og_min").val(f.og_min);$("#st_og_max").val(f.og_max);$("#st_fg_min").val(f.fg_min);$("#st_fg_max").val(f.fg_max);$("#st_ibu_min").val(f.ibu_min);$("#st_ibu_max").val(f.ibu_max);$("#st_color_min").val(f.color_min);$("#st_color_max").val(f.color_max);$("#st_carb_min").val(f.carb_min);$("#st_carb_max").val(f.carb_max);$("#st_abv_min").val(f.abv_min);$("#st_abv_max").val(f.abv_max);$("#st_notes").val(f.notes);$("#st_profile").val(f.profile);$("#st_ingredients").val(f.ingredients);$("#st_examples").val(f.examples)}});$("#eq_name").jqxTooltip({content:"De naam van deze brouw apparatuur."});$("#eq_name").jqxInput({theme:theme,width:250,height:23});$("#eq_calc_boil_volume").jqxCheckBox({theme:theme,width:120,height:23,disabled:true});$("#eq_boil_size").jqxTooltip({content:"Normaal kook volume in liters"});$("#eq_boil_size").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_batch_size").jqxTooltip({content:"Berekende batch grootte in liters aan het eind van de kook."});$("#eq_batch_size").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_tun_volume").jqxTooltip({content:"Maisch ketel volume."});$("#eq_tun_volume").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_tun_weight").jqxTooltip({content:"Maisch ketel gewicht."});$("#eq_tun_weight").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_tun_height").jqxTooltip({content:"Maisch ketel hoogte."});$("#eq_tun_height").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_tun_material").jqxTooltip({content:"Maisch ketel materiaal."});$("#eq_tun_material").jqxInput({theme:theme,width:180,height:23});$("#eq_tun_specific_heat").jqxTooltip({content:"Maisch ketel warmte geleiding."});$("#eq_tun_specific_heat").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:3});$("#eq_top_up_water").jqxTooltip({content:"Extra water in het gistvat."});$("#eq_top_up_water").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_trub_chiller_loss").jqxTooltip({content:"Standaard verlies bij het overbrengen naar het gistvat."});$("#eq_trub_chiller_loss").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_evap_rate").jqxTooltip({content:"Verdamping in liters per uur."});$("#eq_evap_rate").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:2,});$("#eq_boil_time").jqxTooltip({content:"Normale kooktijd in minuten."});$("#eq_boil_time").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:0});$("#eq_top_up_kettle").jqxTooltip({content:"Extra water toevoegen tijdens de kook."});$("#eq_top_up_kettle").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_hop_utilization").jqxTooltip({content:"100% voor kleine installaties, hoger voor grote brouwerijen."});$("#eq_hop_utilization").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:0});$("#eq_notes").jqxTooltip({content:"Opmerkingen over deze apparatuur."});$("#eq_notes").jqxInput({theme:theme,width:960,height:100});$("#eq_lauter_volume").jqxTooltip({content:"Filterkuip volume."});$("#eq_lauter_volume").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_lauter_height").jqxTooltip({content:"Filterkuip hoogte."});$("#eq_lauter_height").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_lauter_deadspace").jqxTooltip({content:"Filterkuip verlies in liters."});$("#eq_lauter_deadspace").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_kettle_volume").jqxTooltip({content:"Kook ketel volume in liters."});$("#eq_kettle_volume").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_kettle_height").jqxTooltip({content:"Kook ketel hoogte in cm."});$("#eq_kettle_height").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_mash_volume").jqxTooltip({content:"Maisch water voor de eerste stap."});$("#eq_mash_volume").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_mash_max").jqxTooltip({content:"De maximale moutstort in Kg."});$("#eq_mash_max").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#eq_efficiency").jqxTooltip({content:"Gemiddeld brouwzaal rendement."});$("#eq_efficiency").jqxNumberInput({inputMode:"simple",readOnly:true,theme:theme,width:90,height:23,decimalDigits:1});$("#equipmentSelect").jqxDropDownList({placeHolder:"Kies apparatuur:",theme:theme,source:equipmentlist,displayMember:"name",width:250,height:27,dropDownWidth:300,renderer:function(f,e,h){var g=equipmentlist.records[f];return g.batch_size+" liter "+g.name}});$("#equipmentSelect").on("select",function(g){if(g.args){var e=g.args.index,f=equipmentlist.records[e];$("#eq_name").val(f.name);$("#eq_boil_size").val(f.boil_size);$("#eq_batch_size").val(f.batch_size);$("#eq_tun_volume").val(f.tun_volume);$("#eq_tun_weight").val(f.tun_weight);$("#eq_tun_specific_heat").val(f.tun_specific_heat);c=f.tun_material;$("#eq_tun_material").val(MaterialData[f.tun_material].nl);$("#eq_tun_height").val(f.tun_height);$("#eq_top_up_water").val(f.top_up_water);$("#eq_trub_chiller_loss").val(f.trub_chiller_loss);$("#eq_evap_rate").val(f.evap_rate);$("#eq_boil_time").val(f.boil_time);$("#eq_calc_boil_volume").val(f.calc_boil_volume);$("#eq_top_up_kettle").val(f.top_up_kettle);$("#eq_hop_utilization").val(f.hop_utilization);$("#eq_notes").val(f.notes);$("#eq_lauter_volume").val(f.lauter_volume);$("#eq_lauter_height").val(f.lauter_height);$("#eq_lauter_deadspace").val(f.lauter_deadspace);$("#eq_kettle_volume").val(f.kettle_volume);$("#eq_kettle_height").val(f.kettle_height);$("#eq_mash_volume").val(f.mash_volume);$("#eq_mash_max").val(f.mash_max);$("#eq_efficiency").val(f.efficiency)}});var a=2,b=0,c=0,d=(function(){var e=function(){$("#name").on("change",function(f){d.validate(true)});$("#code").on("change",function(f){d.validate(true)});$("#type").on("change",function(f){d.validate(true)});$("#styleSelect").on("change",function(f){d.validate(true)});$("#equipmentSelect").on("change",function(f){d.validate(true)});$("#nextButtonCompleted").click(function(){var j=new Date(),g=j.getMonth()+1,f=j.getFullYear()+"-",i,h;if(g<10){f=f+"0"}f=f+g+"-";if(j.getDate()<10){f=f+"0"}f=f+j.getDate();i={record:-1,name:$("#name").val(),code:$("#code").val(),birth:f,stage:0,notes:$("#notes").val(),log_brew:0,log_fermentation:0,inventory_reduced:0,locked:0,eq_name:$("#eq_name").val(),eq_boil_size:parseFloat($("#eq_boil_size").jqxNumberInput("decimal")),eq_batch_size:parseFloat($("#eq_batch_size").jqxNumberInput("decimal")),eq_tun_volume:parseFloat($("#eq_tun_volume").jqxNumberInput("decimal")),eq_tun_weight:parseFloat($("#eq_tun_weight").jqxNumberInput("decimal")),eq_tun_specific_heat:parseFloat($("#eq_tun_specific_heat").jqxNumberInput("decimal")),eq_tun_material:c,eq_tun_height:parseFloat($("#eq_tun_height").jqxNumberInput("decimal"))/100,eq_top_up_water:parseFloat($("#eq_top_up_water").jqxNumberInput("decimal")),eq_trub_chiller_loss:parseFloat($("#eq_trub_chiller_loss").jqxNumberInput("decimal")),eq_evap_rate:parseFloat($("#eq_evap_rate").jqxNumberInput("decimal")),eq_boil_time:parseFloat($("#eq_boil_time").jqxNumberInput("decimal")),eq_calc_boil_volume:$("#eq_calc_boil_volume").val(),eq_top_up_kettle:parseFloat($("#eq_top_up_kettle").jqxNumberInput("decimal")),eq_hop_utilization:parseFloat($("#eq_hop_utilization").jqxNumberInput("decimal")),eq_notes:$("#eq_notes").val(),eq_lauter_volume:parseFloat($("#eq_lauter_volume").jqxNumberInput("decimal")),eq_lauter_height:parseFloat($("#eq_lauter_height").jqxNumberInput("decimal"))/100,eq_lauter_deadspace:parseFloat($("#eq_lauter_deadspace").jqxNumberInput("decimal")),eq_kettle_volume:parseFloat($("#eq_kettle_volume").jqxNumberInput("decimal")),eq_kettle_height:parseFloat($("#eq_kettle_height").jqxNumberInput("decimal"))/100,eq_mash_volume:parseFloat($("#eq_mash_volume").jqxNumberInput("decimal")),eq_mash_max:parseFloat($("#eq_mash_max").jqxNumberInput("decimal")),eq_efficiency:parseFloat($("#eq_efficiency").jqxNumberInput("decimal")),brew_date_start:"",brew_mash_ph:0,brew_mash_sg:1,brew_mash_efficiency:0,brew_sparge_ph:0,brew_sparge_temperature:85,brew_sparge_est:0,brew_preboil_volume:0,brew_preboil_sg:0,brew_preboil_ph:0,brew_preboil_efficiency:0,brew_aboil_volume:0,brew_aboil_sg:0,brew_aboil_ph:0,brew_aboil_efficiency:0,brew_cooling_method:0,brew_cooling_time:0,brew_cooling_to:20,brew_whirlpool9:0,brew_whirlpool7:0,brew_whirlpool6:0,brew_whirlpool2:0,brew_fermenter_volume:parseFloat($("#eq_batch_size").jqxNumberInput("decimal"))-parseFloat($("#eq_trub_chiller_loss").jqxNumberInput("decimal"))+parseFloat($("#eq_top_up_water").jqxNumberInput("decimal")),brew_fermenter_extrawater:parseFloat($("#eq_top_up_water").jqxNumberInput("decimal")),brew_fermenter_tcloss:parseFloat($("#eq_trub_chiller_loss").jqxNumberInput("decimal")),brew_aeration_time:0,brew_aeration_speed:0,brew_aeration_type:0,brew_fermenter_sg:0,brew_fermenter_ibu:0,brew_fermenter_color:0,brew_date_end:"",og:0,fg:0,primary_start_temp:0,primary_max_temp:0,primary_end_temp:0,primary_end_sg:0,primary_end_date:"",secondary_temp:0,secondary_end_date:"",tertiary_temp:0,package_date:"",package_volume:0,package_infuse_amount:0,package_infuse_abv:0,package_infuse_notes:"",package_abv:0,package_ph:0,bottle_amount:0,bottle_carbonation:0,bottle_priming_water:0,bottle_priming_amount:0,bottle_carbonation_temp:23,keg_amount:0,keg_carbonation:0,keg_priming_water:0,keg_priming_amount:0,keg_carbonation_temp:23,keg_forced_carb:1,keg_pressure:0,taste_notes:"",taste_rate:0,taste_date:"",taste_color:"",taste_transparency:"",taste_head:"",taste_aroma:"",taste_taste:"",taste_mouthfeel:"",taste_aftertaste:"",st_name:$("#st_name").val(),st_letter:$("#st_letter").val(),st_guide:$("#st_guide").val(),st_type:b,st_category:$("#st_category").val(),st_category_number:parseFloat($("#st_category_number").jqxNumberInput("decimal")),st_og_min:parseFloat($("#st_og_min").jqxNumberInput("decimal")),st_og_max:parseFloat($("#st_og_max").jqxNumberInput("decimal")),st_fg_min:parseFloat($("#st_fg_min").jqxNumberInput("decimal")),st_fg_max:parseFloat($("#st_fg_max").jqxNumberInput("decimal")),st_ibu_min:parseFloat($("#st_ibu_min").jqxNumberInput("decimal")),st_ibu_max:parseFloat($("#st_ibu_max").jqxNumberInput("decimal")),st_color_min:parseFloat($("#st_color_min").jqxNumberInput("decimal")),st_color_max:parseFloat($("#st_color_max").jqxNumberInput("decimal")),st_carb_min:parseFloat($("#st_carb_min").jqxNumberInput("decimal")),st_carb_max:parseFloat($("#st_carb_max").jqxNumberInput("decimal")),st_abv_min:parseFloat($("#st_abv_min").jqxNumberInput("decimal")),st_abv_max:parseFloat($("#st_abv_max").jqxNumberInput("decimal")),type:a,batch_size:parseFloat($("#eq_batch_size").jqxNumberInput("decimal")),boil_size:parseFloat($("#eq_boil_size").jqxNumberInput("decimal")),boil_time:parseFloat($("#eq_boil_time").jqxNumberInput("decimal")),efficiency:parseFloat($("#eq_efficiency").jqxNumberInput("decimal")),est_og:0,est_fg:0,est_color:0,est_abv:0,est_carb:0,color_method:0,est_ibu:0,ibu_method:0,mash_name:"",mash_ph:5.4,sparge_temp:85,sparge_volume:parseFloat($("#eq_boil_size").jqxNumberInput("decimal"))/2,sparge_ph:5.8,sparge_source:0,sparge_acid_type:0,sparge_acid_perc:80,sparge_acid_amount:0,calc_acid:1,w1_name:"Tap water",w1_amount:parseFloat($("#eq_mash_volume").jqxNumberInput("decimal")),w1_calcium:0,w1_sulfate:0,w1_chloride:0,w1_sodium:0,w1_magnesium:0,w1_total_alkalinity:0,w1_ph:7,w1_cost:0,wa_acid_name:0,wa_acid_perc:80,wa_base_name:0,wg_amount:parseFloat($("#eq_mash_volume").jqxNumberInput("decimal")),wg_calcium:0,wg_sulfate:0,wg_chloride:0,wg_sodium:0,wg_magnesium:0,wg_total_alkalinity:0,wg_ph:7,wb_calcium:0,wb_sulfate:0,wb_sodium:0,wb_chloride:0,wb_magnesium:0,wb_total_alkalinity:0,wb_ph:0,starter_enable:0,divide_type:0,divide_size:0,divide_parts:0};h="insert=true&return="+my_return+"&"+$.param(i);$.ajax({dataType:"json",url:"includes/db_product.php",cache:false,data:h,type:"POST",success:function(l,k,m){window.location.href=my_return},error:function(k,m,l){}})});$(".nextButton").click(function(){d.validate(true);$("#jqxTabs").jqxTabs("next")});$(".backButton").click(function(){d.validate(true);$("#jqxTabs").jqxTabs("previous")})};return{init:function(){$("#jqxTabs").jqxTabs({theme:theme,height:630,width:1280,autoHeight:false,position:"top",keyboardNavigation:false});$("#nextButtonBase").jqxButton({theme:theme,width:150});$("#nextButtonStyle").jqxButton({theme:theme,width:150});$("#backButtonStyle").jqxButton({theme:theme,template:"success",width:150});$("#nextButtonEq").jqxButton({theme:theme,width:150});$("#backButtonEq").jqxButton({theme:theme,template:"success",width:150});$("#nextButtonCompleted").jqxButton({theme:theme,template:"success",width:150});$("#backButtonCompleted").jqxButton({theme:theme,template:"success",width:150});e();this.validate();this.showHint("Validation hints.")},validate:function(f){if(!this.firstTab(f)){$("#jqxTabs").jqxTabs("disableAt",1);$("#jqxTabs").jqxTabs("disableAt",2);$("#jqxTabs").jqxTabs("disableAt",3);return}else{$("#jqxTabs").jqxTabs("enableAt",1)}if(!this.secondTab(f)){$("#jqxTabs").jqxTabs("disableAt",2);$("#jqxTabs").jqxTabs("disableAt",3);return}else{$("#jqxTabs").jqxTabs("enableAt",2)}if(!this.thirdTab(f)){$("#jqxTabs").jqxTabs("disableAt",3);return}else{$("#jqxTabs").jqxTabs("enableAt",3)}},showHint:function(g,f){if(typeof f==="undefined"){f=".hint"}if(g===""){g="Ok, je mag doorgaan."}$(f).html(""+g+"")},firstTab:function(g){var f=$("#name").val(),i=$("#code").val(),h="";if(f.length<3){h+="Je moet een brouw project naam invullen.
      "}if(i.length<3){h+="Je moet een brouw project code invullen.
      "}if(h!==""){if(g){this.showHint(h,"#hintBase")}return false}this.showHint("Ok, je mag doorgaan.","#hintBase");$("#nextButtonBase").jqxButton({template:"success"});return true},secondTab:function(g){var f=$("#styleSelect").val(),h="";if(f.length<3){h+="Je moet een bierstijl kiezen.
      "}if(h!==""){if(g){this.showHint(h,"#hintStyle")}return false}this.showHint("Ok, je mag doorgaan.","#hintStyle");$("#nextButtonStyle").jqxButton({template:"success"});return true},thirdTab:function(f){var h=$("#equipmentSelect").val(),g="";if(h.length<3){g+="Je moet een brouw installatie kiezen.
      "}if(g!==""){if(f){this.showHint(g,"#hintEq")}return false}this.showHint("Ok, je mag doorgaan.","#hintEq");$("#nextButtonEq").jqxButton({template:"success"});return true}}}());d.init()}); \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/prod_new.js --- a/www/js/prod_new.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/prod_new.js Fri Oct 18 13:12:46 2019 +0200 @@ -23,10 +23,6 @@ $(document).ready(function () { - var recipe_type = 2; - var style_type = 0; - var tun_material = 0; - // Tab 1, base $("#name").jqxTooltip({ content: 'De naam voor dit brouw project.' }); $("#name").jqxInput({ theme: theme, width: 640, height: 23 }); @@ -107,8 +103,8 @@ }); $("#styleSelect").on('select', function (event) { if (event.args) { - var index = event.args.index; - var datarecord = styleslist.records[index]; + var index = event.args.index, + datarecord = styleslist.records[index]; $("#st_name").val(datarecord.name); $("#st_category").val(datarecord.category); $("#st_category_number").val(datarecord.category_number); @@ -198,8 +194,8 @@ }); $("#equipmentSelect").on('select', function (event) { if (event.args) { - var index = event.args.index; - var datarecord = equipmentlist.records[index]; + var index = event.args.index, + datarecord = equipmentlist.records[index]; $("#eq_name").val(datarecord.name); $("#eq_boil_size").val(datarecord.boil_size); $("#eq_batch_size").val(datarecord.batch_size); @@ -228,8 +224,10 @@ } }); - //Creating wizard module - var wizard = (function () { + var recipe_type = 2, + style_type = 0, + tun_material = 0, + wizard = (function() { // Creating wizard module //Adding event listeners var _addHandlers = function () { @@ -239,16 +237,17 @@ $('#styleSelect').on('change', function (event) { wizard.validate(true); }); $('#equipmentSelect').on('change', function (event) { wizard.validate(true); }); $('#nextButtonCompleted').click(function () { - var d = new Date(); - var m = d.getMonth() + 1; - var b = d.getFullYear() + '-'; + var d = new Date(), + m = d.getMonth() + 1, + b = d.getFullYear() + '-', + newrow, data; if (m < 10) b = b + '0'; b = b + m + '-'; if (d.getDate() < 10) b = b + '0'; b = b + d.getDate(); - var newrow = { + newrow = { record: -1, name: $("#name").val(), code: $("#code").val(), @@ -425,9 +424,12 @@ wb_magnesium: 0, wb_total_alkalinity: 0, wb_ph: 0, - starter_enable: 0 + starter_enable: 0, + divide_type: 0, + divide_size: 0, + divide_parts: 0 }; - var data = "insert=true&return=" + my_return + "&" + $.param(newrow); + data = "insert=true&return=" + my_return + "&" + $.param(newrow); $.ajax({ dataType: 'json', url: "includes/db_product.php", @@ -465,11 +467,11 @@ }); $('#nextButtonBase').jqxButton({ theme: theme, width: 150 }); $('#nextButtonStyle').jqxButton({ theme: theme, width: 150}); - $('#backButtonStyle').jqxButton({ theme: theme, width: 150}); + $('#backButtonStyle').jqxButton({ theme: theme, template: 'success', width: 150}); $('#nextButtonEq').jqxButton({ theme: theme, width: 150}); - $('#backButtonEq').jqxButton({ theme: theme, width: 150}); - $('#nextButtonCompleted').jqxButton({ theme: theme, width: 150}); - $('#backButtonCompleted').jqxButton({ theme: theme, width: 150}); + $('#backButtonEq').jqxButton({ theme: theme, template: 'success', width: 150}); + $('#nextButtonCompleted').jqxButton({ theme: theme, template: 'success', width: 150}); + $('#backButtonCompleted').jqxButton({ theme: theme, template: 'success', width: 150}); _addHandlers(); this.validate(); this.showHint('Validation hints.'); @@ -530,6 +532,7 @@ return false; } this.showHint('Ok, je mag doorgaan.', '#hintBase'); + $('#nextButtonBase').jqxButton({ template: 'success' }); return true; }, @@ -547,6 +550,7 @@ return false; } this.showHint('Ok, je mag doorgaan.', '#hintStyle'); + $('#nextButtonStyle').jqxButton({ template: 'success' }); return true; }, @@ -564,6 +568,7 @@ return false; } this.showHint('Ok, je mag doorgaan.', '#hintEq'); + $('#nextButtonEq').jqxButton({ template: 'success' }); return true; } } diff -r 9e43b216ccd3 -r d25a1b160dba www/js/profile_fermentation-min.js --- a/www/js/profile_fermentation-min.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/profile_fermentation-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -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({template:"danger",width:"65px",theme:theme});$("#delCancel").jqxButton({template:"success",width:"65px",theme:theme});$("#delCancel").focus()}});$("#eventWindow").jqxWindow("hide")}$(document).ready(function(){$("#name").jqxTooltip({content:"De naam voor dit vergisting profiel."});$("#inittemp_lo").jqxTooltip({content:"De minimale begin temperatuur van dit profiel."});$("#inittemp_hi").jqxTooltip({content:"De maximale begin temperatuur van dit profiel."});var c={},b="includes/db_profile_fermentation.php",e={datatype:"json",cache:false,datafields:[{name:"record",type:"number"},{name:"uuid",type:"string"},{name:"name",type:"string"},{name:"inittemp_lo",type:"float"},{name:"inittemp_hi",type:"float"},{name:"fridgemode",type:"int"},{name:"totalsteps",type:"int"},{name:"duration",type:"int"},{name:"steps",type:"array"}],id:"record",url:b,deleterow:function(g,i){var h="delete=true&"+$.param({record:g});$.ajax({dataType:"json",url:b,cache:false,data:h,type:"POST",success:function(k,j,l){i(true);location.reload(true)},error:function(j,l,k){i(false)}})},addrow:function(h,k,g,j){var i="insert=true&"+$.param(k);$.ajax({dataType:"json",url:b,cache:false,data:i,type:"POST",success:function(m,l,n){j(true);location.reload(true)},error:function(l,n,m){j(false)}})},updaterow:function(g,j,i){var h="update=true&"+$.param(j);$.ajax({dataType:"json",url:b,cache:false,data:h,type:"POST",success:function(l,k,m){i(true);location.reload(true)},error:function(k,m,l){i(false)}})}},f=new $.jqx.dataAdapter(e);var a=function(j){var i=function(){var k={};k.name="Stap 1";k.steptime=12;k.resttime=24;k.target_lo=22;k.target_hi=23;k.fridgemode=0;return k};var h={localdata:j.steps,datatype:"local",datafields:[{name:"name",type:"string"},{name:"steptime",type:"float"},{name:"resttime",type:"float"},{name:"target_lo",type:"float"},{name:"target_hi",type:"float"},{name:"fridgemode",type:"int"}],addrow:function(l,n,k,m){m(true)},deleterow:function(k,l){l(true)}},g=new $.jqx.dataAdapter(h);$("#grid").jqxGrid({width:800,height:330,source:g,theme:theme,selectionmode:"singlerow",editmode:"selectedcell",editable:true,showtoolbar:true,rendertoolbar:function(l){var k=$("
      ");l.append(k);k.append('');k.append('');$("#addrowbutton").jqxButton({template:"primary",theme:theme,width:150});$("#deleterowbutton").jqxButton({template:"danger",theme:theme,width:150});$("#addrowbutton").on("click",function(){var m=i();$("#grid").jqxGrid("addrow",null,m)});$("#deleterowbutton").on("click",function(){var m=$("#grid").jqxGrid("getselectedrowindex");var o=$("#grid").jqxGrid("getdatainformation").rowscount;if(m>=0&&m40){return{result:false,message:"De temperatuur moet tussen 0 en 40 zijn."}}return true}},{text:"Max. °C",datafield:"target_hi",width:100,align:"right",cellsalign:"right",cellsformat:"f1",validation:function(k,l){if(l<0||l>40){return{result:false,message:"De temperatuur moet tussen 0 en 40 zijn."}}return true}},{text:"Koelkast",datafield:"fridgemode",columntype:"checkbox",width:80},{text:"Stap tijd",datafield:"steptime",width:80,align:"right",cellsalign:"right",validation:function(k,l){if(l<0||l>14400){return{result:false,message:"De tijd moet tussen 0 en 14400 zijn."}}return true}},{text:"Rust tijd",datafield:"resttime",width:80,align:"right",cellsalign:"right",validation:function(k,l){if(l<0||l>14400){return{result:false,message:"De tijd moet tussen 0 en 14400 zijn."}}return true}}]})};$("#name").jqxInput({theme:theme,width:640,height:23});$("#inittemp_lo").jqxNumberInput(Spin1dec);$("#inittemp_lo").jqxNumberInput({max:40});$("#inittemp_hi").jqxNumberInput(Spin1dec);$("#inittemp_hi").jqxNumberInput({max:40});$("#fridgemode").jqxCheckBox({theme:theme,height:23,enableContainerClick:false});var d=-1;$("#jqxgrid").jqxGrid({width:1280,height:630,source:f,theme:theme,showstatusbar:true,renderstatusbar:function(i){var h,g=$("
      ");h=$("
      Nieuw
      ");g.append(h);i.append(g);h.jqxButton({theme:theme,width:90,height:20});h.click(function(j){d=-1;$("#name").val("Nieuw vergist profiel");c.uuid="";$("#inittemp_lo").val(20);$("#inittemp_hi").val(20);$("#fridgemode").val(0);c.totalsteps=0;c.duration=0;a("");$("#popupWindow").jqxWindow("open")})},filterable:false,columns:[{text:"Vergisting profiel",datafield:"name"},{text:"Min. start °C",datafield:"inittemp_lo",width:150,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Max. start °C",datafield:"inittemp_hi",width:150,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Stappen",datafield:"totalsteps",width:80,align:"right",cellsalign:"right"},{text:"Tijdsduur",datafield:"duration",width:150,align:"right",cellsrenderer:function(m,j,l,i,k){var h,n,g;if(l<24){h=l+" uur"}else{n=Math.floor(l/24);g=l%24;if(n==1){h=n+" dag, "+g+" uur"}else{h=n+" dagen, "+g+" uur"}}return""+h+""}},{text:"",datafield:"Edit",width:100,align:"center",columntype:"button",cellsrenderer:function(){return"Wijzig"},buttonclick:function(g){d=g;c=$("#jqxgrid").jqxGrid("getrowdata",d);$("#name").val(c.name);$("#inittemp_lo").val(parseFloat(c.inittemp_lo));$("#inittemp_hi").val(parseFloat(c.inittemp_hi));$("#fridgemode").val(parseFloat(c.fridgemode));a(c);$("#popupWindow").jqxWindow("open")}}]});$("#popupWindow").jqxWindow({width:1050,height:550,position:{x:110,y:30},resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#Cancel"),modalOpacity:0.4});$("#popupWindow").on("open",function(){$("#name").jqxInput("selectAll")});$("#Delete").jqxButton({template:"danger",width:"90px",theme:theme});$("#Delete").click(function(){if(d>=0){$("#eventWindow").jqxWindow("open");$("#delOk").click(function(){var g=$("#jqxgrid").jqxGrid("getrowid",d);$("#jqxgrid").jqxGrid("deleterow",g)})}$("#popupWindow").jqxWindow("hide")});$("#Cancel").jqxButton({template:"primary",width:"90px",theme:theme});$("#Save").jqxButton({template:"success",width:"90px",theme:theme});$("#Save").click(function(){var i,h=-1,g=$("#grid").jqxGrid("getrows");if(d>=0){h=$("#jqxgrid").jqxGrid("getrowid",d)}i={record:h,uuid:c.uuid,name:$("#name").val(),inittemp_lo:parseFloat($("#inittemp_lo").jqxNumberInput("decimal")),inittemp_hi:parseFloat($("#inittemp_hi").jqxNumberInput("decimal")),fridgemode:$("#fridgemode").val(),steps:g};if(d>=0){$("#jqxgrid").jqxGrid("updaterow",h,i)}else{$("#jqxgrid").jqxGrid("addrow",null,i)}$("#popupWindow").jqxWindow("hide")});createDelElements()}); \ No newline at end of file +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({template:"danger",width:"65px",theme:theme});$("#delCancel").jqxButton({template:"success",width:"65px",theme:theme});$("#delCancel").focus()}});$("#eventWindow").jqxWindow("hide")}$(document).ready(function(){$("#name").jqxTooltip({content:"De naam voor dit vergisting profiel."});$("#inittemp_lo").jqxTooltip({content:"De minimale begin temperatuur van dit profiel."});$("#inittemp_hi").jqxTooltip({content:"De maximale begin temperatuur van dit profiel."});var c={},b="includes/db_profile_fermentation.php",e={datatype:"json",cache:false,datafields:[{name:"record",type:"number"},{name:"uuid",type:"string"},{name:"name",type:"string"},{name:"inittemp_lo",type:"float"},{name:"inittemp_hi",type:"float"},{name:"fridgemode",type:"int"},{name:"totalsteps",type:"int"},{name:"duration",type:"int"},{name:"steps",type:"array"}],id:"record",url:b,deleterow:function(g,i){var h="delete=true&"+$.param({record:g});$.ajax({dataType:"json",url:b,cache:false,data:h,type:"POST",success:function(k,j,l){i(true);location.reload(true)},error:function(j,l,k){i(false)}})},addrow:function(h,k,g,j){var i="insert=true&"+$.param(k);$.ajax({dataType:"json",url:b,cache:false,data:i,type:"POST",success:function(m,l,n){j(true);location.reload(true)},error:function(l,n,m){j(false)}})},updaterow:function(g,j,i){var h="update=true&"+$.param(j);$.ajax({dataType:"json",url:b,cache:false,data:h,type:"POST",success:function(l,k,m){i(true);location.reload(true)},error:function(k,m,l){i(false)}})}},f=new $.jqx.dataAdapter(e),d=-1,a=function(j){var i=function(){var k={};k.name="Stap 1";k.steptime=12;k.resttime=24;k.target_lo=22;k.target_hi=23;k.fridgemode=0;return k},h={localdata:j.steps,datatype:"local",datafields:[{name:"name",type:"string"},{name:"steptime",type:"float"},{name:"resttime",type:"float"},{name:"target_lo",type:"float"},{name:"target_hi",type:"float"},{name:"fridgemode",type:"int"}],addrow:function(l,n,k,m){m(true)},deleterow:function(k,l){l(true)}},g=new $.jqx.dataAdapter(h);$("#grid").jqxGrid({width:800,height:330,source:g,theme:theme,selectionmode:"singlerow",editmode:"selectedcell",editable:true,showtoolbar:true,rendertoolbar:function(l){var k=$("
      ");l.append(k);k.append('');k.append('');$("#addrowbutton").jqxButton({template:"primary",theme:theme,width:150});$("#deleterowbutton").jqxButton({template:"danger",theme:theme,width:150});$("#addrowbutton").on("click",function(){var m=i();$("#grid").jqxGrid("addrow",null,m)});$("#deleterowbutton").on("click",function(){var m=$("#grid").jqxGrid("getselectedrowindex"),o=$("#grid").jqxGrid("getdatainformation").rowscount,n;if(m>=0&&m40){return{result:false,message:"De temperatuur moet tussen 0 en 40 zijn."}}return true}},{text:"Max. °C",datafield:"target_hi",width:100,align:"right",cellsalign:"right",cellsformat:"f1",validation:function(k,l){if(l<0||l>40){return{result:false,message:"De temperatuur moet tussen 0 en 40 zijn."}}return true}},{text:"Koelkast",datafield:"fridgemode",columntype:"checkbox",width:80},{text:"Stap tijd",datafield:"steptime",width:80,align:"right",cellsalign:"right",validation:function(k,l){if(l<0||l>14400){return{result:false,message:"De tijd moet tussen 0 en 14400 zijn."}}return true}},{text:"Rust tijd",datafield:"resttime",width:80,align:"right",cellsalign:"right",validation:function(k,l){if(l<0||l>14400){return{result:false,message:"De tijd moet tussen 0 en 14400 zijn."}}return true}}]})};$("#name").jqxInput({theme:theme,width:640,height:23});$("#inittemp_lo").jqxNumberInput(Spin1dec);$("#inittemp_lo").jqxNumberInput({max:40});$("#inittemp_hi").jqxNumberInput(Spin1dec);$("#inittemp_hi").jqxNumberInput({max:40});$("#fridgemode").jqxCheckBox({theme:theme,height:23,enableContainerClick:false});$("#jqxgrid").jqxGrid({width:1280,height:630,source:f,theme:theme,showstatusbar:true,renderstatusbar:function(i){var h,g=$("
      ");h=$("
      Nieuw
      ");g.append(h);i.append(g);h.jqxButton({theme:theme,width:90,height:20});h.click(function(j){d=-1;$("#name").val("Nieuw vergist profiel");c.uuid="";$("#inittemp_lo").val(20);$("#inittemp_hi").val(20);$("#fridgemode").val(0);c.totalsteps=0;c.duration=0;a("");$("#popupWindow").jqxWindow("open")})},filterable:false,columns:[{text:"Vergisting profiel",datafield:"name"},{text:"Min. start °C",datafield:"inittemp_lo",width:150,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Max. start °C",datafield:"inittemp_hi",width:150,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Stappen",datafield:"totalsteps",width:80,align:"right",cellsalign:"right"},{text:"Tijdsduur",datafield:"duration",width:150,align:"right",cellsrenderer:function(m,j,l,i,k){var h,n,g;if(l<24){h=l+" uur"}else{n=Math.floor(l/24);g=l%24;if(n==1){h=n+" dag, "+g+" uur"}else{h=n+" dagen, "+g+" uur"}}return""+h+""}},{text:"",datafield:"Edit",width:100,align:"center",columntype:"button",cellsrenderer:function(){return"Wijzig"},buttonclick:function(g){d=g;c=$("#jqxgrid").jqxGrid("getrowdata",d);$("#name").val(c.name);$("#inittemp_lo").val(parseFloat(c.inittemp_lo));$("#inittemp_hi").val(parseFloat(c.inittemp_hi));$("#fridgemode").val(parseFloat(c.fridgemode));a(c);$("#popupWindow").jqxWindow("open")}}]});$("#popupWindow").jqxWindow({width:1050,height:550,position:{x:110,y:30},resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#Cancel"),modalOpacity:0.4});$("#popupWindow").on("open",function(){$("#name").jqxInput("selectAll")});$("#Delete").jqxButton({template:"danger",width:"90px",theme:theme});$("#Delete").click(function(){if(d>=0){$("#eventWindow").jqxWindow("open");$("#delOk").click(function(){var g=$("#jqxgrid").jqxGrid("getrowid",d);$("#jqxgrid").jqxGrid("deleterow",g)})}$("#popupWindow").jqxWindow("hide")});$("#Cancel").jqxButton({template:"primary",width:"90px",theme:theme});$("#Save").jqxButton({template:"success",width:"90px",theme:theme});$("#Save").click(function(){var i,h=-1,g=$("#grid").jqxGrid("getrows");if(d>=0){h=$("#jqxgrid").jqxGrid("getrowid",d)}i={record:h,uuid:c.uuid,name:$("#name").val(),inittemp_lo:parseFloat($("#inittemp_lo").jqxNumberInput("decimal")),inittemp_hi:parseFloat($("#inittemp_hi").jqxNumberInput("decimal")),fridgemode:$("#fridgemode").val(),steps:g};if(d>=0){$("#jqxgrid").jqxGrid("updaterow",h,i)}else{$("#jqxgrid").jqxGrid("addrow",null,i)}$("#popupWindow").jqxWindow("hide")});createDelElements()}); \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/profile_fermentation.js --- a/www/js/profile_fermentation.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/profile_fermentation.js Fri Oct 18 13:12:46 2019 +0200 @@ -121,10 +121,11 @@ }); } }, - dataAdapter = new $.jqx.dataAdapter(source); + dataAdapter = new $.jqx.dataAdapter(source), + editrow = -1, // Inline steps editor - var editsteps = function (data) { + editsteps = function (data) { var generaterow = function () { var row = {}; row["name"] = "Stap 1"; @@ -134,8 +135,8 @@ row['target_hi'] = 23.0; row['fridgemode'] = 0; return row; - } - var stepSource = { + }, + stepSource = { localdata: data.steps, datatype: "local", datafields: [ @@ -177,10 +178,11 @@ }); // delete row. $("#deleterowbutton").on('click', function () { - var selectedrowindex = $("#grid").jqxGrid('getselectedrowindex'); - var rowscount = $("#grid").jqxGrid('getdatainformation').rowscount; + var selectedrowindex = $("#grid").jqxGrid('getselectedrowindex'), + rowscount = $("#grid").jqxGrid('getdatainformation').rowscount, + id; if (selectedrowindex >= 0 && selectedrowindex < rowscount) { - var id = $("#grid").jqxGrid('getrowid', selectedrowindex); + id = $("#grid").jqxGrid('getrowid', selectedrowindex); $("#grid").jqxGrid('deleterow', id); } }); @@ -232,7 +234,6 @@ $("#inittemp_hi").jqxNumberInput({ max: 40 }); $("#fridgemode").jqxCheckBox({ theme: theme, height: 23, enableContainerClick: false }); - var editrow = -1; // initialize jqxGrid $("#jqxgrid").jqxGrid({ width: 1280, diff -r 9e43b216ccd3 -r d25a1b160dba www/js/profile_mash-min.js --- a/www/js/profile_mash-min.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/profile_mash-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -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({template:"danger",width:"65px",theme:theme});$("#delCancel").jqxButton({template:"success",width:"65px",theme:theme});$("#delCancel").focus()}});$("#eventWindow").jqxWindow("hide")}$(document).ready(function(){var g=0;var d={};var c={};var b="includes/db_profile_mash.php";$("#name").jqxTooltip({content:"De naam voor dit maisch profiel."});$("#notes").jqxTooltip({content:"De uitgebreide opmerkingen over dit maisch profiel."});var f={datatype:"json",cache:false,datafields:[{name:"record",type:"number"},{name:"name",type:"string"},{name:"notes",type:"string"},{name:"steps",type:"array"}],id:"record",url:b,deleterow:function(i,k){var j="delete=true&"+$.param({record:i});$.ajax({dataType:"json",url:b,cache:false,data:j,type:"POST",success:function(m,l,n){k(true);console.log("mash deleterow "+i+" success");location.reload(true)},error:function(l,n,m){k(false);console.log("mash deleterow "+n)}})},addrow:function(j,m,i,l){var k="insert=true&"+$.param(m);$.ajax({dataType:"json",url:b,cache:false,data:k,type:"POST",success:function(o,n,p){l(true);console.log("mash addrow "+j+" success");location.reload(true)},error:function(n,p,o){l(false);console.log("mash addrow "+p)}})},updaterow:function(i,l,k){var j="update=true&"+$.param(l);$.ajax({dataType:"json",url:b,cache:false,data:j,type:"POST",success:function(n,m,o){k(true);console.log("mash updaterow "+i+" success");location.reload(true)},error:function(m,o,n){k(false);console.log("mash updaterow "+o)}})}};$("#m_step_name").jqxInput({theme:theme,width:320,height:23});$("#m_step_type").jqxDropDownList({theme:theme,source:MashStepTypeAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#m_step_temp").jqxNumberInput(Spin1dec);$("#m_step_temp").jqxNumberInput({Min:30,Max:80});$("#m_end_temp").jqxNumberInput(Spin1dec);$("#m_end_temp").jqxNumberInput({Min:30,Max:80});$("#m_step_time").jqxNumberInput(PosInt);$("#m_step_time").jqxNumberInput({Min:1,Max:120});$("#m_ramp_time").jqxNumberInput(PosInt);$("#m_ramp_time").jqxNumberInput({Min:1,Max:30});var h=new $.jqx.dataAdapter(f),e=-1;var a=function(l){var k=function(){var m={};m.step_name="Stap 1";m.step_type=0;m.step_temp=62;m.step_time=20;m.ramp_time=1;m.end_temp=62;return m};var j={localdata:l.steps,datatype:"local",datafields:[{name:"step_name",type:"string"},{name:"step_type",type:"int"},{name:"step_temp",type:"float"},{name:"step_time",type:"float"},{name:"ramp_time",type:"float"},{name:"end_temp",type:"float"}],addrow:function(n,p,m,o){o(true)},deleterow:function(m,n){n(true)}};var i=new $.jqx.dataAdapter(j);$("#grid").jqxGrid({width:1020,height:330,source:i,theme:theme,selectionmode:"singlerow",showtoolbar:true,rendertoolbar:function(n){var m=$("
      ");n.append(m);m.append('');m.append('');$("#addrowbutton").jqxButton({template:"primary",theme:theme,width:150});$("#deleterowbutton").jqxButton({template:"danger",theme:theme,width:150});$("#addrowbutton").on("click",function(){var o=k();$("#grid").jqxGrid("addrow",null,o)});$("#deleterowbutton").on("click",function(){var o=$("#grid").jqxGrid("getselectedrowindex");var q=$("#grid").jqxGrid("getdatainformation").rowscount;if(o>=0&&o"+MashStepTypeData[q].nl+""}},{text:"Begin °C",datafield:"step_temp",width:100,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Eind °C",datafield:"end_temp",width:100,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Rust min.",datafield:"step_time",width:90,align:"right",cellsalign:"right"},{text:"Stap min.",datafield:"ramp_time",width:90,align:"right",cellsalign:"right"},{text:"",datafield:"Edit",columntype:"button",width:100,align:"center",cellsrenderer:function(){return"Wijzig"},buttonclick:function(m){g=m;d=$("#grid").jqxGrid("getrowdata",g);$("#m_step_name").val(d.step_name);$("#m_step_type").val(d.step_type);$("#m_step_temp").val(d.step_temp);$("#m_end_temp").val(d.end_temp);$("#m_step_time").val(d.step_time);$("#m_ramp_time").val(d.ramp_time);$("#popupStep").jqxWindow("open")}}]})};$("#name").jqxInput({theme:theme,width:480,height:23});$("#notes").jqxInput({theme:theme,width:800,height:100});$("#jqxgrid").jqxGrid({width:1280,height:630,source:h,theme:theme,showstatusbar:true,renderstatusbar:function(k){var i=$("
      ");var j=$("
      Add
      ");i.append(j);k.append(i);j.jqxButton({theme:theme,width:90,height:20});j.click(function(l){e=-1;$("#name").val("Nieuw maisch schema");$("#notes").val("");a("");$("#popupWindow").jqxWindow("open")})},filterable:true,filtermode:"excel",columns:[{text:"Maish schema",datafield:"name",width:250},{text:"Opmerkingen",datafield:"notes"},{text:"",datafield:"Edit",width:100,align:"center",columntype:"button",cellsrenderer:function(){return"Wijzig"},buttonclick:function(i){e=i;c=$("#jqxgrid").jqxGrid("getrowdata",e);$("#name").val(c.name);$("#notes").val(c.notes);a(c);$("#popupWindow").jqxWindow("open")}}]});$("#popupWindow").jqxWindow({width:1050,height:580,position:{x:110,y:30},resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#Cancel"),modalOpacity:0.4});$("#popupWindow").on("open",function(){$("#name").jqxInput("selectAll")});$("#popupStep").jqxWindow({width:800,height:300,position:{x:230,y:100},resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#Ready"),modalOpacity:0.4});$("#Ready").jqxButton({template:"success",width:"90px",theme:theme});$("#Ready").click(function(){$("#grid").jqxGrid("setcellvalue",g,"step_name",$("#m_step_name").val());$("#grid").jqxGrid("setcellvalue",g,"step_type",$("#m_step_type").val());$("#grid").jqxGrid("setcellvalue",g,"step_temp",$("#m_step_temp").val());$("#grid").jqxGrid("setcellvalue",g,"end_temp",$("#m_end_temp").val());$("#grid").jqxGrid("setcellvalue",g,"step_time",$("#m_step_time").val());$("#grid").jqxGrid("setcellvalue",g,"ramp_time",$("#m_ramp_time").val());$("#grid").jqxGrid("sortby","step_temp","asc")});$("#Delete").jqxButton({template:"danger",width:"90px",theme:theme});$("#Delete").click(function(){if(e>=0){$("#eventWindow").jqxWindow("open");$("#delOk").click(function(){var i=$("#jqxgrid").jqxGrid("getrowid",e);$("#jqxgrid").jqxGrid("deleterow",i)})}$("#popupWindow").jqxWindow("hide")});$("#Cancel").jqxButton({template:"primary",width:"90px",theme:theme});$("#Save").jqxButton({template:"success",width:"90px",theme:theme});$("#Save").click(function(){var i=$("#grid").jqxGrid("getrows");var j=-1;if(e>=0){j=$("#jqxgrid").jqxGrid("getrowid",e)}var k={record:j,name:$("#name").val(),notes:$("#notes").val(),steps:i};if(e>=0){$("#jqxgrid").jqxGrid("updaterow",j,k)}else{$("#jqxgrid").jqxGrid("addrow",null,k)}$("#popupWindow").jqxWindow("hide")});createDelElements()}); \ No newline at end of file +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({template:"danger",width:"65px",theme:theme});$("#delCancel").jqxButton({template:"success",width:"65px",theme:theme});$("#delCancel").focus()}});$("#eventWindow").jqxWindow("hide")}$(document).ready(function(){$("#name").jqxTooltip({content:"De naam voor dit maisch profiel."});$("#notes").jqxTooltip({content:"De uitgebreide opmerkingen over dit maisch profiel."});var g=0,d={},c={},b="includes/db_profile_mash.php",f={datatype:"json",cache:false,datafields:[{name:"record",type:"number"},{name:"name",type:"string"},{name:"notes",type:"string"},{name:"steps",type:"array"}],id:"record",url:b,deleterow:function(i,k){var j="delete=true&"+$.param({record:i});$.ajax({dataType:"json",url:b,cache:false,data:j,type:"POST",success:function(m,l,n){k(true);console.log("mash deleterow "+i+" success");location.reload(true)},error:function(l,n,m){k(false);console.log("mash deleterow "+n)}})},addrow:function(j,m,i,l){var k="insert=true&"+$.param(m);$.ajax({dataType:"json",url:b,cache:false,data:k,type:"POST",success:function(o,n,p){l(true);console.log("mash addrow "+j+" success");location.reload(true)},error:function(n,p,o){l(false);console.log("mash addrow "+p)}})},updaterow:function(i,l,k){var j="update=true&"+$.param(l);$.ajax({dataType:"json",url:b,cache:false,data:j,type:"POST",success:function(n,m,o){k(true);console.log("mash updaterow "+i+" success");location.reload(true)},error:function(m,o,n){k(false);console.log("mash updaterow "+o)}})}},h=new $.jqx.dataAdapter(f),e=-1,a=function(l){var k=function(){var m={};m.step_name="Stap 1";m.step_type=0;m.step_temp=62;m.step_time=20;m.ramp_time=1;m.end_temp=62;return m},j={localdata:l.steps,datatype:"local",datafields:[{name:"step_name",type:"string"},{name:"step_type",type:"int"},{name:"step_temp",type:"float"},{name:"step_time",type:"float"},{name:"ramp_time",type:"float"},{name:"end_temp",type:"float"}],addrow:function(n,p,m,o){o(true)},deleterow:function(m,n){n(true)}},i=new $.jqx.dataAdapter(j);$("#grid").jqxGrid({width:1020,height:330,source:i,theme:theme,selectionmode:"singlerow",showtoolbar:true,rendertoolbar:function(n){var m=$("
      ");n.append(m);m.append('');m.append('');$("#addrowbutton").jqxButton({template:"primary",theme:theme,width:150});$("#deleterowbutton").jqxButton({template:"danger",theme:theme,width:150});$("#addrowbutton").on("click",function(){var o=k();$("#grid").jqxGrid("addrow",null,o)});$("#deleterowbutton").on("click",function(){var q,p,o=$("#grid").jqxGrid("getselectedrowindex");q=$("#grid").jqxGrid("getdatainformation").rowscount;if(o>=0&&o"+MashStepTypeData[q].nl+""}},{text:"Begin °C",datafield:"step_temp",width:100,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Eind °C",datafield:"end_temp",width:100,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Rust min.",datafield:"step_time",width:90,align:"right",cellsalign:"right"},{text:"Stap min.",datafield:"ramp_time",width:90,align:"right",cellsalign:"right"},{text:"",datafield:"Edit",columntype:"button",width:100,align:"center",cellsrenderer:function(){return"Wijzig"},buttonclick:function(m){g=m;d=$("#grid").jqxGrid("getrowdata",g);$("#m_step_name").val(d.step_name);$("#m_step_type").val(d.step_type);$("#m_step_temp").val(d.step_temp);$("#m_end_temp").val(d.end_temp);$("#m_step_time").val(d.step_time);$("#m_ramp_time").val(d.ramp_time);$("#popupStep").jqxWindow("open")}}]})};$("#m_step_name").jqxInput({theme:theme,width:320,height:23});$("#m_step_type").jqxDropDownList({theme:theme,source:MashStepTypeAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#m_step_temp").jqxNumberInput(Spin1dec);$("#m_step_temp").jqxNumberInput({Min:30,Max:80});$("#m_end_temp").jqxNumberInput(Spin1dec);$("#m_end_temp").jqxNumberInput({Min:30,Max:80});$("#m_step_time").jqxNumberInput(PosInt);$("#m_step_time").jqxNumberInput({Min:1,Max:120});$("#m_ramp_time").jqxNumberInput(PosInt);$("#m_ramp_time").jqxNumberInput({Min:1,Max:30});$("#name").jqxInput({theme:theme,width:480,height:23});$("#notes").jqxInput({theme:theme,width:800,height:100});$("#jqxgrid").jqxGrid({width:1280,height:630,source:h,theme:theme,showstatusbar:true,renderstatusbar:function(k){var j,i=$("
      ");j=$("
      Add
      ");i.append(j);k.append(i);j.jqxButton({theme:theme,width:90,height:20});j.click(function(l){e=-1;$("#name").val("Nieuw maisch schema");$("#notes").val("");a("");$("#popupWindow").jqxWindow("open")})},filterable:true,filtermode:"excel",columns:[{text:"Maish schema",datafield:"name",width:250},{text:"Opmerkingen",datafield:"notes"},{text:"",datafield:"Edit",width:100,align:"center",columntype:"button",cellsrenderer:function(){return"Wijzig"},buttonclick:function(i){e=i;c=$("#jqxgrid").jqxGrid("getrowdata",e);$("#name").val(c.name);$("#notes").val(c.notes);a(c);$("#popupWindow").jqxWindow("open")}}]});$("#popupWindow").jqxWindow({width:1050,height:580,position:{x:110,y:30},resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#Cancel"),modalOpacity:0.4});$("#popupWindow").on("open",function(){$("#name").jqxInput("selectAll")});$("#popupStep").jqxWindow({width:800,height:300,position:{x:230,y:100},resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#Ready"),modalOpacity:0.4});$("#Ready").jqxButton({template:"success",width:"90px",theme:theme});$("#Ready").click(function(){$("#grid").jqxGrid("setcellvalue",g,"step_name",$("#m_step_name").val());$("#grid").jqxGrid("setcellvalue",g,"step_type",$("#m_step_type").val());$("#grid").jqxGrid("setcellvalue",g,"step_temp",$("#m_step_temp").val());$("#grid").jqxGrid("setcellvalue",g,"end_temp",$("#m_end_temp").val());$("#grid").jqxGrid("setcellvalue",g,"step_time",$("#m_step_time").val());$("#grid").jqxGrid("setcellvalue",g,"ramp_time",$("#m_ramp_time").val());$("#grid").jqxGrid("sortby","step_temp","asc")});$("#Delete").jqxButton({template:"danger",width:"90px",theme:theme});$("#Delete").click(function(){if(e>=0){$("#eventWindow").jqxWindow("open");$("#delOk").click(function(){var i=$("#jqxgrid").jqxGrid("getrowid",e);$("#jqxgrid").jqxGrid("deleterow",i)})}$("#popupWindow").jqxWindow("hide")});$("#Cancel").jqxButton({template:"primary",width:"90px",theme:theme});$("#Save").jqxButton({template:"success",width:"90px",theme:theme});$("#Save").click(function(){var i=$("#grid").jqxGrid("getrows"),j=-1,k;if(e>=0){j=$("#jqxgrid").jqxGrid("getrowid",e)}k={record:j,name:$("#name").val(),notes:$("#notes").val(),steps:i};if(e>=0){$("#jqxgrid").jqxGrid("updaterow",j,k)}else{$("#jqxgrid").jqxGrid("addrow",null,k)}$("#popupWindow").jqxWindow("hide")});createDelElements()}); \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/profile_mash.js --- a/www/js/profile_mash.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/profile_mash.js Fri Oct 18 13:12:46 2019 +0200 @@ -44,16 +44,15 @@ $(document).ready(function () { - var steprow = 0; - var stepData = {}; - var dataRecord = {}; - 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 maisch profiel.' }); - // prepare the data - var source = { + + var steprow = 0, + stepData = {}, + dataRecord = {}, + url = 'includes/db_profile_mash.php', + source = { datatype: 'json', cache: false, datafields: [ @@ -122,32 +121,12 @@ } }); } - }; - // Initialize the input fields. - $("#m_step_name").jqxInput({ theme: theme, width: 320, height: 23 }); - $("#m_step_type").jqxDropDownList({ - theme: theme, - source: MashStepTypeAdapter, - valueMember: 'id', - displayMember: 'nl', - width: 180, - height: 23, - autoDropDownHeight: true - }); - $("#m_step_temp").jqxNumberInput( Spin1dec ); - $("#m_step_temp").jqxNumberInput({ Min: 30, Max: 80 }); - $("#m_end_temp").jqxNumberInput( Spin1dec ); - $("#m_end_temp").jqxNumberInput({ Min: 30, Max: 80 }); - $("#m_step_time").jqxNumberInput( PosInt ); - $("#m_step_time").jqxNumberInput({ Min: 1, Max: 120 }); - $("#m_ramp_time").jqxNumberInput( PosInt ); - $("#m_ramp_time").jqxNumberInput({ Min: 1, Max: 30 }); - - var dataAdapter = new $.jqx.dataAdapter(source), - editrow = -1; + }, + dataAdapter = new $.jqx.dataAdapter(source), + editrow = -1, // Inline steps editor - var editsteps = function (data) { + editsteps = function (data) { var generaterow = function () { var row = {}; row['step_name'] = "Stap 1"; @@ -157,8 +136,8 @@ row['ramp_time'] = 1.0; row['end_temp'] = 62.0; return row; - } - var stepSource = { + }, + stepSource = { localdata: data.steps, datatype: "local", datafields: [ @@ -175,8 +154,9 @@ deleterow: function (rowid, commit) { commit(true); } - }; - var stepAdapter = new $.jqx.dataAdapter(stepSource); + }, + stepAdapter = new $.jqx.dataAdapter(stepSource); + $("#grid").jqxGrid({ width: 1020, height: 330, @@ -198,10 +178,10 @@ }); // delete row. $("#deleterowbutton").on('click', function () { - var selectedrowindex = $("#grid").jqxGrid('getselectedrowindex'); - var rowscount = $("#grid").jqxGrid('getdatainformation').rowscount; + var rowscount, id, selectedrowindex = $("#grid").jqxGrid('getselectedrowindex'); + rowscount = $("#grid").jqxGrid('getdatainformation').rowscount; if (selectedrowindex >= 0 && selectedrowindex < rowscount) { - var id = $("#grid").jqxGrid('getrowid', selectedrowindex); + id = $("#grid").jqxGrid('getrowid', selectedrowindex); $("#grid").jqxGrid('deleterow', id); } }); @@ -217,8 +197,9 @@ { text: 'Eind °C', datafield: 'end_temp', width: 100, align: 'right', cellsalign: 'right', cellsformat: 'f1' }, { text: 'Rust min.', datafield: 'step_time', width: 90, align: 'right', cellsalign: 'right' }, { text: 'Stap min.', datafield: 'ramp_time', width: 90, align: 'right', cellsalign: 'right' }, - { text: '', datafield: 'Edit', columntype: 'button', width: 100, align: 'center', cellsrenderer: function () { - return "Wijzig"; + { text: '', datafield: 'Edit', columntype: 'button', width: 100, align: 'center', + cellsrenderer: function () { + return "Wijzig"; }, buttonclick: function (row) { steprow = row; stepData = $("#grid").jqxGrid('getrowdata', steprow); @@ -236,6 +217,26 @@ }); }; + // Initialize the input fields. + $("#m_step_name").jqxInput({ theme: theme, width: 320, height: 23 }); + $("#m_step_type").jqxDropDownList({ + theme: theme, + source: MashStepTypeAdapter, + valueMember: 'id', + displayMember: 'nl', + width: 180, + height: 23, + autoDropDownHeight: true + }); + $("#m_step_temp").jqxNumberInput( Spin1dec ); + $("#m_step_temp").jqxNumberInput({ Min: 30, Max: 80 }); + $("#m_end_temp").jqxNumberInput( Spin1dec ); + $("#m_end_temp").jqxNumberInput({ Min: 30, Max: 80 }); + $("#m_step_time").jqxNumberInput( PosInt ); + $("#m_step_time").jqxNumberInput({ Min: 1, Max: 120 }); + $("#m_ramp_time").jqxNumberInput( PosInt ); + $("#m_ramp_time").jqxNumberInput({ Min: 1, Max: 30 }); + // initialize the input fields. $("#name").jqxInput({ theme: theme, width: 480, height: 23 }); $("#notes").jqxInput({ theme: theme, width: 800, height: 100 }); @@ -247,8 +248,8 @@ theme: theme, showstatusbar: true, renderstatusbar: function (statusbar) { - var container = $("
      "); - var addButton = $("
      Add
      "); + var addButton, container = $("
      "); + addButton = $("
      Add
      "); container.append(addButton); statusbar.append(container); addButton.jqxButton({ theme: theme, width: 90, height: 20 }); @@ -266,8 +267,9 @@ columns: [ { text: 'Maish schema', datafield: 'name', width: 250 }, { text: 'Opmerkingen', datafield: 'notes' }, - { text: '', datafield: 'Edit', width: 100, align: 'center', columntype: 'button', cellsrenderer: function () { - return "Wijzig"; + { text: '', datafield: 'Edit', width: 100, align: 'center', columntype: 'button', + cellsrenderer: function () { + return "Wijzig"; }, buttonclick: function (row) { editrow = row; // get the clicked row's data and initialize the input fields. @@ -336,12 +338,13 @@ $("#Cancel").jqxButton({ template: "primary", width: '90px', theme: theme }); $("#Save").jqxButton({ template: "success", width: '90px', theme: theme }); $("#Save").click(function () { - var steprows = $('#grid').jqxGrid('getrows'); - var rowID = -1; + var steprows = $('#grid').jqxGrid('getrows'), + rowID = -1, + row; if (editrow >= 0) { rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); } - var row = { + row = { record: rowID, name: $("#name").val(), notes: $("#notes").val(), diff -r 9e43b216ccd3 -r d25a1b160dba www/js/profile_setup-min.js --- a/www/js/profile_setup-min.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/profile_setup-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -$(document).ready(function(){var c={};var d="getwatersources.php";var a={datatype:"json",datafields:[{name:"name",type:"string"},],url:d,async:false};var g=new $.jqx.dataAdapter(a);var b="includes/db_setup.php";$("#brewery_name").jqxTooltip({content:"De naam voor deze brouwerij."});$("#factor_mashhop").jqxTooltip({content:"Het efficientie percentage voor hop tijdens de maisch."});$("#factor_fwh").jqxTooltip({content:"Het efficientie percentage voor First Wort Hop."});$("#factor_pellet").jqxTooltip({content:"Het efficientie percentage bij gebruik van hop pellets."});$("#factor_plug").jqxTooltip({content:"Het efficientie percentage bij gebruik van hop plugs."});$("#factor_wethop").jqxTooltip({content:"Het efficientie percentage bij gebruik van nat geplukte hop."});$("#factor_cryohop").jqxTooltip({content:"Het efficientie percentage bij gebruik van Cryo Hop®."});$("#brix_correction").jqxTooltip({content:"Omzettingsfactor voor Plato naar Brix"});$("#grain_absorbtion").jqxTooltip({content:"Absorbtie van water door graan (L/Kg)"});var e={datatype:"json",cache:false,datafields:[{name:"brewery_name",type:"string"},{name:"factor_mashhop",type:"number"},{name:"factor_fwh",type:"number"},{name:"factor_pellet",type:"number"},{name:"factor_plug",type:"number"},{name:"factor_wethop",type:"number"},{name:"factor_cryohop",type:"number"},{name:"ibu_method",type:"int"},{name:"color_method",type:"int"},{name:"brix_correction",type:"float"},{name:"grain_absorbtion",type:"float"},{name:"default_water",type:"string"}],url:b};var f=new $.jqx.dataAdapter(e,{loadComplete:function(){var h=f.records;c=h[0];$("#brewery_name").val(c.brewery_name);$("#factor_mashhop").val(c.factor_mashhop);$("#factor_fwh").val(c.factor_fwh);$("#factor_pellet").val(c.factor_pellet);$("#factor_plug").val(c.factor_plug);$("#factor_wethop").val(c.factor_wethop);$("#factor_cryohop").val(c.factor_cryohop);$("#color_method").val(c.color_method);$("#ibu_method").val(c.ibu_method);$("#brix_correction").val(c.brix_correction);$("#grain_absorbtion").val(c.grain_absorbtion)},loadError:function(j,h,i){},});f.dataBind();$("#brewery_name").jqxInput({theme:theme,width:640,height:23});$("#factor_fwh").jqxNumberInput({inputMode:"simple",theme:theme,width:110,height:23,min:-50,max:50,decimalDigits:0,spinButtons:true,symbol:"%",symbolPosition:"right"});$("#factor_mashhop").jqxNumberInput({inputMode:"simple",theme:theme,width:110,height:23,min:-50,max:50,decimalDigits:0,spinButtons:true,symbol:"%",symbolPosition:"right"});$("#factor_pellet").jqxNumberInput({inputMode:"simple",theme:theme,width:110,height:23,min:0,max:20,decimalDigits:0,spinButtons:true,symbol:"%",symbolPosition:"right"});$("#factor_plug").jqxNumberInput({inputMode:"simple",theme:theme,width:110,height:23,min:0,max:20,decimalDigits:0,spinButtons:true,symbol:"%",symbolPosition:"right"});$("#factor_wethop").jqxNumberInput({inputMode:"simple",theme:theme,width:110,height:23,min:-98,max:-20,decimalDigits:0,spinButtons:true,symbol:"%",symbolPosition:"right"});$("#factor_cryohop").jqxNumberInput({inputMode:"simple",theme:theme,width:110,height:23,min:-20,max:150,decimalDigits:0,spinButtons:true,symbol:"%",symbolPosition:"right"});$("#brix_correction").jqxNumberInput({inputMode:"simple",theme:theme,width:110,height:23,min:1,max:1.05,decimalDigits:2,spinButtons:true});$("#grain_absorbtion").jqxNumberInput({inputMode:"simple",theme:theme,width:110,height:23,min:0.5,max:1.1,decimalDigits:2,spinButtons:true});$("#color_method").jqxDropDownList({theme:theme,source:ColorMethodAdapter,valueMember:"id",displayMember:"nl",width:180,autoDropDownHeight:true});$("#ibu_method").jqxDropDownList({theme:theme,source:IBUmethodAdapter,valueMember:"id",displayMember:"nl",width:180,autoDropDownHeight:true});$("#default_water").jqxDropDownList({placeHolder:"Kies water:",theme:theme,source:g,valueMember:"name",displayMember:"name",width:250,dropDownHorizontalAlignment:"right",dropDownWidth:300,autoDropDownHeight:true});$("#default_water").jqxDropDownList("selectItem",c.default_water);$("#Save").jqxButton({template:"success",width:"90px",theme:theme});$("#Save").click(function(){var i={record:1,brewery_name:$("#brewery_name").val(),factor_mashhop:$("#factor_mashhop").val(),factor_fwh:$("#factor_fwh").val(),factor_pellet:$("#factor_pellet").val(),factor_plug:$("#factor_plug").val(),factor_wethop:$("#factor_wethop").val(),factor_cryohop:$("#factor_cryohop").val(),color_method:$("#color_method").val(),ibu_method:$("#ibu_method").val(),brix_correction:parseFloat($("#brix_correction").jqxNumberInput("decimal")),grain_absorbtion:parseFloat($("#grain_absorbtion").jqxNumberInput("decimal")),default_water:$("#default_water").val()};var h="update=true&"+$.param(i);$.ajax({dataType:"json",url:b,cache:false,data:h,type:"POST",success:function(k,j,l){},error:function(j,l,k){}})})}); \ No newline at end of file +$(document).ready(function(){var b={},c="getwatersources.php",a={datatype:"json",datafields:[{name:"name",type:"string"},],url:c,async:false},d=new $.jqx.dataAdapter(a);url="includes/db_setup.php",source={datatype:"json",cache:false,datafields:[{name:"brewery_name",type:"string"},{name:"factor_mashhop",type:"number"},{name:"factor_fwh",type:"number"},{name:"factor_pellet",type:"number"},{name:"factor_plug",type:"number"},{name:"factor_wethop",type:"number"},{name:"factor_cryohop",type:"number"},{name:"ibu_method",type:"int"},{name:"color_method",type:"int"},{name:"brix_correction",type:"float"},{name:"grain_absorbtion",type:"float"},{name:"default_water",type:"string"}],url:url},dataAdapter=new $.jqx.dataAdapter(source,{loadComplete:function(){var e=dataAdapter.records;b=e[0];$("#brewery_name").val(b.brewery_name);$("#factor_mashhop").val(b.factor_mashhop);$("#factor_fwh").val(b.factor_fwh);$("#factor_pellet").val(b.factor_pellet);$("#factor_plug").val(b.factor_plug);$("#factor_wethop").val(b.factor_wethop);$("#factor_cryohop").val(b.factor_cryohop);$("#color_method").val(b.color_method);$("#ibu_method").val(b.ibu_method);$("#brix_correction").val(b.brix_correction);$("#grain_absorbtion").val(b.grain_absorbtion)},loadError:function(g,e,f){},});dataAdapter.dataBind();$("#brewery_name").jqxTooltip({content:"De naam voor deze brouwerij."});$("#factor_mashhop").jqxTooltip({content:"Het efficientie percentage voor hop tijdens de maisch."});$("#factor_fwh").jqxTooltip({content:"Het efficientie percentage voor First Wort Hop."});$("#factor_pellet").jqxTooltip({content:"Het efficientie percentage bij gebruik van hop pellets."});$("#factor_plug").jqxTooltip({content:"Het efficientie percentage bij gebruik van hop plugs."});$("#factor_wethop").jqxTooltip({content:"Het efficientie percentage bij gebruik van nat geplukte hop."});$("#factor_cryohop").jqxTooltip({content:"Het efficientie percentage bij gebruik van Cryo Hop®."});$("#brix_correction").jqxTooltip({content:"Omzettingsfactor voor Plato naar Brix"});$("#grain_absorbtion").jqxTooltip({content:"Absorbtie van water door graan (L/Kg)"});$("#brewery_name").jqxInput({theme:theme,width:640,height:23});$("#factor_fwh").jqxNumberInput({inputMode:"simple",theme:theme,width:110,height:23,min:-50,max:50,decimalDigits:0,spinButtons:true,symbol:"%",symbolPosition:"right"});$("#factor_mashhop").jqxNumberInput({inputMode:"simple",theme:theme,width:110,height:23,min:-50,max:50,decimalDigits:0,spinButtons:true,symbol:"%",symbolPosition:"right"});$("#factor_pellet").jqxNumberInput({inputMode:"simple",theme:theme,width:110,height:23,min:0,max:20,decimalDigits:0,spinButtons:true,symbol:"%",symbolPosition:"right"});$("#factor_plug").jqxNumberInput({inputMode:"simple",theme:theme,width:110,height:23,min:0,max:20,decimalDigits:0,spinButtons:true,symbol:"%",symbolPosition:"right"});$("#factor_wethop").jqxNumberInput({inputMode:"simple",theme:theme,width:110,height:23,min:-98,max:-20,decimalDigits:0,spinButtons:true,symbol:"%",symbolPosition:"right"});$("#factor_cryohop").jqxNumberInput({inputMode:"simple",theme:theme,width:110,height:23,min:-20,max:150,decimalDigits:0,spinButtons:true,symbol:"%",symbolPosition:"right"});$("#brix_correction").jqxNumberInput({inputMode:"simple",theme:theme,width:110,height:23,min:1,max:1.05,decimalDigits:2,spinButtons:true});$("#grain_absorbtion").jqxNumberInput({inputMode:"simple",theme:theme,width:110,height:23,min:0.5,max:1.1,decimalDigits:2,spinButtons:true});$("#color_method").jqxDropDownList({theme:theme,source:ColorMethodAdapter,valueMember:"id",displayMember:"nl",width:180,autoDropDownHeight:true});$("#ibu_method").jqxDropDownList({theme:theme,source:IBUmethodAdapter,valueMember:"id",displayMember:"nl",width:180,autoDropDownHeight:true});$("#default_water").jqxDropDownList({placeHolder:"Kies water:",theme:theme,source:d,valueMember:"name",displayMember:"name",width:250,dropDownHorizontalAlignment:"right",dropDownWidth:300,autoDropDownHeight:true});$("#default_water").jqxDropDownList("selectItem",b.default_water);$("#Save").jqxButton({template:"success",width:"90px",theme:theme});$("#Save").click(function(){var e,f={record:1,brewery_name:$("#brewery_name").val(),factor_mashhop:$("#factor_mashhop").val(),factor_fwh:$("#factor_fwh").val(),factor_pellet:$("#factor_pellet").val(),factor_plug:$("#factor_plug").val(),factor_wethop:$("#factor_wethop").val(),factor_cryohop:$("#factor_cryohop").val(),color_method:$("#color_method").val(),ibu_method:$("#ibu_method").val(),brix_correction:parseFloat($("#brix_correction").jqxNumberInput("decimal")),grain_absorbtion:parseFloat($("#grain_absorbtion").jqxNumberInput("decimal")),default_water:$("#default_water").val()};e="update=true&"+$.param(f);$.ajax({dataType:"json",url:url,cache:false,data:e,type:"POST",success:function(h,g,i){},error:function(g,i,h){}})})}); \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/profile_setup.js --- a/www/js/profile_setup.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/profile_setup.js Fri Oct 18 13:12:46 2019 +0200 @@ -23,40 +23,26 @@ $(document).ready(function () { - var dataRecord = {}; - + var dataRecord = {}, // dropdownlist datasource from inventory_waters, must load sync - var waterUrl = "getwatersources.php"; - var waterInvSource = { + waterUrl = "getwatersources.php", + waterInvSource = { datatype: "json", datafields: [ { name: 'name', type: 'string' }, ], url: waterUrl, async: false - }; - var waterlist = new $.jqx.dataAdapter(waterInvSource); - - var url = "includes/db_setup.php"; - - // Tooltips - $("#brewery_name").jqxTooltip({ content: 'De naam voor deze brouwerij.' }); - $("#factor_mashhop").jqxTooltip({ content: 'Het efficientie percentage voor hop tijdens de maisch.' }); - $("#factor_fwh").jqxTooltip({ content: 'Het efficientie percentage voor First Wort Hop.' }); - $("#factor_pellet").jqxTooltip({ content: 'Het efficientie percentage bij gebruik van hop pellets.' }); - $("#factor_plug").jqxTooltip({ content: 'Het efficientie percentage bij gebruik van hop plugs.' }); - $("#factor_wethop").jqxTooltip({ content: 'Het efficientie percentage bij gebruik van nat geplukte hop.' }); - $("#factor_cryohop").jqxTooltip({ content: 'Het efficientie percentage bij gebruik van Cryo Hop®.' }); - $("#brix_correction").jqxTooltip({ content: 'Omzettingsfactor voor Plato naar Brix' }); - $("#grain_absorbtion").jqxTooltip({ content: 'Absorbtie van water door graan (L/Kg)' }); + }, + waterlist = new $.jqx.dataAdapter(waterInvSource); + url = "includes/db_setup.php", // Prepare the data - var source = { + source = { datatype: "json", cache: false, datafields: [ { name: 'brewery_name', type: 'string' }, - /* { name: 'brewery_logo', type: 'array' }, */ { name: 'factor_mashhop', type: 'number' }, { name: 'factor_fwh', type: 'number' }, { name: 'factor_pellet', type: 'number' }, @@ -70,10 +56,10 @@ { name: 'default_water', type: 'string' } ], url: url - }; + }, // Load data and select one record. - var dataAdapter = new $.jqx.dataAdapter(source, { + dataAdapter = new $.jqx.dataAdapter(source, { loadComplete: function () { var records = dataAdapter.records; dataRecord = records[0]; @@ -92,8 +78,20 @@ loadError: function (jqXHR, status, error) { }, }); + dataAdapter.dataBind(); + // Tooltips + $("#brewery_name").jqxTooltip({ content: 'De naam voor deze brouwerij.' }); + $("#factor_mashhop").jqxTooltip({ content: 'Het efficientie percentage voor hop tijdens de maisch.' }); + $("#factor_fwh").jqxTooltip({ content: 'Het efficientie percentage voor First Wort Hop.' }); + $("#factor_pellet").jqxTooltip({ content: 'Het efficientie percentage bij gebruik van hop pellets.' }); + $("#factor_plug").jqxTooltip({ content: 'Het efficientie percentage bij gebruik van hop plugs.' }); + $("#factor_wethop").jqxTooltip({ content: 'Het efficientie percentage bij gebruik van nat geplukte hop.' }); + $("#factor_cryohop").jqxTooltip({ content: 'Het efficientie percentage bij gebruik van Cryo Hop®.' }); + $("#brix_correction").jqxTooltip({ content: 'Omzettingsfactor voor Plato naar Brix' }); + $("#grain_absorbtion").jqxTooltip({ content: 'Absorbtie van water door graan (L/Kg)' }); + // Editers $("#brewery_name").jqxInput({ theme: theme, width: 640, height: 23 }); $("#factor_fwh").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 110, height: 23, min: -50, max: 50, decimalDigits: 0, spinButtons: true, symbol: '%', symbolPosition: 'right' }); @@ -135,7 +133,8 @@ $("#Save").jqxButton({ template: "success", width: '90px', theme: theme }); $("#Save").click(function () { - var row = { + var data, + row = { record: 1, brewery_name: $("#brewery_name").val(), factor_mashhop: $("#factor_mashhop").val(), @@ -150,7 +149,7 @@ grain_absorbtion: parseFloat($("#grain_absorbtion").jqxNumberInput('decimal')), default_water: $("#default_water").val() }; - var data = "update=true&" + $.param(row); + data = "update=true&" + $.param(row); $.ajax({ dataType: 'json', url: url, diff -r 9e43b216ccd3 -r d25a1b160dba www/js/profile_styles-min.js --- a/www/js/profile_styles-min.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/profile_styles-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -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({template:"danger",width:"65px",theme:theme});$("#delCancel").jqxButton({template:"success",width:"65px",theme:theme});$("#delCancel").focus()}});$("#eventWindow").jqxWindow("hide")}$(document).ready(function(){var b={},a="includes/db_profile_styles.php",d={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:"int"},{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:a,deleterow:function(f,h){var g="delete=true&"+$.param({record:f});$.ajax({dataType:"json",url:a,cache:false,data:g,type:"POST",success:function(j,i,k){h(true);location.reload(true)},error:function(i,k,j){h(false)}})},addrow:function(g,j,f,i){var h="insert=true&"+$.param(j);$.ajax({dataType:"json",url:a,cache:false,data:h,type:"POST",success:function(l,k,m){i(true);location.reload(true)},error:function(k,m,l){i(false)}})},updaterow:function(f,i,h){var g="update=true&"+$.param(i);$.ajax({dataType:"json",url:a,cache:false,data:g,type:"POST",success:function(k,j,l){h(true);location.reload(true)},error:function(j,l,k){h(false)}})}};$("#name").jqxInput({theme:theme,width:320,height:23});$("#category").jqxInput({theme:theme,width:320,height:23});$("#category_number").jqxNumberInput(PosInt);$("#style_letter").jqxInput({theme:theme,width:250,height:23});$("#style_guide").jqxInput({theme:theme,width:320,height:23});$("#type").jqxDropDownList({theme:theme,source:StyleTypeAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#og_min").jqxNumberInput(SGopts);$("#og_max").jqxNumberInput(SGopts);$("#fg_min").jqxNumberInput(SGopts);$("#fg_max").jqxNumberInput(SGopts);$("#ibu_min").jqxNumberInput(PosInt);$("#ibu_min").jqxNumberInput({max:200});$("#ibu_max").jqxNumberInput(PosInt);$("#ibu_max").jqxNumberInput({max:200});$("#color_min").jqxNumberInput(PosInt);$("#color_min").jqxNumberInput({max:200});$("#color_max").jqxNumberInput(PosInt);$("#color_max").jqxNumberInput({max:200});$("#carb_min").jqxNumberInput(Spin1dec);$("#carb_min").jqxNumberInput({max:5});$("#carb_max").jqxNumberInput(Spin1dec);$("#carb_max").jqxNumberInput({max:5});$("#abv_min").jqxNumberInput(Spin1dec);$("#abv_min").jqxNumberInput({max:20});$("#abv_max").jqxNumberInput(Spin1dec);$("#abv_max").jqxNumberInput({max:20});$("#notes").jqxInput({theme:theme,width:800,height:100});$("#profile").jqxInput({theme:theme,width:800,height:48});$("#ingredients").jqxInput({theme:theme,width:800,height:23});$("#examples").jqxInput({theme:theme,width:800,height:48});var e=new $.jqx.dataAdapter(d),c=-1;$("#jqxgrid").jqxGrid({width:1280,height:630,source:e,theme:theme,showstatusbar:true,renderstatusbar:function(h){var f,g,i;f=$("
      ");g=$("
      Nieuw
      ");i=$("
      Import
      ");f.append(g);f.append(i);h.append(f);g.jqxButton({theme:theme,width:90,height:20});i.jqxButton({theme:theme,width:90,height:20});g.click(function(j){c=-1;$("#name").val("Nieuwe stijl");$("#category").val("");$("#category_number").val("");$("#style_letter").val("");$("#style_guide").val("BKG 2015");$("#type").val(0);$("#og_min").val(1.03);$("#og_max").val(1.05);$("#fg_min").val(1.005);$("#fg_max").val(1.01);$("#ibu_min").val(20);$("#ibu_max").val(30);$("#color_min").val(52);$("#color_max").val(79);$("#carb_min").val(2);$("#carb_max").val(2.5);$("#abv_min").val(4);$("#abv_max").val(5);$("#notes").val("");$("#profile").val("");$("#ingredients").val("");$("#examples").val("");$("#popupWindow").jqxWindow("open")});i.click(function(j){window.location.href="import_ingredients.php?select=styles"})},filterable:true,filtermode:"excel",columns:[{text:"Gids",datafield:"style_guide",width:100},{text:"Groep",datafield:"style_letter",width:30},{text:"Style Name",menu:false,datafield:"name"},{text:"OG",menu:false,datafield:"og_min",width:60,align:"right",cellsalign:"right",cellsformat:"f3"},{text:"OG",menu:false,datafield:"og_max",width:60,align:"right",cellsalign:"right",cellsformat:"f3"},{text:"FG",menu:false,datafield:"fg_min",width:60,align:"right",cellsalign:"right",cellsformat:"f3"},{text:"FG",menu:false,datafield:"fg_max",width:60,align:"right",cellsalign:"right",cellsformat:"f3"},{text:"IBU",menu:false,datafield:"ibu_min",width:50,align:"right",cellsalign:"right",cellsformat:"f0"},{text:"IBU",menu:false,datafield:"ibu_max",width:50,align:"right",cellsalign:"right",cellsformat:"f0"},{text:"EBC",menu:false,datafield:"color_min",width:50,align:"right",cellsalign:"right",cellsformat:"f0"},{text:"EBC",menu:false,datafield:"color_max",width:50,align:"right",cellsalign:"right",cellsformat:"f0"},{text:"Co2",menu:false,datafield:"carb_min",width:50,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Co2",menu:false,datafield:"carb_max",width:50,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"ABV",menu:false,datafield:"abv_min",width:50,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"ABV",menu:false,datafield:"abv_max",width:50,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"",menu:false,datafield:"Edit",width:100,align:"center",columntype:"button",cellsrenderer:function(){return"Wijzig"},buttonclick:function(f){c=f;b=$("#jqxgrid").jqxGrid("getrowdata",c);$("#name").val(b.name);$("#category").val(b.category);$("#category_number").val(b.category_number);$("#style_letter").val(b.style_letter);$("#style_guide").val(b.style_guide);$("#type").val(b.type);$("#og_min").val(b.og_min);$("#og_max").val(b.og_max);$("#fg_min").val(b.fg_min);$("#fg_max").val(b.fg_max);$("#ibu_min").val(b.ibu_min);$("#ibu_max").val(b.ibu_max);$("#color_min").val(b.color_min);$("#color_max").val(b.color_max);$("#carb_min").val(b.carb_min);$("#carb_max").val(b.carb_max);$("#abv_min").val(b.abv_min);$("#abv_max").val(b.abv_max);$("#notes").val(b.notes);$("#profile").val(b.profile);$("#ingredients").val(b.ingredients);$("#examples").val(b.examples);$("#popupWindow").jqxWindow("open")}}]});$("#popupWindow").jqxWindow({width:1050,position:{x:110,y:30},resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#Cancel"),modalOpacity:0.4});$("#popupWindow").on("open",function(){$("#name").jqxInput("selectAll")});$("#Delete").jqxButton({template:"danger",width:"90px",theme:theme});$("#Delete").click(function(){if(c>=0){$("#eventWindow").jqxWindow("open");$("#delOk").click(function(){var f=$("#jqxgrid").jqxGrid("getrowid",c);$("#jqxgrid").jqxGrid("deleterow",f)})}$("#popupWindow").jqxWindow("hide")});$("#Cancel").jqxButton({template:"primary",width:"90px",theme:theme});$("#Save").jqxButton({template:"success",width:"90px",theme:theme});$("#Save").click(function(){var f=-1;if(c>=0){f=$("#jqxgrid").jqxGrid("getrowid",c)}var g={record:f,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()};if(c>=0){$("#jqxgrid").jqxGrid("updaterow",f,g)}else{$("#jqxgrid").jqxGrid("addrow",null,g)}$("#popupWindow").jqxWindow("hide")});createDelElements()}); \ No newline at end of file +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({template:"danger",width:"65px",theme:theme});$("#delCancel").jqxButton({template:"success",width:"65px",theme:theme});$("#delCancel").focus()}});$("#eventWindow").jqxWindow("hide")}$(document).ready(function(){var b={},a="includes/db_profile_styles.php",d={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:"int"},{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:a,deleterow:function(f,h){var g="delete=true&"+$.param({record:f});$.ajax({dataType:"json",url:a,cache:false,data:g,type:"POST",success:function(j,i,k){h(true);location.reload(true)},error:function(i,k,j){h(false)}})},addrow:function(g,j,f,i){var h="insert=true&"+$.param(j);$.ajax({dataType:"json",url:a,cache:false,data:h,type:"POST",success:function(l,k,m){i(true);location.reload(true)},error:function(k,m,l){i(false)}})},updaterow:function(f,i,h){var g="update=true&"+$.param(i);$.ajax({dataType:"json",url:a,cache:false,data:g,type:"POST",success:function(k,j,l){h(true);location.reload(true)},error:function(j,l,k){h(false)}})}},e=new $.jqx.dataAdapter(d),c=-1;$("#name").jqxInput({theme:theme,width:320,height:23});$("#category").jqxInput({theme:theme,width:320,height:23});$("#category_number").jqxNumberInput(PosInt);$("#style_letter").jqxInput({theme:theme,width:250,height:23});$("#style_guide").jqxInput({theme:theme,width:320,height:23});$("#type").jqxDropDownList({theme:theme,source:StyleTypeAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#og_min").jqxNumberInput(SGopts);$("#og_max").jqxNumberInput(SGopts);$("#fg_min").jqxNumberInput(SGopts);$("#fg_max").jqxNumberInput(SGopts);$("#ibu_min").jqxNumberInput(PosInt);$("#ibu_min").jqxNumberInput({max:200});$("#ibu_max").jqxNumberInput(PosInt);$("#ibu_max").jqxNumberInput({max:200});$("#color_min").jqxNumberInput(PosInt);$("#color_min").jqxNumberInput({max:200});$("#color_max").jqxNumberInput(PosInt);$("#color_max").jqxNumberInput({max:200});$("#carb_min").jqxNumberInput(Spin1dec);$("#carb_min").jqxNumberInput({max:5});$("#carb_max").jqxNumberInput(Spin1dec);$("#carb_max").jqxNumberInput({max:5});$("#abv_min").jqxNumberInput(Spin1dec);$("#abv_min").jqxNumberInput({max:20});$("#abv_max").jqxNumberInput(Spin1dec);$("#abv_max").jqxNumberInput({max:20});$("#notes").jqxInput({theme:theme,width:800,height:100});$("#profile").jqxInput({theme:theme,width:800,height:48});$("#ingredients").jqxInput({theme:theme,width:800,height:23});$("#examples").jqxInput({theme:theme,width:800,height:48});$("#jqxgrid").jqxGrid({width:1280,height:630,source:e,theme:theme,showstatusbar:true,renderstatusbar:function(h){var f,g,i;f=$("
      ");g=$("
      Nieuw
      ");i=$("
      Import
      ");f.append(g);f.append(i);h.append(f);g.jqxButton({theme:theme,width:90,height:20});i.jqxButton({theme:theme,width:90,height:20});g.click(function(j){c=-1;$("#name").val("Nieuwe stijl");$("#category").val("");$("#category_number").val("");$("#style_letter").val("");$("#style_guide").val("BKG 2015");$("#type").val(0);$("#og_min").val(1.03);$("#og_max").val(1.05);$("#fg_min").val(1.005);$("#fg_max").val(1.01);$("#ibu_min").val(20);$("#ibu_max").val(30);$("#color_min").val(52);$("#color_max").val(79);$("#carb_min").val(2);$("#carb_max").val(2.5);$("#abv_min").val(4);$("#abv_max").val(5);$("#notes").val("");$("#profile").val("");$("#ingredients").val("");$("#examples").val("");$("#popupWindow").jqxWindow("open")});i.click(function(j){window.location.href="import_ingredients.php?select=styles"})},filterable:true,filtermode:"excel",columns:[{text:"Gids",datafield:"style_guide",width:100},{text:"Groep",datafield:"style_letter",width:30},{text:"Style Name",menu:false,datafield:"name"},{text:"OG",menu:false,datafield:"og_min",width:60,align:"right",cellsalign:"right",cellsformat:"f3"},{text:"OG",menu:false,datafield:"og_max",width:60,align:"right",cellsalign:"right",cellsformat:"f3"},{text:"FG",menu:false,datafield:"fg_min",width:60,align:"right",cellsalign:"right",cellsformat:"f3"},{text:"FG",menu:false,datafield:"fg_max",width:60,align:"right",cellsalign:"right",cellsformat:"f3"},{text:"IBU",menu:false,datafield:"ibu_min",width:50,align:"right",cellsalign:"right",cellsformat:"f0"},{text:"IBU",menu:false,datafield:"ibu_max",width:50,align:"right",cellsalign:"right",cellsformat:"f0"},{text:"EBC",menu:false,datafield:"color_min",width:50,align:"right",cellsalign:"right",cellsformat:"f0"},{text:"EBC",menu:false,datafield:"color_max",width:50,align:"right",cellsalign:"right",cellsformat:"f0"},{text:"Co2",menu:false,datafield:"carb_min",width:50,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Co2",menu:false,datafield:"carb_max",width:50,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"ABV",menu:false,datafield:"abv_min",width:50,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"ABV",menu:false,datafield:"abv_max",width:50,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"",menu:false,datafield:"Edit",width:100,align:"center",columntype:"button",cellsrenderer:function(){return"Wijzig"},buttonclick:function(f){c=f;b=$("#jqxgrid").jqxGrid("getrowdata",c);$("#name").val(b.name);$("#category").val(b.category);$("#category_number").val(b.category_number);$("#style_letter").val(b.style_letter);$("#style_guide").val(b.style_guide);$("#type").val(b.type);$("#og_min").val(b.og_min);$("#og_max").val(b.og_max);$("#fg_min").val(b.fg_min);$("#fg_max").val(b.fg_max);$("#ibu_min").val(b.ibu_min);$("#ibu_max").val(b.ibu_max);$("#color_min").val(b.color_min);$("#color_max").val(b.color_max);$("#carb_min").val(b.carb_min);$("#carb_max").val(b.carb_max);$("#abv_min").val(b.abv_min);$("#abv_max").val(b.abv_max);$("#notes").val(b.notes);$("#profile").val(b.profile);$("#ingredients").val(b.ingredients);$("#examples").val(b.examples);$("#popupWindow").jqxWindow("open")}}]});$("#popupWindow").jqxWindow({width:1050,position:{x:110,y:30},resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#Cancel"),modalOpacity:0.4});$("#popupWindow").on("open",function(){$("#name").jqxInput("selectAll")});$("#Delete").jqxButton({template:"danger",width:"90px",theme:theme});$("#Delete").click(function(){if(c>=0){$("#eventWindow").jqxWindow("open");$("#delOk").click(function(){var f=$("#jqxgrid").jqxGrid("getrowid",c);$("#jqxgrid").jqxGrid("deleterow",f)})}$("#popupWindow").jqxWindow("hide")});$("#Cancel").jqxButton({template:"primary",width:"90px",theme:theme});$("#Save").jqxButton({template:"success",width:"90px",theme:theme});$("#Save").click(function(){var g,f=-1;if(c>=0){f=$("#jqxgrid").jqxGrid("getrowid",c)}g={record:f,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()};if(c>=0){$("#jqxgrid").jqxGrid("updaterow",f,g)}else{$("#jqxgrid").jqxGrid("addrow",null,g)}$("#popupWindow").jqxWindow("hide")});createDelElements()}); \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/profile_styles.js --- a/www/js/profile_styles.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/profile_styles.js Fri Oct 18 13:12:46 2019 +0200 @@ -128,7 +128,10 @@ } }); } - }; + }, + dataAdapter = new $.jqx.dataAdapter(source), + editrow = -1; + // initialize the input fields. $("#name").jqxInput({ theme: theme, width: 320, height: 23 }); $("#category").jqxInput({ theme: theme, width: 320, height: 23 }); @@ -169,8 +172,6 @@ $("#ingredients").jqxInput({ theme: theme, width: 800, height: 23 }); $("#examples").jqxInput({ theme: theme, width: 800, height: 48 }); - var dataAdapter = new $.jqx.dataAdapter(source), - editrow = -1; // initialize jqxGrid $("#jqxgrid").jqxGrid({ width: 1280, @@ -302,11 +303,11 @@ $("#Save").jqxButton({ template: "success", width: '90px', theme: theme }); // update the edited row when the user clicks the 'Save' button. $("#Save").click(function () { - var rowID = -1; + var row, rowID = -1; if (editrow >= 0) { rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); } - var row = { + row = { record: rowID, name: $("#name").val(), category: $("#category").val(), diff -r 9e43b216ccd3 -r d25a1b160dba www/js/profile_water-min.js --- a/www/js/profile_water-min.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/profile_water-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -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({template:"danger",width:"65px",theme:theme});$("#delCancel").jqxButton({template:"success",width:"65px",theme:theme});$("#delCancel").focus()}});$("#eventWindow").jqxWindow("hide")}$(document).ready(function(){$("#name").jqxTooltip({content:"De unieke naam van dit water profiel."});$("#notes").jqxTooltip({content:"Extra opmerkingen over dit water."});$("#calcium").jqxTooltip({content:"Calcium (Ca)."});$("#bicarbonate").jqxTooltip({content:"Bicarbonaat (HCO3). Berekend meteen de Totale alkaliteit."});$("#sulfate").jqxTooltip({content:"Calcium Sulfaat (CaSO4)."});$("#chloride").jqxTooltip({content:"Chloride (Cl)."});$("#sodium").jqxTooltip({content:"Natrium, oftewel keukenzout (Na). In berekeningen ook vaak als Sodium."});$("#magnesium").jqxTooltip({content:"Magnesium (Mg)."});$("#ph").jqxTooltip({content:"De zuurgraad (pH)."});$("#total_alkalinity").jqxTooltip({content:"Totale alkaliniteit. Berekend meteen de Bicarbonaat."});var b={},a="includes/db_profile_water.php",d={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:a,deleterow:function(f,h){var g="delete=true&"+$.param({record:f});$.ajax({dataType:"json",url:a,cache:false,data:g,type:"POST",success:function(j,i,k){h(true);location.reload(true)},error:function(i,k,j){h(false)}})},addrow:function(g,j,f,i){var h="insert=true&"+$.param(j);$.ajax({dataType:"json",url:a,cache:false,data:h,type:"POST",success:function(l,k,m){i(true);location.reload(true)},error:function(k,m,l){i(false)}})},updaterow:function(f,i,h){var g="update=true&"+$.param(i);$.ajax({dataType:"json",url:a,cache:false,data:g,type:"POST",success:function(k,j,l){h(true);location.reload(true)},error:function(j,l,k){h(false)}})}};$("#name").jqxInput({theme:theme,width:640,height:23});$("#notes").jqxInput({theme:theme,width:800,height:100});$("#calcium").jqxNumberInput(Spin1dec);$("#bicarbonate").jqxNumberInput(Spin1dec);$("#sulfate").jqxNumberInput(Spin1dec);$("#chloride").jqxNumberInput(Spin1dec);$("#sodium").jqxNumberInput(Spin1dec);$("#magnesium").jqxNumberInput(Spin1dec);$("#ph").jqxNumberInput(Spin2pH);$("#total_alkalinity").jqxNumberInput(Spin1dec);var e=new $.jqx.dataAdapter(d),c=-1;$("#jqxgrid").jqxGrid({width:1280,height:630,source:e,theme:theme,showstatusbar:true,renderstatusbar:function(h){var f=$("
      ");var g=$("
      Nieuw
      ");f.append(g);h.append(f);g.jqxButton({theme:theme,width:90,height:20});g.click(function(i){c=-1;$("#popupWindow").jqxWindow({position:{x:110,y:30}});$("#name").val("");$("#calcium").val(0);$("#bicarbonate").val(0);$("#sulfate").val(0);$("#chloride").val(0);$("#sodium").val(0);$("#magnesium").val(0);$("#ph").val(7);$("#notes").val("");$("#total_alkalinity").val(0);$("#popupWindow").jqxWindow("open")})},filterable:false,filtermode:"excel",columns:[{text:"Water Profiel",datafield:"name",width:225},{text:"Opmerkingen",datafield:"notes"},{text:"Ca",datafield:"calcium",width:60,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Mg",datafield:"magnesium",width:60,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Na",datafield:"sodium",width:60,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"CaCO3",datafield:"total_alkalinity",width:60,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Cl",datafield:"chloride",width:60,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"SO4",datafield:"sulfate",width:60,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"pH",datafield:"ph",width:60,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"",datafield:"Edit",width:100,columntype:"button",cellsrenderer:function(){return"Wijzig"},buttonclick:function(f){c=f;$("#popupWindow").jqxWindow({position:{x:110,y:30}});b=$("#jqxgrid").jqxGrid("getrowdata",c);$("#name").val(b.name);$("#calcium").val(b.calcium);$("#bicarbonate").val(b.bicarbonate);$("#sulfate").val(b.sulfate);$("#chloride").val(b.chloride);$("#sodium").val(b.sodium);$("#magnesium").val(b.magnesium);$("#ph").val(b.ph);$("#notes").val(b.notes);$("#total_alkalinity").val(b.total_alkalinity);$("#popupWindow").jqxWindow("open")}}]});$("#total_alkalinity").on("change",function(f){b.bicarbonate=parseFloat(f.args.value)*1.22;$("#bicarbonate").val(b.bicarbonate)});$("#bicarbonate").on("change",function(f){b.total_alkalinity=parseFloat(f.args.value)*50/61;$("#total_alkalinity").val(b.total_alkalinity)});$("#popupWindow").jqxWindow({width:1050,height:550,resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#Cancel"),modalOpacity:0.4});$("#popupWindow").on("open",function(){$("#name").jqxInput("selectAll")});$("#Delete").jqxButton({template:"danger",width:"90px",theme:theme});$("#Delete").click(function(){if(c>=0){$("#eventWindow").jqxWindow("open");$("#delOk").click(function(){var f=$("#jqxgrid").jqxGrid("getrowid",c);$("#jqxgrid").jqxGrid("deleterow",f)})}$("#popupWindow").jqxWindow("hide")});$("#Cancel").jqxButton({template:"primary",width:"90px",theme:theme});$("#Save").jqxButton({template:"success",width:"90px",theme:theme});$("#Save").click(function(){var f=-1;if(c>=0){f=$("#jqxgrid").jqxGrid("getrowid",c)}var g={record:f,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"))};if(c>=0){$("#jqxgrid").jqxGrid("updaterow",f,g)}else{$("#jqxgrid").jqxGrid("addrow",null,g)}$("#popupWindow").jqxWindow("hide")});createDelElements()}); \ No newline at end of file +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({template:"danger",width:"65px",theme:theme});$("#delCancel").jqxButton({template:"success",width:"65px",theme:theme});$("#delCancel").focus()}});$("#eventWindow").jqxWindow("hide")}$(document).ready(function(){$("#name").jqxTooltip({content:"De unieke naam van dit water profiel."});$("#notes").jqxTooltip({content:"Extra opmerkingen over dit water."});$("#calcium").jqxTooltip({content:"Calcium (Ca)."});$("#bicarbonate").jqxTooltip({content:"Bicarbonaat (HCO3). Berekend meteen de Totale alkaliteit."});$("#sulfate").jqxTooltip({content:"Calcium Sulfaat (CaSO4)."});$("#chloride").jqxTooltip({content:"Chloride (Cl)."});$("#sodium").jqxTooltip({content:"Natrium, oftewel keukenzout (Na). In berekeningen ook vaak als Sodium."});$("#magnesium").jqxTooltip({content:"Magnesium (Mg)."});$("#ph").jqxTooltip({content:"De zuurgraad (pH)."});$("#total_alkalinity").jqxTooltip({content:"Totale alkaliniteit. Berekend meteen de Bicarbonaat."});var b={},a="includes/db_profile_water.php",d={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:a,deleterow:function(f,h){var g="delete=true&"+$.param({record:f});$.ajax({dataType:"json",url:a,cache:false,data:g,type:"POST",success:function(j,i,k){h(true);location.reload(true)},error:function(i,k,j){h(false)}})},addrow:function(g,j,f,i){var h="insert=true&"+$.param(j);$.ajax({dataType:"json",url:a,cache:false,data:h,type:"POST",success:function(l,k,m){i(true);location.reload(true)},error:function(k,m,l){i(false)}})},updaterow:function(f,i,h){var g="update=true&"+$.param(i);$.ajax({dataType:"json",url:a,cache:false,data:g,type:"POST",success:function(k,j,l){h(true);location.reload(true)},error:function(j,l,k){h(false)}})}},e=new $.jqx.dataAdapter(d),c=-1;$("#name").jqxInput({theme:theme,width:640,height:23});$("#notes").jqxInput({theme:theme,width:800,height:100});$("#calcium").jqxNumberInput(Spin1dec);$("#bicarbonate").jqxNumberInput(Spin1dec);$("#sulfate").jqxNumberInput(Spin1dec);$("#chloride").jqxNumberInput(Spin1dec);$("#sodium").jqxNumberInput(Spin1dec);$("#magnesium").jqxNumberInput(Spin1dec);$("#ph").jqxNumberInput(Spin2pH);$("#total_alkalinity").jqxNumberInput(Spin1dec);$("#jqxgrid").jqxGrid({width:1280,height:630,source:e,theme:theme,showstatusbar:true,renderstatusbar:function(h){var f=$("
      "),g=$("
      Nieuw
      ");f.append(g);h.append(f);g.jqxButton({theme:theme,width:90,height:20});g.click(function(i){c=-1;$("#popupWindow").jqxWindow({position:{x:110,y:30}});$("#name").val("");$("#calcium").val(0);$("#bicarbonate").val(0);$("#sulfate").val(0);$("#chloride").val(0);$("#sodium").val(0);$("#magnesium").val(0);$("#ph").val(7);$("#notes").val("");$("#total_alkalinity").val(0);$("#popupWindow").jqxWindow("open")})},filterable:false,filtermode:"excel",columns:[{text:"Water Profiel",datafield:"name",width:225},{text:"Opmerkingen",datafield:"notes"},{text:"Ca",datafield:"calcium",width:60,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Mg",datafield:"magnesium",width:60,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Na",datafield:"sodium",width:60,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"CaCO3",datafield:"total_alkalinity",width:60,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"Cl",datafield:"chloride",width:60,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"SO4",datafield:"sulfate",width:60,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"pH",datafield:"ph",width:60,align:"right",cellsalign:"right",cellsformat:"f1"},{text:"",datafield:"Edit",width:100,columntype:"button",cellsrenderer:function(){return"Wijzig"},buttonclick:function(f){c=f;$("#popupWindow").jqxWindow({position:{x:110,y:30}});b=$("#jqxgrid").jqxGrid("getrowdata",c);$("#name").val(b.name);$("#calcium").val(b.calcium);$("#bicarbonate").val(b.bicarbonate);$("#sulfate").val(b.sulfate);$("#chloride").val(b.chloride);$("#sodium").val(b.sodium);$("#magnesium").val(b.magnesium);$("#ph").val(b.ph);$("#notes").val(b.notes);$("#total_alkalinity").val(b.total_alkalinity);$("#popupWindow").jqxWindow("open")}}]});$("#total_alkalinity").on("change",function(f){b.bicarbonate=parseFloat(f.args.value)*1.22;$("#bicarbonate").val(b.bicarbonate)});$("#bicarbonate").on("change",function(f){b.total_alkalinity=parseFloat(f.args.value)*50/61;$("#total_alkalinity").val(b.total_alkalinity)});$("#popupWindow").jqxWindow({width:1050,height:550,resizable:false,theme:theme,isModal:true,autoOpen:false,cancelButton:$("#Cancel"),modalOpacity:0.4});$("#popupWindow").on("open",function(){$("#name").jqxInput("selectAll")});$("#Delete").jqxButton({template:"danger",width:"90px",theme:theme});$("#Delete").click(function(){if(c>=0){$("#eventWindow").jqxWindow("open");$("#delOk").click(function(){var f=$("#jqxgrid").jqxGrid("getrowid",c);$("#jqxgrid").jqxGrid("deleterow",f)})}$("#popupWindow").jqxWindow("hide")});$("#Cancel").jqxButton({template:"primary",width:"90px",theme:theme});$("#Save").jqxButton({template:"success",width:"90px",theme:theme});$("#Save").click(function(){var g,f=-1;if(c>=0){f=$("#jqxgrid").jqxGrid("getrowid",c)}g={record:f,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"))};if(c>=0){$("#jqxgrid").jqxGrid("updaterow",f,g)}else{$("#jqxgrid").jqxGrid("addrow",null,g)}$("#popupWindow").jqxWindow("hide")});createDelElements()}); \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/profile_water.js --- a/www/js/profile_water.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/profile_water.js Fri Oct 18 13:12:46 2019 +0200 @@ -128,7 +128,10 @@ } }); } - }; + }, + dataAdapter = new $.jqx.dataAdapter(source), + editrow = -1; + // initialize the input fields. $("#name").jqxInput({ theme: theme, width: 640, height: 23 }); $("#notes").jqxInput({ theme: theme, width: 800, height: 100 }); @@ -141,8 +144,6 @@ $("#ph").jqxNumberInput( Spin2pH ); $("#total_alkalinity").jqxNumberInput( Spin1dec ); - var dataAdapter = new $.jqx.dataAdapter(source), - editrow = -1; // initialize jqxGrid $("#jqxgrid").jqxGrid({ width: 1280, @@ -151,8 +152,8 @@ theme: theme, showstatusbar: true, renderstatusbar: function (statusbar) { - var container = $("
      "); - var addButton = $("
      Nieuw
      "); + var container = $("
      "), + addButton = $("
      Nieuw
      "); container.append(addButton); statusbar.append(container); addButton.jqxButton({ theme: theme, width: 90, height: 20 }); @@ -249,11 +250,11 @@ $("#Save").jqxButton({ template: "success", width: '90px', theme: theme }); // update the edited row when the user clicks the 'Save' button. $("#Save").click(function () { - var rowID = -1; + var row, rowID = -1; if (editrow >= 0) { rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); } - var row = { + row = { record: rowID, name: $("#name").val(), calcium: parseFloat($("#calcium").jqxNumberInput('decimal')), diff -r 9e43b216ccd3 -r d25a1b160dba www/js/rec_export-min.js --- a/www/js/rec_export-min.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/rec_export-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -$(document).ready(function(){var a=0;$("#name").html(my_name);$("#jqxRadioButton1").jqxRadioButton({theme:theme,width:250,height:23});$("#jqxRadioButton2").jqxRadioButton({theme:theme,width:250,height:23});$("#jqxRadioButton3").jqxRadioButton({theme:theme,width:250,height:23});$("#jqxRadioButton4").jqxRadioButton({theme:theme,width:250,height:23});$("#jqxRadioButton5").jqxRadioButton({theme:theme,width:250,height:23});$("#jqxRadioButton1").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=1});$("#jqxRadioButton2").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=2});$("#jqxRadioButton3").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=3});$("#jqxRadioButton4").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=4});$("#jqxRadioButton5").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=5});$("#Start").jqxButton({template:"success",width:"100px",theme:theme,disabled:true});$("#Start").click(function(){if(a==1){var b="rec_beerxml.php?record="+my_record;window.open(b)}else{if(a==2){var b="rec_duplicate.php?record="+my_record;window.open(b)}else{if(a==3){var b="rec_toproduct.php?record="+my_record;window.open(b)}else{if(a==4){var b="rec_print.php?record="+my_record;window.open(b)}else{if(a==5){var b="rec_forum.php?record="+my_record;window.open(b)}}}}}window.location.href="rec_edit.php?record="+my_record+"&return="+my_return})}); \ No newline at end of file +$(document).ready(function(){var a=0;$("#name").html(my_name);$("#jqxRadioButton1").jqxRadioButton({theme:theme,width:250,height:23});$("#jqxRadioButton2").jqxRadioButton({theme:theme,width:250,height:23});$("#jqxRadioButton3").jqxRadioButton({theme:theme,width:250,height:23});$("#jqxRadioButton4").jqxRadioButton({theme:theme,width:250,height:23});$("#jqxRadioButton5").jqxRadioButton({theme:theme,width:250,height:23});$("#jqxRadioButton1").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=1});$("#jqxRadioButton2").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=2});$("#jqxRadioButton3").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=3});$("#jqxRadioButton4").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=4});$("#jqxRadioButton5").on("checked",function(b){$("#Start").jqxButton({disabled:false});a=5});$("#Start").jqxButton({template:"success",width:"100px",theme:theme,disabled:true});$("#Start").click(function(){if(a==1){window.open("rec_beerxml.php?record="+my_record)}else{if(a==2){window.open("rec_duplicate.php?record="+my_record)}else{if(a==3){window.open("rec_toproduct.php?record="+my_record)}else{if(a==4){window.open("rec_print.php?record="+my_record)}else{if(a==5){window.open("rec_forum.php?record="+my_record)}}}}}window.location.href="rec_edit.php?record="+my_record+"&return="+my_return})}); \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/rec_export.js --- a/www/js/rec_export.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/rec_export.js Fri Oct 18 13:12:46 2019 +0200 @@ -55,20 +55,15 @@ $('#Start').jqxButton({ template: "success", width: '100px', theme: theme, disabled: true }); $('#Start').click(function () { if (choice == 1) { - var url="rec_beerxml.php?record=" + my_record; - window.open(url); + window.open('rec_beerxml.php?record=' + my_record); } else if (choice == 2) { - var url="rec_duplicate.php?record=" + my_record; - window.open(url); + window.open('rec_duplicate.php?record=' + my_record); } else if (choice == 3) { - var url="rec_toproduct.php?record=" + my_record; - window.open(url); + window.open('rec_toproduct.php?record=' + my_record); } else if (choice == 4) { - var url="rec_print.php?record=" + my_record; - window.open(url); + window.open('rec_print.php?record=' + my_record); } else if (choice == 5) { - var url="rec_forum.php?record=" + my_record; - window.open(url); + window.open('rec_forum.php?record=' + my_record); } // Return to the original recipe window.location.href = "rec_edit.php?record=" + my_record + "&return=" + my_return; diff -r 9e43b216ccd3 -r d25a1b160dba www/js/rec_import-min.js --- a/www/js/rec_import-min.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/rec_import-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -$(document).ready(function(){$("#jqxFileUpload").jqxFileUpload({width:300,browseTemplate:"success",cancelTemplate:"inverse",uploadTemplate:"primary",theme:theme,multipleFilesUpload:false,accept:"application/xml",uploadUrl:"upl_recipe.php",fileInputName:"fileToUpload"});$("#eventsPanel").jqxPanel({width:800,height:200,theme:theme});$("#jqxFileUpload").on("select",function(c){var b=c.args;var d=b.file;var a=b.size;$("#eventsPanel").jqxPanel("clearcontent");$("#eventsPanel").jqxPanel("append",""+c.type+": "+d+" size: "+a+"
      ")});$("#jqxFileUpload").on("uploadEnd",function(c){var b=c.args;var d=b.file;var a=b.response;$("#eventsPanel").jqxPanel("append",""+c.type+": ontvangen "+d+"
      "+a+"
      ")})}); \ No newline at end of file +$(document).ready(function(){$("#jqxFileUpload").jqxFileUpload({width:300,browseTemplate:"success",cancelTemplate:"inverse",uploadTemplate:"primary",theme:theme,multipleFilesUpload:false,accept:"application/xml",uploadUrl:"upl_recipe.php",fileInputName:"fileToUpload"});$("#eventsPanel").jqxPanel({width:800,height:200,theme:theme});$("#jqxFileUpload").on("select",function(c){var b=c.args,d=b.file,a=b.size;$("#eventsPanel").jqxPanel("clearcontent");$("#eventsPanel").jqxPanel("append",""+c.type+": "+d+" size: "+a+"
      ")});$("#jqxFileUpload").on("uploadEnd",function(c){var b=c.args,d=b.file,a=b.response;$("#eventsPanel").jqxPanel("append",""+c.type+": ontvangen "+d+"
      "+a+"
      ")})}); \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/rec_import.js --- a/www/js/rec_import.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/rec_import.js Fri Oct 18 13:12:46 2019 +0200 @@ -40,16 +40,16 @@ theme: theme }); $('#jqxFileUpload').on('select', function (event) { - var args = event.args; - var fileName = args.file; - var fileSize = args.size; + var args = event.args, + fileName = args.file, + fileSize = args.size; $('#eventsPanel').jqxPanel('clearcontent'); $('#eventsPanel').jqxPanel('append', '' + event.type + ': ' + fileName + ' size: ' + fileSize + '
      '); }); $('#jqxFileUpload').on('uploadEnd', function (event) { - var args = event.args; - var fileName = args.file; - var serverResponce = args.response; + var args = event.args, + fileName = args.file, + serverResponce = args.response; $('#eventsPanel').jqxPanel('append', '' + event.type + ': ontvangen ' + fileName + '
      ' + serverResponce + '
      '); }); diff -r 9e43b216ccd3 -r d25a1b160dba www/js/rec_new-min.js --- a/www/js/rec_new-min.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/rec_new-min.js Fri Oct 18 13:12:46 2019 +0200 @@ -1,1 +1,1 @@ -$(document).ready(function(){var a=2,b=0,c=(function(){var d=function(){$("#name").on("change",function(e){c.validate(true)});$("#type").on("change",function(e){c.validate(true)});$("#boil_time").on("change",function(e){c.validate(true)});$("#est_og").on("change",function(e){c.validate(true)});$("#efficiency").on("change",function(e){c.validate(true)});$("#styleSelect").on("change",function(e){c.validate(true)});$("#nextButtonCompleted").click(function(){console.log("insert start");var f={record:-1,locked:0,name:$("#name").val(),notes:$("#notes").val(),st_name:$("#st_name").val(),st_letter:$("#st_style_letter").val(),st_guide:$("#st_style_guide").val(),st_category:$("#st_category").val(),st_category_number:parseFloat($("#st_category_number").jqxNumberInput("decimal")),st_type:b,st_og_min:parseFloat($("#st_og_min").jqxNumberInput("decimal")),st_og_max:parseFloat($("#st_og_max").jqxNumberInput("decimal")),st_fg_min:parseFloat($("#st_fg_min").jqxNumberInput("decimal")),st_fg_max:parseFloat($("#st_fg_max").jqxNumberInput("decimal")),st_ibu_min:parseFloat($("#st_ibu_min").jqxNumberInput("decimal")),st_ibu_max:parseFloat($("#st_ibu_max").jqxNumberInput("decimal")),st_color_min:parseFloat($("#st_color_min").jqxNumberInput("decimal")),st_color_max:parseFloat($("#st_color_max").jqxNumberInput("decimal")),st_carb_min:parseFloat($("#st_carb_min").jqxNumberInput("decimal")),st_carb_max:parseFloat($("#st_carb_max").jqxNumberInput("decimal")),st_abv_min:parseFloat($("#st_abv_min").jqxNumberInput("decimal")),st_abv_max:parseFloat($("#st_abv_max").jqxNumberInput("decimal")),type:a,batch_size:20,boil_size:22,boil_time:parseFloat($("#boil_time").jqxNumberInput("decimal")),efficiency:parseFloat($("#efficiency").jqxNumberInput("decimal")),est_og:parseFloat($("#est_og").jqxNumberInput("decimal")),est_fg:1,est_color:0,est_abv:0,est_carb:0,color_method:0,est_ibu:0,ibu_method:0,mash_name:"",mash_ph:5.4,sparge_temp:85,sparge_volume:12,sparge_ph:5.8,sparge_source:0,sparge_acid_type:0,sparge_acid_perc:80,sparge_acid_amount:0,calc_acid:true,w1_name:"Tap water",w1_amount:15,w1_calcium:0,w1_sulfate:0,w1_chloride:0,w1_sodium:0,w1_magnesium:0,w1_total_alkalinity:0,w1_ph:7,w1_cost:0,wa_acid_name:0,wa_acid_perc:80,wa_base_name:0},e="insert=true&return="+my_return+"&"+$.param(f);$.ajax({dataType:"json",url:"includes/db_recipes.php",cache:false,data:e,type:"POST",success:function(h,g,i){window.location.href=my_return},error:function(g,i,h){}})});$(".nextButton").click(function(){c.validate(true);$("#jqxTabs").jqxTabs("next")});$(".backButton").click(function(){c.validate(true);$("#jqxTabs").jqxTabs("previous")})};return{init:function(){$("#jqxTabs").jqxTabs({theme:theme,height:630,width:1280,autoHeight:false,position:"top",keyboardNavigation:false});$("#nextButtonBase").jqxButton({theme:theme,width:150});$("#nextButtonStyle").jqxButton({theme:theme,width:150});$("#backButtonStyle").jqxButton({theme:theme,width:150});$("#nextButtonCompleted").jqxButton({theme:theme,width:150});$("#backButtonCompleted").jqxButton({theme:theme,width:150});d();this.validate();this.showHint("Vul de nodige gegevens in.")},validate:function(e){if(!this.firstTab(e)){$("#jqxTabs").jqxTabs("disableAt",1);$("#jqxTabs").jqxTabs("disableAt",2);return}else{$("#jqxTabs").jqxTabs("enableAt",1)}if(!this.secondTab(e)){$("#jqxTabs").jqxTabs("disableAt",2);return}else{$("#jqxTabs").jqxTabs("enableAt",2)}},showHint:function(f,e){if(typeof e==="undefined"){e=".hint"}if(f===""){f="Ok, je mag doorgaan."}$(e).html(""+f+"")},firstTab:function(h){var g=$("#name").val(),j=$("#type").val(),e=parseFloat($("#boil_time").jqxNumberInput("decimal")),f=parseFloat($("#est_og").jqxNumberInput("decimal")),i=parseFloat($("#efficiency").jqxNumberInput("decimal")),k="";if(g.length<3){k+="Je moet een recept naam invullen.
      "}if(j.length<1){k+="Je moet een brouw type kiezen.
      "}if((e<4)||(e>360)){k+="De kooktijd moet tussen 4 en 360 minuten zijn.
      "}if((f<1.01)||(f>1.2)){k+="Het OG moet tussen 1.010 en 1.200 zijn.
      "}if((i<35)||(i>95)){k+="Het brouwzaal rendement moet tussen 35 en 95 zijn.
      "}if(k!==""){if(h){this.showHint(k,"#hintBase")}return false}this.showHint("Ok, je mag doorgaan.","#hintBase");return true},secondTab:function(f){var e=$("#styleSelect").val(),g="";if(e.length<3){g+="Je moet een bierstijl kiezen.
      "}if(g!==""){if(f){this.showHint(g,"#hintStyle")}return false}this.showHint("Ok, je mag doorgaan.","#hintStyle");return true}}}());$("#name").jqxTooltip({content:"De naam voor dit recept."});$("#name").jqxInput({theme:theme,width:640,height:23});$("#notes").jqxTooltip({content:"De uitgebreide opmerkingen over dit recept."});$("#notes").jqxInput({theme:theme,width:960,height:200});$("#type").jqxDropDownList({theme:theme,source:RecipeTypeAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#type").jqxDropDownList("selectItem",2);$("#type").on("select",function(d){if(d.args){a=d.args.index}});$("#boil_time").jqxNumberInput(PosInt);$("#boil_time").jqxNumberInput({min:4,max:360});$("#efficiency").jqxNumberInput(Perc0);$("#est_og").jqxNumberInput(SGopts);$("#boil_time").val(90);$("#efficiency").val(75);$("#est_og").val(1.052);$("#st_name").jqxInput({theme:theme,width:250,height:23});$("#st_category").jqxInput({theme:theme,width:250,height:23});$("#st_category_number").jqxInput({theme:theme,width:70,height:23});$("#st_style_letter").jqxInput({theme:theme,width:250,height:23});$("#st_style_guide").jqxInput({theme:theme,width:250,height:23});$("#st_notes").jqxInput({theme:theme,width:800,height:100});$("#st_type").jqxInput({theme:theme,width:250,height:23});$("#st_og_min").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:3,readOnly:true});$("#st_og_max").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:3,readOnly:true});$("#st_fg_min").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:3,readOnly:true});$("#st_fg_max").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:3,readOnly:true});$("#st_ibu_min").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:0,readOnly:true});$("#st_ibu_max").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:0,readOnly:true});$("#st_color_min").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:0,readOnly:true});$("#st_color_max").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:0,readOnly:true});$("#st_carb_min").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:1,readOnly:true});$("#st_carb_max").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:1,readOnly:true});$("#st_abv_min").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:1,readOnly:true});$("#st_abv_max").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:1,readOnly:true});$("#st_profile").jqxInput({theme:theme,width:800,height:48});$("#st_ingredients").jqxInput({theme:theme,width:800,height:23});$("#st_examples").jqxInput({theme:theme,width:800,height:48});$("#styleSelect").jqxDropDownList({placeHolder:"Kies bierstijl:",theme:theme,source:styleslist,displayMember:"name",width:250,height:27,dropDownWidth:500,dropDownHeight:500,renderer:function(e,d,g){var f=styleslist.records[e];return f.style_guide+" "+f.style_letter+" "+f.name}});$("#styleSelect").on("select",function(f){if(f.args){var e,d=f.args.index;e=styleslist.records[d];$("#st_name").val(e.name);$("#st_category").val(e.category);$("#st_category_number").val(e.category_number);$("#st_style_letter").val(e.style_letter);$("#st_style_guide").val(e.style_guide);b=e.type;$("#st_type").val(StyleTypeData[e.type].nl);$("#st_og_min").val(e.og_min);$("#st_og_max").val(e.og_max);$("#st_fg_min").val(e.fg_min);$("#st_fg_max").val(e.fg_max);$("#st_ibu_min").val(e.ibu_min);$("#st_ibu_max").val(e.ibu_max);$("#st_color_min").val(e.color_min);$("#st_color_max").val(e.color_max);$("#st_carb_min").val(e.carb_min);$("#st_carb_max").val(e.carb_max);$("#st_abv_min").val(e.abv_min);$("#st_abv_max").val(e.abv_max);$("#st_notes").val(e.notes);$("#st_profile").val(e.profile);$("#st_ingredients").val(e.ingredients);$("#st_examples").val(e.examples)}});c.init()}); \ No newline at end of file +$(document).ready(function(){var a=2,b=0,c=(function(){var d=function(){$("#name").on("change",function(e){c.validate(true)});$("#type").on("change",function(e){c.validate(true)});$("#boil_time").on("change",function(e){c.validate(true)});$("#est_og").on("change",function(e){c.validate(true)});$("#efficiency").on("change",function(e){c.validate(true)});$("#styleSelect").on("change",function(e){c.validate(true)});$("#nextButtonCompleted").click(function(){console.log("insert start");var f={record:-1,locked:0,name:$("#name").val(),notes:$("#notes").val(),st_name:$("#st_name").val(),st_letter:$("#st_style_letter").val(),st_guide:$("#st_style_guide").val(),st_category:$("#st_category").val(),st_category_number:parseFloat($("#st_category_number").jqxNumberInput("decimal")),st_type:b,st_og_min:parseFloat($("#st_og_min").jqxNumberInput("decimal")),st_og_max:parseFloat($("#st_og_max").jqxNumberInput("decimal")),st_fg_min:parseFloat($("#st_fg_min").jqxNumberInput("decimal")),st_fg_max:parseFloat($("#st_fg_max").jqxNumberInput("decimal")),st_ibu_min:parseFloat($("#st_ibu_min").jqxNumberInput("decimal")),st_ibu_max:parseFloat($("#st_ibu_max").jqxNumberInput("decimal")),st_color_min:parseFloat($("#st_color_min").jqxNumberInput("decimal")),st_color_max:parseFloat($("#st_color_max").jqxNumberInput("decimal")),st_carb_min:parseFloat($("#st_carb_min").jqxNumberInput("decimal")),st_carb_max:parseFloat($("#st_carb_max").jqxNumberInput("decimal")),st_abv_min:parseFloat($("#st_abv_min").jqxNumberInput("decimal")),st_abv_max:parseFloat($("#st_abv_max").jqxNumberInput("decimal")),type:a,batch_size:20,boil_size:22,boil_time:parseFloat($("#boil_time").jqxNumberInput("decimal")),efficiency:parseFloat($("#efficiency").jqxNumberInput("decimal")),est_og:parseFloat($("#est_og").jqxNumberInput("decimal")),est_fg:1,est_color:0,est_abv:0,est_carb:0,color_method:0,est_ibu:0,ibu_method:0,mash_name:"",mash_ph:5.4,sparge_temp:85,sparge_volume:12,sparge_ph:5.8,sparge_source:0,sparge_acid_type:0,sparge_acid_perc:80,sparge_acid_amount:0,calc_acid:true,w1_name:"Tap water",w1_amount:15,w1_calcium:0,w1_sulfate:0,w1_chloride:0,w1_sodium:0,w1_magnesium:0,w1_total_alkalinity:0,w1_ph:7,w1_cost:0,wa_acid_name:0,wa_acid_perc:80,wa_base_name:0},e="insert=true&return="+my_return+"&"+$.param(f);$.ajax({dataType:"json",url:"includes/db_recipes.php",cache:false,data:e,type:"POST",success:function(h,g,i){window.location.href=my_return},error:function(g,i,h){}})});$(".nextButton").click(function(){c.validate(true);$("#jqxTabs").jqxTabs("next")});$(".backButton").click(function(){c.validate(true);$("#jqxTabs").jqxTabs("previous")})};return{init:function(){$("#jqxTabs").jqxTabs({theme:theme,height:630,width:1280,autoHeight:false,position:"top",keyboardNavigation:false});$("#nextButtonBase").jqxButton({theme:theme,width:150});$("#nextButtonStyle").jqxButton({theme:theme,width:150});$("#backButtonStyle").jqxButton({theme:theme,template:"success",width:150});$("#nextButtonCompleted").jqxButton({theme:theme,template:"success",width:150});$("#backButtonCompleted").jqxButton({theme:theme,template:"success",width:150});d();this.validate();this.showHint("Vul de nodige gegevens in.")},validate:function(e){if(!this.firstTab(e)){$("#jqxTabs").jqxTabs("disableAt",1);$("#jqxTabs").jqxTabs("disableAt",2);return}else{$("#jqxTabs").jqxTabs("enableAt",1)}if(!this.secondTab(e)){$("#jqxTabs").jqxTabs("disableAt",2);return}else{$("#jqxTabs").jqxTabs("enableAt",2)}},showHint:function(f,e){if(typeof e==="undefined"){e=".hint"}if(f===""){f="Ok, je mag doorgaan."}$(e).html(""+f+"")},firstTab:function(h){var g=$("#name").val(),j=$("#type").val(),e=parseFloat($("#boil_time").jqxNumberInput("decimal")),f=parseFloat($("#est_og").jqxNumberInput("decimal")),i=parseFloat($("#efficiency").jqxNumberInput("decimal")),k="";if(g.length<3){k+="Je moet een recept naam invullen.
      "}if(j.length<1){k+="Je moet een brouw type kiezen.
      "}if((e<4)||(e>360)){k+="De kooktijd moet tussen 4 en 360 minuten zijn.
      "}if((f<1.01)||(f>1.2)){k+="Het OG moet tussen 1.010 en 1.200 zijn.
      "}if((i<35)||(i>95)){k+="Het brouwzaal rendement moet tussen 35 en 95 zijn.
      "}if(k!==""){if(h){this.showHint(k,"#hintBase")}return false}this.showHint("Ok, je mag doorgaan.","#hintBase");$("#nextButtonBase").jqxButton({template:"success"});return true},secondTab:function(f){var e=$("#styleSelect").val(),g="";if(e.length<3){g+="Je moet een bierstijl kiezen.
      "}if(g!==""){if(f){this.showHint(g,"#hintStyle")}return false}this.showHint("Ok, je mag doorgaan.","#hintStyle");$("#nextButtonStyle").jqxButton({template:"success"});return true}}}());$("#name").jqxTooltip({content:"De naam voor dit recept."});$("#name").jqxInput({theme:theme,width:640,height:23});$("#notes").jqxTooltip({content:"De uitgebreide opmerkingen over dit recept."});$("#notes").jqxInput({theme:theme,width:960,height:200});$("#type").jqxDropDownList({theme:theme,source:RecipeTypeAdapter,valueMember:"id",displayMember:"nl",width:180,height:23,autoDropDownHeight:true});$("#type").jqxDropDownList("selectItem",2);$("#type").on("select",function(d){if(d.args){a=d.args.index}});$("#boil_time").jqxNumberInput(PosInt);$("#boil_time").jqxNumberInput({min:4,max:360});$("#efficiency").jqxNumberInput(Perc0);$("#est_og").jqxNumberInput(SGopts);$("#boil_time").val(90);$("#efficiency").val(75);$("#est_og").val(1.052);$("#st_name").jqxInput({theme:theme,width:250,height:23});$("#st_category").jqxInput({theme:theme,width:250,height:23});$("#st_category_number").jqxInput({theme:theme,width:70,height:23});$("#st_style_letter").jqxInput({theme:theme,width:250,height:23});$("#st_style_guide").jqxInput({theme:theme,width:250,height:23});$("#st_notes").jqxInput({theme:theme,width:800,height:100});$("#st_type").jqxInput({theme:theme,width:250,height:23});$("#st_og_min").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:3,readOnly:true});$("#st_og_max").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:3,readOnly:true});$("#st_fg_min").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:3,readOnly:true});$("#st_fg_max").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:3,readOnly:true});$("#st_ibu_min").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:0,readOnly:true});$("#st_ibu_max").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:0,readOnly:true});$("#st_color_min").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:0,readOnly:true});$("#st_color_max").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:0,readOnly:true});$("#st_carb_min").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:1,readOnly:true});$("#st_carb_max").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:1,readOnly:true});$("#st_abv_min").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:1,readOnly:true});$("#st_abv_max").jqxNumberInput({inputMode:"simple",theme:theme,width:50,height:23,decimalDigits:1,readOnly:true});$("#st_profile").jqxInput({theme:theme,width:800,height:48});$("#st_ingredients").jqxInput({theme:theme,width:800,height:23});$("#st_examples").jqxInput({theme:theme,width:800,height:48});$("#styleSelect").jqxDropDownList({placeHolder:"Kies bierstijl:",theme:theme,source:styleslist,displayMember:"name",width:250,height:27,dropDownWidth:500,dropDownHeight:500,renderer:function(e,d,g){var f=styleslist.records[e];return f.style_guide+" "+f.style_letter+" "+f.name}});$("#styleSelect").on("select",function(f){if(f.args){var e,d=f.args.index;e=styleslist.records[d];$("#st_name").val(e.name);$("#st_category").val(e.category);$("#st_category_number").val(e.category_number);$("#st_style_letter").val(e.style_letter);$("#st_style_guide").val(e.style_guide);b=e.type;$("#st_type").val(StyleTypeData[e.type].nl);$("#st_og_min").val(e.og_min);$("#st_og_max").val(e.og_max);$("#st_fg_min").val(e.fg_min);$("#st_fg_max").val(e.fg_max);$("#st_ibu_min").val(e.ibu_min);$("#st_ibu_max").val(e.ibu_max);$("#st_color_min").val(e.color_min);$("#st_color_max").val(e.color_max);$("#st_carb_min").val(e.carb_min);$("#st_carb_max").val(e.carb_max);$("#st_abv_min").val(e.abv_min);$("#st_abv_max").val(e.abv_max);$("#st_notes").val(e.notes);$("#st_profile").val(e.profile);$("#st_ingredients").val(e.ingredients);$("#st_examples").val(e.examples)}});c.init()}); \ No newline at end of file diff -r 9e43b216ccd3 -r d25a1b160dba www/js/rec_new.js --- a/www/js/rec_new.js Sat Sep 14 10:41:35 2019 +0200 +++ b/www/js/rec_new.js Fri Oct 18 13:12:46 2019 +0200 @@ -137,9 +137,9 @@ }); $('#nextButtonBase').jqxButton({ theme: theme, width: 150 }); $('#nextButtonStyle').jqxButton({ theme: theme, width: 150}); - $('#backButtonStyle').jqxButton({ theme: theme, width: 150}); - $('#nextButtonCompleted').jqxButton({ theme: theme, width: 150}); - $('#backButtonCompleted').jqxButton({ theme: theme, width: 150}); + $('#backButtonStyle').jqxButton({ theme: theme, template: 'success', width: 150}); + $('#nextButtonCompleted').jqxButton({ theme: theme, template: 'success', width: 150}); + $('#backButtonCompleted').jqxButton({ theme: theme, template: 'success', width: 150}); _addHandlers(); this.validate(); this.showHint('Vul de nodige gegevens in.'); @@ -204,6 +204,7 @@ return false; } this.showHint('Ok, je mag doorgaan.', '#hintBase'); + $('#nextButtonBase').jqxButton({ template: 'success' }); return true; }, @@ -221,6 +222,7 @@ return false; } this.showHint('Ok, je mag doorgaan.', '#hintStyle'); + $('#nextButtonStyle').jqxButton({ template: 'success' }); return true; } } diff -r 9e43b216ccd3 -r d25a1b160dba www/log_co2pressure.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/log_co2pressure.php Fri Oct 18 13:12:46 2019 +0200 @@ -0,0 +1,19 @@ + + +
      +
      +
      +
      + + + + +
      +
      + + diff -r 9e43b216ccd3 -r d25a1b160dba www/mon_co2meter.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/mon_co2meter.php Fri Oct 18 13:12:46 2019 +0200 @@ -0,0 +1,68 @@ + + +
      + +
      +
      +
      +
      Systeem overzicht
      Uuid" + record.uuid + "
      Systeem" + record.node + "
      Online" + record.online + "
      Type" + record.group_id + "
      Eerst gezien" + record.firstseen + "
      Laatst gezien" + record.lastseen + "
      Hardware maker" + record.hardwaremake+ "
      Hardware model" + record.hardwaremodel+ "
      OS" + record.os + " versie: " + record.os_version + "
      Firmware" + record.firmware + "
      Temperatuur" + record.temperature.toFixed(1) + "°C
      + + + + + + + + + + + + + + + + + + + + + + + +
      CO2 meter overzicht
       
      Uuid
      Systeem
      Code en bier
      Werking
      + + +
      +
      +
      +
      + + +
      +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      + +
      +
      + +
      + +
      +
      + + + diff -r 9e43b216ccd3 -r d25a1b160dba www/prod_beerxml.php --- a/www/prod_beerxml.php Sat Sep 14 10:41:35 2019 +0200 +++ b/www/prod_beerxml.php Fri Oct 18 13:12:46 2019 +0200 @@ -31,7 +31,7 @@ $fermentabletype = array( 'Grain', 'Sugar', 'Extract', 'Dry extract', 'Adjunct' ); $graintype = array( 'Base', 'Roast', 'Crystal', 'Kilned', 'Sour malt', 'Special', 'No malt' ); $yeasttype = array( 'Lager', 'Ale', 'Wheat', 'Wine', 'Champagne', 'Other', 'Other', 'Other', 'Other', 'Other' ); -$yeastform = array( 'Liquid', 'Dry', 'Slant', 'Culture', 'Frozen', 'Bottle' ); +$yeastform = array( 'Liquid', 'Dry', 'Slant', 'Culture', 'Frozen', 'Bottle', 'Dry' ); $yeastuse = array( 'Primary', 'Secondary', 'Tertiary', 'Bottle' ); $misctype = array( 'Spice', 'Herb', 'Flavor', 'Fining', 'Water agent', 'Yeast nutrient', 'Other' ); $miscuse = array( 'Starter', 'Mash', 'Boil', 'Primary', 'Secondary', 'Bottling' ); diff -r 9e43b216ccd3 -r d25a1b160dba www/prod_checklist.php --- a/www/prod_checklist.php Sat Sep 14 10:41:35 2019 +0200 +++ b/www/prod_checklist.php Fri Oct 18 13:12:46 2019 +0200 @@ -323,7 +323,7 @@ if ($item['y_use'] == 0) { // primary if ($item['y_form'] == 0) { // Liquid $this->Checkline($item['y_amount'].' pak '.$item['y_product_id'].', '.$item['y_name'].' gist'); - } else if ($item['y_form'] == 1) { // Dry + } else if ($item['y_form'] == 1 || $item['y_form'] == 6) { // Dry $s = sprintf("%.1f",$item['y_amount']*1000).' gram '.$item['y_product_id'].', '.$item['y_name']; $s .= ' gist'; $dry += $item['y_amount']*10000; diff -r 9e43b216ccd3 -r d25a1b160dba www/prod_divide.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/prod_divide.php Fri Oct 18 13:12:46 2019 +0200 @@ -0,0 +1,43 @@ + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      Splits product
       
      Product naam:Huidige brouw fase:
      Product code:Splits moment:
      Beschikbaar L:
      Blijft over L:
       
      +
      + + +
      +
      +
      + + diff -r 9e43b216ccd3 -r d25a1b160dba www/prod_edit.php --- a/www/prod_edit.php Sat Sep 14 10:41:35 2019 +0200 +++ b/www/prod_edit.php Fri Oct 18 13:12:46 2019 +0200 @@ -25,7 +25,7 @@ Brouw naam: - Afgesloten: + Afgesloten:
      @@ -36,6 +36,14 @@ Brouw fase: + + Splits aantal: +
      + Splits moment: + + Splits focus: +
      + Opmerkingen: diff -r 9e43b216ccd3 -r d25a1b160dba www/prod_export.php --- a/www/prod_export.php Sat Sep 14 10:41:35 2019 +0200 +++ b/www/prod_export.php Fri Oct 18 13:12:46 2019 +0200 @@ -25,20 +25,24 @@
      +
      Splits dit product:
      +
      + + Copieer als recept: -
      +
      Print dit recept: -
      +
      Checklist van recept: -
      +
      Export voor forum: -
      +
        diff -r 9e43b216ccd3 -r d25a1b160dba www/prod_forum.php --- a/www/prod_forum.php Sat Sep 14 10:41:35 2019 +0200 +++ b/www/prod_forum.php Fri Oct 18 13:12:46 2019 +0200 @@ -1,6 +1,7 @@ w - $this->rMargin - $this->lMargin - 160; $cMargin=$this->cMargin; $this->cMargin=2; @@ -119,9 +120,9 @@ global $bottle_sugar_amount; global $keg_sugar; global $keg_sugar_amount; - $added = array( 'Maischen', 'Koken 10 min', 'Vergisten', 'Nagisten/lageren', 'Bottelen', 'Op fust' ); - $ftype = array( 'Mout', 'Suiker', 'Vloeibaar extract', 'Droog extract', 'Ongemout graan' ); - $mtype = array( 'Basismout', 'Geroosterde mout', 'Cara- of crystalmout', 'Geëeste mout', 'Zuurmout', 'Speciale mout', 'Geen mout' ); + global $added; + global $fermentabletype; + global $graintype; $vul = $this->w - $this->rMargin - $this->lMargin - 125; $this->Ln(); $this->AddCol($vul,'Mout, granen en suikers','L'); @@ -160,9 +161,9 @@ $pCara += $percent; if ($item['f_type'] == 0) - $soort = iconv('UTF-8','windows-1252',$mtype[$item['f_graintype']]); + $soort = iconv('UTF-8','windows-1252',$graintype[$item['f_graintype']]); else - $soort = iconv('UTF-8','windows-1252',$ftype[$item['f_type']]); + $soort = iconv('UTF-8','windows-1252',$fermentabletype[$item['f_type']]); if ($item['f_added'] == 4) { $bottle_sugar = $name; @@ -218,8 +219,8 @@ global $total_ibus; global $cost_hops; global $preboil_sg; - $hopform = array( 'Pellets', 'Plugs', 'Bellen', 'Hop nat', 'Cryo Hop' ); - $hopuse = array( 'Maischen', 'First wort', 'Koken', 'Vlamuit', 'Whirlpool', 'Koudhop' ); + global $hopform; + global $hopuse; $vul = $this->w - $this->rMargin - $this->lMargin - 122; $this->Ln(); $this->AddCol($vul,'Hop','L'); @@ -289,8 +290,8 @@ function TableYeasts($row) { global $cost_yeasts; global $svg; - $yeastform = array( 'Vloeibaar', 'Droog', 'Schuine buis', 'Slurry', 'Ingevroren', 'Depot' ); - $yeastuse = array( 'Hoofdgisting', 'Nagisting', 'Lagering', 'Bottelen' ); + global $yeastform; + global $yeastuse; $vul = $this->w - $this->rMargin - $this->lMargin - 110; $this->Ln(); $this->AddCol($vul,'Gist','L'); @@ -322,7 +323,7 @@ $svg = $attenuation; if ($item['y_form'] == 0) // Liquid $amount = sprintf("%.0f",floatval($item['y_amount']))." pak"; - else if ($item['y_form'] == 1) // Dry + else if ($item['y_form'] == 1 || $item['y_form'] == 6) // Dry $amount = sprintf("%.1f",floatval($item['y_amount'])*1000)." gr"; else $amount = sprintf("%.0f",floatval($item['y_amount'])*1000)." ml"; @@ -365,8 +366,8 @@ function TableMiscs($row) { global $cost_miscs; - $misctype = array( 'Specerij', 'Kruid', 'Smaakstof', 'Klaringsmiddel', 'Brouwzout', 'Gistvoeding', 'Anders' ); - $miscuse = array( 'Starter', 'Maischen', 'Koken', 'Hoofdvergisting', 'Nagisting/lagering', 'Bottelen' ); + global $misctype; + global $miscuse; $vul = $this->w - $this->rMargin - $this->lMargin - 95; if ($this->GetY() > 200) $this->AddPage(); @@ -436,7 +437,7 @@ global $cost_yeasts; global $svg; global $mashkg; - $mashtype = array( 'Infusie', 'Verwarming', 'Decoctie' ); + global $mashtype; $vul = $this->w - $this->rMargin - $this->lMargin - 137; if ($this->GetY() > 250) $this->AddPage(); @@ -567,8 +568,8 @@ global $cost_miscs; global $cost_yeasts; global $mashkg; - $colormethod = array( 'Morey', 'Mosher', 'Daniels' ); - $ibumethod = array( 'Tinseth', 'Rager', 'Daniels' ); + global $colormethod; + global $ibumethod; /* 2 Columns */ if ($this->GetY() > 200) $this->AddPage(); @@ -662,6 +663,8 @@ global $my_brix_correction; global $my_grain_absorbtion; + global $coolingtype; + global $aerationtype; if ($this->GetY() > 180) $this->AddPage(); @@ -735,7 +738,6 @@ $this->Cell(50,5,sprintf("%.1f", floatval($row['brew_aboil_efficiency']))."%",0,0,'L',true); $this->Ln(7); - $coolingtype = array( '-', 'Dompelkoeler', 'Tegenstroomkoeler', 'Au bain marie', 'Laten afkoelen' ); $this->SetX($this->TableX); $this->Cell(35,5,'Spoelwater temperatuur',0,0,'L',true); $this->Cell(50,5,sprintf("%.1f", $row['sparge_temp']).DEG.'C',0,0,'L',true); @@ -792,7 +794,6 @@ $this->Cell(50,5,density_str(floatval($row['brew_fermenter_sg'])),0,0,'L',true); $this->Ln(7); - $aerationtype = array( 'Geen', 'Lucht', 'Zuurstof' ); $this->SetX($this->TableX); $this->Cell(35,5,'Beluchten met',0,0,'L',true); $this->Cell(50,5,$aerationtype[$row['brew_aeration_type']],0,0,'L',true); @@ -1092,7 +1093,7 @@ function Header() { global $row; global $prdate; - $stage = array( 'Plan', 'Wacht', 'Brouwen', 'Hoofdgisting', 'Nagisting', 'Lagering', 'Afvullen', 'Hergisten', 'Rijpen', 'Proeven', 'Gereed', 'Afgesloten' ); + global $stage; $this->Image('images/logo.png',10,10,30); // Title $this->SetFont('Helvetica','B',18); diff -r 9e43b216ccd3 -r d25a1b160dba www/rec_beerxml.php --- a/www/rec_beerxml.php Sat Sep 14 10:41:35 2019 +0200 +++ b/www/rec_beerxml.php Fri Oct 18 13:12:46 2019 +0200 @@ -31,7 +31,7 @@ $fermentabletype = array( 'Grain', 'Sugar', 'Extract', 'Dry extract', 'Adjunct' ); $graintype = array( 'Base', 'Roast', 'Crystal', 'Kilned', 'Sour malt', 'Special', 'No malt' ); $yeasttype = array( 'Lager', 'Ale', 'Wheat', 'Wine', 'Champagne', 'Other', 'Other', 'Other', 'Other', 'Other' ); -$yeastform = array( 'Liquid', 'Dry', 'Slant', 'Culture', 'Frozen', 'Bottle' ); +$yeastform = array( 'Liquid', 'Dry', 'Slant', 'Culture', 'Frozen', 'Bottle', 'Dry' ); $yeastuse = array( 'Primary', 'Secondary', 'Tertiary', 'Bottle' ); $misctype = array( 'Spice', 'Herb', 'Flavor', 'Fining', 'Water agent', 'Yeast nutrient', 'Other' ); $miscuse = array( 'Starter', 'Mash', 'Boil', 'Primary', 'Secondary', 'Bottling' ); diff -r 9e43b216ccd3 -r d25a1b160dba www/rec_forum.php --- a/www/rec_forum.php Sat Sep 14 10:41:35 2019 +0200 +++ b/www/rec_forum.php Fri Oct 18 13:12:46 2019 +0200 @@ -1,6 +1,7 @@ w - $this->rMargin - $this->lMargin - 120; $cMargin=$this->cMargin; $this->cMargin=2; @@ -100,9 +101,9 @@ global $pCara; global $colorw; global $preboil_sg; - $added = array( 'Maischen', 'Koken 10 min', 'Vergisten', 'Nagisten/lageren', 'Bottelen' ); - $ftype = array( 'Mout', 'Suiker', 'Vloeibaar extract', 'Droog extract', 'Ongemout graan' ); - $mtype = array( 'Basismout', 'Geroosterde mout', 'Cara- of crystalmout', 'Geëeste mout', 'Zuurmout', 'Speciale mout', 'Geen mout' ); + global $added; + global $fermentabletype; + global $graintype; $vul = $this->w - $this->rMargin - $this->lMargin - 125; $this->Ln(); $this->AddCol($vul,'Mout, granen en suikers','L'); @@ -140,9 +141,9 @@ $pCara += $percent; if ($item['f_type'] == 0) - $soort = iconv('UTF-8','windows-1252',$mtype[$item['f_graintype']]); + $soort = iconv('UTF-8','windows-1252',$graintype[$item['f_graintype']]); else - $soort = iconv('UTF-8','windows-1252',$ftype[$item['f_type']]); + $soort = iconv('UTF-8','windows-1252',$fermentabletype[$item['f_type']]); $cost = $amount * $costkg; $cost_fermentables += $cost; @@ -188,8 +189,8 @@ global $total_ibus; global $cost_hops; global $preboil_sg; - $hopform = array( 'Pellets', 'Plugs', 'Bellen', 'Hop nat', 'Cryo Hop' ); - $hopuse = array( 'Maischen', 'First wort', 'Koken', 'Vlamuit', 'Whirlpool', 'Koudhop' ); + global $hopform; + global $hopuse; $vul = $this->w - $this->rMargin - $this->lMargin - 122; $this->Ln(); $this->AddCol($vul,'Hop','L'); @@ -259,8 +260,8 @@ function TableYeasts($row) { global $cost_yeasts; global $svg; - $yeastform = array( 'Vloeibaar', 'Droog', 'Schuine buis', 'Slurry', 'Ingevroren', 'Depot' ); - $yeastuse = array( 'Hoofdgisting', 'Nagisting', 'Lagering', 'Bottelen' ); + global $yeastform; + global $yeastuse; $vul = $this->w - $this->rMargin - $this->lMargin - 110; $this->Ln(); $this->AddCol($vul,'Gist','L'); @@ -293,7 +294,7 @@ if ($item['y_form'] == 0) // Liquid $amount = sprintf("%.0f",floatval($item['y_amount']))." pak"; - else if ($item['y_form'] == 1) // Dry + else if ($item['y_form'] == 1 || $item['y_form'] == 6) // Dry $amount = sprintf("%.1f",floatval($item['y_amount'])*1000)." gr"; else $amount = sprintf("%.0f",floatval($item['y_amount'])*1000)." ml"; @@ -317,8 +318,8 @@ function TableMiscs($row) { global $cost_miscs; - $misctype = array( 'Specerij', 'Kruid', 'Smaakstof', 'Klaringsmiddel', 'Brouwzout', 'Gistvoeding', 'Anders' ); - $miscuse = array( 'Starter', 'Maischen', 'Koken', 'Hoofdvergisting', 'Nagisting/lagering', 'Bottelen' ); + global $misctype; + global $miscuse; $vul = $this->w - $this->rMargin - $this->lMargin - 95; if ($this->GetY() > 200) $this->AddPage(); @@ -388,7 +389,7 @@ global $cost_yeasts; global $svg; global $mashkg; - $mashtype = array( 'Infusie', 'Verwarming', 'Decoctie' ); + global $mashtype; $vul = $this->w - $this->rMargin - $this->lMargin - 137; if ($this->GetY() > 250) $this->AddPage(); @@ -518,8 +519,8 @@ global $cost_hops; global $cost_miscs; global $cost_yeasts; - $colormethod = array( 'Morey', 'Mosher', 'Daniels' ); - $ibumethod = array( 'Tinseth', 'Rager', 'Daniels' ); + global $colormethod; + global $ibumethod; /* 2 Columns */ if ($this->GetY() > 200) $this->AddPage(); diff -r 9e43b216ccd3 -r d25a1b160dba www/rec_toproduct.php --- a/www/rec_toproduct.php Sat Sep 14 10:41:35 2019 +0200 +++ b/www/rec_toproduct.php Fri Oct 18 13:12:46 2019 +0200 @@ -137,7 +137,7 @@ $sql .= "', wa_acid_name='" . $row['wa_acid_name']; $sql .= "', wa_acid_perc='" . $row['wa_acid_perc']; $sql .= "', wa_base_name='" . $row['wa_base_name']; -$sql .= "', starter_enable='0', starter_type='0', starter_sg='1.040', starter_viability='97"; +$sql .= "', starter_enable='0', starter_type='0', starter_sg='1.037', starter_viability='97"; $sql .= "', prop1_type='0', prop1_volume='0', prop2_type='0', prop2_volume='0"; $sql .= "', prop3_type='0', prop3_volume='0', prop4_type='0', prop4_volume='0"; $sql .= "', json_fermentables='" . str_replace($rescapers,$rreplacements,$row['json_fermentables']);