IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an email to s dot adaszewski at gmail dot com. User accounts are meant only to report issues and/or generate pull requests. This is a purpose-specific Git hosting for ADARED projects. Thank you for your understanding!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
2.7KB

  1. //
  2. // Copyright (C) Stanislaw Adaszewski, 2020
  3. // Contact: s.adaszewski@gmail.com
  4. // Website: https://adared.ch/wba
  5. // License: GNU Affero General Public License, Version 3
  6. //
  7. import { h, Component } from 'preact';
  8. import WBNavbarCommon from 'wb-navbar-common';
  9. import WBArvadosCrumbs from 'wb-arvados-crumbs';
  10. import makeArvadosRequest from 'make-arvados-request';
  11. import WBCommonFields from 'wb-common-fields';
  12. import WBContainerRequestFields from 'wb-container-request-fields';
  13. import WBProcessListing from 'wb-process-listing';
  14. import WBProcessDashboard from 'wb-process-dashboard';
  15. class WBProcessView extends Component {
  16. constructor(...args) {
  17. super(...args);
  18. this.state.objectUrls = [];
  19. }
  20. getUrl(props) {
  21. const page = ('page' in props ? props.page : this.props.page);
  22. return ('/process/' + this.props.uuid +
  23. (page ? '/' + page : ''));
  24. }
  25. fetchData() {
  26. let { arvHost, arvToken } = this.props.app.state;
  27. let prom = makeArvadosRequest(arvHost, arvToken,
  28. '/arvados/v1/container_requests/' + this.props.uuid);
  29. let req;
  30. let cont;
  31. prom = prom.then(xhr => {
  32. req = xhr.response;
  33. if (req.container_uuid) {
  34. let prom_1 = makeArvadosRequest(arvHost, arvToken,
  35. '/arvados/v1/containers/' + req.container_uuid);
  36. prom_1 = prom_1.then(xhr => (cont = xhr.response));
  37. return prom_1;
  38. }
  39. });
  40. prom = prom.then(() => {
  41. this.setState({
  42. 'request': req,
  43. 'container': cont
  44. });
  45. });
  46. }
  47. componentDidMount() {
  48. this.fetchData();
  49. }
  50. componentWillReceiveProps(nextProps) {
  51. this.props = nextProps;
  52. this.setState({ 'objectUrls': [], 'request': null, 'container': null });
  53. this.fetchData();
  54. }
  55. render({ app, uuid, page }, { container }) {
  56. return (
  57. <div>
  58. <WBNavbarCommon app={ app } />
  59. <WBArvadosCrumbs app={ app } uuid={ uuid } />
  60. <div class="my-2">
  61. This is the process view for { uuid }
  62. </div>
  63. <h2>Children Dashboard</h2>
  64. <WBProcessDashboard app={ app } parentProcessUuid={ uuid } lazy={ true } />
  65. <h2>Common Fields</h2>
  66. <WBCommonFields app={ app } uuid={ uuid } />
  67. <h2>Container Request Fields</h2>
  68. <WBContainerRequestFields app={ app } uuid={ uuid } />
  69. <h2>Children</h2>
  70. <WBProcessListing app={ app }
  71. appState={ app.state }
  72. requestingContainerUuid={ container ? container.uuid : null }
  73. waitForNextProps={ !container }
  74. itemsPerPage="20"
  75. activePage={ Number(page || 0) }
  76. getPageUrl={ page => this.getUrl({ page }) } />
  77. </div>
  78. );
  79. }
  80. }
  81. export default WBProcessView;