Project

General

Profile

Actions

Feature #1718

closed

Table column sorting

Added by Ronie Henrich over 16 years ago. Updated 10 days ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
Text formatting
Target version:
Start date:
2008-07-30
Due date:
% Done:

0%

Estimated time:
Resolution:
Fixed

Description

  • Suggestion / Request:
    • It would be great to have some table column sorting features on redmine Wiki.
  • At a glance…
    • Plays nicely with the JavaScript global namespace (the script creates and reuses only one JavaScript object);
    • Multiple columns can be sorted at once by pressing Shift while selecting the columns using either the keyboard or mouse;
    • The new script sorts (on average – based on my very non-scientific calculations), 5 times faster than its predecessor;
    • The plug-in architecture makes writing custom sort functions a breeze;
    • The script can highlight both alternate rows and full columns on a table by table basis;
    • Like its predecessor, the script is fully keyboard accessible;
    • The script can correctly determine a columns datatype should a datatype not be explicitly defined (datatypes determined are limited to numbers, text, currency values and dates);
    • The script is smart enough not to sort columns containing identical data
    • Sort routines can be initiated using JavaScript;
    • Tables can be automatically sorted on a column (or columns) of your choice, even in reverse order;
    • Before-sort and after-sort callback functions (or Object.methods) can be defined for individual tables.
  • Row and column highlighting:
    • The script enables both row and column highlighting.
  • Zebra striping the table rows:
    • Should the table be given the class rowstyle-something, each alternate table row is given the class something after the table has been sorted i.e giving the table a class of rowstyle-alternate will tell the script to give each alternate row the class alternate.
  • Highlighting the currently sorted column:
    • Should the table be given the class of colstyle-something, each TD node within the sorted column is given the class something after the table has been sorted i.e giving the table the class colstyle-alternate will tell the script to give each TD node within the sorted column the class alternate.
  • Making any column sortable:
    • To make any table column sortable, just give the associated table header (TH) tag the class sortable, the script will automatically determine the column datatype, make the entire table header clickable (and not just the text contained within) and create the appropriate up/down arrow within the header when clicked (using the ↑ & ↓ characters).
  • Forcing a columns sort algorithm:
    • Should a column contain a mix of datatypes (or should you know the column datatype), it is advised that you explicitly set the sort algorithm by adding one of the following classNames to the associated table header (TH) tag: sortable-numeric, sortable-currency, sortable-text , sortable-date, sortable-date-dmy or sortable-keep (which keeps the row in it’s original order).
  • Sorting multiple columns:
    • The script can now sort multiple columns. Just hold down the Shift key while selecting the columns to sort (either with the keyboard or with the mouse).

Files


Related issues

Related to Redmine - Feature #11543: Sort attachments by nameNew

Actions
Related to Redmine - Feature #40588: Ability to disable table sortResolvedMarius BĂLTEANU

Actions
Actions #1

Updated by Thomas Lecavelier over 16 years ago

  • Target version deleted (0.8)

The target version field has to be set when it will actually part of the target release.

Actions #2

Updated by Anton Dollmaier almost 16 years ago

+1

as this feature is part of wikipedia, it would be nice to get this into redmine-wiki, too.

e.g. I got a table with serverIDs, hostnames and row-numbers, would be nice to re-sort the data dynamically.

Actions #3

Updated by Terence Mill about 14 years ago

+1 Don't forget this one!

Actions #5

Updated by Hrobky Hrobky over 11 years ago

It was not working on my 2.1.4.stable.10880. Maybe the plugin is missing some installation script or there is a change in plugin structure since 2.x.

Fix:

cd /opt/redmine-2.1/public/plugin_assets
ln -s ../../plugins/redmine_sortable_table-master/assets/ sortable_table

Operator '%' seems to be overridden to do HTML escaping, so do the concatenation in other flavor:

/opt/redmine-2.1/plugins/redmine_sortable_table-master/init.rb:

*** 15,22 ****
    macro :sortable_table do |obj, args|
      content_for :header_tags do
-       "  %s\n  %s" % [
-         javascript_include_tag( "tablesort.js", :plugin => 'sortable_table'),
+       javascript_include_tag( "tablesort.js", :plugin => 'sortable_table') + "\n" +
          stylesheet_link_tag( :default, :plugin => 'sortable_table')
-       ]
      end
      "" 
Actions #7

Updated by Denis Sidorov about 8 years ago

Serg Astra wrote:

Hi
Check this https://github.com/AstraSerg/redmine_sortable_table

Does it support Markdown tables?

Actions #8

Updated by Plastik Schnitzer over 5 years ago

