update web

Signed-off-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
Jens Langhammer 2024-01-13 21:07:46 +01:00
parent 7ed2babd22
commit 39b574a47d
No known key found for this signature in database
17 changed files with 10381 additions and 10391 deletions

View File

@ -6,7 +6,7 @@ import { ChartData, ChartOptions } from "chart.js";
import { msg } from "@lit/localize"; import { msg } from "@lit/localize";
import { customElement } from "lit/decorators.js"; import { customElement } from "lit/decorators.js";
import { ProvidersApi, SourcesApi, TaskStatusEnum } from "@goauthentik/api"; import { ProvidersApi, SourcesApi, SystemTaskStatusEnum } from "@goauthentik/api";
export interface SyncStatus { export interface SyncStatus {
healthy: number; healthy: number;
@ -49,12 +49,12 @@ export class LDAPSyncStatusChart extends AKChart<SyncStatus[]> {
}); });
health.tasks.forEach((task) => { health.tasks.forEach((task) => {
if (task.status !== TaskStatusEnum.Successful) { if (task.status !== SystemTaskStatusEnum.Successful) {
metrics.failed += 1; metrics.failed += 1;
} }
const now = new Date().getTime(); const now = new Date().getTime();
const maxDelta = 3600000; // 1 hour const maxDelta = 3600000; // 1 hour
if (!health || now - task.taskFinishTimestamp.getTime() > maxDelta) { if (!health || now - task.finishTimestamp.getTime() > maxDelta) {
metrics.unsynced += 1; metrics.unsynced += 1;
} else { } else {
metrics.healthy += 1; metrics.healthy += 1;
@ -94,12 +94,12 @@ export class LDAPSyncStatusChart extends AKChart<SyncStatus[]> {
id: element.pk, id: element.pk,
}); });
health.tasks.forEach((task) => { health.tasks.forEach((task) => {
if (task.status !== TaskStatusEnum.Successful) { if (task.status !== SystemTaskStatusEnum.Successful) {
sourceKey = "failed"; sourceKey = "failed";
} }
const now = new Date().getTime(); const now = new Date().getTime();
const maxDelta = 3600000; // 1 hour const maxDelta = 3600000; // 1 hour
if (!health || now - task.taskFinishTimestamp.getTime() > maxDelta) { if (!health || now - task.finishTimestamp.getTime() > maxDelta) {
sourceKey = "unsynced"; sourceKey = "unsynced";
} }
}); });

View File

@ -32,7 +32,7 @@ import {
RbacPermissionsAssignedByUsersListModelEnum, RbacPermissionsAssignedByUsersListModelEnum,
SCIMProvider, SCIMProvider,
SCIMSyncStatus, SCIMSyncStatus,
TaskStatusEnum, SystemTaskStatusEnum,
} from "@goauthentik/api"; } from "@goauthentik/api";
@customElement("ak-provider-scim-view") @customElement("ak-provider-scim-view")
@ -143,15 +143,15 @@ export class SCIMProviderViewPage extends AKElement {
<ul class="pf-c-list"> <ul class="pf-c-list">
${this.syncState.tasks.map((task) => { ${this.syncState.tasks.map((task) => {
let header = ""; let header = "";
if (task.status === TaskStatusEnum.Warning) { if (task.status === SystemTaskStatusEnum.Warning) {
header = msg("Task finished with warnings"); header = msg("Task finished with warnings");
} else if (task.status === TaskStatusEnum.Error) { } else if (task.status === SystemTaskStatusEnum.Error) {
header = msg("Task finished with errors"); header = msg("Task finished with errors");
} else { } else {
header = msg(str`Last sync: ${task.taskFinishTimestamp.toLocaleString()}`); header = msg(str`Last sync: ${task.finishTimestamp.toLocaleString()}`);
} }
return html`<li> return html`<li>
<p>${task.taskName}</p> <p>${task.name}</p>
<ul class="pf-c-list"> <ul class="pf-c-list">
<li>${header}</li> <li>${header}</li>
${task.messages.map((m) => { ${task.messages.map((m) => {

View File

@ -29,7 +29,7 @@ import {
LDAPSyncStatus, LDAPSyncStatus,
RbacPermissionsAssignedByUsersListModelEnum, RbacPermissionsAssignedByUsersListModelEnum,
SourcesApi, SourcesApi,
TaskStatusEnum, SystemTaskStatusEnum,
} from "@goauthentik/api"; } from "@goauthentik/api";
@customElement("ak-source-ldap-view") @customElement("ak-source-ldap-view")
@ -77,15 +77,15 @@ export class LDAPSourceViewPage extends AKElement {
<ul class="pf-c-list"> <ul class="pf-c-list">
${this.syncState.tasks.map((task) => { ${this.syncState.tasks.map((task) => {
let header = ""; let header = "";
if (task.status === TaskStatusEnum.Warning) { if (task.status === SystemTaskStatusEnum.Warning) {
header = msg("Task finished with warnings"); header = msg("Task finished with warnings");
} else if (task.status === TaskStatusEnum.Error) { } else if (task.status === SystemTaskStatusEnum.Error) {
header = msg("Task finished with errors"); header = msg("Task finished with errors");
} else { } else {
header = msg(str`Last sync: ${task.taskFinishTimestamp.toLocaleString()}`); header = msg(str`Last sync: ${task.finishTimestamp.toLocaleString()}`);
} }
return html`<li> return html`<li>
<p>${task.taskName}</p> <p>${task.name}</p>
<ul class="pf-c-list"> <ul class="pf-c-list">
<li>${header}</li> <li>${header}</li>
${task.messages.map((m) => { ${task.messages.map((m) => {

View File

@ -1,3 +1,4 @@
import { uiConfig } from "@goauthentik/app/common/ui/config";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { EVENT_REFRESH } from "@goauthentik/common/constants"; import { EVENT_REFRESH } from "@goauthentik/common/constants";
import { PFColor } from "@goauthentik/elements/Label"; import { PFColor } from "@goauthentik/elements/Label";
@ -14,13 +15,10 @@ import { customElement, property } from "lit/decorators.js";
import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css";
import { AdminApi, Task, TaskStatusEnum } from "@goauthentik/api"; import { EventsApi, SystemTask, SystemTaskStatusEnum } from "@goauthentik/api";
@customElement("ak-system-task-list") @customElement("ak-system-task-list")
export class SystemTaskListPage extends TablePage<Task> { export class SystemTaskListPage extends TablePage<SystemTask> {
searchEnabled(): boolean {
return false;
}
pageTitle(): string { pageTitle(): string {
return msg("System Tasks"); return msg("System Tasks");
} }
@ -34,53 +32,45 @@ export class SystemTaskListPage extends TablePage<Task> {
expandable = true; expandable = true;
@property() @property()
order = "slug"; order = "name";
static get styles(): CSSResult[] { static get styles(): CSSResult[] {
return super.styles.concat(PFDescriptionList); return super.styles.concat(PFDescriptionList);
} }
async apiEndpoint(page: number): Promise<PaginatedResponse<Task>> { async apiEndpoint(page: number): Promise<PaginatedResponse<SystemTask>> {
return new AdminApi(DEFAULT_CONFIG).adminSystemTasksList().then((tasks) => { return new EventsApi(DEFAULT_CONFIG).eventsSystemTasksList({
return { ordering: this.order,
pagination: { page: page,
count: tasks.length, pageSize: (await uiConfig()).pagination.perPage,
totalPages: 1, search: this.search || "",
startIndex: 1,
endIndex: tasks.length,
current: page,
next: 0,
previous: 0,
},
results: tasks,
};
}); });
} }
columns(): TableColumn[] { columns(): TableColumn[] {
return [ return [
new TableColumn(msg("Identifier")), new TableColumn(msg("Identifier"), "name"),
new TableColumn(msg("Description")), new TableColumn(msg("Description")),
new TableColumn(msg("Last run")), new TableColumn(msg("Last run")),
new TableColumn(msg("Status")), new TableColumn(msg("Status"), "status"),
new TableColumn(msg("Actions")), new TableColumn(msg("Actions")),
]; ];
} }
taskStatus(task: Task): TemplateResult { taskStatus(task: SystemTask): TemplateResult {
switch (task.status) { switch (task.status) {
case TaskStatusEnum.Successful: case SystemTaskStatusEnum.Successful:
return html`<ak-label color=${PFColor.Green}>${msg("Successful")}</ak-label>`; return html`<ak-label color=${PFColor.Green}>${msg("Successful")}</ak-label>`;
case TaskStatusEnum.Warning: case SystemTaskStatusEnum.Warning:
return html`<ak-label color=${PFColor.Orange}>${msg("Warning")}</ak-label>`; return html`<ak-label color=${PFColor.Orange}>${msg("Warning")}</ak-label>`;
case TaskStatusEnum.Error: case SystemTaskStatusEnum.Error:
return html`<ak-label color=${PFColor.Red}>${msg("Error")}</ak-label>`; return html`<ak-label color=${PFColor.Red}>${msg("Error")}</ak-label>`;
default: default:
return html`<ak-label color=${PFColor.Grey}>${msg("Unknown")}</ak-label>`; return html`<ak-label color=${PFColor.Grey}>${msg("Unknown")}</ak-label>`;
} }
} }
renderExpanded(item: Task): TemplateResult { renderExpanded(item: SystemTask): TemplateResult {
return html` <td role="cell" colspan="3"> return html` <td role="cell" colspan="3">
<div class="pf-c-table__expandable-row-content"> <div class="pf-c-table__expandable-row-content">
<dl class="pf-c-description-list pf-m-horizontal"> <dl class="pf-c-description-list pf-m-horizontal">
@ -90,7 +80,7 @@ export class SystemTaskListPage extends TablePage<Task> {
</dt> </dt>
<dd class="pf-c-description-list__description"> <dd class="pf-c-description-list__description">
<div class="pf-c-description-list__text"> <div class="pf-c-description-list__text">
${msg(str`${item.taskDuration.toFixed(2)} seconds`)} ${msg(str`${item.duration.toFixed(2)} seconds`)}
</div> </div>
</dd> </dd>
</div> </div>
@ -113,18 +103,18 @@ export class SystemTaskListPage extends TablePage<Task> {
<td></td>`; <td></td>`;
} }
row(item: Task): TemplateResult[] { row(item: SystemTask): TemplateResult[] {
return [ return [
html`${item.taskName}`, html`${item.name}${item.uid ? `:${item.uid}` : ""}`,
html`${item.taskDescription}`, html`${item.description}`,
html`${item.taskFinishTimestamp.toLocaleString()}`, html`${item.finishTimestamp.toLocaleString()}`,
this.taskStatus(item), this.taskStatus(item),
html`<ak-action-button html`<ak-action-button
class="pf-m-plain" class="pf-m-plain"
.apiRequest=${() => { .apiRequest=${() => {
return new AdminApi(DEFAULT_CONFIG) return new EventsApi(DEFAULT_CONFIG)
.adminSystemTasksRetryCreate({ .eventsSystemTasksRetryCreate({
id: item.taskName, uuid: item.uuid,
}) })
.then(() => { .then(() => {
this.dispatchEvent( this.dispatchEvent(

View File

@ -602,7 +602,7 @@
<source>Duration</source> <source>Duration</source>
</trans-unit> </trans-unit>
<trans-unit id="se7e1ababbc4868b8"> <trans-unit id="se7e1ababbc4868b8">
<source><x id="0" equiv-text="${item.taskDuration.toFixed(2)}"/> seconds</source> <source><x id="0" equiv-text="${item.duration.toFixed(2)}"/> seconds</source>
</trans-unit> </trans-unit>
<trans-unit id="sc25edca57df81461"> <trans-unit id="sc25edca57df81461">
<source>Authentication</source> <source>Authentication</source>
@ -2557,9 +2557,9 @@ doesn't pass when either or both of the selected options are equal or above the
<target>Aufgabe mit Fehlern beendet</target> <target>Aufgabe mit Fehlern beendet</target>
</trans-unit> </trans-unit>
<trans-unit id="sbedb77365a066648"> <trans-unit id="sbedb77365a066648">
<source>Last sync: <x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></source> <source>Last sync: <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></source>
<target>Letzte Synchronisierung: <target>Letzte Synchronisierung:
<x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></target> <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="sf3fec8353106ac2f"> <trans-unit id="sf3fec8353106ac2f">
<source>OAuth Source <x id="0" equiv-text="${this.source.name}"/></source> <source>OAuth Source <x id="0" equiv-text="${this.source.name}"/></source>

View File

@ -617,9 +617,9 @@
<target>Duration</target> <target>Duration</target>
</trans-unit> </trans-unit>
<trans-unit id="se7e1ababbc4868b8"> <trans-unit id="se7e1ababbc4868b8">
<source><x id="0" equiv-text="${item.taskDuration.toFixed(2)}"/> seconds</source> <source><x id="0" equiv-text="${item.duration.toFixed(2)}"/> seconds</source>
<target> <target>
<x id="0" equiv-text="${item.taskDuration.toFixed(2)}"/>seconds</target> <x id="0" equiv-text="${item.duration.toFixed(2)}"/>seconds</target>
</trans-unit> </trans-unit>
<trans-unit id="sc25edca57df81461"> <trans-unit id="sc25edca57df81461">
<source>Authentication</source> <source>Authentication</source>
@ -2679,9 +2679,9 @@ doesn't pass when either or both of the selected options are equal or above the
<target>Task finished with errors</target> <target>Task finished with errors</target>
</trans-unit> </trans-unit>
<trans-unit id="sbedb77365a066648"> <trans-unit id="sbedb77365a066648">
<source>Last sync: <x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></source> <source>Last sync: <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></source>
<target>Last sync: <target>Last sync:
<x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></target> <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="sf3fec8353106ac2f"> <trans-unit id="sf3fec8353106ac2f">
<source>OAuth Source <x id="0" equiv-text="${this.source.name}"/></source> <source>OAuth Source <x id="0" equiv-text="${this.source.name}"/></source>

View File

@ -594,7 +594,7 @@
<source>Duration</source> <source>Duration</source>
</trans-unit> </trans-unit>
<trans-unit id="se7e1ababbc4868b8"> <trans-unit id="se7e1ababbc4868b8">
<source><x id="0" equiv-text="${item.taskDuration.toFixed(2)}"/> seconds</source> <source><x id="0" equiv-text="${item.duration.toFixed(2)}"/> seconds</source>
</trans-unit> </trans-unit>
<trans-unit id="sc25edca57df81461"> <trans-unit id="sc25edca57df81461">
<source>Authentication</source> <source>Authentication</source>
@ -2517,9 +2517,9 @@ doesn't pass when either or both of the selected options are equal or above the
<target>La tarea ha finalizado con errores</target> <target>La tarea ha finalizado con errores</target>
</trans-unit> </trans-unit>
<trans-unit id="sbedb77365a066648"> <trans-unit id="sbedb77365a066648">
<source>Last sync: <x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></source> <source>Last sync: <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></source>
<target>Última sincronización: <target>Última sincronización:
<x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></target> <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="sf3fec8353106ac2f"> <trans-unit id="sf3fec8353106ac2f">
<source>OAuth Source <x id="0" equiv-text="${this.source.name}"/></source> <source>OAuth Source <x id="0" equiv-text="${this.source.name}"/></source>

View File

@ -766,9 +766,9 @@ Il y a <x id="0" equiv-text="${ago}"/> jour(s)</target>
</trans-unit> </trans-unit>
<trans-unit id="se7e1ababbc4868b8"> <trans-unit id="se7e1ababbc4868b8">
<source><x id="0" equiv-text="${item.taskDuration.toFixed(2)}"/> seconds</source> <source><x id="0" equiv-text="${item.duration.toFixed(2)}"/> seconds</source>
<target> <target>
<x id="0" equiv-text="${item.taskDuration.toFixed(2)}"/>secondes</target> <x id="0" equiv-text="${item.duration.toFixed(2)}"/>secondes</target>
</trans-unit> </trans-unit>
<trans-unit id="sc25edca57df81461"> <trans-unit id="sc25edca57df81461">
@ -3341,9 +3341,9 @@ doesn't pass when either or both of the selected options are equal or above the
</trans-unit> </trans-unit>
<trans-unit id="sbedb77365a066648"> <trans-unit id="sbedb77365a066648">
<source>Last sync: <x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></source> <source>Last sync: <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></source>
<target>Dernière synchro : <target>Dernière synchro :
<x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></target> <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="sf3fec8353106ac2f"> <trans-unit id="sf3fec8353106ac2f">

View File

@ -763,9 +763,9 @@
</trans-unit> </trans-unit>
<trans-unit id="se7e1ababbc4868b8"> <trans-unit id="se7e1ababbc4868b8">
<source><x id="0" equiv-text="${item.taskDuration.toFixed(2)}"/> seconds</source> <source><x id="0" equiv-text="${item.duration.toFixed(2)}"/> seconds</source>
<target> <target>
<x id="0" equiv-text="${item.taskDuration.toFixed(2)}"/> 초</target> <x id="0" equiv-text="${item.duration.toFixed(2)}"/> 초</target>
</trans-unit> </trans-unit>
<trans-unit id="sc25edca57df81461"> <trans-unit id="sc25edca57df81461">
@ -3332,8 +3332,8 @@ doesn't pass when either or both of the selected options are equal or above the
</trans-unit> </trans-unit>
<trans-unit id="sbedb77365a066648"> <trans-unit id="sbedb77365a066648">
<source>Last sync: <x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></source> <source>Last sync: <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></source>
<target><x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/>에 마지막으로 동기화 됨</target> <target><x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/>에 마지막으로 동기화 됨</target>
</trans-unit> </trans-unit>
<trans-unit id="sf3fec8353106ac2f"> <trans-unit id="sf3fec8353106ac2f">

View File

@ -767,8 +767,8 @@
</trans-unit> </trans-unit>
<trans-unit id="se7e1ababbc4868b8"> <trans-unit id="se7e1ababbc4868b8">
<source><x id="0" equiv-text="${item.taskDuration.toFixed(2)}"/> seconds</source> <source><x id="0" equiv-text="${item.duration.toFixed(2)}"/> seconds</source>
<target><x id="0" equiv-text="${item.taskDuration.toFixed(2)}"/> seconden</target> <target><x id="0" equiv-text="${item.duration.toFixed(2)}"/> seconden</target>
</trans-unit> </trans-unit>
<trans-unit id="sc25edca57df81461"> <trans-unit id="sc25edca57df81461">
@ -3580,8 +3580,8 @@ slaagt niet wanneer een of beide geselecteerde opties gelijk zijn aan of boven d
</trans-unit> </trans-unit>
<trans-unit id="sbedb77365a066648"> <trans-unit id="sbedb77365a066648">
<source>Last sync: <x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></source> <source>Last sync: <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></source>
<target>Laatste synchronisatie: <x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></target> <target>Laatste synchronisatie: <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="sf3fec8353106ac2f"> <trans-unit id="sf3fec8353106ac2f">

View File

@ -604,7 +604,7 @@
<source>Duration</source> <source>Duration</source>
</trans-unit> </trans-unit>
<trans-unit id="se7e1ababbc4868b8"> <trans-unit id="se7e1ababbc4868b8">
<source><x id="0" equiv-text="${item.taskDuration.toFixed(2)}"/> seconds</source> <source><x id="0" equiv-text="${item.duration.toFixed(2)}"/> seconds</source>
</trans-unit> </trans-unit>
<trans-unit id="sc25edca57df81461"> <trans-unit id="sc25edca57df81461">
<source>Authentication</source> <source>Authentication</source>
@ -2601,9 +2601,9 @@ doesn't pass when either or both of the selected options are equal or above the
<target>Zadanie zakończone z błędami</target> <target>Zadanie zakończone z błędami</target>
</trans-unit> </trans-unit>
<trans-unit id="sbedb77365a066648"> <trans-unit id="sbedb77365a066648">
<source>Last sync: <x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></source> <source>Last sync: <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></source>
<target>Ostatnia synchronizacja: <target>Ostatnia synchronizacja:
<x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></target> <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="sf3fec8353106ac2f"> <trans-unit id="sf3fec8353106ac2f">
<source>OAuth Source <x id="0" equiv-text="${this.source.name}"/></source> <source>OAuth Source <x id="0" equiv-text="${this.source.name}"/></source>

View File

@ -753,8 +753,8 @@
</trans-unit> </trans-unit>
<trans-unit id="se7e1ababbc4868b8"> <trans-unit id="se7e1ababbc4868b8">
<source><x id="0" equiv-text="${item.taskDuration.toFixed(2)}"/> seconds</source> <source><x id="0" equiv-text="${item.duration.toFixed(2)}"/> seconds</source>
<target><x id="0" equiv-text="${item.taskDuration.toFixed(2)}"/> śēćōńďś</target> <target><x id="0" equiv-text="${item.duration.toFixed(2)}"/> śēćōńďś</target>
</trans-unit> </trans-unit>
<trans-unit id="sc25edca57df81461"> <trans-unit id="sc25edca57df81461">
@ -3320,8 +3320,8 @@ doesn't pass when either or both of the selected options are equal or above the
</trans-unit> </trans-unit>
<trans-unit id="sbedb77365a066648"> <trans-unit id="sbedb77365a066648">
<source>Last sync: <x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></source> <source>Last sync: <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></source>
<target>Ĺàśţ śŷńć: <x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></target> <target>Ĺàśţ śŷńć: <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="sf3fec8353106ac2f"> <trans-unit id="sf3fec8353106ac2f">

View File

@ -594,7 +594,7 @@
<source>Duration</source> <source>Duration</source>
</trans-unit> </trans-unit>
<trans-unit id="se7e1ababbc4868b8"> <trans-unit id="se7e1ababbc4868b8">
<source><x id="0" equiv-text="${item.taskDuration.toFixed(2)}"/> seconds</source> <source><x id="0" equiv-text="${item.duration.toFixed(2)}"/> seconds</source>
</trans-unit> </trans-unit>
<trans-unit id="sc25edca57df81461"> <trans-unit id="sc25edca57df81461">
<source>Authentication</source> <source>Authentication</source>
@ -2516,9 +2516,9 @@ doesn't pass when either or both of the selected options are equal or above the
<target>Görev hatalarla tamamlandı</target> <target>Görev hatalarla tamamlandı</target>
</trans-unit> </trans-unit>
<trans-unit id="sbedb77365a066648"> <trans-unit id="sbedb77365a066648">
<source>Last sync: <x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></source> <source>Last sync: <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></source>
<target>Son senkronizasyon: <target>Son senkronizasyon:
<x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></target> <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="sf3fec8353106ac2f"> <trans-unit id="sf3fec8353106ac2f">
<source>OAuth Source <x id="0" equiv-text="${this.source.name}"/></source> <source>OAuth Source <x id="0" equiv-text="${this.source.name}"/></source>

View File

@ -766,9 +766,9 @@
</trans-unit> </trans-unit>
<trans-unit id="se7e1ababbc4868b8"> <trans-unit id="se7e1ababbc4868b8">
<source><x id="0" equiv-text="${item.taskDuration.toFixed(2)}"/> seconds</source> <source><x id="0" equiv-text="${item.duration.toFixed(2)}"/> seconds</source>
<target> <target>
<x id="0" equiv-text="${item.taskDuration.toFixed(2)}"/>秒</target> <x id="0" equiv-text="${item.duration.toFixed(2)}"/>秒</target>
</trans-unit> </trans-unit>
<trans-unit id="sc25edca57df81461"> <trans-unit id="sc25edca57df81461">
@ -3343,9 +3343,9 @@ doesn't pass when either or both of the selected options are equal or above the
</trans-unit> </trans-unit>
<trans-unit id="sbedb77365a066648"> <trans-unit id="sbedb77365a066648">
<source>Last sync: <x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></source> <source>Last sync: <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></source>
<target>上次同步: <target>上次同步:
<x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></target> <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="sf3fec8353106ac2f"> <trans-unit id="sf3fec8353106ac2f">

View File

@ -601,7 +601,7 @@
<source>Duration</source> <source>Duration</source>
</trans-unit> </trans-unit>
<trans-unit id="se7e1ababbc4868b8"> <trans-unit id="se7e1ababbc4868b8">
<source><x id="0" equiv-text="${item.taskDuration.toFixed(2)}"/> seconds</source> <source><x id="0" equiv-text="${item.duration.toFixed(2)}"/> seconds</source>
</trans-unit> </trans-unit>
<trans-unit id="sc25edca57df81461"> <trans-unit id="sc25edca57df81461">
<source>Authentication</source> <source>Authentication</source>
@ -2538,9 +2538,9 @@ doesn't pass when either or both of the selected options are equal or above the
<target>任务已完成,但出现错误</target> <target>任务已完成,但出现错误</target>
</trans-unit> </trans-unit>
<trans-unit id="sbedb77365a066648"> <trans-unit id="sbedb77365a066648">
<source>Last sync: <x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></source> <source>Last sync: <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></source>
<target>上次同步: <target>上次同步:
<x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></target> <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="sf3fec8353106ac2f"> <trans-unit id="sf3fec8353106ac2f">
<source>OAuth Source <x id="0" equiv-text="${this.source.name}"/></source> <source>OAuth Source <x id="0" equiv-text="${this.source.name}"/></source>

View File

@ -766,9 +766,9 @@
</trans-unit> </trans-unit>
<trans-unit id="se7e1ababbc4868b8"> <trans-unit id="se7e1ababbc4868b8">
<source><x id="0" equiv-text="${item.taskDuration.toFixed(2)}"/> seconds</source> <source><x id="0" equiv-text="${item.duration.toFixed(2)}"/> seconds</source>
<target> <target>
<x id="0" equiv-text="${item.taskDuration.toFixed(2)}"/>秒</target> <x id="0" equiv-text="${item.duration.toFixed(2)}"/>秒</target>
</trans-unit> </trans-unit>
<trans-unit id="sc25edca57df81461"> <trans-unit id="sc25edca57df81461">
@ -3343,9 +3343,9 @@ doesn't pass when either or both of the selected options are equal or above the
</trans-unit> </trans-unit>
<trans-unit id="sbedb77365a066648"> <trans-unit id="sbedb77365a066648">
<source>Last sync: <x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></source> <source>Last sync: <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></source>
<target>上次同步: <target>上次同步:
<x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></target> <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="sf3fec8353106ac2f"> <trans-unit id="sf3fec8353106ac2f">

View File

@ -754,8 +754,8 @@
</trans-unit> </trans-unit>
<trans-unit id="se7e1ababbc4868b8"> <trans-unit id="se7e1ababbc4868b8">
<source><x id="0" equiv-text="${item.taskDuration.toFixed(2)}"/> seconds</source> <source><x id="0" equiv-text="${item.duration.toFixed(2)}"/> seconds</source>
<target><x id="0" equiv-text="${item.taskDuration.toFixed(2)}"/> 秒</target> <target><x id="0" equiv-text="${item.duration.toFixed(2)}"/> 秒</target>
</trans-unit> </trans-unit>
<trans-unit id="sc25edca57df81461"> <trans-unit id="sc25edca57df81461">
@ -3320,8 +3320,8 @@ doesn't pass when either or both of the selected options are equal or above the
</trans-unit> </trans-unit>
<trans-unit id="sbedb77365a066648"> <trans-unit id="sbedb77365a066648">
<source>Last sync: <x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></source> <source>Last sync: <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></source>
<target>上次同步: <x id="0" equiv-text="${task.taskFinishTimestamp.toLocaleString()}"/></target> <target>上次同步: <x id="0" equiv-text="${task.finishTimestamp.toLocaleString()}"/></target>
</trans-unit> </trans-unit>
<trans-unit id="sf3fec8353106ac2f"> <trans-unit id="sf3fec8353106ac2f">