@burdenoff/fluidgrids-fe-sdk 2026.1113.4 → 2026.1113.6
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/{AiStudioPage-DmgLQG62.js → AiStudioPage-DzvEkuoS.js} +6 -6
- package/dist/{ApprovalInboxPage-BsJX4osU.js → ApprovalInboxPage-CbkmOXaq.js} +9 -9
- package/dist/{DataSinkDashboardPage-iBalc66y.js → DataSinkDashboardPage-DYuBqD2Y.js} +15 -15
- package/dist/{DataTablesPage-BBvABuxE.js → DataTablesPage-DR6BesNp.js} +18 -18
- package/dist/{Disclosure-DQiUKrqd.js → Disclosure-CsxDspR7.js} +7 -3
- package/dist/{ExecutionDetailPage-D1E_Rf3U.js → ExecutionDetailPage-D40dK9iB.js} +133 -133
- package/dist/{ExecutionsListPage-LsqVMwck.js → ExecutionsListPage-C-dujSS3.js} +141 -107
- package/dist/{FailureTriagePanel-CM-vmvbA.js → FailureTriagePanel-DA91XKVj.js} +3 -3
- package/dist/{FluidGridsProvider-BgP5c-hH.js → FluidGridsProvider-gB2POEu6.js} +1 -1
- package/dist/{HistoryPage-BTAkQ7O1.js → HistoryPage-8lQ6xf5Q.js} +12 -12
- package/dist/{InsightsPage-CVSoyuat.js → InsightsPage-YC1Bpqiz.js} +30 -30
- package/dist/{NodesPage-C5Dq-ru-.js → NodesPage-DeBc3zix.js} +10 -10
- package/dist/{PaidTemplateConfirm-DfFrr1pk.js → PaidTemplateConfirm-BadoJJPx.js} +1 -1
- package/dist/{QuotaExhaustedDialog-BHZm4tQy.js → QuotaExhaustedDialog-BBK3aX_0.js} +1 -1
- package/dist/{RunActionsMenu-BE_1r3bF.js → RunActionsMenu-BZY4NreS.js} +8 -6
- package/dist/{RunnersPage-DHeuUDil.js → RunnersPage-BXODCbq0.js} +2 -2
- package/dist/{SettingsPage-DPWog4BR.js → SettingsPage-BfBa-qSk.js} +72 -72
- package/dist/{TaskQueuesPage-BwnNad_J.js → TaskQueuesPage-DsGNGmGN.js} +15 -15
- package/dist/{TechnicalDetails-D4xGy201.js → TechnicalDetails-r5JXr1jZ.js} +1 -1
- package/dist/{TemplateCard-trfaDJLe.js → TemplateCard-lKGodHU8.js} +2 -2
- package/dist/{TemplatePreview-BuEMVZiI.js → TemplatePreview-CwJfGqoH.js} +5 -5
- package/dist/{TemplatesPage-UISz_6vU.js → TemplatesPage-mRzYPtOC.js} +20 -20
- package/dist/{VariablesPage-CgUBKhAe.js → VariablesPage-8yuyDzCH.js} +8 -8
- package/dist/{WorkflowBuilder-Cmj59UU-.js → WorkflowBuilder-DKqz8W6n.js} +3 -3
- package/dist/{WorkflowBuilder-nnSlI7Fd.js → WorkflowBuilder-DtSOvYST.js} +6 -6
- package/dist/{WorkflowProposalCard-zCdUpCk8.js → WorkflowProposalCard-SmRv_Egf.js} +1 -1
- package/dist/{WorkflowSearchRedirect-pEIU2nvw.js → WorkflowSearchRedirect-mX-YNhkj.js} +1 -1
- package/dist/{WorkflowsList-B6ASopzn.js → WorkflowsList-DBKQLEUU.js} +7 -7
- package/dist/{agentTools-7CFfwySg.js → agentTools-Dle04WMj.js} +1 -1
- package/dist/{api-BqA-f-AD.js → api-CEnNq15C.js} +1 -1
- package/dist/{api-BZVyX5d2.js → api-DKfMt0IX.js} +1 -1
- package/dist/{app-BJUvugPM.js → app-BIsCEL65.js} +5 -5
- package/dist/{canvasNoteTools-BikeF-pN.js → canvasNoteTools-Bror30X8.js} +1 -1
- package/dist/executions.js +2 -2
- package/dist/{flow-builder-CksAvhgV.js → flow-builder-CErj7Fgi.js} +21 -21
- package/dist/history.js +1 -1
- package/dist/index.js +72 -72
- package/dist/{logs-panel-DtG93ocy.js → logs-panel-2L4TLGcG.js} +10 -10
- package/dist/{node-detail-view-BgmxkGJe.js → node-detail-view-BqGpYHEE.js} +6 -6
- package/dist/{node-editor-tab-body-2Y-lqY4_.js → node-editor-tab-body-f2EIl5lh.js} +2 -2
- package/dist/nodes.js +1 -1
- package/dist/observability.js +2 -2
- package/dist/{popover-DL7fSPgH.js → popover-3Vs4f1Uy.js} +2 -2
- package/dist/{quick-config-panel-nmIRDTFB.js → quick-config-panel-Aja-lh3W.js} +3 -3
- package/dist/{schedule-panel-Bk5MJumG.js → schedule-panel-DCzLeJvi.js} +6 -6
- package/dist/settings.js +1 -1
- package/dist/{shared-Ctl9ZHo1.js → shared-C0LCTtyh.js} +3 -3
- package/dist/{sidebar-node-editor-BnUjER8A.js → sidebar-node-editor-CWdejdLi.js} +3 -3
- package/dist/templates.js +2 -2
- package/dist/{useAgentDefinitions-BmyWUoyo.js → useAgentDefinitions-DoMEv0kS.js} +1 -1
- package/dist/{useDurableParity-AowXKgBZ.js → useDurableParity-9mQYNpiP.js} +1 -1
- package/dist/{useExecutions-BemEN_Zb.js → useExecutions-BvldyVgF.js} +1 -1
- package/dist/{useGlobalStoreClient-BmjWfAjc.js → useGlobalStoreClient-CpTRykJx.js} +1 -1
- package/dist/{useObservability-BGrwZS5X.js → useObservability-Cps9Y9a3.js} +1 -1
- package/dist/{useRunHistory-GzyLco45.js → useRunHistory-DoxQsQIm.js} +9 -9
- package/dist/{useWorkflowCodeExport-ej7y3Gi3.js → useWorkflowCodeExport-BLl0hv2J.js} +1 -1
- package/dist/{useWorkflows-DwDzP-AD.js → useWorkflows-Z4M64JlD.js} +1 -1
- package/dist/workflow-builder.js +4 -4
- package/dist/workflow-pages.js +19 -19
- package/dist/workflows-list.js +1 -1
- package/package.json +1 -1
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
3
|
import { g as useExecutionsStore, h as DEFAULT_EXECUTIONS_FILTER } from "./config-X97zrIvn.js";
|
|
4
|
-
import { b as validateDateRange, c as EMPTY_SEARCH_FILTER, d as searchFilterConflicts, i as useExecutionStats, l as OPERATORS_BY_TYPE, o as useExecutionsWithStore, r as useExecutionActions, t as useAutoRefresh, u as buildSearchAttributeFilter } from "./useExecutions-
|
|
4
|
+
import { b as validateDateRange, c as EMPTY_SEARCH_FILTER, d as searchFilterConflicts, i as useExecutionStats, l as OPERATORS_BY_TYPE, o as useExecutionsWithStore, r as useExecutionActions, t as useAutoRefresh, u as buildSearchAttributeFilter } from "./useExecutions-BvldyVgF.js";
|
|
5
5
|
import { m as usePhaseCFlags, u as useDurableParityEnabled } from "./feature-flags-B_b8PJ6Z.js";
|
|
6
6
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
7
7
|
import { n as useFluidGridsPageControls } from "./pageControlsBridge-0pX9s-3k.js";
|
|
8
8
|
import { t as executionsControls } from "./pageControlSpecs-DZJ9K37m.js";
|
|
9
9
|
import { t as TagFilterSelect } from "./TagFilterSelect-CAShgvbS.js";
|
|
10
10
|
import { n as useNavigationV2 } from "./useNavigationV2-C2WeqN7d.js";
|
|
11
|
-
import { a as useRunStatusCounts, c as errorAdvice, f as runStatusLabels, o as ConfirmStopRunDialog, p as RUN_STATUS_CONFIG, s as ADVICE_ERROR_TYPES, u as ExecutionStatusBadge } from "./useDurableParity-
|
|
12
|
-
import { t as Disclosure } from "./Disclosure-
|
|
11
|
+
import { a as useRunStatusCounts, c as errorAdvice, f as runStatusLabels, o as ConfirmStopRunDialog, p as RUN_STATUS_CONFIG, s as ADVICE_ERROR_TYPES, u as ExecutionStatusBadge } from "./useDurableParity-9mQYNpiP.js";
|
|
12
|
+
import { t as Disclosure } from "./Disclosure-CsxDspR7.js";
|
|
13
13
|
import { n as formatRunVersion } from "./run-display-BycKYSU0.js";
|
|
14
|
-
import { Yt as formatElapsedMs, Zt as runDurationMs } from "./FluidGridsProvider-
|
|
14
|
+
import { Yt as formatElapsedMs, Zt as runDurationMs } from "./FluidGridsProvider-gB2POEu6.js";
|
|
15
15
|
import { r as useRunHumanRequests } from "./useHumanRequests-DwG2tQ3f.js";
|
|
16
16
|
import { n as runListLinkKey, t as runListFilterFromSearch } from "./run-list-links-DZ8Q5l35.js";
|
|
17
|
-
import { t as TechnicalDetails } from "./TechnicalDetails-
|
|
18
|
-
import { t as RunActionsMenu } from "./RunActionsMenu-
|
|
19
|
-
import { h as useWorkflowDefinitions } from "./useWorkflows-
|
|
17
|
+
import { t as TechnicalDetails } from "./TechnicalDetails-r5JXr1jZ.js";
|
|
18
|
+
import { t as RunActionsMenu } from "./RunActionsMenu-BZY4NreS.js";
|
|
19
|
+
import { h as useWorkflowDefinitions } from "./useWorkflows-Z4M64JlD.js";
|
|
20
20
|
import { t as FluidGridsDocsLink } from "./FluidGridsDocsLink-JxkBpOeb.js";
|
|
21
21
|
import { s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
|
|
22
|
-
import { C as jsonArg, F as startBatchOperation, I as startBatchTerminate, P as startBatchExport, m as fetchBatchOperations, n as cancelBatchOperation, p as fetchBatchOperation, x as fetchSearchAttributes } from "./api-
|
|
23
|
-
import { a as RUN_CONTROL_DIALOG_STYLE, c as parseJsonInput, i as NativeSelect, o as StatusPill, r as JsonField, t as FieldError, u as useResource } from "./shared-
|
|
22
|
+
import { C as jsonArg, F as startBatchOperation, I as startBatchTerminate, P as startBatchExport, m as fetchBatchOperations, n as cancelBatchOperation, p as fetchBatchOperation, x as fetchSearchAttributes } from "./api-CEnNq15C.js";
|
|
23
|
+
import { a as RUN_CONTROL_DIALOG_STYLE, c as parseJsonInput, i as NativeSelect, o as StatusPill, r as JsonField, t as FieldError, u as useResource } from "./shared-C0LCTtyh.js";
|
|
24
24
|
import { t as describeOperationError } from "./errors-xPZ-IbQd.js";
|
|
25
25
|
import { n as getFluidGridsClient } from "./client-Ctl4jmY3.js";
|
|
26
26
|
import { bI as WorkflowResetType, eI as WorkflowBatchOperationType } from "./graphql-types-C5Tr6508.js";
|
|
@@ -355,7 +355,7 @@ function FailedNodeTypeChip({ nodeType, onClear }) {
|
|
|
355
355
|
})]
|
|
356
356
|
});
|
|
357
357
|
}
|
|
358
|
-
function ExecutionFilters({ workflows = [], onRefresh }) {
|
|
358
|
+
function ExecutionFilters({ workflows = [], onRefresh, moreFilters, moreFiltersActive = 0, onClearMoreFilters }) {
|
|
359
359
|
const tr = useTr();
|
|
360
360
|
const v2 = useNavigationV2();
|
|
361
361
|
const statusOptions = useMemo(() => [
|
|
@@ -502,8 +502,13 @@ function ExecutionFilters({ workflows = [], onRefresh }) {
|
|
|
502
502
|
});
|
|
503
503
|
}, [setDateRange]);
|
|
504
504
|
const parityEnabled = useDurableParityEnabled();
|
|
505
|
-
const
|
|
506
|
-
const
|
|
505
|
+
const pageFiltersActive = v2 ? moreFiltersActive : 0;
|
|
506
|
+
const activeFiltersCount = countActiveFilters(filter, parityEnabled) + pageFiltersActive;
|
|
507
|
+
const hasMoreFiltersSet = filter.tagId !== "" || filter.triggerType !== "all" || filter.errorType !== "all" || filter.nodeId !== "" || filter.failedNodeType !== "" || filter.durationMinSeconds !== null || filter.durationMaxSeconds !== null || filter.dateRange.preset === "custom" || parityEnabled && filter.workflowId.trim() !== "" || pageFiltersActive > 0;
|
|
508
|
+
const clearFilters = () => {
|
|
509
|
+
resetFilters();
|
|
510
|
+
if (v2) onClearMoreFilters?.();
|
|
511
|
+
};
|
|
507
512
|
const assistantControls = useMemo(() => executionsControls({
|
|
508
513
|
page: tr("fluidgrids.executions.executionsList.title", "Executions"),
|
|
509
514
|
search: setSearchQuery,
|
|
@@ -554,7 +559,7 @@ function ExecutionFilters({ workflows = [], onRefresh }) {
|
|
|
554
559
|
placeholder: tr("fluidgrids.executions.executionFilters.searchPlaceholder", "Search by workflow name or run ID..."),
|
|
555
560
|
value: filter.search,
|
|
556
561
|
onChange: (e) => setSearchQuery(e.target.value),
|
|
557
|
-
className: "w-full pl-[3.25rem] pr-4 py-2 bg-
|
|
562
|
+
className: "w-full pl-[3.25rem] pr-4 py-2 bg-surface border border-border-default rounded-lg text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-action-primary-bg focus:border-transparent"
|
|
558
563
|
}),
|
|
559
564
|
filter.search && /* @__PURE__ */ jsx("button", {
|
|
560
565
|
onClick: () => setSearchQuery(""),
|
|
@@ -617,6 +622,11 @@ function ExecutionFilters({ workflows = [], onRefresh }) {
|
|
|
617
622
|
closedLabel: tr("fluidgrids.executions.executionFilters.moreFilters", "More filters"),
|
|
618
623
|
openLabel: tr("fluidgrids.executions.executionFilters.fewerFilters", "Fewer filters"),
|
|
619
624
|
defaultOpen: hasMoreFiltersSet,
|
|
625
|
+
keptContent: moreFilters === void 0 ? void 0 : /* @__PURE__ */ jsx("div", {
|
|
626
|
+
className: "mt-3 flex flex-col gap-3",
|
|
627
|
+
"data-testid": "runs-more-filters-page-rows",
|
|
628
|
+
children: moreFilters
|
|
629
|
+
}),
|
|
620
630
|
"data-testid": "runs-more-filters",
|
|
621
631
|
children: /* @__PURE__ */ jsxs("div", {
|
|
622
632
|
className: "grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-5",
|
|
@@ -707,7 +717,7 @@ function ExecutionFilters({ workflows = [], onRefresh }) {
|
|
|
707
717
|
/* @__PURE__ */ jsx("button", {
|
|
708
718
|
type: "button",
|
|
709
719
|
onClick: () => handleDatePresetChange("custom"),
|
|
710
|
-
className: "px-3 py-2 border border-border-default rounded-lg text-text-primary text-left hover:bg-
|
|
720
|
+
className: "px-3 py-2 border border-border-default rounded-lg text-text-primary text-left hover:bg-surface-sunken",
|
|
711
721
|
"data-testid": "runs-custom-range",
|
|
712
722
|
children: tr("fluidgrids.executions.executionFilters.dateCustomRange", "Custom Range")
|
|
713
723
|
}),
|
|
@@ -717,7 +727,7 @@ function ExecutionFilters({ workflows = [], onRefresh }) {
|
|
|
717
727
|
type: "checkbox",
|
|
718
728
|
checked: autoRefresh,
|
|
719
729
|
onChange: (e) => setAutoRefresh(e.target.checked),
|
|
720
|
-
className: "w-4 h-4 rounded border-border-
|
|
730
|
+
className: "w-4 h-4 rounded border-border-default text-action-primary-bg focus:ring-action-primary-bg"
|
|
721
731
|
}), /* @__PURE__ */ jsx("span", {
|
|
722
732
|
className: "text-sm text-text-secondary",
|
|
723
733
|
children: tr("fluidgrids.executions.executionFilters.liveUpdates", "Live updates")
|
|
@@ -811,7 +821,7 @@ function ExecutionFilters({ workflows = [], onRefresh }) {
|
|
|
811
821
|
showCustomDate && /* @__PURE__ */ jsxs("div", {
|
|
812
822
|
className: "space-y-2",
|
|
813
823
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
814
|
-
className: "flex flex-wrap gap-3 items-center p-3 bg-
|
|
824
|
+
className: "flex flex-wrap gap-3 items-center p-3 bg-surface rounded-lg border border-border-default",
|
|
815
825
|
children: [
|
|
816
826
|
/* @__PURE__ */ jsx("label", {
|
|
817
827
|
className: "text-sm text-text-secondary",
|
|
@@ -825,7 +835,7 @@ function ExecutionFilters({ workflows = [], onRefresh }) {
|
|
|
825
835
|
start: e.target.value ? new Date(e.target.value) : null,
|
|
826
836
|
preset: "custom"
|
|
827
837
|
}),
|
|
828
|
-
className: "px-3 py-1.5 bg-
|
|
838
|
+
className: "px-3 py-1.5 bg-surface-canvas border border-border-default rounded text-text-primary text-sm"
|
|
829
839
|
}),
|
|
830
840
|
/* @__PURE__ */ jsx("label", {
|
|
831
841
|
className: "text-sm text-text-secondary",
|
|
@@ -839,7 +849,7 @@ function ExecutionFilters({ workflows = [], onRefresh }) {
|
|
|
839
849
|
end: e.target.value ? new Date(e.target.value) : null,
|
|
840
850
|
preset: "custom"
|
|
841
851
|
}),
|
|
842
|
-
className: "px-3 py-1.5 bg-
|
|
852
|
+
className: "px-3 py-1.5 bg-surface-canvas border border-border-default rounded text-text-primary text-sm"
|
|
843
853
|
}),
|
|
844
854
|
/* @__PURE__ */ jsx("button", {
|
|
845
855
|
onClick: () => setShowCustomDate(false),
|
|
@@ -866,7 +876,7 @@ function ExecutionFilters({ workflows = [], onRefresh }) {
|
|
|
866
876
|
type: "checkbox",
|
|
867
877
|
checked: autoRefresh,
|
|
868
878
|
onChange: (e) => setAutoRefresh(e.target.checked),
|
|
869
|
-
className: "w-4 h-4 rounded border-border-
|
|
879
|
+
className: "w-4 h-4 rounded border-border-default text-action-primary-bg focus:ring-action-primary-bg"
|
|
870
880
|
}), /* @__PURE__ */ jsx("span", {
|
|
871
881
|
className: "text-sm text-text-secondary",
|
|
872
882
|
children: tr("fluidgrids.executions.executionFilters.autoRefresh", "Auto-refresh")
|
|
@@ -895,7 +905,7 @@ function ExecutionFilters({ workflows = [], onRefresh }) {
|
|
|
895
905
|
}), activeFiltersCount > 0 && /* @__PURE__ */ jsxs(Button$1, {
|
|
896
906
|
variant: "ghost",
|
|
897
907
|
size: "sm",
|
|
898
|
-
onClick:
|
|
908
|
+
onClick: clearFilters,
|
|
899
909
|
className: "gap-1.5",
|
|
900
910
|
children: [/* @__PURE__ */ jsx(Icon, {
|
|
901
911
|
icon: "mdi:filter-remove",
|
|
@@ -914,8 +924,8 @@ function StatCard({ label, value, icon, color, trend, onClick }) {
|
|
|
914
924
|
onClick,
|
|
915
925
|
disabled: !onClick,
|
|
916
926
|
className: `
|
|
917
|
-
flex flex-col p-4 bg-
|
|
918
|
-
hover:border-border-
|
|
927
|
+
flex flex-col p-4 bg-surface rounded-lg border border-border-default
|
|
928
|
+
hover:border-border-strong transition-colors
|
|
919
929
|
${onClick ? "cursor-pointer" : "cursor-default"}
|
|
920
930
|
text-left w-full
|
|
921
931
|
`,
|
|
@@ -951,7 +961,7 @@ function ExecutionStats({ stats, loading, scoped = false, onFilterByStatus }) {
|
|
|
951
961
|
const v2 = useNavigationV2();
|
|
952
962
|
if (loading) return /* @__PURE__ */ jsx("div", {
|
|
953
963
|
className: "grid grid-cols-2 sm:grid-cols-4 lg:grid-cols-6 gap-4",
|
|
954
|
-
children: [...Array(v2 ? 4 : 6)].map((_, i) => /* @__PURE__ */ jsx("div", { className: "h-24 bg-
|
|
964
|
+
children: [...Array(v2 ? 4 : 6)].map((_, i) => /* @__PURE__ */ jsx("div", { className: "h-24 bg-surface rounded-lg border border-border-default animate-pulse" }, i))
|
|
955
965
|
});
|
|
956
966
|
if (!stats) return null;
|
|
957
967
|
const formatDuration = (seconds) => {
|
|
@@ -1189,13 +1199,13 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
|
|
|
1189
1199
|
}));
|
|
1190
1200
|
};
|
|
1191
1201
|
if (loading && executions.length === 0) return /* @__PURE__ */ jsx("div", {
|
|
1192
|
-
className: "bg-
|
|
1202
|
+
className: "bg-surface rounded-lg border border-border-default overflow-hidden",
|
|
1193
1203
|
children: /* @__PURE__ */ jsx("div", {
|
|
1194
1204
|
className: "overflow-x-auto",
|
|
1195
1205
|
children: /* @__PURE__ */ jsxs("table", {
|
|
1196
1206
|
className: "w-full min-w-[800px]",
|
|
1197
1207
|
children: [/* @__PURE__ */ jsx("thead", {
|
|
1198
|
-
className: "bg-
|
|
1208
|
+
className: "bg-surface-sunken border-b border-border-default",
|
|
1199
1209
|
children: /* @__PURE__ */ jsxs("tr", { children: [
|
|
1200
1210
|
/* @__PURE__ */ jsx("th", { className: "w-10 px-4 py-3" }),
|
|
1201
1211
|
/* @__PURE__ */ jsx("th", {
|
|
@@ -1225,18 +1235,18 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
|
|
|
1225
1235
|
/* @__PURE__ */ jsx("th", { className: "px-4 py-3" })
|
|
1226
1236
|
] })
|
|
1227
1237
|
}), /* @__PURE__ */ jsx("tbody", { children: [...Array(5)].map((_, i) => /* @__PURE__ */ jsx("tr", {
|
|
1228
|
-
className: "border-b border-border-
|
|
1238
|
+
className: "border-b border-border-default",
|
|
1229
1239
|
children: /* @__PURE__ */ jsx("td", {
|
|
1230
1240
|
colSpan: 8,
|
|
1231
1241
|
className: "px-4 py-4",
|
|
1232
|
-
children: /* @__PURE__ */ jsx("div", { className: "h-8 bg-
|
|
1242
|
+
children: /* @__PURE__ */ jsx("div", { className: "h-8 bg-surface-sunken rounded animate-pulse" })
|
|
1233
1243
|
})
|
|
1234
1244
|
}, i)) })]
|
|
1235
1245
|
})
|
|
1236
1246
|
})
|
|
1237
1247
|
});
|
|
1238
1248
|
if (executions.length === 0) return /* @__PURE__ */ jsxs("div", {
|
|
1239
|
-
className: "bg-
|
|
1249
|
+
className: "bg-surface rounded-lg border border-border-default p-12 text-center",
|
|
1240
1250
|
children: [
|
|
1241
1251
|
/* @__PURE__ */ jsx(Icon, {
|
|
1242
1252
|
icon: "mdi:play-box-outline",
|
|
@@ -1259,13 +1269,13 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
|
|
|
1259
1269
|
]
|
|
1260
1270
|
});
|
|
1261
1271
|
return /* @__PURE__ */ jsxs("div", {
|
|
1262
|
-
className: "bg-
|
|
1272
|
+
className: "bg-surface rounded-lg border border-border-default overflow-hidden",
|
|
1263
1273
|
children: [/* @__PURE__ */ jsx("div", {
|
|
1264
1274
|
className: "overflow-x-auto",
|
|
1265
1275
|
children: /* @__PURE__ */ jsxs("table", {
|
|
1266
1276
|
className: "w-full min-w-[800px]",
|
|
1267
1277
|
children: [/* @__PURE__ */ jsx("thead", {
|
|
1268
|
-
className: "bg-
|
|
1278
|
+
className: "bg-surface-sunken border-b border-border-default",
|
|
1269
1279
|
children: /* @__PURE__ */ jsxs("tr", { children: [
|
|
1270
1280
|
/* @__PURE__ */ jsx("th", {
|
|
1271
1281
|
className: "w-10 px-4 py-3",
|
|
@@ -1273,7 +1283,7 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
|
|
|
1273
1283
|
type: "checkbox",
|
|
1274
1284
|
checked: selection.allSelected,
|
|
1275
1285
|
onChange: () => selectAll(allRunIds),
|
|
1276
|
-
className: "w-4 h-4 rounded border-border-
|
|
1286
|
+
className: "w-4 h-4 rounded border-border-default"
|
|
1277
1287
|
})
|
|
1278
1288
|
}),
|
|
1279
1289
|
/* @__PURE__ */ jsx("th", {
|
|
@@ -1303,13 +1313,13 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
|
|
|
1303
1313
|
/* @__PURE__ */ jsx("th", { className: "px-4 py-3 w-32" })
|
|
1304
1314
|
] })
|
|
1305
1315
|
}), /* @__PURE__ */ jsx("tbody", {
|
|
1306
|
-
className: "divide-y divide-border-
|
|
1316
|
+
className: "divide-y divide-border-default",
|
|
1307
1317
|
children: executions.map((execution) => {
|
|
1308
1318
|
const isSelected = selection.runIds.includes(execution.id);
|
|
1309
1319
|
const isExpanded = expandedRows.has(execution.id);
|
|
1310
1320
|
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("tr", {
|
|
1311
1321
|
className: `
|
|
1312
|
-
hover:bg-
|
|
1322
|
+
hover:bg-surface-sunken/50 cursor-pointer transition-colors
|
|
1313
1323
|
${isSelected ? "bg-action-primary-bg/10" : ""}
|
|
1314
1324
|
`,
|
|
1315
1325
|
onClick: () => onRowClick?.(execution),
|
|
@@ -1321,7 +1331,7 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
|
|
|
1321
1331
|
type: "checkbox",
|
|
1322
1332
|
checked: isSelected,
|
|
1323
1333
|
onChange: () => toggleSelectRun(execution.id),
|
|
1324
|
-
className: "w-4 h-4 rounded border-border-
|
|
1334
|
+
className: "w-4 h-4 rounded border-border-default"
|
|
1325
1335
|
})
|
|
1326
1336
|
}),
|
|
1327
1337
|
/* @__PURE__ */ jsx("td", {
|
|
@@ -1370,7 +1380,7 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
|
|
|
1370
1380
|
children: /* @__PURE__ */ jsxs("div", {
|
|
1371
1381
|
className: "flex items-center gap-2",
|
|
1372
1382
|
children: [/* @__PURE__ */ jsx("div", {
|
|
1373
|
-
className: "flex-1 h-2 bg-
|
|
1383
|
+
className: "flex-1 h-2 bg-surface-sunken rounded-full overflow-hidden max-w-[100px]",
|
|
1374
1384
|
children: /* @__PURE__ */ jsx("div", {
|
|
1375
1385
|
className: `h-full transition-all ${execution.status === "FAILED" ? "bg-[var(--color-status-error-bg)]" : execution.status === "COMPLETED" ? "bg-[var(--color-status-success-bg)]" : "bg-[var(--color-status-info-bg)]"}`,
|
|
1376
1386
|
style: { width: `${execution.progress}%` }
|
|
@@ -1396,7 +1406,7 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
|
|
|
1396
1406
|
onClick: () => toggleRowExpanded(execution.id),
|
|
1397
1407
|
"aria-expanded": isExpanded,
|
|
1398
1408
|
"aria-label": isExpanded ? tr("fluidgrids.executions.executionTable.collapseRow", "Hide run details") : tr("fluidgrids.executions.executionTable.expandRow", "Show run details"),
|
|
1399
|
-
className: "p-1.5 rounded hover:bg-
|
|
1409
|
+
className: "p-1.5 rounded hover:bg-surface-sunken text-text-secondary",
|
|
1400
1410
|
children: /* @__PURE__ */ jsx(Icon, {
|
|
1401
1411
|
icon: isExpanded ? "mdi:chevron-up" : "mdi:chevron-down",
|
|
1402
1412
|
width: 18
|
|
@@ -1408,7 +1418,7 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
|
|
|
1408
1418
|
"data-agent": "confirm",
|
|
1409
1419
|
type: "button",
|
|
1410
1420
|
onClick: () => onAction?.(action.action, execution),
|
|
1411
|
-
className: "p-1.5 rounded hover:bg-
|
|
1421
|
+
className: "p-1.5 rounded hover:bg-surface-sunken text-text-secondary",
|
|
1412
1422
|
title: action.label,
|
|
1413
1423
|
"aria-label": action.label,
|
|
1414
1424
|
children: /* @__PURE__ */ jsx(Icon, {
|
|
@@ -1419,7 +1429,7 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
|
|
|
1419
1429
|
}),
|
|
1420
1430
|
/* @__PURE__ */ jsx("button", {
|
|
1421
1431
|
onClick: () => navigate(`../runs/${execution.id}`),
|
|
1422
|
-
className: "p-1.5 rounded hover:bg-
|
|
1432
|
+
className: "p-1.5 rounded hover:bg-surface-sunken text-text-secondary",
|
|
1423
1433
|
title: tr("fluidgrids.executions.executionTable.viewDetails", "View Details"),
|
|
1424
1434
|
"aria-label": tr("fluidgrids.executions.executionTable.viewDetails", "View Details"),
|
|
1425
1435
|
children: /* @__PURE__ */ jsx(Icon, {
|
|
@@ -1433,7 +1443,7 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
|
|
|
1433
1443
|
]
|
|
1434
1444
|
}, execution.id), isExpanded && /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", {
|
|
1435
1445
|
colSpan: 8,
|
|
1436
|
-
className: "px-4 py-4 bg-
|
|
1446
|
+
className: "px-4 py-4 bg-surface-sunken/30",
|
|
1437
1447
|
children: /* @__PURE__ */ jsxs("div", {
|
|
1438
1448
|
className: "grid grid-cols-2 lg:grid-cols-4 gap-4",
|
|
1439
1449
|
children: [
|
|
@@ -1467,7 +1477,7 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
|
|
|
1467
1477
|
]
|
|
1468
1478
|
}),
|
|
1469
1479
|
(execution.skippedNodes ?? 0) > 0 && /* @__PURE__ */ jsxs("span", {
|
|
1470
|
-
className: "text-
|
|
1480
|
+
className: "text-text-muted",
|
|
1471
1481
|
children: [
|
|
1472
1482
|
execution.skippedNodes,
|
|
1473
1483
|
" ",
|
|
@@ -1500,7 +1510,7 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
|
|
|
1500
1510
|
})]
|
|
1501
1511
|
})
|
|
1502
1512
|
}), /* @__PURE__ */ jsx("div", {
|
|
1503
|
-
className: "sm:hidden px-4 py-2 bg-
|
|
1513
|
+
className: "sm:hidden px-4 py-2 bg-surface-sunken border-t border-border-default text-xs text-text-secondary text-center",
|
|
1504
1514
|
children: tr("fluidgrids.executions.executionTable.swipeHint", "Swipe to see more columns")
|
|
1505
1515
|
})]
|
|
1506
1516
|
});
|
|
@@ -1561,17 +1571,17 @@ function ExecutionCards({ executions, workflowNames, loading, onCardClick, onAct
|
|
|
1561
1571
|
if (loading) return /* @__PURE__ */ jsx("div", {
|
|
1562
1572
|
className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",
|
|
1563
1573
|
children: Array.from({ length: 6 }).map((_, i) => /* @__PURE__ */ jsxs("div", {
|
|
1564
|
-
className: "rounded-lg border border-border-
|
|
1574
|
+
className: "rounded-lg border border-border-default bg-surface p-4 animate-pulse",
|
|
1565
1575
|
children: [
|
|
1566
1576
|
/* @__PURE__ */ jsxs("div", {
|
|
1567
1577
|
className: "flex justify-between mb-3",
|
|
1568
|
-
children: [/* @__PURE__ */ jsx("div", { className: "h-4 bg-
|
|
1578
|
+
children: [/* @__PURE__ */ jsx("div", { className: "h-4 bg-surface-sunken rounded w-32" }), /* @__PURE__ */ jsx("div", { className: "h-5 bg-surface-sunken rounded-full w-20" })]
|
|
1569
1579
|
}),
|
|
1570
|
-
/* @__PURE__ */ jsx("div", { className: "h-3 bg-
|
|
1571
|
-
/* @__PURE__ */ jsx("div", { className: "h-2 bg-
|
|
1580
|
+
/* @__PURE__ */ jsx("div", { className: "h-3 bg-surface-sunken rounded w-48 mb-2" }),
|
|
1581
|
+
/* @__PURE__ */ jsx("div", { className: "h-2 bg-surface-sunken rounded w-full mb-3" }),
|
|
1572
1582
|
/* @__PURE__ */ jsxs("div", {
|
|
1573
1583
|
className: "flex justify-between",
|
|
1574
|
-
children: [/* @__PURE__ */ jsx("div", { className: "h-3 bg-
|
|
1584
|
+
children: [/* @__PURE__ */ jsx("div", { className: "h-3 bg-surface-sunken rounded w-16" }), /* @__PURE__ */ jsx("div", { className: "h-3 bg-surface-sunken rounded w-24" })]
|
|
1575
1585
|
})
|
|
1576
1586
|
]
|
|
1577
1587
|
}, i))
|
|
@@ -1601,8 +1611,8 @@ function ExecutionCards({ executions, workflowNames, loading, onCardClick, onAct
|
|
|
1601
1611
|
return /* @__PURE__ */ jsxs("div", {
|
|
1602
1612
|
onClick: () => onCardClick(execution),
|
|
1603
1613
|
className: `
|
|
1604
|
-
rounded-lg border bg-
|
|
1605
|
-
transition-all duration-200 hover:shadow-md hover:border-border-
|
|
1614
|
+
rounded-lg border bg-surface p-4 cursor-pointer
|
|
1615
|
+
transition-all duration-200 hover:shadow-md hover:border-border-strong
|
|
1606
1616
|
${config.borderColor}
|
|
1607
1617
|
`,
|
|
1608
1618
|
children: [
|
|
@@ -1614,7 +1624,7 @@ function ExecutionCards({ executions, workflowNames, loading, onCardClick, onAct
|
|
|
1614
1624
|
className: "text-sm font-semibold text-text-primary truncate",
|
|
1615
1625
|
children: execution.workflow?.name || workflowNames?.[execution.workflowKey] || execution.workflowKey
|
|
1616
1626
|
}), /* @__PURE__ */ jsx("p", {
|
|
1617
|
-
className: "text-xs text-text-
|
|
1627
|
+
className: "text-xs text-text-muted mt-0.5",
|
|
1618
1628
|
children: formatRunVersion(execution.version)
|
|
1619
1629
|
})]
|
|
1620
1630
|
}), /* @__PURE__ */ jsx(ExecutionStatusBadge, {
|
|
@@ -1625,10 +1635,10 @@ function ExecutionCards({ executions, workflowNames, loading, onCardClick, onAct
|
|
|
1625
1635
|
/* @__PURE__ */ jsxs("div", {
|
|
1626
1636
|
className: "mb-3",
|
|
1627
1637
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
1628
|
-
className: "flex justify-between text-xs text-text-
|
|
1638
|
+
className: "flex justify-between text-xs text-text-muted mb-1",
|
|
1629
1639
|
children: [/* @__PURE__ */ jsx("span", { children: tr("fluidgrids.executions.executionCards.progressLabel", "Progress") }), /* @__PURE__ */ jsxs("span", { children: [Math.round(execution.progress), "%"] })]
|
|
1630
1640
|
}), /* @__PURE__ */ jsx("div", {
|
|
1631
|
-
className: "h-1.5 bg-
|
|
1641
|
+
className: "h-1.5 bg-surface-sunken rounded-full overflow-hidden",
|
|
1632
1642
|
children: /* @__PURE__ */ jsx("div", {
|
|
1633
1643
|
className: `h-full rounded-full transition-all duration-500 ${getProgressColor(execution.status)}`,
|
|
1634
1644
|
style: { width: `${Math.min(execution.progress, 100)}%` }
|
|
@@ -1672,7 +1682,7 @@ function ExecutionCards({ executions, workflowNames, loading, onCardClick, onAct
|
|
|
1672
1682
|
]
|
|
1673
1683
|
}),
|
|
1674
1684
|
/* @__PURE__ */ jsxs("div", {
|
|
1675
|
-
className: "flex items-center justify-between text-xs text-text-
|
|
1685
|
+
className: "flex items-center justify-between text-xs text-text-muted pt-2 border-t border-border-default",
|
|
1676
1686
|
children: [/* @__PURE__ */ jsxs("span", {
|
|
1677
1687
|
className: "flex items-center gap-1",
|
|
1678
1688
|
children: [/* @__PURE__ */ jsx(Icon, {
|
|
@@ -1687,7 +1697,7 @@ function ExecutionCards({ executions, workflowNames, loading, onCardClick, onAct
|
|
|
1687
1697
|
const actions = runQuickActions(execution.status, { resumeOffered });
|
|
1688
1698
|
if (actions.length === 0) return null;
|
|
1689
1699
|
return /* @__PURE__ */ jsx("div", {
|
|
1690
|
-
className: "flex gap-1 mt-2 pt-2 border-t border-border-
|
|
1700
|
+
className: "flex gap-1 mt-2 pt-2 border-t border-border-default",
|
|
1691
1701
|
children: actions.map((action) => {
|
|
1692
1702
|
const { icon, label, hover } = CARD_ACTIONS(tr)[action];
|
|
1693
1703
|
return /* @__PURE__ */ jsxs("button", {
|
|
@@ -1697,7 +1707,7 @@ function ExecutionCards({ executions, workflowNames, loading, onCardClick, onAct
|
|
|
1697
1707
|
e.stopPropagation();
|
|
1698
1708
|
onAction(action, execution);
|
|
1699
1709
|
},
|
|
1700
|
-
className: `flex items-center gap-1 text-xs px-2 py-1 rounded bg-
|
|
1710
|
+
className: `flex items-center gap-1 text-xs px-2 py-1 rounded bg-surface-sunken text-text-secondary transition-colors ${hover}`,
|
|
1701
1711
|
children: [
|
|
1702
1712
|
/* @__PURE__ */ jsx(Icon, {
|
|
1703
1713
|
icon,
|
|
@@ -1766,12 +1776,12 @@ function ExecutionTimeline({ executions, workflowNames, loading, onItemClick, on
|
|
|
1766
1776
|
className: "space-y-6 pl-8",
|
|
1767
1777
|
children: Array.from({ length: 4 }).map((_, i) => /* @__PURE__ */ jsxs("div", {
|
|
1768
1778
|
className: "flex gap-4 animate-pulse",
|
|
1769
|
-
children: [/* @__PURE__ */ jsx("div", { className: "w-3 h-3 rounded-full bg-
|
|
1779
|
+
children: [/* @__PURE__ */ jsx("div", { className: "w-3 h-3 rounded-full bg-surface-sunken mt-1.5 shrink-0" }), /* @__PURE__ */ jsxs("div", {
|
|
1770
1780
|
className: "flex-1",
|
|
1771
1781
|
children: [
|
|
1772
|
-
/* @__PURE__ */ jsx("div", { className: "h-4 bg-
|
|
1773
|
-
/* @__PURE__ */ jsx("div", { className: "h-3 bg-
|
|
1774
|
-
/* @__PURE__ */ jsx("div", { className: "h-3 bg-
|
|
1782
|
+
/* @__PURE__ */ jsx("div", { className: "h-4 bg-surface-sunken rounded w-48 mb-2" }),
|
|
1783
|
+
/* @__PURE__ */ jsx("div", { className: "h-3 bg-surface-sunken rounded w-32 mb-1" }),
|
|
1784
|
+
/* @__PURE__ */ jsx("div", { className: "h-3 bg-surface-sunken rounded w-24" })
|
|
1775
1785
|
]
|
|
1776
1786
|
})]
|
|
1777
1787
|
}, i))
|
|
@@ -1803,15 +1813,15 @@ function ExecutionTimeline({ executions, workflowNames, loading, onItemClick, on
|
|
|
1803
1813
|
/* @__PURE__ */ jsx(Icon, {
|
|
1804
1814
|
icon: "mdi:calendar",
|
|
1805
1815
|
width: 14,
|
|
1806
|
-
className: "text-text-
|
|
1816
|
+
className: "text-text-muted"
|
|
1807
1817
|
}),
|
|
1808
1818
|
/* @__PURE__ */ jsx("span", {
|
|
1809
|
-
className: "text-xs font-semibold text-text-
|
|
1819
|
+
className: "text-xs font-semibold text-text-muted uppercase tracking-wider",
|
|
1810
1820
|
children: dateLabel
|
|
1811
1821
|
}),
|
|
1812
|
-
/* @__PURE__ */ jsx("div", { className: "flex-1 h-px bg-border-
|
|
1822
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1 h-px bg-border-default" }),
|
|
1813
1823
|
/* @__PURE__ */ jsxs("span", {
|
|
1814
|
-
className: "text-xs text-text-
|
|
1824
|
+
className: "text-xs text-text-muted",
|
|
1815
1825
|
children: [
|
|
1816
1826
|
dateExecutions.length,
|
|
1817
1827
|
" ",
|
|
@@ -1821,7 +1831,7 @@ function ExecutionTimeline({ executions, workflowNames, loading, onItemClick, on
|
|
|
1821
1831
|
]
|
|
1822
1832
|
}), /* @__PURE__ */ jsxs("div", {
|
|
1823
1833
|
className: "relative ml-4",
|
|
1824
|
-
children: [/* @__PURE__ */ jsx("div", { className: "absolute left-[5px] top-0 bottom-0 w-px bg-border-
|
|
1834
|
+
children: [/* @__PURE__ */ jsx("div", { className: "absolute left-[5px] top-0 bottom-0 w-px bg-border-default" }), /* @__PURE__ */ jsx("div", {
|
|
1825
1835
|
className: "space-y-4",
|
|
1826
1836
|
children: dateExecutions.map((execution, idx) => {
|
|
1827
1837
|
const isLast = idx === dateExecutions.length - 1;
|
|
@@ -1831,11 +1841,11 @@ function ExecutionTimeline({ executions, workflowNames, loading, onItemClick, on
|
|
|
1831
1841
|
className: "relative flex gap-4 cursor-pointer group",
|
|
1832
1842
|
children: [/* @__PURE__ */ jsx("div", {
|
|
1833
1843
|
className: "relative z-10 shrink-0 mt-1.5",
|
|
1834
|
-
children: /* @__PURE__ */ jsx("div", { className: `w-[11px] h-[11px] rounded-full border-2 border-
|
|
1844
|
+
children: /* @__PURE__ */ jsx("div", { className: `w-[11px] h-[11px] rounded-full border-2 border-surface-canvas ${getStatusDotColor(execution.status)}` })
|
|
1835
1845
|
}), /* @__PURE__ */ jsxs("div", {
|
|
1836
1846
|
className: `
|
|
1837
|
-
flex-1 rounded-lg border border-border-
|
|
1838
|
-
transition-all duration-200 group-hover:shadow-sm group-hover:border-border-
|
|
1847
|
+
flex-1 rounded-lg border border-border-default bg-surface p-3
|
|
1848
|
+
transition-all duration-200 group-hover:shadow-sm group-hover:border-border-strong
|
|
1839
1849
|
${isLast ? "" : "mb-0"}
|
|
1840
1850
|
`,
|
|
1841
1851
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
@@ -1849,7 +1859,7 @@ function ExecutionTimeline({ executions, workflowNames, loading, onItemClick, on
|
|
|
1849
1859
|
className: "text-sm font-semibold text-text-primary truncate",
|
|
1850
1860
|
children: execution.workflow?.name || workflowNames?.[execution.workflowKey] || execution.workflowKey
|
|
1851
1861
|
}), /* @__PURE__ */ jsx("span", {
|
|
1852
|
-
className: "text-xs text-text-
|
|
1862
|
+
className: "text-xs text-text-muted",
|
|
1853
1863
|
children: formatRunVersion(execution.version)
|
|
1854
1864
|
})]
|
|
1855
1865
|
}),
|
|
@@ -1902,7 +1912,7 @@ function ExecutionTimeline({ executions, workflowNames, loading, onItemClick, on
|
|
|
1902
1912
|
e.stopPropagation();
|
|
1903
1913
|
onAction("cancel", execution);
|
|
1904
1914
|
},
|
|
1905
|
-
className: "p-1 rounded opacity-60 group-hover:opacity-100 focus-visible:opacity-100 hover:bg-status-error-bg-subtle text-text-
|
|
1915
|
+
className: "p-1 rounded opacity-60 group-hover:opacity-100 focus-visible:opacity-100 hover:bg-status-error-bg-subtle text-text-muted hover:text-status-error-text transition-all",
|
|
1906
1916
|
title: tr("fluidgrids.executions.executionTimeline.cancelTooltip", "Cancel execution"),
|
|
1907
1917
|
"aria-label": tr("fluidgrids.executions.executionTimeline.cancelTooltip", "Cancel execution"),
|
|
1908
1918
|
children: /* @__PURE__ */ jsx(Icon, {
|
|
@@ -1914,7 +1924,7 @@ function ExecutionTimeline({ executions, workflowNames, loading, onItemClick, on
|
|
|
1914
1924
|
}), execution.status === "RUNNING" && /* @__PURE__ */ jsx("div", {
|
|
1915
1925
|
className: "mt-2",
|
|
1916
1926
|
children: /* @__PURE__ */ jsx("div", {
|
|
1917
|
-
className: "h-1 bg-
|
|
1927
|
+
className: "h-1 bg-surface-sunken rounded-full overflow-hidden",
|
|
1918
1928
|
children: /* @__PURE__ */ jsx("div", {
|
|
1919
1929
|
className: "h-full bg-status-info-bg rounded-full transition-all duration-500 animate-pulse",
|
|
1920
1930
|
style: { width: `${Math.min(execution.progress, 100)}%` }
|
|
@@ -2012,7 +2022,7 @@ function Pagination({ totalItems, showPageSize = true }) {
|
|
|
2012
2022
|
/* @__PURE__ */ jsx("button", {
|
|
2013
2023
|
onClick: () => goToPage(page - 1),
|
|
2014
2024
|
disabled: page === 1,
|
|
2015
|
-
className: "p-2 rounded hover:bg-
|
|
2025
|
+
className: "p-2 rounded hover:bg-surface-sunken disabled:opacity-50 disabled:cursor-not-allowed",
|
|
2016
2026
|
children: /* @__PURE__ */ jsx(Icon, {
|
|
2017
2027
|
icon: "mdi:chevron-left",
|
|
2018
2028
|
width: 20,
|
|
@@ -2028,7 +2038,7 @@ function Pagination({ totalItems, showPageSize = true }) {
|
|
|
2028
2038
|
onClick: () => goToPage(pageNum),
|
|
2029
2039
|
className: `
|
|
2030
2040
|
min-w-[32px] h-8 px-2 rounded text-sm font-medium
|
|
2031
|
-
${pageNum === page ? "bg-action-primary-bg text-action-primary-text" : "hover:bg-
|
|
2041
|
+
${pageNum === page ? "bg-action-primary-bg text-action-primary-text" : "hover:bg-surface-sunken text-text-secondary"}
|
|
2032
2042
|
`,
|
|
2033
2043
|
children: pageNum
|
|
2034
2044
|
}, pageNum))
|
|
@@ -2044,7 +2054,7 @@ function Pagination({ totalItems, showPageSize = true }) {
|
|
|
2044
2054
|
/* @__PURE__ */ jsx("button", {
|
|
2045
2055
|
onClick: () => goToPage(page + 1),
|
|
2046
2056
|
disabled: page === totalPages,
|
|
2047
|
-
className: "p-2 rounded hover:bg-
|
|
2057
|
+
className: "p-2 rounded hover:bg-surface-sunken disabled:opacity-50 disabled:cursor-not-allowed",
|
|
2048
2058
|
children: /* @__PURE__ */ jsx(Icon, {
|
|
2049
2059
|
icon: "mdi:chevron-right",
|
|
2050
2060
|
width: 20,
|
|
@@ -2188,7 +2198,7 @@ function RunsPlainTable({ executions, workflowNames, loading, canExecute = true,
|
|
|
2188
2198
|
if (loading && executions.length === 0) return /* @__PURE__ */ jsx("div", {
|
|
2189
2199
|
className: "space-y-2",
|
|
2190
2200
|
"aria-busy": "true",
|
|
2191
|
-
children: [...Array(5)].map((_, i) => /* @__PURE__ */ jsx("div", { className: "h-12 rounded-lg bg-
|
|
2201
|
+
children: [...Array(5)].map((_, i) => /* @__PURE__ */ jsx("div", { className: "h-12 rounded-lg bg-surface-sunken animate-pulse" }, i))
|
|
2192
2202
|
});
|
|
2193
2203
|
return /* @__PURE__ */ jsx("div", {
|
|
2194
2204
|
"data-testid": "runs-plain-table",
|
|
@@ -2332,7 +2342,7 @@ const OPERATOR_LABELS = {
|
|
|
2332
2342
|
STARTS_WITH: "starts with",
|
|
2333
2343
|
CONTAINS: "contains"
|
|
2334
2344
|
};
|
|
2335
|
-
function SearchAttributeFilterBar({ applied, onApply, conflicts }) {
|
|
2345
|
+
function SearchAttributeFilterBar({ applied, onApply, conflicts, className }) {
|
|
2336
2346
|
const tr = useTr();
|
|
2337
2347
|
const definitions = useResource("search-attributes", true, fetchSearchAttributes);
|
|
2338
2348
|
const [state, setState] = useState(EMPTY_SEARCH_FILTER);
|
|
@@ -2366,7 +2376,7 @@ function SearchAttributeFilterBar({ applied, onApply, conflicts }) {
|
|
|
2366
2376
|
}));
|
|
2367
2377
|
};
|
|
2368
2378
|
return /* @__PURE__ */ jsxs("section", {
|
|
2369
|
-
className: "mb-4 space-y-3 rounded-lg border border-border-
|
|
2379
|
+
className: cn("mb-4 space-y-3 rounded-lg border border-border-default bg-surface p-3", className),
|
|
2370
2380
|
"data-testid": "search-attribute-filter",
|
|
2371
2381
|
children: [
|
|
2372
2382
|
/* @__PURE__ */ jsxs("div", {
|
|
@@ -2809,7 +2819,7 @@ function BatchOperationDialog({ type, input, selection, onClose, onStarted }) {
|
|
|
2809
2819
|
})]
|
|
2810
2820
|
}),
|
|
2811
2821
|
dryRun && /* @__PURE__ */ jsx("p", {
|
|
2812
|
-
className: "rounded-md bg-
|
|
2822
|
+
className: "rounded-md bg-surface-canvas p-2 text-sm text-text-primary",
|
|
2813
2823
|
"data-testid": "batch-dry-run-result",
|
|
2814
2824
|
children: tr("fluidgrids.runControl.batch.dryRunResult", "The job would select {{count}} runs.", { count: dryRun.total })
|
|
2815
2825
|
}),
|
|
@@ -2920,7 +2930,7 @@ function BatchProgressDrawer({ job: initial, open, onOpenChange, canCancel }) {
|
|
|
2920
2930
|
/* @__PURE__ */ jsx(FieldError, { message: jobs.error }),
|
|
2921
2931
|
(jobs.data?.items ?? []).map((item) => /* @__PURE__ */ jsxs("button", {
|
|
2922
2932
|
type: "button",
|
|
2923
|
-
className: "w-full rounded-md border border-border-
|
|
2933
|
+
className: "w-full rounded-md border border-border-default p-2 text-left hover:bg-surface-sunken",
|
|
2924
2934
|
onClick: () => setJob(item),
|
|
2925
2935
|
"data-testid": `batch-job-${item.id}`,
|
|
2926
2936
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
@@ -2979,7 +2989,7 @@ function BatchJobProgress({ job, onCancel }) {
|
|
|
2979
2989
|
})]
|
|
2980
2990
|
}),
|
|
2981
2991
|
/* @__PURE__ */ jsx("div", {
|
|
2982
|
-
className: "h-2 overflow-hidden rounded-full bg-
|
|
2992
|
+
className: "h-2 overflow-hidden rounded-full bg-surface-sunken",
|
|
2983
2993
|
children: /* @__PURE__ */ jsx("div", {
|
|
2984
2994
|
className: "h-full bg-[var(--color-status-info-bg)]",
|
|
2985
2995
|
style: { width: `${progress.percent}%` }
|
|
@@ -3057,7 +3067,7 @@ const RUN_STATUSES = [
|
|
|
3057
3067
|
function isRunStatus(value) {
|
|
3058
3068
|
return RUN_STATUSES.includes(value);
|
|
3059
3069
|
}
|
|
3060
|
-
function RunsParityBar({ workflowId, onWorkflowIdChange, total, counts, countsError, selectedStatus, onSelectStatus }) {
|
|
3070
|
+
function RunsParityBar({ workflowId, onWorkflowIdChange, total, counts, countsError, selectedStatus, onSelectStatus, className }) {
|
|
3061
3071
|
const tr = useTr();
|
|
3062
3072
|
const statusLabels = runStatusLabels(tr);
|
|
3063
3073
|
const [draft, setDraft] = useState(workflowId);
|
|
@@ -3075,7 +3085,7 @@ function RunsParityBar({ workflowId, onWorkflowIdChange, total, counts, countsEr
|
|
|
3075
3085
|
]);
|
|
3076
3086
|
return /* @__PURE__ */ jsxs("div", {
|
|
3077
3087
|
"data-testid": "runs-parity-bar",
|
|
3078
|
-
className: "mb-6 flex flex-col gap-3 lg:flex-row lg:items-center",
|
|
3088
|
+
className: cn("mb-6 flex flex-col gap-3 lg:flex-row lg:items-center", className),
|
|
3079
3089
|
children: [/* @__PURE__ */ jsxs("label", {
|
|
3080
3090
|
className: "flex min-w-0 items-center gap-2 text-sm text-text-secondary lg:w-80",
|
|
3081
3091
|
children: [
|
|
@@ -3109,14 +3119,14 @@ function RunsParityBar({ workflowId, onWorkflowIdChange, total, counts, countsEr
|
|
|
3109
3119
|
}) : /* @__PURE__ */ jsxs(Fragment$1, { children: [total !== null && /* @__PURE__ */ jsx("button", {
|
|
3110
3120
|
type: "button",
|
|
3111
3121
|
onClick: () => onSelectStatus("all"),
|
|
3112
|
-
className: cn("rounded-full border px-2.5 py-1 text-xs", selectedStatus === "all" ? "border-action-primary-bg bg-action-primary-bg text-action-primary-text" : "border-border-
|
|
3122
|
+
className: cn("rounded-full border px-2.5 py-1 text-xs", selectedStatus === "all" ? "border-action-primary-bg bg-action-primary-bg text-action-primary-text" : "border-border-default text-text-secondary hover:text-text-primary"),
|
|
3113
3123
|
"aria-pressed": selectedStatus === "all",
|
|
3114
3124
|
"data-testid": "runs-count-all",
|
|
3115
3125
|
children: tr("fluidgrids.executions.parity.countAll", "All {{count}}", { count: total })
|
|
3116
3126
|
}), counts.map(({ status, count }) => isRunStatus(status) ? /* @__PURE__ */ jsx("button", {
|
|
3117
3127
|
type: "button",
|
|
3118
3128
|
onClick: () => onSelectStatus(status),
|
|
3119
|
-
className: cn("rounded-full border px-2.5 py-1 text-xs", selectedStatus === status ? "border-action-primary-bg bg-action-primary-bg text-action-primary-text" : "border-border-
|
|
3129
|
+
className: cn("rounded-full border px-2.5 py-1 text-xs", selectedStatus === status ? "border-action-primary-bg bg-action-primary-bg text-action-primary-text" : "border-border-default text-text-secondary hover:text-text-primary"),
|
|
3120
3130
|
"aria-pressed": selectedStatus === status,
|
|
3121
3131
|
"data-testid": `runs-count-${status}`,
|
|
3122
3132
|
children: tr("fluidgrids.executions.parity.countStatus", "{{status}} {{count}}", {
|
|
@@ -3158,6 +3168,11 @@ function ExecutionsListPage() {
|
|
|
3158
3168
|
const parityEnabled = useDurableParityEnabled();
|
|
3159
3169
|
const phaseC = usePhaseCFlags();
|
|
3160
3170
|
const [searchFilter, setSearchFilter] = useState(null);
|
|
3171
|
+
const [searchFilterBuilderKey, setSearchFilterBuilderKey] = useState(0);
|
|
3172
|
+
const clearSearchFilter = () => {
|
|
3173
|
+
setSearchFilter(null);
|
|
3174
|
+
setSearchFilterBuilderKey((key) => key + 1);
|
|
3175
|
+
};
|
|
3161
3176
|
const [allMatching, setAllMatching] = useState(false);
|
|
3162
3177
|
const [batchType, setBatchType] = useState(null);
|
|
3163
3178
|
const [batchDrawer, setBatchDrawer] = useState(null);
|
|
@@ -3354,6 +3369,17 @@ function ExecutionsListPage() {
|
|
|
3354
3369
|
label: viewLabel(mode),
|
|
3355
3370
|
onSelect: () => setViewMode(mode)
|
|
3356
3371
|
}));
|
|
3372
|
+
const showBatchJobs = phaseC.runControl && selection.runIds.length === 0;
|
|
3373
|
+
const batchJobsLabel = tr("fluidgrids.runControl.batch.jobs", "Batch jobs");
|
|
3374
|
+
const openBatchJobs = () => setBatchDrawer({ job: null });
|
|
3375
|
+
const headerMenuItems = showBatchJobs ? [...viewMenuItems, {
|
|
3376
|
+
id: "batch-jobs",
|
|
3377
|
+
icon: "mdi:layers-triple-outline",
|
|
3378
|
+
label: batchJobsLabel,
|
|
3379
|
+
onSelect: openBatchJobs,
|
|
3380
|
+
separatorBefore: true,
|
|
3381
|
+
testId: "batch-jobs-button"
|
|
3382
|
+
}] : viewMenuItems;
|
|
3357
3383
|
const viewMenuToggles = [{
|
|
3358
3384
|
id: "details",
|
|
3359
3385
|
label: tr("fluidgrids.executions.executionsList.showRunDetails", "Show run details and bulk actions"),
|
|
@@ -3361,6 +3387,23 @@ function ExecutionsListPage() {
|
|
|
3361
3387
|
onCheckedChange: setShowDetails
|
|
3362
3388
|
}];
|
|
3363
3389
|
const filtersActive = countActiveFilters(filter, parityEnabled) > 0 || searchFilter !== null;
|
|
3390
|
+
const parityBar = parityEnabled ? /* @__PURE__ */ jsx(RunsParityBar, {
|
|
3391
|
+
workflowId: filter.workflowId,
|
|
3392
|
+
onWorkflowIdChange: setWorkflowIdFilter,
|
|
3393
|
+
total: statusCounts.total,
|
|
3394
|
+
counts: statusCounts.counts,
|
|
3395
|
+
countsError: statusCounts.error,
|
|
3396
|
+
selectedStatus: filter.status,
|
|
3397
|
+
onSelectStatus: handleFilterByStatus,
|
|
3398
|
+
className: v2 ? "mb-0" : void 0
|
|
3399
|
+
}) : null;
|
|
3400
|
+
const searchAttributeBar = phaseC.searchAttributes ? /* @__PURE__ */ jsx(SearchAttributeFilterBar, {
|
|
3401
|
+
applied: searchFilter,
|
|
3402
|
+
onApply: setSearchFilter,
|
|
3403
|
+
conflicts: searchFilter ? searchFilterConflicts(input) : [],
|
|
3404
|
+
className: v2 ? "mb-0" : void 0
|
|
3405
|
+
}, searchFilterBuilderKey) : null;
|
|
3406
|
+
const moreFilterRows = v2 && (parityBar || searchAttributeBar) ? /* @__PURE__ */ jsxs(Fragment$1, { children: [parityBar, searchAttributeBar] }) : void 0;
|
|
3364
3407
|
const showEmptyState = v2 && !loading && !error && executions.length === 0;
|
|
3365
3408
|
const scopedWorkflowName = workflowKeyParam ? workflowNames[workflowKeyParam] ?? workflowKeyParam : null;
|
|
3366
3409
|
const showAllWorkflows = () => {
|
|
@@ -3372,7 +3415,7 @@ function ExecutionsListPage() {
|
|
|
3372
3415
|
}, { replace: true });
|
|
3373
3416
|
};
|
|
3374
3417
|
return /* @__PURE__ */ jsxs("div", {
|
|
3375
|
-
className: "p-4 sm:p-6 bg-
|
|
3418
|
+
className: "p-4 sm:p-6 bg-surface-canvas min-h-screen",
|
|
3376
3419
|
children: [
|
|
3377
3420
|
/* @__PURE__ */ jsxs("div", {
|
|
3378
3421
|
className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 mb-6",
|
|
@@ -3393,18 +3436,18 @@ function ExecutionsListPage() {
|
|
|
3393
3436
|
] }), /* @__PURE__ */ jsxs("div", {
|
|
3394
3437
|
className: "flex flex-wrap items-center gap-3",
|
|
3395
3438
|
children: [v2 ? /* @__PURE__ */ jsx(RunActionsMenu, {
|
|
3396
|
-
items:
|
|
3439
|
+
items: headerMenuItems,
|
|
3397
3440
|
toggles: viewMenuToggles,
|
|
3398
3441
|
label: tr("fluidgrids.executions.executionsList.moreOptions", "More options"),
|
|
3399
3442
|
"data-testid": "runs-view-menu"
|
|
3400
3443
|
}) : /* @__PURE__ */ jsxs("div", {
|
|
3401
|
-
className: "flex items-center bg-
|
|
3444
|
+
className: "flex items-center bg-surface rounded-lg border border-border-default p-1",
|
|
3402
3445
|
children: [
|
|
3403
3446
|
/* @__PURE__ */ jsx("button", {
|
|
3404
3447
|
onClick: () => setViewMode("table"),
|
|
3405
3448
|
"aria-pressed": viewMode === "table",
|
|
3406
3449
|
"aria-label": tr("fluidgrids.executions.executionsList.tableViewTooltip", "Table View"),
|
|
3407
|
-
className: `p-2 rounded ${viewMode === "table" ? "bg-
|
|
3450
|
+
className: `p-2 rounded ${viewMode === "table" ? "bg-surface-sunken text-text-primary" : "text-text-secondary hover:text-text-primary"}`,
|
|
3408
3451
|
title: tr("fluidgrids.executions.executionsList.tableViewTooltip", "Table View"),
|
|
3409
3452
|
children: /* @__PURE__ */ jsx(Icon, {
|
|
3410
3453
|
icon: "mdi:table",
|
|
@@ -3415,7 +3458,7 @@ function ExecutionsListPage() {
|
|
|
3415
3458
|
onClick: () => setViewMode("cards"),
|
|
3416
3459
|
"aria-pressed": viewMode === "cards",
|
|
3417
3460
|
"aria-label": tr("fluidgrids.executions.executionsList.cardViewTooltip", "Card View"),
|
|
3418
|
-
className: `p-2 rounded ${viewMode === "cards" ? "bg-
|
|
3461
|
+
className: `p-2 rounded ${viewMode === "cards" ? "bg-surface-sunken text-text-primary" : "text-text-secondary hover:text-text-primary"}`,
|
|
3419
3462
|
title: tr("fluidgrids.executions.executionsList.cardViewTooltip", "Card View"),
|
|
3420
3463
|
children: /* @__PURE__ */ jsx(Icon, {
|
|
3421
3464
|
icon: "mdi:view-grid",
|
|
@@ -3426,7 +3469,7 @@ function ExecutionsListPage() {
|
|
|
3426
3469
|
onClick: () => setViewMode("timeline"),
|
|
3427
3470
|
"aria-pressed": viewMode === "timeline",
|
|
3428
3471
|
"aria-label": tr("fluidgrids.executions.executionsList.timelineViewTooltip", "Timeline View"),
|
|
3429
|
-
className: `p-2 rounded ${viewMode === "timeline" ? "bg-
|
|
3472
|
+
className: `p-2 rounded ${viewMode === "timeline" ? "bg-surface-sunken text-text-primary" : "text-text-secondary hover:text-text-primary"}`,
|
|
3430
3473
|
title: tr("fluidgrids.executions.executionsList.timelineViewTooltip", "Timeline View"),
|
|
3431
3474
|
children: /* @__PURE__ */ jsx(Icon, {
|
|
3432
3475
|
icon: "mdi:timeline",
|
|
@@ -3474,35 +3517,26 @@ function ExecutionsListPage() {
|
|
|
3474
3517
|
"data-tour": "fluidgrids-runs-filters",
|
|
3475
3518
|
children: /* @__PURE__ */ jsx(ExecutionFilters, {
|
|
3476
3519
|
workflows: workflowOptions,
|
|
3477
|
-
onRefresh: refetch
|
|
3520
|
+
onRefresh: refetch,
|
|
3521
|
+
moreFilters: moreFilterRows,
|
|
3522
|
+
moreFiltersActive: phaseC.searchAttributes && searchFilter !== null ? 1 : 0,
|
|
3523
|
+
onClearMoreFilters: clearSearchFilter
|
|
3478
3524
|
})
|
|
3479
3525
|
}),
|
|
3480
|
-
|
|
3481
|
-
|
|
3482
|
-
|
|
3483
|
-
total: statusCounts.total,
|
|
3484
|
-
counts: statusCounts.counts,
|
|
3485
|
-
countsError: statusCounts.error,
|
|
3486
|
-
selectedStatus: filter.status,
|
|
3487
|
-
onSelectStatus: handleFilterByStatus
|
|
3488
|
-
}),
|
|
3489
|
-
phaseC.searchAttributes && /* @__PURE__ */ jsx(SearchAttributeFilterBar, {
|
|
3490
|
-
applied: searchFilter,
|
|
3491
|
-
onApply: setSearchFilter,
|
|
3492
|
-
conflicts: searchFilter ? searchFilterConflicts(input) : []
|
|
3493
|
-
}),
|
|
3494
|
-
phaseC.runControl && selection.runIds.length === 0 && /* @__PURE__ */ jsx("div", {
|
|
3526
|
+
!v2 && parityBar,
|
|
3527
|
+
!v2 && searchAttributeBar,
|
|
3528
|
+
!v2 && showBatchJobs && /* @__PURE__ */ jsx("div", {
|
|
3495
3529
|
className: "mb-4 flex justify-end",
|
|
3496
3530
|
children: /* @__PURE__ */ jsxs(Button$1, {
|
|
3497
3531
|
variant: "ghost",
|
|
3498
3532
|
size: "sm",
|
|
3499
|
-
onClick:
|
|
3533
|
+
onClick: openBatchJobs,
|
|
3500
3534
|
"data-testid": "batch-jobs-button",
|
|
3501
3535
|
children: [/* @__PURE__ */ jsx(Icon, {
|
|
3502
3536
|
icon: "mdi:layers-triple-outline",
|
|
3503
3537
|
className: "mr-1",
|
|
3504
3538
|
width: 14
|
|
3505
|
-
}),
|
|
3539
|
+
}), batchJobsLabel]
|
|
3506
3540
|
})
|
|
3507
3541
|
}),
|
|
3508
3542
|
selection.runIds.length > 0 && (!v2 || canExecuteRuns) && /* @__PURE__ */ jsxs("div", {
|
|
@@ -3623,7 +3657,7 @@ function ExecutionsListPage() {
|
|
|
3623
3657
|
showEmptyState && /* @__PURE__ */ jsx(RunsEmptyState, {
|
|
3624
3658
|
filtered: filtersActive,
|
|
3625
3659
|
onClearFilters: () => {
|
|
3626
|
-
|
|
3660
|
+
clearSearchFilter();
|
|
3627
3661
|
resetFilters();
|
|
3628
3662
|
},
|
|
3629
3663
|
onOpenWorkflows: () => navigate("../list"),
|