uuid: string;
}
-export const MakeACopyDialog = (props: WithDialogProps<string> & InjectedFormProps<CopyFormData>) =>
+export const ProjectCopy = (props: WithDialogProps<string> & InjectedFormProps<CopyFormData>) =>
<form>
<Dialog open={props.open}
disableBackdropClick={true}
type='submit'
onClick={props.handleSubmit}
disabled={props.pristine || props.invalid || props.submitting}>
- {props.submitting ? <CircularProgress size={20} /> : 'Copy'}
- </Button>
+ {props.submitting && <CircularProgress size={20} style={{position: 'absolute'}}/>}
+ Copy
+ </Button>
</DialogActions>
</Dialog>
</form>;
import * as Adapter from 'enzyme-adapter-react-16';
import ListItem from "@material-ui/core/ListItem/ListItem";
-import { Tree, TreeItem } from './tree';
+import { Tree, TreeItem, TreeItemStatus } from './tree';
import { ProjectResource } from '../../models/project';
import { mockProjectResource } from '../../models/test-utils';
import { Checkbox } from '@material-ui/core';
id: "3",
open: true,
active: true,
- status: 1,
+ status: TreeItemStatus.LOADED
};
const wrapper = mount(<Tree
render={project => <div />}
id: "3",
open: true,
active: true,
- status: 1,
+ status: TreeItemStatus.LOADED,
};
const wrapper = mount(<Tree
render={project => <div />}
id: "3",
open: true,
active: true,
- status: 1,
+ status: TreeItemStatus.LOADED
};
const wrapper = mount(<Tree
showSelection={true}
id: "3",
open: true,
active: true,
- status: 1,
+ status: TreeItemStatus.LOADED,
};
const spy = jest.fn();
const onSelectionChanged = (event: any, item: TreeItem<any>) => spy(item);
}
getProperArrowAnimation = (status: string, items: Array<TreeItem<T>>) => {
+ return this.isSidePanelIconNotNeeded(status, items) ? <span /> : <SidePanelRightArrowIcon />;
+ }
+
+ isSidePanelIconNotNeeded = (status: string, items: Array<TreeItem<T>>) => {
return status === TreeItemStatus.PENDING ||
- (status === TreeItemStatus.LOADED && !items) ||
- (status === TreeItemStatus.LOADED && items && items.length === 0) ? <span /> : <SidePanelRightArrowIcon />;
+ (status === TreeItemStatus.LOADED && !items) ||
+ (status === TreeItemStatus.LOADED && items && items.length === 0);
}
getToggableIconClassNames = (isOpen?: boolean, isActive?: boolean) => {
import { collectionFilesItemActionSet } from './views-components/context-menu/action-sets/collection-files-item-action-set';
import { collectionActionSet } from './views-components/context-menu/action-sets/collection-action-set';
import { collectionResourceActionSet } from './views-components/context-menu/action-sets/collection-resource-action-set';
-import { initPickerProjectTree } from './store/project-tree-picker/project-tree-picker-actions';
const getBuildNumber = () => "BN-" + (process.env.BUILD_NUMBER || "dev");
const getGitCommit = () => "GIT-" + (process.env.GIT_COMMIT || "latest").substr(0, 7);
const store = configureStore(history, services);
store.dispatch(initAuth());
- store.dispatch(getProjectList(services.authService.getUuid()));
- store.dispatch(initPickerProjectTree());
+ store.dispatch(getProjectList(services.authService.getUuid()));
const TokenComponent = (props: any) => <ApiToken authService={services.authService} {...props}/>;
const WorkbenchComponent = (props: any) => <Workbench authService={services.authService} buildInfo={buildInfo} {...props}/>;
import { dialogActions } from '../../dialog/dialog-actions';
import { getNodeValue } from "~/models/tree";
import { filterCollectionFilesBySelection } from './collection-panel-files-state';
-import { startSubmit, initialize, SubmissionError, stopSubmit } from 'redux-form';
-import { loadProjectTreePickerProjects } from '../../../views-components/project-tree-picker/project-tree-picker';
+import { startSubmit, initialize, stopSubmit } from 'redux-form';
import { getCommonResourceServiceError, CommonResourceServiceError } from "~/common/api/common-resource-service";
+import { resetPickerProjectTree } from '../../project-tree-picker/project-tree-picker-actions';
export const collectionPanelFilesAction = unionize({
SET_COLLECTION_FILES: ofType<CollectionFilesTree>(),
projectUuid: ''
};
dispatch(initialize(COLLECTION_PARTIAL_COPY, initialData));
- dispatch<any>(loadProjectTreePickerProjects(''));
+ dispatch<any>(resetPickerProjectTree());
dispatch(dialogActions.OPEN_DIALOG({ id: COLLECTION_PARTIAL_COPY, data: {} }));
}
};
import { RenameIcon, ShareIcon, MoveToIcon, CopyIcon, DetailsIcon, ProvenanceGraphIcon, AdvancedIcon, RemoveIcon } from "~/components/icon/icon";
import { openUpdater } from "~/store/collections/updater/collection-updater-action";
import { favoritePanelActions } from "~/store/favorite-panel/favorite-panel-action";
-import { openMakeACopyDialog } from "~/views-components/make-a-copy-dialog/make-a-copy-dialog";
+import { openProjectCopyDialog } from "~/views-components/project-copy-dialog/project-copy-dialog";
import { openMoveToDialog } from "../../move-to-dialog/move-to-dialog";
export const collectionActionSet: ContextMenuActionSet = [[
icon: CopyIcon,
name: "Copy to project",
execute: (dispatch, resource) => {
- dispatch<any>(openMakeACopyDialog({name: resource.name, projectUuid: resource.uuid}));
+ dispatch<any>(openProjectCopyDialog({name: resource.name, projectUuid: resource.uuid}));
}
},
{
import { RenameIcon, ShareIcon, MoveToIcon, CopyIcon, DetailsIcon, RemoveIcon } from "~/components/icon/icon";
import { openUpdater } from "~/store/collections/updater/collection-updater-action";
import { favoritePanelActions } from "~/store/favorite-panel/favorite-panel-action";
-import { openMakeACopyDialog } from "~/views-components/make-a-copy-dialog/make-a-copy-dialog";
+import { openProjectCopyDialog } from "~/views-components/project-copy-dialog/project-copy-dialog";
import { openMoveToDialog } from '../../move-to-dialog/move-to-dialog';
export const collectionResourceActionSet: ContextMenuActionSet = [[
icon: CopyIcon,
name: "Copy to project",
execute: (dispatch, resource) => {
- dispatch<any>(openMakeACopyDialog({name: resource.name, projectUuid: resource.uuid}));
+ dispatch<any>(openProjectCopyDialog({name: resource.name, projectUuid: resource.uuid}));
},
},
{
import { favoritePanelActions } from "~/store/favorite-panel/favorite-panel-action";
import { openMoveToDialog } from "../../move-to-dialog/move-to-dialog";
import { PROJECT_CREATE_DIALOG } from "../../dialog-create/dialog-project-create";
-import { openMakeACopyDialog } from "~/views-components/make-a-copy-dialog/make-a-copy-dialog";
+import { openProjectCopyDialog } from "~/views-components/project-copy-dialog/project-copy-dialog";
export const projectActionSet: ContextMenuActionSet = [[
{
icon: CopyIcon,
name: "Copy to project",
execute: (dispatch, resource) => {
- dispatch<any>(openMakeACopyDialog({name: resource.name, projectUuid: resource.uuid}));
+ dispatch<any>(openProjectCopyDialog({name: resource.name, projectUuid: resource.uuid}));
}
}
]];
+++ /dev/null
-// Copyright (C) The Arvados Authors. All rights reserved.
-//
-// SPDX-License-Identifier: AGPL-3.0
-import { Dispatch, compose } from "redux";
-import { withDialog } from "../../store/dialog/with-dialog";
-import { dialogActions } from "../../store/dialog/dialog-actions";
-import { MakeACopyDialog, CopyFormData } from "../../components/make-a-copy/make-a-copy";
-import { reduxForm, startSubmit, stopSubmit, initialize } from 'redux-form';
-import { resetPickerProjectTree } from "~/store/project-tree-picker/project-tree-picker-actions";
-
-export const MAKE_A_COPY_DIALOG = 'makeACopyDialog';
-export const openMakeACopyDialog = (data: {projectUuid: string, name: string}) =>
- (dispatch: Dispatch) => {
- dispatch<any>(resetPickerProjectTree());
- const initialData: CopyFormData = {name: "Copy of: " + data.name, projectUuid: '', uuid: data.projectUuid};
- dispatch<any>(initialize(MAKE_A_COPY_DIALOG, initialData));
- dispatch(dialogActions.OPEN_DIALOG({ id: MAKE_A_COPY_DIALOG, data: {} }));
- };
-export const MakeACopyToProjectDialog = compose(
- withDialog(MAKE_A_COPY_DIALOG),
- reduxForm({
- form: MAKE_A_COPY_DIALOG,
- onSubmit: (data, dispatch) => {
- dispatch(startSubmit(MAKE_A_COPY_DIALOG));
- setTimeout(() => dispatch(stopSubmit(MAKE_A_COPY_DIALOG, { name: 'Invalid path' })), 2000);
- }
- })
-)(MakeACopyDialog);
\ No newline at end of file
--- /dev/null
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+import { Dispatch, compose } from "redux";
+import { withDialog } from "../../store/dialog/with-dialog";
+import { dialogActions } from "../../store/dialog/dialog-actions";
+import { ProjectCopy, CopyFormData } from "../../components/project-copy/project-copy";
+import { reduxForm, startSubmit, stopSubmit, initialize } from 'redux-form';
+import { resetPickerProjectTree } from "~/store/project-tree-picker/project-tree-picker-actions";
+
+export const PROJECT_COPY_DIALOG = 'projectCopy';
+export const openProjectCopyDialog = (data: { projectUuid: string, name: string }) =>
+ (dispatch: Dispatch) => {
+ dispatch<any>(resetPickerProjectTree());
+ const initialData: CopyFormData = { name: `Copy of: ${data.name}`, projectUuid: '', uuid: data.projectUuid };
+ dispatch<any>(initialize(PROJECT_COPY_DIALOG, initialData));
+ dispatch(dialogActions.OPEN_DIALOG({ id: PROJECT_COPY_DIALOG, data: {} }));
+ };
+
+export const ProjectCopyDialog = compose(
+ withDialog(PROJECT_COPY_DIALOG),
+ reduxForm({
+ form: PROJECT_COPY_DIALOG,
+ onSubmit: (data, dispatch) => {
+ dispatch(startSubmit(PROJECT_COPY_DIALOG));
+ setTimeout(() => dispatch(stopSubmit(PROJECT_COPY_DIALOG, { name: 'Invalid path' })), 2000);
+ }
+ })
+)(ProjectCopy);
\ No newline at end of file
import { COLLECTION_CREATE_DIALOG } from '~/views-components/dialog-create/dialog-collection-create';
import { PROJECT_CREATE_DIALOG } from '~/views-components/dialog-create/dialog-project-create';
import { UploadCollectionFilesDialog } from '~/views-components/upload-collection-files-dialog/upload-collection-files-dialog';
-import { MakeACopyToProjectDialog } from '~/views-components/make-a-copy-dialog/make-a-copy-dialog';
+import { ProjectCopyDialog } from '~/views-components/project-copy-dialog/project-copy-dialog';
import { CollectionPartialCopyDialog } from '../../views-components/collection-partial-copy-dialog/collection-partial-copy-dialog';
const DRAWER_WITDH = 240;
<MoveToProjectDialog />
<DialogCollectionCreateWithSelectedFile />
<FileRemoveDialog />
- <MakeACopyToProjectDialog />
+ <ProjectCopyDialog />
<MultipleFilesRemoveDialog />
<UpdateCollectionDialog />
<UploadCollectionFilesDialog />