import { CommandOutputParameter } from "cwlts/mappings/v1.0/CommandOutputParameter";
import { CommandInputParameter, getIOParamId, WorkflowInputsData } from "models/workflow";
import { getIOParamDisplayValue, ProcessIOParameter } from "views/process-panel/process-io-card";
-import { OutputDetails, NodeInstanceType, NodeInfo } from "./process-panel";
+import { OutputDetails, NodeInstanceType, NodeInfo, UsageReport } from "./process-panel";
import { AuthState } from "store/auth/auth-reducer";
import { ContextMenuResource } from "store/context-menu/context-menu-actions";
+import { OutputDataUpdate } from "./process-panel-reducer";
export const processPanelActions = unionize({
RESET_PROCESS_PANEL: ofType<{}>(),
TOGGLE_PROCESS_PANEL_FILTER: ofType<string>(),
SET_INPUT_RAW: ofType<WorkflowInputsData | null>(),
SET_INPUT_PARAMS: ofType<ProcessIOParameter[] | null>(),
- SET_OUTPUT_RAW: ofType<OutputDetails | null>(),
+ SET_OUTPUT_DATA: ofType<OutputDataUpdate | null>(),
SET_OUTPUT_DEFINITIONS: ofType<CommandOutputParameter[]>(),
SET_OUTPUT_PARAMS: ofType<ProcessIOParameter[] | null>(),
SET_NODE_INFO: ofType<NodeInfo>(),
+ SET_USAGE_REPORT: ofType<UsageReport>(),
});
export type ProcessPanelAction = UnionOf<typeof processPanelActions>;
export const loadOutputs =
(containerRequest: ContainerRequestResource) => async (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
- const noOutputs = { rawOutputs: {} };
+ const noOutputs: OutputDetails = { raw: {} };
if (!containerRequest.outputUuid) {
- dispatch<ProcessPanelAction>(processPanelActions.SET_OUTPUT_RAW({ uuid: containerRequest.uuid, outputRaw: noOutputs }));
+ dispatch<ProcessPanelAction>(processPanelActions.SET_OUTPUT_DATA({
+ uuid: containerRequest.uuid,
+ payload: noOutputs
+ }));
return;
}
try {
// If has propsOutput, skip fetching cwl.output.json
if (propsOutputs !== undefined) {
dispatch<ProcessPanelAction>(
- processPanelActions.SET_OUTPUT_RAW({
- rawOutputs: propsOutputs,
- pdh: collection.portableDataHash,
+ processPanelActions.SET_OUTPUT_DATA({
+ uuid: containerRequest.uuid,
+ payload: {
+ raw: propsOutputs,
+ pdh: collection.portableDataHash,
+ },
})
);
} else {
let outputData = outputFile ? await services.collectionService.getFileContents(outputFile) : undefined;
if (outputData && (outputData = JSON.parse(outputData)) && collection.portableDataHash) {
dispatch<ProcessPanelAction>(
- processPanelActions.SET_OUTPUT_RAW({
+ processPanelActions.SET_OUTPUT_DATA({
uuid: containerRequest.uuid,
- outputRaw: { rawOutputs: outputData, pdh: collection.portableDataHash },
+ payload: {
+ raw: outputData,
+ pdh: collection.portableDataHash,
+ },
})
);
} else {
- dispatch<ProcessPanelAction>(processPanelActions.SET_OUTPUT_RAW({ uuid: containerRequest.uuid, outputRaw: noOutputs }));
+ dispatch<ProcessPanelAction>(processPanelActions.SET_OUTPUT_DATA({ uuid: containerRequest.uuid, payload: noOutputs }));
}
}
} catch {
- dispatch<ProcessPanelAction>(processPanelActions.SET_OUTPUT_RAW({ uuid: containerRequest.uuid, outputRaw: noOutputs }));
+ dispatch<ProcessPanelAction>(processPanelActions.SET_OUTPUT_DATA({ uuid: containerRequest.uuid, payload: noOutputs }));
}
};
} else {
dispatch<ProcessPanelAction>(processPanelActions.SET_NODE_INFO(noLog));
}
+
+ const usageReportFile = files.find(file => file.name === "usage_report.html") as CollectionFile | null;
+ dispatch<ProcessPanelAction>(processPanelActions.SET_USAGE_REPORT({ usageReport: usageReportFile }));
} catch {
dispatch<ProcessPanelAction>(processPanelActions.SET_NODE_INFO(noLog));
+ dispatch<ProcessPanelAction>(processPanelActions.SET_USAGE_REPORT({ usageReport: null }));
}
};
export const updateOutputParams = () => async (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
const outputDefinitions = getState().processPanel.outputDefinitions;
- const outputRaw = getState().processPanel.outputRaw;
+ const outputData = getState().processPanel.outputData;
- if (outputRaw && outputRaw.rawOutputs) {
+ if (outputData && outputData.raw) {
dispatch<ProcessPanelAction>(
- processPanelActions.SET_OUTPUT_PARAMS(formatOutputData(outputDefinitions, outputRaw.rawOutputs, outputRaw.pdh, getState().auth))
+ processPanelActions.SET_OUTPUT_PARAMS(formatOutputData(outputDefinitions, outputData.raw, outputData.pdh, getState().auth))
);
}
};