annotate service/collector/static/state.js @ 1465:9d22aa924e8a

prettier times. new streamed-graph browse link Ignore-this: beb72354711b5b68777f622c28fea740 darcs-hash:f86e69afb36753d1afc51f92b5c75ba80b5055d6
author drewp <drewp@bigasterisk.com>
date Wed, 18 Dec 2019 17:23:34 -0800
parents 71684fc9c692
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1451
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
1 import { LitElement, TemplateResult, html, css } from '/lib/lit-element/2.2.0/lit-element-custom.js';
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
2
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
3 class CollectorState extends LitElement {
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
4 static get properties() {
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
5 return {
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
6 latestState: { type: Object }
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
7 };
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
8 }
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
9 firstUpdated() {
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
10 this.latestState = {graphClients: {}};
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
11 this.refreshLoop();
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
12 }
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
13
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
14 refreshLoop() {
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
15 setTimeout(() => {
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
16 requestAnimationFrame(() => {
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
17 this.refresh();
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
18 });
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
19 }, 5000);
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
20 }
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
21
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
22 refresh() {
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
23 fetch('state')
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
24 .then((response) => {
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
25 return response.json();
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
26 })
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
27 .then((newState) => {
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
28 this.latestState = newState;
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
29 this.refreshLoop();
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
30 });
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
31 }
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
32
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
33 static get styles() {
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
34 return css`
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
35 :host {
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
36 display: inline-block;
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
37 border: 2px solid gray;
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
38 padding: 5px;
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
39 }`;
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
40 }
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
41
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
42 render() {
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
43 const sourcesTable = (clients) => {
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
44 const clientRow = (client) => {
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
45 const d = client.reconnectedPatchSource;
1465
9d22aa924e8a prettier times. new streamed-graph browse link
drewp <drewp@bigasterisk.com>
parents: 1451
diff changeset
46 const now = Date.now() / 1000;
9d22aa924e8a prettier times. new streamed-graph browse link
drewp <drewp@bigasterisk.com>
parents: 1451
diff changeset
47 const dispSec = (sec) => (
9d22aa924e8a prettier times. new streamed-graph browse link
drewp <drewp@bigasterisk.com>
parents: 1451
diff changeset
48 Math.abs(sec) > now - 1 ? '--' :
9d22aa924e8a prettier times. new streamed-graph browse link
drewp <drewp@bigasterisk.com>
parents: 1451
diff changeset
49 Math.abs(sec) > 3600 ?
9d22aa924e8a prettier times. new streamed-graph browse link
drewp <drewp@bigasterisk.com>
parents: 1451
diff changeset
50 `${Math.round(sec/3600)} hr` : Math.abs(sec) > 60 ?
9d22aa924e8a prettier times. new streamed-graph browse link
drewp <drewp@bigasterisk.com>
parents: 1451
diff changeset
51 `${Math.round(sec/60)} min` :
9d22aa924e8a prettier times. new streamed-graph browse link
drewp <drewp@bigasterisk.com>
parents: 1451
diff changeset
52 `${Math.round(sec*10)/10} sec`);
1451
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
53 return html`
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
54 <tr>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
55 <td><a href="/rdf/browse/?graph=${d.url}">[browse]</a> <a href="${d.url}">${d.url}</a></td>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
56 <td>${d.fullGraphReceived}</td>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
57 <td>${d.patchesReceived}</td>
1465
9d22aa924e8a prettier times. new streamed-graph browse link
drewp <drewp@bigasterisk.com>
parents: 1451
diff changeset
58 <td>${dispSec(d.time.open - now)}</td>
9d22aa924e8a prettier times. new streamed-graph browse link
drewp <drewp@bigasterisk.com>
parents: 1451
diff changeset
59 <td>${dispSec(d.time.fullGraph - d.time.open)}</td>
9d22aa924e8a prettier times. new streamed-graph browse link
drewp <drewp@bigasterisk.com>
parents: 1451
diff changeset
60 <td>${dispSec(d.time.latestPatch - now)}</td>
1451
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
61 </tr>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
62 `;
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
63 };
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
64
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
65 return html`
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
66 <table>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
67 <thead>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
68 <tr>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
69 <th>patch source</th>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
70 <th>full graph recv</th>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
71 <th>patches recv</th>
1465
9d22aa924e8a prettier times. new streamed-graph browse link
drewp <drewp@bigasterisk.com>
parents: 1451
diff changeset
72 <th>time open (rel)</th>
9d22aa924e8a prettier times. new streamed-graph browse link
drewp <drewp@bigasterisk.com>
parents: 1451
diff changeset
73 <th>time fullGraph (after open)</th>
9d22aa924e8a prettier times. new streamed-graph browse link
drewp <drewp@bigasterisk.com>
parents: 1451
diff changeset
74 <th>time latest patch (rel)</th>
1451
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
75 </tr>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
76 </thead>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
77 <tbody>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
78 ${clients.map(clientRow)}
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
79 </tbody>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
80 </table>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
81 `;
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
82 };
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
83
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
84 const handlersTable = (handlers) => {
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
85 const handlerRow = (d) => {
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
86 return html`
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
87 <tr>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
88 <td>${d.created}</td>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
89 <td>${d.ageHours}</td>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
90 <td><a href="/rdf/browse/?graph=/sse_collector/graph/${d.streamId}">${d.streamId}</a></td>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
91 <td>${d.foafAgent}</td>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
92 <td>${d.userAgent}</td>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
93 </tr>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
94 `;
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
95 };
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
96
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
97 return html`
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
98 <table>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
99 <thead>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
100 <tr>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
101 <th>created</th>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
102 <th>age hours</th>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
103 <th>stream</th>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
104 <th>foaf agent</th>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
105 <th>user agent</th>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
106 </tr>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
107 </thead>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
108 <tbody>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
109 ${handlers.map(handlerRow)}
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
110 </tbody>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
111 </table>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
112 `;
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
113 };
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
114
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
115 if (!this.latestState) {
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
116 return 'loading...';
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
117 }
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
118 const d = this.latestState.graphClients;
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
119 return html`
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
120 <div>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
121 <p>
1465
9d22aa924e8a prettier times. new streamed-graph browse link
drewp <drewp@bigasterisk.com>
parents: 1451
diff changeset
122 Graph: ${d.statements ? d.statements.len : 0} statements
1451
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
123 </p>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
124
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
125 <p>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
126 Sources:
1465
9d22aa924e8a prettier times. new streamed-graph browse link
drewp <drewp@bigasterisk.com>
parents: 1451
diff changeset
127 ${sourcesTable(d.clients || [])}
1451
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
128 </p>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
129
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
130 <p>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
131 Listening clients:
1465
9d22aa924e8a prettier times. new streamed-graph browse link
drewp <drewp@bigasterisk.com>
parents: 1451
diff changeset
132 ${handlersTable(d.sseHandlers || [])}
1451
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
133 </p>
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
134 </div>`;
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
135 }
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
136 }
71684fc9c692 new index page table
drewp <drewp@bigasterisk.com>
parents:
diff changeset
137 customElements.define('collector-state', CollectorState);