[ARVADOS-WORKBENCH2] updated: 1.1.4-466-g6cb43ce

Git user git at public.curoverse.com
Thu Aug 2 05:18:42 EDT 2018


Summary of changes:
 .../column-selector/column-selector.test.tsx       |  15 +-
 src/components/column-selector/column-selector.tsx |   8 +-
 src/components/data-explorer/data-explorer.tsx     |   4 +-
 src/components/data-table/data-column.ts           |  10 +-
 src/store/data-explorer/data-explorer-action.ts    |  23 +++
 .../data-explorer-middleware-service.ts            |  20 ++
 .../data-explorer/data-explorer-middleware.test.ts | 210 +++++++++++++++++++++
 .../data-explorer/data-explorer-middleware.ts      |  44 +++++
 src/store/data-explorer/data-explorer-reducer.ts   |   6 +-
 src/store/favorite-panel/favorite-panel-action.ts  |   8 +
 .../favorite-panel-middleware-service.ts           |  70 +++++++
 .../favorite-panel/favorite-panel-middleware.ts    | 125 ------------
 src/store/navigation/navigation-action.ts          |   7 +-
 src/store/project-panel/project-panel-action.ts    |   8 +
 .../project-panel-middleware-service.ts            |  96 ++++++++++
 .../project-panel/project-panel-middleware.ts      | 129 -------------
 src/store/side-panel/side-panel-reducer.ts         |   7 +-
 src/store/store.ts                                 |  15 +-
 .../action-sets/collection-action-set.ts           |   4 +-
 .../action-sets/favorite-action-set.ts             |   5 +-
 .../context-menu/action-sets/project-action-set.ts |   5 +-
 .../create-project-dialog.tsx                      |   5 +-
 .../data-explorer/data-explorer.tsx                |  51 ++---
 src/views-components/data-explorer/renderers.tsx   |  67 +++++++
 src/views/favorite-panel/favorite-panel.tsx        |  71 +------
 src/views/project-panel/project-panel.tsx          |  70 +------
 src/views/workbench/workbench.tsx                  |   5 +-
 27 files changed, 645 insertions(+), 443 deletions(-)
 create mode 100644 src/store/data-explorer/data-explorer-middleware-service.ts
 create mode 100644 src/store/data-explorer/data-explorer-middleware.test.ts
 create mode 100644 src/store/data-explorer/data-explorer-middleware.ts
 create mode 100644 src/store/favorite-panel/favorite-panel-action.ts
 create mode 100644 src/store/favorite-panel/favorite-panel-middleware-service.ts
 delete mode 100644 src/store/favorite-panel/favorite-panel-middleware.ts
 create mode 100644 src/store/project-panel/project-panel-action.ts
 create mode 100644 src/store/project-panel/project-panel-middleware-service.ts
 delete mode 100644 src/store/project-panel/project-panel-middleware.ts
 create mode 100644 src/views-components/data-explorer/renderers.tsx

       via  6cb43ce8d9ab8345a1b2a5abd961c7c134f5c607 (commit)
       via  5b38ed263a3efd88a215c0911dc969303001645c (commit)
       via  aa45c97670b9726e7afe66c3e747ccab4b82fa6d (commit)
       via  711d39ce13e6662e7823485f13a6e94a748cecf8 (commit)
       via  ae85f32b449562726c0fd3d30447c799069a0bbb (commit)
       via  d6044c2155e8a59a09de9f581b34573f94f1827a (commit)
       via  6d13a683ff5ce887bfd4c20b0bdbd18298dd86b2 (commit)
       via  2b53e4a7bf1516c1b4fe9d42abd15cdc865cd87d (commit)
       via  b3593d28da32bdcf35ec91a6e0dd9099b7bd43b2 (commit)
       via  ffac6f1051efb642db49c4c4a5d2f3f477ca6d34 (commit)
       via  3eba091748f10f981d48f44eed14115b4fcee0ce (commit)
       via  6d0382ab90d7ac8ddcfcd291dc78c15194a25c28 (commit)
       via  e8f8e90d6c0f9f595d0a140ea6e73eb3b7fd29f5 (commit)
       via  ff08c9fee3c8cbb0c54092b6e17dc7bbf476dd30 (commit)
       via  71b7de8657caf1776c082a350e1a55cbe01bf21d (commit)
       via  b62944772ff96019c1e497426784690978bb9c96 (commit)
       via  da83b00c6627076d927ac9983bfa35808e9c5f43 (commit)
       via  e484aaf10e5cf9a49368e74724f3967b103525e4 (commit)
       via  eb1af55955e792abcdfd5a77d80c01d9a708ce8b (commit)
      from  c384037883732764d73829804aabee0ccfc8aa61 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit 6cb43ce8d9ab8345a1b2a5abd961c7c134f5c607
