From 06529f7187075f2dd0d1d96ae19b807bc4bb06b1 Mon Sep 17 00:00:00 2001 From: Thomas Basler Date: Sat, 9 Jul 2022 12:44:13 +0200 Subject: [PATCH] Show eventlog in live view --- webapp/src/components/HomeView.vue | 73 +++++++++++++++++++-- webapp/src/components/partials/EventLog.vue | 57 ++++++++++++++++ 2 files changed, 125 insertions(+), 5 deletions(-) create mode 100644 webapp/src/components/partials/EventLog.vue diff --git a/webapp/src/components/HomeView.vue b/webapp/src/components/HomeView.vue index 938a8e8..a8ad859 100644 --- a/webapp/src/components/HomeView.vue +++ b/webapp/src/components/HomeView.vue @@ -23,13 +23,26 @@ :id="'v-pills-' + inverter.serial" role="tabpanel" :aria-labelledby="'v-pills-' + inverter.serial + '-tab'" tabindex="0">
-
+
{{ inverter.name }} (Inverter Serial Number: {{ inverter.serial }}) (Data Age: {{ inverter.data_age }} seconds) + +
@@ -47,6 +60,33 @@
+ + +
@@ -54,17 +94,20 @@ import { defineComponent } from 'vue'; import InverterChannelInfo from "@/components/partials/InverterChannelInfo.vue"; import * as bootstrap from 'bootstrap'; +import EventLog from '@/components/partials/EventLog.vue'; declare interface Inverter { serial: number, name: string, age_critical: boolean, - data_age: 0 + data_age: 0, + events: 0 } export default defineComponent({ components: { InverterChannelInfo, + EventLog }, data() { return { @@ -73,11 +116,17 @@ export default defineComponent({ waitForData: true, inverterData: [] as Inverter[], isFirstFetchAfterConnect: true, + eventLogView: {} as bootstrap.Modal, + eventLogList: {}, + eventLogLoading: true }; }, created() { this.initSocket(); }, + mounted() { + this.eventLogView = new bootstrap.Modal('#eventView'); + }, unmounted() { this.closeSocket(); }, @@ -140,6 +189,20 @@ export default defineComponent({ this.heartInterval && clearTimeout(this.heartInterval); this.isFirstFetchAfterConnect = true; }, + onHideEventlog() { + this.eventLogView.hide(); + }, + onShowEventlog(serial: number) { + this.eventLogLoading = true; + fetch("/api/eventlog/status") + .then((response) => response.json()) + .then((data) => { + this.eventLogList = data[serial]; + this.eventLogLoading = false; + }); + + this.eventLogView.show(); + }, }, }); \ No newline at end of file diff --git a/webapp/src/components/partials/EventLog.vue b/webapp/src/components/partials/EventLog.vue new file mode 100644 index 0000000..f8ebe32 --- /dev/null +++ b/webapp/src/components/partials/EventLog.vue @@ -0,0 +1,57 @@ + + + \ No newline at end of file