# HG changeset patch # User Michiel Broek # Date 1406739911 -7200 # Node ID 866a947b732abb0e24d112cebb5a7d9e30afca9e # Parent 9bcb380e639b431f0de9039febea8e440b3d6a22 Added the framework for the units editor. In the dashboard the radio selector buttons are converteed to jqwidgets radiobuttons. diff -r 9bcb380e639b -r 866a947b732a www-thermferm/liveview.php --- a/www-thermferm/liveview.php Wed Jul 30 15:27:37 2014 +0200 +++ b/www-thermferm/liveview.php Wed Jul 30 19:05:11 2014 +0200 @@ -66,6 +66,42 @@ if (startsWith($arr[0], "213")) { + $set_temperature = "N/A"; + $air_temperature = "N/A"; + $beer_temperature = "N/A"; + $power_led = $cooler_led = $heater_led = $fan_led = "off"; + $heater = $cooler = $fan = "no"; + + foreach($arr as $l) { + $vals = explode(",", $l); + if (strcmp($vals[0], "MODE") == 0) { + $mode = $vals[1]; + if (strcmp($mode, "OFF")) + $power_led = "on"; + } + if (strcmp($vals[0], "AIR_STATE") == 0) { + $air_state = $vals[1]; + } + if ((strcmp($vals[0], "AIR_TEMPERATURE") == 0) && ($air_state == 0)) { + $air_temperature = $vals[1]; + } + if (strcmp($vals[0], "BEER_STATE") == 0) { + $beer_state = $vals[1]; + } + if ((strcmp($vals[0], "BEER_TEMPERATURE") == 0) && ($beer_state == 0)) { + $beer_temperature = $vals[1]; + } + if ((strcmp($vals[0], "HEATER") == 0) && (strcmp($vals[1], "YES"))) { + $heater = "yes"; + } + if ((strcmp($vals[0], "COOLER") == 0) && (strcmp($vals[1], "YES"))) { + $cooler = "yes"; + } + if ((strcmp($vals[0], "FAN") == 0) && (strcmp($vals[1], "YES"))) { + $fan = "yes"; + } + } + $outstr .= ' '.PHP_EOL; $outstr .= '
'.PHP_EOL; $outstr .= '
'.PHP_EOL; - $set_temperature = "N/A"; - $air_temperature = "N/A"; - $beer_temperature = "N/A"; - $power_led = $cooler_led = $heater_led = $fan_led = "off"; - - foreach($arr as $l) { - $vals = explode(",", $l); - if (strcmp($vals[0], "MODE") == 0) { - $mode = $vals[1]; - if (strcmp($mode, "OFF")) - $power_led = "on"; - } - if (strcmp($vals[0], "AIR_STATE") == 0) { - $air_state = $vals[1]; - } - if ((strcmp($vals[0], "AIR_TEMPERATURE") == 0) && ($air_state == 0)) { - $air_temperature = $vals[1]; - } - if (strcmp($vals[0], "BEER_STATE") == 0) { - $beer_state = $vals[1]; - } - if ((strcmp($vals[0], "BEER_TEMPERATURE") == 0) && ($beer_state == 0)) { - $beer_temperature = $vals[1]; - } - } $outstr .= '
'.PHP_EOL; $outstr .= '
'.PHP_EOL; - $outstr .= ' Mode '.$mode.PHP_EOL; - $outstr .= '
'.PHP_EOL; - strcmp($mode, "OFF") ? $se = "" : $se = " checked"; - $outstr .= ' Off
'.PHP_EOL; - strcmp($mode, "NONE") ? $se = "" : $se = " checked"; - $outstr .= ' None
'.PHP_EOL; - strcmp($mode, "FRIDGE") ? $se = "" : $se = " checked"; - $outstr .= ' Fridge
'.PHP_EOL; - strcmp($mode, "BEER") ? $se = "" : $se = " checked"; - $outstr .= ' Beer
'.PHP_EOL; - strcmp($mode, "PROFILE") ? $se = "" : $se = " checked"; - $outstr .= ' Profile'.PHP_EOL; - $outstr .= '
'.PHP_EOL; + $outstr .= '
Off
'.PHP_EOL; + $outstr .= '
None
'.PHP_EOL; + $outstr .= '
Fridge
'.PHP_EOL; + $outstr .= '
Beer
'.PHP_EOL; + $outstr .= '
Profile
'.PHP_EOL; $outstr .= '
'.PHP_EOL; $outstr .= '
'.PHP_EOL; $outstr .= '
Pwr'.PHP_EOL; diff -r 9bcb380e639b -r 866a947b732a www-thermferm/units.php --- a/www-thermferm/units.php Wed Jul 30 15:27:37 2014 +0200 +++ b/www-thermferm/units.php Wed Jul 30 19:05:11 2014 +0200 @@ -26,8 +26,7 @@ $sock = open_socket(); if ($sock == false) { - echo ""; - return; + load('index.php'); } socket_write($sock, "LIST", 4096); @@ -39,35 +38,333 @@ $answer .= $line; } socket_close($sock); + +/* + * $arr contains the complete reply of the LIST command. + */ $arr = explode("\r\n", $answer); -$outstr = build_header(); -$outstr .= '
'.PHP_EOL; -$outstr .= '
'.PHP_EOL; -$outstr .= '
'.PHP_EOL; +if (isset($_GET['action'])) { + switch ($_GET['action']) { + case 'edit': unit_edit(); + break; + default: break; + } +} elseif (isset($_POST['action'])) { + switch ($_POST['action']) { + case 'testdata': testdata(); + break; + default: break; + } +} else { + unit_list(); +} + +exit; + +/**************************************************************************** + * + */ + +/* + * Unit add + * + * @param string $_POST['Name'] The rpofile name + */ +function unit_add() { + + if ($_POST['key'] == 'Add') { + + $cmd = "ADD UNIT ".$_POST['Name']; + + $sock = open_socket(); + if ($sock != false) { + /* + * Send command and absorb the result. + */ + socket_write($sock, $cmd, 4096); + while (1) { + $line = socket_read($sock, 4096); + if ($line === '') + break; + } + socket_close($sock); + } + } + + unset($_POST['UUID']); + unset($_POST['Name']); + unset($_POST['key']); + unset($_POST['command']); + load('units.php'); +} + + + +/* + * Unit update + * + * @param string $_POST['UUID'] The unit UUID + * @param string $_POST['Name'] The unit name + * @param string $_POST['key'] The button pressed. + */ +function unit_update() { + /* + * Build the update command + */ + if ($_POST['key'] == 'Delete') + $update_cmd = "DEL UNIT ".$_POST['UUID']; + else + $update_cmd = "XXXXXXX ".$_POST['UUID'].",".$_POST['Name']; + + $sock = open_socket(); + if ($sock != false) { + /* + * Send command and absorb the result. + */ + socket_write($sock, $update_cmd, 4096); + while (1) { + $line = socket_read($sock, 4096); + if ($line === '') + break; + } + socket_close($sock); + } + + unset($_POST['UUID']); + unset($_POST['Name']); + unset($_POST['key']); + unset($_POST['command']); + load('units.php'); +} + + + +/* + * Test input of a modified or new profile. + * + * @param string $_POST['UUID'] Unique record UUID + * @param string $_POST['Name'] Profile name + * @param string $_POST['key'] Key choice, Save or Cancel + * @param string $_POST['command'] Command used, 'add' or 'update' + * + * Return: 0 = Ok + * 1 = Missing data + * 2 = Name field too short + * 3 = Name already in use + * 99 = Cancel key + */ +function test_thedata() { + + global $arr; + + if (isset($_POST['UUID']) && isset($_POST['Name']) && isset($_POST['key']) && isset($_POST['command'])) { + + if ($_POST['key'] == 'Cancel') + return 99; + + if (strlen($_POST['Name']) < 2) + return 2; -$outstr .= ' '.PHP_EOL; -$outstr .= ' '.PHP_EOL; -$outstr .= ' '.PHP_EOL; -$outstr .= ' '.PHP_EOL; -$outstr .= ' '.PHP_EOL; -$outstr .= ' '.PHP_EOL; + if (startsWith($arr[0], "212")) { + $j = 1; + while (1) { + if (strcmp($arr[$j], ".") == 0) + break; + $f = explode(",", $arr[$j]); + if (strcmp($f[0], $_POST['UUID']) && (strcmp($f[1], $_POST['Name']) == 0)) { + return 3; + } + $j++; + } + } + + } else { + return 1; + } + + return 0; +} + + + +/* + * Test result from edit screen and do next action + */ +function testdata() { + + $result = test_thedata(); + $error = ''; + + switch ($result) { + case 0: if ($_POST['command'] == 'add') { + unit_add(); + return; + } else if ($_POST['command'] == 'update') { + unit_update(); + return; + } + break; + case 1: $error = 'Missing data'; + break; + case 2: $error = 'The name is too short'; + break; + case 3: $error = 'The name is already in use, choose another one'; + break; + case 99: + load('units.php'); + break; + } + + if ($_POST['command'] == 'add') { + $heading = 'ThermFerm - Add Unit'; + } else { + $heading = 'ThermFerm - Edit Unit'; + } + + edit_screen($_POST['UUID'], $_POST['Name'], $_POST['command'], $heading, $error); +} + + -if (startsWith($arr[0], "212")) { - $j = 1; - while (1) { - if (strcmp($arr[$j], ".") == 0) - break; - $f = explode(",", $arr[$j]); - $outstr .= ' '.PHP_EOL; - $j++; +/* + * Unit edit screen. Used by unit_edit(), unit_add() and testdata() + * + * @param string $UUID The record UUID (fixed). + * @param string $Name The Unit Name. + * @param string $command 'add' or 'update' + * @param string $heading Page heading title. + * @Param string $error_message Blank or previous error. + */ +function edit_screen($UUID, $Name, $command, $heading, $error_message) { + + $outstr = build_header($heading); + $outstr .= '
'.PHP_EOL; + $outstr .= ' '.$error_message.PHP_EOL; + $outstr .= '
'.PHP_EOL; + $outstr .= '
'.PHP_EOL; + $outstr .= '
'.PHP_EOL; + $outstr .= '
UUIDNameMode
'.$f[0].''.$f[1].''.$f[2].'
'.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= '
UUID'.$UUID.'
Unit Name
'; + $outstr .= ''; + $outstr .= ''; + $outstr .= ''; + $outstr .= '
'.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= '
'.PHP_EOL; + $outstr .= build_footer(); + echo $outstr; +} + + + +/* + * Edit a Unit. Fetches the record data and shows the edit screen. + * + * @param string $_GET['action'] Must be 'edit'. + * @param string $_GET['UUID'] The UUID of the Unit. + */ +function unit_edit() { + + global $arr; + + if ($_GET['action'] == 'edit') { + + if (startsWith($arr[0], "212")) { + $j = 1; + while (1) { + if (strcmp($arr[$j], ".") == 0) + break; + $f = explode(",", $arr[$j]); + if (strcmp($f[0], $_GET['UUID']) == 0) { + edit_screen($f[0], $f[1], 'update', 'ThermFerm - Edit Unit', ''); + return; + } + $j++; + } + } else { + load('units.php'); + } + + } else { + load('units.php'); } } -$outstr .= ' '.PHP_EOL; -$outstr .= '
'.PHP_EOL; -$outstr .= build_footer(); + + +/* + * @link edit unit + * @link add unit + */ +function unit_list() { + + global $arr; + + $outstr = build_header('ThermFerm - Units Maintenance'); + $outstr .= '
'.PHP_EOL; + $outstr .= '
'.PHP_EOL; + $outstr .= '
'.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; -echo $outstr; + if (startsWith($arr[0], "212")) { + $j = 1; + while (1) { + if (strcmp($arr[$j], ".") == 0) + break; + $f = explode(",", $arr[$j]); + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + if (strcmp($f[2], "OFF")) { + $outstr .= ' '.PHP_EOL; + } else { + $outstr .= ' '.PHP_EOL; + } + $outstr .= ' '.PHP_EOL; + $j++; + } + } + $outstr .= '
UUIDNameModeEdit
'.$f[0].''.$f[1].''.$f[2].'BusyEdit
'.PHP_EOL; + $outstr .= '
'.PHP_EOL; + + $outstr .= '
'.PHP_EOL; + $outstr .= '
'.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ' '.PHP_EOL; + $outstr .= ''; + $outstr .= ''; + $outstr .= ''; + $outstr .= ' '.PHP_EOL; + $outstr .= '
Add new unit
Unit Name
'.PHP_EOL; + $outstr .= '
'.PHP_EOL; + $outstr .= '
'.PHP_EOL; + $outstr .= build_footer(); + echo $outstr; +} +