From: Llewellyn Marshall Date: Fri, 15 Jan 2021 19:58:07 +0000 (-0500) Subject: added type aware comparator for eg grid. String columns are sorted while X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=refs%2Fheads%2Fuser%2Flew%2FNC22753-eg-grid-string-sort;p=working%2FEvergreen.git added type aware comparator for eg grid. String columns are sorted while lower case. --- 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 ce84caa657..240930a00e 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 = []; @@ -1908,7 +1907,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 @@ -1933,8 +1946,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, @@ -1973,9 +1985,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;