| @@ -6,46 +6,51 @@ import WBJsonViewer from 'wb-json-viewer'; | |||||
| import wbFormatSpecialValue from 'wb-format-special-value'; | import wbFormatSpecialValue from 'wb-format-special-value'; | ||||
| import WBLazyInlineName from 'wb-lazy-inline-name'; | import WBLazyInlineName from 'wb-lazy-inline-name'; | ||||
| import wbFormatDate from 'wb-format-date'; | import wbFormatDate from 'wb-format-date'; | ||||
| import wbUpdateField from 'wb-update-field'; | |||||
| import WBJsonEditor from 'wb-json-editor'; | |||||
| class WBProjectFields extends Component { | class WBProjectFields extends Component { | ||||
| componentDidMount() { | componentDidMount() { | ||||
| this.prepareRows(); | |||||
| this.fetchData(); | |||||
| } | } | ||||
| componentWillReceiveProps(nextProps) { | componentWillReceiveProps(nextProps) { | ||||
| this.props = 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 { uuid, app } = this.props; | ||||
| let { arvHost, arvToken } = app.state; | let { arvHost, arvToken } = app.state; | ||||
| let prom = makeArvadosRequest(arvHost, arvToken, | let prom = makeArvadosRequest(arvHost, arvToken, | ||||
| '/arvados/v1/groups/' + uuid); | '/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 }) { | render({}, { rows }) { | ||||