X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/c44f9aa1e0b36cac00eca89d694876d40d427615..40b55e355fe0a206a4cb3eec676e44d935b7d5ec:/src/store/collections/collection-create-actions.ts diff --git a/src/store/collections/collection-create-actions.ts b/src/store/collections/collection-create-actions.ts index b6f0ddccf6..22202b1598 100644 --- a/src/store/collections/collection-create-actions.ts +++ b/src/store/collections/collection-create-actions.ts @@ -3,26 +3,36 @@ // SPDX-License-Identifier: AGPL-3.0 import { Dispatch } from "redux"; -import { reset, startSubmit, stopSubmit, initialize, FormErrors } from 'redux-form'; -import { RootState } from '~/store/store'; -import { getUserUuid } from "~/common/getuser"; -import { dialogActions } from "~/store/dialog/dialog-actions"; -import { ServiceRepository } from '~/services/services'; -import { getCommonResourceServiceError, CommonResourceServiceError } from "~/services/common-service/common-resource-service"; +import { reset, startSubmit, stopSubmit, initialize, FormErrors, change, formValueSelector } from 'redux-form'; +import { RootState } from 'store/store'; +import { getUserUuid } from "common/getuser"; +import { dialogActions } from "store/dialog/dialog-actions"; +import { ServiceRepository } from 'services/services'; +import { getCommonResourceServiceError, CommonResourceServiceError } from "services/common-service/common-resource-service"; import { uploadCollectionFiles } from './collection-upload-actions'; -import { fileUploaderActions } from '~/store/file-uploader/file-uploader-actions'; -import { progressIndicatorActions } from "~/store/progress-indicator/progress-indicator-actions"; -import { isProjectOrRunProcessRoute } from '~/store/projects/project-create-actions'; -import { snackbarActions, SnackbarKind } from '~/store/snackbar/snackbar-actions'; -import { CollectionResource } from "~/models/collection"; +import { fileUploaderActions } from 'store/file-uploader/file-uploader-actions'; +import { progressIndicatorActions } from "store/progress-indicator/progress-indicator-actions"; +import { isProjectOrRunProcessRoute } from 'store/projects/project-create-actions'; +import { snackbarActions, SnackbarKind } from 'store/snackbar/snackbar-actions'; +import { CollectionResource } from "models/collection"; +import { ResourcePropertiesFormData } from "views-components/resource-properties-form/resource-properties-form"; +import { addProperty, deleteProperty } from "lib/resource-properties"; export interface CollectionCreateFormDialogData { ownerUuid: string; name: string; description: string; + storageClassesDesired: string[]; + properties: CollectionProperties; +} + +export interface CollectionProperties { + [key: string]: string | string[]; } export const COLLECTION_CREATE_FORM_NAME = "collectionCreateFormName"; +export const COLLECTION_CREATE_PROPERTIES_FORM_NAME = "collectionCreatePropertiesFormName"; +export const COLLECTION_CREATE_FORM_SELECTOR = formValueSelector(COLLECTION_CREATE_FORM_NAME); export const openCollectionCreateDialog = (ownerUuid: string) => (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { @@ -68,3 +78,23 @@ export const createCollection = (data: CollectionCreateFormDialogData) => dispatch(progressIndicatorActions.STOP_WORKING(COLLECTION_CREATE_FORM_NAME)); } }; + +export const addPropertyToCreateCollectionForm = (data: ResourcePropertiesFormData) => + (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { + const properties = { ...COLLECTION_CREATE_FORM_SELECTOR(getState(), 'properties') }; + const key = data.keyID || data.key; + const value = data.valueID || data.value; + dispatch(change( + COLLECTION_CREATE_FORM_NAME, + 'properties', + addProperty(properties, key, value))); + }; + +export const removePropertyFromCreateCollectionForm = (key: string, value: string) => + (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { + const properties = { ...COLLECTION_CREATE_FORM_SELECTOR(getState(), 'properties') }; + dispatch(change( + COLLECTION_CREATE_FORM_NAME, + 'properties', + deleteProperty(properties, key, value))); + };