Project

General

Profile

Actions

Feature #15768

closed

Support multi-select operations

Added by Tom Morris over 4 years ago. Updated 7 months ago.

Status:
Resolved
Priority:
Normal
Assigned To:
Category:
Workbench2
Story points:
-
Release relationship:
Auto

Description

Want to be able to perform certain operations over multiple items in project panel.

  • Each item in the project listing should have a checkbox (or similar UI element) to toggle selection.
  • "Select All" action to check all visible items (filtering by type and keyword affects what is selected)
  • "Deselect all" action -- clear all selections
  • "Invert selection" -- swap visible selected/unselected
  • Refreshing the list or changing the filtering should keep all visible selections, if something that was selected is now hidden, it should be de-selected
  • Paging forwards/backwards clears selections (because previous selections are no longer visible)
  • When multiple items are selected, context/action menus change to only offer actions that apply to all selected items (the the label for the action should make it clear it applies to all selected)
  • Initial actions to support:
    • Trash selected
    • Move selected
    • Copy selected -- only enabled if only "copyable" items are selected, maybe start with collections only
  • The move/copy operations should pop up a dialog box for the user to select a target project
  • The move/copy operations need to handle name collisions -- if there's already an object at the target destination with the same name, it will be an error
    • I'm not sure what we want to do, possible options are skip, rename, or replace
    • Initial behavior should probably be to "skip"

Files

15768passingtests.png (118 KB) 15768passingtests.png Lisa Knox, 10/11/2023 09:06 PM

Subtasks 1 (0 open1 closed)

Task #20441: Review 15768-multi-select-operationsResolvedLisa Knox09/08/2023Actions

Related issues

Related to Arvados Epics - Idea #16943: WB2 Descriptions, project & collection operationsIn Progress10/01/202206/30/2024Actions
Related to Arvados - Feature #20375: Multi-select operations on the process list pageNewActions
Related to Arvados Workbench 2 - Bug #20764: Copy-to-Clipboard snackbar doesn't show up when copied from context menuNewActions
Has duplicate Arvados Workbench 2 - Feature #15693: Support group operations on filtered listDuplicateActions
Has duplicate Arvados - Feature #18193: Multi-select collections and projects to delete themDuplicateActions
Blocks Arvados - Feature #16057: Combine selected collectionsNewActions
Blocked by Arvados - Bug #20538: Unhandled exception when trying to delete a process that you don't have write permissionResolvedStephen SmithActions
Actions #1

Updated by Lucas Di Pentima over 4 years ago

  • Description updated (diff)
Actions #2

Updated by Lucas Di Pentima over 4 years ago

  • Description updated (diff)
Actions #3

Updated by Tom Morris over 4 years ago

  • Has duplicate Feature #15693: Support group operations on filtered list added
Actions #4

Updated by Tom Morris over 4 years ago

  • Target version changed from To Be Groomed to Arvados Future Sprints
  • Story points set to 2.0
Actions #5

Updated by Peter Amstutz over 4 years ago

  • Target version changed from Arvados Future Sprints to To Be Groomed
  • Story points deleted (2.0)

UX comment: when there are multiple selections, the existing right click and hamburger menu should display only the options that can be applied to all the selections, and should indicate it will operate on multiple selected items.

Actions #6

Updated by Peter Amstutz over 4 years ago

  • Release set to 20
  • Target version deleted (To Be Groomed)
Actions #7

Updated by Lucas Di Pentima over 4 years ago

  • Related to Idea #15333: Workbench2 feature parity with Workbench added
Actions #8

Updated by Lucas Di Pentima over 4 years ago

Actions #9

Updated by Lucas Di Pentima over 4 years ago

  • Description updated (diff)
Actions #10

Updated by Peter Amstutz almost 4 years ago

  • Release changed from 20 to 31
Actions #11

Updated by Peter Amstutz about 3 years ago

  • Related to Idea #16943: WB2 Descriptions, project & collection operations added
Actions #12

