From 89c9bdeddf99017ee4bd722a0fd30b6e71f362cd Mon Sep 17 00:00:00 2001 From: Llewellyn Marshall Date: Fri, 15 Jan 2021 14:58:07 -0500 Subject: [PATCH] added type aware comparator for eg grid. String columns are sorted while lower case. Signed-off-by: Garry Collum --- Open-ILS/web/js/ui/default/staff/services/grid.js | 26 ++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/Open-ILS/web/js/ui/default/staff/services/grid.js b/Open-ILS/web/js/ui/default/staff/services/grid.js index 57d93c8259..31d741e450 100644 --- a/Open-ILS/web/js/ui/default/staff/services/grid.js +++ b/Open-ILS/web/js/ui/default/staff/services/grid.js @@ -141,7 +141,6 @@ angular.module('egGridMod', egProgressDialog, $uibModal , egConfirmDialog , egStrings) { var grid = this; - grid.init = function() { grid.offset = 0; $scope.items = []; @@ -1911,7 +1910,21 @@ angular.module('egGridMod', gridData.query = args.query; gridData.idlClass = args.idlClass; gridData.columnsProvider = args.columnsProvider; - + gridData.comparators = { + "string":function(x,y){ + var l_x = x.toLowerCase(); + var l_y = y.toLowerCase(); + if (l_x < l_y) return -1; + if (l_x > l_y) return 1; + console.log("TEST"); + return 0; + }, + "default":function(x,y){ + if (x < y) return -1; + if (x > y) return 1; + return 0; + } + }; // Delivers a stream of array data via promise.notify() // Useful for passing an array of data to egGrid.get() // If a count is provided, the array will be trimmed to @@ -1936,8 +1949,7 @@ angular.module('egGridMod', } var path = gridData.columnsProvider.findColumn(field).path || field; - var comparator = gridData.columnsProvider.findColumn(field).comparator || - function (x,y) { if (x < y) return -1; if (x > y) return 1; return 0 }; + var comparator = gridData.columnsProvider.findColumn(field).comparator; sorter_cache[si] = { field : path, @@ -1976,9 +1988,13 @@ angular.module('egGridMod', if (af === null && bf !== null) return 1; if (bf === null && af !== null) return -1; + + var comparator = sc.comparator || ( + gridData.comparators[typeof af] ? gridData.comparators[typeof af]:gridData.comparators["default"] + ); if (!(bf === null && af === null)) { - var partial = sc.comparator(af,bf); + var partial = comparator(af,bf); if (partial) { if (sc.dir == 'desc') { if (partial > 0) return -1; -- 2.11.0