There’s at least 2 places in the system I’m converting where this functionality would be very nice for users.
One is the list of insurances a patient has - the order is important (primary, secondary, etc), and the second is the list of diagnoses for the patient where the order is also important.
In the current system, the insurance list table just has a column called sequence and the user must manually enter in 1, 2, 3, etc for the order - and re-do that order if it changes. It works but it’s not the best user experience.
It’s worse (from a database normalization standpoint) for the diagnoses - we have a flat list of fields in the registration table - dx1, dx2, dx3, dx4, all the way up to dx12. It’s kludgy as you know what.
It would be awesome if we could have normal tables with the ability to drag-n-drop to set the order on these - but I’m not sure it’s possible. I’ve done some looking around and haven’t come up with anything.
What I did in the past in this scenario is to create two buttons in the table with “Arrow Up” and “Arrow Down” and under the hood change those numbers of the entries in the table. So the user does not directly need (nor is able to) change the “position” attribute.
For the arrow up button:
iterate over all items in the data container and decrease the value of the position field by one (except for the table selection). Then you increase the position value by one for all selected items.
For arrow down: the same operation with swapping + & -
The table has to be sorted by the position value - which triggers automatic reordering…
If we have 4 items numbered 1 2 3 4 and apply that routine clicking up arrow on #2, after step one we have 0 2 2 3, then after step two we have 0 3 2 3 unless you mean increase all of them including the ones not being clicked on in which case it would be 1 3 3 4 - still incorrect.