Merge: c384037 5b38ed2
Author: Daniel Kos <daniel.kos at contractors.roche.com>
Date:   Thu Aug 2 09:29:15 2018 +0200

    refs #13887 Merge branch 'origin/13887-extract-common-functionality-from-project-and-favorites-panels'
    
    # Conflicts:
    #       src/store/navigation/navigation-action.ts
    #       src/store/store.ts
    #       src/views-components/create-project-dialog/create-project-dialog.tsx
    #       src/views/project-panel/project-panel.tsx
    #       src/views/workbench/workbench.tsx
    
    Arvados-DCO-1.1-Signed-off-by: Daniel Kos <daniel.kos at contractors.roche.com>

diff --cc src/components/column-selector/column-selector.test.tsx
index 01dba85,01dba85..02265fc
--- a/src/components/column-selector/column-selector.test.tsx
+++ b/src/components/column-selector/column-selector.test.tsx
@@@ -17,7 -17,7 +17,8 @@@ describe("<ColumnSelector />", () => 
              {
                  name: "Column 1",
                  render: () => <span />,
--                selected: true
++                selected: true,
++                configurable: true
              },
              {
                  name: "Column 2",
@@@ -42,17 -42,17 +43,20 @@@
              {
                  name: "Column 1",
                  render: () => <span />,
--                selected: true
++                selected: true,
++                configurable: true
              },
              {
                  name: "Column 2",
                  render: () => <span />,
--                selected: false
++                selected: false,
++                configurable: true
              },
              {
                  name: "Column 3",
                  render: () => <span />,
--                selected: true
++                selected: true,
++                configurable: true
              }
          ];
          const columnsConfigurator = mount(<ColumnSelector columns={columns} onColumnToggle={jest.fn()} />);
@@@ -67,7 -67,7 +71,8 @@@
              {
                  name: "Column 1",
                  render: () => <span />,
--                selected: true
++                selected: true,
++                configurable: true
              }
          ];
          const onColumnToggle = jest.fn();
diff --cc src/store/data-explorer/data-explorer-middleware.test.ts
index 0000000,637a0cc..6b8297b
mode 000000,100644..100644
--- a/src/store/data-explorer/data-explorer-middleware.test.ts
+++ b/src/store/data-explorer/data-explorer-middleware.test.ts
@@@ -1,0 -1,234 +1,210 @@@
+ // Copyright (C) The Arvados Authors. All rights reserved.
+ //
+ // SPDX-License-Identifier: AGPL-3.0
+ 
+ import { DataExplorerMiddlewareService } from "./data-explorer-middleware-service";
+ import { dataExplorerMiddleware } from "./data-explorer-middleware";
 -import { MiddlewareAPI } from "../../../node_modules/redux";
