diff --git a/dist/components/subworkflows/Subworkflow.d.ts b/dist/components/subworkflows/Subworkflow.d.ts index d646754..67da6ff 100644 --- a/dist/components/subworkflows/Subworkflow.d.ts +++ b/dist/components/subworkflows/Subworkflow.d.ts @@ -27,6 +27,13 @@ export type SubworkflowProps = { jobProperties?: WorkflowDesignerProperty[]; activeTabIndex: number; onActiveTabIndexChange: (tabIndex: number) => void; + /** + * Drops this subworkflow's own Compute tab. Set it when the host already + * shows a compute surface of its own — the job designer does, and two places + * called "Compute" on one screen leave the reader guessing which one the job + * will actually run with. + */ + hideComputeSubTab?: boolean; }; export declare const TAB_NAVIGATION_CONFIG: { readonly overview: { @@ -50,5 +57,5 @@ export declare const TAB_NAVIGATION_CONFIG: { readonly href: "sw-compute"; }; }; -export declare function Subworkflow({ subworkflow, onUpdate, isStandalone, editable, adjustable, metaProperties, onOutputUpdateRequest, isMethodDataLoading, accountUsers, accountUsersIsLoading, currentUser, clusters, materials, materialsIndex, onMaterialSwitch, profile, publicAccount, createMetaProperty, pseudoUploadReduxDialog, unitTypeReduxDialog, className, jobProperties, activeTabIndex, onActiveTabIndexChange, }: SubworkflowProps): React.JSX.Element; +export declare function Subworkflow({ subworkflow, onUpdate, isStandalone, editable, adjustable, metaProperties, onOutputUpdateRequest, isMethodDataLoading, accountUsers, accountUsersIsLoading, currentUser, clusters, materials, materialsIndex, onMaterialSwitch, profile, publicAccount, createMetaProperty, pseudoUploadReduxDialog, unitTypeReduxDialog, className, jobProperties, activeTabIndex, onActiveTabIndexChange, hideComputeSubTab, }: SubworkflowProps): React.JSX.Element; //# sourceMappingURL=Subworkflow.d.ts.map \ No newline at end of file diff --git a/dist/components/subworkflows/Subworkflow.d.ts.map b/dist/components/subworkflows/Subworkflow.d.ts.map index b9b4262..a417646 100644 --- a/dist/components/subworkflows/Subworkflow.d.ts.map +++ b/dist/components/subworkflows/Subworkflow.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Subworkflow.d.ts","sourceRoot":"","sources":["../../../src/components/subworkflows/Subworkflow.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAqB,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAIvF,OAAO,EAEH,KAAK,eAAe,EACpB,WAAW,IAAI,eAAe,EAEjC,MAAM,cAAc,CAAC;AAOtB,OAAO,KAAyC,MAAM,OAAO,CAAC;AAE9D,OAAO,KAAK,EACR,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,wCAAwC,EACxC,2BAA2B,EAC3B,4BAA4B,EAC5B,kCAAkC,EAClC,uBAAuB,EACvB,wBAAwB,EAExB,oBAAoB,EACvB,MAAM,qBAAqB,CAAC;AAU7B,MAAM,MAAM,gBAAgB,GAAG;IAC3B,WAAW,EAAE,eAAe,CAAC;IAC7B,QAAQ,EAAE,CAAC,WAAW,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACnD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,4BAA4B,EAAE,CAAC;IAChD,qBAAqB,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACrD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,EAAE,oBAAoB,EAAE,CAAC;IACrC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,WAAW,CAAC,EAAE,wBAAwB,CAAC;IACvC,QAAQ,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACrC,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAChD,OAAO,EAAE,uBAAuB,CAAC;IACjC,aAAa,EAAE,uBAAuB,CAAC;IACvC,kBAAkB,EAAE,CAChB,QAAQ,EAAE,wCAAwC,KACjD,OAAO,CAAC,kCAAkC,GAAG,SAAS,CAAC,CAAC;IAC7D,uBAAuB,EAAE,2BAA2B,CAAC;IACrD,mBAAmB,EAAE,2BAA2B,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAC3C,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACtD,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;CAqBxB,CAAC;AAEX,wBAAgB,WAAW,CAAC,EACxB,WAAW,EACX,QAAQ,EACR,YAAoB,EACpB,QAAe,EACf,UAAkB,EAClB,cAAmB,EACnB,qBAAqB,EACrB,mBAA2B,EAC3B,YAAY,EACZ,qBAAqB,EACrB,WAAW,EACX,QAAa,EACb,SAAc,EACd,cAAc,EACd,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,SAAS,EACT,aAAa,EACb,cAAc,EACd,sBAAsB,GACzB,EAAE,gBAAgB,qBAoUlB"} \ No newline at end of file +{"version":3,"file":"Subworkflow.d.ts","sourceRoot":"","sources":["../../../src/components/subworkflows/Subworkflow.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAqB,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAIvF,OAAO,EAEH,KAAK,eAAe,EACpB,WAAW,IAAI,eAAe,EAEjC,MAAM,cAAc,CAAC;AAOtB,OAAO,KAAyC,MAAM,OAAO,CAAC;AAE9D,OAAO,KAAK,EACR,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,wCAAwC,EACxC,2BAA2B,EAC3B,4BAA4B,EAC5B,kCAAkC,EAClC,uBAAuB,EACvB,wBAAwB,EAExB,oBAAoB,EACvB,MAAM,qBAAqB,CAAC;AAU7B,MAAM,MAAM,gBAAgB,GAAG;IAC3B,WAAW,EAAE,eAAe,CAAC;IAC7B,QAAQ,EAAE,CAAC,WAAW,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACnD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,4BAA4B,EAAE,CAAC;IAChD,qBAAqB,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACrD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,EAAE,oBAAoB,EAAE,CAAC;IACrC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,WAAW,CAAC,EAAE,wBAAwB,CAAC;IACvC,QAAQ,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACrC,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAChD,OAAO,EAAE,uBAAuB,CAAC;IACjC,aAAa,EAAE,uBAAuB,CAAC;IACvC,kBAAkB,EAAE,CAChB,QAAQ,EAAE,wCAAwC,KACjD,OAAO,CAAC,kCAAkC,GAAG,SAAS,CAAC,CAAC;IAC7D,uBAAuB,EAAE,2BAA2B,CAAC;IACrD,mBAAmB,EAAE,2BAA2B,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAC3C,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;CAqBxB,CAAC;AAMX,wBAAgB,WAAW,CAAC,EACxB,WAAW,EACX,QAAQ,EACR,YAAoB,EACpB,QAAe,EACf,UAAkB,EAClB,cAAmB,EACnB,qBAAqB,EACrB,mBAA2B,EAC3B,YAAY,EACZ,qBAAqB,EACrB,WAAW,EACX,QAAa,EACb,SAAc,EACd,cAAc,EACd,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,SAAS,EACT,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,iBAAyB,GAC5B,EAAE,gBAAgB,qBA+UlB"} \ No newline at end of file diff --git a/dist/components/subworkflows/Subworkflow.js b/dist/components/subworkflows/Subworkflow.js index af2e26e..ba0011b 100644 --- a/dist/components/subworkflows/Subworkflow.js +++ b/dist/components/subworkflows/Subworkflow.js @@ -43,7 +43,10 @@ export const TAB_NAVIGATION_CONFIG = { href: "sw-compute", }, }; -export function Subworkflow({ subworkflow, onUpdate, isStandalone = false, editable = true, adjustable = false, metaProperties = [], onOutputUpdateRequest, isMethodDataLoading = false, accountUsers, accountUsersIsLoading, currentUser, clusters = [], materials = [], materialsIndex, onMaterialSwitch, profile, publicAccount, createMetaProperty, pseudoUploadReduxDialog, unitTypeReduxDialog, className, jobProperties, activeTabIndex, onActiveTabIndexChange, }) { +const COMPUTE_TAB_NAME = TAB_NAVIGATION_CONFIG.compute.itemName; +/** Compute is the last tab, which is what lets it be dropped without renumbering the rest. */ +const COMPUTE_TAB_INDEX = Object.keys(TAB_NAVIGATION_CONFIG).indexOf("compute"); +export function Subworkflow({ subworkflow, onUpdate, isStandalone = false, editable = true, adjustable = false, metaProperties = [], onOutputUpdateRequest, isMethodDataLoading = false, accountUsers, accountUsersIsLoading, currentUser, clusters = [], materials = [], materialsIndex, onMaterialSwitch, profile, publicAccount, createMetaProperty, pseudoUploadReduxDialog, unitTypeReduxDialog, className, jobProperties, activeTabIndex, onActiveTabIndexChange, hideComputeSubTab = false, }) { var _a, _b, _c; const { getDefaultComputeConfig } = useWorkflowComponents(); const [unitIndex, setUnitIndex] = useState(0); @@ -164,13 +167,20 @@ export function Subworkflow({ subworkflow, onUpdate, isStandalone = false, edita version: (_b = subworkflow.application) === null || _b === void 0 ? void 0 : _b.version, build: (_c = subworkflow.application) === null || _c === void 0 ? void 0 : _c.build, }); - const tabs = useMemo(() => Object.values(TAB_NAVIGATION_CONFIG).map((tab, index) => ({ + const tabs = useMemo(() => Object.values(TAB_NAVIGATION_CONFIG) + .map((tab, index) => ({ ...tab, href: undefined, onClick: (event) => { event.preventDefault(); setTabIndex(index); }, - })), [setTabIndex]); - return (_jsxs(Stack, { "data-tid": "subworkflow", height: "100%", className: className, children: [_jsx(TabsMenu, { tabs: tabs, activeTabIndex: activeTabIndex, sx: { fontSize: 12, height: "100%" } }), _jsxs(TabContext, { value: `${activeTabIndex}`, children: [_jsx(TabPanel, { value: "0", id: TAB_NAVIGATION_CONFIG.overview.href, sx: { height: "100%" }, children: _jsxs(Stack, { spacing: 3, height: "100%", children: [_jsx(AccordionComponent, { header: "Details", id: "subworkflow-accordion", sx: { pt: 0 }, children: _jsxs(Stack, { spacing: 2, children: [_jsx(Properties, { subworkflow: subworkflow, onUpdate: onUpdate, editable: editable || adjustable }), _jsx(ApplicationAve, { application: subworkflow.application, onApplicationUpdate: onApplicationUpdate, editable: editable }), subworkflow.modelInstance.isUnknown ? null : (_jsx(Model, { id: "model", model: subworkflow.modelInstance, models: filteredModels, application: subworkflow.application, onUpdate: onModelUpdate, editable: editable })), _jsx(SubworkflowMethodPanel, { subworkflow: subworkflow, editable: editable, adjustable: adjustable, isMethodDataLoading: isMethodDataLoading, isStandalone: isStandalone, materials: materials, profile: profile, onUpdate: onChildSubworkflowInstanceUpdate, pseudoUploadReduxDialog: pseudoUploadReduxDialog, metaProperties: metaProperties, createMetaProperty: createMetaProperty })] }) }), _jsx(UnitsFlowchartContainer, { units: subworkflow.unitsInstances, onUnitAdd: onUnitAdd, isStandalone: isStandalone, editable: editable, adjustable: adjustable, onUnitClone: onUnitClone, onUnitRemove: onUnitRemove, onUnitUpdate: onUnitUpdate, materials: materials, materialsIndex: materialsIndex, onMaterialSwitch: onMaterialSwitch, subworkflow: subworkflow, onOutputUpdateRequest: onOutputUpdateRequest, publicAccount: publicAccount, unitIndex: unitIndex, onUnitSelect: onUnitSelect, unitTypeReduxDialog: unitTypeReduxDialog, jobProperties: jobProperties, UnitModalComponent: UnitModal })] }) }), _jsx(TabPanel, { value: "1", id: TAB_NAVIGATION_CONFIG.importantSettings.href, "data-tab-name": TAB_NAVIGATION_CONFIG.importantSettings.itemName, children: _jsx(ImportantSettings, { id: TAB_NAVIGATION_CONFIG.importantSettings.href, subworkflow: subworkflow, onContextChanged: onImportantSettingsContextChanged }) }), _jsx(TabPanel, { value: "2", children: _jsx(Grid, { container: true, spacing: 2, children: subworkflow.unitsInstances.map((unit, index) => (_jsx(SubworkflowExecutionUnitDetailsRow, { unit: unit, index: index, editable: editable, onUnitResultsChanged: onUnitResultsChanged, onUnitIsDraftChanged: onUnitIsDraftChanged, onUnitMonitorChanged: onUnitMonitorChanged, onUnitPostProcessorChanged: onUnitPostProcessorChanged }, unit.flowchartId))) }) }), _jsx(TabPanel, { value: "3", children: _jsx(WorkflowCompute, { compute: subworkflow.compute, onUpdate: onComputeUpdate, onToggle: onComputeToggle, showAdvancedOptions: new Application(subworkflow.application).hasAdvancedComputeOptions, accountUsers: accountUsers, accountUsersIsLoading: accountUsersIsLoading, currentUser: currentUser !== null && currentUser !== void 0 ? currentUser : profile.user.entity, clusters: clusters }) })] })] })); + })) + // Compute is the last entry, so dropping it leaves the remaining + // tabs on the indices their panels are keyed to. + .filter((tab) => !(hideComputeSubTab && tab.itemName === COMPUTE_TAB_NAME)), [setTabIndex, hideComputeSubTab]); + // A subworkflow whose Compute tab was open when the host hid it would + // otherwise be left showing an empty panel. + const visibleTabIndex = hideComputeSubTab && activeTabIndex === COMPUTE_TAB_INDEX ? 0 : activeTabIndex; + return (_jsxs(Stack, { "data-tid": "subworkflow", height: "100%", className: className, children: [_jsx(TabsMenu, { tabs: tabs, activeTabIndex: visibleTabIndex, sx: { fontSize: 12, height: "100%" } }), _jsxs(TabContext, { value: `${visibleTabIndex}`, children: [_jsx(TabPanel, { value: "0", id: TAB_NAVIGATION_CONFIG.overview.href, sx: { height: "100%" }, children: _jsxs(Stack, { spacing: 3, height: "100%", children: [_jsx(AccordionComponent, { header: "Details", id: "subworkflow-accordion", sx: { pt: 0 }, children: _jsxs(Stack, { spacing: 2, children: [_jsx(Properties, { subworkflow: subworkflow, onUpdate: onUpdate, editable: editable || adjustable }), _jsx(ApplicationAve, { application: subworkflow.application, onApplicationUpdate: onApplicationUpdate, editable: editable }), subworkflow.modelInstance.isUnknown ? null : (_jsx(Model, { id: "model", model: subworkflow.modelInstance, models: filteredModels, application: subworkflow.application, onUpdate: onModelUpdate, editable: editable })), _jsx(SubworkflowMethodPanel, { subworkflow: subworkflow, editable: editable, adjustable: adjustable, isMethodDataLoading: isMethodDataLoading, isStandalone: isStandalone, materials: materials, profile: profile, onUpdate: onChildSubworkflowInstanceUpdate, pseudoUploadReduxDialog: pseudoUploadReduxDialog, metaProperties: metaProperties, createMetaProperty: createMetaProperty })] }) }), _jsx(UnitsFlowchartContainer, { units: subworkflow.unitsInstances, onUnitAdd: onUnitAdd, isStandalone: isStandalone, editable: editable, adjustable: adjustable, onUnitClone: onUnitClone, onUnitRemove: onUnitRemove, onUnitUpdate: onUnitUpdate, materials: materials, materialsIndex: materialsIndex, onMaterialSwitch: onMaterialSwitch, subworkflow: subworkflow, onOutputUpdateRequest: onOutputUpdateRequest, publicAccount: publicAccount, unitIndex: unitIndex, onUnitSelect: onUnitSelect, unitTypeReduxDialog: unitTypeReduxDialog, jobProperties: jobProperties, UnitModalComponent: UnitModal })] }) }), _jsx(TabPanel, { value: "1", id: TAB_NAVIGATION_CONFIG.importantSettings.href, "data-tab-name": TAB_NAVIGATION_CONFIG.importantSettings.itemName, children: _jsx(ImportantSettings, { id: TAB_NAVIGATION_CONFIG.importantSettings.href, subworkflow: subworkflow, onContextChanged: onImportantSettingsContextChanged }) }), _jsx(TabPanel, { value: "2", children: _jsx(Grid, { container: true, spacing: 2, children: subworkflow.unitsInstances.map((unit, index) => (_jsx(SubworkflowExecutionUnitDetailsRow, { unit: unit, index: index, editable: editable, onUnitResultsChanged: onUnitResultsChanged, onUnitIsDraftChanged: onUnitIsDraftChanged, onUnitMonitorChanged: onUnitMonitorChanged, onUnitPostProcessorChanged: onUnitPostProcessorChanged }, unit.flowchartId))) }) }), hideComputeSubTab ? null : (_jsx(TabPanel, { value: `${COMPUTE_TAB_INDEX}`, children: _jsx(WorkflowCompute, { compute: subworkflow.compute, onUpdate: onComputeUpdate, onToggle: onComputeToggle, showAdvancedOptions: new Application(subworkflow.application).hasAdvancedComputeOptions, accountUsers: accountUsers, accountUsersIsLoading: accountUsersIsLoading, currentUser: currentUser !== null && currentUser !== void 0 ? currentUser : profile.user.entity, clusters: clusters }) }))] })] })); } diff --git a/dist/components/workflows/Workflow.d.ts b/dist/components/workflows/Workflow.d.ts index 98f295d..75385ed 100644 --- a/dist/components/workflows/Workflow.d.ts +++ b/dist/components/workflows/Workflow.d.ts @@ -66,7 +66,14 @@ export type WorkflowProps = { isDescriptionEditable: boolean; /** Refined job properties for unit modals in job designer; optional elsewhere. */ jobProperties?: WorkflowDesignerProperty[]; + /** + * Hides each subworkflow's own Compute tab. Set it when the host renders a + * compute surface of its own, as the job designer does — otherwise the same + * screen offers two things called "Compute" and the reader has to guess + * which one the job will run with. + */ + hideComputeSubTab?: boolean; }; -export declare function Workflow({ workflow, metaProperties, onUpdate, onOutputUpdateRequest, onUpdateTags, extraActions, onSave, onNameUpdate, iconCls, onUnitAdd, onUnitAddSubworkflowFromConfig, onUnitRemove, onUnitUpdate, onSubworkflowUnitUpdate, materials, materialsIndex, jobHasParent, onMaterialSwitch, showHeaderPager, onHeaderPagerUpdate, dialogs, createMetaProperty, accountUsers, accountUsersIsLoading, profile, publicAccount, clusters, templates, isStandalone, isHeaderCompact, editable, adjustable, isLoading, showHeader, isMethodDataLoading, materialsSet, isMap, isSetPublicVisible, showMetadata, showHistory, workflowHistory, onIsMultiMaterialChanged, onRender, renderAtJobLevel, workflowRenderGeneration, isDescriptionEditable, jobProperties, }: WorkflowProps): React.JSX.Element; +export declare function Workflow({ workflow, metaProperties, onUpdate, onOutputUpdateRequest, onUpdateTags, extraActions, onSave, onNameUpdate, iconCls, onUnitAdd, onUnitAddSubworkflowFromConfig, onUnitRemove, onUnitUpdate, onSubworkflowUnitUpdate, materials, materialsIndex, jobHasParent, onMaterialSwitch, showHeaderPager, onHeaderPagerUpdate, dialogs, createMetaProperty, accountUsers, accountUsersIsLoading, profile, publicAccount, clusters, templates, isStandalone, isHeaderCompact, editable, adjustable, isLoading, showHeader, isMethodDataLoading, materialsSet, isMap, isSetPublicVisible, showMetadata, showHistory, workflowHistory, onIsMultiMaterialChanged, onRender, renderAtJobLevel, workflowRenderGeneration, isDescriptionEditable, jobProperties, hideComputeSubTab, }: WorkflowProps): React.JSX.Element; export {}; //# sourceMappingURL=Workflow.d.ts.map \ No newline at end of file diff --git a/dist/components/workflows/Workflow.d.ts.map b/dist/components/workflows/Workflow.d.ts.map index a698ff5..23fcac2 100644 --- a/dist/components/workflows/Workflow.d.ts.map +++ b/dist/components/workflows/Workflow.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Workflow.d.ts","sourceRoot":"","sources":["../../../src/components/workflows/Workflow.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAEhF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAI1E,OAAO,KAAoE,MAAM,OAAO,CAAC;AAEzF,OAAO,KAAK,EACR,uBAAuB,EACvB,uBAAuB,EACvB,wCAAwC,EACxC,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,EAC5B,kCAAkC,EAClC,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAIvF,KAAK,eAAe,GAAG,uBAAuB,CAAC;AAE/C,MAAM,MAAM,aAAa,GAAG;IACxB,QAAQ,EAAE,YAAY,CAAC;IACvB,cAAc,CAAC,EAAE,4BAA4B,EAAE,CAAC;IAChD,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,qBAAqB,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACrD,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACxC,YAAY,CAAC,EAAE,cAAc,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAChF,8BAA8B,CAAC,EAAE,CAC7B,MAAM,EAAE,OAAO,EACf,mBAAmB,CAAC,EAAE,OAAO,GAAG,MAAM,EACtC,SAAS,CAAC,EAAE,MAAM,KACjB,IAAI,CAAC;IACV,YAAY,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IAC/C,uBAAuB,CAAC,EAAE,CAAC,WAAW,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAC3E,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yFAAyF;IACzF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAChD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,OAAO,EAAE,eAAe,CAAC;IACzB,2DAA2D;IAC3D,kBAAkB,CAAC,EAAE,CACjB,QAAQ,EAAE,wCAAwC,KACjD,OAAO,CAAC,kCAAkC,GAAG,SAAS,CAAC,CAAC;IAC7D,YAAY,EAAE,oBAAoB,EAAE,CAAC;IACrC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,OAAO,EAAE,uBAAuB,CAAC;IACjC,aAAa,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACrC,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kGAAkG;IAClG,eAAe,CAAC,EAAE,uBAAuB,CAAC;IAC1C,wBAAwB,CAAC,EAAE,CAAC,eAAe,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9D;;;OAGG;IACH,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,sFAAsF;IACtF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kGAAkG;IAClG,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,wGAAwG;IACxG,qBAAqB,EAAE,OAAO,CAAC;IAC/B,kFAAkF;IAClF,aAAa,CAAC,EAAE,wBAAwB,EAAE,CAAC;CAC9C,CAAC;AAYF,wBAAgB,QAAQ,CAAC,EACrB,QAAQ,EACR,cAAsC,EACtC,QAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,YAAiB,EACjB,MAAM,EACN,YAAY,EACZ,OAAO,EACP,SAAgB,EAChB,8BAAiE,EACjE,YAAmB,EACnB,YAAmB,EACnB,uBAA8B,EAC9B,SAAc,EACd,cAAc,EACd,YAAoB,EACpB,gBAAgB,EAChB,eAAuB,EACvB,mBAAmB,EACnB,OAAO,EACP,kBAA6F,EAC7F,YAAY,EACZ,qBAAqB,EACrB,OAAO,EACP,aAAa,EACb,QAAa,EACb,SAAS,EACT,YAAoB,EACpB,eAAe,EACf,QAAgB,EAChB,UAAkB,EAClB,SAAiB,EACjB,UAAiB,EACjB,mBAA2B,EAC3B,YAAY,EACZ,KAAK,EACL,kBAAkB,EAClB,YAAmB,EACnB,WAAmB,EACnB,eAAoB,EACpB,wBAAwB,EACxB,QAAQ,EACR,gBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,EACrB,aAAa,GAChB,EAAE,aAAa,qBA0Tf"} \ No newline at end of file +{"version":3,"file":"Workflow.d.ts","sourceRoot":"","sources":["../../../src/components/workflows/Workflow.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/components/workflows/Workflow.js b/dist/components/workflows/Workflow.js index 462e5db..0308598 100644 --- a/dist/components/workflows/Workflow.js +++ b/dist/components/workflows/Workflow.js @@ -11,7 +11,7 @@ import { getWorkflowDesignerTabResetKey } from "./workflowDesignerTabState"; const noop = () => undefined; const EMPTY_META_PROPERTIES = []; const noopUnitAddSubworkflowFromConfig = (_config, _prependOrPasteIndex, _unitIndex) => undefined; -export function Workflow({ workflow, metaProperties = EMPTY_META_PROPERTIES, onUpdate = noop, onOutputUpdateRequest, onUpdateTags, extraActions = [], onSave, onNameUpdate, iconCls, onUnitAdd = noop, onUnitAddSubworkflowFromConfig = noopUnitAddSubworkflowFromConfig, onUnitRemove = noop, onUnitUpdate = noop, onSubworkflowUnitUpdate = noop, materials = [], materialsIndex, jobHasParent = false, onMaterialSwitch, showHeaderPager = false, onHeaderPagerUpdate, dialogs, createMetaProperty = async (_property) => undefined, accountUsers, accountUsersIsLoading, profile, publicAccount, clusters = [], templates, isStandalone = false, isHeaderCompact, editable = false, adjustable = false, isLoading = false, showHeader = true, isMethodDataLoading = false, materialsSet, isMap, isSetPublicVisible, showMetadata = true, showHistory = false, workflowHistory = [], onIsMultiMaterialChanged, onRender, renderAtJobLevel = false, workflowRenderGeneration, isDescriptionEditable, jobProperties, }) { +export function Workflow({ workflow, metaProperties = EMPTY_META_PROPERTIES, onUpdate = noop, onOutputUpdateRequest, onUpdateTags, extraActions = [], onSave, onNameUpdate, iconCls, onUnitAdd = noop, onUnitAddSubworkflowFromConfig = noopUnitAddSubworkflowFromConfig, onUnitRemove = noop, onUnitUpdate = noop, onSubworkflowUnitUpdate = noop, materials = [], materialsIndex, jobHasParent = false, onMaterialSwitch, showHeaderPager = false, onHeaderPagerUpdate, dialogs, createMetaProperty = async (_property) => undefined, accountUsers, accountUsersIsLoading, profile, publicAccount, clusters = [], templates, isStandalone = false, isHeaderCompact, editable = false, adjustable = false, isLoading = false, showHeader = true, isMethodDataLoading = false, materialsSet, isMap, isSetPublicVisible, showMetadata = true, showHistory = false, workflowHistory = [], onIsMultiMaterialChanged, onRender, renderAtJobLevel = false, workflowRenderGeneration, isDescriptionEditable, jobProperties, hideComputeSubTab = false, }) { const [unitIndex, setUnitIndex] = useState(0); const [isRelaxationToggled, setIsRelaxationToggled] = useState(false); const [isMultiMaterialToggled, setIsMultiMaterialToggled] = useState(() => Boolean(workflow.isMultiMaterial)); @@ -207,5 +207,5 @@ export function Workflow({ workflow, metaProperties = EMPTY_META_PROPERTIES, onU buttonContent: "Select Workflow Actions", }; }, [getActions]); - return (_jsx(Box, { "data-workflow-render-generation": workflowRenderGeneration, children: _jsx(WorkflowDefaultLayout, { entity: workflow, unitIndex: unitIndex, isMap: isMap, materials: materials, materialsIndex: materialsIndex, materialsSet: materialsSet, jobHasParent: jobHasParent, editable: Boolean(editable), adjustable: Boolean(adjustable), isLoading: isLoading, showHeader: showHeader, isHeaderCompact: isHeaderCompact, isStandalone: isStandalone, isMethodDataLoading: isMethodDataLoading, isSetPublicVisible: isSetPublicVisible, showMetadata: showMetadata, showHistory: showHistory, workflowHistory: workflowHistory, iconCls: iconCls, onNameUpdate: onNameUpdate, onUpdateTags: onUpdateTags, onUnitAdd: onUnitAdd, onUnitAddSubworkflowFromConfig: onUnitAddSubworkflowFromConfig, onUnitUpdate: onUnitUpdate, onSubworkflowUnitUpdate: onSubworkflowUnitUpdate, onMapWorkflowUpdate: onMapWorkflowUpdate, onUnitSelect: onUnitSelect, onUpdateUnitIndex: onUpdateUnitIndex, handleUnitRemove: handleUnitRemove, onUnitNameUpdate: onUnitNameUpdate, areWorkflowContentExpanded: areWorkflowContentExpanded, toggleExpandWorkflowContent: toggleExpandWorkflowContent, headerStatusCls: headerStatusCls, getPagerProps: getPagerProps, getSaveBtnProps: getSaveBtnProps, getDropdownProps: getDropdownProps, isDescriptionEditable: isDescriptionEditable, onDescriptionUpdate: onDescriptionUpdate, dialogs: dialogs, metaProperties: metaProperties, onMaterialSwitch: onMaterialSwitch, onOutputUpdateRequest: onOutputUpdateRequest, accountUsers: accountUsers, accountUsersIsLoading: accountUsersIsLoading, profile: profile, publicAccount: publicAccount, clusters: clusters, templates: templates, createMetaProperty: createMetaProperty, jobProperties: jobProperties, subworkflowActiveTabIndexById: subworkflowActiveTabIndexById, onSubworkflowActiveTabIndexChange: onSubworkflowActiveTabIndexChange }) })); + return (_jsx(Box, { "data-workflow-render-generation": workflowRenderGeneration, children: _jsx(WorkflowDefaultLayout, { entity: workflow, unitIndex: unitIndex, isMap: isMap, materials: materials, materialsIndex: materialsIndex, materialsSet: materialsSet, jobHasParent: jobHasParent, editable: Boolean(editable), adjustable: Boolean(adjustable), isLoading: isLoading, showHeader: showHeader, isHeaderCompact: isHeaderCompact, isStandalone: isStandalone, isMethodDataLoading: isMethodDataLoading, isSetPublicVisible: isSetPublicVisible, showMetadata: showMetadata, showHistory: showHistory, workflowHistory: workflowHistory, iconCls: iconCls, onNameUpdate: onNameUpdate, onUpdateTags: onUpdateTags, onUnitAdd: onUnitAdd, onUnitAddSubworkflowFromConfig: onUnitAddSubworkflowFromConfig, onUnitUpdate: onUnitUpdate, onSubworkflowUnitUpdate: onSubworkflowUnitUpdate, onMapWorkflowUpdate: onMapWorkflowUpdate, onUnitSelect: onUnitSelect, onUpdateUnitIndex: onUpdateUnitIndex, handleUnitRemove: handleUnitRemove, onUnitNameUpdate: onUnitNameUpdate, areWorkflowContentExpanded: areWorkflowContentExpanded, toggleExpandWorkflowContent: toggleExpandWorkflowContent, headerStatusCls: headerStatusCls, getPagerProps: getPagerProps, getSaveBtnProps: getSaveBtnProps, getDropdownProps: getDropdownProps, isDescriptionEditable: isDescriptionEditable, onDescriptionUpdate: onDescriptionUpdate, dialogs: dialogs, metaProperties: metaProperties, onMaterialSwitch: onMaterialSwitch, onOutputUpdateRequest: onOutputUpdateRequest, accountUsers: accountUsers, accountUsersIsLoading: accountUsersIsLoading, profile: profile, publicAccount: publicAccount, clusters: clusters, templates: templates, createMetaProperty: createMetaProperty, jobProperties: jobProperties, hideComputeSubTab: hideComputeSubTab, subworkflowActiveTabIndexById: subworkflowActiveTabIndexById, onSubworkflowActiveTabIndexChange: onSubworkflowActiveTabIndexChange }) })); } diff --git a/dist/components/workflows/WorkflowDefaultLayout.d.ts b/dist/components/workflows/WorkflowDefaultLayout.d.ts index 254af65..2771098 100644 --- a/dist/components/workflows/WorkflowDefaultLayout.d.ts +++ b/dist/components/workflows/WorkflowDefaultLayout.d.ts @@ -85,6 +85,8 @@ export type WorkflowDefaultLayoutProps = { /** Subworkflow inner tabs (Overview, Important settings, …); owned by {@link Workflow} so remounts of {@link Subworkflow} do not reset them. */ subworkflowActiveTabIndexById: Record; onSubworkflowActiveTabIndexChange: (subworkflowId: string, tabIndex: number) => void; + /** See {@link SubworkflowProps.hideComputeSubTab}. */ + hideComputeSubTab?: boolean; }; export declare function WorkflowDefaultLayout(props: WorkflowDefaultLayoutProps): React.JSX.Element; //# sourceMappingURL=WorkflowDefaultLayout.d.ts.map \ No newline at end of file diff --git a/dist/components/workflows/WorkflowDefaultLayout.d.ts.map b/dist/components/workflows/WorkflowDefaultLayout.d.ts.map index 3ef5ce0..cbc23f3 100644 --- a/dist/components/workflows/WorkflowDefaultLayout.d.ts.map +++ b/dist/components/workflows/WorkflowDefaultLayout.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"WorkflowDefaultLayout.d.ts","sourceRoot":"","sources":["../../../src/components/workflows/WorkflowDefaultLayout.tsx"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"WorkflowDefaultLayout.d.ts","sourceRoot":"","sources":["../../../src/components/workflows/WorkflowDefaultLayout.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/components/workflows/WorkflowDefaultLayout.js b/dist/components/workflows/WorkflowDefaultLayout.js index 4a44b3e..00463da 100644 --- a/dist/components/workflows/WorkflowDefaultLayout.js +++ b/dist/components/workflows/WorkflowDefaultLayout.js @@ -17,7 +17,7 @@ import { WorkflowValidationAlert } from "./WorkflowValidationAlert"; const MapWorkflowDesigner = React.lazy(() => import("./Map").then((module) => ({ default: module.MapWorkflowDesigner }))); export function WorkflowDefaultLayout(props) { var _a, _b; - const { entity, unitIndex, isMap, materials, materialsIndex, materialsSet, jobHasParent = false, editable, adjustable, isLoading, showHeader, isHeaderCompact, isStandalone, isMethodDataLoading, isSetPublicVisible, showMetadata, showHistory, workflowHistory, iconCls, onNameUpdate, onUpdateTags, onUnitAdd, onUnitAddSubworkflowFromConfig, onUnitUpdate, onSubworkflowUnitUpdate, onMapWorkflowUpdate, onUnitSelect, onUpdateUnitIndex, handleUnitRemove, onUnitNameUpdate, areWorkflowContentExpanded, toggleExpandWorkflowContent, headerStatusCls, getPagerProps, getSaveBtnProps, getDropdownProps, isDescriptionEditable, onDescriptionUpdate, dialogs, metaProperties, onMaterialSwitch, onOutputUpdateRequest, accountUsers, accountUsersIsLoading, profile, publicAccount, clusters, templates, createMetaProperty, jobProperties, subworkflowActiveTabIndexById, onSubworkflowActiveTabIndexChange, } = props; + const { entity, unitIndex, isMap, materials, materialsIndex, materialsSet, jobHasParent = false, editable, adjustable, isLoading, showHeader, isHeaderCompact, isStandalone, isMethodDataLoading, isSetPublicVisible, showMetadata, showHistory, workflowHistory, iconCls, onNameUpdate, onUpdateTags, onUnitAdd, onUnitAddSubworkflowFromConfig, onUnitUpdate, onSubworkflowUnitUpdate, onMapWorkflowUpdate, onUnitSelect, onUpdateUnitIndex, handleUnitRemove, onUnitNameUpdate, areWorkflowContentExpanded, toggleExpandWorkflowContent, headerStatusCls, getPagerProps, getSaveBtnProps, getDropdownProps, isDescriptionEditable, onDescriptionUpdate, dialogs, metaProperties, onMaterialSwitch, onOutputUpdateRequest, accountUsers, accountUsersIsLoading, profile, publicAccount, clusters, templates, createMetaProperty, jobProperties, subworkflowActiveTabIndexById, onSubworkflowActiveTabIndexChange, hideComputeSubTab, } = props; const { EntityHeaderComponent, MetadataComponent, HistoryComponent } = useWorkflowComponents(); const unit = entity.unitInstances[unitIndex]; if (!unit) { @@ -40,5 +40,5 @@ export function WorkflowDefaultLayout(props) { }, description: get(entity, "description"), isLoading: isLoading, editable: Boolean(editable), onNameUpdate: onNameUpdate, iconCls: iconCls, id: "workflow-designer-header", pagerProps: getPagerProps(), saveBtnProps: getSaveBtnProps(), dropdownProps: getDropdownProps(), descriptionEditorTitle: "Workflow Description", item: entity, isDescriptionEditable: isDescriptionEditable, onDescriptionUpdate: onDescriptionUpdate })), _jsxs(Grid, { container: true, sx: { backgroundColor: "background.paper" }, children: [_jsx(Grid, { ...leftColumnGridProps, item: true, sx: { borderRight: "1px solid #cecece", backgroundColor: "background.default", - }, children: _jsx(Box, { className: "workflow-flowchart-container", sx: { height: "100%", p: 2 }, children: _jsx(WorkflowUnitsFlowchart, { editable: Boolean(editable), onUnitRemove: handleUnitRemove, onSubworkflowUnitUpdate: onSubworkflowUnitUpdate, workflow: entity, activeUnit: unit, onClick: onUnitSelect, isCardContentExpanded: areWorkflowContentExpanded, headerStatusCls: headerStatusCls }) }) }), _jsxs(Grid, { className: "workflow-subworkflow-container", item: true, sx: { display: "flex", flexDirection: "column" }, ...rightColumnGridProps, children: [_jsx(WorkflowValidationAlert, { workflow: entity }), unit.type === UnitType.subworkflow && (_jsxs(_Fragment, { children: [_jsx(SubworkflowHeader, { unit: unit, adjustable: Boolean(adjustable), editable: Boolean(editable), subworkflow: subworkflow, onUnitRemove: handleUnitRemove, headerStatusCls: headerStatusCls, onUnitNameUpdate: onUnitNameUpdate, unitIndex: unitIndex, onUnitAdd: onUnitAdd, onUnitAddSubworkflowFromConfig: onUnitAddSubworkflowFromConfig, onUpdateUnitIndex: onUpdateUnitIndex, onSubworkflowUnitUpdate: onSubworkflowUnitUpdate, areWorkflowContentExpanded: areWorkflowContentExpanded, toggleExpandWorkflowContent: toggleExpandWorkflowContent, workflow: entity, materials: materials, materialsIndex: materialsIndex, materialsSet: materialsSet, jobHasParent: jobHasParent }), subworkflow ? (_jsx(Subworkflow, { className: "card-body", subworkflow: subworkflow, activeTabIndex: (_b = subworkflowActiveTabIndexById[subworkflow.id]) !== null && _b !== void 0 ? _b : 0, onActiveTabIndexChange: (tabIndex) => onSubworkflowActiveTabIndexChange(subworkflow.id, tabIndex), onUpdate: onSubworkflowUnitUpdate, isStandalone: isStandalone, isMethodDataLoading: isMethodDataLoading, editable: Boolean(editable), adjustable: Boolean(adjustable), onMaterialSwitch: onMaterialSwitch, materials: materials, materialsIndex: materialsIndex, metaProperties: metaProperties, onOutputUpdateRequest: onOutputUpdateRequest, accountUsers: accountUsers, accountUsersIsLoading: accountUsersIsLoading, currentUser: profile.user.entity, clusters: clusters, pseudoUploadReduxDialog: pseudoUploadReduxDialog, unitTypeReduxDialog: unitTypeReduxDialog, profile: profile, publicAccount: publicAccount, createMetaProperty: createMetaProperty, jobProperties: jobProperties }, subworkflow.id)) : null] })), unit.type === UnitType.map && (_jsx(React.Suspense, { fallback: null, children: _jsx(MapWorkflowDesigner, { className: "card-body", unit: unit, workflow: mapWorkflow, onUpdate: onUnitUpdate, onWorkflowUpdate: onMapWorkflowUpdate, editable: Boolean(editable), adjustable: Boolean(adjustable), onMaterialSwitch: onMaterialSwitch, materials: materials, materialsIndex: materialsIndex, iconCls: iconCls, onOutputUpdateRequest: onOutputUpdateRequest, parentWorkflow: entity, accountUsers: accountUsers, accountUsersIsLoading: accountUsersIsLoading, currentUser: profile.user.entity, publicAccount: publicAccount, profile: profile, clusters: clusters, dialogs: dialogs, templates: templates, isDescriptionEditable: isDescriptionEditable, metaProperties: metaProperties }) })), unit.type === UnitType.error && (_jsx(Box, { className: "card-body", sx: { p: 2 }, children: _jsx(ErrorUnitContent, { unit: unit }) }))] })] }), _jsx(Divider, {}), showMetadata && (_jsx(MetadataComponent, { tags: get(entity, "tags", []), editable: Boolean(editable), isSetPublicVisible: isSetPublicVisible, onUpdateTags: onUpdateTags, publicAccount: publicAccount.entity })), _jsx(Divider, {}), showHistory && _jsx(HistoryComponent, { items: workflowHistory })] }) })); + }, children: _jsx(Box, { className: "workflow-flowchart-container", sx: { height: "100%", p: 2 }, children: _jsx(WorkflowUnitsFlowchart, { editable: Boolean(editable), onUnitRemove: handleUnitRemove, onSubworkflowUnitUpdate: onSubworkflowUnitUpdate, workflow: entity, activeUnit: unit, onClick: onUnitSelect, isCardContentExpanded: areWorkflowContentExpanded, headerStatusCls: headerStatusCls }) }) }), _jsxs(Grid, { className: "workflow-subworkflow-container", item: true, sx: { display: "flex", flexDirection: "column" }, ...rightColumnGridProps, children: [_jsx(WorkflowValidationAlert, { workflow: entity }), unit.type === UnitType.subworkflow && (_jsxs(_Fragment, { children: [_jsx(SubworkflowHeader, { unit: unit, adjustable: Boolean(adjustable), editable: Boolean(editable), subworkflow: subworkflow, onUnitRemove: handleUnitRemove, headerStatusCls: headerStatusCls, onUnitNameUpdate: onUnitNameUpdate, unitIndex: unitIndex, onUnitAdd: onUnitAdd, onUnitAddSubworkflowFromConfig: onUnitAddSubworkflowFromConfig, onUpdateUnitIndex: onUpdateUnitIndex, onSubworkflowUnitUpdate: onSubworkflowUnitUpdate, areWorkflowContentExpanded: areWorkflowContentExpanded, toggleExpandWorkflowContent: toggleExpandWorkflowContent, workflow: entity, materials: materials, materialsIndex: materialsIndex, materialsSet: materialsSet, jobHasParent: jobHasParent }), subworkflow ? (_jsx(Subworkflow, { className: "card-body", subworkflow: subworkflow, activeTabIndex: (_b = subworkflowActiveTabIndexById[subworkflow.id]) !== null && _b !== void 0 ? _b : 0, hideComputeSubTab: hideComputeSubTab, onActiveTabIndexChange: (tabIndex) => onSubworkflowActiveTabIndexChange(subworkflow.id, tabIndex), onUpdate: onSubworkflowUnitUpdate, isStandalone: isStandalone, isMethodDataLoading: isMethodDataLoading, editable: Boolean(editable), adjustable: Boolean(adjustable), onMaterialSwitch: onMaterialSwitch, materials: materials, materialsIndex: materialsIndex, metaProperties: metaProperties, onOutputUpdateRequest: onOutputUpdateRequest, accountUsers: accountUsers, accountUsersIsLoading: accountUsersIsLoading, currentUser: profile.user.entity, clusters: clusters, pseudoUploadReduxDialog: pseudoUploadReduxDialog, unitTypeReduxDialog: unitTypeReduxDialog, profile: profile, publicAccount: publicAccount, createMetaProperty: createMetaProperty, jobProperties: jobProperties }, subworkflow.id)) : null] })), unit.type === UnitType.map && (_jsx(React.Suspense, { fallback: null, children: _jsx(MapWorkflowDesigner, { className: "card-body", unit: unit, workflow: mapWorkflow, onUpdate: onUnitUpdate, onWorkflowUpdate: onMapWorkflowUpdate, editable: Boolean(editable), adjustable: Boolean(adjustable), onMaterialSwitch: onMaterialSwitch, materials: materials, materialsIndex: materialsIndex, iconCls: iconCls, onOutputUpdateRequest: onOutputUpdateRequest, parentWorkflow: entity, accountUsers: accountUsers, accountUsersIsLoading: accountUsersIsLoading, currentUser: profile.user.entity, publicAccount: publicAccount, profile: profile, clusters: clusters, dialogs: dialogs, templates: templates, isDescriptionEditable: isDescriptionEditable, metaProperties: metaProperties }) })), unit.type === UnitType.error && (_jsx(Box, { className: "card-body", sx: { p: 2 }, children: _jsx(ErrorUnitContent, { unit: unit }) }))] })] }), _jsx(Divider, {}), showMetadata && (_jsx(MetadataComponent, { tags: get(entity, "tags", []), editable: Boolean(editable), isSetPublicVisible: isSetPublicVisible, onUpdateTags: onUpdateTags, publicAccount: publicAccount.entity })), _jsx(Divider, {}), showHistory && _jsx(HistoryComponent, { items: workflowHistory })] }) })); } diff --git a/src/components/subworkflows/Subworkflow.tsx b/src/components/subworkflows/Subworkflow.tsx index 10118aa..6991be5 100644 --- a/src/components/subworkflows/Subworkflow.tsx +++ b/src/components/subworkflows/Subworkflow.tsx @@ -71,6 +71,13 @@ export type SubworkflowProps = { jobProperties?: WorkflowDesignerProperty[]; activeTabIndex: number; onActiveTabIndexChange: (tabIndex: number) => void; + /** + * Drops this subworkflow's own Compute tab. Set it when the host already + * shows a compute surface of its own — the job designer does, and two places + * called "Compute" on one screen leave the reader guessing which one the job + * will actually run with. + */ + hideComputeSubTab?: boolean; }; export const TAB_NAVIGATION_CONFIG = { @@ -96,6 +103,10 @@ export const TAB_NAVIGATION_CONFIG = { }, } as const; +const COMPUTE_TAB_NAME = TAB_NAVIGATION_CONFIG.compute.itemName; +/** Compute is the last tab, which is what lets it be dropped without renumbering the rest. */ +const COMPUTE_TAB_INDEX = Object.keys(TAB_NAVIGATION_CONFIG).indexOf("compute"); + export function Subworkflow({ subworkflow, onUpdate, @@ -121,6 +132,7 @@ export function Subworkflow({ jobProperties, activeTabIndex, onActiveTabIndexChange, + hideComputeSubTab = false, }: SubworkflowProps) { const { getDefaultComputeConfig } = useWorkflowComponents(); const [unitIndex, setUnitIndex] = useState(0); @@ -312,25 +324,34 @@ export function Subworkflow({ const tabs: WorkflowDesignerTabItem[] = useMemo( () => - Object.values(TAB_NAVIGATION_CONFIG).map((tab, index) => ({ - ...tab, - href: undefined, - onClick: (event) => { - event.preventDefault(); - setTabIndex(index); - }, - })), - [setTabIndex], + Object.values(TAB_NAVIGATION_CONFIG) + .map((tab, index) => ({ + ...tab, + href: undefined, + onClick: (event: React.MouseEvent) => { + event.preventDefault(); + setTabIndex(index); + }, + })) + // Compute is the last entry, so dropping it leaves the remaining + // tabs on the indices their panels are keyed to. + .filter((tab) => !(hideComputeSubTab && tab.itemName === COMPUTE_TAB_NAME)), + [setTabIndex, hideComputeSubTab], ); + // A subworkflow whose Compute tab was open when the host hid it would + // otherwise be left showing an empty panel. + const visibleTabIndex = + hideComputeSubTab && activeTabIndex === COMPUTE_TAB_INDEX ? 0 : activeTabIndex; + return ( - + - - - + {hideComputeSubTab ? null : ( + + + + )} ); diff --git a/src/components/workflows/Workflow.tsx b/src/components/workflows/Workflow.tsx index 3629b23..e8ea87d 100644 --- a/src/components/workflows/Workflow.tsx +++ b/src/components/workflows/Workflow.tsx @@ -93,6 +93,13 @@ export type WorkflowProps = { isDescriptionEditable: boolean; /** Refined job properties for unit modals in job designer; optional elsewhere. */ jobProperties?: WorkflowDesignerProperty[]; + /** + * Hides each subworkflow's own Compute tab. Set it when the host renders a + * compute surface of its own, as the job designer does — otherwise the same + * screen offers two things called "Compute" and the reader has to guess + * which one the job will run with. + */ + hideComputeSubTab?: boolean; }; const noop = (): undefined => undefined; @@ -153,6 +160,7 @@ export function Workflow({ workflowRenderGeneration, isDescriptionEditable, jobProperties, + hideComputeSubTab = false, }: WorkflowProps) { const [unitIndex, setUnitIndex] = useState(0); const [isRelaxationToggled, setIsRelaxationToggled] = useState(false); @@ -462,6 +470,7 @@ export function Workflow({ templates={templates} createMetaProperty={createMetaProperty} jobProperties={jobProperties} + hideComputeSubTab={hideComputeSubTab} subworkflowActiveTabIndexById={subworkflowActiveTabIndexById} onSubworkflowActiveTabIndexChange={onSubworkflowActiveTabIndexChange} /> diff --git a/src/components/workflows/WorkflowDefaultLayout.tsx b/src/components/workflows/WorkflowDefaultLayout.tsx index a97d166..b8c8aa1 100644 --- a/src/components/workflows/WorkflowDefaultLayout.tsx +++ b/src/components/workflows/WorkflowDefaultLayout.tsx @@ -125,6 +125,8 @@ export type WorkflowDefaultLayoutProps = { /** Subworkflow inner tabs (Overview, Important settings, …); owned by {@link Workflow} so remounts of {@link Subworkflow} do not reset them. */ subworkflowActiveTabIndexById: Record; onSubworkflowActiveTabIndexChange: (subworkflowId: string, tabIndex: number) => void; + /** See {@link SubworkflowProps.hideComputeSubTab}. */ + hideComputeSubTab?: boolean; }; export function WorkflowDefaultLayout(props: WorkflowDefaultLayoutProps) { @@ -181,6 +183,7 @@ export function WorkflowDefaultLayout(props: WorkflowDefaultLayoutProps) { jobProperties, subworkflowActiveTabIndexById, onSubworkflowActiveTabIndexChange, + hideComputeSubTab, } = props; const { EntityHeaderComponent, MetadataComponent, HistoryComponent } = useWorkflowComponents(); @@ -301,6 +304,7 @@ export function WorkflowDefaultLayout(props: WorkflowDefaultLayoutProps) { activeTabIndex={ subworkflowActiveTabIndexById[subworkflow.id] ?? 0 } + hideComputeSubTab={hideComputeSubTab} onActiveTabIndexChange={(tabIndex) => onSubworkflowActiveTabIndexChange( subworkflow.id,