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!
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

77 行
2.6KB

  1. import { h, Component } from 'preact';
  2. import WBTable from 'wb-table';
  3. import makeArvadosRequest from 'make-arvados-request';
  4. import arvadosTypeName from 'arvados-type-name';
  5. import arvadosObjectName from 'arvados-object-name';
  6. import urlForObject from 'url-for-object';
  7. import wbFormatDate from 'wb-format-date';
  8. import WBNameAndUuid from 'wb-name-and-uuid';
  9. import WBAccordion from 'wb-accordion';
  10. class WBCollectionFields extends Component {
  11. componentDidMount() {
  12. this.prepareRows();
  13. }
  14. componentWillReceiveProps(nextProps) {
  15. this.props = nextProps;
  16. this.prepareRows();
  17. }
  18. prepareRows() {
  19. let { uuid, app } = this.props;
  20. let { arvHost, arvToken } = app.state;
  21. let item;
  22. let prom = makeArvadosRequest(arvHost, arvToken,
  23. '/arvados/v1/collections/' + uuid);
  24. prom = prom.then(xhr => (item = xhr.response));
  25. prom = prom.then(() => {
  26. let rows = [
  27. [ 'Name', item.name ],
  28. [ 'Description', item.description || (<i>{ String(item.description) }</i>) ],
  29. [ 'Properties', (
  30. <WBAccordion names={ ['Properties'] } cardHeaderClass="card-header-sm">
  31. <pre class="word-wrap">{ JSON.stringify(item.properties, null, 2) }</pre>
  32. </WBAccordion>
  33. ) ],
  34. [ 'Portable Data Hash', item.portable_data_hash ],
  35. [ 'Replication Desired', item.replication_desired ? item.replication_desired : (
  36. <i>{ String(item.replication_desired) }</i>
  37. ) ],
  38. [ 'Replication Confirmed', item.replication_confirmed ? item.replication_confirmed : (
  39. <i>{ String(item.replication_confirmed) }</i>
  40. ) ],
  41. [ 'Replication Confirmed At', wbFormatDate(item.replication_confirmed_at) ],
  42. [ 'Trash At', wbFormatDate(item.trash_at) ],
  43. [ 'Delete At', wbFormatDate(item.delete_at) ],
  44. [ 'Is Trashed', String(item.is_trashed) ],
  45. [ 'Current Version UUID', (
  46. <WBNameAndUuid app={ app } uuid={ item.current_version_uuid } />
  47. ) ],
  48. [ 'Version', item.version ],
  49. [ 'Preserve Version', String(item.preserve_version) ],
  50. [ 'File Count', item.file_count ],
  51. [ 'Total Size', filesize(item.file_size_total) ]
  52. ];
  53. this.setState({ 'rows': rows });
  54. });
  55. }
  56. render({}, { rows }) {
  57. return (
  58. rows ? (
  59. <WBTable columns={ [ "Name", "Value" ] }
  60. headerClasses={ [ "col-sm-2", "col-sm-4" ] }
  61. rows={ rows }
  62. verticalHeader={ true } />
  63. ) : (
  64. <div>Loading...</div>
  65. )
  66. );
  67. }
  68. }
  69. export default WBCollectionFields;