import { h, Component, createRef } from 'preact'; import WBNavbarCommon from 'wb-navbar-common'; import WBArvadosCrumbs from 'wb-arvados-crumbs'; import WBBrowseDialog from 'wb-browse-dialog'; import WBTable from 'wb-table'; import makeArvadosRequest from 'make-arvados-request'; import linkState from 'linkstate'; function parseDefinition(text) { let definition; try { definition = JSON.parse(text); } catch (_) { definition = jsyaml.load(text); } return definition; } class WBLaunchWorkflowPage extends Component { constructor(...args) { super(...args); this.browseDialogRef = createRef(); this.state.inputs = {}; } componentDidMount() { let { app, workflowUuid } = this.props; let { arvHost, arvToken } = app.state; let prom = makeArvadosRequest(arvHost, arvToken, '/arvados/v1/workflows/' + workflowUuid); prom = prom.then(xhr => this.setState({ 'workflow': xhr.response, 'workflowDefinition': parseDefinition(xhr.response.definition), 'defaultProcessName': xhr.response.name + ' ' + (new Date().toISOString()), 'defaultProcessDescription': xhr.response.description })); } renderInput(inputSpec) { const isFile = (inputSpec.type === 'File' || inputSpec.type === 'File[]' || (inputSpec.type.type === 'array' && inputSpec.type.items === 'File')); const isDirectory = (inputSpec.type === 'Directory' || inputSpec.type === 'Directory[]' || (inputSpec.type.type === 'array' && inputSpec.type.items === 'Directory')); const isArray = (inputSpec.type === 'File[]' || inputSpec.type === 'Directory[]' || inputSpec.type.type === 'array'); if (!isFile && !isDirectory) return ( (this.state.inputs[inputSpec.id] = e.target.value) }> ); const button = ( ); return (
(this.state.inputs[inputSpec.id] = e.target.value) }>
{ button }
); } render({ app, workflowUuid }, { workflow, workflowDefinition, projectUuid, processName, processDescription, defaultProcessName, defaultProcessDescription }) { return (
{ workflow ? (

Launch Workflow

{ projectUuid ? ( ) : null }
(a.id === '#main')).inputs.map(it => [ it.label || it.id, this.renderInput(it) ]) } />
) :
Loading...
}
); } } export default WBLaunchWorkflowPage;