Timemaster Plugin

Signed-off-by: Peter Siegmund <developer@mars3142.org>
This commit is contained in:
2026-04-20 13:58:00 +02:00
parent 5a104a8f95
commit 1ad111159b
6 changed files with 840 additions and 0 deletions
+37
View File
@@ -0,0 +1,37 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
<title>Model Railway Stream</title>
<link rel="stylesheet" href="../../libs/css/uspi.css">
</head>
<body>
<div class="uspi-wrapper">
<form id="property-inspector">
<div class="uspi-item">
<div class="uspi-item-label" data-localize>MQTT URI</div>
<input class="uspi-item-value" type="text" name="uri" placeholder="wss://broker.example.com" />
</div>
<div class="uspi-item">
<div class="uspi-item-label" data-localize>Username</div>
<input class="uspi-item-value" type="text" name="username" placeholder="user" />
</div>
<div class="uspi-item">
<div class="uspi-item-label" data-localize>Password</div>
<input class="uspi-item-value" type="password" name="password" />
</div>
<div class="uspi-item">
<div class="uspi-item-label" data-localize>Device ID</div>
<input class="uspi-item-value" type="text" name="deviceId" placeholder="DC:54:75:D6:09:AC" />
</div>
</form>
</div>
<script src="../../libs/js/constants.js"></script>
<script src="../../libs/js/eventEmitter.js"></script>
<script src="../../libs/js/utils.js"></script>
<script src="../../libs/js/ulanzideckApi.js"></script>
<script src="./inspector.js"></script>
</body>
</html>
+31
View File
@@ -0,0 +1,31 @@
let ACTION_SETTING = {};
let form = '';
$UD.connect('dev.mars3142.ulanzideck.collection.stream');
$UD.onConnected(() => {
form = document.querySelector('#property-inspector');
form.addEventListener('input', Utils.debounce(() => {
const value = Utils.getFormValue(form);
ACTION_SETTING = { ...ACTION_SETTING, ...value };
$UD.sendParamFromPlugin(ACTION_SETTING);
}));
});
$UD.onAdd(jsn => {
if (jsn && jsn.param) settingSaveParam(jsn.param);
});
$UD.onParamFromApp(jsn => {
settingSaveParam((jsn && jsn.param) || {});
});
$UD.onParamFromPlugin(jsn => {
settingSaveParam((jsn && jsn.param) || {});
});
function settingSaveParam(params) {
ACTION_SETTING = { ...ACTION_SETTING, ...params };
if (form) Utils.setFormValue(ACTION_SETTING, form);
}
@@ -0,0 +1,44 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
<title>Timemaster</title>
<link rel="stylesheet" href="../../libs/css/uspi.css">
</head>
<body>
<div class="uspi-wrapper">
<form id="property-inspector">
<div class="uspi-item">
<div class="uspi-item-label" data-localize>Server</div>
<input class="uspi-item-value" type="text" name="uri" placeholder="tim.eqnet.io" />
</div>
<div class="uspi-item">
<div class="uspi-item-label" data-localize>Username</div>
<input class="uspi-item-value" type="text" name="username" />
</div>
<div class="uspi-item">
<div class="uspi-item-label" data-localize>Password</div>
<input class="uspi-item-value" type="password" name="password" />
</div>
<div class="uspi-item">
<div class="uspi-item-label" data-localize>Refresh Rate</div>
<select class="uspi-item-value" name="refreshRate">
<option value="1" data-localize>Every 1 min</option>
<option value="2" data-localize>Every 2 min</option>
<option value="3" selected data-localize>Every 5 min</option>
<option value="4" data-localize>Every 10 min</option>
<option value="5" data-localize>Every 30 min</option>
<option value="6" data-localize>Every Hour</option>
</select>
</div>
</form>
</div>
<script src="../../libs/js/constants.js"></script>
<script src="../../libs/js/eventEmitter.js"></script>
<script src="../../libs/js/utils.js"></script>
<script src="../../libs/js/ulanzideckApi.js"></script>
<script src="./inspector.js"></script>
</body>
</html>
@@ -0,0 +1,31 @@
let ACTION_SETTING = {};
let form = '';
$UD.connect('dev.mars3142.ulanzideck.collection.timemaster');
$UD.onConnected(() => {
form = document.querySelector('#property-inspector');
form.addEventListener('input', Utils.debounce(() => {
const value = Utils.getFormValue(form);
ACTION_SETTING = { ...ACTION_SETTING, ...value };
$UD.sendParamFromPlugin(ACTION_SETTING);
}));
});
$UD.onAdd(jsn => {
if (jsn && jsn.param) settingSaveParam(jsn.param);
});
$UD.onParamFromApp(jsn => {
settingSaveParam((jsn && jsn.param) || {});
});
$UD.onParamFromPlugin(jsn => {
settingSaveParam((jsn && jsn.param) || {});
});
function settingSaveParam(params) {
ACTION_SETTING = { ...ACTION_SETTING, ...params };
if (form) Utils.setFormValue(ACTION_SETTING, form);
}