import { formatElapsedTime } from "@goauthentik/common/temporal"; import { AKElement } from "@goauthentik/elements/Base"; import { PFColor } from "@goauthentik/elements/Label"; import "@goauthentik/elements/Spinner"; import { msg, str } from "@lit/localize"; import { CSSResult, TemplateResult, css, html } from "lit"; import { customElement, property } from "lit/decorators.js"; import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; import PFBase from "@patternfly/patternfly/patternfly-base.css"; import { OutpostHealth } from "@goauthentik/api"; @customElement("ak-outpost-health") export class OutpostHealthElement extends AKElement { @property({ attribute: false }) outpostHealth?: OutpostHealth; static get styles(): CSSResult[] { return [ PFBase, PFDescriptionList, css` li { margin: 5px 0; } `, ]; } render(): TemplateResult { if (!this.outpostHealth) { return html``; } let versionString = this.outpostHealth.version; if (this.outpostHealth.buildHash) { versionString = msg( str`${versionString} (build ${this.outpostHealth.buildHash.substring(0, 8)})`, ); } if (this.outpostHealth.fipsEnabled) { versionString = msg(str`${versionString} (FIPS)`); } return html`
${msg("Last seen")}
${msg( str`${formatElapsedTime(this.outpostHealth.lastSeen)} (${this.outpostHealth.lastSeen?.toLocaleTimeString()})`, )}
${msg("Version")}
${this.outpostHealth.versionOutdated ? html`${msg( str`${this.outpostHealth.version}, should be ${this.outpostHealth.versionShould}`, )} ` : html`${versionString} `}
${msg("Hostname")}
${this.outpostHealth.hostname}
`; } } declare global { interface HTMLElementTagNameMap { "ak-outpost-health": OutpostHealthElement; } }