// // Copyright (C) Stanislaw Adaszewski, 2020 // Contact: s.adaszewski@gmail.com // Website: https://adared.ch/wba // License: GNU Affero General Public License, Version 3 // import { h, Component, createRef } from 'preact'; import WBDialog from 'wb-dialog'; import linkState from 'linkstate'; import makeArvadosRequest from 'make-arvados-request'; class WBNewProjectDialog extends Component { constructor(...args) { super(...args); this.dialogRef = createRef(); this.state.inputId = uuid.v4(); } show(ownerUuid, callback) { const { inputId } = this.state; this.setState({ 'ownerUuid': ownerUuid, 'newName': null, 'placeholderName': 'New Project (' + (new Date()).toISOString() + ')', 'callback': callback || (() => {}) }); this.dialogRef.current.show(); $('#' + inputId).focus(); } hide() { this.dialogRef.current.hide(); } render({ app }, { ownerUuid, newName, placeholderName, callback, inputId, projectDescription }) { const { arvHost, arvToken } = app.state; return ( { const group = { 'group_class': 'project', 'name': newName || placeholderName, 'description': projectDescription || null, 'owner_uuid': ownerUuid }; makeArvadosRequest(arvHost, arvToken, '/arvados/v1/groups', { 'method': 'POST', 'data': JSON.stringify(group), 'expectedStatus': [200, 202] } ).then(callback); } }>
); } } export default WBNewProjectDialog;