X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/be4232a50f210b4c4023e3dc5fddb931e71a1c4a..8725d0bc4185a0624784d8feac120ec8acff089d:/src/views-components/dialog-create/dialog-collection-create.tsx diff --git a/src/views-components/dialog-create/dialog-collection-create.tsx b/src/views-components/dialog-create/dialog-collection-create.tsx index af0e33f1..c85a6d12 100644 --- a/src/views-components/dialog-create/dialog-collection-create.tsx +++ b/src/views-components/dialog-create/dialog-collection-create.tsx @@ -2,114 +2,37 @@ // // SPDX-License-Identifier: AGPL-3.0 -import * as React from 'react'; -import { reduxForm, Field } from 'redux-form'; -import { compose } from 'redux'; -import { TextField } from '~/components/text-field/text-field'; -import { Dialog, DialogActions, DialogContent, DialogTitle } from '@material-ui/core/'; -import { Button, StyleRulesCallback, WithStyles, withStyles, CircularProgress } from '@material-ui/core'; +import React from 'react'; +import { InjectedFormProps, Field } from 'redux-form'; +import { WithDialogProps } from 'store/dialog/with-dialog'; +import { CollectionCreateFormDialogData } from 'store/collections/collection-create-actions'; +import { FormDialog } from 'components/form-dialog/form-dialog'; +import { + CollectionNameField, + CollectionDescriptionField, + CollectionStorageClassesField +} from 'views-components/form-fields/collection-form-fields'; +import { FileUploaderField } from '../file-uploader/file-uploader'; +import { ResourceParentField } from '../form-fields/resource-form-fields'; + +type DialogCollectionProps = WithDialogProps<{}> & InjectedFormProps; + +export const DialogCollectionCreate = (props: DialogCollectionProps) => + ; + +const CollectionAddFields = () => + + + + + +; -import { COLLECTION_NAME_VALIDATION, COLLECTION_DESCRIPTION_VALIDATION } from '~/validators/validators'; -import { FileUpload } from "~/components/file-upload/file-upload"; -import { connect, DispatchProp } from "react-redux"; -import { RootState } from "~/store/store"; -import { collectionUploaderActions, UploadFile } from "~/store/collections/uploader/collection-uploader-actions"; - -type CssRules = "button" | "lastButton" | "formContainer" | "createProgress" | "dialogActions"; - -const styles: StyleRulesCallback = theme => ({ - button: { - marginLeft: theme.spacing.unit - }, - lastButton: { - marginLeft: theme.spacing.unit, - marginRight: "20px", - }, - formContainer: { - display: "flex", - flexDirection: "column", - }, - createProgress: { - position: "absolute", - minWidth: "20px", - right: "110px" - }, - dialogActions: { - marginBottom: theme.spacing.unit * 3 - } -}); - -interface DialogCollectionDataProps { - open: boolean; - handleSubmit: any; - submitting: boolean; - invalid: boolean; - pristine: boolean; - files: UploadFile[]; -} - -interface DialogCollectionActionProps { - handleClose: () => void; - onSubmit: (data: { name: string, description: string }, files: UploadFile[]) => void; -} - -type DialogCollectionProps = DialogCollectionDataProps & DialogCollectionActionProps & DispatchProp & WithStyles; - -export const COLLECTION_CREATE_DIALOG = "collectionCreateDialog"; - -export const DialogCollectionCreate = compose( - connect((state: RootState) => ({ - files: state.collections.uploader - })), - reduxForm({ form: COLLECTION_CREATE_DIALOG }), - withStyles(styles))( - class DialogCollectionCreate extends React.Component { - render() { - const { classes, open, handleClose, handleSubmit, onSubmit, submitting, invalid, pristine, files } = this.props; - const busy = submitting || files.reduce( - (prev, curr) => prev + (curr.loaded > 0 && curr.loaded < curr.total ? 1 : 0), 0 - ) > 0; - return ( - -
onSubmit(data, files))}> - Create a collection - - - - this.props.dispatch(collectionUploaderActions.SET_UPLOAD_FILES(files))} /> - - - - - {busy && } - -
-
- ); - } - } - );