Hi everyone,
This proposal is a follow-up to Design for Live Data row creation
It will only focus on the live data UI itself, for other limitations (e.g., the macro) there will be more specific others.
At this point, we have the current process implemented:
- the user can enable “edit mode” on a livedata instance,
- in edit mode, clicking an editable cell directly opens the editor. Switching to another cell (e.g., through keyboard) saves the previous one and opens the editor for the new one.
- if the user has the necessary rights, they can click a “Add entry” button
- While in row addition, all the cells behave as with an existing row, except the save process is manual (either through a button or keyboard)
The implementation has, however, a few limitations that I’m trying to address:
- having a single cell editable at any time makes the editing experience not really smooth,
- for row creation, we don’t have a created XObject before saving, which means we can’t easily have a pretty display for the new cells,
- switching to a new cell (even on the same row) can cause a reordering of rows depending on the current filters, which can be quite disturbing for users,
- there is a discrepancy in the editing processes in edit mode: editing an existing row saves automatically, but creating a new row requires manual saving.
As such, I would like your opinions on the following possible solutions:
A. When clicking a cell in edit mode, make the whole row editable
This means that all the editable cells of a given row would have an open editor.
This targets problem 1 and would also fix problem 2 for free.
For the save process, there are a few alternatives:
a) continue saving on each cell switch,
b) save on row switch,
c) save manually, same as row creation.
Both options b and c would lessen the impact of problem 3, and option c would fix problem 4.
B. When entering edit mode, make every visible cell editable
Slightly different than solution A, consider the whole table instead of rows. This would have the same alternatives (a, b and c) but note that it might be heavy (some cells can span multiple lines when the editor is open, so the whole table might become a lot harder to parse for users).
C. Directly create a XObject when clicking “Add entry”
This would create an empty XObject instead of waiting for the user to enter its values. That would fix problems 2 and 4 (since we could then make the save automatic) at the cost of the user losing the ability to control what to commit and when.
D. When in edit mode, freeze the view
This solution is compatible with the previous ones. The idea would be to entirely freeze the current table layout when the user is in edit mode, meaning that there would no longer be reordering on saves. The user could also possibly create new rows and see them even when over the pagination maximum size.
I see two alternatives with this:
a) if the user manually clicks a page or changes filtering after having entered edit mode, we temporarily unfreeze the view and freeze it again once the filters are applied,
b) or we don’t, the layout is frozen throughout all pages.
Both alternatives would fix problem 3.
Note that it’s important to find a clear UX for this, indicating to the user that parts of the UI are voluntarily frozen.
Conclusion
Personally, I see an advantage in implementing both A.c) and D.a).
I believe solution B would be too heavy, and manual saving in this context is not such a problem as long as it’s clearly explained to the user that some data has not been saved (quite visible here because we have at max one row visibly “in-edition”) and we keep keyboard shortcuts for power users.
Solution D.a) seems more logical to me than D.b) from a user’s point of view, and doesn’t require loading more than a page at a time.
What do you think? Don’t hesitate to add anything I might have missed.
Thanks.
