# HG changeset patch # User Michiel Broek # Date 1551274765 -3600 # Node ID 5e2424bfbc4a7471aef365036cb4304b1fff9b34 # Parent 69fadd1aded2eaff13faf68aeca1abc409e5399d Added import brew json logfiles diff -r 69fadd1aded2 -r 5e2424bfbc4a www/Makefile --- a/www/Makefile Tue Feb 26 16:18:16 2019 +0100 +++ b/www/Makefile Wed Feb 27 14:39:25 2019 +0100 @@ -11,11 +11,11 @@ inv_miscs.php inv_suppliers.php inv_waters.php inv_yeasts.php log_brew.php \ log_fermentation.php mon_brewer.php mon_fermenter.php mon_node.php \ prod_archive_code.php prod_archive_date.php prod_archive_name.php \ - prod_edit.php prod_export.php prod_inprod.php prod_new.php prod_print.php \ - prod_reduce.php profile_fermentation.php \ + prod_edit.php prod_export.php prod_impbrew.php prod_inprod.php prod_new.php \ + prod_print.php prod_reduce.php profile_fermentation.php \ profile_mash.php profile_setup.php profile_styles.php profile_water.php \ rec_edit.php rec_export.php rec_main.php rec_new.php rec_print.php \ - version.php + upl_brew.php version.php SUB = version.php.in images/* css/* jqwidgets/* jqwidgets/styles/* \ jqwidgets/styles/images/* jqwidgets/globalization/* js/* \ includes/* fpdf/* import/* diff -r 69fadd1aded2 -r 5e2424bfbc4a www/getbrewlog.php --- a/www/getbrewlog.php Tue Feb 26 16:18:16 2019 +0100 +++ b/www/getbrewlog.php Wed Feb 27 14:39:25 2019 +0100 @@ -13,22 +13,22 @@ } mysqli_set_charset($connect, "utf8" ); -$query = "SELECT * FROM log_brews WHERE product_code='".$code."' ORDER BY datetime;"; +$query = "SELECT * FROM log_brews WHERE code='".$code."' ORDER BY datetime;"; $result = mysqli_query($connect, $query) or die("SQL Error 1: " . mysqli_error($connect)); while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { $lines[] = array( 'record' => $row['record'], 'date' => substr($row['datetime'],0,16), 'version' => $row['version'], - 'code' => $row['product_code'], - 'name' => $row['product_name'], - 'pv_mlt' => $row['temperature_mlt'], - 'pv_bk' => $row['temperature_bk'], - 'pv_hlt' => $row['temperature_hlt'], - 'pv_room' => $row['temperature_room'], - 'sp_mlt' => $row['setpoint_mlt'], - 'sp_bk' => $row['setpoint_bk'], - 'sp_hlt' => $row['setpoint_hlt'], + 'code' => $row['code'], + 'name' => $row['name'], + 'pv_mlt' => $row['pv_mlt'], + 'pv_hlt' => $row['pv_hlt'], + 'pv_room' => $row['pv_room'], + 'sp_mlt' => $row['sp_mlt'], + 'sp_hlt' => $row['sp_hlt'], + 'pwm_mlt' => $row['pwm_mlt'], + 'pwm_hlt' => $row['pwm_hlt'], 'event' => $row['event'] ); } diff -r 69fadd1aded2 -r 5e2424bfbc4a www/includes/global.inc.php --- a/www/includes/global.inc.php Tue Feb 26 16:18:16 2019 +0100 +++ b/www/includes/global.inc.php Wed Feb 27 14:39:25 2019 +0100 @@ -167,6 +167,8 @@ + +
  • Import
  • diff -r 69fadd1aded2 -r 5e2424bfbc4a www/js/log_brew.js --- a/www/js/log_brew.js Tue Feb 26 16:18:16 2019 +0100 +++ b/www/js/log_brew.js Wed Feb 27 14:39:25 2019 +0100 @@ -46,12 +46,12 @@ { name: "code", type: "string" }, { name: "name", type: "string" }, { name: "pv_mlt", type: "float" }, - { name: "pv_bk", type: "float" }, { name: "pv_hlt", type: "float" }, { name: "pv_room", type: "float" }, { name: "sp_mlt", type: "float" }, - { name: "sp_bk", 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 @@ -95,8 +95,6 @@ series: [ { dataField: "pv_mlt", lineWidth: 2, displayText: "MLT" }, { dataField: "sp_mlt", lineWidth: 1, displayText: "mlt", opacity: 0.7 }, - { dataField: "pv_bk", lineWidth: 2, displayText: "BK" }, - { dataField: "sp_bk", lineWidth: 1, displayText: "bk", 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 } diff -r 69fadd1aded2 -r 5e2424bfbc4a www/js/prod_impbrew.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/js/prod_impbrew.js Wed Feb 27 14:39:25 2019 +0100 @@ -0,0 +1,56 @@ +/***************************************************************************** + * 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. + * + * 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 () { + + $('#jqxFileUpload').jqxFileUpload({ + width: 300, + browseTemplate: 'success', + cancelTemplate: 'inverse', + uploadTemplate: 'primary', + theme: theme, + multipleFilesUpload: false, + accept: 'application/json', + uploadUrl: 'upl_brew.php', + fileInputName: 'fileToUpload' + }); + $('#eventsPanel').jqxPanel({ + width: 800, + height: 200, + theme: theme + }); + $('#jqxFileUpload').on('select', function (event) { + var args = event.args; + var fileName = args.file; + var 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; + $('#eventsPanel').jqxPanel('append', '' + event.type + ': ontvangen ' + fileName + '
    ' + serverResponce + '
    '); + }); + +}); diff -r 69fadd1aded2 -r 5e2424bfbc4a www/prod_impbrew.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/prod_impbrew.php Wed Feb 27 14:39:25 2019 +0100 @@ -0,0 +1,16 @@ + + +
    +
    +
    Brouw log bestanden upload.

    +
    +
    +
    +
    + + diff -r 69fadd1aded2 -r 5e2424bfbc4a www/upl_brew.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/upl_brew.php Wed Feb 27 14:39:25 2019 +0100 @@ -0,0 +1,123 @@ + 500000 && $uploadOk) { + echo "Fout 2: het bestand is te groot. "; + $uploadOk = 0; +} +// Allow certain file formats +if ($imageFileType != "json" && $uploadOk) { + echo "Fout 3: alleen JSON bestanden toegestaan. "; + $uploadOk = 0; +} +// Check if $uploadOk is set to 0 by an error +if ($uploadOk == 0) { + exit; +} + +if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { + echo "Verwerken bestand ". basename( $_FILES["fileToUpload"]["name"]). "
    "; +} else { + echo "Fout 4: er gieng iets fout met de upload."; + exit; +} + +$json= file_get_contents($target_file); +$brew = json_decode($json, true); +$records = count($brew); +if ($records != 1) { + echo "Fout 5: dit is geen JSON brouw logfile"; + exit; +} + +$connect = mysqli_connect(DBASE_HOST, DBASE_USER, DBASE_PASS, DBASE_NAME); +if (! $connect) { + echo "Fout 6: ".mysqli_connect_errno()." ".mysqli_connect_error(); + exit; +} +mysqli_set_charset($connect, "utf8" ); +date_default_timezone_set('Europe/Amsterdam'); + +foreach($brew as $brewdata) { + + foreach($brewdata as $item) { + $temps = $item['brewdata']; + $events = $item['annotations']; + $date = date("Y-m-d H:i:s" , strtotime($item['Date'])); + $code = strtok($item['Recipe'], " "); + $name = strtok('\0'); + $insert = 0; + $update = 0; + $delete = 0; + + $sql = "SELECT uuid FROM products WHERE code='".$code."';"; + $result = mysqli_query($connect, $sql) or die("SQL Error 1: " . mysqli_error($connect)); + if ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { + $uuid = $row['uuid']; + } + echo "Brouw: ".$code." ".$name."
    "; + + $sql = "DELETE FROM log_brews WHERE code='".$code."';"; + $result = mysqli_query($connect, $sql) or die("SQL Error 1: " . mysqli_error($connect)); + $delete += mysqli_affected_rows($connect); + + foreach($temps as $temp) { + // Create full datetime from the Label + $t = floatval(substr($temp['Label'], 0, 2)) * 60 + floatval(substr($temp['Label'], 3, 2)); + $time = new DateTime($date); + $time->add(new DateInterval('PT' . $t . 'M')); + $stamp = $time->format('Y-m-d H:i:s'); + + $sql = "INSERT INTO log_brews SET version='2"; + $sql .= "', datetime='" . $stamp; + $sql .= "', uuid='" . $uuid; + $sql .= "', code='" . $code; + $sql .= "', name='" . mysqli_real_escape_string($connect, $name); + $sql .= "', pv_mlt='" . $temp['MLT_pv']; + $sql .= "', sp_mlt='" . $temp['MLT_sp']; + $sql .= "', pwm_mlt='" . $temp['MLT_pwm']; + if (isset($temp['HLT_pv'])) + $sql .= "', pv_hlt='" . $temp['HLT_pv']; + if (isset($temp['HLT_sp'])) + $sql .= "', sp_hlt='" . $temp['HLT_sp']; + if (isset($temp['HLT_pwm'])) + $sql .= "', pwm_hlt='" . $temp['HLT_pwm']; + $sql .= "';"; + $result = mysqli_query($connect, $sql) or die("SQL Error 1: " . mysqli_error($connect)); + $insert += mysqli_affected_rows($connect); + } + + // The events are annotations in the JSON file. + foreach($events as $event) { + $t = floatval(substr($event['value'], 0, 2)) * 60 + floatval(substr($event['value'], 3, 2)); + $time = new DateTime($date); + $time->add(new DateInterval('PT' . $t . 'M')); + $stamp = $time->format('Y-m-d H:i:s'); + + $sql = "UPDATE log_brews SET event='".mysqli_real_escape_string($connect, $event['label']['content'])."' WHERE "; + $sql .= "datetime='".$stamp."' AND uuid='".$uuid."';"; + $result = mysqli_query($connect, $sql) or die("SQL Error 1: " . mysqli_error($connect)); + $update += mysqli_affected_rows($connect); + } + + $sql = "UPDATE products SET log_brew='1' WHERE code='".$code."';"; + $result = mysqli_query($connect, $sql) or die("SQL Error 1: " . mysqli_error($connect)); + $update += mysqli_affected_rows($connect); + echo "Database delete: ".$delete.", insert: ".$insert.", update: ".$update." records." . PHP_EOL; + } +} +// Don't clutter the upload directory. +unlink($target_file); + +?>