@@ -9,10 +9,12 @@ import {
99import { DataTableHeader } from ' vuetify' ;
1010import { useRouter } from ' vue-router/composables' ;
1111import { Pipe , Pipelines , useApi } from ' dive-common/apispec' ;
12+ import { runPipelineWithOutput } from ' platform/desktop/frontend/api' ;
1213import {
1314 itemsPerPageOptions ,
1415 stereoPipelineMarker ,
1516 multiCamPipelineMarkers ,
17+ pipelineCreatesDatasetMarkers ,
1618 MultiType ,
1719} from ' dive-common/constants' ;
1820import { usePrompt } from ' dive-common/vue-utilities/prompt-service' ;
@@ -77,6 +79,23 @@ const stagedDatasetHeaders: DataTableHeader[] = headersTmpl.concat([
7779 width: 80 ,
7880 },
7981]);
82+ const createNewDatasetHeaders: DataTableHeader [] = headersTmpl .concat ([
83+ {
84+ text: ' Output Dataset Name' ,
85+ value: ' output' ,
86+ sortable: false ,
87+ },
88+ {
89+ text: ' Remove' ,
90+ value: ' remove' ,
91+ sortable: false ,
92+ width: 80 ,
93+ },
94+ ]);
95+ function computeOutputDatasetName(item : JsonMetaCache ) {
96+ const timeStamp = (new Date ()).toISOString ().replace (/ [:. ] / g , ' -' );
97+ return ` ${selectedPipeline .value ?.name }_${item .name }_${timeStamp } ` ;
98+ }
8099function getAvailableItems(): JsonMetaCache [] {
81100 if (! selectedPipelineType .value || ! selectedPipeline .value ) {
82101 return [];
@@ -108,7 +127,16 @@ function toggleStaged(item: JsonMetaCache) {
108127async function runPipelineForDatasets() {
109128 if (selectedPipeline .value !== null ) {
110129 const results = await Promise .allSettled (
111- stagedDatasetIds .value .map ((datasetId : string ) => runPipeline (datasetId , selectedPipeline .value ! )),
130+ stagedDatasetIds .value .map ((datasetId : string ) => {
131+ if ([' transcode' , ' filter' ].includes (selectedPipeline .value ?.type || ' ' )) {
132+ const datasetMeta = availableItems .value .find ((item : JsonMetaCache ) => item .id === datasetId );
133+ if (! datasetMeta ) {
134+ throw new Error (` Attempted to run pipeline on nonexistant dataset ${datasetId } ` );
135+ }
136+ return runPipelineWithOutput (datasetId , selectedPipeline .value ! , computeOutputDatasetName (datasetMeta ));
137+ }
138+ return runPipeline (datasetId , selectedPipeline .value ! );
139+ }),
112140 );
113141 const failed = results
114142 .map ((result , i ) => ({ result , datasetId: stagedDatasetIds .value [i ] }))
@@ -178,7 +206,10 @@ onBeforeMount(async () => {
178206 <v-card-title >Datasets staged for selected pipeline</v-card-title >
179207 <v-data-table
180208 dense
181- v-bind =" { headers: stagedDatasetHeaders, items: stagedDatasets }"
209+ v-bind =" {
210+ headers: pipelineCreatesDatasetMarkers.includes(selectedPipelineType || '') ? createNewDatasetHeaders : stagedDatasetHeaders,
211+ items: stagedDatasets,
212+ }"
182213 :items-per-page.sync =" clientSettings.rowsPerPage"
183214 hide-default-footer
184215 :hide-default-header =" stagedDatasets.length === 0"
@@ -193,6 +224,9 @@ onBeforeMount(async () => {
193224 <v-icon >mdi-minus</v-icon >
194225 </v-btn >
195226 </template >
227+ <template #[` item.output ` ]=" { item } " >
228+ <b >{{ computeOutputDatasetName(item) }}</b >
229+ </template >
196230 </v-data-table >
197231 </div >
198232 <v-row class =" mt-7" >
0 commit comments