From 5ecb0ff74c4fdece0b10331904a8826789b849e2 Mon Sep 17 00:00:00 2001 From: llj Date: Fri, 14 Aug 2015 19:37:39 +0800 Subject: [PATCH] [share links] sort download links --- seahub/share/templates/share/links.html | 102 +++++++++++++++++++++++- 1 file changed, 99 insertions(+), 3 deletions(-) diff --git a/seahub/share/templates/share/links.html b/seahub/share/templates/share/links.html index ec212f0de6..04690192be 100644 --- a/seahub/share/templates/share/links.html +++ b/seahub/share/templates/share/links.html @@ -17,14 +17,14 @@ - + - + {% for fs in fileshares %} - + {% if fs.s_type == 'f' %} @@ -122,5 +122,101 @@ $('#shared-link').click(function() { $(this).select(); }); {% endif %} + +{% if fileshares %} +// sort download links +$('.by-name, .by-time').click(function() { + var $table = $(this).closest('table'); + + // handle sort-icon + $('.sort-icon', $table).hide(); + var $sort_icon = $('.sort-icon', $(this)).show(); + if ($sort_icon.hasClass('icon-caret-up') || + $sort_icon.hasClass('icon-caret-down')) { + $sort_icon.toggleClass('icon-caret-up icon-caret-down'); + } else { + $sort_icon.addClass('icon-caret-up'); + } + + // prepare data + var dir_item_list = [], + file_item_list = [], + $items = $('tr:gt(0)', $table); + $items.each(function(index, item) { + var obj = { + 'element': item, + 'name': $(item).attr('data-name'), + 'time': $(item).attr('data-time') + }; + if ($(item).data('type') == 'd') { + dir_item_list.push(obj); + } else { + file_item_list.push(obj); + } + }); + + // define 'sort by' functions + var by_name_up = function (a, b) { + return a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1; + }; + var by_name_down = function (a, b) { + return a.name.toLowerCase() < b.name.toLowerCase() ? 1 : -1; + }; + var by_time_up = function (a, b) { + if (!a.time && !b.time) { + return 0; + } + if (!a.time && b.time) { + return 1; + } + if (a.time && !b.time) { + return -1; + } + return a.time < b.time ? -1 : 1; + }; + var by_time_down = function (a, b) { + if (!a.time && !b.time) { + return 0; + } + if (!a.time && b.time) { + return -1; + } + if (a.time && !b.time) { + return 1; + } + return a.time < b.time ? 1 : -1; + }; + + // sort + if ($(this).hasClass('by-name')) { + // by name + if ($sort_icon.hasClass('icon-caret-up')) { + dir_item_list.sort(by_name_up); + file_item_list.sort(by_name_up); + } else { + dir_item_list.sort(by_name_down); + file_item_list.sort(by_name_down); + } + } else { + // by time + if ($sort_icon.hasClass('icon-caret-up')) { + dir_item_list.sort(by_time_up); + file_item_list.sort(by_time_up); + } else { + dir_item_list.sort(by_time_down); + file_item_list.sort(by_time_down); + } + } + + // DOM op + $items.detach(); + $(dir_item_list).each(function(index, item) { + $table.append(item.element); + }); + $(file_item_list).each(function(index, item) { + $table.append(item.element); + }); +}); +{% endif %} {% endblock %}
{% trans "Name"%}{% trans "Name"%} {% trans "Library"%} {% trans "Visits"%}{% trans "Expiration"%}{% trans "Expiration"%}
{% trans {{ fs.filename }}