15768: moving checkedlist to store Arvados-DCO-1.1-Signed-off-by: Lisa Knox <lisa...
authorLisa Knox <lisaknox83@gmail.com>
Fri, 8 Sep 2023 15:57:59 +0000 (11:57 -0400)
committerLisa Knox <lisaknox83@gmail.com>
Fri, 8 Sep 2023 15:57:59 +0000 (11:57 -0400)
src/components/data-table/data-table.tsx
src/components/multiselect-toolbar/MultiselectToolbar.tsx
src/store/multiselect/multiselect-actions.tsx
src/store/multiselect/multiselect-reducer.tsx
src/store/workbench/workbench-actions.ts

index c82f2ce36ee55a6f5ce46d757b8fffae81615640..4957fdb38e8efea3e1f8c818624c1646a5ad3cfb 100644 (file)
@@ -174,7 +174,7 @@ export const DataTable = withStyles(styles)(
                     name={uuid}
                     className={this.props.classes.checkBox}
                     checked={this.state.checkedList[uuid] ?? false}
-                    onChange={() => this.handleCheck(uuid)}
+                    onChange={() => this.handleSelectOne(uuid)}
                     onDoubleClick={ev => ev.stopPropagation()}></input>
             ),
         };
@@ -201,6 +201,10 @@ export const DataTable = withStyles(styles)(
             this.setState({ checkedList: newCheckedList });
         };
 
+        updateCheckedList = (newList: TCheckedList): void => {
+            this.setState({ checkedList: newList });
+        };
+
         isAllSelected = (list: TCheckedList): boolean => {
             for (const key in list) {
                 if (list[key] === false) return false;
@@ -217,7 +221,7 @@ export const DataTable = withStyles(styles)(
             return false;
         };
 
-        handleCheck = (uuid: string): void => {
+        handleSelectOne = (uuid: string): void => {
             const { checkedList } = this.state;
             const newCheckedList = { ...checkedList };
             newCheckedList[uuid] = !checkedList[uuid];
index 2406ef6271dfb396562c4924d2a7881ae716798f..c0690a0ab3432686894eb531b3e2391c87aaa783 100644 (file)
@@ -39,7 +39,6 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
 });
 
 export type MultiselectToolbarProps = {
-    isVisible: boolean;
     checkedList: TCheckedList;
     resources: ResourcesState;
     executeMulti: (action: ContextMenuAction, checkedList: TCheckedList, resources: ResourcesState) => void;
@@ -176,9 +175,8 @@ function selectActionsByKind(currentResourceKinds: Array<string>, filterSet: TMu
 
 function mapStateToProps(state: RootState) {
     const { isVisible, checkedList } = state.multiselect;
-    // if (Object.keys(state.dialog).length) console.log("latest dialog", state.dialog); //here
+    // console.log(state.multiselect.checkedList); //here
     return {
-        isVisible: isVisible,
         checkedList: checkedList as TCheckedList,
         resources: state.resources,
     };
index ba8edf42789fd4ea3cc14d53ae6920614364854f..91d23fff42e0f6c6d56d7bb5a2d8fa3e5a294744 100644 (file)
@@ -2,19 +2,28 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
+import { TCheckedList } from "components/data-table/data-table";
+
 export const multiselectActions = {
-    TOGGLE_VISIBLITY: 'TOGGLE_VISIBLITY',
-    SET_CHECKEDLIST: 'SET_CHECKEDLIST',
+    TOGGLE_VISIBLITY: "TOGGLE_VISIBLITY",
+    SET_CHECKEDLIST: "SET_CHECKEDLIST",
+    DESELECT_ONE: "DESELECT_ONE",
 };
 
 export const toggleMSToolbar = (isVisible: boolean) => {
-    return (dispatch) => {
+    return dispatch => {
         dispatch({ type: multiselectActions.TOGGLE_VISIBLITY, payload: isVisible });
     };
 };
 
-export const setCheckedListOnStore = (checkedList) => {
-    return (dispatch) => {
+export const setCheckedListOnStore = (checkedList: TCheckedList) => {
+    return dispatch => {
         dispatch({ type: multiselectActions.SET_CHECKEDLIST, payload: checkedList });
     };
 };
+
+export const deselectOne = (uuid: string) => {
+    return dispatch => {
+        dispatch({ type: multiselectActions.DESELECT_ONE, payload: uuid });
+    };
+};
index 6840df920aef33b2d0ad21505c30a490b482526c..ba4b4b9894c47c830b6f766c1256e645342371d4 100644 (file)
@@ -2,8 +2,8 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-import { multiselectActions } from './multiselect-actions';
-import { TCheckedList } from 'components/data-table/data-table';
+import { multiselectActions } from "./multiselect-actions";
+import { TCheckedList } from "components/data-table/data-table";
 
 type MultiselectToolbarState = {
     isVisible: boolean;
@@ -18,5 +18,15 @@ const multiselectToolbarInitialState = {
 export const multiselectReducer = (state: MultiselectToolbarState = multiselectToolbarInitialState, action) => {
     if (action.type === multiselectActions.TOGGLE_VISIBLITY) return { ...state, isVisible: action.payload };
     if (action.type === multiselectActions.SET_CHECKEDLIST) return { ...state, checkedList: action.payload };
+    if (action.type === multiselectActions.DESELECT_ONE) {
+        return { ...state, checkedList: { ...state.checkedList, [action.payload]: false } };
+    }
     return state;
 };
+
+const updateCheckedList = (uuid: string, newValue: boolean, checkedList: TCheckedList) => {
+    return;
+    // const newList = { ...checkedList };
+    // newList[uuid] = newValue;
+    // return newList;
+};
index d65f26d5bfe10decbdd9f480a0ff6d21e8b2751e..f2b294ec273b3df9766e30eb596ed667392c4abc 100644 (file)
@@ -101,6 +101,7 @@ import { allProcessesPanelColumns } from "views/all-processes-panel/all-processe
 import { AdminMenuIcon } from "components/icon/icon";
 import { userProfileGroupsColumns } from "views/user-profile-panel/user-profile-panel-root";
 import { selectedToArray, selectedToKindSet } from "components/multiselect-toolbar/MultiselectToolbar";
+import { deselectOne } from "store/multiselect/multiselect-actions";
 
 export const WORKBENCH_LOADING_SCREEN = "workbenchLoadingScreen";
 
@@ -456,6 +457,7 @@ export const copyCollection = (data: CopyFormDialogData) => async (dispatch: Dis
                         link: collection.ownerUuid,
                     })
                 );
+                dispatch<any>(deselectOne(copyToProject.uuid));
             }
         } catch (e) {
             dispatch(