| /** |
| * @module modules/bugs-status-sk |
| * @description <h2><code>bugs-status-sk</code></h2> |
| * |
| * Custom element to display untriaged Skia bugs. |
| */ |
| import { define } from 'elements-sk/define'; |
| import { errorMessage } from 'elements-sk/errorMessage'; |
| import { html, TemplateResult } from 'lit-html'; |
| import { jsonOrThrow } from 'common-sk/modules/jsonOrThrow'; |
| import { ElementSk } from '../../../infra-sk/modules/ElementSk'; |
| import { GetClientCountsResponse } from '../../../bugs-central/modules/json'; |
| |
| const bugsCentralUrl = 'https://bugs-central.skia.org'; |
| |
| export class BugsStatusSk extends ElementSk { |
| private resp?: GetClientCountsResponse; |
| |
| constructor() { |
| super(BugsStatusSk.template); |
| } |
| |
| private static template = (el: BugsStatusSk) => html` |
| <div class="table"> |
| ${el.resp && el.resp.clients_to_status_data |
| ? el.displayBugsData() |
| : html``} |
| </div> |
| `; |
| |
| displayBugsData(): TemplateResult[] { |
| const rows: TemplateResult[] = []; |
| Object.keys(this.resp!.clients_to_status_data!).forEach((client: string) => |
| rows.push(html` |
| <a |
| class="tr" |
| href="${this.resp!.clients_to_status_data![client].link}" |
| target="_blank" |
| rel="noopener noreferrer" |
| title="Untriaged ${client!} bugs count" |
| > |
| <div class="td">${client!}</div> |
| <div class="td number"> |
| <span class="value" |
| >${this.resp!.clients_to_status_data![client] |
| .untriaged_count}</span |
| > |
| </div> |
| </a> |
| `) |
| ); |
| return rows; |
| } |
| |
| connectedCallback(): void { |
| super.connectedCallback(); |
| this._render(); |
| this.refresh(); |
| } |
| |
| private refresh() { |
| fetch(`${bugsCentralUrl}/get_client_counts`, { method: 'GET' }) |
| .then(jsonOrThrow) |
| .then((json: GetClientCountsResponse) => { |
| this.resp = json; |
| this._render(); |
| }) |
| .catch(errorMessage) |
| .finally(() => { |
| window.setTimeout(() => this.refresh(), 60 * 1000); |
| }); |
| } |
| } |
| |
| define('bugs-status-sk', BugsStatusSk); |