From ccb732bd6959dc19c9f15504dda96031e07fb358 Mon Sep 17 00:00:00 2001 From: Chris Houseknecht Date: Mon, 6 May 2013 17:59:13 -0400 Subject: [PATCH] All lists (included related lists) now send the order_by parameter to the API. Use the key: true attribute in the list definition to specify the default sorting field. --- .../web/app/js/helpers/refresh-related.js | 5 ++++- .../web/app/js/helpers/related-search.js | 20 ++++++++++++++----- lib/static/web/app/js/helpers/search.js | 11 +++++++--- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/lib/static/web/app/js/helpers/refresh-related.js b/lib/static/web/app/js/helpers/refresh-related.js index 534eecb73f..975ac4ba43 100644 --- a/lib/static/web/app/js/helpers/refresh-related.js +++ b/lib/static/web/app/js/helpers/refresh-related.js @@ -23,13 +23,16 @@ angular.module('RefreshRelatedHelper', ['RestServices', 'Utilities']) var iterator = params.iterator; var url = params.url; + url.replace(/page_size\=\d+/,''); //stop repeatedly appending page_size + Rest.setUrl(url); - Rest.get() + Rest.get({ params: { page_size: scope[iterator + 'PageSize'] }}) .success( function(data, status, headers, config) { scope[set] = data['results']; scope[iterator + 'NextUrl'] = data.next; scope[iterator + 'PrevUrl'] = data.previous; scope[iterator + 'Count'] = data.count; + scope[iterator + 'PageCount'] = Math.ceil((data.count / scope[iterator + 'PageSize'])); scope[iterator + 'SearchSpin'] = false; }) .error ( function(data, status, headers, config) { diff --git a/lib/static/web/app/js/helpers/related-search.js b/lib/static/web/app/js/helpers/related-search.js index 488d9fe33a..f275d9138c 100644 --- a/lib/static/web/app/js/helpers/related-search.js +++ b/lib/static/web/app/js/helpers/related-search.js @@ -51,18 +51,28 @@ angular.module('RelatedSearchHelper', ['RestServices', 'Utilities','RefreshRelat scope.search = function(model) { scope[model + 'SearchSpin'] = true; - var set, url, iterator; + var set, url, iterator, default_order; for (var key in relatedSets) { if (relatedSets[key].iterator == model) { - set = key; - iterator = relatedSets[key].iterator; - url = relatedSets[key].url; - break; + set = key; + iterator = relatedSets[key].iterator; + url = relatedSets[key].url; + + for (var fld in form.related[key].fields) { + if (form.related[key].fields[fld].key) { + default_order = fld; + } + } + break; } } if (scope[model + 'SearchValue'] != '' && scope[model + 'SearchValue'] != undefined) { url += '?' + scope[model + 'SearchField'] + '__' + scope[model + 'SearchType'] + '=' + escape(scope[model + 'SearchValue']); + url += (default_order) ? '&order_by=' + escape(default_order) : ''; + } + else { + url += (default_order) ? '?order_by=' + escape(default_order) : ''; } RefreshRelated({ scope: scope, set: set, iterator: iterator, url: url }); } diff --git a/lib/static/web/app/js/helpers/search.js b/lib/static/web/app/js/helpers/search.js index 97f388830d..e4c85792fe 100644 --- a/lib/static/web/app/js/helpers/search.js +++ b/lib/static/web/app/js/helpers/search.js @@ -24,11 +24,13 @@ angular.module('SearchHelper', ['RestServices', 'Utilities', 'RefreshHelper']) var set = params.set; var defaultUrl = params.url; var list = params.list; - var iterator = list.iterator; + var iterator = list.iterator; + var default_order; // Set default values for (fld in list.fields) { if (list.fields[fld].key) { + default_order = fld; scope[iterator + 'SearchField'] = fld scope[iterator + 'SearchFieldLabel'] = list.fields[fld].label; break; @@ -63,15 +65,18 @@ angular.module('SearchHelper', ['RestServices', 'Utilities', 'RefreshHelper']) // handle fields whose source is a related model e.g. inventories.organization scope[iterator + 'SearchParams'] = '?' + list.fields[scope[iterator + 'SearchField']].sourceModel + '__' + list.fields[scope[iterator + 'SearchField']].sourceField + '__' + - scope[iterator + 'SearchType'] + '=' + escape(scope[iterator + 'SearchValue']); + scope[iterator + 'SearchType'] + '=' + escape(scope[iterator + 'SearchValue']); + scope[iterator + 'SearchParams'] += (default_order) ? '&order_by=' + escape(default_order) : ''; } else { scope[iterator + 'SearchParams'] = '?' + scope[iterator + 'SearchField'] + '__' + scope[iterator + 'SearchType'] + '=' + escape(scope[iterator + 'SearchValue']); + scope[iterator + 'SearchParams'] += (default_order) ? '&order_by=' + escape(default_order) : ''; } } else { - scope[iterator + 'SearchParams'] = ''; + scope[iterator + 'SearchParams'] = ''; + scope[iterator + 'SearchParams'] += (default_order) ? '?order_by=' + escape(default_order) : ''; } Refresh({ scope: scope, set: set, iterator: iterator, url: url }); }