diff --git a/.gitignore b/.gitignore index 85de01a..927a525 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ __pycache__/ *.txt *.bak *.pot +*.mo compare_* # Debian package build artifacts diff --git a/db/mariadb.sql b/db/mariadb.sql index b66a1de..7f3bd60 100644 --- a/db/mariadb.sql +++ b/db/mariadb.sql @@ -176,9 +176,11 @@ CREATE TABLE box ( color char(6) DEFAULT NULL, content varchar(60) DEFAULT NULL, weight float(5,2) UNSIGNED DEFAULT NULL, - wx smallint(6) UNSIGNED NOT NULL DEFAULT 0, - wy smallint(6) UNSIGNED NOT NULL DEFAULT 0, - wz smallint(6) UNSIGNED NOT NULL DEFAULT 0, + weight_net float(5,2) UNSIGNED DEFAULT NULL, + wx smallint(6) UNSIGNED NOT NULL DEFAULT 0, -- length + wy smallint(6) UNSIGNED NOT NULL DEFAULT 0, -- width + wz smallint(6) UNSIGNED NOT NULL DEFAULT 0, -- height + price decimal(12,2) DEFAULT NULL, remarks varchar(150) DEFAULT NULL, PRIMARY KEY (boxid), INDEX ix_label (label), @@ -303,6 +305,7 @@ CREATE table fuse ( ) ENGINE=InnoDB; -- change vals to decimal(12,4)? +-- additional signalk id? CREATE TABLE measurement ( mid smallint(6) NOT NULL AUTO_INCREMENT, mname varchar(80) NOT NULL, diff --git a/db/minimal.sql b/db/minimal.sql index 013e77f..a24f5ee 100644 --- a/db/minimal.sql +++ b/db/minimal.sql @@ -17,7 +17,8 @@ INSERT INTO settings (userid, sno, valint, valstr) VALUES (1, 1, 0), NULL, -- No vessel assignment to user "captain" (0, 20, 1280, NULL), -- Image width limit (0, 21, 1024, NULL), -- Image height limit -(0, 4, NULL, '€'); -- Currency symbol +(0, 4, NULL, '€'), -- Currency symbol +(0, 5, 0, 'http://127.0.0.1:3000'); -- Signal K: to enable set valint=1 /* setting descriptions */ INSERT INTO settings (userid, sno, valstr) VALUES @@ -26,6 +27,7 @@ INSERT INTO settings (userid, sno, valstr) VALUES (-1, 2, 'date format'), (-1, 3, 'user menu'), (-1, 4, 'currency symbol e.g. €, $, £, ¥'), +(-1, 5, 'signalk connection'), (-1, 10, 'rows in table'), (-1, 20, 'maximum image width'), (-1, 21, 'maximum image height'), diff --git a/db/minimal_en.sql b/db/minimal_en.sql index 7603dc3..8a3f0c1 100644 --- a/db/minimal_en.sql +++ b/db/minimal_en.sql @@ -17,7 +17,8 @@ INSERT INTO settings (userid, sno, valint, valstr) VALUES (1, 1, 0), NULL, -- No vessel assignment to user "captain" (0, 20, 1280, NULL), -- Image width limit (0, 21, 1024, NULL), -- Image height limit -(0, 4, NULL, '€'); -- Currency symbol +(0, 4, NULL, '€'), -- Currency symbol +(0, 5, 0, 'http://127.0.0.1:3000'); -- Signal K: to enable set valint=1 /* setting descriptions */ INSERT INTO settings (userid, sno, valstr) VALUES @@ -25,6 +26,7 @@ INSERT INTO settings (userid, sno, valstr) VALUES (-1, 2, 'date format'), (-1, 3, 'user menu'), (-1, 4, 'currency symbol e.g. €, $, £, ¥'), +(-1, 5, 'signalk connection'), (-1, 10, 'rows in table'), (-1, 20, 'maximum image width'), (-1, 21, 'maximum image height'), diff --git a/webgui/box.php b/webgui/box.php index 9f5b7c7..70aae00 100644 --- a/webgui/box.php +++ b/webgui/box.php @@ -60,7 +60,12 @@ switch ($submit = form_get_action()) { $p[':label'] = gpc_get_string($_POST, 'label'); $p[':content'] = gpc_get_string($_POST, 'content'); $p[':color'] = gpc_get_color($_POST, 'color'); + $p[':wx'] = gpc_get_int($_POST, 'wx'); + $p[':wy'] = gpc_get_int($_POST, 'wy'); + $p[':wz'] = gpc_get_int($_POST, 'wz'); $p[':weight'] = min(gpc_get_float($_POST, 'weight'), 99.99); + $p[':weight_net'] = min(gpc_get_float($_POST, 'weight_net'), 99.99); + $p[':price'] = gpc_get_currency($_POST, 'price'); $p[':sid'] = gpc_get_uint($_POST, 'sid'); $p[':remarks'] = gpc_get_string($_POST, 'remarks', 150); db_exec_update('box', $p, 'boxid'); @@ -163,7 +168,8 @@ foreach ($opt_storage as $k => $v) { elseif ($action == ACT_VIEW): // ========== VARIANT: view single record ===================================== -$sql = "SELECT boxtype, label, content, box.color, weight, box.remarks, box.sid, sname " +$sql = "SELECT boxtype, label, content, box.color, weight, weight_net, price, " + . "box.wx, box.wy, box.wz, box.sid, box.remarks, sname " . "FROM box LEFT JOIN storage USING (sid) " . "WHERE boxid=?"; $sth = $pdo->prepare($sql); @@ -181,7 +187,10 @@ echo '
| ', _('Box type')," | ", ($opt_boxtype[$box->boxtype] ?? ''), " |
|---|---|
| ', _('Content')," | ", $box->content, " |
| ', _('Color'), ' | ', format_color($box->color), " |
| ', _('Weight'), ' | ', format_float($box->weight, 2, 'kg'), " |
| ', _('Empty Weight'), ' | ', format_float($box->weight_net, 2, 'kg'), " |
| ', _('Price')," | ", format_currency($box->price), " |
| ', _('Storage')," | ", $box->sname, ' '; echo ''; echo " | ", $row['model'], " | \n"; echo "", $row['serial'], " | \n"; echo "", $age, " | \n"; - echo "", $row['remarks'], " | \n"; + echo "", h($row['remarks'], br:true), " | \n"; // Edit current record button echo "";
echo '', "\n";
@@ -615,6 +616,39 @@ echo '\n";
echo "\n";
+// Signal-K Integration
+$res = $pdo->query("SELECT valint, valstr FROM settings WHERE userid=0 AND sno=5");
+$sk_active = false;
+$sk_url = NULL;
+if ($res !== false) {
+ $row = $res->fetch(PDO::FETCH_ASSOC);
+ if ($row !== false && $row['valint'] == 1
+ && !empty($row['valstr'])
+ && filter_var($settings['valstr'], FILTER_VALIDATE_URL))
+ {
+ $sk_active = true;
+ $sk_url = rtrim($row['valstr'], '/');
+ }
+}
+if ($sk_active) {
+ // TODO this ist just experimental
+ $sql = "SELECT skpath FROM signalk WHERE vid=? AND objid=? AND objtype='equipment'";
+ $sth = $pdo->prepare($sql);
+ $sth->execute([$user->vid, $id]);
+ if ($sth->rowCount() > 0) {
+ echo '', _('Signal K data'), ""; + $skpath = $sth->fetchColumn(); + // REST Example: + // GET http://127.0.0.1:3000/signalk/v1/api/vessels/self/propulsion/mainEngine/runTime + try { + $data = signalk_get($url, $skpath); + print_r($data); + } catch (Exception $e) { + echo "signalk-timeout! \n"; + } + } +} + // Spare parts echo '', _('Spare parts'), ""; @@ -707,7 +741,7 @@ form_create_select('category', _('Category'), $g_opt_unknown + $opt_ecat, $equip ?>
-
+
|