import { t } from "@lingui/macro"; import { CSSResult, customElement, html, property, TemplateResult } from "lit-element"; import { AKResponse } from "../../api/Client"; import { TablePage } from "../../elements/table/TablePage"; import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; import "../../elements/buttons/SpinnerButton"; import "../../elements/buttons/ActionButton"; import { TableColumn } from "../../elements/table/Table"; import { AdminApi, Task, StatusEnum } from "@goauthentik/api"; import { DEFAULT_CONFIG } from "../../api/Config"; import { PFColor } from "../../elements/Label"; @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); } 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``; case StatusEnum.Warning: return html``; case StatusEnum.Error: return html``; default: return html``; } } 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, }); }} > ${t`Retry Task`} `, ]; } }