From 7c3c919b8511d1a38cebc636611135a23f2bbf3e Mon Sep 17 00:00:00 2001 From: Bob Larrick Date: Tue, 8 Jul 2014 16:56:53 -0400 Subject: [PATCH] Adds consideration of string case to orderBy --- src/ng/filter/orderBy.js | 4 ++++ test/ng/filter/orderBySpec.js | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/src/ng/filter/orderBy.js b/src/ng/filter/orderBy.js index abd9f5857e8b..c136bd8aad68 100644 --- a/src/ng/filter/orderBy.js +++ b/src/ng/filter/orderBy.js @@ -154,6 +154,10 @@ function orderByFilter($parse){ var t2 = typeof v2; if (t1 == t2) { if (t1 == "string") { + if (v1.toLowerCase() === v2.toLowerCase()) { + if (v1 === v2) return 0; + return v1 < v2 ? -1 : 1; + } v1 = v1.toLowerCase(); v2 = v2.toLowerCase(); } diff --git a/test/ng/filter/orderBySpec.js b/test/ng/filter/orderBySpec.js index f7003d4b76e4..e8e125da7578 100644 --- a/test/ng/filter/orderBySpec.js +++ b/test/ng/filter/orderBySpec.js @@ -45,4 +45,10 @@ describe('Filter: orderBy', function() { return orderBy([{"Tip %": .15}, {"Tip %": .25}, {"Tip %": .40}], '"Tip %\''); }).toThrow(); }); + + it('should sort strings in a case sensitive way', function() { + var array = [{name:"Bb"}, {name:"BB"}, {name:"bb"}, {name:'Aa'}, {name:'aa'}, {name:'AA'}] + expect(orderBy(array, 'name', true)).toEqualData([{name:"bb"}, {name:"Bb"}, {name:"BB"}, {name:'aa'}, {name:'Aa'}, {name:'AA'}]); + expect(orderBy(array, 'name', true)).toEqualData(orderBy(array, 'name', false).reverse()); + }); });