annotate src/main.ts @ 0:4365c72c59f6

start
author drewp@bigasterisk.com
date Sun, 27 Aug 2023 11:12:20 -0700
parents
children 9eaa993ed373
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
drewp@bigasterisk.com
parents:
diff changeset
1 import { LitElement, TemplateResult, css, html } from "lit";
drewp@bigasterisk.com
parents:
diff changeset
2 import { customElement, property } from "lit/decorators.js";
drewp@bigasterisk.com
parents:
diff changeset
3 export { SgSource, SgView, StreamedGraph } from "@bigasterisk/streamed-graph";
drewp@bigasterisk.com
parents:
diff changeset
4
drewp@bigasterisk.com
parents:
diff changeset
5 @customElement("fd-page")
drewp@bigasterisk.com
parents:
diff changeset
6 export class FdPage extends LitElement {
drewp@bigasterisk.com
parents:
diff changeset
7 static styles = [
drewp@bigasterisk.com
parents:
diff changeset
8 css`
drewp@bigasterisk.com
parents:
diff changeset
9 :host {
drewp@bigasterisk.com
parents:
diff changeset
10 display: flex;
drewp@bigasterisk.com
parents:
diff changeset
11 flex-direction: column;
drewp@bigasterisk.com
parents:
diff changeset
12 height: 100vh;
drewp@bigasterisk.com
parents:
diff changeset
13 }
drewp@bigasterisk.com
parents:
diff changeset
14 button {
drewp@bigasterisk.com
parents:
diff changeset
15 margin: 10px;
drewp@bigasterisk.com
parents:
diff changeset
16 padding: 20px;
drewp@bigasterisk.com
parents:
diff changeset
17 }
drewp@bigasterisk.com
parents:
diff changeset
18 `,
drewp@bigasterisk.com
parents:
diff changeset
19 ];
drewp@bigasterisk.com
parents:
diff changeset
20 @property() status: {} = { "loading...": "" };
drewp@bigasterisk.com
parents:
diff changeset
21 @property() lastCommand: {} = { command: "none" };
drewp@bigasterisk.com
parents:
diff changeset
22 connectedCallback(): void {
drewp@bigasterisk.com
parents:
diff changeset
23 super.connectedCallback();
drewp@bigasterisk.com
parents:
diff changeset
24 this.getStatus();
drewp@bigasterisk.com
parents:
diff changeset
25 }
drewp@bigasterisk.com
parents:
diff changeset
26
drewp@bigasterisk.com
parents:
diff changeset
27 async getStatus() {
drewp@bigasterisk.com
parents:
diff changeset
28 this.status = await (await fetch("api/status")).json();
drewp@bigasterisk.com
parents:
diff changeset
29 setTimeout(() => {
drewp@bigasterisk.com
parents:
diff changeset
30 requestAnimationFrame(() => {
drewp@bigasterisk.com
parents:
diff changeset
31 this.getStatus();
drewp@bigasterisk.com
parents:
diff changeset
32 });
drewp@bigasterisk.com
parents:
diff changeset
33 }, 1000);
drewp@bigasterisk.com
parents:
diff changeset
34 }
drewp@bigasterisk.com
parents:
diff changeset
35 render() {
drewp@bigasterisk.com
parents:
diff changeset
36 return html`
drewp@bigasterisk.com
parents:
diff changeset
37 <h1>Front door lock</h1>
drewp@bigasterisk.com
parents:
diff changeset
38
drewp@bigasterisk.com
parents:
diff changeset
39 <div>Status: ${JSON.stringify(this.status)} ${JSON.stringify(this.lastCommand)}</div>
drewp@bigasterisk.com
parents:
diff changeset
40 <div>
drewp@bigasterisk.com
parents:
diff changeset
41 <button @click=${() => this.simple("unlock")}>Unlock</button>
drewp@bigasterisk.com
parents:
diff changeset
42 <button @click=${() => this.simple("stayUnlocked")}>Unlock and stay unlocked</button>
drewp@bigasterisk.com
parents:
diff changeset
43 <button @click=${() => this.simple("lock")}>Lock</button>
drewp@bigasterisk.com
parents:
diff changeset
44 </div>
drewp@bigasterisk.com
parents:
diff changeset
45 <streamed-graph expanded="true">
drewp@bigasterisk.com
parents:
diff changeset
46 <sg-source url="./api/graph"></sg-source>
drewp@bigasterisk.com
parents:
diff changeset
47 <sg-source url="./view.n3"></sg-source>
drewp@bigasterisk.com
parents:
diff changeset
48 <sg-view uri="#view"></sg-view>
drewp@bigasterisk.com
parents:
diff changeset
49 </streamed-graph>
drewp@bigasterisk.com
parents:
diff changeset
50 <p>
drewp@bigasterisk.com
parents:
diff changeset
51 <a href="metrics">metrics</a> |
drewp@bigasterisk.com
parents:
diff changeset
52 <a href="api/graph">graph</a>
drewp@bigasterisk.com
parents:
diff changeset
53 </p>
drewp@bigasterisk.com
parents:
diff changeset
54 <bigast-loginbar></bigast-loginbar>
drewp@bigasterisk.com
parents:
diff changeset
55 `;
drewp@bigasterisk.com
parents:
diff changeset
56 }
drewp@bigasterisk.com
parents:
diff changeset
57 async simple(command: string) {
drewp@bigasterisk.com
parents:
diff changeset
58 const t1 = Date.now();
drewp@bigasterisk.com
parents:
diff changeset
59 this.lastCommand = { command: command, sentAt: t1 };
drewp@bigasterisk.com
parents:
diff changeset
60 var status;
drewp@bigasterisk.com
parents:
diff changeset
61 try {
drewp@bigasterisk.com
parents:
diff changeset
62 const resp = await fetch(`api/simple/${command}`, { method: "PUT" });
drewp@bigasterisk.com
parents:
diff changeset
63 status = resp.status;
drewp@bigasterisk.com
parents:
diff changeset
64 } catch (e) {
drewp@bigasterisk.com
parents:
diff changeset
65 status = "" + e;
drewp@bigasterisk.com
parents:
diff changeset
66 }
drewp@bigasterisk.com
parents:
diff changeset
67 const t2 = Date.now();
drewp@bigasterisk.com
parents:
diff changeset
68 this.lastCommand = { command: command, sentAt: t1, tookMs: t2 - t1, status: status };
drewp@bigasterisk.com
parents:
diff changeset
69 }
drewp@bigasterisk.com
parents:
diff changeset
70 }