annotate service/mqtt_to_rdf/src/index.ts @ 1602:e3c44ac6d3c5

do findEvals once at setRules time
author drewp@bigasterisk.com
date Mon, 06 Sep 2021 00:56:13 -0700
parents 6ddc5e037f15
children 24e8cd8fcdcd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 Msg {
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 msg: 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 GraphAtTime {
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
29 t: number;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
30 n3: string;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
31 }
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
32 interface Metric {
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
33 name: string;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
34 labels: { [_: string]: string };
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
35 value: string;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
36 }
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
37 interface Subscribed {
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
38 topic: string;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
39 recentMessages: Msg[];
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
40 recentParsed: GraphAtTime[];
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
41 recentConversions: GraphAtTime[];
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
42 currentMetrics: Metric[];
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
43 currentOutputGraph: GraphAtTime;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
44 }
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
45 interface PageData {
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
46 server: string;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
47 messagesSeen: number;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
48 subscribed: Subscribed[];
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
49 }
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
50
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
51 @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
52 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
53 static get styles() {
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
54 return unsafeCSS(style);
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
55 }
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
56
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
57 // @property({ type: Object })
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
58 // graph!: VersionedGraph;
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
59
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
60 connectedCallback() {
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
61 super.connectedCallback();
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
62 const data = new EventSource("debugPageData");
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
63 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
64 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
65 console.log("data update");
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
66 });
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
67 // 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
68 // 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
69 // 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
70 // }) as EventListener);
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
71 }
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
72
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
73 // static get observers() {
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
74 // return ["onGraphChanged(graph)"];
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
75 // }
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 @property({})
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
78 pageData: PageData = {
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
79 server: "loading...",
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
80 messagesSeen: 0,
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
81 subscribed: [
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 topic: "top1",
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
84 recentMessages: [
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
85 { t: 123456, msg: "one" },
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
86 { t: 234567, msg: "two" },
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
87 ],
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
88 recentParsed: [{ t: 123, n3: ":a :b :c ." }],
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
89 recentConversions: [],
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
90 currentMetrics: [],
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
91 currentOutputGraph: { t: 1, n3: "(n3)" },
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
92 },
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
93 ],
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
94 };
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
95
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
96 render() {
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
97 const d = this.pageData;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
98 const now = Date.now() / 1000;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
99 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
100 const recentMsg = (m: Msg) => html` <div>${ago(m.t)} msg=${m.msg}</div> `;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
101 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
102 html`<div class="topic" style="grid-column: 1; grid-row: ${index + 2}">
1577
6ddc5e037f15 big fixes and rewrites. emitting rdf works, not influx export yet
drewp@bigasterisk.com
parents: 799
diff changeset
103 <span class="topic">${t.topic}</span>
6ddc5e037f15 big fixes and rewrites. emitting rdf works, not influx export yet
drewp@bigasterisk.com
parents: 799
diff changeset
104 ${t.recentMessages.map(recentMsg)}
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
105 </div>`;
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
106
1577
6ddc5e037f15 big fixes and rewrites. emitting rdf works, not influx export yet
drewp@bigasterisk.com
parents: 799
diff changeset
107 const parsedMessage = (g: GraphAtTime) => html` <div class="graph">graph: ${g.n3}</div> `;
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
108 const parsedMessages = (t: Subscribed, index: number) =>
1577
6ddc5e037f15 big fixes and rewrites. emitting rdf works, not influx export yet
drewp@bigasterisk.com
parents: 799
diff changeset
109 html` <div style="grid-column: 2; grid-row: ${index + 2}">${t.recentParsed.map(parsedMessage)}</div> `;
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
110
1577
6ddc5e037f15 big fixes and rewrites. emitting rdf works, not influx export yet
drewp@bigasterisk.com
parents: 799
diff changeset
111 const metric = (m: Metric) => html`<div>metrix ${m.name} ${JSON.stringify(m.labels)} = ${m.value}</div>`;
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
112 const conversions = (t: Subscribed, index: number) =>
1577
6ddc5e037f15 big fixes and rewrites. emitting rdf works, not influx export yet
drewp@bigasterisk.com
parents: 799
diff changeset
113 html` <div style="grid-column: 3; grid-row: ${index + 2}">${t.recentConversions.map(parsedMessage)}</div> `;
6ddc5e037f15 big fixes and rewrites. emitting rdf works, not influx export yet
drewp@bigasterisk.com
parents: 799
diff changeset
114 const outputMetrics = (t: Subscribed, index: number) => html` <div style="grid-column: 4; grid-row: ${index + 2}">${t.currentMetrics.map(metric)}</div> `;
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
115 const outputGraph = (t: Subscribed, index: number) =>
1577
6ddc5e037f15 big fixes and rewrites. emitting rdf works, not influx export yet
drewp@bigasterisk.com
parents: 799
diff changeset
116 html` <div style="grid-column: 5; grid-row: ${index + 2}">${parsedMessage(t.currentOutputGraph)}</div> `;
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
117 return html`
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
118 <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
119
1577
6ddc5e037f15 big fixes and rewrites. emitting rdf works, not influx export yet
drewp@bigasterisk.com
parents: 799
diff changeset
120 <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
121
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
122 <div class="grid">
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
123 <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
124 ${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
125
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
126 <div class="hd" style="grid-row: 1; grid-column: 2">parsed message: rx stream of Graph</div>
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
127 ${d.subscribed.map(parsedMessages)}
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
128
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
129 <div class="hd" style="grid-row: 1; grid-column: 3">conversions: rx stream (possible separate times from the previous) of Callable[[Graph], Graph]</div>
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
130 ${d.subscribed.map(conversions)}
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
131
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
132 <div class="hd" style="grid-row: 1; grid-column: 4">output metrics: prom collection according to converted graph</div>
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
133 ${d.subscribed.map(outputMetrics)}
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
134
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
135 <div class="hd" style="grid-row: 1; grid-column: 5">output graph: PatchableGraph</div>
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
136 ${d.subscribed.map(outputGraph)}
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
137 </section>
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
138 `;
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
139 }
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
140 }