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. 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. class WBCommonFields extends Component {
  9. componentDidMount() {
  10. this.prepareRows();
  11. }
  12. componentWillReceiveProps(nextProps) {
  13. this.props = nextProps;
  14. // this.setState({ 'rows': null });
  15. this.prepareRows();
  16. }
  17. prepareRows() {
  18. let { uuid, app } = this.props;
  19. let { arvHost, arvToken } = app.state;
  20. let item;
  21. let owner;
  22. let modifiedByUser;
  23. let prom = makeArvadosRequest(arvHost, arvToken,
  24. '/arvados/v1/' + arvadosTypeName(uuid) +
  25. 's/' + uuid);
  26. prom = prom.then(xhr => (item = xhr.response));
  27. prom = prom.then(() => makeArvadosRequest(arvHost, arvToken,
  28. '/arvados/v1/' + arvadosTypeName(item.owner_uuid) +
  29. 's/' + item.owner_uuid));
  30. prom = prom.then(xhr => (owner = xhr.response));
  31. prom = prom.then(() => makeArvadosRequest(arvHost, arvToken,
  32. '/arvados/v1/users/' + item.modified_by_user_uuid));
  33. prom = prom.then(xhr => (modifiedByUser = xhr.response));
  34. prom = prom.then(() => {
  35. let rows = [
  36. [ 'UUID', item.uuid ],
  37. [ 'Kind', item.kind ],
  38. [ 'Owner', (
  39. <div>
  40. <div>
  41. <a href={ urlForObject(owner) }>{ arvadosObjectName(owner) }</a>
  42. </div>
  43. <div>
  44. { item.owner_uuid }
  45. </div>
  46. </div>
  47. ) ],
  48. [ 'Created at', wbFormatDate(item.created_at) ],
  49. [ 'Modified at', wbFormatDate(item.modified_at) ],
  50. [ 'Modified by User', (
  51. <div>
  52. <div>
  53. <a href={ urlForObject(modifiedByUser) }>{ arvadosObjectName(modifiedByUser) }</a>
  54. </div>
  55. <div>
  56. { item.modified_by_user_uuid }
  57. </div>
  58. </div>
  59. ) ],
  60. [ 'Modified by Client', item.modified_by_client_uuid ],
  61. [ 'API Url', (
  62. <a href={ 'https://' + app.state.arvHost + '/arvados/v1' + item.href }>
  63. { 'https://' + app.state.arvHost + '/arvados/v1' + item.href }
  64. </a>
  65. ) ],
  66. [ 'ETag', item.etag ]
  67. ];
  68. this.setState({ 'rows': rows });
  69. });
  70. }
  71. render({}, { rows }) {
  72. return (
  73. rows ? (
  74. <WBTable columns={ [ "Name", "Value" ] }
  75. rows={ rows } />
  76. ) : (
  77. <div>Loading...</div>
  78. )
  79. );
  80. }
  81. }
  82. export default WBCommonFields;