From 87913dfd280c76c243f388f1b4dc5af90a2b5619 Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Fri, 22 Jan 2016 10:52:28 +0100 Subject: [PATCH] Added Event overview page. issue 5 Former-commit-id: 6ee75491189dc68b53b928436ef5d06a81b81568 --- src/se/hal/HalServer.java | 2 + src/se/hal/page/EventOverviewHttpPage.java | 85 ++++++++++++++++++++++ web-resource/event_detail.tmpl | 22 ++++++ web-resource/event_overview.tmpl | 37 ++++++++++ 4 files changed, 146 insertions(+) create mode 100755 src/se/hal/page/EventOverviewHttpPage.java create mode 100755 web-resource/event_detail.tmpl create mode 100755 web-resource/event_overview.tmpl diff --git a/src/se/hal/HalServer.java b/src/se/hal/HalServer.java index da3637b2..2fc13ded 100755 --- a/src/se/hal/HalServer.java +++ b/src/se/hal/HalServer.java @@ -82,6 +82,8 @@ public class HalServer { new PCOverviewHttpPage(), new PCHeatMapHttpPage(), new SensorConfigHttpPage(), + + new EventOverviewHttpPage(), new EventConfigHttpPage(), new UserConfigHttpPage(), }; diff --git a/src/se/hal/page/EventOverviewHttpPage.java b/src/se/hal/page/EventOverviewHttpPage.java new file mode 100755 index 00000000..d157dafa --- /dev/null +++ b/src/se/hal/page/EventOverviewHttpPage.java @@ -0,0 +1,85 @@ +package se.hal.page; + +import se.hal.ControllerManager; +import se.hal.HalContext; +import se.hal.intf.HalEventData; +import se.hal.intf.HalHttpPage; +import se.hal.struct.Event; +import se.hal.struct.User; +import zutil.db.DBConnection; +import zutil.db.SQLResultHandler; +import zutil.io.file.FileUtil; +import zutil.parser.Templator; +import zutil.ui.Configurator; +import zutil.ui.Configurator.ConfigurationParam; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class EventOverviewHttpPage extends HalHttpPage { + private static final String OVERVIEW_TEMPLATE = "web-resource/event_overview.tmpl"; + private static final String DETAIL_TEMPLATE = "web-resource/event_detail.tmpl"; + + + public EventOverviewHttpPage(){ + super("Overview", "event_overview"); + super.getRootNav().getSubNav("events").addSubNav(super.getNav()); + } + + @Override + public Templator httpRespond( + Map session, + Map cookie, + Map request) + throws Exception{ + + DBConnection db = HalContext.getDB(); + + // Save new input + if(request.containsKey("id")){ + int id = Integer.parseInt(request.get("id")); + Event event = Event.getEvent(db, id); + + // get history data + PreparedStatement stmt = db.getPreparedStatement("SELECT * FROM event_data_raw WHERE event_id == ?"); + stmt.setLong(1, event.getId()); + List history = DBConnection.exec(stmt, new HistoryDataListSqlResult()); + + Templator tmpl = new Templator(FileUtil.find(DETAIL_TEMPLATE)); + tmpl.set("event", event); + tmpl.set("history", history); + return tmpl; + } + else { + Templator tmpl = new Templator(FileUtil.find(OVERVIEW_TEMPLATE)); + tmpl.set("events", Event.getLocalEvents(db)); + return tmpl; + } + } + + + + protected static class HistoryData{ + public long timestamp; + public double data; + } + + protected class HistoryDataListSqlResult implements SQLResultHandler> { + @Override + public List handleQueryResult(Statement stmt, ResultSet result) throws SQLException { + ArrayList list = new ArrayList(); + while(result.next()){ + HistoryData data = new HistoryData(); + data.timestamp = result.getLong("timestamp"); + data.data = result.getLong("data"); + list.add(data); + } + return list; + } + } +} diff --git a/web-resource/event_detail.tmpl b/web-resource/event_detail.tmpl new file mode 100755 index 00000000..e0729ff0 --- /dev/null +++ b/web-resource/event_detail.tmpl @@ -0,0 +1,22 @@ +

Details for {{event.getName()}}

+ +
+
+
History data
+
+ + + + + + + {{#history}} + + + + + {{/history}} +
TimestampData
{{.timestamp}}{{.data()}}
+
+
+
diff --git a/web-resource/event_overview.tmpl b/web-resource/event_overview.tmpl new file mode 100755 index 00000000..c3952068 --- /dev/null +++ b/web-resource/event_overview.tmpl @@ -0,0 +1,37 @@ +

Event Overview

+ +
+
+
Local Events
+
+ + + + + + + + + {{#events}} + + + + + + + {{/events}} +
NameDataLast UpdateActions
{{.getName()}}{{.getData()}}updated 1 min ago +
+ + + +
+ +
+
+
+
+
+