Mercurial > code > home > repos > mqtt_metrics
annotate src/main.ts @ 1:3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
author | drewp@bigasterisk.com |
---|---|
date | Fri, 09 Aug 2024 16:59:06 -0700 |
parents | 0b5b4ede1bf5 |
children | 579df3a4e62d |
rev | line source |
---|---|
1
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
1 import { LitElement, PropertyValues, TemplateResult, css, html } from "lit"; |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
2 import { customElement, property, state } from "lit/decorators.js"; |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
3 |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
4 type ConversionEvent = { |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
5 message: { |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
6 t: number; |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
7 topic: string; |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
8 payload: string; |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
9 }; |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
10 metricEvent: { |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
11 name: string; |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
12 labels: { |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
13 labelName: string; |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
14 labelValue: string; |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
15 }[]; |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
16 value: string; |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
17 }; |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
18 }; |
0
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
19 |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
20 @customElement("mm-page") |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
21 export class MmPage extends LitElement { |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
22 static styles = [ |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
23 css` |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
24 :host { |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
25 display: flex; |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
26 flex-direction: column; |
1
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
27 min-height: 100vh; |
0
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
28 background: #121212; |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
29 color: white; |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
30 text-shadow: 0.6px 0.6px 0px #ffffff70; |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
31 font-family: monospace; |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
32 font-size: 135%; |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
33 } |
1
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
34 `, |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
35 ]; |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
36 @state() displayedMessages: ConversionEvent[] = []; |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
37 |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
38 protected firstUpdated(_changedProperties: PropertyValues): void { |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
39 super.firstUpdated(_changedProperties); |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
40 new EventSource("api/debugEvents").addEventListener("message", (ev) => { |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
41 this.displayedMessages.push(JSON.parse(ev.data)); |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
42 const maxShown = 20; |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
43 if (this.displayedMessages.length > maxShown) { |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
44 this.displayedMessages = this.displayedMessages.slice(-maxShown); |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
45 } |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
46 this.requestUpdate(); |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
47 }); |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
48 } |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
49 |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
50 render() { |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
51 return html` |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
52 <h1>Mqtt metrics</h1> |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
53 |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
54 ${this.displayedMessages.map((ev) => html`<mm-conversion-event .ev=${ev}></mm-conversion-event>`)} |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
55 <p><a href="metrics">metrics</a> |</p> |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
56 <bigast-loginbar></bigast-loginbar> |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
57 `; |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
58 } |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
59 } |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
60 |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
61 @customElement("mm-conversion-event") |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
62 export class MmConversionEvent extends LitElement { |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
63 static styles = [ |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
64 css` |
0
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
65 div.message { |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
66 color: #888; |
1
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
67 margin-bottom: 1em; |
0
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
68 } |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
69 .msgKey { |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
70 color: #006699; |
1
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
71 padding-left: 1em; |
0
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
72 } |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
73 .msgValue { |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
74 color: #ff4500; |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
75 } |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
76 .metricName { |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
77 color: #008000; |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
78 } |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
79 .metricLabelName { |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
80 color: #9400d3; |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
81 } |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
82 .metricLabelValue { |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
83 color: #ffc125; |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
84 } |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
85 .metricValue { |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
86 color: #4169e1; |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
87 } |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
88 `, |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
89 ]; |
1
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
90 @property() ev?: ConversionEvent; |
0
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
91 render() { |
1
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
92 if (!this.ev) return html``; |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
93 const ev = this.ev; |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
94 const t = new Date(ev.message.t * 1000); |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
95 return html`<div class="message"> |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
96 <div> |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
97 Incoming mqtt message: |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
98 <span class="msgKey">t</span>=<span class="msgValue"> ${t.toLocaleString("sv")} </span> <span class="msgKey">topic</span>=<span class="msgValue" |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
99 >${ev.message.topic}</span |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
100 > |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
101 <span class="msgKey">message</span>=<span class="msgValue">${ev.message.payload}</span> |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
102 </div> |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
103 <div> |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
104 Converted to metric: |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
105 <span class="metricName">${ev.metricEvent.name}</span> |
0
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
106 |
1
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
107 {${ev.metricEvent.labels.map( |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
108 (l, i) => html` |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
109 <span class="metricLabelName">${l.labelName}</span>=<span class="metricLabelValue">${l.labelValue}</span> |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
110 |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
111 ${i < ev.metricEvent.labels.length - 1 ? "," : "}"} |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
112 ` |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
113 )} |
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
114 value=<span class="metricValue">${ev.metricEvent.value}</span> |
0
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
115 </div> |
1
3d7f2dc9beec
read 1 mqtt topic; dummy convert; route to debugging view
drewp@bigasterisk.com
parents:
0
diff
changeset
|
116 </div>`; |
0
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
117 } |
0b5b4ede1bf5
start with a mockup of the debugging display
drewp@bigasterisk.com
parents:
diff
changeset
|
118 } |