refs #master Merge branch 'origin/master' into 14186-progress-indicator-store
authorDaniel Kos <daniel.kos@contractors.roche.com>
Tue, 18 Sep 2018 11:32:23 +0000 (13:32 +0200)
committerDaniel Kos <daniel.kos@contractors.roche.com>
Tue, 18 Sep 2018 11:32:23 +0000 (13:32 +0200)
# Conflicts:
# src/services/groups-service/groups-service.ts
# src/store/store.ts
# src/views/project-panel/project-panel.tsx
# src/views/workbench/workbench.tsx

Arvados-DCO-1.1-Signed-off-by: Daniel Kos <daniel.kos@contractors.roche.com>

1  2 
package.json
src/common/custom-theme.ts
src/services/groups-service/groups-service.ts
src/store/project-panel/project-panel-middleware-service.ts
src/store/side-panel-tree/side-panel-tree-actions.ts
src/store/store.ts
src/views/project-panel/project-panel.tsx
src/views/workbench/workbench.tsx
yarn.lock

diff --cc package.json
Simple merge
index be8e77ff68b37698ec8f8fd6d438f7f03a29d5b5,3d56f78b5c80c8adf285526e9dd1439fbe3937c9..ff0eb5e34ce7449f672464485b5879cc98f5d382
@@@ -26,12 -27,12 +27,10 @@@ interface Colors 
      yellow700: string;
      red900: string;
      blue500: string;
 -    grey500: string;
 -    grey700: string;
  }
  
- const red900 = red["900"];
+ const arvadosPurple = '#361336';
  const purple800 = purple["800"];
- const grey200 = grey["200"];
- const grey300 = grey["300"];
  const grey500 = grey["500"];
  const grey600 = grey["600"];
  const grey700 = grey["700"];
index c2b559b78b164b1139aa0df920c255c6991b584a,299e6808546b224cb2e1b39f18bb3aeb73061b40..e705b6e5377541f5eaa245d2cf7afbc0b1c40dcf
@@@ -10,7 -10,7 +10,8 @@@ import { ProjectResource } from "~/mode
  import { ProcessResource } from "~/models/process";
  import { TrashableResource } from "~/models/resource";
  import { TrashableResourceService } from "~/services/common-service/trashable-resource-service";
 -import { GroupResource } from '~/models/group';
 +import { ApiActions } from "~/services/api/api-actions";
