improve ui

Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
This commit is contained in:
Marc 'risson' Schmitt
2025-04-04 17:40:04 +02:00
parent 8a073e8c60
commit a43a0f77fb
4 changed files with 39 additions and 13 deletions

View File

@ -6,12 +6,15 @@ from rest_framework.mixins import (
from rest_framework.viewsets import GenericViewSet
from authentik.core.api.utils import ModelSerializer
from authentik.events.logs import LogEventSerializer
from authentik.tasks.models import Task
from authentik.tasks.schedules.models import Schedule
from authentik.tenants.utils import get_current_tenant
class TaskSerializer(ModelSerializer):
messages = LogEventSerializer(many=True)
class Meta:
model = Task
fields = [
@ -22,6 +25,7 @@ class TaskSerializer(ModelSerializer):
"mtime",
"schedule_uid",
"uid",
"messages",
]

View File

@ -57855,8 +57855,13 @@ components:
type: string
uid:
type: string
messages:
type: array
items:
$ref: '#/components/schemas/LogEvent'
required:
- actor_name
- messages
Tenant:
type: object
description: Tenant Serializer

View File

@ -1,9 +1,9 @@
import "@goauthentik/admin/policies/BoundPoliciesList";
import "@goauthentik/admin/providers/rac/EndpointForm";
import "@goauthentik/admin/rbac/ObjectPermissionModal";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { getRelativeTime } from "@goauthentik/common/utils";
import { PFColor } from "@goauthentik/elements/Label";
import "@goauthentik/elements/buttons/SpinnerButton";
import "@goauthentik/elements/events/LogViewer";
import "@goauthentik/elements/forms/DeleteBulkForm";
import "@goauthentik/elements/forms/ModalForm";
import { PaginatedResponse, Table } from "@goauthentik/elements/table/Table";
@ -16,7 +16,7 @@ import { customElement, property } from "lit/decorators.js";
import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css";
import { Schedule, Task, TasksApi } from "@goauthentik/api";
import { Schedule, Task, TasksApi, TasksTasksListStateEnum } from "@goauthentik/api";
@customElement("ak-task-list")
export class TaskList extends Table<Task> {
@ -48,13 +48,29 @@ export class TaskList extends Table<Task> {
columns(): TableColumn[] {
return [
new TableColumn(msg("Task")),
new TableColumn(msg("Queue")),
new TableColumn(msg("Last updated")),
new TableColumn(msg("Task"), "actor_name"),
new TableColumn(msg("Queue"), "queue_name"),
new TableColumn(msg("Last updated"), "mtime"),
new TableColumn(msg("State"), "state"),
new TableColumn(msg("Actions")),
];
}
taskState(task: Task): TemplateResult {
switch (task.state) {
case TasksTasksListStateEnum.Queued:
return html`<ak-label color=${PFColor.Grey}>${msg("Waiting to run")}</ak-label>`;
case TasksTasksListStateEnum.Consumed:
return html`<ak-label color=${PFColor.Blue}>${msg("Running")}</ak-label>`;
case TasksTasksListStateEnum.Done:
return html`<ak-label color=${PFColor.Green}>${msg("Successful")}</ak-label>`;
case TasksTasksListStateEnum.Rejected:
return html`<ak-label color=${PFColor.Red}>${msg("Error")}</ak-label>`;
default:
return html`<ak-label color=${PFColor.Grey}>${msg("Unknown")}</ak-label>`;
}
}
row(item: Task): TemplateResult[] {
return [
html`<div>${item.actorName}</div>
@ -62,19 +78,19 @@ export class TaskList extends Table<Task> {
html`${item.queueName}`,
html`<div>${getRelativeTime(item.mtime)}</div>
<small>${item.mtime.toLocaleString()}</small>`,
this.taskState(item),
html``,
];
}
renderExpanded(item: Task): TemplateResult {
return html` <td></td>
<td role="cell" colspan="12">
<div class="pf-c-table__expandable-row-content">
<div class="pf-c-content">
<p>TODO: ${item.actorName}</p>
</div>
return html` <td role="cell" colspan="3">
<div class="pf-c-table__expandable-row-content">
<div class="pf-c-content">
<ak-log-viewer .logs=${item?.messages}></ak-log-viewer>
</div>
</td>`;
</div>
</td>`;
}
}

View File

@ -13,6 +13,7 @@ export enum PFColor {
Green = "pf-m-green",
Orange = "pf-m-orange",
Red = "pf-m-red",
Blue = "pf-m-blue",
Grey = "",
}