Updated by Peter Amstutz about 3 years ago

  • Related to deleted (Idea #15333: Workbench2 feature parity with Workbench)
Actions #13

Updated by Peter Amstutz about 2 years ago

  • Release deleted (31)
  • Category set to Workbench2
  • Project changed from Arvados Workbench 2 to Arvados
Actions #14

Updated by Peter Amstutz about 2 years ago

  • Target version set to 2022-06-08 sprint
  • Subject changed from [Workbench 2] Support multi-select operations to Support multi-select operations
Actions #15

Updated by Peter Amstutz about 2 years ago

  • Target version changed from 2022-06-08 sprint to 2022-06-22 Sprint
Actions #16

Updated by Peter Amstutz about 2 years ago

  • Target version changed from 2022-06-22 Sprint to 2022-06-08 sprint
Actions #17

Updated by Peter Amstutz about 2 years ago

  • Description updated (diff)
Actions #18

Updated by Peter Amstutz about 2 years ago

  • Target version changed from 2022-06-08 sprint to 2022-06-22 Sprint
Actions #19

Updated by Lucas Di Pentima about 2 years ago

If we're going to need to support bulk operations from the client side, maybe there'll be a need to create some UI element to hint the user the progress of those operations.

Actions #21

Updated by Peter Amstutz almost 2 years ago

  • Target version changed from 2022-06-22 Sprint to 2022-07-20
Actions #22

Updated by Peter Amstutz almost 2 years ago

  • Target version changed from 2022-07-20 to 2022-08-03 Sprint
Actions #23

Updated by Peter Amstutz almost 2 years ago

  • Target version changed from 2022-08-03 Sprint to 2022-09-28 sprint
Actions #24

Updated by Peter Amstutz almost 2 years ago

  • Target version changed from 2022-09-28 sprint to 2022-10-12 sprint
Actions #25

Updated by Peter Amstutz almost 2 years ago

  • Target version changed from 2022-10-12 sprint to 2022-10-26 sprint
Actions #26

Updated by Peter Amstutz over 1 year ago

  • Target version changed from 2022-10-26 sprint to 2022-11-09 sprint
Actions #27

Updated by Peter Amstutz over 1 year ago

  • Target version changed from 2022-11-09 sprint to 2022-11-23 sprint
Actions #28

Updated by Peter Amstutz over 1 year ago

  • Target version changed from 2022-11-23 sprint to 2022-12-07 Sprint
Actions #29

Updated by Peter Amstutz over 1 year ago

  • Target version changed from 2022-12-07 Sprint to 2022-12-21 Sprint
Actions #30

Updated by Peter Amstutz over 1 year ago

  • Target version changed from 2022-12-21 Sprint to 2023-01-18 sprint
Actions #31

Updated by Peter Amstutz over 1 year ago

  • Target version changed from 2023-01-18 sprint to 2023-02-01 sprint
Actions #32

Updated by Peter Amstutz over 1 year ago

  • Target version changed from 2023-02-01 sprint to Future
Actions #33

Updated by Peter Amstutz over 1 year ago

  • Description updated (diff)
Actions #34

Updated by Peter Amstutz over 1 year ago

  • Description updated (diff)
Actions #35

Updated by Peter Amstutz about 1 year ago

  • Has duplicate Feature #18193: Multi-select collections and projects to delete them added
Actions #37

Updated by Peter Amstutz about 1 year ago

  • Description updated (diff)
Actions #38

Updated by Peter Amstutz about 1 year ago

  • Description updated (diff)
Actions #39

Updated by Peter Amstutz about 1 year ago

  • Target version changed from Future to Development 2023-04-26 sprint
  • Assigned To set to Lisa Knox
Actions #40

Updated by Peter Amstutz about 1 year ago

  • Description updated (diff)
Actions #41

Updated by Peter Amstutz about 1 year ago

  • Related to Feature #20375: Multi-select operations on the process list page added
Actions #42

Updated by Peter Amstutz about 1 year ago

  • Status changed from New to In Progress
Actions #43

Updated by Peter Amstutz about 1 year ago

  • Target version changed from Development 2023-04-26 sprint to Development 2023-05-10 sprint
Actions #44

Updated by Peter Amstutz about 1 year ago

  • Target version changed from Development 2023-05-10 sprint to Development 2023-05-24 sprint
Actions #45

Updated by Peter Amstutz about 1 year ago

  • Target version changed from Development 2023-05-24 sprint to Development 2023-06-07
Actions #46

Updated by Peter Amstutz about 1 year ago

  • Blocked by Bug #20538: Unhandled exception when trying to delete a process that you don't have write permission added
Actions #47

Updated by Peter Amstutz 12 months ago

  • Target version changed from Development 2023-06-07 to Development 2023-06-21 sprint
Actions #48

Updated by Peter Amstutz 11 months ago

  • Target version changed from Development 2023-06-21 sprint to Development 2023-07-05 sprint
Actions #49

Updated by Peter Amstutz 11 months ago

  • Target version changed from Development 2023-07-05 sprint to Development 2023-07-19 sprint
Actions #50

Updated by Peter Amstutz 10 months ago

  • Target version changed from Development 2023-07-19 sprint to Development 2023-08-02 sprint
Actions #51

Updated by Peter Amstutz 10 months ago

  • Target version changed from Development 2023-08-02 sprint to Development 2023-08-16
Actions #52

Updated by Peter Amstutz 10 months ago

  • Target version changed from Development 2023-08-16 to Development 2023-08-30
Actions #53

Updated by Peter Amstutz 9 months ago

  • Target version changed from Development 2023-08-30 to Development 2023-09-13 sprint
Actions #54

Updated by Peter Amstutz 9 months ago

  • Target version changed from Development 2023-09-13 sprint to Development 2023-09-27 sprint
Actions #55

Updated by Peter Amstutz 8 months ago

  • Release set to 67
Actions #56

Updated by Lisa Knox 8 months ago

15768-multi-select-operations @ commit: bdcaea37455b72c345c7305e6a7bc4ba63d5c1b7

developer-tests-workbench2: #1348

  • All agreed upon points are implemented / addressed.
    - done
  • Anything not implemented (discovered or discussed during work) has a follow-up story.
    - N/A
  • Code is tested and passing, both automated and manual, what manual testing was done is described
    - manual testing included all described operations done repeatedly on all resource types
  • Documentation has been updated.
    - N/A
  • Behaves appropriately at the intended scale (describe intended scale).
    - testing was done with nearly a hundred items, and while slowdown was noted, wb2 remained responsive
  • Considered backwards and forwards compatibility issues between client and server.
    - all communications between client and server use existing functionality and asynchronous effects are properly handled
  • Follows our coding standards and GUI style guidelines.
    -done
Actions #57

Updated by Peter Amstutz 8 months ago

  • Target version changed from Development 2023-09-27 sprint to Development 2023-10-11 sprint
Actions #58

Updated by Peter Amstutz 8 months ago

  • Related to Bug #20764: Copy-to-Clipboard snackbar doesn't show up when copied from context menu added
Actions #59

Updated by Stephen Smith 8 months ago

Here are some things I noticed:

  • It would be good to add confirmation dialogs to delete for collections and projects, similar to the process delete context menu
  • The hover ripple effect on the toolbar items is squished instead of circular, you could probably move some of the margin into padding (to allow the ripple effect to take up more space since it can use padding space inside each button but can't use space in margin outside the button) could help fix that. You could also potentially get creative with negative margins if necessary
  • It seems there's some extraneous arguments to waitForDom on line 1014 of the collection spec
  • The verifyIOParameterImage is commented out of the process spec, that check should be passing to verify that inline image previews work - I'm guessing this is because of the arvados change from localhost to 127.0.0.1 - there is a fix for that in main that switches the integration tests to also load from 127.0.0.1 to fix cors issues so merging main into your branch should let you uncomment that again
  • In the search spec, the federated item copy to clipboard and open in new tab should use the federated WB2 url instead of the local WB2 instance url - this should be working in main so possibly there was some cause of breakage that was fixed in main, merging main into your branch might also fix this too
  • In data table multiselect popover, there's some commented out code in submit - I think we typically try to remove commented out stuff unless there's a reason it needs to stick around. Also, does the submit function serve a purpose since it seems to be empty otherwise?
  • I noticed backend 422 errors are being suppressed globally in the index.tsx error handler - I think it would be better to catch the error in your action with a try/catch so that 422 errors elsewhere in the application can still show a toast. I think the rationale behind that is so that errors that are handled or are displayed in a user friendly way can choose to hide the nasty raw error while unexpected errors in code that doesn't have error handling will still show the toast by default
  • I've been thinking about the strategy of converting all context menu actions to handle resource arrays even though all the existing actions are designed for single items - it seems weird to foreach the array of resources for something like the share or edit options which if given multiple resources would try to open the same dialog multiple times. I think the main issue is it gives the appearance that it can handle multiple items. I don't want to create a bunch of work, but assuming you didn't make those actions handle multiple items, I think at least indexing the first item for actions and scrapping the loop for existing context menu items would make it clearer that those actions only work for single items. I think a nicer implementation would be to have a separate execute function or a separate type for context menu multiple item actions where the execute function has a resource array type signature, but that could be a lot more work so I don't think it's necessary (a better solution could be done when actual multiple item support is added to regular context menu items)
  • I'm curious about the change to the navigation handler to accept the any type and whether it's being used somewhere with an indexable type - I think it's nice to have the string type constraint vs any, and if there's somewhere that passes in an array maybe that side could be changed to index the uuid out of the array so that navigateTo can keep its typed param, wdyt?
Actions #60

Updated by Lisa Knox 8 months ago

It would be good to add confirmation dialogs to delete for collections and projects, similar to the process delete context menu

  • Behavior on this branch is the same as on main, so I think adding confirmation dialogs should go on another ticket

The hover ripple effect on the toolbar items...

  • fixed

It seems there's some extraneous arguments...

  • fixed

The verifyIOParameterImage is commented out of the process spec...

  • switched it back, hopefully the fixes on main will address

In the search spec, the federated item copy to clipboard...

  • restored to previous

In data table multiselect popover...

  • Removed entirely. Meant to do it before, but missed it in my cleanup

I noticed backend 422 errors are being suppressed globally...

  • restored global 422 handling and implemented the intended handling changes closer to where they are thrown

I've been thinking about the strategy...

  • You're absolutely right and those changes have been made.

I'm curious about the change to the navigation handler...

  • This was actually changed so that I could test something and I forgot to change it back :)

Currently waiting for CI changes to complete to bounce back for review

Actions #61

Updated by Peter Amstutz 8 months ago

  • Target version changed from Development 2023-10-11 sprint to Development 2023-10-25 sprint
Actions #62

Updated by Lisa Knox 8 months ago

Main is merged into local branch, integration tests all pass locally, unable to attach Jenkins run due to unrelated issues with Jenkins.

ref a4257a0f91ce403f09c01a89e982e5e336a0f033

screenshot of passing tests attached in lieu of Jenkins tests

Actions #63

Updated by Stephen Smith 8 months ago

Just a few more cleanup tasks but it lgtm once that's done

  • There's a duplicate renames a file to a different directory cypress test in collection.spec.js that probably just got duplicated during merge resolution
  • There's a stray console.log in renderers.tsx L524
  • It looks like the ContextMenuResource type has an unused isMulti field that I think can be removed
  • For removing the for loops for actions that are for single items, these places still have single item open-dialog actions that are applied in a loop and probably should also be changed to indexing off the first element:
    • api-client-authorization-action-set
    • group-action-set, group-member-action-set
    • keep-service-action-set
    • link-action-set
    • repository-action-set
    • root-project-action-set
    • ssh-key-action-set
    • user-action-set
    • virtual-machine-action-set
    • and the Api Details action in search-results-action-set / trashed-collection-action-set
Actions #64

Updated by Lisa Knox 7 months ago

There's a duplicate renames a file to a different directory cypress test in collection.spec.js that probably just got duplicated during merge resolution

  • removed

There's a stray console.log in renderers.tsx L524

  • removed

It looks like the ContextMenuResource type has an unused isMulti field that I think can be removed

  • That is used by the toggleProjectTrashed function to determine whether or not to navigate to the restored item UUID after restoration. Originally it was supposed to do more, but this is its only function now.

edit: renamed isSingle to avoid confusion with isMulti

For removing the for loops...

  • removed all
Actions #65

Updated by Anonymous 7 months ago

  • Status changed from In Progress to Resolved
Actions

Also available in: Atom PDF