++import { GroupResource } from "~/models/group";
  
  export interface ContentsArguments {
      limit?: number;
@@@ -26,10 -30,10 +31,10 @@@ export type GroupContentsResource 
      ProjectResource |
      ProcessResource;
  
- export class GroupsService<T extends TrashableResource = TrashableResource> extends TrashableResourceService<T> {
+ export class GroupsService<T extends GroupResource = GroupResource> extends TrashableResourceService<T> {
  
 -    constructor(serverApi: AxiosInstance) {
 -        super(serverApi, "groups");
 +    constructor(serverApi: AxiosInstance, actions: ApiActions) {
 +        super(serverApi, "groups", actions);
      }
  
      contents(uuid: string, args: ContentsArguments = {}): Promise<ListResults<GroupContentsResource>> {
              filters: filters ? `[${filters}]` : undefined,
              order: order ? order : undefined
          };
 -        return this.serverApi
 -            .get(this.resourceType + `${uuid}/contents`, {
 -                params: CommonResourceService.mapKeys(_.snakeCase)(params)
 -            })
 -            .then(CommonResourceService.mapResponseKeys);
 +        return CommonResourceService.defaultResponse(
 +            this.serverApi
 +                .get(this.resourceType + `${uuid}/contents`, {
 +                    params: CommonResourceService.mapKeys(_.snakeCase)(params)
 +                }),
 +            this.actions
 +        );
      }
 -        return this.serverApi
 -            .get(this.resourceType + 'shared', { params })
 -            .then(CommonResourceService.mapResponseKeys);
+     shared(params: SharedArguments = {}): Promise<ListResults<GroupContentsResource>> {
++        return CommonResourceService.defaultResponse(
++            this.serverApi
++                .get(this.resourceType + 'shared', { params }),
++            this.actions
++        );
+     }
  }
  
  export enum GroupContentsResourcePrefix {
index 205a21e16c8caf97897fc9e665e426b5f6e5f927,43ab2310f754c91d63a58f25fd7ef3bfcbe7af90..012b747425b72e714472a5b2a0cfe89d03dc2546
@@@ -32,7 -32,8 +32,9 @@@ import { TrashPanelMiddlewareService } 
  import { TRASH_PANEL_ID } from "~/store/trash-panel/trash-panel-action";
  import { processLogsPanelReducer } from './process-logs-panel/process-logs-panel-reducer';
  import { processPanelReducer } from '~/store/process-panel/process-panel-reducer';
+ import { SHARED_WITH_ME_PANEL_ID } from '~/store/shared-with-me-panel/shared-with-me-panel-actions';
+ import { SharedWithMeMiddlewareService } from './shared-with-me-panel/shared-with-me-middleware-service';
 +import { progressIndicatorReducer } from './progress-indicator/progress-indicator-reducer';
  
  const composeEnhancers =
      (process.env.NODE_ENV === 'development' &&
index 61f6766c443115daa18948f98855f7a452abf7da,25579396167eef30d75abbe2d80ca71937754202..2b2be2e8905ec5d111faf8c121da72dddba94371
@@@ -25,24 -23,9 +23,23 @@@ import { ProjectResource } from '~/mode
  import { navigateTo } from '~/store/navigation/navigation-action';
  import { getProperty } from '~/store/properties/properties';
  import { PROJECT_PANEL_CURRENT_UUID } from '~/store/project-panel/project-panel-action';
- import { openCollectionCreateDialog } from '~/store/collections/collection-create-actions';
- import { openProjectCreateDialog } from '~/store/projects/project-create-actions';
--import { filterResources } from '~/store/resources/resources';
--import { PanelDefaultView } from '~/components/panel-default-view/panel-default-view';
  import { DataTableDefaultView } from '~/components/data-table-default-view/data-table-default-view';
++import { StyleRulesCallback, WithStyles } from "@material-ui/core";
++import { ArvadosTheme } from "~/common/custom-theme";
++import withStyles from "@material-ui/core/styles/withStyles";
 +
 +type CssRules = 'root' | "button";
 +
 +const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
 +    root: {
 +        position: 'relative',
 +        width: '100%',
 +        height: '100%'
 +    },
 +    button: {
 +        marginLeft: theme.spacing.unit
 +    },
 +});
  
  export enum ProjectPanelColumnNames {
      NAME = "Name",
index c22dde25f2a80be37775c27f19e701f3ad43a028,1d7d47d09ee89f8085312cf2b0a1b804f823e07c..ad1a266881993b8f5e38eb568ac0f8f2c175ef3d
@@@ -41,21 -41,29 +41,31 @@@ import { FilesUploadCollectionDialog } 
  import { PartialCopyCollectionDialog } from '~/views-components/dialog-forms/partial-copy-collection-dialog';
  import { TrashPanel } from "~/views/trash-panel/trash-panel";
  import { MainContentBar } from '~/views-components/main-content-bar/main-content-bar';
 -import { Grid } from '@material-ui/core';
 +import { Grid, LinearProgress } from '@material-ui/core';
+ import { SharedWithMePanel } from '../shared-with-me-panel/shared-with-me-panel';
 -import { ProcessCommandDialog } from '~/views-components/process-command-dialog/process-command-dialog';
+ import SplitterLayout from 'react-splitter-layout';
 +import { ProcessCommandDialog } from '~/views-components/process-command-dialog/process-command-dialog';
 +import { isSystemWorking } from "~/store/progress-indicator/progress-indicator-reducer";
  
- type CssRules = 'root' | 'asidePanel' | 'contentWrapper' | 'content' | 'appBar';
+ type CssRules = 'root' | 'container' | 'splitter' | 'asidePanel' | 'contentWrapper' | 'content' | 'appBar';
  
  const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
      root: {
          overflow: 'hidden',
          width: '100vw',
 -        height: '100vh'
 +        height: '100vh',
 +        paddingTop: theme.spacing.unit * 8
      },
+     container: {
+         position: 'relative'
+     },
+     splitter: {
+         '& > .layout-splitter': {
+             width: '2px'
+         }
+     },
      asidePanel: {
-         maxWidth: '240px',
+         height: '100%',
          background: theme.palette.background.default
      },
      contentWrapper: {
@@@ -105,33 -110,39 +114,39 @@@ export const Workbench = withStyles(sty
              render() {
                  const { classes } = this.props;
                  return <>
 +                    <MainAppBar
 +                        searchText={this.state.searchText}
 +                        user={this.props.user}
 +                        onSearch={this.onSearch}
 +                        buildInfo={this.props.buildInfo}>
 +                        {this.props.working ? <LinearProgress color="secondary" /> : null}
 +                    </MainAppBar>
                      <Grid container direction="column" className={classes.root}>
 -                        <Grid className={classes.appBar}>
 -                            <MainAppBar
 -                                searchText={this.state.searchText}
 -                                user={this.props.user}
 -                                onSearch={this.onSearch}
 -                                buildInfo={this.props.buildInfo} />
 -                        </Grid>
                          {this.props.user &&
                              <Grid container item xs alignItems="stretch" wrap="nowrap">
-                                 <Grid container item xs component='aside' direction='column' className={classes.asidePanel}>
-                                     <SidePanel />
-                                 </Grid>
-                                 <Grid container item xs component="main" direction="column" className={classes.contentWrapper}>
-                                     <Grid item>
-                                         <MainContentBar />
-                                     </Grid>
-                                     <Grid item xs className={classes.content}>
-                                         <Switch>
-                                             <Route path={Routes.PROJECTS} component={ProjectPanel} />
-                                             <Route path={Routes.COLLECTIONS} component={CollectionPanel} />
-                                             <Route path={Routes.FAVORITES} component={FavoritePanel} />
-                                             <Route path={Routes.PROCESSES} component={ProcessPanel} />
-                                             <Route path={Routes.TRASH} component={TrashPanel} />
-                                             <Route path={Routes.PROCESS_LOGS} component={ProcessLogPanel} />
-                                         </Switch>
-                                     </Grid>
+                                 <Grid container item className={classes.container}>
+                                 <SplitterLayout customClassName={classes.splitter} percentage={true}
+                                     primaryIndex={0} primaryMinSize={20} secondaryInitialSize={80} secondaryMinSize={40}>
+                                         <Grid container item xs component='aside' direction='column' className={classes.asidePanel}>
+                                             <SidePanel />
+                                         </Grid>
+                                         <Grid container item xs component="main" direction="column" className={classes.contentWrapper}>
+                                             <Grid item>
+                                                 <MainContentBar />
+                                             </Grid>
+                                             <Grid item xs className={classes.content}>
+                                                 <Switch>
+                                                     <Route path={Routes.PROJECTS} component={ProjectPanel} />
+                                                     <Route path={Routes.COLLECTIONS} component={CollectionPanel} />
+                                                     <Route path={Routes.FAVORITES} component={FavoritePanel} />
+                                                     <Route path={Routes.PROCESSES} component={ProcessPanel} />
+                                                     <Route path={Routes.TRASH} component={TrashPanel} />
+                                                     <Route path={Routes.PROCESS_LOGS} component={ProcessLogPanel} />
+                                                     <Route path={Routes.SHARED_WITH_ME} component={SharedWithMePanel} />
+                                                 </Switch>
+                                             </Grid>
+                                         </Grid>
+                                     </SplitterLayout>
                                  </Grid>
                                  <Grid item>
                                      <DetailsPanel />
diff --cc yarn.lock
Simple merge