@burdenoff/fluidgrids-fe-sdk 2026.804.1 → 2026.804.2
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/ExecutionDetailPage-FF2DYKAZ.js +10 -0
- package/dist/{ExecutionDetailPage-FCY3S336.js.map → ExecutionDetailPage-FF2DYKAZ.js.map} +1 -1
- package/dist/ExecutionsListPage-NKISRFMA.js +9 -0
- package/dist/{ExecutionsListPage-IZJPACQV.js.map → ExecutionsListPage-NKISRFMA.js.map} +1 -1
- package/dist/{MissingNodesInstallModal-OT3LJZ4M.js → MissingNodesInstallModal-HA5L3FK2.js} +4 -3
- package/dist/MissingNodesInstallModal-HA5L3FK2.js.map +1 -0
- package/dist/{TemplateConfigurationModal-7OT6QBEA.js → TemplateConfigurationModal-MXNGZQIC.js} +90 -21
- package/dist/TemplateConfigurationModal-MXNGZQIC.js.map +1 -0
- package/dist/{TemplateDetailPanel-T3ZHXOHX.js → TemplateDetailPanel-CJ3NPVTP.js} +50 -14
- package/dist/TemplateDetailPanel-CJ3NPVTP.js.map +1 -0
- package/dist/{WorkflowBuilder-42S2S3PO.js → WorkflowBuilder-ETVB66U6.js} +6 -5
- package/dist/{WorkflowBuilder-42S2S3PO.js.map → WorkflowBuilder-ETVB66U6.js.map} +1 -1
- package/dist/WorkflowsList-TZAN3YBA.js +11 -0
- package/dist/{WorkflowsList-L7EJW54K.js.map → WorkflowsList-TZAN3YBA.js.map} +1 -1
- package/dist/{chunk-WAVGHDYH.js → chunk-6PNRM3KQ.js} +469 -114
- package/dist/chunk-6PNRM3KQ.js.map +1 -0
- package/dist/chunk-7VNIEIR6.js +21 -0
- package/dist/chunk-7VNIEIR6.js.map +1 -0
- package/dist/{chunk-F5ACDIYR.js → chunk-IWKLEFC7.js} +205 -51
- package/dist/chunk-IWKLEFC7.js.map +1 -0
- package/dist/{chunk-BRMURCHH.js → chunk-OHGXRM6Z.js} +5 -3
- package/dist/chunk-OHGXRM6Z.js.map +1 -0
- package/dist/{chunk-CQAHXNT2.js → chunk-SG7Z2IRQ.js} +55 -18
- package/dist/chunk-SG7Z2IRQ.js.map +1 -0
- package/dist/{chunk-CN3VSAYR.js → chunk-WQ4QNHDN.js} +4600 -1229
- package/dist/chunk-WQ4QNHDN.js.map +1 -0
- package/dist/{chunk-JPHK5LAL.js → chunk-Y36DJHU3.js} +24 -8
- package/dist/chunk-Y36DJHU3.js.map +1 -0
- package/dist/{chunk-S7FNNFPU.js → chunk-YJKZSUNC.js} +140 -46
- package/dist/chunk-YJKZSUNC.js.map +1 -0
- package/dist/index.d.ts +33 -2
- package/dist/index.js +637 -174
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/ExecutionDetailPage-FCY3S336.js +0 -9
- package/dist/ExecutionsListPage-IZJPACQV.js +0 -8
- package/dist/MissingNodesInstallModal-OT3LJZ4M.js.map +0 -1
- package/dist/TemplateConfigurationModal-7OT6QBEA.js.map +0 -1
- package/dist/TemplateDetailPanel-T3ZHXOHX.js.map +0 -1
- package/dist/WorkflowsList-L7EJW54K.js +0 -10
- package/dist/chunk-BRMURCHH.js.map +0 -1
- package/dist/chunk-CN3VSAYR.js.map +0 -1
- package/dist/chunk-CQAHXNT2.js.map +0 -1
- package/dist/chunk-F5ACDIYR.js.map +0 -1
- package/dist/chunk-JPHK5LAL.js.map +0 -1
- package/dist/chunk-S7FNNFPU.js.map +0 -1
- package/dist/chunk-WAVGHDYH.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/i18n/TranslationBridge.tsx"],"names":[],"mappings":";;;AAwCO,IAAM,2BAAA,GAA0C,CAAC,IAAA,EAAM,QAAA,KAC5D;AAEF,IAAM,4BAAA,GAA+B,aAAA;AAAA,EACnC;AACF,CAAA;AAYO,SAAS,6BAAA,CAA8B;AAAA,EAC5C,CAAA;AAAA,EACA;AACF,CAAA,EAAuC;AAGrC,EAAA,MAAM,QAAQ,OAAA,CAAoB,MAAM,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AAC9C,EAAA,uBACE,GAAA,CAAC,4BAAA,CAA6B,QAAA,EAA7B,EAAsC,OACpC,QAAA,EACH,CAAA;AAEJ;AAQO,SAAS,KAAA,GAAoB;AAClC,EAAA,OAAO,WAAW,4BAA4B,CAAA;AAChD","file":"chunk-7VNIEIR6.js","sourcesContent":["/**\n * FluidGrids Translation Bridge\n *\n * Same shape as the permissions bridge next door, and for the same reason: the\n * SDK never resolves translations itself and never imports `@burdenoff/fe-libs`.\n * `@burdenoff/fe-libs` is an OPTIONAL peer dependency here, and its `useI18n()`\n * THROWS when no `I18nProvider` is mounted — so importing it would turn \"this\n * host has no i18n\" into \"the builder crashes\" for every standalone embedder\n * (/embed/workflow, /shared/:id, BigConsole, fluidgrids-embed-test).\n *\n * Instead, hosts that DO have a translator bridge it in:\n *\n * // microfe-workflows, inside the Burdenoff shell:\n * <FluidGridsTranslationProvider t={tr}>…</FluidGridsTranslationProvider>\n *\n * Without a provider the context defaults to the identity translator, which\n * returns each call's English fallback. So the SDK renders correct English with\n * no provider, and the host's language with one. Translation is never the reason\n * a component fails to render.\n *\n * ── On the English argument ──────────────────────────────────────────────────\n * `tr(key, english)` is not \"hardcoded English with extra steps\". The English is\n * the SOURCE STRING: `fluidgrids-app/scripts/extract-i18n-keys.ts` reads it as\n * the value for `key`, which is what gets seeded into `global-i18n-svc` and\n * translated into every other locale. It is also the last-resort render, which\n * is what stops a raw dot-path like `fluidgrids.builder.save` reaching a user\n * when the i18n service is unreachable.\n *\n * Two rules follow, and the extractor enforces neither — you must:\n * 1. the key must be a STRING LITERAL (a template literal or variable is\n * invisible to the extractor, so that key would never reach the bundle);\n * 2. the English must be the real, final copy, never a placeholder.\n * ────────────────────────────────────────────────────────────────────────────\n */\nimport { createContext, useContext, useMemo, type ReactNode } from \"react\";\n\n/** A host-supplied translator: `(key, englishFallback) => string`. */\nexport type Translator = (key: string, fallback: string) => string;\n\n/** No-provider default: render the English fallback the call site supplied. */\nexport const ENGLISH_FALLBACK_TRANSLATOR: Translator = (_key, fallback) =>\n fallback;\n\nconst FluidGridsTranslationContext = createContext<Translator>(\n ENGLISH_FALLBACK_TRANSLATOR,\n);\n\nexport interface FluidGridsTranslationProviderProps {\n /**\n * The host's translator. Must be referentially stable per locale (wrap it in\n * `useCallback` keyed on the locale) — it is a context value, so a new\n * function identity on every render re-renders every consumer.\n */\n t: Translator;\n children: ReactNode;\n}\n\nexport function FluidGridsTranslationProvider({\n t,\n children,\n}: FluidGridsTranslationProviderProps) {\n // Depending on `t` is what makes a locale switch propagate: the host rebuilds\n // `t` when the locale changes, which re-renders every consumer in the SDK.\n const value = useMemo<Translator>(() => t, [t]);\n return (\n <FluidGridsTranslationContext.Provider value={value}>\n {children}\n </FluidGridsTranslationContext.Provider>\n );\n}\n\n/**\n * Translate a UI string, falling back to English.\n *\n * const tr = useTr();\n * <Button>{tr(\"fluidgrids.builder.save\", \"Save\")}</Button>\n */\nexport function useTr(): Translator {\n return useContext(FluidGridsTranslationContext);\n}\n"]}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { useExecution, buildNodeDisplayMap, useExecutionActions, useAutoRefresh, ExecutionStatusBadge, formatRunVersion, NodeTimeline, RunLogViewer } from './chunk-
|
|
1
|
+
import { useExecution, buildNodeDisplayMap, useExecutionActions, useAutoRefresh, ExecutionStatusBadge, formatRunVersion, NodeTimeline, RunLogViewer } from './chunk-6PNRM3KQ.js';
|
|
2
2
|
import { useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS } from './chunk-UIY2HBWA.js';
|
|
3
3
|
import { RunLogsDocument, throwIfResultError, RunLogAppendedDocument } from './chunk-V5UEEB74.js';
|
|
4
4
|
import { getFluidGridsClientSafe } from './chunk-5BDQNSP3.js';
|
|
5
5
|
import { getFluidGridsConfig } from './chunk-WWU2O2SR.js';
|
|
6
|
+
import { useTr } from './chunk-7VNIEIR6.js';
|
|
6
7
|
import { useState, useMemo, useCallback, useRef, useEffect } from 'react';
|
|
7
8
|
import { useParams, useNavigate, Link } from 'react-router';
|
|
8
9
|
import { Icon } from '@iconify/react';
|
|
@@ -162,6 +163,7 @@ function useRunLogs(runId, options = {}) {
|
|
|
162
163
|
};
|
|
163
164
|
}
|
|
164
165
|
function ExecutionDetailPage() {
|
|
166
|
+
const tr = useTr();
|
|
165
167
|
const { runId } = useParams();
|
|
166
168
|
const navigate = useNavigate();
|
|
167
169
|
const [activeTab, setActiveTab] = useState("timeline");
|
|
@@ -274,12 +276,19 @@ function ExecutionDetailPage() {
|
|
|
274
276
|
}
|
|
275
277
|
if (error) {
|
|
276
278
|
return /* @__PURE__ */ jsxs("div", { className: "p-4 sm:p-6 bg-background-primary min-h-screen", children: [
|
|
277
|
-
/* @__PURE__ */
|
|
279
|
+
/* @__PURE__ */ jsxs(
|
|
278
280
|
Link,
|
|
279
281
|
{
|
|
280
282
|
to: "../runs",
|
|
281
283
|
className: "text-action-primary-text hover:underline text-sm mb-4 inline-block",
|
|
282
|
-
children:
|
|
284
|
+
children: [
|
|
285
|
+
"\u2190",
|
|
286
|
+
" ",
|
|
287
|
+
tr(
|
|
288
|
+
"fluidgrids.executions.executionDetail.backToExecutions",
|
|
289
|
+
"Back to Executions"
|
|
290
|
+
)
|
|
291
|
+
]
|
|
283
292
|
}
|
|
284
293
|
),
|
|
285
294
|
/* @__PURE__ */ jsxs("div", { className: "bg-[var(--color-status-error-bg-subtle)] border border-[var(--color-status-error-border)] rounded-lg p-6 text-center", children: [
|
|
@@ -291,20 +300,30 @@ function ExecutionDetailPage() {
|
|
|
291
300
|
width: 48
|
|
292
301
|
}
|
|
293
302
|
),
|
|
294
|
-
/* @__PURE__ */ jsx("h2", { className: "text-lg font-medium text-[var(--color-status-error-text)] mb-2", children:
|
|
303
|
+
/* @__PURE__ */ jsx("h2", { className: "text-lg font-medium text-[var(--color-status-error-text)] mb-2", children: tr(
|
|
304
|
+
"fluidgrids.executions.executionDetail.loadErrorTitle",
|
|
305
|
+
"Failed to load execution"
|
|
306
|
+
) }),
|
|
295
307
|
/* @__PURE__ */ jsx("p", { className: "text-[var(--color-status-error-text)] mb-4", children: error.message }),
|
|
296
|
-
/* @__PURE__ */ jsx(Button, { variant: "outline", onClick: refetch, children: "Try Again" })
|
|
308
|
+
/* @__PURE__ */ jsx(Button, { variant: "outline", onClick: refetch, children: tr("fluidgrids.executions.executionDetail.tryAgain", "Try Again") })
|
|
297
309
|
] })
|
|
298
310
|
] });
|
|
299
311
|
}
|
|
300
312
|
if (!execution) {
|
|
301
313
|
return /* @__PURE__ */ jsxs("div", { className: "p-4 sm:p-6 bg-background-primary min-h-screen", children: [
|
|
302
|
-
/* @__PURE__ */
|
|
314
|
+
/* @__PURE__ */ jsxs(
|
|
303
315
|
Link,
|
|
304
316
|
{
|
|
305
317
|
to: "../runs",
|
|
306
318
|
className: "text-action-primary-text hover:underline text-sm mb-4 inline-block",
|
|
307
|
-
children:
|
|
319
|
+
children: [
|
|
320
|
+
"\u2190",
|
|
321
|
+
" ",
|
|
322
|
+
tr(
|
|
323
|
+
"fluidgrids.executions.executionDetail.backToExecutions",
|
|
324
|
+
"Back to Executions"
|
|
325
|
+
)
|
|
326
|
+
]
|
|
308
327
|
}
|
|
309
328
|
),
|
|
310
329
|
/* @__PURE__ */ jsxs("div", { className: "bg-background-secondary border border-border-secondary rounded-lg p-6 text-center", children: [
|
|
@@ -316,40 +335,86 @@ function ExecutionDetailPage() {
|
|
|
316
335
|
width: 48
|
|
317
336
|
}
|
|
318
337
|
),
|
|
319
|
-
/* @__PURE__ */ jsx("h2", { className: "text-lg font-medium text-text-primary mb-2", children:
|
|
338
|
+
/* @__PURE__ */ jsx("h2", { className: "text-lg font-medium text-text-primary mb-2", children: tr(
|
|
339
|
+
"fluidgrids.executions.executionDetail.notFoundTitle",
|
|
340
|
+
"Execution not found"
|
|
341
|
+
) }),
|
|
320
342
|
/* @__PURE__ */ jsxs("p", { className: "text-text-secondary", children: [
|
|
321
|
-
|
|
343
|
+
tr(
|
|
344
|
+
"fluidgrids.executions.executionDetail.notFoundDescriptionPrefix",
|
|
345
|
+
"The execution with ID"
|
|
346
|
+
),
|
|
347
|
+
" ",
|
|
348
|
+
'"',
|
|
322
349
|
runId,
|
|
323
|
-
'"
|
|
350
|
+
'"',
|
|
351
|
+
" ",
|
|
352
|
+
tr(
|
|
353
|
+
"fluidgrids.executions.executionDetail.notFoundDescriptionSuffix",
|
|
354
|
+
"could not be found."
|
|
355
|
+
)
|
|
324
356
|
] })
|
|
325
357
|
] })
|
|
326
358
|
] });
|
|
327
359
|
}
|
|
328
360
|
const tabs = [
|
|
329
|
-
{
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
361
|
+
{
|
|
362
|
+
id: "timeline",
|
|
363
|
+
label: tr(
|
|
364
|
+
"fluidgrids.executions.executionDetail.timelineTab",
|
|
365
|
+
"Timeline"
|
|
366
|
+
),
|
|
367
|
+
icon: "mdi:timeline"
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
id: "logs",
|
|
371
|
+
label: tr("fluidgrids.executions.executionDetail.logsTab", "Logs"),
|
|
372
|
+
icon: "mdi:text-box-outline"
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
id: "input",
|
|
376
|
+
label: tr("fluidgrids.executions.executionDetail.inputTab", "Input Data"),
|
|
377
|
+
icon: "mdi:code-json"
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
id: "context",
|
|
381
|
+
label: tr("fluidgrids.executions.executionDetail.contextTab", "Context"),
|
|
382
|
+
icon: "mdi:information-outline"
|
|
383
|
+
}
|
|
333
384
|
];
|
|
334
385
|
return /* @__PURE__ */ jsxs("div", { className: "p-4 sm:p-6 bg-background-primary min-h-screen", children: [
|
|
335
|
-
/* @__PURE__ */
|
|
386
|
+
/* @__PURE__ */ jsxs(
|
|
336
387
|
Link,
|
|
337
388
|
{
|
|
338
389
|
to: "../runs",
|
|
339
390
|
className: "text-action-primary-text hover:underline text-sm mb-4 inline-block",
|
|
340
|
-
children:
|
|
391
|
+
children: [
|
|
392
|
+
"\u2190",
|
|
393
|
+
" ",
|
|
394
|
+
tr(
|
|
395
|
+
"fluidgrids.executions.executionDetail.backToExecutions",
|
|
396
|
+
"Back to Executions"
|
|
397
|
+
)
|
|
398
|
+
]
|
|
341
399
|
}
|
|
342
400
|
),
|
|
343
401
|
execution.parentRunId && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-3 text-sm", children: [
|
|
344
402
|
/* @__PURE__ */ jsx(Icon, { icon: "mdi:sitemap", className: "text-indigo-500", width: 16 }),
|
|
345
|
-
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children:
|
|
403
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
404
|
+
"fluidgrids.executions.executionDetail.subWorkflowOf",
|
|
405
|
+
"Sub-workflow of"
|
|
406
|
+
) }),
|
|
346
407
|
/* @__PURE__ */ jsxs(
|
|
347
408
|
Link,
|
|
348
409
|
{
|
|
349
410
|
to: `../runs/${execution.parentRunId}`,
|
|
350
411
|
className: "text-indigo-600 hover:underline font-medium",
|
|
351
412
|
children: [
|
|
352
|
-
|
|
413
|
+
tr(
|
|
414
|
+
"fluidgrids.executions.executionDetail.parentRunLinkPrefix",
|
|
415
|
+
"Parent Run"
|
|
416
|
+
),
|
|
417
|
+
" ",
|
|
353
418
|
execution.parentRunId.slice(0, 12),
|
|
354
419
|
"..."
|
|
355
420
|
]
|
|
@@ -361,7 +426,10 @@ function ExecutionDetailPage() {
|
|
|
361
426
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 mb-2", children: [
|
|
362
427
|
/* @__PURE__ */ jsx("h1", { className: "text-2xl sm:text-3xl font-bold text-text-primary", children: execution.workflow?.name || execution.workflowKey }),
|
|
363
428
|
/* @__PURE__ */ jsx(ExecutionStatusBadge, { status: execution.status, size: "lg" }),
|
|
364
|
-
execution.parentRunId && /* @__PURE__ */ jsx("span", { className: "px-2 py-0.5 text-xs bg-indigo-100 text-indigo-700 rounded", children:
|
|
429
|
+
execution.parentRunId && /* @__PURE__ */ jsx("span", { className: "px-2 py-0.5 text-xs bg-indigo-100 text-indigo-700 rounded", children: tr(
|
|
430
|
+
"fluidgrids.executions.executionDetail.subWorkflowBadge",
|
|
431
|
+
"Sub-Workflow"
|
|
432
|
+
) })
|
|
365
433
|
] }),
|
|
366
434
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-4 text-sm text-text-secondary", children: [
|
|
367
435
|
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [
|
|
@@ -392,7 +460,10 @@ function ExecutionDetailPage() {
|
|
|
392
460
|
className: "w-4 h-4 rounded"
|
|
393
461
|
}
|
|
394
462
|
),
|
|
395
|
-
|
|
463
|
+
tr(
|
|
464
|
+
"fluidgrids.executions.executionDetail.autoRefreshToggle",
|
|
465
|
+
"Auto-refresh"
|
|
466
|
+
)
|
|
396
467
|
] }),
|
|
397
468
|
canControlRuns && execution.status === "RUNNING" && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
398
469
|
/* @__PURE__ */ jsxs(
|
|
@@ -404,7 +475,10 @@ function ExecutionDetailPage() {
|
|
|
404
475
|
disabled: actionLoading,
|
|
405
476
|
children: [
|
|
406
477
|
/* @__PURE__ */ jsx(Icon, { icon: "mdi:pause", className: "mr-1", width: 16 }),
|
|
407
|
-
|
|
478
|
+
tr(
|
|
479
|
+
"fluidgrids.executions.executionDetail.pauseButton",
|
|
480
|
+
"Pause"
|
|
481
|
+
)
|
|
408
482
|
]
|
|
409
483
|
}
|
|
410
484
|
),
|
|
@@ -418,7 +492,10 @@ function ExecutionDetailPage() {
|
|
|
418
492
|
className: "border-[var(--color-status-warning-border)] text-[var(--color-status-warning-text)] hover:bg-[var(--color-status-warning-bg-subtle)]",
|
|
419
493
|
children: [
|
|
420
494
|
/* @__PURE__ */ jsx(Icon, { icon: "mdi:stop", className: "mr-1", width: 16 }),
|
|
421
|
-
|
|
495
|
+
tr(
|
|
496
|
+
"fluidgrids.executions.executionDetail.cancelButton",
|
|
497
|
+
"Cancel"
|
|
498
|
+
)
|
|
422
499
|
]
|
|
423
500
|
}
|
|
424
501
|
)
|
|
@@ -433,7 +510,10 @@ function ExecutionDetailPage() {
|
|
|
433
510
|
disabled: actionLoading,
|
|
434
511
|
children: [
|
|
435
512
|
/* @__PURE__ */ jsx(Icon, { icon: "mdi:play", className: "mr-1", width: 16 }),
|
|
436
|
-
|
|
513
|
+
tr(
|
|
514
|
+
"fluidgrids.executions.executionDetail.resumeButton",
|
|
515
|
+
"Resume"
|
|
516
|
+
)
|
|
437
517
|
]
|
|
438
518
|
}
|
|
439
519
|
),
|
|
@@ -447,7 +527,10 @@ function ExecutionDetailPage() {
|
|
|
447
527
|
className: "border-[var(--color-status-warning-border)] text-[var(--color-status-warning-text)] hover:bg-[var(--color-status-warning-bg-subtle)]",
|
|
448
528
|
children: [
|
|
449
529
|
/* @__PURE__ */ jsx(Icon, { icon: "mdi:stop", className: "mr-1", width: 16 }),
|
|
450
|
-
|
|
530
|
+
tr(
|
|
531
|
+
"fluidgrids.executions.executionDetail.cancelButton",
|
|
532
|
+
"Cancel"
|
|
533
|
+
)
|
|
451
534
|
]
|
|
452
535
|
}
|
|
453
536
|
)
|
|
@@ -461,7 +544,10 @@ function ExecutionDetailPage() {
|
|
|
461
544
|
disabled: actionLoading,
|
|
462
545
|
children: [
|
|
463
546
|
/* @__PURE__ */ jsx(Icon, { icon: "mdi:stop", className: "mr-1", width: 16 }),
|
|
464
|
-
|
|
547
|
+
tr(
|
|
548
|
+
"fluidgrids.executions.executionDetail.cancelButton",
|
|
549
|
+
"Cancel"
|
|
550
|
+
)
|
|
465
551
|
]
|
|
466
552
|
}
|
|
467
553
|
),
|
|
@@ -475,23 +561,35 @@ function ExecutionDetailPage() {
|
|
|
475
561
|
className: "border-[var(--color-status-error-border)] text-[var(--color-status-error-text)] hover:bg-[var(--color-status-error-bg-subtle)]",
|
|
476
562
|
children: [
|
|
477
563
|
/* @__PURE__ */ jsx(Icon, { icon: "mdi:close-octagon", className: "mr-1", width: 16 }),
|
|
478
|
-
|
|
564
|
+
tr(
|
|
565
|
+
"fluidgrids.executions.executionDetail.terminateButton",
|
|
566
|
+
"Terminate"
|
|
567
|
+
)
|
|
479
568
|
]
|
|
480
569
|
}
|
|
481
570
|
),
|
|
482
571
|
/* @__PURE__ */ jsxs(Button, { variant: "outline", size: "sm", onClick: refetch, children: [
|
|
483
572
|
/* @__PURE__ */ jsx(Icon, { icon: "mdi:refresh", className: "mr-1", width: 16 }),
|
|
484
|
-
|
|
573
|
+
tr(
|
|
574
|
+
"fluidgrids.executions.executionDetail.refreshButton",
|
|
575
|
+
"Refresh"
|
|
576
|
+
)
|
|
485
577
|
] })
|
|
486
578
|
] })
|
|
487
579
|
] }),
|
|
488
580
|
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 sm:grid-cols-4 gap-4 mb-6", children: [
|
|
489
581
|
/* @__PURE__ */ jsxs("div", { className: "bg-background-secondary rounded-lg border border-border-secondary p-4", children: [
|
|
490
|
-
/* @__PURE__ */ jsx("div", { className: "text-sm text-text-secondary", children:
|
|
582
|
+
/* @__PURE__ */ jsx("div", { className: "text-sm text-text-secondary", children: tr(
|
|
583
|
+
"fluidgrids.executions.executionDetail.durationStat",
|
|
584
|
+
"Duration"
|
|
585
|
+
) }),
|
|
491
586
|
/* @__PURE__ */ jsx("div", { className: "text-xl font-bold text-text-primary mt-1", children: formatDuration(execution.duration) })
|
|
492
587
|
] }),
|
|
493
588
|
/* @__PURE__ */ jsxs("div", { className: "bg-background-secondary rounded-lg border border-border-secondary p-4", children: [
|
|
494
|
-
/* @__PURE__ */ jsx("div", { className: "text-sm text-text-secondary", children:
|
|
589
|
+
/* @__PURE__ */ jsx("div", { className: "text-sm text-text-secondary", children: tr(
|
|
590
|
+
"fluidgrids.executions.executionDetail.progressStat",
|
|
591
|
+
"Progress"
|
|
592
|
+
) }),
|
|
495
593
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mt-1", children: [
|
|
496
594
|
/* @__PURE__ */ jsx("div", { className: "flex-1 h-2 bg-background-tertiary rounded-full overflow-hidden", children: /* @__PURE__ */ jsx(
|
|
497
595
|
"div",
|
|
@@ -507,7 +605,7 @@ function ExecutionDetailPage() {
|
|
|
507
605
|
] })
|
|
508
606
|
] }),
|
|
509
607
|
/* @__PURE__ */ jsxs("div", { className: "bg-background-secondary rounded-lg border border-border-secondary p-4", children: [
|
|
510
|
-
/* @__PURE__ */ jsx("div", { className: "text-sm text-text-secondary", children: "Nodes" }),
|
|
608
|
+
/* @__PURE__ */ jsx("div", { className: "text-sm text-text-secondary", children: tr("fluidgrids.executions.executionDetail.nodesStat", "Nodes") }),
|
|
511
609
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mt-1", children: [
|
|
512
610
|
/* @__PURE__ */ jsx("span", { className: "text-xl font-bold text-[var(--color-status-success-text)]", children: execution.completedNodes ?? 0 }),
|
|
513
611
|
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: "/" }),
|
|
@@ -515,12 +613,17 @@ function ExecutionDetailPage() {
|
|
|
515
613
|
(execution.failedNodes ?? 0) > 0 && /* @__PURE__ */ jsxs("span", { className: "text-sm text-[var(--color-status-error-text)] ml-2", children: [
|
|
516
614
|
"(",
|
|
517
615
|
execution.failedNodes,
|
|
518
|
-
"
|
|
616
|
+
" ",
|
|
617
|
+
tr(
|
|
618
|
+
"fluidgrids.executions.executionDetail.failedNodesSuffix",
|
|
619
|
+
"failed"
|
|
620
|
+
),
|
|
621
|
+
")"
|
|
519
622
|
] })
|
|
520
623
|
] })
|
|
521
624
|
] }),
|
|
522
625
|
/* @__PURE__ */ jsxs("div", { className: "bg-background-secondary rounded-lg border border-border-secondary p-4", children: [
|
|
523
|
-
/* @__PURE__ */ jsx("div", { className: "text-sm text-text-secondary", children: "Trigger" }),
|
|
626
|
+
/* @__PURE__ */ jsx("div", { className: "text-sm text-text-secondary", children: tr("fluidgrids.executions.executionDetail.triggerStat", "Trigger") }),
|
|
524
627
|
/* @__PURE__ */ jsx("div", { className: "text-lg font-medium text-text-primary mt-1 truncate", children: execution.triggerNodeId ? nodeDisplay[execution.triggerNodeId]?.label ?? execution.triggerNodeId : "\u2014" })
|
|
525
628
|
] })
|
|
526
629
|
] }),
|
|
@@ -528,7 +631,7 @@ function ExecutionDetailPage() {
|
|
|
528
631
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-[var(--color-status-error-text)] mb-2", children: [
|
|
529
632
|
/* @__PURE__ */ jsx(Icon, { icon: "mdi:alert-circle", width: 20 }),
|
|
530
633
|
/* @__PURE__ */ jsxs("span", { className: "font-medium", children: [
|
|
531
|
-
"Error",
|
|
634
|
+
tr("fluidgrids.executions.executionDetail.errorLabel", "Error"),
|
|
532
635
|
execution.errorType ? ` (${execution.errorType})` : ""
|
|
533
636
|
] })
|
|
534
637
|
] }),
|
|
@@ -579,35 +682,59 @@ function ExecutionDetailPage() {
|
|
|
579
682
|
}
|
|
580
683
|
) }),
|
|
581
684
|
activeTab === "input" && /* @__PURE__ */ jsxs("div", { className: "p-4 sm:p-6", children: [
|
|
582
|
-
/* @__PURE__ */ jsx("h3", { className: "text-lg font-medium text-text-primary mb-4", children:
|
|
685
|
+
/* @__PURE__ */ jsx("h3", { className: "text-lg font-medium text-text-primary mb-4", children: tr(
|
|
686
|
+
"fluidgrids.executions.executionDetail.triggerDataHeading",
|
|
687
|
+
"Trigger Data"
|
|
688
|
+
) }),
|
|
583
689
|
/* @__PURE__ */ jsx("div", { className: "bg-background-primary rounded p-4 max-h-[400px] overflow-auto", children: /* @__PURE__ */ jsx("pre", { className: "text-sm text-text-primary font-mono whitespace-pre-wrap break-words", children: JSON.stringify(execution.triggerData ?? null, null, 2) }) })
|
|
584
690
|
] }),
|
|
585
691
|
activeTab === "context" && /* @__PURE__ */ jsx("div", { className: "p-4 sm:p-6", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-6", children: [
|
|
586
692
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
587
|
-
/* @__PURE__ */ jsx("h3", { className: "text-lg font-medium text-text-primary mb-4", children:
|
|
693
|
+
/* @__PURE__ */ jsx("h3", { className: "text-lg font-medium text-text-primary mb-4", children: tr(
|
|
694
|
+
"fluidgrids.executions.executionDetail.executionContextHeading",
|
|
695
|
+
"Execution Context"
|
|
696
|
+
) }),
|
|
588
697
|
/* @__PURE__ */ jsx("div", { className: "bg-background-primary rounded p-4 max-h-[300px] overflow-auto", children: /* @__PURE__ */ jsx("pre", { className: "text-sm text-text-primary font-mono whitespace-pre-wrap break-words", children: JSON.stringify(execution.context ?? null, null, 2) }) })
|
|
589
698
|
] }),
|
|
590
699
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
591
|
-
/* @__PURE__ */ jsx("h3", { className: "text-lg font-medium text-text-primary mb-4", children:
|
|
700
|
+
/* @__PURE__ */ jsx("h3", { className: "text-lg font-medium text-text-primary mb-4", children: tr(
|
|
701
|
+
"fluidgrids.executions.executionDetail.executionDetailsHeading",
|
|
702
|
+
"Execution Details"
|
|
703
|
+
) }),
|
|
592
704
|
/* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
|
|
593
705
|
/* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
594
|
-
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children:
|
|
706
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
707
|
+
"fluidgrids.executions.executionDetail.runIdRow",
|
|
708
|
+
"Run ID"
|
|
709
|
+
) }),
|
|
595
710
|
/* @__PURE__ */ jsx("code", { className: "font-mono text-text-primary", children: execution.id })
|
|
596
711
|
] }),
|
|
597
712
|
/* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
598
|
-
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children:
|
|
713
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
714
|
+
"fluidgrids.executions.executionDetail.workflowRow",
|
|
715
|
+
"Workflow"
|
|
716
|
+
) }),
|
|
599
717
|
/* @__PURE__ */ jsx("span", { className: "text-text-primary", children: execution.workflow?.name || execution.workflowKey })
|
|
600
718
|
] }),
|
|
601
719
|
/* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
602
|
-
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children:
|
|
720
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
721
|
+
"fluidgrids.executions.executionDetail.workflowKeyRow",
|
|
722
|
+
"Workflow Key"
|
|
723
|
+
) }),
|
|
603
724
|
/* @__PURE__ */ jsx("code", { className: "font-mono text-text-primary", children: execution.workflowKey })
|
|
604
725
|
] }),
|
|
605
726
|
/* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
606
|
-
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children:
|
|
727
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
728
|
+
"fluidgrids.executions.executionDetail.versionRow",
|
|
729
|
+
"Version"
|
|
730
|
+
) }),
|
|
607
731
|
/* @__PURE__ */ jsx("span", { className: "text-text-primary", children: formatRunVersion(execution.version) })
|
|
608
732
|
] }),
|
|
609
733
|
execution.triggeredById && /* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
610
|
-
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children:
|
|
734
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
735
|
+
"fluidgrids.executions.executionDetail.triggeredByRow",
|
|
736
|
+
"Triggered By"
|
|
737
|
+
) }),
|
|
611
738
|
/* @__PURE__ */ jsx(
|
|
612
739
|
"span",
|
|
613
740
|
{
|
|
@@ -618,7 +745,10 @@ function ExecutionDetailPage() {
|
|
|
618
745
|
)
|
|
619
746
|
] }),
|
|
620
747
|
execution.parentRunId && /* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
621
|
-
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children:
|
|
748
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
749
|
+
"fluidgrids.executions.executionDetail.parentRunRow",
|
|
750
|
+
"Parent Run"
|
|
751
|
+
) }),
|
|
622
752
|
/* @__PURE__ */ jsxs(
|
|
623
753
|
Link,
|
|
624
754
|
{
|
|
@@ -632,15 +762,24 @@ function ExecutionDetailPage() {
|
|
|
632
762
|
)
|
|
633
763
|
] }),
|
|
634
764
|
/* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
635
|
-
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children:
|
|
765
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
766
|
+
"fluidgrids.executions.executionDetail.createdRow",
|
|
767
|
+
"Created"
|
|
768
|
+
) }),
|
|
636
769
|
/* @__PURE__ */ jsx("span", { className: "text-text-primary", children: formatDateTime(execution.createdAt) })
|
|
637
770
|
] }),
|
|
638
771
|
/* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
639
|
-
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children:
|
|
772
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
773
|
+
"fluidgrids.executions.executionDetail.startedRow",
|
|
774
|
+
"Started"
|
|
775
|
+
) }),
|
|
640
776
|
/* @__PURE__ */ jsx("span", { className: "text-text-primary", children: formatDateTime(execution.startedAt) })
|
|
641
777
|
] }),
|
|
642
778
|
execution.completedAt && /* @__PURE__ */ jsxs("div", { className: "flex justify-between py-2 border-b border-border-secondary", children: [
|
|
643
|
-
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children:
|
|
779
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: tr(
|
|
780
|
+
"fluidgrids.executions.executionDetail.completedRow",
|
|
781
|
+
"Completed"
|
|
782
|
+
) }),
|
|
644
783
|
/* @__PURE__ */ jsx("span", { className: "text-text-primary", children: formatDateTime(execution.completedAt) })
|
|
645
784
|
] })
|
|
646
785
|
] })
|
|
@@ -654,18 +793,33 @@ function ExecutionDetailPage() {
|
|
|
654
793
|
onOpenChange: setShowTerminateDialog,
|
|
655
794
|
children: /* @__PURE__ */ jsxs(AlertDialogContent, { children: [
|
|
656
795
|
/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [
|
|
657
|
-
/* @__PURE__ */ jsx(AlertDialogTitle, { children:
|
|
658
|
-
|
|
796
|
+
/* @__PURE__ */ jsx(AlertDialogTitle, { children: tr(
|
|
797
|
+
"fluidgrids.executions.executionDetail.terminateDialogTitle",
|
|
798
|
+
"Terminate Execution"
|
|
799
|
+
) }),
|
|
800
|
+
/* @__PURE__ */ jsx(AlertDialogDescription, { children: tr(
|
|
801
|
+
"fluidgrids.executions.executionDetail.terminateDialogDescription",
|
|
802
|
+
"Are you sure you want to force terminate this execution? This will immediately stop the running workflow and cannot be resumed."
|
|
803
|
+
) })
|
|
659
804
|
] }),
|
|
660
805
|
/* @__PURE__ */ jsxs(AlertDialogFooter, { children: [
|
|
661
|
-
/* @__PURE__ */ jsx(AlertDialogCancel, { disabled: actionLoading, children:
|
|
806
|
+
/* @__PURE__ */ jsx(AlertDialogCancel, { disabled: actionLoading, children: tr(
|
|
807
|
+
"fluidgrids.executions.executionDetail.cancelButton",
|
|
808
|
+
"Cancel"
|
|
809
|
+
) }),
|
|
662
810
|
/* @__PURE__ */ jsx(
|
|
663
811
|
AlertDialogAction,
|
|
664
812
|
{
|
|
665
813
|
onClick: handleTerminate,
|
|
666
814
|
disabled: actionLoading,
|
|
667
815
|
className: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
668
|
-
children: actionLoading ?
|
|
816
|
+
children: actionLoading ? tr(
|
|
817
|
+
"fluidgrids.executions.executionDetail.terminatingButton",
|
|
818
|
+
"Terminating..."
|
|
819
|
+
) : tr(
|
|
820
|
+
"fluidgrids.executions.executionDetail.terminateButton",
|
|
821
|
+
"Terminate"
|
|
822
|
+
)
|
|
669
823
|
}
|
|
670
824
|
)
|
|
671
825
|
] })
|
|
@@ -676,5 +830,5 @@ function ExecutionDetailPage() {
|
|
|
676
830
|
}
|
|
677
831
|
|
|
678
832
|
export { ExecutionDetailPage };
|
|
679
|
-
//# sourceMappingURL=chunk-
|
|
680
|
-
//# sourceMappingURL=chunk-
|
|
833
|
+
//# sourceMappingURL=chunk-IWKLEFC7.js.map
|
|
834
|
+
//# sourceMappingURL=chunk-IWKLEFC7.js.map
|