Are there any plans to include this feature to stock redmine? It would be highly appreciate to have a table sorting function in wikis and tickes like its possible on wikipedia for example.

Actions #9

Updated by Takenori TAKAKI almost 5 years ago

I made a patch to sort the table elements under 'div.wiki'.
To implement the patch, I used a pure JS library called 'tablesort'.
https://github.com/tristen/tablesort

In Textile format, Specifying the 'th' element in the first row, It makes that column sortable.
In Markdown format, The first row automatically becomes the 'th' element, so all columns are sortable.

Actions #10

Updated by Go MAEDA almost 5 years ago

  • Target version set to Candidate for next major release

Although there is a limitation that numbers are treated as strings when sorting, the feature is useful.

Actions #11

Updated by Kevin Fischer almost 5 years ago

There was a little problem with the patch (or was it just on my side?): It assumed that the JavaScript/CSS files were already there and thus could not be applied directly. I fixed that.

I tried the patch and function-wise it looked good to me.

Maybe little adjustments are necessary to make it fit better into Redmine's design, but I don't really feel qualified to make any calls on that, so maybe someone else can look into that?

Also: If a new library is included, are there any credits that need to be adjusted anywhere?

Actions #12

Updated by Go MAEDA almost 5 years ago

Actions #13

Updated by Go MAEDA over 4 years ago

Go MAEDA wrote:

Although there is a limitation that numbers are treated as strings when sorting, the feature is useful.

I have updated the patch to be applicable to the trunk r19831. In addition, updated tablesort to 5.2.1 and added tablesort.number.min.js to sort numeric columns correctly.

Actions #14

Updated by Go MAEDA over 4 years ago

  • Subject changed from Wiki - Table column sorting to Table column sorting
  • Category changed from Wiki to Text formatting
Actions #15

Updated by Go MAEDA over 4 years ago

Update the patch to fix a small UI issue that the text in a table header is not exactly centered when the column is not sorted. In the screenshots below, "A" is shown slightly to the left, not centered.

Before:

After:

Actions #16

Updated by Go MAEDA over 4 years ago

  • Status changed from New to Closed
  • Assignee set to Go MAEDA
  • Resolution set to Fixed

Committed the patch. Thank you for your contribution.

Actions #17

Updated by Mischa The Evil over 4 years ago

I actually think it is questionable whether or not this feature should be implemented within the Redmine core in this manner. Some considerations:
  • Given the wealth of JS-implementations, and the (potential) cost of adding/bundling yet another static JS-asset, it might be better to keep this a plugin feature in the first place.
  • What's the rationale for choosing this specific JS-library anyway?
  • Do we actually want to add sorting to all tables (for Textile: with a table header) by default or do we want users to have (more) control over this?
  • Does the current implementation play nice with custom formatters provided by plugins?
  • Given that the sorting is added by default (as it is currently): what's the rationale to integrate specifically this set of supported sort types? I think that we can expect additional feature requests to add support for other sorting types (especially thinking about dates, version numbers, IP addresses, file listings with file size columns)
  • How does the current implementation affect exports? Is it included in the export? Is any sorting in the export marked somehow?
Actions #18

Updated by Go MAEDA over 4 years ago

  • Status changed from Closed to Reopened
Actions #19

Updated by Go MAEDA almost 4 years ago

  • Status changed from Reopened to Closed
Actions #20

Updated by Josiah Ulfers 8 months ago

I seem to lack permissions to link a related issue but #40588 notes some problems with this implementation.

Actions #21

Updated by Marius BĂLTEANU 8 months ago

Actions #22

Updated by Marius BĂLTEANU 10 days ago

Mischa The Evil wrote in #note-17:

I actually think it is questionable whether or not this feature should be implemented within the Redmine core in this manner. Some considerations:
  • Given the wealth of JS-implementations, and the (potential) cost of adding/bundling yet another static JS-asset, it might be better to keep this a plugin feature in the first place.
  • What's the rationale for choosing this specific JS-library anyway?
  • Do we actually want to add sorting to all tables (for Textile: with a table header) by default or do we want users to have (more) control over this?
  • Does the current implementation play nice with custom formatters provided by plugins?
  • Given that the sorting is added by default (as it is currently): what's the rationale to integrate specifically this set of supported sort types? I think that we can expect additional feature requests to add support for other sorting types (especially thinking about dates, version numbers, IP addresses, file listings with file size columns)
  • How does the current implementation affect exports? Is it included in the export? Is any sorting in the export marked somehow?

A global setting to disable/enable this behaviour was added in #40588 and it will be available in 6.1.0.

Actions

Also available in: Atom PDF