|
|
@@ -6,46 +6,51 @@ import WBJsonViewer from 'wb-json-viewer'; |
|
|
|
import wbFormatSpecialValue from 'wb-format-special-value';
|
|
|
|
import WBLazyInlineName from 'wb-lazy-inline-name';
|
|
|
|
import wbFormatDate from 'wb-format-date';
|
|
|
|
import wbUpdateField from 'wb-update-field';
|
|
|
|
import WBJsonEditor from 'wb-json-editor';
|
|
|
|
|
|
|
|
class WBProjectFields extends Component {
|
|
|
|
componentDidMount() {
|
|
|
|
this.prepareRows();
|
|
|
|
this.fetchData();
|
|
|
|
}
|
|
|
|
|
|
|
|
componentWillReceiveProps(nextProps) {
|
|
|
|
this.props = nextProps;
|
|
|
|
this.prepareRows();
|
|
|
|
this.fetchData();
|
|
|
|
}
|
|
|
|
|
|
|
|
prepareRows() {
|
|
|
|
prepareRows(item) {
|
|
|
|
const { app } = this.props;
|
|
|
|
const { arvHost, arvToken } = app.state;
|
|
|
|
|
|
|
|
const rows = [
|
|
|
|
[ 'Name', wbFormatSpecialValue(item.name) ],
|
|
|
|
[ 'Description', wbFormatSpecialValue(item.description) ],
|
|
|
|
[ 'Properties', (
|
|
|
|
<WBJsonEditor name="Properties" app={ app } value={ item.properties }
|
|
|
|
onChange={ value => wbUpdateField(arvHost, arvToken, item.uuid, 'properties', value)
|
|
|
|
.then(() => { item.properties = value; this.prepareRows(item); }) } />
|
|
|
|
) ],
|
|
|
|
[ 'Writable by', item.writable_by
|
|
|
|
.map(a => (<WBLazyInlineName app={ app } identifier={ a } />))
|
|
|
|
.reduce((a, b) => [].concat(a).concat(', ').concat(b))
|
|
|
|
],
|
|
|
|
[ 'Trash At', wbFormatDate(item.trash_at) ],
|
|
|
|
[ 'Delete At', wbFormatDate(item.delete_at) ],
|
|
|
|
[ 'Is Trashed', wbFormatSpecialValue(item.is_trashed) ]
|
|
|
|
];
|
|
|
|
|
|
|
|
this.setState({ rows });
|
|
|
|
}
|
|
|
|
|
|
|
|
fetchData() {
|
|
|
|
let { uuid, app } = this.props;
|
|
|
|
let { arvHost, arvToken } = app.state;
|
|
|
|
|
|
|
|
let prom = makeArvadosRequest(arvHost, arvToken,
|
|
|
|
'/arvados/v1/groups/' + uuid);
|
|
|
|
|
|
|
|
prom = prom.then(xhr => {
|
|
|
|
const item = xhr.response;
|
|
|
|
|
|
|
|
const rows = [
|
|
|
|
[ 'Name', wbFormatSpecialValue(item.name) ],
|
|
|
|
[ 'Description', wbFormatSpecialValue(item.description) ],
|
|
|
|
[ 'Properties', (
|
|
|
|
<WBAccordion names={[ 'Properties' ]} cardHeaderClass="card-header-sm">
|
|
|
|
<WBJsonViewer app={ app } value={ item.properties } />
|
|
|
|
</WBAccordion>
|
|
|
|
) ],
|
|
|
|
[ 'Writable by', item.writable_by
|
|
|
|
.map(a => (<WBLazyInlineName app={ app } identifier={ a } />))
|
|
|
|
.reduce((a, b) => [].concat(a).concat(', ').concat(b))
|
|
|
|
],
|
|
|
|
[ 'Trash At', wbFormatDate(item.trash_at) ],
|
|
|
|
[ 'Delete At', wbFormatDate(item.delete_at) ],
|
|
|
|
[ 'Is Trashed', wbFormatSpecialValue(item.is_trashed) ]
|
|
|
|
];
|
|
|
|
|
|
|
|
this.setState({ 'rows': rows });
|
|
|
|
});
|
|
|
|
prom = prom.then(xhr => this.prepareRows(xhr.response));
|
|
|
|
}
|
|
|
|
|
|
|
|
render({}, { rows }) {
|
|
|
|