Implement 'select/unselect all' actions
authorMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Mon, 30 Jul 2018 14:52:56 +0000 (16:52 +0200)
committerMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Mon, 30 Jul 2018 14:52:56 +0000 (16:52 +0200)
Feature #13855

Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski <michal.klobukowski@contractors.roche.com>

src/store/collection-panel/collection-panel-files/collection-panel-files-actions.ts
src/store/collection-panel/collection-panel-files/collections-panel-files-reducer.ts
src/views-components/context-menu/action-sets/collection-files-action-set.ts

index 6997f088e2bddbd5d71c0f2dd87537171c402dcb..caaa4268c5063e2c37060ef7ea2c716608cccaaa 100644 (file)
@@ -8,7 +8,9 @@ import { CollectionPanelFilesState, CollectionPanelFile } from "./collection-pan
 export const collectionPanelFilesAction = unionize({
     SET_COLLECTION_FILES: ofType<{ files: CollectionPanelFilesState }>(),
     TOGGLE_COLLECTION_FILE_COLLAPSE: ofType<{ id: string }>(),
-    TOGGLE_COLLECTION_FILE_SELECTION: ofType<{ id: string }>()
+    TOGGLE_COLLECTION_FILE_SELECTION: ofType<{ id: string }>(),
+    SELECT_ALL_COLLECTION_FILES: ofType<{}>(),
+    UNSELECT_ALL_COLLECTION_FILES: ofType<{}>(),
 }, { tag: 'type', value: 'payload' });
 
 export type CollectionPanelFilesAction = UnionOf<typeof collectionPanelFilesAction>;
\ No newline at end of file
index 1e62bad6e22a63e6bd28b0d67b875dfe524aba2b..408779cfc632d6e4ef2174558d6c24f6e2d301b1 100644 (file)
@@ -60,6 +60,8 @@ export const collectionPanelFilesReducer = (state: CollectionPanelFilesState = i
         SET_COLLECTION_FILES: data => data.files,
         TOGGLE_COLLECTION_FILE_COLLAPSE: data => toggleCollapsed(state, data.id),
         TOGGLE_COLLECTION_FILE_SELECTION: data => toggleSelected(state, data.id),
+        SELECT_ALL_COLLECTION_FILES: () => state.map(file => ({...file, selected: true})),
+        UNSELECT_ALL_COLLECTION_FILES: () => state.map(file => ({...file, selected: false})),
         default: () => state
     });
 };
index 1e183d53c078a58452762b8f097f3395d1d712fc..dc17e693e38a8cff841689ff29121f4f9bf3fa71 100644 (file)
@@ -3,17 +3,18 @@
 // SPDX-License-Identifier: AGPL-3.0
 
 import { ContextMenuActionSet } from "../context-menu-action-set";
+import { collectionPanelFilesAction } from "../../../store/collection-panel/collection-panel-files/collection-panel-files-actions";
 
 
 export const collectionFilesActionSet: ContextMenuActionSet = [[{
     name: "Select all",
-    execute: (dispatch, resource) => {
-        return;
+    execute: (dispatch) => {
+        dispatch(collectionPanelFilesAction.SELECT_ALL_COLLECTION_FILES());
     }
 },{
     name: "Unselect all",
-    execute: (dispatch, resource) => {
-        return;
+    execute: (dispatch) => {
+        dispatch(collectionPanelFilesAction.UNSELECT_ALL_COLLECTION_FILES());
     }
 },{
     name: "Remove selected",