mathesar-foundation / mathesar

Web application providing an intuitive user experience to databases.
https://mathesar.org/
GNU General Public License v3.0
2.38k stars 330 forks source link

Minimize interactions for rapid data entry into cells #3236

Open seancolsen opened 1 year ago

seancolsen commented 1 year ago

Discussed in https://github.com/centerofci/mathesar/discussions/3233

Originally posted by **MrChadMWood** October 4, 2023 In the current state, highlighting cells do not make them editable: Non-Editable: ![image](https://github.com/centerofci/mathesar/assets/90083658/b756a948-e2ad-4b62-b352-8fc6d3ccb2d8) This makes typing in data manually a little slower, as every cell requires double-click with the mouse. ### Feature Request: Add the ability (or option) to type into a cell once it is highlighted. This way users can navigate across cells while entering data more quickly by -- for instance -- pressing tab, entering the data they want, pressing tab, entering the data they want, ...
seancolsen commented 1 year ago

@MrChadMWood One small work-around that may help is the Enter key — pressing it converts the cell to edit mode. So your workflow could look like this:

  1. Enter
  2. Ctrl+A to select all text within the cell
  3. Enter new data
  4. Tab or Enter to save changes
seancolsen commented 1 year ago

The behavior that @MrChadMWood proposes here is how I would prefer that Mathesar works — like a spreadsheet.

I proposed exactly this behavior very early in our UX design process.

However @kgodey disagreed, making a case for adding an extra step:

I think we should err on the side of not entirely replacing data in the database based on quick actions. We care about data integrity. If the user accidentally types a, then they can remove the a if they make the mistake. If we end up replacing the content of the cell, then they can't recover their previous data, which sounds scary, especially since we don't have undo yet and we've removed it from the plan for the alpha release.

@kgodey later said:

we'll have user feedback to help make the decision.

Now that we have some user feedback, would you be open to reconsidering, @kgodey?

ProfessorDisociate commented 1 year ago

Thanks for the explanation, I actually appreciate the effort to preserve integrity.

My use case is but one, however personally I would enjoy the privilege to make these decisions as the admin for my users. My use case is to create a tailored (safe, easy) way for business users to interact with some data that they own. I would like to gauge what “safe” is in this context.

I like the idea of adding a timer. I had considered this:

Given, if a sort of cache/queue/buffer is implemented to store unprocessed queries.

There could be a toggle option for “quick mode” that turns on the queue for unprocessed queries (at the same time, allowing edit on highlight).

While the “quick mode” is turned on, there could be a timer. Alternatively, there could be a “COMMIT CHANGES” button somewhere, with a “warning: {n} unsaved changes” next to it. n being the queue’s length.

Lastly, it could be up to the admin to either enable or disable this feature for users.

ghost commented 1 year ago

@seancolsen Can i work on this..?

ghislaineguerin commented 1 year ago

@ProfessorDisociate, thanks for your input. I think your 'quick mode' idea is worth exploring, as it makes sense for users to prioritize speed of entry over safeguarding integrity when necessary.

You've mentioned the need to make other decisions in this context; I'm curious to hear what other ideas you have in mind for admins managing user interactions in Mathesar.

ghislaineguerin commented 1 year ago

@seancolsen, as I mentioned in Matrix, collecting use cases involved a lot of data entry across multiple rows, and double-clicking each time was frustrating. Additionally, being able to start typing should also apply to linked record fields, although I assume this could be a separate issue.

seancolsen commented 1 year ago

@Thanush66 no, this issue is not ready for implementation yet since it it still status: draft. We first need more agreement on our intended behavior. Specifically, we need to hear from @kgodey who had previously voiced concerns over the behavior which this ticket proposes. Then, if we do decide to make this behavior user-configurable, we'll need to do UX design for that configuration functionality first.

seancolsen commented 11 months ago

lol turns out I already opened a ticket for this last winter #2381. I closed that as a duplicate, but I do want to paste the "Considerations" I wrote there because they'll be good to keep in mind if we move forward with implementing this at some point:

Considerations

seancolsen commented 10 months ago

We discussed this issue during today's product approval meeting

Some notes:

Outcome: this problem is worth solving, we just don't know the solution yet. We need to clarify the requirements to determine which direction we'll head.