annotate service/collector/static/state.js @ 663:25b418e2659e

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