open?: boolean;
margin?: boolean;
openAble?: boolean;
- activeAction?: (dispatch: Dispatch) => void;
+ activeAction?: (dispatch: Dispatch, uuid?: string) => void;
}
interface SidePanelDataProps {
}
export const setProjectItem = (itemId: string, itemMode: ItemMode) =>
- (dispatch: Dispatch, getState: () => RootState) => {
+ (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
const { projects, router } = getState();
const treeItem = findTreeItem(projects.items, itemId);
if (treeItem) {
-
const resourceUrl = getResourceUrl(treeItem.data);
if (itemMode === ItemMode.ACTIVE || itemMode === ItemMode.BOTH) {
dispatch(projectPanelActions.REQUEST_ITEMS());
}));
+ } else {
+ const uuid = services.authService.getUuid();
+ if (itemId === uuid) {
+ dispatch(projectActions.TOGGLE_PROJECT_TREE_ITEM_ACTIVE(uuid));
+ dispatch(projectPanelActions.RESET_PAGINATION());
+ dispatch(projectPanelActions.REQUEST_ITEMS());
+ }
}
};
value: 'payload'
});
-export const getProjectList = (parentUuid: string = '') => (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
- dispatch(projectActions.PROJECTS_REQUEST(parentUuid));
- return services.projectService.list({
- filters: FilterBuilder
- .create()
- .addEqual("ownerUuid", parentUuid)
- }).then(({ items: projects }) => {
- dispatch(projectActions.PROJECTS_SUCCESS({ projects, parentItemId: parentUuid }));
- dispatch<any>(checkPresenceInFavorites(projects.map(project => project.uuid)));
- return projects;
- });
-};
+export const getProjectList = (parentUuid: string = '') =>
+ (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
+ dispatch(projectActions.PROJECTS_REQUEST(parentUuid));
+ return services.projectService.list({
+ filters: FilterBuilder
+ .create()
+ .addEqual("ownerUuid", parentUuid)
+ }).then(({ items: projects }) => {
+ dispatch(projectActions.PROJECTS_SUCCESS({ projects, parentItemId: parentUuid }));
+ dispatch<any>(checkPresenceInFavorites(projects.map(project => project.uuid)));
+ return projects;
+ });
+ };
export const createProject = (project: Partial<ProjectResource>) =>
(dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
import { Dispatch } from "redux";
import { push } from "react-router-redux";
import { favoritePanelActions } from "../favorite-panel/favorite-panel-action";
+import { projectPanelActions } from "../project-panel/project-panel-action";
+import { projectActions } from "../project/project-action";
+import { getProjectUrl } from "../../models/project";
export type SidePanelState = SidePanelItem[];
open: false,
active: false,
margin: true,
- openAble: true
+ openAble: true,
+ activeAction: (dispatch: Dispatch, uuid: string) => {
+ dispatch(projectActions.TOGGLE_PROJECT_TREE_ITEM_ACTIVE(uuid));
+ dispatch(push(getProjectUrl(uuid)));
+ dispatch(projectPanelActions.RESET_PAGINATION());
+ dispatch(projectPanelActions.REQUEST_ITEMS());
+ }
},
{
id: SidePanelIdentifiers.SHARED_WITH_ME,
import { ContextMenuActionSet } from "../context-menu-action-set";
import { projectActions } from "../../../store/project/project-action";
-import { NewProjectIcon } from "../../../components/icon/icon";
+import { collectionCreateActions } from "../../../store/collections/creator/collection-creator-action";
import { PROJECT_CREATE_DIALOG } from "../../dialog-create/dialog-project-create";
+import { COLLECTION_CREATE_DIALOG } from "../../dialog-create/dialog-collection-create";
+import { NewProjectIcon, CollectionIcon } from "../../../components/icon/icon";
-export const rootProjectActionSet: ContextMenuActionSet = [[{
- icon: NewProjectIcon,
- name: "New project",
- execute: (dispatch, resource) => {
- dispatch(reset(PROJECT_CREATE_DIALOG));
- dispatch(projectActions.OPEN_PROJECT_CREATOR({ ownerUuid: resource.uuid }));
+export const rootProjectActionSet: ContextMenuActionSet = [[
+ {
+ icon: NewProjectIcon,
+ name: "New project",
+ execute: (dispatch, resource) => {
+ dispatch(reset(PROJECT_CREATE_DIALOG));
+ dispatch(projectActions.OPEN_PROJECT_CREATOR({ ownerUuid: resource.uuid }));
+ }
+ },
+ {
+ icon: CollectionIcon,
+ name: "New Collection",
+ execute: (dispatch, resource) => {
+ dispatch(reset(COLLECTION_CREATE_DIALOG));
+ dispatch(collectionCreateActions.OPEN_COLLECTION_CREATOR({ ownerUuid: resource.uuid }));
+ }
}
-}]];
+]];
onContextMenu={this.props.onContextMenu}
extractKey={(item: ProjectPanelItem) => item.uuid}
defaultIcon={ProjectIcon}
- defaultMessages={['Your project is empty. Please create a project', 'or create a collection and upload a data.']} />
+ defaultMessages={['Your project is empty.', 'Please create a project or create a collection and upload a data.']} />
</div>;
}
import { StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core/styles';
import Drawer from '@material-ui/core/Drawer';
import { connect, DispatchProp } from "react-redux";
-import { Route, Switch, RouteComponentProps } from "react-router";
+import { Route, Switch, RouteComponentProps, Redirect } from "react-router";
import { login, logout } from "../../store/auth/auth-action";
import { User } from "../../models/user";
import { RootState } from "../../store/store";
<main className={classes.contentWrapper}>
<div className={classes.content}>
<Switch>
+ <Route path='/' exact render={() => <Redirect to={`/projects/${this.props.authService.getUuid()}`} />} />
<Route path="/projects/:id" render={this.renderProjectPanel} />
<Route path="/favorites" render={this.renderFavoritePanel} />
<Route path="/collections/:id" render={this.renderCollectionPanel} />
toggleSidePanelActive = (itemId: string) => {
this.props.dispatch(sidePanelActions.TOGGLE_SIDE_PANEL_ITEM_ACTIVE(itemId));
this.props.dispatch(projectActions.RESET_PROJECT_TREE_ACTIVITY(itemId));
+
const panelItem = this.props.sidePanelItems.find(it => it.id === itemId);
if (panelItem && panelItem.activeAction) {
- panelItem.activeAction(this.props.dispatch);
+ panelItem.activeAction(this.props.dispatch, this.props.authService.getUuid());
}
}