update web
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
parent
7ed2babd22
commit
39b574a47d
|
@ -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";
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -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) => {
|
||||||
|
|
|
@ -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) => {
|
||||||
|
|
|
@ -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(
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
Reference in New Issue