Removed old event page
This commit is contained in:
parent
60024dc915
commit
22e6400369
3 changed files with 0 additions and 207 deletions
|
|
@ -1,98 +0,0 @@
|
||||||
<h1 class="page-header">Event Overview</h1>
|
|
||||||
|
|
||||||
<div class="col-md-12">
|
|
||||||
<div class="panel panel-default drop-shadow">
|
|
||||||
<div class="panel-heading">Local Events</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
|
|
||||||
<table id="event-device-table" class="table table-hover table-condensed">
|
|
||||||
<thead>
|
|
||||||
<th class="col-md-4">Name</th>
|
|
||||||
<th class="col-md-3">Type</th>
|
|
||||||
<th class="col-md-1">Data</th>
|
|
||||||
<th class="col-md-2">Last Update</th>
|
|
||||||
<th class="col-md-2 text-right">Actions</th>
|
|
||||||
</thead>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
$(function (){
|
|
||||||
$(".toggle-switch").on("switchChange.bootstrapSwitch", function (event, state) {
|
|
||||||
$(this).closest('form').submit();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
updateDevices();
|
|
||||||
|
|
||||||
// Auto update
|
|
||||||
|
|
||||||
setInterval(function() {
|
|
||||||
updateDevices();
|
|
||||||
}, 3000);
|
|
||||||
|
|
||||||
function updateDevices() {
|
|
||||||
fetch('/api/event')
|
|
||||||
.then(response => response.json())
|
|
||||||
.then(data => {
|
|
||||||
var table = document.getElementById('event-device-table');
|
|
||||||
|
|
||||||
for (const deviceData of data) {
|
|
||||||
var row = Array.from(table.rows).find(row => row.dataset.deviceId == deviceData.id);
|
|
||||||
|
|
||||||
if (!row) {
|
|
||||||
row = table.insertRow();
|
|
||||||
row.insertCell(0);
|
|
||||||
row.insertCell(1);
|
|
||||||
row.insertCell(2);
|
|
||||||
row.insertCell(3);
|
|
||||||
row.insertCell(4);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update Cells
|
|
||||||
|
|
||||||
if (row.dataset.deviceId != deviceData.id || row.dataset.timestamp != deviceData.data?.timestamp) {
|
|
||||||
// Only update if data has changed
|
|
||||||
row.dataset.deviceId = deviceData.id;
|
|
||||||
row.cells[0].innerHTML = "<a href='?id=" + deviceData.id + "'>" + deviceData.name + "</a>";
|
|
||||||
row.cells[1].innerHTML = deviceData.configType;
|
|
||||||
row.cells[2].innerHTML = deviceData.data?.valueStr;
|
|
||||||
|
|
||||||
row.dataset.timestamp = deviceData.data?.timestamp;
|
|
||||||
row.cells[3].innerHTML = deviceData.data?.timestamp;
|
|
||||||
$(row.cells[3]).relTimestamp();
|
|
||||||
|
|
||||||
var actionHtml = "";
|
|
||||||
switch (deviceData.dataType) {
|
|
||||||
case "ColorEventData":
|
|
||||||
actionHtml =
|
|
||||||
'<input type="hidden" name="type" value="color">' +
|
|
||||||
'<input type="color" name="data" onchange="this.form.submit()" value="' + deviceData.data?.valueStr + '">';
|
|
||||||
break;
|
|
||||||
case "LevelEventData":
|
|
||||||
actionHtml =
|
|
||||||
'<input type="hidden" name="type" value="level">' +
|
|
||||||
'<input type="range" name="data" min="0" max="100" step="10" onchange="this.form.submit()" value="' + (deviceData.data?.value * 100) + '">';
|
|
||||||
break;
|
|
||||||
case "OnOffEventData":
|
|
||||||
actionHtml =
|
|
||||||
'<input type="hidden" name="type" value="on-off">' +
|
|
||||||
'<input class="toggle-switch" type="checkbox" name="data" data-on-color="danger" onchange="this.form.submit()" ' + (deviceData.data?.valueStr=="ON" ? "checked" : "") + '>';
|
|
||||||
//$(row.cells[4].querySelector('[type="checkbox"]')).bootstrapSwitch('state', deviceData.data?.value === 1, true);
|
|
||||||
break;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
row.cells[4].innerHTML = '<form method="POST">' +
|
|
||||||
'<input type="hidden" name="action" value="modify">' +
|
|
||||||
'<input type="hidden" name="action-id" value="' + deviceData.id + '">' +
|
|
||||||
'<div class="btn-toolbar pull-right">' + actionHtml + '</div>';
|
|
||||||
|
|
||||||
$(".toggle-switch").bootstrapSwitch({inverse: true, size: "mini"});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
@ -1,108 +0,0 @@
|
||||||
package se.hal.page;
|
|
||||||
|
|
||||||
import se.hal.EventControllerManager;
|
|
||||||
import se.hal.HalContext;
|
|
||||||
import se.hal.intf.HalEventData;
|
|
||||||
import se.hal.intf.HalWebPage;
|
|
||||||
import se.hal.struct.Event;
|
|
||||||
import se.hal.struct.devicedata.ColorEventData;
|
|
||||||
import se.hal.struct.devicedata.LevelEventData;
|
|
||||||
import se.hal.struct.devicedata.OnOffEventData;
|
|
||||||
import se.hal.util.DeviceNameComparator;
|
|
||||||
import se.hal.util.HistoryDataListSqlResult;
|
|
||||||
import se.hal.util.HistoryDataListSqlResult.HistoryData;
|
|
||||||
import zutil.ObjectUtil;
|
|
||||||
import zutil.db.DBConnection;
|
|
||||||
import zutil.io.file.FileUtil;
|
|
||||||
import zutil.log.LogUtil;
|
|
||||||
import zutil.parser.Templator;
|
|
||||||
|
|
||||||
import java.sql.PreparedStatement;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.logging.Logger;
|
|
||||||
|
|
||||||
public class EventOverviewWebPage extends HalWebPage {
|
|
||||||
private static final Logger logger = LogUtil.getLogger();
|
|
||||||
private static final int HISTORY_LIMIT = 200;
|
|
||||||
private static final String OVERVIEW_TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/event_overview.tmpl";
|
|
||||||
private static final String DETAIL_TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/event_detail.tmpl";
|
|
||||||
|
|
||||||
|
|
||||||
public EventOverviewWebPage() {
|
|
||||||
super("event_overview");
|
|
||||||
super.getRootNav().createSubNav("Events").createSubNav(this.getId(), "Overview");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Templator httpRespond(
|
|
||||||
Map<String, Object> session,
|
|
||||||
Map<String, String> cookie,
|
|
||||||
Map<String, String> request)
|
|
||||||
throws Exception{
|
|
||||||
|
|
||||||
DBConnection db = HalContext.getDB();
|
|
||||||
|
|
||||||
if ("modify".equals(request.get("action"))) {
|
|
||||||
int id = (ObjectUtil.isEmpty(request.get("action-id")) ? -1 : Integer.parseInt(request.get("action-id")));
|
|
||||||
|
|
||||||
// change event data
|
|
||||||
HalEventData eventData = null;
|
|
||||||
|
|
||||||
switch (request.get("type")) {
|
|
||||||
case "level":
|
|
||||||
eventData = new LevelEventData(Integer.parseInt(request.get("data")) / 100.0, 0);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "color":
|
|
||||||
eventData = new ColorEventData(request.get("data"), 0);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "on-off":
|
|
||||||
eventData = new OnOffEventData("on".equals(request.get("data")), 0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (id >= 0 && eventData != null) {
|
|
||||||
logger.info("Modifying Event(" + id + ") state: " + eventData.toString());
|
|
||||||
Event event = Event.getEvent(db, id);
|
|
||||||
EventControllerManager.getInstance().send(event, eventData);
|
|
||||||
} else {
|
|
||||||
logger.warning("Unable to process event change request for event " + id + ", data type most likely not supported: " + request.get("type"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int id = (ObjectUtil.isEmpty(request.get("id")) ? -1 : Integer.parseInt(request.get("id")));
|
|
||||||
|
|
||||||
// --------------------------------------
|
|
||||||
// Detailed page
|
|
||||||
// --------------------------------------
|
|
||||||
if (id >= 0) {
|
|
||||||
Event event = Event.getEvent(db, id);
|
|
||||||
|
|
||||||
// get history data
|
|
||||||
PreparedStatement stmt = db.getPreparedStatement(
|
|
||||||
"SELECT * FROM event_data_raw WHERE event_id == ? ORDER BY timestamp DESC LIMIT ?");
|
|
||||||
stmt.setLong(1, event.getId());
|
|
||||||
stmt.setLong(2, HISTORY_LIMIT);
|
|
||||||
List<HistoryData> history = DBConnection.exec(stmt, new HistoryDataListSqlResult());
|
|
||||||
|
|
||||||
Templator tmpl = new Templator(FileUtil.find(DETAIL_TEMPLATE));
|
|
||||||
tmpl.set("event", event);
|
|
||||||
tmpl.set("history", history);
|
|
||||||
return tmpl;
|
|
||||||
}
|
|
||||||
// --------------------------------------
|
|
||||||
// Overview page
|
|
||||||
// --------------------------------------
|
|
||||||
else {
|
|
||||||
List<Event> events = Event.getLocalEvents(db);
|
|
||||||
Collections.sort(events, DeviceNameComparator.getInstance());
|
|
||||||
|
|
||||||
Templator tmpl = new Templator(FileUtil.find(OVERVIEW_TEMPLATE));
|
|
||||||
tmpl.set("events", events);
|
|
||||||
return tmpl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -19,7 +19,6 @@
|
||||||
{"se.hal.intf.HalApiEndpoint": "se.hal.page.api.SensorApiEndpoint"},
|
{"se.hal.intf.HalApiEndpoint": "se.hal.page.api.SensorApiEndpoint"},
|
||||||
|
|
||||||
{"se.hal.intf.HalJavascriptModule": "se.hal.page.JavascriptModules"},
|
{"se.hal.intf.HalJavascriptModule": "se.hal.page.JavascriptModules"},
|
||||||
{"DISABLEDse.hal.intf.HalWebPage": "se.hal.page.EventOverviewWebPage"},
|
|
||||||
{"se.hal.intf.HalWebPage": "se.hal.page.EventConfigWebPage"},
|
{"se.hal.intf.HalWebPage": "se.hal.page.EventConfigWebPage"},
|
||||||
{"se.hal.intf.HalWebPage": "se.hal.page.PropertyConfigWebPage"},
|
{"se.hal.intf.HalWebPage": "se.hal.page.PropertyConfigWebPage"},
|
||||||
{"se.hal.intf.HalWebPage": "se.hal.page.PluginConfigWebPage"},
|
{"se.hal.intf.HalWebPage": "se.hal.page.PluginConfigWebPage"},
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue