@acmekit/dashboard 2.13.22 → 2.13.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{api-key-management-list-UAKJG336.mjs → api-key-management-list-QK4Q7Y5I.mjs} +1 -1
- package/dist/app.js +23 -73
- package/dist/app.mjs +4 -5
- package/dist/{chunk-RSLTE3VD.mjs → chunk-QZOY6YYT.mjs} +1 -6
- package/dist/en.json +0 -1
- package/dist/{workflow-execution-detail-AWIFZJSL.mjs → workflow-execution-detail-5O5VCXL3.mjs} +2 -19
- package/dist/{workflow-execution-list-7QNA5LIH.mjs → workflow-execution-list-DETG4MRT.mjs} +24 -55
- package/package.json +9 -9
- package/src/i18n/translations/$schema.json +0 -4
- package/src/i18n/translations/en.json +0 -1
- package/src/routes/workflow-executions/workflow-execution-detail/components/workflow-execution-general-section/workflow-execution-general-section.tsx +10 -21
- package/src/routes/workflow-executions/workflow-execution-list/components/workflow-execution-list-table/use-workflow-execution-table-columns.tsx +23 -87
package/dist/app.js
CHANGED
|
@@ -7264,7 +7264,7 @@ var init_placeholder_cell2 = __esm({
|
|
|
7264
7264
|
});
|
|
7265
7265
|
|
|
7266
7266
|
// src/components/table/table-cells/common/date-cell/date-cell.tsx
|
|
7267
|
-
var import_ui53, import_react_i18next38, import_jsx_runtime72, DateCell
|
|
7267
|
+
var import_ui53, import_react_i18next38, import_jsx_runtime72, DateCell;
|
|
7268
7268
|
var init_date_cell = __esm({
|
|
7269
7269
|
"src/components/table/table-cells/common/date-cell/date-cell.tsx"() {
|
|
7270
7270
|
"use strict";
|
|
@@ -7290,10 +7290,6 @@ var init_date_cell = __esm({
|
|
|
7290
7290
|
}
|
|
7291
7291
|
) });
|
|
7292
7292
|
};
|
|
7293
|
-
DateHeader = () => {
|
|
7294
|
-
const { t: t3 } = (0, import_react_i18next38.useTranslation)();
|
|
7295
|
-
return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { className: "flex h-full w-full items-center", children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("span", { className: "truncate", children: t3("fields.date") }) });
|
|
7296
|
-
};
|
|
7297
7293
|
}
|
|
7298
7294
|
});
|
|
7299
7295
|
|
|
@@ -8549,24 +8545,13 @@ var init_use_workflow_execution_table_columns = __esm({
|
|
|
8549
8545
|
const { t: t3 } = (0, import_react_i18next47.useTranslation)();
|
|
8550
8546
|
return (0, import_react68.useMemo)(
|
|
8551
8547
|
() => [
|
|
8552
|
-
columnHelper5.accessor("
|
|
8553
|
-
header: t3("
|
|
8554
|
-
cell: ({ row }) => {
|
|
8555
|
-
const fullId = row.original.id;
|
|
8556
|
-
const cleanId = fullId.replace("wf_exec_", "");
|
|
8557
|
-
return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "flex items-center gap-x-1", children: [
|
|
8558
|
-
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "truncate", children: cleanId }),
|
|
8559
|
-
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_ui65.Copy, { content: fullId, className: "text-ui-fg-muted" })
|
|
8560
|
-
] });
|
|
8561
|
-
}
|
|
8562
|
-
}),
|
|
8563
|
-
columnHelper5.accessor("transaction_id", {
|
|
8564
|
-
header: t3("workflowExecutions.transactionIdLabel"),
|
|
8548
|
+
columnHelper5.accessor("workflow_id", {
|
|
8549
|
+
header: t3("workflowExecutions.workflowIdLabel"),
|
|
8565
8550
|
cell: ({ getValue: getValue2 }) => {
|
|
8566
|
-
const
|
|
8551
|
+
const workflowId = getValue2();
|
|
8567
8552
|
return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "flex items-center gap-x-1", children: [
|
|
8568
|
-
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_ui65.Badge, { size: "2xsmall", className: "truncate", children:
|
|
8569
|
-
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_ui65.Copy, { content:
|
|
8553
|
+
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_ui65.Badge, { size: "2xsmall", className: "truncate", children: workflowId }),
|
|
8554
|
+
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_ui65.Copy, { content: workflowId, className: "text-ui-fg-muted" })
|
|
8570
8555
|
] });
|
|
8571
8556
|
}
|
|
8572
8557
|
}),
|
|
@@ -8584,7 +8569,7 @@ var init_use_workflow_execution_table_columns = __esm({
|
|
|
8584
8569
|
cell: ({ getValue: getValue2 }) => {
|
|
8585
8570
|
const steps = getValue2()?.steps;
|
|
8586
8571
|
if (!steps) {
|
|
8587
|
-
return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "text-ui-fg-subtle", children: t3("workflowExecutions.stepsCompletedLabel", {
|
|
8572
|
+
return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "text-ui-fg-subtle whitespace-nowrap", children: t3("workflowExecutions.stepsCompletedLabel", {
|
|
8588
8573
|
completed: 0,
|
|
8589
8574
|
count: 0
|
|
8590
8575
|
}) });
|
|
@@ -8599,12 +8584,17 @@ var init_use_workflow_execution_table_columns = __esm({
|
|
|
8599
8584
|
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "flex items-center gap-x-[3px]", children: actionableSteps.map((step) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
|
|
8600
8585
|
"div",
|
|
8601
8586
|
{
|
|
8602
|
-
className:
|
|
8587
|
+
className: (0, import_ui65.clx)(
|
|
8588
|
+
"bg-ui-bg-switch-off shadow-details-switch-background h-3 w-1.5 rounded-full",
|
|
8589
|
+
{
|
|
8590
|
+
"bg-ui-fg-muted": step.invoke.state === "done" /* DONE */
|
|
8591
|
+
}
|
|
8592
|
+
),
|
|
8603
8593
|
"data-completed": step.invoke.state === "done" /* DONE */
|
|
8604
8594
|
},
|
|
8605
8595
|
step.id
|
|
8606
8596
|
)) }),
|
|
8607
|
-
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "text-ui-fg-subtle", children: t3("workflowExecutions.stepsCompletedLabel", {
|
|
8597
|
+
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "text-ui-fg-subtle whitespace-nowrap", children: t3("workflowExecutions.stepsCompletedLabel", {
|
|
8608
8598
|
completed: completedSteps.length,
|
|
8609
8599
|
count: actionableSteps.length
|
|
8610
8600
|
}) })
|
|
@@ -8638,49 +8628,25 @@ var init_use_workflow_execution_table_columns = __esm({
|
|
|
8638
8628
|
label = `${hours}h ${minutes % 60}m`;
|
|
8639
8629
|
} else if (minutes > 0) {
|
|
8640
8630
|
label = `${minutes}m ${seconds % 60}s`;
|
|
8641
|
-
} else {
|
|
8631
|
+
} else if (seconds > 0) {
|
|
8642
8632
|
label = `${seconds}s`;
|
|
8633
|
+
} else if (ms > 0) {
|
|
8634
|
+
label = "<1s";
|
|
8635
|
+
} else {
|
|
8636
|
+
label = "0s";
|
|
8643
8637
|
}
|
|
8644
8638
|
return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_ui65.Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: label });
|
|
8645
8639
|
}
|
|
8646
8640
|
}),
|
|
8647
|
-
columnHelper5.accessor("execution", {
|
|
8648
|
-
id: "last_step",
|
|
8649
|
-
header: t3("workflowExecutions.lastStepLabel"),
|
|
8650
|
-
cell: ({ getValue: getValue2 }) => {
|
|
8651
|
-
const execution = getValue2();
|
|
8652
|
-
const steps = execution?.steps;
|
|
8653
|
-
if (!steps) {
|
|
8654
|
-
return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_ui65.Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: "-" });
|
|
8655
|
-
}
|
|
8656
|
-
const actionableSteps = Object.values(
|
|
8657
|
-
steps
|
|
8658
|
-
).filter((step) => step.id !== ROOT_PREFIX);
|
|
8659
|
-
if (!actionableSteps.length) {
|
|
8660
|
-
return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_ui65.Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: "-" });
|
|
8661
|
-
}
|
|
8662
|
-
const lastStep = actionableSteps.reduce((latest, current) => {
|
|
8663
|
-
if (!latest) {
|
|
8664
|
-
return current;
|
|
8665
|
-
}
|
|
8666
|
-
return current.startedAt > latest.startedAt ? current : latest;
|
|
8667
|
-
}, void 0);
|
|
8668
|
-
const lastStepId = lastStep?.id.split(".").pop();
|
|
8669
|
-
if (!lastStep || !lastStepId) {
|
|
8670
|
-
return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_ui65.Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: "-" });
|
|
8671
|
-
}
|
|
8672
|
-
return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_ui65.Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: lastStepId });
|
|
8673
|
-
}
|
|
8674
|
-
}),
|
|
8675
8641
|
columnHelper5.accessor("created_at", {
|
|
8676
|
-
header: (
|
|
8642
|
+
header: t3("fields.createdAt"),
|
|
8677
8643
|
cell: ({ getValue: getValue2 }) => {
|
|
8678
8644
|
const date = getValue2();
|
|
8679
8645
|
return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(DateCell, { date });
|
|
8680
8646
|
}
|
|
8681
8647
|
}),
|
|
8682
8648
|
columnHelper5.accessor("updated_at", {
|
|
8683
|
-
header: (
|
|
8649
|
+
header: t3("fields.updatedAt"),
|
|
8684
8650
|
cell: ({ getValue: getValue2 }) => {
|
|
8685
8651
|
const date = getValue2();
|
|
8686
8652
|
return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(DateCell, { date });
|
|
@@ -8952,7 +8918,6 @@ var init_workflow_execution_general_section = __esm({
|
|
|
8952
8918
|
import_react_i18next50 = require("react-i18next");
|
|
8953
8919
|
init_utils2();
|
|
8954
8920
|
init_types();
|
|
8955
|
-
init_date_cell();
|
|
8956
8921
|
init_use_date();
|
|
8957
8922
|
init_constants2();
|
|
8958
8923
|
import_jsx_runtime93 = require("react/jsx-runtime");
|
|
@@ -9037,25 +9002,11 @@ var init_workflow_execution_general_section = __esm({
|
|
|
9037
9002
|
] }),
|
|
9038
9003
|
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)("div", { className: "text-ui-fg-subtle grid grid-cols-2 px-6 py-4", children: [
|
|
9039
9004
|
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_ui67.Text, { size: "small", leading: "compact", weight: "plus", children: t3("fields.createdAt") }),
|
|
9040
|
-
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
9005
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_ui67.Text, { size: "small", leading: "compact", children: createdAt ? getFullDate({ date: createdAt, includeTime: true }) : "-" })
|
|
9041
9006
|
] }),
|
|
9042
9007
|
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)("div", { className: "text-ui-fg-subtle grid grid-cols-2 px-6 py-4", children: [
|
|
9043
9008
|
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_ui67.Text, { size: "small", leading: "compact", weight: "plus", children: t3("fields.updatedAt") }),
|
|
9044
|
-
/* @__PURE__ */ (0, import_jsx_runtime93.
|
|
9045
|
-
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)("div", { className: "flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(DateCell, { date: updatedAt }) }),
|
|
9046
|
-
updatedAt && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
9047
|
-
import_ui67.Text,
|
|
9048
|
-
{
|
|
9049
|
-
size: "xsmall",
|
|
9050
|
-
leading: "compact",
|
|
9051
|
-
className: "text-ui-fg-muted mt-1",
|
|
9052
|
-
children: getFullDate({
|
|
9053
|
-
date: updatedAt,
|
|
9054
|
-
includeTime: true
|
|
9055
|
-
})
|
|
9056
|
-
}
|
|
9057
|
-
)
|
|
9058
|
-
] })
|
|
9009
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_ui67.Text, { size: "small", leading: "compact", children: updatedAt ? getFullDate({ date: updatedAt, includeTime: true }) : "-" })
|
|
9059
9010
|
] })
|
|
9060
9011
|
] });
|
|
9061
9012
|
};
|
|
@@ -29880,7 +29831,6 @@ var en_default = {
|
|
|
29880
29831
|
transactionIdLabel: "Transaction ID",
|
|
29881
29832
|
workflowIdLabel: "Workflow ID",
|
|
29882
29833
|
progressLabel: "Progress",
|
|
29883
|
-
lastStepLabel: "Last step",
|
|
29884
29834
|
metrics: {
|
|
29885
29835
|
stepsSummary: "{{completed}} of {{total}} steps",
|
|
29886
29836
|
failedSteps: "{{count}} failed",
|
package/dist/app.mjs
CHANGED
|
@@ -11881,7 +11881,6 @@ var en_default = {
|
|
|
11881
11881
|
transactionIdLabel: "Transaction ID",
|
|
11882
11882
|
workflowIdLabel: "Workflow ID",
|
|
11883
11883
|
progressLabel: "Progress",
|
|
11884
|
-
lastStepLabel: "Last step",
|
|
11885
11884
|
metrics: {
|
|
11886
11885
|
stepsSummary: "{{completed}} of {{total}} steps",
|
|
11887
11886
|
failedSteps: "{{count}} failed",
|
|
@@ -95357,7 +95356,7 @@ var defaultSettingsRouteChildren = [
|
|
|
95357
95356
|
children: [
|
|
95358
95357
|
{
|
|
95359
95358
|
path: "",
|
|
95360
|
-
lazy: () => import("./api-key-management-list-
|
|
95359
|
+
lazy: () => import("./api-key-management-list-QK4Q7Y5I.mjs"),
|
|
95361
95360
|
children: [
|
|
95362
95361
|
{
|
|
95363
95362
|
path: "create",
|
|
@@ -95399,7 +95398,7 @@ var defaultSettingsRouteChildren = [
|
|
|
95399
95398
|
children: [
|
|
95400
95399
|
{
|
|
95401
95400
|
path: "",
|
|
95402
|
-
lazy: () => import("./api-key-management-list-
|
|
95401
|
+
lazy: () => import("./api-key-management-list-QK4Q7Y5I.mjs"),
|
|
95403
95402
|
children: [
|
|
95404
95403
|
{
|
|
95405
95404
|
path: "create",
|
|
@@ -95438,12 +95437,12 @@ var defaultSettingsRouteChildren = [
|
|
|
95438
95437
|
children: [
|
|
95439
95438
|
{
|
|
95440
95439
|
path: "",
|
|
95441
|
-
lazy: () => import("./workflow-execution-list-
|
|
95440
|
+
lazy: () => import("./workflow-execution-list-DETG4MRT.mjs")
|
|
95442
95441
|
},
|
|
95443
95442
|
{
|
|
95444
95443
|
path: ":id",
|
|
95445
95444
|
lazy: async () => {
|
|
95446
|
-
const { Component, Breadcrumb, loader } = await import("./workflow-execution-detail-
|
|
95445
|
+
const { Component, Breadcrumb, loader } = await import("./workflow-execution-detail-5O5VCXL3.mjs");
|
|
95447
95446
|
return {
|
|
95448
95447
|
Component,
|
|
95449
95448
|
loader,
|
|
@@ -31,13 +31,8 @@ var DateCell = ({ date }) => {
|
|
|
31
31
|
}
|
|
32
32
|
) });
|
|
33
33
|
};
|
|
34
|
-
var DateHeader = () => {
|
|
35
|
-
const { t } = useTranslation();
|
|
36
|
-
return /* @__PURE__ */ jsx2("div", { className: "flex h-full w-full items-center", children: /* @__PURE__ */ jsx2("span", { className: "truncate", children: t("fields.date") }) });
|
|
37
|
-
};
|
|
38
34
|
|
|
39
35
|
export {
|
|
40
36
|
PlaceholderCell,
|
|
41
|
-
DateCell
|
|
42
|
-
DateHeader
|
|
37
|
+
DateCell
|
|
43
38
|
};
|
package/dist/en.json
CHANGED
|
@@ -2965,7 +2965,6 @@
|
|
|
2965
2965
|
"transactionIdLabel": "Transaction ID",
|
|
2966
2966
|
"workflowIdLabel": "Workflow ID",
|
|
2967
2967
|
"progressLabel": "Progress",
|
|
2968
|
-
"lastStepLabel": "Last step",
|
|
2969
2968
|
"metrics": {
|
|
2970
2969
|
"stepsSummary": "{{completed}} of {{total}} steps",
|
|
2971
2970
|
"failedSteps": "{{count}} failed",
|
package/dist/{workflow-execution-detail-AWIFZJSL.mjs → workflow-execution-detail-5O5VCXL3.mjs}
RENAMED
|
@@ -7,9 +7,6 @@ import {
|
|
|
7
7
|
getTransactionState,
|
|
8
8
|
getTransactionStateColor
|
|
9
9
|
} from "./chunk-RPAL6FHW.mjs";
|
|
10
|
-
import {
|
|
11
|
-
DateCell
|
|
12
|
-
} from "./chunk-RSLTE3VD.mjs";
|
|
13
10
|
import {
|
|
14
11
|
useDate
|
|
15
12
|
} from "./chunk-DFFLVEZ5.mjs";
|
|
@@ -163,25 +160,11 @@ var WorkflowExecutionGeneralSection = ({
|
|
|
163
160
|
] }),
|
|
164
161
|
/* @__PURE__ */ jsxs("div", { className: "text-ui-fg-subtle grid grid-cols-2 px-6 py-4", children: [
|
|
165
162
|
/* @__PURE__ */ jsx2(Text, { size: "small", leading: "compact", weight: "plus", children: t("fields.createdAt") }),
|
|
166
|
-
/* @__PURE__ */ jsx2(
|
|
163
|
+
/* @__PURE__ */ jsx2(Text, { size: "small", leading: "compact", children: createdAt ? getFullDate({ date: createdAt, includeTime: true }) : "-" })
|
|
167
164
|
] }),
|
|
168
165
|
/* @__PURE__ */ jsxs("div", { className: "text-ui-fg-subtle grid grid-cols-2 px-6 py-4", children: [
|
|
169
166
|
/* @__PURE__ */ jsx2(Text, { size: "small", leading: "compact", weight: "plus", children: t("fields.updatedAt") }),
|
|
170
|
-
/* @__PURE__ */
|
|
171
|
-
/* @__PURE__ */ jsx2("div", { className: "flex items-center", children: /* @__PURE__ */ jsx2(DateCell, { date: updatedAt }) }),
|
|
172
|
-
updatedAt && /* @__PURE__ */ jsx2(
|
|
173
|
-
Text,
|
|
174
|
-
{
|
|
175
|
-
size: "xsmall",
|
|
176
|
-
leading: "compact",
|
|
177
|
-
className: "text-ui-fg-muted mt-1",
|
|
178
|
-
children: getFullDate({
|
|
179
|
-
date: updatedAt,
|
|
180
|
-
includeTime: true
|
|
181
|
-
})
|
|
182
|
-
}
|
|
183
|
-
)
|
|
184
|
-
] })
|
|
167
|
+
/* @__PURE__ */ jsx2(Text, { size: "small", leading: "compact", children: updatedAt ? getFullDate({ date: updatedAt, includeTime: true }) : "-" })
|
|
185
168
|
] })
|
|
186
169
|
] });
|
|
187
170
|
};
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DateCell
|
|
3
|
+
} from "./chunk-QZOY6YYT.mjs";
|
|
1
4
|
import {
|
|
2
5
|
getTransactionState,
|
|
3
6
|
getTransactionStateColor
|
|
4
7
|
} from "./chunk-RPAL6FHW.mjs";
|
|
5
|
-
import {
|
|
6
|
-
DateCell,
|
|
7
|
-
DateHeader
|
|
8
|
-
} from "./chunk-RSLTE3VD.mjs";
|
|
9
8
|
import {
|
|
10
9
|
_DataTable,
|
|
11
10
|
useDataTable
|
|
@@ -36,7 +35,7 @@ import { keepPreviousData } from "@tanstack/react-query";
|
|
|
36
35
|
import { useTranslation as useTranslation3 } from "react-i18next";
|
|
37
36
|
|
|
38
37
|
// src/routes/workflow-executions/workflow-execution-list/components/workflow-execution-list-table/use-workflow-execution-table-columns.tsx
|
|
39
|
-
import { Badge, Copy, Text } from "@acmekit/ui";
|
|
38
|
+
import { Badge, Copy, Text, clx as clx2 } from "@acmekit/ui";
|
|
40
39
|
import { createColumnHelper } from "@tanstack/react-table";
|
|
41
40
|
import { useMemo } from "react";
|
|
42
41
|
import { useTranslation } from "react-i18next";
|
|
@@ -83,24 +82,13 @@ var useWorkflowExecutionTableColumns = () => {
|
|
|
83
82
|
const { t } = useTranslation();
|
|
84
83
|
return useMemo(
|
|
85
84
|
() => [
|
|
86
|
-
columnHelper.accessor("
|
|
87
|
-
header: t("
|
|
88
|
-
cell: ({ row }) => {
|
|
89
|
-
const fullId = row.original.id;
|
|
90
|
-
const cleanId = fullId.replace("wf_exec_", "");
|
|
91
|
-
return /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-x-1", children: [
|
|
92
|
-
/* @__PURE__ */ jsx2("span", { className: "truncate", children: cleanId }),
|
|
93
|
-
/* @__PURE__ */ jsx2(Copy, { content: fullId, className: "text-ui-fg-muted" })
|
|
94
|
-
] });
|
|
95
|
-
}
|
|
96
|
-
}),
|
|
97
|
-
columnHelper.accessor("transaction_id", {
|
|
98
|
-
header: t("workflowExecutions.transactionIdLabel"),
|
|
85
|
+
columnHelper.accessor("workflow_id", {
|
|
86
|
+
header: t("workflowExecutions.workflowIdLabel"),
|
|
99
87
|
cell: ({ getValue }) => {
|
|
100
|
-
const
|
|
88
|
+
const workflowId = getValue();
|
|
101
89
|
return /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-x-1", children: [
|
|
102
|
-
/* @__PURE__ */ jsx2(Badge, { size: "2xsmall", className: "truncate", children:
|
|
103
|
-
/* @__PURE__ */ jsx2(Copy, { content:
|
|
90
|
+
/* @__PURE__ */ jsx2(Badge, { size: "2xsmall", className: "truncate", children: workflowId }),
|
|
91
|
+
/* @__PURE__ */ jsx2(Copy, { content: workflowId, className: "text-ui-fg-muted" })
|
|
104
92
|
] });
|
|
105
93
|
}
|
|
106
94
|
}),
|
|
@@ -118,7 +106,7 @@ var useWorkflowExecutionTableColumns = () => {
|
|
|
118
106
|
cell: ({ getValue }) => {
|
|
119
107
|
const steps = getValue()?.steps;
|
|
120
108
|
if (!steps) {
|
|
121
|
-
return /* @__PURE__ */ jsx2("span", { className: "text-ui-fg-subtle", children: t("workflowExecutions.stepsCompletedLabel", {
|
|
109
|
+
return /* @__PURE__ */ jsx2("span", { className: "text-ui-fg-subtle whitespace-nowrap", children: t("workflowExecutions.stepsCompletedLabel", {
|
|
122
110
|
completed: 0,
|
|
123
111
|
count: 0
|
|
124
112
|
}) });
|
|
@@ -133,12 +121,17 @@ var useWorkflowExecutionTableColumns = () => {
|
|
|
133
121
|
/* @__PURE__ */ jsx2("div", { className: "flex items-center gap-x-[3px]", children: actionableSteps.map((step) => /* @__PURE__ */ jsx2(
|
|
134
122
|
"div",
|
|
135
123
|
{
|
|
136
|
-
className:
|
|
124
|
+
className: clx2(
|
|
125
|
+
"bg-ui-bg-switch-off shadow-details-switch-background h-3 w-1.5 rounded-full",
|
|
126
|
+
{
|
|
127
|
+
"bg-ui-fg-muted": step.invoke.state === "done" /* DONE */
|
|
128
|
+
}
|
|
129
|
+
),
|
|
137
130
|
"data-completed": step.invoke.state === "done" /* DONE */
|
|
138
131
|
},
|
|
139
132
|
step.id
|
|
140
133
|
)) }),
|
|
141
|
-
/* @__PURE__ */ jsx2("span", { className: "text-ui-fg-subtle", children: t("workflowExecutions.stepsCompletedLabel", {
|
|
134
|
+
/* @__PURE__ */ jsx2("span", { className: "text-ui-fg-subtle whitespace-nowrap", children: t("workflowExecutions.stepsCompletedLabel", {
|
|
142
135
|
completed: completedSteps.length,
|
|
143
136
|
count: actionableSteps.length
|
|
144
137
|
}) })
|
|
@@ -172,49 +165,25 @@ var useWorkflowExecutionTableColumns = () => {
|
|
|
172
165
|
label = `${hours}h ${minutes % 60}m`;
|
|
173
166
|
} else if (minutes > 0) {
|
|
174
167
|
label = `${minutes}m ${seconds % 60}s`;
|
|
175
|
-
} else {
|
|
168
|
+
} else if (seconds > 0) {
|
|
176
169
|
label = `${seconds}s`;
|
|
170
|
+
} else if (ms > 0) {
|
|
171
|
+
label = "<1s";
|
|
172
|
+
} else {
|
|
173
|
+
label = "0s";
|
|
177
174
|
}
|
|
178
175
|
return /* @__PURE__ */ jsx2(Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: label });
|
|
179
176
|
}
|
|
180
177
|
}),
|
|
181
|
-
columnHelper.accessor("execution", {
|
|
182
|
-
id: "last_step",
|
|
183
|
-
header: t("workflowExecutions.lastStepLabel"),
|
|
184
|
-
cell: ({ getValue }) => {
|
|
185
|
-
const execution = getValue();
|
|
186
|
-
const steps = execution?.steps;
|
|
187
|
-
if (!steps) {
|
|
188
|
-
return /* @__PURE__ */ jsx2(Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: "-" });
|
|
189
|
-
}
|
|
190
|
-
const actionableSteps = Object.values(
|
|
191
|
-
steps
|
|
192
|
-
).filter((step) => step.id !== ROOT_PREFIX);
|
|
193
|
-
if (!actionableSteps.length) {
|
|
194
|
-
return /* @__PURE__ */ jsx2(Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: "-" });
|
|
195
|
-
}
|
|
196
|
-
const lastStep = actionableSteps.reduce((latest, current) => {
|
|
197
|
-
if (!latest) {
|
|
198
|
-
return current;
|
|
199
|
-
}
|
|
200
|
-
return current.startedAt > latest.startedAt ? current : latest;
|
|
201
|
-
}, void 0);
|
|
202
|
-
const lastStepId = lastStep?.id.split(".").pop();
|
|
203
|
-
if (!lastStep || !lastStepId) {
|
|
204
|
-
return /* @__PURE__ */ jsx2(Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: "-" });
|
|
205
|
-
}
|
|
206
|
-
return /* @__PURE__ */ jsx2(Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: lastStepId });
|
|
207
|
-
}
|
|
208
|
-
}),
|
|
209
178
|
columnHelper.accessor("created_at", {
|
|
210
|
-
header: ()
|
|
179
|
+
header: t("fields.createdAt"),
|
|
211
180
|
cell: ({ getValue }) => {
|
|
212
181
|
const date = getValue();
|
|
213
182
|
return /* @__PURE__ */ jsx2(DateCell, { date });
|
|
214
183
|
}
|
|
215
184
|
}),
|
|
216
185
|
columnHelper.accessor("updated_at", {
|
|
217
|
-
header: ()
|
|
186
|
+
header: t("fields.updatedAt"),
|
|
218
187
|
cell: ({ getValue }) => {
|
|
219
188
|
const date = getValue();
|
|
220
189
|
return /* @__PURE__ */ jsx2(DateCell, { date });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acmekit/dashboard",
|
|
3
|
-
"version": "2.13.
|
|
3
|
+
"version": "2.13.23",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"generate:static": "node ./scripts/generate-currencies.js && prettier --write ./src/lib/currencies.ts",
|
|
6
6
|
"dev": "../../../node_modules/.bin/vite",
|
|
@@ -39,10 +39,10 @@
|
|
|
39
39
|
"dist"
|
|
40
40
|
],
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@acmekit/admin-shared": "2.13.
|
|
43
|
-
"@acmekit/icons": "2.13.
|
|
44
|
-
"@acmekit/js-sdk": "2.13.
|
|
45
|
-
"@acmekit/ui": "4.1.
|
|
42
|
+
"@acmekit/admin-shared": "2.13.23",
|
|
43
|
+
"@acmekit/icons": "2.13.23",
|
|
44
|
+
"@acmekit/js-sdk": "2.13.23",
|
|
45
|
+
"@acmekit/ui": "4.1.19",
|
|
46
46
|
"@ariakit/react": "^0.4.15",
|
|
47
47
|
"@babel/runtime": "^7.26.10",
|
|
48
48
|
"@dnd-kit/core": "^6.1.0",
|
|
@@ -80,10 +80,10 @@
|
|
|
80
80
|
"zod": "3.25.76"
|
|
81
81
|
},
|
|
82
82
|
"devDependencies": {
|
|
83
|
-
"@acmekit/admin-shared": "2.13.
|
|
84
|
-
"@acmekit/admin-vite-plugin": "2.13.
|
|
85
|
-
"@acmekit/types": "2.13.
|
|
86
|
-
"@acmekit/ui-preset": "2.13.
|
|
83
|
+
"@acmekit/admin-shared": "2.13.23",
|
|
84
|
+
"@acmekit/admin-vite-plugin": "2.13.23",
|
|
85
|
+
"@acmekit/types": "2.13.23",
|
|
86
|
+
"@acmekit/ui-preset": "2.13.23"
|
|
87
87
|
},
|
|
88
88
|
"packageManager": "yarn@3.2.1"
|
|
89
89
|
}
|
|
@@ -11032,9 +11032,6 @@
|
|
|
11032
11032
|
"progressLabel": {
|
|
11033
11033
|
"type": "string"
|
|
11034
11034
|
},
|
|
11035
|
-
"lastStepLabel": {
|
|
11036
|
-
"type": "string"
|
|
11037
|
-
},
|
|
11038
11035
|
"stepsCompletedLabel_one": {
|
|
11039
11036
|
"type": "string"
|
|
11040
11037
|
},
|
|
@@ -11215,7 +11212,6 @@
|
|
|
11215
11212
|
"progressLabel",
|
|
11216
11213
|
"stepsCompletedLabel_one",
|
|
11217
11214
|
"stepsCompletedLabel_other",
|
|
11218
|
-
"lastStepLabel",
|
|
11219
11215
|
"metrics",
|
|
11220
11216
|
"list",
|
|
11221
11217
|
"history",
|
|
@@ -2965,7 +2965,6 @@
|
|
|
2965
2965
|
"transactionIdLabel": "Transaction ID",
|
|
2966
2966
|
"workflowIdLabel": "Workflow ID",
|
|
2967
2967
|
"progressLabel": "Progress",
|
|
2968
|
-
"lastStepLabel": "Last step",
|
|
2969
2968
|
"metrics": {
|
|
2970
2969
|
"stepsSummary": "{{completed}} of {{total}} steps",
|
|
2971
2970
|
"failedSteps": "{{count}} failed",
|
|
@@ -3,7 +3,6 @@ import { useTranslation } from "react-i18next"
|
|
|
3
3
|
import { getTransactionState, getTransactionStateColor } from "../../../utils"
|
|
4
4
|
import { HttpTypes } from "@acmekit/types"
|
|
5
5
|
import { TransactionState, TransactionStepState } from "../../../types"
|
|
6
|
-
import { DateCell } from "../../../../../components/table/table-cells/common/date-cell/date-cell"
|
|
7
6
|
import { useDate } from "../../../../../hooks/use-date"
|
|
8
7
|
import { STEP_ERROR_STATES, STEP_SKIPPED_STATES } from "../../../constants"
|
|
9
8
|
|
|
@@ -123,31 +122,21 @@ export const WorkflowExecutionGeneralSection = ({
|
|
|
123
122
|
<Text size="small" leading="compact" weight="plus">
|
|
124
123
|
{t("fields.createdAt")}
|
|
125
124
|
</Text>
|
|
126
|
-
<
|
|
127
|
-
|
|
128
|
-
|
|
125
|
+
<Text size="small" leading="compact">
|
|
126
|
+
{createdAt
|
|
127
|
+
? getFullDate({ date: createdAt, includeTime: true })
|
|
128
|
+
: "-"}
|
|
129
|
+
</Text>
|
|
129
130
|
</div>
|
|
130
131
|
<div className="text-ui-fg-subtle grid grid-cols-2 px-6 py-4">
|
|
131
132
|
<Text size="small" leading="compact" weight="plus">
|
|
132
133
|
{t("fields.updatedAt")}
|
|
133
134
|
</Text>
|
|
134
|
-
<
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
<Text
|
|
140
|
-
size="xsmall"
|
|
141
|
-
leading="compact"
|
|
142
|
-
className="text-ui-fg-muted mt-1"
|
|
143
|
-
>
|
|
144
|
-
{getFullDate({
|
|
145
|
-
date: updatedAt,
|
|
146
|
-
includeTime: true,
|
|
147
|
-
})}
|
|
148
|
-
</Text>
|
|
149
|
-
)}
|
|
150
|
-
</div>
|
|
135
|
+
<Text size="small" leading="compact">
|
|
136
|
+
{updatedAt
|
|
137
|
+
? getFullDate({ date: updatedAt, includeTime: true })
|
|
138
|
+
: "-"}
|
|
139
|
+
</Text>
|
|
151
140
|
</div>
|
|
152
141
|
</Container>
|
|
153
142
|
)
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import { Badge, Copy, Text } from "@acmekit/ui"
|
|
1
|
+
import { Badge, Copy, Text, clx } from "@acmekit/ui"
|
|
2
2
|
import { ColumnDef, createColumnHelper } from "@tanstack/react-table"
|
|
3
3
|
import { useMemo } from "react"
|
|
4
4
|
import { useTranslation } from "react-i18next"
|
|
5
|
-
import {
|
|
6
|
-
DateCell,
|
|
7
|
-
DateHeader,
|
|
8
|
-
} from "../../../../../components/table/table-cells/common/date-cell/date-cell"
|
|
5
|
+
import { DateCell } from "../../../../../components/table/table-cells/common/date-cell/date-cell"
|
|
9
6
|
import { TransactionStepState } from "../../../types"
|
|
10
7
|
import { getTransactionState, getTransactionStateColor } from "../../../utils"
|
|
11
8
|
import { HttpTypes } from "@acmekit/types"
|
|
@@ -24,31 +21,17 @@ export const useWorkflowExecutionTableColumns = (): ColumnDef<
|
|
|
24
21
|
|
|
25
22
|
return useMemo(
|
|
26
23
|
() => [
|
|
27
|
-
columnHelper.accessor("
|
|
28
|
-
header: t("
|
|
29
|
-
cell: ({ row }) => {
|
|
30
|
-
const fullId = row.original.id
|
|
31
|
-
const cleanId = fullId.replace("wf_exec_", "")
|
|
32
|
-
|
|
33
|
-
return (
|
|
34
|
-
<div className="flex items-center gap-x-1">
|
|
35
|
-
<span className="truncate">{cleanId}</span>
|
|
36
|
-
<Copy content={fullId} className="text-ui-fg-muted" />
|
|
37
|
-
</div>
|
|
38
|
-
)
|
|
39
|
-
},
|
|
40
|
-
}),
|
|
41
|
-
columnHelper.accessor("transaction_id", {
|
|
42
|
-
header: t("workflowExecutions.transactionIdLabel"),
|
|
24
|
+
columnHelper.accessor("workflow_id", {
|
|
25
|
+
header: t("workflowExecutions.workflowIdLabel"),
|
|
43
26
|
cell: ({ getValue }) => {
|
|
44
|
-
const
|
|
27
|
+
const workflowId = getValue()
|
|
45
28
|
|
|
46
29
|
return (
|
|
47
30
|
<div className="flex items-center gap-x-1">
|
|
48
31
|
<Badge size="2xsmall" className="truncate">
|
|
49
|
-
{
|
|
32
|
+
{workflowId}
|
|
50
33
|
</Badge>
|
|
51
|
-
<Copy content={
|
|
34
|
+
<Copy content={workflowId} className="text-ui-fg-muted" />
|
|
52
35
|
</div>
|
|
53
36
|
)
|
|
54
37
|
},
|
|
@@ -77,7 +60,7 @@ export const useWorkflowExecutionTableColumns = (): ColumnDef<
|
|
|
77
60
|
|
|
78
61
|
if (!steps) {
|
|
79
62
|
return (
|
|
80
|
-
<span className="text-ui-fg-subtle">
|
|
63
|
+
<span className="text-ui-fg-subtle whitespace-nowrap">
|
|
81
64
|
{t("workflowExecutions.stepsCompletedLabel", {
|
|
82
65
|
completed: 0,
|
|
83
66
|
count: 0,
|
|
@@ -100,14 +83,20 @@ export const useWorkflowExecutionTableColumns = (): ColumnDef<
|
|
|
100
83
|
{actionableSteps.map((step) => (
|
|
101
84
|
<div
|
|
102
85
|
key={step.id}
|
|
103
|
-
className=
|
|
86
|
+
className={clx(
|
|
87
|
+
"bg-ui-bg-switch-off shadow-details-switch-background h-3 w-1.5 rounded-full",
|
|
88
|
+
{
|
|
89
|
+
"bg-ui-fg-muted":
|
|
90
|
+
step.invoke.state === TransactionStepState.DONE,
|
|
91
|
+
}
|
|
92
|
+
)}
|
|
104
93
|
data-completed={
|
|
105
94
|
step.invoke.state === TransactionStepState.DONE
|
|
106
95
|
}
|
|
107
96
|
/>
|
|
108
97
|
))}
|
|
109
98
|
</div>
|
|
110
|
-
<span className="text-ui-fg-subtle">
|
|
99
|
+
<span className="text-ui-fg-subtle whitespace-nowrap">
|
|
111
100
|
{t("workflowExecutions.stepsCompletedLabel", {
|
|
112
101
|
completed: completedSteps.length,
|
|
113
102
|
count: actionableSteps.length,
|
|
@@ -168,8 +157,12 @@ export const useWorkflowExecutionTableColumns = (): ColumnDef<
|
|
|
168
157
|
label = `${hours}h ${minutes % 60}m`
|
|
169
158
|
} else if (minutes > 0) {
|
|
170
159
|
label = `${minutes}m ${seconds % 60}s`
|
|
171
|
-
} else {
|
|
160
|
+
} else if (seconds > 0) {
|
|
172
161
|
label = `${seconds}s`
|
|
162
|
+
} else if (ms > 0) {
|
|
163
|
+
label = "<1s"
|
|
164
|
+
} else {
|
|
165
|
+
label = "0s"
|
|
173
166
|
}
|
|
174
167
|
|
|
175
168
|
return (
|
|
@@ -179,72 +172,15 @@ export const useWorkflowExecutionTableColumns = (): ColumnDef<
|
|
|
179
172
|
)
|
|
180
173
|
},
|
|
181
174
|
}),
|
|
182
|
-
columnHelper.accessor("execution", {
|
|
183
|
-
id: "last_step",
|
|
184
|
-
header: t("workflowExecutions.lastStepLabel"),
|
|
185
|
-
cell: ({ getValue }) => {
|
|
186
|
-
const execution = getValue() as
|
|
187
|
-
| HttpTypes.AdminWorkflowExecutionExecution
|
|
188
|
-
| undefined
|
|
189
|
-
|
|
190
|
-
const steps = execution?.steps
|
|
191
|
-
|
|
192
|
-
if (!steps) {
|
|
193
|
-
return (
|
|
194
|
-
<Text size="small" leading="compact" className="text-ui-fg-subtle">
|
|
195
|
-
{"-"}
|
|
196
|
-
</Text>
|
|
197
|
-
)
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
const actionableSteps = Object.values(
|
|
201
|
-
steps as Record<string, HttpTypes.AdminWorkflowExecutionStep>
|
|
202
|
-
).filter((step) => step.id !== ROOT_PREFIX)
|
|
203
|
-
|
|
204
|
-
if (!actionableSteps.length) {
|
|
205
|
-
return (
|
|
206
|
-
<Text size="small" leading="compact" className="text-ui-fg-subtle">
|
|
207
|
-
{"-"}
|
|
208
|
-
</Text>
|
|
209
|
-
)
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
const lastStep = actionableSteps.reduce<
|
|
213
|
-
HttpTypes.AdminWorkflowExecutionStep | undefined
|
|
214
|
-
>((latest, current) => {
|
|
215
|
-
if (!latest) {
|
|
216
|
-
return current
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
return current.startedAt > latest.startedAt ? current : latest
|
|
220
|
-
}, undefined)
|
|
221
|
-
|
|
222
|
-
const lastStepId = lastStep?.id.split(".").pop()
|
|
223
|
-
|
|
224
|
-
if (!lastStep || !lastStepId) {
|
|
225
|
-
return (
|
|
226
|
-
<Text size="small" leading="compact" className="text-ui-fg-subtle">
|
|
227
|
-
{"-"}
|
|
228
|
-
</Text>
|
|
229
|
-
)
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
return (
|
|
233
|
-
<Text size="small" leading="compact" className="text-ui-fg-subtle">
|
|
234
|
-
{lastStepId}
|
|
235
|
-
</Text>
|
|
236
|
-
)
|
|
237
|
-
},
|
|
238
|
-
}),
|
|
239
175
|
columnHelper.accessor("created_at", {
|
|
240
|
-
header: ()
|
|
176
|
+
header: t("fields.createdAt"),
|
|
241
177
|
cell: ({ getValue }) => {
|
|
242
178
|
const date = getValue()
|
|
243
179
|
return <DateCell date={date} />
|
|
244
180
|
},
|
|
245
181
|
}),
|
|
246
182
|
columnHelper.accessor("updated_at", {
|
|
247
|
-
header: ()
|
|
183
|
+
header: t("fields.updatedAt"),
|
|
248
184
|
cell: ({ getValue }) => {
|
|
249
185
|
const date = getValue()
|
|
250
186
|
return <DateCell date={date} />
|