#16212: Improve multiple sort UX
-------------------------+-------------------------------
Reporter: idangazit | Owner: nobody
Type: New feature | Status: new
Milestone: | Component: contrib.admin
Version: SVN | Severity: Normal
Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Easy pickings: 0
UI/UX: 1 |
-------------------------+-------------------------------
#11868 added some really slick multiple sort functionality, but I feel
like the UX could bear improvement. The current implementation feels a
little alien compared to the UI conventions in the rest of the admin.
A lot of this is a matter of taste, but I have a concrete proposal for
improvement based on some homework.
I experimented a bit with the OSX finder and Win7 explorer; it seems that
there is no multiple sort functionality there of any kind. Each click on a
column header makes that column the ''only'' sorting column. I made a
small screencast showing this off: http://cl.ly/3B0Y0C1T3A2s0W3s0Q0X.
An interaction model for sorting based on column header clicks feels
awkward and hard to understand. Filesystem explorers only have single-
sort, and spreadsheets all seem to have a fancier interface for explicitly
defining multicolumn sort priority and direction.
Here's what I propose.
== What stays the same ==
1. The URL scheme for expressing a desired sorting remains the same. The
only thing I'd like to change here is chrome.
2. Column headers will still display a directional arrow and an integer
indicating priority.
== What changes ==
1. The column header cog + popover pane go away.
2. The Filter sidebar becomes the "Filter & Sort" sidebar
3. Multiple sort is controlled via the sidebar.
I've produced a rough sketch of these elements here:
http://cl.ly/362x0s3a2G3y1U1W2D1V
== Here's how it works ==
Clicking in the column headers will:
1. clear any existing multiple sort
2. make that column the primary sort
3. toggle sort order if the clicked column is the current single-sort
column.
The "Sort By" section of the sidebar displays a list of columns, with each
entry displaying a small "x" link and an indicator of
ascending/descending. Clicking on the "x" will remove that column from the
sort, clicking on the up/down arrow will toggle sort direction for that
column.
Below these items are two or three links: edit, clear, and (possibly)
default.
- Edit: opens a popup or dialog for defining a sort order. More on this
further down.
- Clear: removes all columns from the sort (e.g. back to sort by PK).
- Default: ''if'' an ordering is defined via ModelAdmin.ordering, then
this link appears, and will reset the sort to whatever is defined in the
admin.
=== Creating / Editing a sort ===
Every sort operation involves a pageload, as we aren't doing anything
dynamic. We considered other approaches to building a sort, including
fancy jQueryized approaches with drag'n'drop reordering of columns, but
this would necessitate some confusing heuristics ("after drop complete,
wait 5 seconds before triggering a pageload to make sure the user is
finished with reordering.")
The best solution we came up with so far is a dedicated edit dialog or
popover. When the user clicks on the "edit" link, the user is shown the
edit dialog, pictured near the bottom of
http://cl.ly/362x0s3a2G3y1U1W2D1V. This dialog consists of several rows,
each denoting a column in the active sort, with a delete button, a
direction indicator, and a drag handle for reordering. The user can drag
and drop to reorder sort priority, or click on the direction indicator of
each row to toggle direction.
Near the bottom is a dropdown which contains all of the columns which
aren't yet in the sort, a toggle/dropdown for direction, and an add
button. Users can add new columns to the sort by choosing a column and a
direction and clicking *add*. No operations are taken until the dialog is
closed, at which time a pageload is triggered for the new desired sorting.
Obviously, feedback appreciated.
--
Ticket URL: <https://code.djangoproject.com/ticket/16212>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en.