mirror of
https://github.com/ansible/awx.git
synced 2026-08-08 22:01:44 -02:30
Added Datatables.net style sorting to all lists and related lists
This commit is contained in:
@@ -22,7 +22,7 @@ angular.module('RelatedSearchHelper', ['RestServices', 'Utilities','RefreshRelat
|
||||
var scope = params.scope;
|
||||
var relatedSets = params.relatedSets;
|
||||
var form = params.form;
|
||||
|
||||
|
||||
// Set default values
|
||||
for (var set in form.related) {
|
||||
if (form.related[set].type != 'tree') {
|
||||
@@ -33,6 +33,7 @@ angular.module('RelatedSearchHelper', ['RestServices', 'Utilities','RefreshRelat
|
||||
break;
|
||||
}
|
||||
}
|
||||
scope[form.related[set].iterator + 'SortOrder'] = null;
|
||||
scope[form.related[set].iterator + 'SearchType'] = 'contains';
|
||||
scope[form.related[set].iterator + 'SearchTypeLabel'] = 'Contains';
|
||||
scope[form.related[set].iterator + 'SelectShow'] = false;
|
||||
@@ -57,7 +58,7 @@ angular.module('RelatedSearchHelper', ['RestServices', 'Utilities','RefreshRelat
|
||||
scope[model + 'SearchSpin'] = true;
|
||||
scope[model + 'Loading'] = true;
|
||||
|
||||
var set, url, iterator, default_order;
|
||||
var set, url, iterator, sort_order;
|
||||
for (var key in relatedSets) {
|
||||
if (relatedSets[key].iterator == model) {
|
||||
set = key;
|
||||
@@ -66,23 +67,73 @@ angular.module('RelatedSearchHelper', ['RestServices', 'Utilities','RefreshRelat
|
||||
|
||||
for (var fld in form.related[key].fields) {
|
||||
if (form.related[key].fields[fld].key) {
|
||||
default_order = fld;
|
||||
sort_order = fld;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
sort_order = (scope[model + 'SortOrder'] == null) ? sort_order : scope[model + 'SortOrder'];
|
||||
|
||||
if (scope[model + 'SearchValue'] != '' && scope[model + 'SearchValue'] != undefined) {
|
||||
scope[model + 'SearchParams'] = '?' + scope[model + 'SearchField'] +
|
||||
'__' + scope[model + 'SearchType'] + '=' + escape(scope[model + 'SearchValue']);
|
||||
scope[model + 'SearchParams'] += (default_order) ? '&order_by=' + escape(default_order) : '';
|
||||
scope[model + 'SearchParams'] += (sort_order) ? '&order_by=' + escape(sort_order) : '';
|
||||
}
|
||||
else {
|
||||
scope[model + 'SearchParams'] = (default_order) ? '?order_by=' + escape(default_order) : '';
|
||||
scope[model + 'SearchParams'] = (sort_order) ? '?order_by=' + escape(sort_order) : '';
|
||||
}
|
||||
url += scope[model + 'SearchParams'];
|
||||
url += (scope[model + 'PageSize']) ? '&page_size=' + scope[iterator + 'PageSize'] : "";
|
||||
RefreshRelated({ scope: scope, set: set, iterator: iterator, url: url });
|
||||
}
|
||||
|
||||
|
||||
scope.sort = function(iterator, fld) {
|
||||
var sort_order;
|
||||
|
||||
// reset sort icons back to 'icon-sort' on all columns
|
||||
// except the one clicked
|
||||
$('.' + iterator + ' .list-header').each(function(index) {
|
||||
if ($(this).attr('id') != iterator + '-' + fld + '-header') {
|
||||
var icon = $(this).find('i');
|
||||
icon.attr('class','icon-sort');
|
||||
}
|
||||
});
|
||||
|
||||
// Toggle the icon for the clicked column
|
||||
// and set the sort direction
|
||||
var icon = $('#' + iterator + '-' + fld + '-header i');
|
||||
var direction = '';
|
||||
if (icon.hasClass('icon-sort')) {
|
||||
icon.removeClass('icon-sort');
|
||||
icon.addClass('icon-sort-up');
|
||||
}
|
||||
else if (icon.hasClass('icon-sort-up')) {
|
||||
icon.removeClass('icon-sort-up');
|
||||
icon.addClass('icon-sort-down');
|
||||
direction = '-';
|
||||
}
|
||||
else if (icon.hasClass('icon-sort-down')) {
|
||||
icon.removeClass('icon-sort-down');
|
||||
icon.addClass('icon-sort-up');
|
||||
}
|
||||
|
||||
// Set the sorder order value and call the API to refresh the list with the new order
|
||||
for (var set in form.related) {
|
||||
if (form.related[set].iterator == iterator) {
|
||||
if (form.related[set].fields[fld].sourceModel) {
|
||||
sort_order = direction + form.related[set].fields[fld].sourceModel + '__' +
|
||||
form.related[set].fields[fld].sourceModel;
|
||||
}
|
||||
else {
|
||||
sort_order = direction + fld;
|
||||
}
|
||||
}
|
||||
}
|
||||
scope[iterator + 'SortOrder'] = sort_order;
|
||||
scope.search(iterator);
|
||||
}
|
||||
}
|
||||
}]);
|
||||
|
||||
Reference in New Issue
Block a user