MyHomeworkSpace / client

The MyHomeworkSpace client.
MIT License
4 stars 4 forks source link

Quick modify/Quick done feature #178

Open amazansky opened 3 years ago

amazansky commented 3 years ago

We already have quick add (q), so in the spirit of keyboard friendliness, why not add a way to quickly modify or mark an assignment as done from the keyboard? As far as UX, my idea is essentially a hybrid between the vim command mode (what happens when you press :) and our existing quick add.

Firstly, we would have some keyboard shortcut that triggered the quick modify/quick done feature. This could be m for example. Upon pressing the key, a command prompt would come up, and a number would pop up next to each homework assignment on your planner or dashboard (UI would depend on which view you're on, but ideally the numbers are the same. I am including an example of the homework numbers here; forgive the horrible UI as it took me approximately 30 seconds to Inspect into the page. I'm sure we can think of something better).

image

You could then type in a command like the following (we would have to figure out the exact syntax, but here are some ideas.)

This command-line type feature would employ a similar NLP to Quick Add, and would say what action is about to take place if the enter key was pressed. After the user presses enter, the action will be carried out.

Ideas for furthering the feature include additional keyboard shortcuts to open this quick done/modify "command line" with the keyword already filled in (e.g. pressing x could open it with the "del" keyword already filled in so the user only needs to type the assignment number.)

willbarkoff commented 3 years ago

Let's just go for fullblown vim bindings.

In all seriousness, though, the way that the Microsoft Office apps do this is great. When you hit alt, each thing is labeled with a key that you can press to select it. It would be amazing if we could implement this similarly

image

thatoddmailbox commented 3 years ago

From testing it out in both Firefox and Chrome, it is possible to override Alt shortcuts, so we could implement a Windows-style shortcut system. (some shortcuts we can't override, but it seems all the Alt+key shortcuts, and just holding down Alt, can be intercepted)

We would have to implement all this in JavaScript though, including showing/hiding the numbers and allowing multiple "layers" of shortcuts (so Alt+1 to select homework, and then e while still holding Alt to edit, or something like that). The only real help from the browser would be accesskey, but that's pretty inconsistent across browsers and has no way of indicating its existence to the user, so I don't think we'd want to use it.

While it's definitely possible to do this, I'm not totally sure how to do it in a sane way, especially since it would affect a lot of components. I suppose you could do some trickery with contexts? It partially depends on how exactly we want the shortcuts to work, like if we want the multiple layers I mentioned before. I definitely think it's a good idea that we should implement, I just have to think a bit more about how.

Also we should think about what happens if someone has more than 10 homework items on their dashboard. I know I do, although to be fair 3 of those homeworks are more than six months overdue (two were due in June 2020...I'll get to them eventually!!!!!) so I might not be the most normal user. (although I feel like I've also seen other people with giant overdue columns that get worked through very very slowly, so maybe I'm not the only one)

Finally, does anyone have any opinions on how it would work with the existing shortcuts to open the various pages (would we change those to require alt?)

amazansky commented 3 years ago

We don't have to use alt if not necessary! Honestly, the vim thing may be more reasonable than it sounds... if we had one key for the popup (e.g. like : for vim command mode) we could just have some sort of terminal-like system. Then we could use soft dropdowns (I'm not sure if there's a more technical name for this) and/or a set of commands to execute stuff, so the two main issues (0-9 thing/only supporting 10 homeworks AND difficulties with overriding browser alt) would disappear.

willbarkoff commented 3 years ago

Reddit Enhancement Suite has a similar command line. IMO it's not super intuitive and takes a lot of getting used to, but you can get really fast at it.

I couldn't find documentation on it, but if you press . to open it while browsing, then type ?, you get a little help dialog about it. It's worth taking a look at to see another implementation of a similar feature.

willbarkoff commented 2 years ago

Another place to take inspiration from is GitHub's new Command Palette (And I guess VSCode's too):

image

It has to be enabled in the "Feature Preview" section, then you can use it with cmd + k.