[arvados-workbench2] updated: 2.6.0-89-g7888c50a
git repository hosting
git at public.arvados.org
Fri Sep 8 16:43:30 UTC 2023
Summary of changes:
src/components/data-table/data-table.tsx | 45 ++++++++++------------
.../multiselect-toolbar/MultiselectToolbar.tsx | 4 +-
src/store/multiselect/multiselect-reducer.tsx | 23 ++++++-----
3 files changed, 32 insertions(+), 40 deletions(-)
via 7888c50a75bdadd042548828ba7da7f2d94e6f6c (commit)
from 56d7ccfa86942fc066a8e3d527c339902ac353e2 (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 7888c50a75bdadd042548828ba7da7f2d94e6f6c
Author: Lisa Knox <lisaknox83 at gmail.com>
Date: Fri Sep 8 12:43:27 2023 -0400
15768: migrated checkedlist to store Arvados-DCO-1.1-Signed-off-by: Lisa Knox <lisa.knox at curii.com>
diff --git a/src/components/data-table/data-table.tsx b/src/components/data-table/data-table.tsx
index 4957fdb3..960b3c64 100644
--- a/src/components/data-table/data-table.tsx
+++ b/src/components/data-table/data-table.tsx
@@ -133,7 +133,6 @@ export type TCheckedList = Record<string, boolean>;
type DataTableState = {
isSelected: boolean;
- checkedList: TCheckedList;
};
type DataTableProps<T> = DataTableDataProps<T> & WithStyles<CssRules>;
@@ -142,7 +141,6 @@ export const DataTable = withStyles(styles)(
class Component<T> extends React.Component<DataTableProps<T>> {
state: DataTableState = {
isSelected: false,
- checkedList: this.props.checkedList,
};
componentDidMount(): void {
@@ -150,16 +148,12 @@ export const DataTable = withStyles(styles)(
}
componentDidUpdate(prevProps: Readonly<DataTableProps<T>>, prevState: DataTableState) {
- const { items, toggleMSToolbar, setCheckedListOnStore } = this.props;
- const { isSelected, checkedList } = this.state;
+ const { items, setCheckedListOnStore } = this.props;
+ const { isSelected } = this.state;
if (prevProps.items !== items) {
if (isSelected === true) this.setState({ isSelected: false });
if (items.length) this.initializeCheckedList(items);
- else this.setState({ checkedList: {} });
- }
- if (prevState.checkedList !== checkedList) {
- toggleMSToolbar(this.isAnySelected() ? true : false);
- setCheckedListOnStore(checkedList);
+ else setCheckedListOnStore({});
}
}
@@ -173,7 +167,7 @@ export const DataTable = withStyles(styles)(
type="checkbox"
name={uuid}
className={this.props.classes.checkBox}
- checked={this.state.checkedList[uuid] ?? false}
+ checked={this.props.checkedList[uuid] ?? false}
onChange={() => this.handleSelectOne(uuid)}
onDoubleClick={ev => ev.stopPropagation()}></input>
),
@@ -186,7 +180,7 @@ export const DataTable = withStyles(styles)(
];
initializeCheckedList = (uuids: any[]): void => {
- const newCheckedList = { ...this.state.checkedList };
+ const newCheckedList = { ...this.props.checkedList };
uuids.forEach(uuid => {
if (!newCheckedList.hasOwnProperty(uuid)) {
@@ -198,11 +192,7 @@ export const DataTable = withStyles(styles)(
delete newCheckedList[key];
}
}
- this.setState({ checkedList: newCheckedList });
- };
-
- updateCheckedList = (newList: TCheckedList): void => {
- this.setState({ checkedList: newList });
+ this.props.setCheckedListOnStore(newCheckedList);
};
isAllSelected = (list: TCheckedList): boolean => {
@@ -213,7 +203,7 @@ export const DataTable = withStyles(styles)(
};
isAnySelected = (): boolean => {
- const { checkedList } = this.state;
+ const { checkedList } = this.props;
if (!Object.keys(checkedList).length) return false;
for (const key in checkedList) {
if (checkedList[key] === true) return true;
@@ -222,14 +212,15 @@ export const DataTable = withStyles(styles)(
};
handleSelectOne = (uuid: string): void => {
- const { checkedList } = this.state;
+ const { checkedList } = this.props;
const newCheckedList = { ...checkedList };
newCheckedList[uuid] = !checkedList[uuid];
- this.setState({ checkedList: newCheckedList, isSelected: this.isAllSelected(newCheckedList) });
+ this.setState({ isSelected: this.isAllSelected(newCheckedList) });
+ this.props.setCheckedListOnStore(newCheckedList);
};
handleSelectorSelect = (): void => {
- const { checkedList } = this.state;
+ const { checkedList } = this.props;
const { isSelected } = this.state;
isSelected ? this.handleSelectNone(checkedList) : this.handleSelectAll(checkedList);
};
@@ -240,7 +231,8 @@ export const DataTable = withStyles(styles)(
for (const key in newCheckedList) {
newCheckedList[key] = true;
}
- this.setState({ isSelected: true, checkedList: newCheckedList });
+ this.setState({ isSelected: true });
+ this.props.setCheckedListOnStore(newCheckedList);
}
};
@@ -249,7 +241,8 @@ export const DataTable = withStyles(styles)(
for (const key in newCheckedList) {
newCheckedList[key] = false;
}
- this.setState({ isSelected: false, checkedList: newCheckedList });
+ this.setState({ isSelected: false });
+ this.props.setCheckedListOnStore(newCheckedList);
};
handleInvertSelect = (list: TCheckedList): void => {
@@ -258,7 +251,8 @@ export const DataTable = withStyles(styles)(
for (const key in newCheckedList) {
newCheckedList[key] = !list[key];
}
- this.setState({ checkedList: newCheckedList, isSelected: this.isAllSelected(newCheckedList) });
+ this.setState({ isSelected: this.isAllSelected(newCheckedList) });
+ this.props.setCheckedListOnStore(newCheckedList);
}
};
@@ -302,8 +296,9 @@ export const DataTable = withStyles(styles)(
renderHeadCell = (column: DataColumn<T, any>, index: number) => {
const { name, key, renderHeader, filters, sort } = column;
- const { onSortToggle, onFiltersChange, classes } = this.props;
- const { isSelected, checkedList } = this.state;
+ const { onSortToggle, onFiltersChange, classes, checkedList } = this.props;
+ const { isSelected } = this.state;
+ // const { isSelected, checkedList } = this.state;
return column.name === "checkBoxColumn" ? (
<TableCell
key={key || index}
diff --git a/src/components/multiselect-toolbar/MultiselectToolbar.tsx b/src/components/multiselect-toolbar/MultiselectToolbar.tsx
index c0690a0a..a6f037ca 100644
--- a/src/components/multiselect-toolbar/MultiselectToolbar.tsx
+++ b/src/components/multiselect-toolbar/MultiselectToolbar.tsx
@@ -174,10 +174,8 @@ function selectActionsByKind(currentResourceKinds: Array<string>, filterSet: TMu
//--------------------------------------------------//
function mapStateToProps(state: RootState) {
- const { isVisible, checkedList } = state.multiselect;
- // console.log(state.multiselect.checkedList); //here
return {
- checkedList: checkedList as TCheckedList,
+ checkedList: state.multiselect.checkedList as TCheckedList,
resources: state.resources,
};
}
diff --git a/src/store/multiselect/multiselect-reducer.tsx b/src/store/multiselect/multiselect-reducer.tsx
index ba4b4b98..b31b451d 100644
--- a/src/store/multiselect/multiselect-reducer.tsx
+++ b/src/store/multiselect/multiselect-reducer.tsx
@@ -15,18 +15,17 @@ const multiselectToolbarInitialState = {
checkedList: {},
};
+const { TOGGLE_VISIBLITY, SET_CHECKEDLIST, DESELECT_ONE } = multiselectActions;
+
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 } };
+ switch (action.type) {
+ case TOGGLE_VISIBLITY:
+ return { ...state, isVisible: action.payload };
+ case SET_CHECKEDLIST:
+ return { ...state, checkedList: action.payload };
+ case DESELECT_ONE:
+ return { ...state, checkedList: { ...state.checkedList, [action.payload]: false } };
+ default:
+ return state;
}
- return state;
-};
-
-const updateCheckedList = (uuid: string, newValue: boolean, checkedList: TCheckedList) => {
- return;
- // const newList = { ...checkedList };
- // newList[uuid] = newValue;
- // return newList;
};
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list