import { t } from "@lingui/macro"; import { CSSResult, TemplateResult, html } from "lit"; import { customElement, property } from "lit/decorators.js"; import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; import { AdminApi, StatusEnum, Task } from "@goauthentik/api"; import { AKResponse } from "../../api/Client"; import { DEFAULT_CONFIG } from "../../api/Config"; import { EVENT_REFRESH } from "../../constants"; import { PFColor } from "../../elements/Label"; import "../../elements/buttons/ActionButton"; import "../../elements/buttons/SpinnerButton"; import { TableColumn } from "../../elements/table/Table"; import { TablePage } from "../../elements/table/TablePage"; @customElement("ak-system-task-list") export class SystemTaskListPage extends TablePage { searchEnabled(): boolean { return false; } pageTitle(): string { return t`System Tasks`; } pageDescription(): string { return t`Long-running operations which authentik executes in the background.`; } pageIcon(): string { return "pf-icon pf-icon-automation"; } expandable = true; @property() order = "slug"; static get styles(): CSSResult[] { return super.styles.concat(PFDescriptionList); } async apiEndpoint(page: number): Promise> { return new AdminApi(DEFAULT_CONFIG).adminSystemTasksList().then((tasks) => { return { pagination: { count: tasks.length, totalPages: 1, startIndex: 1, endIndex: tasks.length, current: page, }, results: tasks, }; }); } columns(): TableColumn[] { return [ new TableColumn(t`Identifier`), new TableColumn(t`Description`), new TableColumn(t`Last run`), new TableColumn(t`Status`), new TableColumn(t`Actions`), ]; } taskStatus(task: Task): TemplateResult { switch (task.status) { case StatusEnum.Successful: return html`${t`Successful`}`; case StatusEnum.Warning: return html`${t`Warning`}`; case StatusEnum.Error: return html`${t`Error`}`; default: return html`${t`Unknown`}`; } } renderExpanded(item: Task): TemplateResult { return html`
${t`Messages`}
${item.messages.map((m) => { return html`
  • ${m}
  • `; })}
    `; } row(item: Task): TemplateResult[] { return [ html`${item.taskName}`, html`${item.taskDescription}`, html`${item.taskFinishTimestamp.toLocaleString()}`, this.taskStatus(item), html` { return new AdminApi(DEFAULT_CONFIG) .adminSystemTasksRetryCreate({ id: item.taskName, }) .then(() => { this.dispatchEvent( new CustomEvent(EVENT_REFRESH, { bubbles: true, composed: true, }), ); }); }} > `, ]; } }