Mercurial > code > home > repos > homeauto
annotate service/mqtt_to_rdf/src/index.ts @ 1640:4bb6f593ebf3
speedups: abort some rules faster
author | drewp@bigasterisk.com |
---|---|
date | Wed, 15 Sep 2021 23:56:02 -0700 |
parents | 24e8cd8fcdcd |
children | 2085ed9cfcc4 |
rev | line source |
---|---|
733
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
1 // for the web page |
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
2 export { DomBind } from "@polymer/polymer/lib/elements/dom-bind.js"; |
799
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
3 // export { StreamedGraph } from "streamed-graph"; |
733
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
4 |
1577
6ddc5e037f15
big fixes and rewrites. emitting rdf works, not influx export yet
drewp@bigasterisk.com
parents:
799
diff
changeset
|
5 import { LitElement, property, html, customElement, unsafeCSS } from "lit-element"; |
733
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
6 |
799
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
7 // import { Literal, N3Store } from "n3"; |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
8 // import { NamedNode, DataFactory } from "n3"; |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
9 // const { namedNode, literal } = DataFactory; |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
10 |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
11 // import { VersionedGraph } from "streamed-graph"; |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
12 import style from "./style.styl"; |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
13 // import { labelFromUri, graphLiteral, graphUriValue } from "./graph_access"; |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
14 |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
15 // const room = "http://projects.bigasterisk.com/room/"; |
733
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
16 |
799
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
17 // function asString(x: Literal | undefined): string { |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
18 // if (x && x.value) { |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
19 // return x.value; |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
20 // } |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
21 // return "(unknown)"; |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
22 // } |
733
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
23 |
799
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
24 interface GraphAtTime { |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
25 t: number; |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
26 n3: string; |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
27 } |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
28 interface Metric { |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
29 name: string; |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
30 labels: { [_: string]: string }; |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
31 value: string; |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
32 } |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
33 interface Subscribed { |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
34 topic: string; |
1628 | 35 recentMessageGraphs: GraphAtTime[]; |
36 recentMetrics: Metric[]; | |
799
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
37 currentOutputGraph: GraphAtTime; |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
38 } |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
39 interface PageData { |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
40 server: string; |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
41 messagesSeen: number; |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
42 subscribed: Subscribed[]; |
733
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
43 } |
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
44 |
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
45 @customElement("mqtt-to-rdf-page") |
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
46 export class MqttToRdfPage extends LitElement { |
799
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
47 static get styles() { |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
48 return unsafeCSS(style); |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
49 } |
733
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
50 |
799
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
51 // @property({ type: Object }) |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
52 // graph!: VersionedGraph; |
733
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
53 |
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
54 connectedCallback() { |
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
55 super.connectedCallback(); |
799
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
56 const data = new EventSource("debugPageData"); |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
57 data.addEventListener("message", (ev: { data: string }) => { |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
58 this.pageData = JSON.parse(ev.data) as PageData; |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
59 console.log("data update"); |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
60 }); |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
61 // const sg = this.ownerDocument!.querySelector("streamed-graph"); |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
62 // sg?.addEventListener("graph-changed", ((ev: CustomEvent) => { |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
63 // this.graph = ev.detail!.value as VersionedGraph; |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
64 // }) as EventListener); |
733
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
65 } |
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
66 |
799
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
67 // static get observers() { |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
68 // return ["onGraphChanged(graph)"]; |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
69 // } |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
70 |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
71 @property({}) |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
72 pageData: PageData = { |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
73 server: "loading...", |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
74 messagesSeen: 0, |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
75 subscribed: [ |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
76 { |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
77 topic: "top1", |
1628 | 78 recentMessageGraphs: [], |
79 recentMetrics: [], | |
799
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
80 currentOutputGraph: { t: 1, n3: "(n3)" }, |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
81 }, |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
82 ], |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
83 }; |
733
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
84 |
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
85 render() { |
799
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
86 const d = this.pageData; |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
87 const now = Date.now() / 1000; |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
88 const ago = (t: number) => html`${Math.round(now - t)}s ago`; |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
89 const topicItem = (t: Subscribed, index: number) => |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
90 html`<div class="topic" style="grid-column: 1; grid-row: ${index + 2}"> |
1628 | 91 <span class="topic">${t.topic} sticky this to graph column</span> |
799
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
92 </div>`; |
733
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
93 |
1628 | 94 const parsedGraphAtTime = (g: GraphAtTime) => html` <div class="graph">graph: ${g.n3}</div> `; |
95 const recentMessageGraphs = (t: Subscribed, index: number) => | |
96 html` <div style="grid-column: 2; grid-row: ${index + 2}">${t.recentMessageGraphs.map(parsedGraphAtTime)}</div> `; | |
733
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
97 |
1577
6ddc5e037f15
big fixes and rewrites. emitting rdf works, not influx export yet
drewp@bigasterisk.com
parents:
799
diff
changeset
|
98 const metric = (m: Metric) => html`<div>metrix ${m.name} ${JSON.stringify(m.labels)} = ${m.value}</div>`; |
1628 | 99 const outputMetrics = (t: Subscribed, index: number) => html` <div style="grid-column: 3; grid-row: ${index + 2}">${t.recentMetrics.map(metric)}</div> `; |
799
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
100 const outputGraph = (t: Subscribed, index: number) => |
1628 | 101 html` <div style="grid-column: 4; grid-row: ${index + 2}">${parsedGraphAtTime(t.currentOutputGraph)}</div> `; |
799
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
102 return html` |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
103 <h1>mqtt_to_rdf</h1> |
733
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
104 |
1577
6ddc5e037f15
big fixes and rewrites. emitting rdf works, not influx export yet
drewp@bigasterisk.com
parents:
799
diff
changeset
|
105 <section>connected to ${d.server}; messages received ${d.messagesSeen}</section> |
799
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
106 |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
107 <div class="grid"> |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
108 <div class="hd" style="grid-row: 1; grid-column: 1">subscribed topics</div> |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
109 ${d.subscribed.map(topicItem)} |
733
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
110 |
1628 | 111 <div class="hd" style="grid-row: 1; grid-column: 2">recent incoming messages</div> |
112 ${d.subscribed.map(recentMessageGraphs)} | |
733
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
113 |
1628 | 114 <div class="hd" style="grid-row: 1; grid-column: 3">output metrics: prom collection according to converted graph</div> |
799
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
115 ${d.subscribed.map(outputMetrics)} |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
116 |
1628 | 117 <div class="hd" style="grid-row: 1; grid-column: 4">output subgraph</div> |
799
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
118 ${d.subscribed.map(outputGraph)} |
e0e623c01a69
ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents:
733
diff
changeset
|
119 </section> |
733
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
120 `; |
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
121 } |
9ca69f2be87b
more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff
changeset
|
122 } |