import { h, Component } from 'preact'; import WBNavbarCommon from 'wb-navbar-common'; import WBArvadosCrumbs from 'wb-arvados-crumbs'; import makeArvadosRequest from 'make-arvados-request'; import detectUuids from 'detect-uuids'; import arvadosTypeName from 'arvados-type-name'; import urlForObject from 'url-for-object'; import detectHashes from 'detect-hashes'; import WBCommonFields from 'wb-common-fields'; import WBContainerRequestFields from 'wb-container-request-fields'; class WBProcessView extends Component { constructor(...args) { super(...args); this.state.objectUrls = []; } componentDidMount() { let { arvHost, arvToken } = this.props.app.state; let prom = makeArvadosRequest(arvHost, arvToken, '/arvados/v1/container_requests/' + this.props.uuid); let req; let cont; prom = prom.then(xhr => { req = xhr.response; if (req.container_uuid) { let prom_1 = makeArvadosRequest(arvHost, arvToken, '/arvados/v1/containers/' + req.container_uuid); prom_1 = prom_1.then(xhr => (cont = xhr.response)); return prom_1; } }); //prom = prom.then(xhr => (cont = xhr.response)); prom = prom.then(() => { let hashes = detectHashes([ req, cont ]); let filters = [ [ 'portable_data_hash', 'in', hashes ] ]; return makeArvadosRequest(arvHost, arvToken, '/arvados/v1/collections?filters=' + encodeURIComponent(JSON.stringify(filters))); }); prom = prom.then(xhr => { let colUuids = xhr.response['items'].map(item => item.uuid); let uuids = detectUuids([ req, cont ]); let dict = {}; colUuids.map(u => (dict[u] = true)); uuids.map(u => (dict[u] = true)); return Object.keys(dict); }); prom = prom.then(uuids => { // let uuids = detectUuids([ req, cont ]); let objectTypes = uuids.map(u => arvadosTypeName(u.split('-')[1]) + 's'); let objQueries = {}; objectTypes.map(t => (objQueries[t] = [])); uuids.map((u, idx) => (objQueries[objectTypes[idx]].push(u))); let prom_1 = new Promise(accept => accept()); let objects = []; // delete objQueries['users']; delete objQueries['api_clients']; for (let k in objQueries) { let filters = [ ['uuid', 'in', objQueries[k]] ]; prom_1 = prom_1.then(() => makeArvadosRequest(arvHost, arvToken, '/arvados/v1/' + k + '?filters=' + encodeURIComponent(JSON.stringify(filters)))); prom_1 = prom_1.then(xhr => (objects = objects.concat(xhr.response['items']))); } prom_1 = prom_1.then(() => objects); return prom_1; }); prom = prom.then(objects => { let objDict = {}; objects.map(o => (objDict[o['uuid']] = o)); let urls = objects.map(o => urlForObject(o)); this.setState({ 'objectUrls': urls }); }); } render({ app, uuid }, { objectUrls }) { return (
This is the process view for { uuid }

Common Fields

Container Request Fields

    { objectUrls.map(url => (
  • { url }
  • )) }
); } } export default WBProcessView;