From: Lisa Knox Date: Tue, 16 May 2023 16:21:23 +0000 (-0400) Subject: 15768: reomve works except for 403 Arvados-DCO-1.1-Signed-off-by: Lisa Knox --- diff --git a/src/components/multiselectToolbar/MultiselectToolbar.tsx b/src/components/multiselectToolbar/MultiselectToolbar.tsx index 94570c6c..9e36289c 100644 --- a/src/components/multiselectToolbar/MultiselectToolbar.tsx +++ b/src/components/multiselectToolbar/MultiselectToolbar.tsx @@ -7,8 +7,13 @@ import { connect } from 'react-redux'; import { StyleRulesCallback, withStyles, WithStyles, Toolbar, Button } from '@material-ui/core'; import { ArvadosTheme } from 'common/custom-theme'; import { RootState } from 'store/store'; +import { Dispatch } from 'redux'; import { CopyToClipboardSnackbar } from 'components/copy-to-clipboard-snackbar/copy-to-clipboard-snackbar'; import { TCheckedList } from 'components/data-table/data-table'; +import { openRemoveProcessDialog } from 'store/processes/processes-actions'; +import { processResourceActionSet } from '../../views-components/context-menu/action-sets/process-resource-action-set'; +import { ContextMenuResource } from 'store/context-menu/context-menu-actions'; +import { toggleTrashed } from 'store/trash/trash-actions'; type CssRules = 'root' | 'button'; @@ -19,43 +24,50 @@ const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ }, button: { color: theme.palette.text.primary, - margin: '0.5rem', + // margin: '0.5rem', }, }); type MultiselectToolbarAction = { - fn: (checkedList) => ReactElement; -}; - -export type MultiselectToolbarProps = { - buttons: Array; - checkedList: TCheckedList; + name: string; + fn: string; }; export const defaultActions: Array = [ + // { + // name: 'copy', + // fn: (name, checkedList) => MSToolbarCopyButton(name, checkedList), + // }, { - fn: (checkedList) => MSToolbarCopyButton(checkedList), + name: 'remove', + fn: 'REMOVE', }, ]; -const MSToolbarCopyButton = (checkedList) => { - let stringifiedSelectedList: string = ''; - for (const [key, value] of Object.entries(checkedList)) { - if (value === true) { - stringifiedSelectedList += key + '\n'; - } - } - return Copy} />; +export type MultiselectToolbarProps = { + buttons: Array; + checkedList: TCheckedList; + copySelected: () => void; + removeSelected: (selectedList: TCheckedList) => void; }; -export const MultiselectToolbar = connect(mapStateToProps)( +export const MultiselectToolbar = connect( + mapStateToProps, + mapDispatchToProps +)( withStyles(styles)((props: MultiselectToolbarProps & WithStyles) => { + console.log(props); + const actions = { + COPY: props.copySelected, + REMOVE: props.removeSelected, + }; + const { classes, buttons, checkedList } = props; return ( - {buttons.map((btn, i) => ( - ))} @@ -63,8 +75,41 @@ export const MultiselectToolbar = connect(mapStateToProps)( }) ); +function selectedToString(checkedList: TCheckedList) { + let stringifiedSelectedList: string = ''; + for (const [key, value] of Object.entries(checkedList)) { + if (value === true) { + stringifiedSelectedList += key + ','; + } + } + return stringifiedSelectedList.slice(0, -1); +} + +function selectedToArray(checkedList: TCheckedList): Array { + const arrayifiedSelectedList: Array = []; + for (const [key, value] of Object.entries(checkedList)) { + if (value === true) { + arrayifiedSelectedList.push(key); + } + } + return arrayifiedSelectedList; +} + function mapStateToProps(state: RootState) { + // console.log(state.resources, state.multiselect.checkedList); + return { + checkedList: state.multiselect.checkedList as TCheckedList, + // selectedList: state.multiselect.checkedList.forEach(processUUID=>containerRequestUUID) + }; +} + +function mapDispatchToProps(dispatch: Dispatch) { return { - checkedList: state.multiselect.checkedList, + copySelected: () => {}, + removeSelected: (selectedList) => removeMany(dispatch, selectedList), }; } + +function removeMany(dispatch: Dispatch, checkedList: TCheckedList): void { + selectedToArray(checkedList).forEach((uuid: string) => dispatch(openRemoveProcessDialog(uuid))); +} diff --git a/src/store/store.ts b/src/store/store.ts index b6edaaef..f4b82cb9 100644 --- a/src/store/store.ts +++ b/src/store/store.ts @@ -113,6 +113,7 @@ export function configureStore(history: History, services: ServiceRepository, co const publicFavoritesMiddleware = dataExplorerMiddleware(new PublicFavoritesMiddlewareService(services, PUBLIC_FAVORITE_PANEL_ID)); const collectionsContentAddress = dataExplorerMiddleware(new CollectionsWithSameContentAddressMiddlewareService(services, COLLECTIONS_CONTENT_ADDRESS_PANEL_ID)); const subprocessMiddleware = dataExplorerMiddleware(new SubprocessMiddlewareService(services, SUBPROCESS_PANEL_ID)); + const redirectToMiddleware = (store: any) => (next: any) => (action: any) => { const state = store.getState();