[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