|
- import { h, Component } from 'preact';
- import WBTable from 'wb-table';
- import makeArvadosRequest from 'make-arvados-request';
- import arvadosTypeName from 'arvados-type-name';
- import arvadosObjectName from 'arvados-object-name';
- import urlForObject from 'url-for-object';
- import wbFormatDate from 'wb-format-date';
- import WBNameAndUuid from 'wb-name-and-uuid';
- import WBAccordion from 'wb-accordion';
-
- class WBCollectionFields extends Component {
- componentDidMount() {
- this.prepareRows();
- }
-
- componentWillReceiveProps(nextProps) {
- this.props = nextProps;
- this.prepareRows();
- }
-
- prepareRows() {
- let { uuid, app } = this.props;
- let { arvHost, arvToken } = app.state;
-
- const filters = [
- ['uuid', '=', uuid]
- ];
-
- let prom = makeArvadosRequest(arvHost, arvToken,
- '/arvados/v1/collections?filters=' + encodeURIComponent(JSON.stringify(filters)));
-
- prom = prom.then(xhr => {
- const item = xhr.response.items[0];
- if (!item)
- throw Error('Item not found');
- let rows = [
- [ 'Name', item.name ],
- [ 'Description', item.description || (<i>{ String(item.description) }</i>) ],
- [ 'Properties', (
- <WBAccordion names={ ['Properties'] } cardHeaderClass="card-header-sm">
- <pre class="word-wrap">{ JSON.stringify(item.properties, null, 2) }</pre>
- </WBAccordion>
- ) ],
- [ 'Portable Data Hash', item.portable_data_hash ],
- [ 'Replication Desired', item.replication_desired ? item.replication_desired : (
- <i>{ String(item.replication_desired) }</i>
- ) ],
- [ 'Replication Confirmed', item.replication_confirmed ? item.replication_confirmed : (
- <i>{ String(item.replication_confirmed) }</i>
- ) ],
- [ 'Replication Confirmed At', wbFormatDate(item.replication_confirmed_at) ],
- [ 'Trash At', wbFormatDate(item.trash_at) ],
- [ 'Delete At', wbFormatDate(item.delete_at) ],
- [ 'Is Trashed', String(item.is_trashed) ],
- [ 'Current Version UUID', (
- <WBNameAndUuid app={ app } uuid={ item.current_version_uuid } />
- ) ],
- [ 'Version', item.version ],
- [ 'Preserve Version', String(item.preserve_version) ],
- [ 'File Count', item.file_count ],
- [ 'Total Size', filesize(item.file_size_total) ]
- ];
- this.setState({ 'rows': rows });
- });
- }
-
- render({}, { rows }) {
- return (
- rows ? (
- <WBTable columns={ [ "Name", "Value" ] }
- headerClasses={ [ "col-sm-2", "col-sm-4" ] }
- rows={ rows }
- verticalHeader={ true } />
- ) : (
- <div>Loading...</div>
- )
- );
- }
- }
-
- export default WBCollectionFields;
|