-
Notifications
You must be signed in to change notification settings - Fork 42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Upstream "Delete Sources" (batch-delete) implementation #2160
Comments
Overall your plan seems reasonable to me, I wonder if it'll be easier to pull in the upstream work first and then refactor it. I just tried naively merging the guardian |
I tried the same thing :) I also tried some variants of squashing the upstream commits into per-file commits so that cherry-picking would be easier, but didn't get too far since I had other stuff on the go. It's a pretty small changeset, and will be a fairly small diff overall, so I don't think we'll feel too much pain no matter what we do. I would suggest that we start with the refactor prep we may want to do regardless (ModalDialog), and then the ordering of the other two steps isn't that important (although I honestly think it may be easier to create the 'dummy' batch delete UI pane first, not have it hooked up to anything, and then hook it up in the last step, as I've suggested here, cause then the step where we pull tg work in is also the step where we have all the pieces in place to test it, and we'll have preexisting UI tests for the components we changed so we can ensure our changes conform to our expectations). I usually try to prioritize directly cherry-picking commits, but I also think if that gives us any extra pain (because of monorepo), we can make sure we preserve attribution via commit messages, release acknowledgements, etc; my sense is that pragmatism should win the day here. |
Need to check with @zekehuntergreen as well but I think we (guardian fork maintainers) would also encourage pragmatism - if we wanted attribution we really ought to have opened a PR to upstream! Really happy you're doing the work for us 🙏🏻 Our Thanks again for upstreaming this ❤️ |
Thank you @philmcmahon @zekehuntergreen - at minimum we'll be able to provide attribution in commit messages, changelog, and release notes/announcement; individual commits TBD. We'll be in touch before all of that to run everything attribution-related by you. |
Hey folks, I want to request some UX/UI input on two questions. There was some discussion in #2188 about ux best practices, and in this case I'm looking for feedback on where the batch action button/toolbar should go. This button, when clicked, will launch a confirmation modal dialog, as is done when a single source is deleted. Questions:
Batch delete location
Factors to consider:
As far as I can tell, these are the 3 main places we could put the Bulk Delete button. Option A: the least crowded, the easiest to implement (already done), the most space for other actions, BUT the least consistent with other good UI principles since it's kind of in a random place. Option B: In a proposed top bar, which is more in line with traditional UX, but: smaller, won't be able to show lots of text without mouseover, won't be able to have "Batch Actions" title (can have mouseover but not as good), farther from sourcelist. Nothing to misclick in the top bar, but source overflow menu is nearby if a source is active. Option C: Located closest to sourcelist - sensible UX wise, but very crowded, lots of things to misclick (user menu, stars) and visual crowding; also, will take pace that is probably better suited for keyword filtering searchbar. Ultimately, I wonder if the best design for us would be a much smaller or horizontally-oriented LeftPane. I think it eats a lot of real estate. But I don't want to open that can of worms right now, so I'm kind of asking for what's the combination of clear/sensible and not too bad to implement. Keyboard shortcut |
Here's my mobile-pattern-influenced recco (implementation might be hairy tho):
IMO this takes up an appropriate amount of screen real estate and keeps the actions associated with the thing they act upon. I'd keep the space in A for future tagging/organizing/spam management controls, we're not ready to do the filter
(I realise this puts the download (non-destructive) and delete (destructive) operations beside each other, violating your first principle - IMO that's ok because confirmation dialogs.) |
Another UX heuristic is to follow conventions. Since the workstation was modeled around a webmail client, it makes sense that bulk actions are done right above the selection mechanism. This would either be C or @zenmonkeykstop's suggestion. Something else that we may or may not want to consider is the ability to "select all". For the client this may seem like a useless (and extremely risky operation -- I agree). The only situation where it would make sense for a "select all" option is if this is combined with search (e.g. a particular spammer sends always the same content). This is how gmail did it some years ago: But this second bit is probably a bit out of scope for now until search becomes a thing. Just bringing it up because it may have implications when considering if ☑️ at the top is something we want. |
Options A and C I wouldn't consider because A) feels more for user-related actions and C for message-related ones. But I am no UX expert, so it could make sense. |
Thanks all, this has been super helpful. I want to continue talking about it a bit more, maybe at the team meeting, but for now here's some more thoughts. @zenmonkeykstop's suggestion looks like the fork's implementation to me: I like that the batch delete toolbar/button is over the area it interacts with. I don't love that it is only the width of the sourcelist, which means a) the conversation view (righthand panel) is higher up than the top of the sourcelist, which disconnects them from each other, and b) the toolbar can only be as wide as the sourcelist view (limits future batch options).
I think based on this feedback I'm leaning towards nixing A, nixing C, and finding a way to do ~B that still feels visually coherent. I'll put up some other mockups to play around with. Things I think are important:
thank you all for your feedback so far, super helpful |
I didn't realize that the upstream version had that there already! The styling/UX needs work, but would it make it easier or faster to implement to go with the placement as is and just fix up the widget itself to be cleaner and more extensible? |
Actually scratch that, I'm leaning more towards ~B/webclienty version now as well. |
There are 2 ~ B, web-client type variants:
And there is one further point:
I think that we should have at most 2 horizontal rows at the top of the app. So we could leave the status bar where it is, and add one row (combined search/toolbar), or we could move the status bar to the bottom (also could help with having a place to show download progress when we get there), and have 2 rows at the top, one that containing the toolbar elements and a space for flashed messages (the error messages), the one below containing the search field. too many top bars :) (This is my argument for maybe moving the status bar to the bottom, but I don't know that I would rush to do this) |
My tuppence: I don't like being wordy, but should this button make it clear it's "Batch Delete Sources" rather than "Batch Delete Content"? Ideally I'd like both options, but perhaps the distinction should be made clear even if only one batch operation is offered. c.f. the menu syntax "Delete All Files and Messages" vs "Delete Source Account". We use the two functions for very different purposes: we delete content for housekeeping, data privacy, disk space, additional security etc; we delete sources to end a conversation entirely (often in the hope it might dissuade someone from continuing). In practice deleting sources is far more common than retaining a source account but deleting their correspondence. And fwiw I like the status bar at the bottom, but agree that that is perhaps a separate matter. |
I think the eventual state of 2 rows up top (filter on top, toolbar underneath) makes sense, it gives a lot of room for doing interesting filter bar stuff. For the initial implementation I'm into the last variant (toolbar up top, status bar moved to bottom). It feels very idiomatic which is no bad thing! If we're concerned about confusion about what actions apply to sources vs conversations we can just group them like
One thing to think about though, is how errors are displayed. They currently get shown centered in the status bar, so front and center for users. IMO that was a compromise tho, as it means they're not shown in context. For this it seems ok to keep them in the status bar even if it does move, but once we have some dedicated UX resources we should probably give errors some love. |
@hoyla: Thank you for weighing in :) Maybe "Delete Sources" instead of "Batch Delete"? I wasn't sold on the world "Batch"/"Bulk" anyway (idiomatic English, harder to translate). Typically, toolbar buttons don't have any text, but I think in our case it's warranted to have a good description, as well as a tooltip (visible on hover) that has a longer description. The dialog will also be the same confirmation modal that explains what will be deleted. Would that work? Re: further options: yes, part of all this is so that it's not a big lift to add further options later on (including some options in a drop-down menu), but for now it will just be Delete Sources, due to an understanding that deleting files and messages only is a less common task. (Napkin sketch: the individual Source overflow menu ("3 dot menu"), where export, download, etc, are, could eventually migrate to this bulk actions toolbar, so that they can be applied to n>=1 sources, instead of accessed in an individual source conversation; and more options, such as sanitize/export, can eventually be integrated). @zenmonkeykstop: Thank you again too, and agreed-- the error handling is on my mind too. I think the jury's out; some people say "Flashed" (aka toast, aka banner) messages should be on the bottom (https://spectrum.adobe.com/page/toast/#Placement) "unless they're too important and need to be on the top," some have flashed/banner messages on the top with the proviso that they are important/rare and need the users' attention, and this is also in line with the Flashed messages on the JI/SI. But for sure the "status" (last connection check, routine notifs) should be on the bottom. I'll put up a draft PR next per @zenmonkeykstop's last, so folks can play around with it, and I'll attach some screenshots. |
See discussion at <#2160 (comment)>. Refs #2160.
See discussion at <#2160 (comment)>. Refs #2160.
Description
Refs #1569
Tracking issue to discuss work plan for upstreaming guardian#5 ; I didn't put this in a comment in the original issue since it might get into the weeds.
Here're my high-level thoughts:
edit: (new) Top Pane. The only batch action we will currently support is "Delete Sources"LeftPane
Batch Delete (name TBD).update_sources
in the controller, which is already a bit complex. If the user clicks "batch delete" and no sources are selected, the confirmation modal can simply say that no sources are selected, and we can revisit this later.For a work plan, I'm proposing (open to discussion):
LeftPane(new) Batch Action (Top) Pane.This is a UX change, so we need some consensus on it as well before we proceed.Update: thanks for feedback everyone! Add batch actions top bar element #2233"Batch Delete" ? "Multi-delete"?The text was updated successfully, but these errors were encountered: