[arvados-workbench2] updated: 2.6.0-81-g4b15593e

git repository hosting git at public.arvados.org
Fri Sep 1 20:38:05 UTC 2023


Summary of changes:
 src/components/data-explorer/data-explorer.tsx     | 175 ++++++++++---------
 .../MultiselectToolbar.tsx                         |   2 +
 .../ms-kind-action-differentiator.ts               |   0
 .../ms-toolbar-action-filters.ts                   |   6 +-
 src/store/processes/processes-actions.ts           | 186 +++++++++++----------
 src/store/workbench/workbench-actions.ts           |   5 +-
 .../action-sets/process-resource-action-set.ts     |   2 +-
 7 files changed, 206 insertions(+), 170 deletions(-)
 rename src/components/{multiselectToolbar => multiselect-toolbar}/MultiselectToolbar.tsx (98%)
 rename src/components/{multiselectToolbar => multiselect-toolbar}/ms-kind-action-differentiator.ts (100%)
 rename src/components/{multiselectToolbar => multiselect-toolbar}/ms-toolbar-action-filters.ts (88%)

       via  4b15593e83bf1a6e1c84c1e18af4b11b9fa1d134 (commit)
       via  2a7fd99c212c33a1ec9911f8529fa5afc59a7bb2 (commit)
      from  e186e23688c92f91e4cbf564dee5018789e0b8ad (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 4b15593e83bf1a6e1c84c1e18af4b11b9fa1d134
Author: Lisa Knox <lisaknox83 at gmail.com>
Date:   Fri Sep 1 16:37:27 2023 -0400

    15768: remove process works Arvados-DCO-1.1-Signed-off-by: Lisa Knox <lisa.knox at curii.com>

diff --git a/src/components/multiselect-toolbar/MultiselectToolbar.tsx b/src/components/multiselect-toolbar/MultiselectToolbar.tsx
index 22a9c713..b726cfa0 100644
--- a/src/components/multiselect-toolbar/MultiselectToolbar.tsx
+++ b/src/components/multiselect-toolbar/MultiselectToolbar.tsx
@@ -189,6 +189,7 @@ function mapDispatchToProps(dispatch: Dispatch) {
             const kindGroups = groupByKind(checkedList, resources);
             switch (selectedAction.name) {
                 case contextMenuActionConsts.MOVE_TO:
+                case contextMenuActionConsts.REMOVE:
                     const firstResource = getResource(selectedToArray(checkedList)[0])(resources) as Resource;
                     const action = findActionByName(selectedAction.name as string, kindToActionSet[firstResource.kind]);
                     if (action) action.execute(dispatch, kindGroups[firstResource.kind]);
@@ -200,6 +201,7 @@ function mapDispatchToProps(dispatch: Dispatch) {
                 default:
                     for (const kind in kindGroups) {
                         const action = findActionByName(selectedAction.name as string, kindToActionSet[kind]);
+                        console.log(action, kindGroups[kind]);
                         if (action) action.execute(dispatch, kindGroups[kind]);
                     }
                     break;
diff --git a/src/components/multiselect-toolbar/ms-toolbar-action-filters.ts b/src/components/multiselect-toolbar/ms-toolbar-action-filters.ts
index 91e6d676..3c155a6a 100644
--- a/src/components/multiselect-toolbar/ms-toolbar-action-filters.ts
+++ b/src/components/multiselect-toolbar/ms-toolbar-action-filters.ts
@@ -19,17 +19,17 @@ export const contextMenuActionConsts = {
     REMOVE: "Remove",
 } as const;
 
-const { MOVE_TO, TOGGLE_TRASH_ACTION, COPY_TO_CLIPBOARD, REMOVE } = contextMenuActionConsts;
+const { MOVE_TO, TOGGLE_TRASH_ACTION, COPY_TO_CLIPBOARD, REMOVE, MAKE_A_COPY } = contextMenuActionConsts;
 
 //these sets govern what actions are on the ms toolbar for each resource kind
-const collectionMSActionsFilter = new Set([COPY_TO_CLIPBOARD, MOVE_TO, TOGGLE_TRASH_ACTION]);
 const projectMSActionsFilter = new Set([COPY_TO_CLIPBOARD, MOVE_TO, TOGGLE_TRASH_ACTION]);
 const processResourceMSActionsFilter = new Set([MOVE_TO, REMOVE]);
+const collectionMSActionsFilter = new Set([MAKE_A_COPY, MOVE_TO, TOGGLE_TRASH_ACTION]);
 
 const { COLLECTION, PROJECT, PROCESS } = ResourceKind;
 
 export const multiselectActionsFilters: TMultiselectActionsFilters = {
-    [COLLECTION]: [collectionActionSet, collectionMSActionsFilter],
     [PROJECT]: [projectActionSet, projectMSActionsFilter],
     [PROCESS]: [processResourceActionSet, processResourceMSActionsFilter],
+    [COLLECTION]: [collectionActionSet, collectionMSActionsFilter],
 };
diff --git a/src/store/processes/processes-actions.ts b/src/store/processes/processes-actions.ts
index 6d46efd0..18d95911 100644
--- a/src/store/processes/processes-actions.ts
+++ b/src/store/processes/processes-actions.ts
@@ -2,28 +2,30 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-import { Dispatch } from 'redux';
-import { RootState } from 'store/store';
-import { ServiceRepository } from 'services/services';
-import { updateResources } from 'store/resources/resources-actions';
-import { Process } from './process';
-import { dialogActions } from 'store/dialog/dialog-actions';
-import { snackbarActions, SnackbarKind } from 'store/snackbar/snackbar-actions';
-import { projectPanelActions } from 'store/project-panel/project-panel-action';
-import { navigateToRunProcess } from 'store/navigation/navigation-action';
-import { goToStep, runProcessPanelActions } from 'store/run-process-panel/run-process-panel-actions';
-import { getResource } from 'store/resources/resources';
-import { initialize } from 'redux-form';
-import { RUN_PROCESS_BASIC_FORM, RunProcessBasicFormData } from 'views/run-process-panel/run-process-basic-form';
-import { RunProcessAdvancedFormData, RUN_PROCESS_ADVANCED_FORM } from 'views/run-process-panel/run-process-advanced-form';
-import { MOUNT_PATH_CWL_WORKFLOW, MOUNT_PATH_CWL_INPUT } from 'models/process';
-import { CommandInputParameter, getWorkflow, getWorkflowInputs, getWorkflowOutputs, WorkflowInputsData } from 'models/workflow';
-import { ProjectResource } from 'models/project';
-import { UserResource } from 'models/user';
-import { CommandOutputParameter } from 'cwlts/mappings/v1.0/CommandOutputParameter';
-import { ContainerResource } from 'models/container';
-import { ContainerRequestResource, ContainerRequestState } from 'models/container-request';
-import { FilterBuilder } from 'services/api/filter-builder';
+import { Dispatch } from "redux";
+import { RootState } from "store/store";
+import { ServiceRepository } from "services/services";
+import { updateResources } from "store/resources/resources-actions";
+import { Process } from "./process";
+import { dialogActions } from "store/dialog/dialog-actions";
+import { snackbarActions, SnackbarKind } from "store/snackbar/snackbar-actions";
+import { projectPanelActions } from "store/project-panel/project-panel-action";
+import { navigateToRunProcess } from "store/navigation/navigation-action";
+import { goToStep, runProcessPanelActions } from "store/run-process-panel/run-process-panel-actions";
+import { getResource } from "store/resources/resources";
+import { initialize } from "redux-form";
+import { RUN_PROCESS_BASIC_FORM, RunProcessBasicFormData } from "views/run-process-panel/run-process-basic-form";
+import { RunProcessAdvancedFormData, RUN_PROCESS_ADVANCED_FORM } from "views/run-process-panel/run-process-advanced-form";
+import { MOUNT_PATH_CWL_WORKFLOW, MOUNT_PATH_CWL_INPUT } from "models/process";
+import { CommandInputParameter, getWorkflow, getWorkflowInputs, getWorkflowOutputs, WorkflowInputsData } from "models/workflow";
+import { ProjectResource } from "models/project";
+import { UserResource } from "models/user";
+import { CommandOutputParameter } from "cwlts/mappings/v1.0/CommandOutputParameter";
+import { ContainerResource } from "models/container";
+import { ContainerRequestResource, ContainerRequestState } from "models/container-request";
+import { FilterBuilder } from "services/api/filter-builder";
+import { selectedToArray } from "components/multiselect-toolbar/MultiselectToolbar";
+import { Resource, ResourceKind } from "models/resource";
 
 export const loadProcess =
     (containerRequestUuid: string) =>
@@ -66,7 +68,7 @@ export const loadContainers =
     (containerUuids: string[], loadMounts: boolean = true) =>
     async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
         let args: any = {
-            filters: new FilterBuilder().addIn('uuid', containerUuids).getFilters(),
+            filters: new FilterBuilder().addIn("uuid", containerUuids).getFilters(),
             limit: containerUuids.length,
         };
         if (!loadMounts) {
@@ -79,41 +81,41 @@ export const loadContainers =
 
 // Until the api supports unselecting fields, we need a list of all other fields to omit mounts
 const containerFieldsNoMounts = [
-    'auth_uuid',
-    'command',
-    'container_image',
-    'cost',
-    'created_at',
-    'cwd',
-    'environment',
-    'etag',
-    'exit_code',
-    'finished_at',
-    'gateway_address',
-    'href',
-    'interactive_session_started',
-    'kind',
-    'lock_count',
-    'locked_by_uuid',
-    'log',
-    'modified_at',
-    'modified_by_client_uuid',
-    'modified_by_user_uuid',
-    'output_path',
-    'output_properties',
-    'output_storage_classes',
-    'output',
-    'owner_uuid',
-    'priority',
-    'progress',
-    'runtime_auth_scopes',
-    'runtime_constraints',
-    'runtime_status',
-    'runtime_user_uuid',
-    'scheduling_parameters',
-    'started_at',
-    'state',
-    'uuid',
+    "auth_uuid",
+    "command",
+    "container_image",
+    "cost",
+    "created_at",
+    "cwd",
+    "environment",
+    "etag",
+    "exit_code",
+    "finished_at",
+    "gateway_address",
+    "href",
+    "interactive_session_started",
+    "kind",
+    "lock_count",
+    "locked_by_uuid",
+    "log",
+    "modified_at",
+    "modified_by_client_uuid",
+    "modified_by_user_uuid",
+    "output_path",
+    "output_properties",
+    "output_storage_classes",
+    "output",
+    "owner_uuid",
+    "priority",
+    "progress",
+    "runtime_auth_scopes",
+    "runtime_constraints",
+    "runtime_status",
+    "runtime_user_uuid",
+    "scheduling_parameters",
+    "started_at",
+    "state",
+    "uuid",
 ];
 
 export const cancelRunningWorkflow = (uuid: string) => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
@@ -126,7 +128,7 @@ export const cancelRunningWorkflow = (uuid: string) => async (dispatch: Dispatch
         }
         return process;
     } catch (e) {
-        throw new Error('Could not cancel the process.');
+        throw new Error("Could not cancel the process.");
     }
 };
 
@@ -140,7 +142,7 @@ export const resumeOnHoldWorkflow = (uuid: string) => async (dispatch: Dispatch,
         }
         return process;
     } catch (e) {
-        throw new Error('Could not resume the process.');
+        throw new Error("Could not resume the process.");
     }
 };
 
@@ -149,7 +151,7 @@ export const startWorkflow = (uuid: string) => async (dispatch: Dispatch, getSta
         const process = await services.containerRequestService.update(uuid, { state: ContainerRequestState.COMMITTED });
         if (process) {
             dispatch<any>(updateResources([process]));
-            dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Process started', hideDuration: 2000, kind: SnackbarKind.SUCCESS }));
+            dispatch(snackbarActions.OPEN_SNACKBAR({ message: "Process started", hideDuration: 2000, kind: SnackbarKind.SUCCESS }));
         } else {
             dispatch<any>(snackbarActions.OPEN_SNACKBAR({ message: `Failed to start process`, kind: SnackbarKind.ERROR }));
         }
@@ -162,7 +164,7 @@ export const reRunProcess =
     (processUuid: string, workflowUuid: string) => (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
         const process = getResource<any>(processUuid)(getState().resources);
         const workflows = getState().runProcessPanel.searchWorkflows;
-        const workflow = workflows.find((workflow) => workflow.uuid === workflowUuid);
+        const workflow = workflows.find(workflow => workflow.uuid === workflowUuid);
         if (workflow && process) {
             const mainWf = getWorkflow(process.mounts[MOUNT_PATH_CWL_WORKFLOW]);
             if (mainWf) {
@@ -230,7 +232,7 @@ export const getInputs = (data: any): CommandInputParameter[] => {
               id: it.id,
               label: it.label,
               default: content[it.id],
-              value: content[it.id.split('/').pop()] || [],
+              value: content[it.id.split("/").pop()] || [],
               doc: it.doc,
           }))
         : [];
@@ -257,12 +259,12 @@ export const getInputCollectionMounts = (data: any): InputCollectionMount[] => {
         return [];
     }
     return Object.keys(data.mounts)
-        .map((key) => ({
+        .map(key => ({
             ...data.mounts[key],
             path: key,
         }))
-        .filter((mount) => mount.kind === 'collection' && mount.portable_data_hash && mount.path)
-        .map((mount) => ({
+        .filter(mount => mount.kind === "collection" && mount.portable_data_hash && mount.path)
+        .map(mount => ({
             path: mount.path,
             pdh: mount.portable_data_hash,
         }));
@@ -283,25 +285,41 @@ export const getOutputParameters = (data: any): CommandOutputParameter[] => {
         : [];
 };
 
-export const openRemoveProcessDialog = (uuid: string) => (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
-    dispatch(
-        dialogActions.OPEN_DIALOG({
-            id: REMOVE_PROCESS_DIALOG,
-            data: {
-                title: 'Remove process permanently',
-                text: 'Are you sure you want to remove this process?',
-                confirmButtonLabel: 'Remove',
-                uuid,
-            },
-        })
-    );
-};
+export const openRemoveProcessDialog =
+    (uuid: string, numOfProcesses: Number) => (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
+        const confirmationText =
+            numOfProcesses === 1
+                ? "Are you sure you want to remove this process?"
+                : `Are you sure you want to remove these ${numOfProcesses} processes?`;
+        const titleText = numOfProcesses === 1 ? "Remove process permanently" : "Remove processes permanently";
+
+        dispatch(
+            dialogActions.OPEN_DIALOG({
+                id: REMOVE_PROCESS_DIALOG,
+                data: {
+                    title: titleText,
+                    text: confirmationText,
+                    confirmButtonLabel: "Remove",
+                    uuid,
+                },
+            })
+        );
+    };
 
-export const REMOVE_PROCESS_DIALOG = 'removeProcessDialog';
+export const REMOVE_PROCESS_DIALOG = "removeProcessDialog";
 
 export const removeProcessPermanently = (uuid: string) => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
-    dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Removing ...', kind: SnackbarKind.INFO }));
-    await services.containerRequestService.delete(uuid);
-    dispatch(projectPanelActions.REQUEST_ITEMS());
-    dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Removed.', hideDuration: 2000, kind: SnackbarKind.SUCCESS }));
+    const checkedList = getState().multiselect.checkedList;
+    const uuidsToRemove: string[] = selectedToArray(checkedList);
+
+    const processesToRemove = uuidsToRemove
+        .map(uuid => getResource(uuid)(getState().resources) as Resource)
+        .filter(resource => resource.kind === ResourceKind.PROCESS);
+
+    for (const process of processesToRemove) {
+        dispatch(snackbarActions.OPEN_SNACKBAR({ message: "Removing ...", kind: SnackbarKind.INFO }));
+        await services.containerRequestService.delete(process.uuid);
+        dispatch(projectPanelActions.REQUEST_ITEMS());
+        dispatch(snackbarActions.OPEN_SNACKBAR({ message: "Removed.", hideDuration: 2000, kind: SnackbarKind.SUCCESS }));
+    }
 };
diff --git a/src/store/workbench/workbench-actions.ts b/src/store/workbench/workbench-actions.ts
index f46deeba..f33ddeab 100644
--- a/src/store/workbench/workbench-actions.ts
+++ b/src/store/workbench/workbench-actions.ts
@@ -281,10 +281,11 @@ export const createProject = (data: projectCreateActions.ProjectCreateFormDialog
 export const moveProject =
     (data: MoveToFormDialogData, isSecondaryMove = false) =>
     async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
+        const selectedUuid = getState().detailsPanel.resourceUuid;
         const checkedList = getState().multiselect.checkedList;
         const uuidsToMove: string[] = selectedToArray(checkedList);
 
-        //if no items in checkedlist && no items passed in, default to normal context menu behavior
+        //if no items in checkedlist default to normal context menu behavior
         if (!isSecondaryMove && !uuidsToMove.length) uuidsToMove.push(data.uuid);
 
         const sourceUuid = getResource(data.uuid)(getState().resources)?.ownerUuid;
diff --git a/src/views-components/context-menu/action-sets/process-resource-action-set.ts b/src/views-components/context-menu/action-sets/process-resource-action-set.ts
index d9ad424e..b4674951 100644
--- a/src/views-components/context-menu/action-sets/process-resource-action-set.ts
+++ b/src/views-components/context-menu/action-sets/process-resource-action-set.ts
@@ -112,7 +112,7 @@ export const processResourceActionSet: ContextMenuActionSet = [
             name: "Remove",
             icon: RemoveIcon,
             execute: (dispatch, resources) => {
-                resources.forEach(resource => dispatch<any>(openRemoveProcessDialog(resource.uuid)));
+                dispatch<any>(openRemoveProcessDialog(resources[0].uuid, resources.length));
             },
         },
     ],

commit 2a7fd99c212c33a1ec9911f8529fa5afc59a7bb2
Author: Lisa Knox <lisaknox83 at gmail.com>
Date:   Fri Sep 1 11:58:51 2023 -0400

    15768: standardized naming Arvados-DCO-1.1-Signed-off-by: Lisa Knox <lisa.knox at curii.com>

diff --git a/src/components/data-explorer/data-explorer.tsx b/src/components/data-explorer/data-explorer.tsx
index e2b88304..f0f30c81 100644
--- a/src/components/data-explorer/data-explorer.tsx
+++ b/src/components/data-explorer/data-explorer.tsx
@@ -2,42 +2,22 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-import React from 'react';
-import {
-    Grid,
-    Paper,
-    Toolbar,
-    StyleRulesCallback,
-    withStyles,
-    WithStyles,
-    TablePagination,
-    IconButton,
-    Tooltip,
-    Button,
-} from '@material-ui/core';
-import { ColumnSelector } from 'components/column-selector/column-selector';
-import { DataTable, DataColumns, DataTableFetchMode } from 'components/data-table/data-table';
-import { DataColumn } from 'components/data-table/data-column';
-import { SearchInput } from 'components/search-input/search-input';
-import { ArvadosTheme } from 'common/custom-theme';
-import { createTree } from 'models/tree';
-import { DataTableFilters } from 'components/data-table-filters/data-table-filters-tree';
-import { CloseIcon, IconType, MaximizeIcon, UnMaximizeIcon, MoreOptionsIcon } from 'components/icon/icon';
-import { PaperProps } from '@material-ui/core/Paper';
-import { MPVPanelProps } from 'components/multi-panel-view/multi-panel-view';
-import { MultiselectToolbar } from 'components/multiselectToolbar/MultiselectToolbar';
-import { TCheckedList } from 'components/data-table/data-table';
+import React from "react";
+import { Grid, Paper, Toolbar, StyleRulesCallback, withStyles, WithStyles, TablePagination, IconButton, Tooltip, Button } from "@material-ui/core";
+import { ColumnSelector } from "components/column-selector/column-selector";
+import { DataTable, DataColumns, DataTableFetchMode } from "components/data-table/data-table";
+import { DataColumn } from "components/data-table/data-column";
+import { SearchInput } from "components/search-input/search-input";
+import { ArvadosTheme } from "common/custom-theme";
+import { createTree } from "models/tree";
+import { DataTableFilters } from "components/data-table-filters/data-table-filters-tree";
+import { CloseIcon, IconType, MaximizeIcon, UnMaximizeIcon, MoreOptionsIcon } from "components/icon/icon";
+import { PaperProps } from "@material-ui/core/Paper";
+import { MPVPanelProps } from "components/multi-panel-view/multi-panel-view";
+import { MultiselectToolbar } from "components/multiselect-toolbar/MultiselectToolbar";
+import { TCheckedList } from "components/data-table/data-table";
 
-type CssRules =
-    | 'searchBox'
-    | 'headerMenu'
-    | 'toolbar'
-    | 'footer'
-    | 'root'
-    | 'moreOptionsButton'
-    | 'title'
-    | 'dataTable'
-    | 'container';
+type CssRules = "searchBox" | "headerMenu" | "toolbar" | "footer" | "root" | "moreOptionsButton" | "title" | "dataTable" | "container";
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     searchBox: {
@@ -48,33 +28,33 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         paddingRight: theme.spacing.unit,
     },
     footer: {
-        overflow: 'auto',
+        overflow: "auto",
     },
     root: {
-        height: '100%',
+        height: "100%",
     },
     moreOptionsButton: {
         padding: 0,
     },
     title: {
-        display: 'inline-block',
+        display: "inline-block",
         paddingLeft: theme.spacing.unit * 2,
         paddingTop: theme.spacing.unit * 2,
-        fontSize: '18px',
+        fontSize: "18px",
     },
     dataTable: {
-        height: '100%',
-        overflow: 'auto',
+        height: "100%",
+        overflow: "auto",
     },
     container: {
-        height: '100%',
+        height: "100%",
     },
     headerMenu: {
-        width: '100%',
-        float: 'right',
-        display: 'flex',
-        flexDirection: 'row-reverse',
-        justifyContent: 'space-between',
+        width: "100%",
+        float: "right",
+        display: "flex",
+        flexDirection: "row-reverse",
+        justifyContent: "space-between",
     },
 });
 
@@ -122,22 +102,19 @@ interface DataExplorerActionProps<T> {
     setCheckedListOnStore: (checkedList: TCheckedList) => void;
 }
 
-type DataExplorerProps<T> = DataExplorerDataProps<T> &
-    DataExplorerActionProps<T> &
-    WithStyles<CssRules> &
-    MPVPanelProps;
+type DataExplorerProps<T> = DataExplorerDataProps<T> & DataExplorerActionProps<T> & WithStyles<CssRules> & MPVPanelProps;
 
 export const DataExplorer = withStyles(styles)(
     class DataExplorerGeneric<T> extends React.Component<DataExplorerProps<T>> {
         state = {
             showLoading: false,
-            prevRefresh: '',
-            prevRoute: '',
+            prevRefresh: "",
+            prevRoute: "",
         };
 
         componentDidUpdate(prevProps: DataExplorerProps<T>) {
-            const currentRefresh = this.props.currentRefresh || '';
-            const currentRoute = this.props.currentRoute || '';
+            const currentRefresh = this.props.currentRefresh || "";
+            const currentRoute = this.props.currentRoute || "";
 
             if (currentRoute !== this.state.prevRoute) {
                 // Component already mounted, but the user comes from a route change,
@@ -170,8 +147,8 @@ export const DataExplorer = withStyles(styles)(
             // Component just mounted, so we need to show the loading indicator.
             this.setState({
                 showLoading: this.props.working,
-                prevRefresh: this.props.currentRefresh || '',
-                prevRoute: this.props.currentRoute || '',
+                prevRefresh: this.props.currentRefresh || "",
+                prevRoute: this.props.currentRoute || "",
             });
         }
 
@@ -213,16 +190,30 @@ export const DataExplorer = withStyles(styles)(
                 setCheckedListOnStore,
             } = this.props;
             return (
-                <Paper className={classes.root} {...paperProps} key={paperKey} data-cy={this.props['data-cy']}>
-                    <Grid container direction='column' wrap='nowrap' className={classes.container}>
+                <Paper
+                    className={classes.root}
+                    {...paperProps}
+                    key={paperKey}
+                    data-cy={this.props["data-cy"]}>
+                    <Grid
+                        container
+                        direction="column"
+                        wrap="nowrap"
+                        className={classes.container}>
                         <div>
                             {title && (
-                                <Grid item xs className={classes.title}>
+                                <Grid
+                                    item
+                                    xs
+                                    className={classes.title}>
                                     {title}
                                 </Grid>
                             )}
                             {(!hideColumnSelector || !hideSearchInput || !!actions) && (
-                                <Grid className={classes.headerMenu} item xs>
+                                <Grid
+                                    className={classes.headerMenu}
+                                    item
+                                    xs>
                                     <Toolbar className={classes.toolbar}>
                                         {!hideSearchInput && (
                                             <div className={classes.searchBox}>
@@ -230,7 +221,7 @@ export const DataExplorer = withStyles(styles)(
                                                     <SearchInput
                                                         label={searchLabel}
                                                         value={searchValue}
-                                                        selfClearProp={''}
+                                                        selfClearProp={""}
                                                         onSearch={onSearch}
                                                     />
                                                 )}
@@ -238,25 +229,36 @@ export const DataExplorer = withStyles(styles)(
                                         )}
                                         {actions}
                                         {!hideColumnSelector && (
-                                            <ColumnSelector columns={columns} onColumnToggle={onColumnToggle} />
+                                            <ColumnSelector
+                                                columns={columns}
+                                                onColumnToggle={onColumnToggle}
+                                            />
                                         )}
                                         {doUnMaximizePanel && panelMaximized && (
-                                            <Tooltip title={`Unmaximize ${panelName || 'panel'}`} disableFocusListener>
+                                            <Tooltip
+                                                title={`Unmaximize ${panelName || "panel"}`}
+                                                disableFocusListener>
                                                 <IconButton onClick={doUnMaximizePanel}>
                                                     <UnMaximizeIcon />
                                                 </IconButton>
                                             </Tooltip>
                                         )}
                                         {doMaximizePanel && !panelMaximized && (
-                                            <Tooltip title={`Maximize ${panelName || 'panel'}`} disableFocusListener>
+                                            <Tooltip
+                                                title={`Maximize ${panelName || "panel"}`}
+                                                disableFocusListener>
                                                 <IconButton onClick={doMaximizePanel}>
                                                     <MaximizeIcon />
                                                 </IconButton>
                                             </Tooltip>
                                         )}
                                         {doHidePanel && (
-                                            <Tooltip title={`Close ${panelName || 'panel'}`} disableFocusListener>
-                                                <IconButton disabled={panelMaximized} onClick={doHidePanel}>
+                                            <Tooltip
+                                                title={`Close ${panelName || "panel"}`}
+                                                disableFocusListener>
+                                                <IconButton
+                                                    disabled={panelMaximized}
+                                                    onClick={doHidePanel}>
                                                     <CloseIcon />
                                                 </IconButton>
                                             </Tooltip>
@@ -266,7 +268,10 @@ export const DataExplorer = withStyles(styles)(
                                 </Grid>
                             )}
                         </div>
-                        <Grid item xs='auto' className={classes.dataTable}>
+                        <Grid
+                            item
+                            xs="auto"
+                            className={classes.dataTable}>
                             <DataTable
                                 columns={this.props.contextMenuColumn ? [...columns, this.contextMenuColumn] : columns}
                                 items={items}
@@ -285,14 +290,18 @@ export const DataExplorer = withStyles(styles)(
                                 setCheckedListOnStore={setCheckedListOnStore}
                             />
                         </Grid>
-                        <Grid item xs>
+                        <Grid
+                            item
+                            xs>
                             <Toolbar className={classes.footer}>
                                 {elementPath && (
                                     <Grid container>
-                                        <span data-cy='element-path'>{elementPath}</span>
+                                        <span data-cy="element-path">{elementPath}</span>
                                     </Grid>
                                 )}
-                                <Grid container={!elementPath} justify='flex-end'>
+                                <Grid
+                                    container={!elementPath}
+                                    justify="flex-end">
                                     {fetchMode === DataTableFetchMode.PAGINATED ? (
                                         <TablePagination
                                             count={itemsAvailable}
@@ -303,10 +312,13 @@ export const DataExplorer = withStyles(styles)(
                                             onChangeRowsPerPage={this.changeRowsPerPage}
                                             // Disable next button on empty lists since that's not default behavior
                                             nextIconButtonProps={itemsAvailable > 0 ? {} : { disabled: true }}
-                                            component='div'
+                                            component="div"
                                         />
                                     ) : (
-                                        <Button variant='text' size='medium' onClick={this.loadMore}>
+                                        <Button
+                                            variant="text"
+                                            size="medium"
+                                            onClick={this.loadMore}>
                                             Load more
                                         </Button>
                                     )}
@@ -322,7 +334,7 @@ export const DataExplorer = withStyles(styles)(
             this.props.onChangePage(page);
         };
 
-        changeRowsPerPage: React.ChangeEventHandler<HTMLTextAreaElement | HTMLInputElement> = (event) => {
+        changeRowsPerPage: React.ChangeEventHandler<HTMLTextAreaElement | HTMLInputElement> = event => {
             this.props.onChangeRowsPerPage(parseInt(event.target.value, 10));
         };
 
@@ -331,12 +343,15 @@ export const DataExplorer = withStyles(styles)(
         };
 
         renderContextMenuTrigger = (item: T) => (
-            <Grid container justify='center'>
-                <Tooltip title='More options' disableFocusListener>
+            <Grid
+                container
+                justify="center">
+                <Tooltip
+                    title="More options"
+                    disableFocusListener>
                     <IconButton
                         className={this.props.classes.moreOptionsButton}
-                        onClick={(event) => this.props.onContextMenu(event, item)}
-                    >
+                        onClick={event => this.props.onContextMenu(event, item)}>
                         <MoreOptionsIcon />
                     </IconButton>
                 </Tooltip>
@@ -344,11 +359,11 @@ export const DataExplorer = withStyles(styles)(
         );
 
         contextMenuColumn: DataColumn<any, any> = {
-            name: 'Actions',
+            name: "Actions",
             selected: true,
             configurable: false,
             filters: createTree(),
-            key: 'context-actions',
+            key: "context-actions",
             render: this.renderContextMenuTrigger,
         };
     }
diff --git a/src/components/multiselectToolbar/MultiselectToolbar.tsx b/src/components/multiselect-toolbar/MultiselectToolbar.tsx
similarity index 100%
rename from src/components/multiselectToolbar/MultiselectToolbar.tsx
rename to src/components/multiselect-toolbar/MultiselectToolbar.tsx
diff --git a/src/components/multiselectToolbar/ms-kind-action-differentiator.ts b/src/components/multiselect-toolbar/ms-kind-action-differentiator.ts
similarity index 100%
rename from src/components/multiselectToolbar/ms-kind-action-differentiator.ts
rename to src/components/multiselect-toolbar/ms-kind-action-differentiator.ts
diff --git a/src/components/multiselectToolbar/ms-toolbar-action-filters.ts b/src/components/multiselect-toolbar/ms-toolbar-action-filters.ts
similarity index 100%
rename from src/components/multiselectToolbar/ms-toolbar-action-filters.ts
rename to src/components/multiselect-toolbar/ms-toolbar-action-filters.ts
diff --git a/src/store/workbench/workbench-actions.ts b/src/store/workbench/workbench-actions.ts
index 8401ba95..f46deeba 100644
--- a/src/store/workbench/workbench-actions.ts
+++ b/src/store/workbench/workbench-actions.ts
@@ -100,7 +100,7 @@ import { loadAllProcessesPanel, allProcessesPanelActions } from "../all-processe
 import { allProcessesPanelColumns } from "views/all-processes-panel/all-processes-panel";
 import { AdminMenuIcon } from "components/icon/icon";
 import { userProfileGroupsColumns } from "views/user-profile-panel/user-profile-panel-root";
-import { selectedToArray, selectedToKindSet } from "components/multiselectToolbar/MultiselectToolbar";
+import { selectedToArray, selectedToKindSet } from "components/multiselect-toolbar/MultiselectToolbar";
 
 export const WORKBENCH_LOADING_SCREEN = "workbenchLoadingScreen";
 

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


hooks/post-receive
-- 




More information about the arvados-commits mailing list