import { createTree, setNodeValueWith, TreeNode, setNode, mapTreeValues, Tree } from "~/models/tree";
import { TreePicker, TreePickerNode } from "./workflow-tree-picker";
-import { workflowTreePickerActions, WorkflowTreePickerAction } from "./workflow-tree-picker-actions";
+import { fileTreePickerActions, FileTreePickerAction } from "./workflow-tree-picker-actions";
import { TreeItemStatus } from "~/components/tree/tree";
import { compose } from "redux";
import { getNode } from '~/models/tree';
-export const workflowTreePickerReducer = (state: TreePicker = {}, action: WorkflowTreePickerAction) =>
- workflowTreePickerActions.match(action, {
+export const workflowTreePickerReducer = (state: TreePicker = {}, action: FileTreePickerAction) =>
+ fileTreePickerActions.match(action, {
LOAD_TREE_PICKER_NODE: ({ nodeId, pickerId }) =>
updateOrCreatePicker(state, pickerId, setNodeValueWith(setPending)(nodeId)),
LOAD_TREE_PICKER_NODE_SUCCESS: ({ nodeId, nodes, pickerId }) =>
import { Dispatch } from "redux";
import { connect } from "react-redux";
import { Typography } from "@material-ui/core";
-import { MainWorkflowTreePicker, MainWorkflowTreePickerProps } from "./main-workflow-tree-picker";
+import { MainFileTreePicker, MainFileTreePickerProps } from "./main-file-tree-picker";
import { TreeItem, TreeItemStatus } from "~/components/tree/tree";
import { ProjectResource } from "~/models/project";
-import { workflowTreePickerActions } from "~/store/workflow-tree-picker/workflow-tree-picker-actions";
+import { fileTreePickerActions } from "~/store/workflow-tree-picker/workflow-tree-picker-actions";
import { ListItemTextIcon } from "~/components/list-item-text-icon/list-item-text-icon";
import { ProjectIcon, FavoriteIcon, ProjectsIcon, ShareMeIcon, CollectionIcon } from '~/components/icon/icon';
import { createTreePickerNode } from "~/store/tree-picker/tree-picker";
import { GroupContentsResource } from '~/services/groups-service/groups-service';
import { loadCollectionFiles } from '~/store/collection-panel/collection-panel-files/collection-panel-files-actions';
-type WorkflowTreePickerProps = Pick<MainWorkflowTreePickerProps, 'onContextMenu' | 'toggleItemActive' | 'toggleItemOpen'>;
+type FileTreePickerProps = Pick<MainFileTreePickerProps, 'onContextMenu' | 'toggleItemActive' | 'toggleItemOpen'>;
-const mapDispatchToProps = (dispatch: Dispatch, props: { onChange: (projectUuid: string) => void }): WorkflowTreePickerProps => ({
+const mapDispatchToProps = (dispatch: Dispatch, props: { onChange: (projectUuid: string) => void }): FileTreePickerProps => ({
onContextMenu: () => { return; },
toggleItemActive: (nodeId, status, pickerId) => {
getNotSelectedTreePickerKind(pickerId)
- .forEach(pickerId => dispatch(workflowTreePickerActions.TOGGLE_TREE_PICKER_NODE_SELECT({ nodeId: '', pickerId })));
- dispatch(workflowTreePickerActions.TOGGLE_TREE_PICKER_NODE_SELECT({ nodeId, pickerId }));
+ .forEach(pickerId => dispatch(fileTreePickerActions.TOGGLE_TREE_PICKER_NODE_SELECT({ nodeId: '', pickerId })));
+ dispatch(fileTreePickerActions.TOGGLE_TREE_PICKER_NODE_SELECT({ nodeId, pickerId }));
props.onChange(nodeId);
},
// TODO: load sharedWithMe
}
} else {
- dispatch(workflowTreePickerActions.TOGGLE_TREE_PICKER_NODE_COLLAPSE({ nodeId, pickerId }));
+ dispatch(fileTreePickerActions.TOGGLE_TREE_PICKER_NODE_COLLAPSE({ nodeId, pickerId }));
}
};
FAVORITES = 'Favorites'
}
-export const WorkflowTreePicker = connect(undefined, mapDispatchToProps)((props: WorkflowTreePickerProps) =>
+export const WorkflowTreePicker = connect(undefined, mapDispatchToProps)((props: FileTreePickerProps) =>
<div style={{ display: 'flex', flexDirection: 'column' }}>
<div style={{ flexGrow: 1, overflow: 'auto' }}>
- <MainWorkflowTreePicker {...props} render={renderTreeItem} pickerId={TreePickerId.PROJECTS} />
- <MainWorkflowTreePicker {...props} render={renderTreeItem} pickerId={TreePickerId.SHARED_WITH_ME} />
- <MainWorkflowTreePicker {...props} render={renderTreeItem} pickerId={TreePickerId.FAVORITES} />
+ <MainFileTreePicker {...props} render={renderTreeItem} pickerId={TreePickerId.PROJECTS} />
+ <MainFileTreePicker {...props} render={renderTreeItem} pickerId={TreePickerId.SHARED_WITH_ME} />
+ <MainFileTreePicker {...props} render={renderTreeItem} pickerId={TreePickerId.FAVORITES} />
</div>
</div>);
export const loadProjectTreePicker = (nodeId: string) =>
async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
- console.log(nodeId);
- console.log(extractUuidKind(nodeId));
- dispatch(workflowTreePickerActions.LOAD_TREE_PICKER_NODE({ nodeId, pickerId: TreePickerId.PROJECTS }));
+ dispatch(fileTreePickerActions.LOAD_TREE_PICKER_NODE({ nodeId, pickerId: TreePickerId.PROJECTS }));
const ownerUuid = nodeId.length === 0 ? services.authService.getUuid() || '' : nodeId;
.addEqual('ownerUuid', ownerUuid)
.getFilters();
+ // TODO: loadfiles from collections
const { items } = (extractUuidKind(nodeId) === ResourceKind.COLLECTION)
? dispatch<any>(loadCollectionFiles(nodeId))
: await services.groupsService.contents(ownerUuid, { filters });
const parentId = services.authService.getUuid() || '';
if (nodeId === '') {
- dispatch(workflowTreePickerActions.LOAD_TREE_PICKER_NODE({ nodeId: parentId, pickerId: TreePickerId.FAVORITES }));
+ dispatch(fileTreePickerActions.LOAD_TREE_PICKER_NODE({ nodeId: parentId, pickerId: TreePickerId.FAVORITES }));
const { items } = await services.favoriteService.list(parentId);
dispatch<any>(receiveTreePickerData(parentId, items as ProjectResource[], TreePickerId.FAVORITES));
} else {
- dispatch(workflowTreePickerActions.LOAD_TREE_PICKER_NODE({ nodeId, pickerId: TreePickerId.FAVORITES }));
+ dispatch(fileTreePickerActions.LOAD_TREE_PICKER_NODE({ nodeId, pickerId: TreePickerId.FAVORITES }));
const filters = new FilterBuilder()
.addEqual('ownerUuid', nodeId)
.getFilters();
export const receiveTreePickerData = (nodeId: string, items: GroupContentsResource[] = [], pickerId: string) =>
(dispatch: Dispatch) => {
- dispatch(workflowTreePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({
+ dispatch(fileTreePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({
nodeId,
nodes: items.map(item => createTreePickerNode({ nodeId: item.uuid, value: item })),
pickerId,
}));
- dispatch(workflowTreePickerActions.TOGGLE_TREE_PICKER_NODE_COLLAPSE({ nodeId, pickerId }));
+ dispatch(fileTreePickerActions.TOGGLE_TREE_PICKER_NODE_COLLAPSE({ nodeId, pickerId }));
};
-export const WorkflowTreePickerField = (props: WrappedFieldProps) =>
+export const FileTreePickerField = (props: WrappedFieldProps) =>
<div style={{ height: '200px', display: 'flex', flexDirection: 'column' }}>
<WorkflowTreePicker onChange={handleChange(props)} />
{props.meta.dirty && props.meta.error &&
import { getNodeValue, getNodeChildrenIds, Tree as Ttree, createTree } from "~/models/tree";
import { Dispatch } from "redux";
-export interface MainWorkflowTreePickerProps {
+export interface MainFileTreePickerProps {
pickerId: string;
onContextMenu: (event: React.MouseEvent<HTMLElement>, nodeId: string, pickerId: string) => void;
toggleItemOpen: (nodeId: string, status: TreeItemStatus, pickerId: string) => void;
const memoizedMapStateToProps = () => {
let prevTree: Ttree<TreePickerNode>;
let mappedProps: Pick<TreeProps<any>, 'items'>;
- return (state: RootState, props: MainWorkflowTreePickerProps): Pick<TreeProps<any>, 'items'> => {
+ return (state: RootState, props: MainFileTreePickerProps): Pick<TreeProps<any>, 'items'> => {
const tree = state.treePicker[props.pickerId] || createTree();
if(tree !== prevTree){
prevTree = tree;
};
};
-const mapDispatchToProps = (dispatch: Dispatch, props: MainWorkflowTreePickerProps): Pick<TreeProps<any>, 'onContextMenu' | 'toggleItemOpen' | 'toggleItemActive'> => ({
+const mapDispatchToProps = (dispatch: Dispatch, props: MainFileTreePickerProps): Pick<TreeProps<any>, 'onContextMenu' | 'toggleItemOpen' | 'toggleItemActive'> => ({
onContextMenu: (event, item) => props.onContextMenu(event, item.id, props.pickerId),
toggleItemActive: (id, status) => props.toggleItemActive(id, status, props.pickerId),
toggleItemOpen: (id, status) => props.toggleItemOpen(id, status, props.pickerId)
});
-export const MainWorkflowTreePicker = connect(memoizedMapStateToProps(), mapDispatchToProps)(Tree);
+export const MainFileTreePicker = connect(memoizedMapStateToProps(), mapDispatchToProps)(Tree);
const treePickerToTreeItems = (tree: Ttree<TreePickerNode>) =>
(id: string): TreeItem<any> => {