@@ -86,11 +86,11 @@ import {
86
86
} from ' @n8n/design-system' ;
87
87
import { storeToRefs } from ' pinia' ;
88
88
import { useRoute } from ' vue-router' ;
89
- import { useExecutionHelpers } from ' @/composables/useExecutionHelpers' ;
90
89
import { useUIStore } from ' @/stores/ui.store' ;
91
90
import { useSchemaPreviewStore } from ' @/stores/schemaPreview.store' ;
92
91
import { asyncComputed } from ' @vueuse/core' ;
93
92
import { usePostHog } from ' @/stores/posthog.store' ;
93
+ import ViewSubExecution from ' ./ViewSubExecution.vue' ;
94
94
95
95
const LazyRunDataTable = defineAsyncComponent (
96
96
async () => await import (' @/components/RunDataTable.vue' ),
@@ -200,7 +200,6 @@ const nodeHelpers = useNodeHelpers();
200
200
const externalHooks = useExternalHooks ();
201
201
const telemetry = useTelemetry ();
202
202
const i18n = useI18n ();
203
- const { trackOpeningRelatedExecution, resolveRelatedExecutionUrl } = useExecutionHelpers ();
204
203
205
204
const node = toRef (props , ' node' );
206
205
@@ -558,12 +557,6 @@ const activeTaskMetadata = computed((): ITaskMetadata | null => {
558
557
return workflowRunData .value ?.[node .value .name ]?.[props .runIndex ]?.metadata ?? null ;
559
558
});
560
559
561
- const hasRelatedExecution = computed (() => {
562
- return Boolean (
563
- activeTaskMetadata .value ?.subExecution ?? activeTaskMetadata .value ?.parentExecution ,
564
- );
565
- });
566
-
567
560
const hasInputOverwrite = computed ((): boolean => {
568
561
if (! node .value ) {
569
562
return false ;
@@ -1313,26 +1306,6 @@ function onSearchClear() {
1313
1306
document .dispatchEvent (new KeyboardEvent (' keyup' , { key: ' /' }));
1314
1307
}
1315
1308
1316
- function getExecutionLinkLabel(task : ITaskMetadata ): string | undefined {
1317
- if (task .parentExecution ) {
1318
- return i18n .baseText (' runData.openParentExecution' , {
1319
- interpolate: { id: task .parentExecution .executionId },
1320
- });
1321
- }
1322
-
1323
- if (task .subExecution ) {
1324
- if (activeTaskMetadata .value ?.subExecutionsCount === 1 ) {
1325
- return i18n .baseText (' runData.openSubExecutionSingle' );
1326
- } else {
1327
- return i18n .baseText (' runData.openSubExecutionWithId' , {
1328
- interpolate: { id: task .subExecution .executionId },
1329
- });
1330
- }
1331
- }
1332
-
1333
- return ;
1334
- }
1335
-
1336
1309
defineExpose ({ enterEditMode });
1337
1310
</script >
1338
1311
@@ -1504,20 +1477,11 @@ defineExpose({ enterEditMode });
1504
1477
1505
1478
<slot name =" run-info" ></slot >
1506
1479
</div >
1507
-
1508
- <a
1509
- v-if ="
1510
- activeTaskMetadata && hasRelatedExecution && !(paneType === 'input' && hasInputOverwrite)
1511
- "
1512
- :class =" $style.relatedExecutionInfo"
1513
- data-test-id =" related-execution-link"
1514
- :href =" resolveRelatedExecutionUrl(activeTaskMetadata)"
1515
- target =" _blank"
1516
- @click.stop =" trackOpeningRelatedExecution(activeTaskMetadata, displayMode)"
1517
- >
1518
- <N8nIcon icon =" external-link-alt" size =" xsmall" />
1519
- {{ getExecutionLinkLabel(activeTaskMetadata) }}
1520
- </a >
1480
+ <ViewSubExecution
1481
+ v-if =" activeTaskMetadata && !(paneType === 'input' && hasInputOverwrite)"
1482
+ :task-metadata =" activeTaskMetadata"
1483
+ :display-mode =" displayMode"
1484
+ />
1521
1485
</div >
1522
1486
1523
1487
<slot v-if =" !displaysMultipleNodes" name =" before-data" />
@@ -1544,6 +1508,11 @@ defineExpose({ enterEditMode });
1544
1508
data-test-id =" branches"
1545
1509
>
1546
1510
<slot v-if =" inputSelectLocation === 'outputs'" name =" input-select" ></slot >
1511
+ <ViewSubExecution
1512
+ v-if =" activeTaskMetadata && !(paneType === 'input' && hasInputOverwrite)"
1513
+ :task-metadata =" activeTaskMetadata"
1514
+ :display-mode =" displayMode"
1515
+ />
1547
1516
1548
1517
<div :class =" $style.tabs" >
1549
1518
<N8nTabs
@@ -1594,20 +1563,11 @@ defineExpose({ enterEditMode });
1594
1563
}}
1595
1564
</span >
1596
1565
</N8nText >
1597
-
1598
- <a
1599
- v-if ="
1600
- activeTaskMetadata && hasRelatedExecution && !(paneType === 'input' && hasInputOverwrite)
1601
- "
1602
- :class =" $style.relatedExecutionInfo"
1603
- data-test-id =" related-execution-link"
1604
- :href =" resolveRelatedExecutionUrl(activeTaskMetadata)"
1605
- target =" _blank"
1606
- @click.stop =" trackOpeningRelatedExecution(activeTaskMetadata, displayMode)"
1607
- >
1608
- <N8nIcon icon =" external-link-alt" size =" xsmall" />
1609
- {{ getExecutionLinkLabel(activeTaskMetadata) }}
1610
- </a >
1566
+ <ViewSubExecution
1567
+ v-if =" activeTaskMetadata && !(paneType === 'input' && hasInputOverwrite)"
1568
+ :task-metadata =" activeTaskMetadata"
1569
+ :display-mode =" displayMode"
1570
+ />
1611
1571
</div >
1612
1572
1613
1573
<div ref =" dataContainerRef" :class =" $style.dataContainer" data-test-id =" ndv-data-container" >
@@ -2304,15 +2264,6 @@ defineExpose({ enterEditMode });
2304
2264
.schema {
2305
2265
padding : 0 var (--spacing-s );
2306
2266
}
2307
-
2308
- .relatedExecutionInfo {
2309
- font-size : var (--font-size-s );
2310
- margin-left : var (--spacing-3xs );
2311
-
2312
- svg {
2313
- padding-bottom : 2px ;
2314
- }
2315
- }
2316
2267
</style >
2317
2268
2318
2269
<style lang="scss" scoped>
0 commit comments