++import { MiddlewareAPI } from "redux";
+ import { DataColumns } from "../../components/data-table/data-table";
+ import { dataExplorerActions } from "./data-explorer-action";
+ 
+ 
+ describe("DataExplorerMiddleware", () => {
 -
 -    it("initializes columns in the store", () => {
 -        const config = {
 -            id: "Id",
 -            columns: [{
 -                name: "Column",
 -                selected: true,
 -                configurable: false,
 -                render: jest.fn()
 -            }],
 -            requestItems: jest.fn(),
 -            setApi: jest.fn()
 -        };
 -        const service = new ServiceMock(config);
 -        const api = {
 -            getState: jest.fn(),
 -            dispatch: jest.fn()
 -        };
 -        const next = jest.fn();
 -        dataExplorerMiddleware(service)(api)(next);
 -        expect(next)
 -            .toHaveBeenCalledWith(dataExplorerActions.SET_COLUMNS({ id: service.getId(), columns: service.getColumns() }));
 -    });
 -
++    
+     it("handles only actions that are identified by service id", () => {
+         const config = {
+             id: "ServiceId",
+             columns: [{
+                 name: "Column",
+                 selected: true,
+                 configurable: false,
+                 render: jest.fn()
+             }],
+             requestItems: jest.fn(),
+             setApi: jest.fn()
+         };
+         const service = new ServiceMock(config);
+         const api = {
+             getState: jest.fn(),
+             dispatch: jest.fn()
+         };
+         const next = jest.fn();
+         const middleware = dataExplorerMiddleware(service)(api)(next);
+         middleware(dataExplorerActions.SET_PAGE({ id: "OtherId", page: 0 }));
+         middleware(dataExplorerActions.SET_PAGE({ id: "ServiceId", page: 0 }));
+         middleware(dataExplorerActions.SET_PAGE({ id: "OtherId", page: 0 }));
+         expect(api.dispatch).toHaveBeenCalledWith(dataExplorerActions.REQUEST_ITEMS({ id: "ServiceId" }));
+         expect(api.dispatch).toHaveBeenCalledTimes(1);
+     });
+ 
+     it("handles REQUEST_ITEMS action", () => {
+         const config = {
+             id: "ServiceId",
+             columns: [{
+                 name: "Column",
+                 selected: true,
+                 configurable: false,
+                 render: jest.fn()
+             }],
+             requestItems: jest.fn(),
+             setApi: jest.fn()
+         };
+         const service = new ServiceMock(config);
+         const api = {
+             getState: jest.fn(),
+             dispatch: jest.fn()
+         };
+         const next = jest.fn();
+         const middleware = dataExplorerMiddleware(service)(api)(next);
+         middleware(dataExplorerActions.REQUEST_ITEMS({ id: "ServiceId" }));
+         expect(config.requestItems).toHaveBeenCalled();
+     });
+ 
+     it("handles SET_PAGE action", () => {
+         const config = {
+             id: "ServiceId",
+             columns: [],
+             requestItems: jest.fn(),
+             setApi: jest.fn()
+         };
+         const service = new ServiceMock(config);
+         const api = {
+             getState: jest.fn(),
+             dispatch: jest.fn()
+         };
+         const next = jest.fn();
+         const middleware = dataExplorerMiddleware(service)(api)(next);
+         middleware(dataExplorerActions.SET_PAGE({ id: service.getId(), page: 0 }));
+         expect(api.dispatch).toHaveBeenCalledTimes(1);
+     });
+ 
+     it("handles SET_ROWS_PER_PAGE action", () => {
+         const config = {
+             id: "ServiceId",
+             columns: [],
+             requestItems: jest.fn(),
+             setApi: jest.fn()
+         };
+         const service = new ServiceMock(config);
+         const api = {
+             getState: jest.fn(),
+             dispatch: jest.fn()
+         };
+         const next = jest.fn();
+         const middleware = dataExplorerMiddleware(service)(api)(next);
+         middleware(dataExplorerActions.SET_ROWS_PER_PAGE({ id: service.getId(), rowsPerPage: 0 }));
+         expect(api.dispatch).toHaveBeenCalledTimes(1);
+     });
+ 
+     it("handles SET_FILTERS action", () => {
+         const config = {
+             id: "ServiceId",
+             columns: [],
+             requestItems: jest.fn(),
+             setApi: jest.fn()
+         };
+         const service = new ServiceMock(config);
+         const api = {
+             getState: jest.fn(),
+             dispatch: jest.fn()
+         };
+         const next = jest.fn();
+         const middleware = dataExplorerMiddleware(service)(api)(next);
+         middleware(dataExplorerActions.SET_FILTERS({ id: service.getId(), columnName: "", filters: [] }));
+         expect(api.dispatch).toHaveBeenCalledTimes(2);
+     });
+ 
+     it("handles SET_ROWS_PER_PAGE action", () => {
+         const config = {
+             id: "ServiceId",
+             columns: [],
+             requestItems: jest.fn(),
+             setApi: jest.fn()
+         };
+         const service = new ServiceMock(config);
+         const api = {
+             getState: jest.fn(),
+             dispatch: jest.fn()
+         };
+         const next = jest.fn();
+         const middleware = dataExplorerMiddleware(service)(api)(next);
+         middleware(dataExplorerActions.SET_ROWS_PER_PAGE({ id: service.getId(), rowsPerPage: 0 }));
+         expect(api.dispatch).toHaveBeenCalledTimes(1);
+     });
+ 
+     it("handles TOGGLE_SORT action", () => {
+         const config = {
+             id: "ServiceId",
+             columns: [],
+             requestItems: jest.fn(),
+             setApi: jest.fn()
+         };
+         const service = new ServiceMock(config);
+         const api = {
+             getState: jest.fn(),
+             dispatch: jest.fn()
+         };
+         const next = jest.fn();
+         const middleware = dataExplorerMiddleware(service)(api)(next);
+         middleware(dataExplorerActions.TOGGLE_SORT({ id: service.getId(), columnName: "" }));
+         expect(api.dispatch).toHaveBeenCalledTimes(1);
+     });
+ 
+     it("handles SET_SEARCH_VALUE action", () => {
+         const config = {
+             id: "ServiceId",
+             columns: [],
+             requestItems: jest.fn(),
+             setApi: jest.fn()
+         };
+         const service = new ServiceMock(config);
+         const api = {
+             getState: jest.fn(),
+             dispatch: jest.fn()
+         };
+         const next = jest.fn();
+         const middleware = dataExplorerMiddleware(service)(api)(next);
+         middleware(dataExplorerActions.SET_SEARCH_VALUE({ id: service.getId(), searchValue: "" }));
+         expect(api.dispatch).toHaveBeenCalledTimes(2);
+     });
+ 
+     it("forwards other actions", () => {
+         const config = {
+             id: "ServiceId",
+             columns: [],
+             requestItems: jest.fn(),
+             setApi: jest.fn()
+         };
+         const service = new ServiceMock(config);
+         const api = {
+             getState: jest.fn(),
+             dispatch: jest.fn()
+         };
+         const next = jest.fn();
+         const middleware = dataExplorerMiddleware(service)(api)(next);
+         middleware(dataExplorerActions.SET_COLUMNS({ id: service.getId(), columns: [] }));
+         middleware(dataExplorerActions.SET_ITEMS({ id: service.getId(), items: [], rowsPerPage: 0, itemsAvailable: 0, page: 0 }));
+         middleware(dataExplorerActions.TOGGLE_COLUMN({ id: service.getId(), columnName: "" }));
+         expect(api.dispatch).toHaveBeenCalledTimes(0);
 -        expect(next).toHaveBeenCalledTimes(4);
++        expect(next).toHaveBeenCalledTimes(3);
+     });
+ 
+ });
+ 
+ class ServiceMock extends DataExplorerMiddlewareService {
+     constructor(private config: {
+         id: string,
+         columns: DataColumns<any>,
 -        requestItems: (api: MiddlewareAPI) => void;
 -        setApi: () => void;
++        requestItems: (api: MiddlewareAPI) => void
+     }) {
+         super(config.id);
+     }
+ 
+     getColumns() {
+         return this.config.columns;
+     }
+ 
+     requestItems(api: MiddlewareAPI) {
+         this.config.requestItems(api);
+     }
+ }
diff --cc src/store/navigation/navigation-action.ts
index f8687ed,5e9d304..ffb0f7a
--- a/src/store/navigation/navigation-action.ts
+++ b/src/store/navigation/navigation-action.ts
@@@ -7,12 -7,9 +7,11 @@@ import { projectActions, getProjectLis
  import { push } from "react-router-redux";
  import { TreeItemStatus } from "../../components/tree/tree";
  import { findTreeItem } from "../project/project-reducer";
- import { dataExplorerActions } from "../data-explorer/data-explorer-action";
- import { PROJECT_PANEL_ID } from "../../views/project-panel/project-panel";
  import { RootState } from "../store";
  import { Resource, ResourceKind } from "../../models/resource";
+ import { projectPanelActions } from "../project-panel/project-panel-action";
 +import { getCollectionUrl } from "../../models/collection";
 +import { getProjectUrl } from "../../models/project";
  
  export const getResourceUrl = <T extends Resource>(resource: T): string => {
      switch (resource.kind) {
diff --cc src/store/store.ts
index 5c928fc,e84c17f..53a01e2
--- a/src/store/store.ts
+++ b/src/store/store.ts
@@@ -17,9 -16,11 +16,13 @@@ import { contextMenuReducer, ContextMen
  import { reducer as formReducer } from 'redux-form';
  import { FavoritesState, favoritesReducer } from './favorites/favorites-reducer';
  import { snackbarReducer, SnackbarState } from './snackbar/snackbar-reducer';
+ import { dataExplorerMiddleware } from "./data-explorer/data-explorer-middleware";
+ import { FAVORITE_PANEL_ID } from "./favorite-panel/favorite-panel-action";
+ import { PROJECT_PANEL_ID } from "./project-panel/project-panel-action";
+ import { ProjectPanelMiddlewareService } from "./project-panel/project-panel-middleware-service";
+ import { FavoritePanelMiddlewareService } from "./favorite-panel/favorite-panel-middleware-service";
 +import { CollectionCreatorState, collectionCreationReducer } from './collections/creator/collection-creator-reducer';
 +import { CollectionPanelState, collectionPanelReducer } from './collection-panel/collection-panel-reducer';
  
  const composeEnhancers =
      (process.env.NODE_ENV === 'development' &&
diff --cc src/views-components/context-menu/action-sets/collection-action-set.ts
index 0822b78,0000000..fbb5c86
mode 100644,000000..100644
--- a/src/views-components/context-menu/action-sets/collection-action-set.ts
+++ b/src/views-components/context-menu/action-sets/collection-action-set.ts
@@@ -1,77 -1,0 +1,77 @@@
 +// Copyright (C) The Arvados Authors. All rights reserved.
 +//
 +// SPDX-License-Identifier: AGPL-3.0
 +
 +import { ContextMenuActionSet } from "../context-menu-action-set";
 +import { ToggleFavoriteAction } from "../actions/favorite-action";
 +import { toggleFavorite } from "../../../store/favorites/favorites-actions";
 +import { dataExplorerActions } from "../../../store/data-explorer/data-explorer-action";
- import { FAVORITE_PANEL_ID } from "../../../views/favorite-panel/favorite-panel";
 +import { RenameIcon, ShareIcon, MoveToIcon, CopyIcon, DetailsIcon, ProvenanceGraphIcon, AdvancedIcon, RemoveIcon } from "../../../components/icon/icon";
++import { favoritePanelActions } from "../../../store/favorite-panel/favorite-panel-action";
 +
 +export const collectionActionSet: ContextMenuActionSet = [[
 +    {
 +        icon: RenameIcon,
 +        name: "Edit collection",
 +        execute: (dispatch, resource) => {
 +            // add code
 +        }
 +    },
 +    {
 +        icon: ShareIcon,
 +        name: "Share",
 +        execute: (dispatch, resource) => {
 +            // add code
 +        }
 +    },
 +    {
 +        icon: MoveToIcon,
 +        name: "Move to",
 +        execute: (dispatch, resource) => {
 +            // add code
 +        }
 +    },
 +    {
 +        component: ToggleFavoriteAction,
 +        execute: (dispatch, resource) => {
 +            dispatch<any>(toggleFavorite(resource)).then(() => {
-                 dispatch<any>(dataExplorerActions.REQUEST_ITEMS({ id: FAVORITE_PANEL_ID }));
++                dispatch<any>(favoritePanelActions.REQUEST_ITEMS());
 +            });
 +        }
 +    },
 +    {
 +        icon: CopyIcon,
 +        name: "Copy to project",
 +        execute: (dispatch, resource) => {
 +            // add code
 +        }
 +    },
 +    {
 +        icon: DetailsIcon,
 +        name: "View details",
 +        execute: (dispatch, resource) => {
 +            // add code
 +        }
 +    },
 +    {
 +        icon: ProvenanceGraphIcon,
 +        name: "Provenance graph",
 +        execute: (dispatch, resource) => {
 +            // add code
 +        }
 +    },
 +    {
 +        icon: AdvancedIcon,
 +        name: "Advanced",
 +        execute: (dispatch, resource) => {
 +            // add code
 +        }
 +    },
 +    {
 +        icon: RemoveIcon,
 +        name: "Remove",
 +        execute: (dispatch, resource) => {
 +            // add code
 +        }
 +    }
 +]];
diff --cc src/views-components/context-menu/action-sets/favorite-action-set.ts
index 9682d4b,a6117b3..72c72fa
--- a/src/views-components/context-menu/action-sets/favorite-action-set.ts
+++ b/src/views-components/context-menu/action-sets/favorite-action-set.ts
@@@ -3,10 -3,9 +3,9 @@@
  // SPDX-License-Identifier: AGPL-3.0
  
  import { ContextMenuActionSet } from "../context-menu-action-set";
 -import { ToggleFavoriteAction } from "./favorite-action";
 +import { ToggleFavoriteAction } from "../actions/favorite-action";
  import { toggleFavorite } from "../../../store/favorites/favorites-actions";
- import { dataExplorerActions } from "../../../store/data-explorer/data-explorer-action";
- import { FAVORITE_PANEL_ID } from "../../../views/favorite-panel/favorite-panel";
+ import { favoritePanelActions } from "../../../store/favorite-panel/favorite-panel-action";
  
  export const favoriteActionSet: ContextMenuActionSet = [[{
      component: ToggleFavoriteAction,
diff --cc src/views-components/context-menu/action-sets/project-action-set.ts
index 25e0ba3,d0034e1..df298e4
--- a/src/views-components/context-menu/action-sets/project-action-set.ts
+++ b/src/views-components/context-menu/action-sets/project-action-set.ts
@@@ -5,10 -5,9 +5,9 @@@
  import { ContextMenuActionSet } from "../context-menu-action-set";
  import { projectActions } from "../../../store/project/project-action";
  import { NewProjectIcon } from "../../../components/icon/icon";
 -import { ToggleFavoriteAction } from "./favorite-action";
 +import { ToggleFavoriteAction } from "../actions/favorite-action";
  import { toggleFavorite } from "../../../store/favorites/favorites-actions";
- import { dataExplorerActions } from "../../../store/data-explorer/data-explorer-action";
- import { FAVORITE_PANEL_ID } from "../../../views/favorite-panel/favorite-panel";
+ import { favoritePanelActions } from "../../../store/favorite-panel/favorite-panel-action";
  
  export const projectActionSet: ContextMenuActionSet = [[{
      icon: NewProjectIcon,
diff --cc src/views-components/create-project-dialog/create-project-dialog.tsx
index eacb1eb,e06b569..1a52189
--- a/src/views-components/create-project-dialog/create-project-dialog.tsx
+++ b/src/views-components/create-project-dialog/create-project-dialog.tsx
@@@ -9,9 -9,7 +9,8 @@@ import { SubmissionError } from "redux-
  import { RootState } from "../../store/store";
  import { DialogProjectCreate } from "../dialog-create/dialog-project-create";
  import { projectActions, createProject, getProjectList } from "../../store/project/project-action";
- import { dataExplorerActions } from "../../store/data-explorer/data-explorer-action";
- import { PROJECT_PANEL_ID } from "../../views/project-panel/project-panel";
+ import { projectPanelActions } from "../../store/project-panel/project-panel-action";
 +import { snackbarActions } from "../../store/snackbar/snackbar-actions";
  
  const mapStateToProps = (state: RootState) => ({
      open: state.projects.creator.opened
@@@ -21,11 -19,7 +20,11 @@@ const addProject = (data: { name: strin
      (dispatch: Dispatch, getState: () => RootState) => {
          const { ownerUuid } = getState().projects.creator;
          return dispatch<any>(createProject(data)).then(() => {
 +            dispatch(snackbarActions.OPEN_SNACKBAR({
 +                message: "Created a new project",
 +                hideDuration: 2000
 +            }));
-             dispatch(dataExplorerActions.REQUEST_ITEMS({ id: PROJECT_PANEL_ID }));
+             dispatch(projectPanelActions.REQUEST_ITEMS());
              dispatch<any>(getProjectList(ownerUuid));
          });
      };
diff --cc src/views/project-panel/project-panel.tsx
index de040ef,b6985a9..5c3fb2b
--- a/src/views/project-panel/project-panel.tsx
+++ b/src/views/project-panel/project-panel.tsx
@@@ -16,9 -15,9 +15,8 @@@ import { ContainerRequestState } from '
  import { SortDirection } from '../../components/data-table/data-column';
  import { ResourceKind } from '../../models/resource';
  import { resourceLabel } from '../../common/labels';
- import { ProjectIcon, CollectionIcon, ProcessIcon, DefaultIcon, FavoriteIcon } from '../../components/icon/icon';
  import { ArvadosTheme } from '../../common/custom-theme';
- import { FavoriteStar } from '../../views-components/favorite-star/favorite-star';
+ import { renderName, renderStatus, renderType, renderOwner, renderFileSize, renderDate } from '../../views-components/data-explorer/renderers';
 -import { PROJECT_PANEL_ID } from "../../store/project-panel/project-panel-action";
  
  type CssRules = "toolbar" | "button";
  
diff --cc src/views/workbench/workbench.tsx
index 160e12f,667a019..96398c7
--- a/src/views/workbench/workbench.tsx
+++ b/src/views/workbench/workbench.tsx
@@@ -33,14 -32,10 +33,15 @@@ import { SidePanelIdentifiers } from '.
  import { ProjectResource } from '../../models/project';
  import { ResourceKind } from '../../models/resource';
  import { ContextMenu, ContextMenuKind } from "../../views-components/context-menu/context-menu";
- import { FavoritePanel, FAVORITE_PANEL_ID } from "../favorite-panel/favorite-panel";
+ import { FavoritePanel } from "../favorite-panel/favorite-panel";
  import { CurrentTokenDialog } from '../../views-components/current-token-dialog/current-token-dialog';
 +import { dataExplorerActions } from '../../store/data-explorer/data-explorer-action';
  import { Snackbar } from '../../views-components/snackbar/snackbar';
+ import { favoritePanelActions } from '../../store/favorite-panel/favorite-panel-action';
 +import { CreateCollectionDialog } from '../../views-components/create-collection-dialog/create-collection-dialog';
 +import { CollectionPanel } from '../collection-panel/collection-panel';
 +import { loadCollection } from '../../store/collection-panel/collection-panel-action';
 +import { getCollectionUrl } from '../../models/collection';
  
  const drawerWidth = 240;
  const appBarHeight = 100;

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list