diff --git a/static/js/list_render.js b/static/js/list_render.js index f0e7bc2627..18c3ca0bb4 100644 --- a/static/js/list_render.js +++ b/static/js/list_render.js @@ -191,11 +191,6 @@ var list_render = (function () { sort: function (sorting_function, prop, map, do_not_display, reverse) { meta.prop = prop; - if (reverse === true) { - // simple mutable array reversal. - meta.filtered_list.reverse(); - } - if (typeof sorting_function === "function") { meta.sorting_function = sorting_function; } else if (typeof sorting_function === "string") { @@ -207,11 +202,17 @@ var list_render = (function () { } } - // we do not want to sort if we are just looking to reverse. - if (meta.sorting_function && !reverse) { + // we do not want to sort if we are just looking to reverse + // by calling with no sorting_function + if (meta.sorting_function) { meta.filtered_list = meta.filtered_list.sort(meta.sorting_function); } + if (reverse) { + // simple mutable array reversal. + meta.filtered_list.reverse(); + } + if (!do_not_display) { // clear and re-initialize the list with the newly filtered subset // of items. diff --git a/static/js/settings_linkifiers.js b/static/js/settings_linkifiers.js index 18fb5d9b85..a9eec298e6 100644 --- a/static/js/settings_linkifiers.js +++ b/static/js/settings_linkifiers.js @@ -27,7 +27,7 @@ exports.populate_filters = function (filters_data) { } var filters_table = $("#admin_filters_table").expectOne(); - list_render.create(filters_table, filters_data, { + var filters_list = list_render.create(filters_table, filters_data, { name: "linkifiers_list", modifier: function (filter) { return render_admin_filter_list({ @@ -54,6 +54,31 @@ exports.populate_filters = function (filters_data) { parent_container: $("#filter-settings").expectOne(), }).init(); + function compare_by_index(a, b, i) { + if (a[i] > b[i]) { + return 1; + } else if (a[i] === b[i]) { + return 0; + } + return -1; + } + + filters_list.add_sort_function("pattern", function (a, b) { + return compare_by_index(a, b, 0); + }); + + filters_list.add_sort_function("url", function (a, b) { + return compare_by_index(a, b, 1); + }); + + var active_col = $('.admin_filters_table th.active').expectOne(); + filters_list.sort( + active_col.data('sort'), + undefined, + undefined, + undefined, + active_col.hasClass('descend')); + loading.destroy_indicator($('#admin_page_filters_loading_indicator')); }; diff --git a/static/styles/settings.scss b/static/styles/settings.scss index 90664fbe8e..f04901fd6f 100644 --- a/static/styles/settings.scss +++ b/static/styles/settings.scss @@ -183,7 +183,6 @@ label { } #uploaded_files_table > tr > td:nth-of-type(1), -#admin_filters_table > tr > td:nth-of-type(1), .upload-file-name { width: 30%; word-break: break-all; @@ -803,10 +802,6 @@ input[type=checkbox].inline-block { } } -#filter-settings .admin_filters_table { - margin-top: 20px; -} - #admin-filter-pattern-status, #admin-filter-format-status { margin: 20px 0 0 0; diff --git a/static/templates/settings/linkifier_settings_admin.hbs b/static/templates/settings/linkifier_settings_admin.hbs index bf0d10eb46..8c4ca194b5 100644 --- a/static/templates/settings/linkifier_settings_admin.hbs +++ b/static/templates/settings/linkifier_settings_admin.hbs @@ -65,19 +65,18 @@ {{/if}} - +
- - + + {{#if is_admin}} {{/if}} -
{{t "Pattern" }}{{t "URL format string" }}{{t "Pattern" }}{{t "URL format string" }}{{t "Actions" }}
- - +
+