When data is presented in tables, it is often crucial to be able to sort the table rows by one column. Usually this is achieved by making the header of the columns clickable, and showing pointers like ▲ and ▼ in the table header, indicating the sort order.
However, I noticed that one feature is missing in many cases. This affects websites as well as desktop applications, and it's illustrated in this example:
It is usually not possible to un-sort the table! Clicking the header just toggles the sort order, but it is not possible to restore the original order. And as the example says: This is very annoying. For me, this even has the effect that I hesitate to use the sorting functionality, because I'm always afraid that it will not be possible to restore the original order afterwards.
Is there any sensible reason of why it is so uncommon to offer the option of restoring the original order of the table?
I could imagine some vague, technical reasons, e.g. that the original order somehow has to be retained internally, and this might imply some memory overhead. But considering that the sorting often happens in the view, and the model remains unsorted anyhow, this can hardly count as an argument.
Offering the option to remove the sorting on one column would even allow sorting by multiple columns, using them as primary/secondary/... sorting criteria. But as long as it is not possible to remove one sorting criterion, this is not sensibly possible.
(The example is a
JTable from Java/Swing, and for this case, I solved this using a custom
TristateTableRowSorter, and a dedicated renderer that shows the ▼▲ arrows in different sizes to indicate primary and secondary sorting criteria. But most table presentations that I've seen so far lack this feature, and I wonder why)