Mercurial > code > home > repos > homeauto
view service/collector/static/state.js @ 1451:71684fc9c692
new index page table
Ignore-this: 7668675a04bd5cc03cf4e1799c54d4d1
darcs-hash:5b546637d01f1fa70134c09470007ed1251d708c
author | drewp <drewp@bigasterisk.com> |
---|---|
date | Wed, 25 Sep 2019 17:27:35 -0700 |
parents | |
children | 25b418e2659e |
line wrap: on
line source
import { LitElement, TemplateResult, html, css } from '/lib/lit-element/2.2.0/lit-element-custom.js'; class CollectorState extends LitElement { static get properties() { return { latestState: { type: Object } }; } firstUpdated() { this.latestState = {graphClients: {}}; this.refreshLoop(); } refreshLoop() { setTimeout(() => { requestAnimationFrame(() => { this.refresh(); }); }, 5000); } refresh() { fetch('state') .then((response) => { return response.json(); }) .then((newState) => { this.latestState = newState; this.refreshLoop(); }); } static get styles() { return css` :host { display: inline-block; border: 2px solid gray; padding: 5px; }`; } render() { const sourcesTable = (clients) => { const clientRow = (client) => { const d = client.reconnectedPatchSource; return html` <tr> <td><a href="/rdf/browse/?graph=${d.url}">[browse]</a> <a href="${d.url}">${d.url}</a></td> <td>${d.fullGraphReceived}</td> <td>${d.patchesReceived}</td> <td>${d.time.open}</td> <td>${d.time.fullGraph}</td> <td>${d.time.latestPatch}</td> </tr> `; }; return html` <table> <thead> <tr> <th>patch source</th> <th>full graph recv</th> <th>patches recv</th> <th>time open</th> <th>time fullGraph</th> <th>time latest patch</th> </tr> </thead> <tbody> ${clients.map(clientRow)} </tbody> </table> `; }; const handlersTable = (handlers) => { const handlerRow = (d) => { return html` <tr> <td>${d.created}</td> <td>${d.ageHours}</td> <td><a href="/rdf/browse/?graph=/sse_collector/graph/${d.streamId}">${d.streamId}</a></td> <td>${d.foafAgent}</td> <td>${d.userAgent}</td> </tr> `; }; return html` <table> <thead> <tr> <th>created</th> <th>age hours</th> <th>stream</th> <th>foaf agent</th> <th>user agent</th> </tr> </thead> <tbody> ${handlers.map(handlerRow)} </tbody> </table> `; }; if (!this.latestState) { return 'loading...'; } const d = this.latestState.graphClients; return html` <div> <p> Graph: ${d.statements.len} statements </p> <p> Sources: ${sourcesTable(d.clients)} </p> <p> Listening clients: ${handlersTable(d.sseHandlers)} </p> </div>`; } } customElements.define('collector-state', CollectorState);