a8m / angular-filter

Bunch of useful filters for AngularJS (with no external dependencies!)
https://github.com/a8m/angular-filter
MIT License
2.93k stars 331 forks source link

groupBy then orderBy #207

Open shahriarhossain opened 8 years ago

shahriarhossain commented 8 years ago

I am using the groupBy filter, after groupBy filtering I would love to do orderBy filtering. I have tried orderBy after the groupBy clause but that didn't work.

Can you extend your groupBy example(https://github.com/a8m/angular-filter#groupby) with the orderBy functionality.

My scenerio: $scope.browsers = [ {UniquePageviews: 500, Browser: 'chrome'}, {UniquePageviews: 700, Browser: 'chrome'}, {UniquePageviews: 200, Browser: 'firefox'}, {UniquePageviews: 100, Browser: 'safari'}, {UniquePageviews: 250, Browser: 'safari'}, {UniquePageviews: 50, Browser: 'safari'}, {UniquePageviews: 0, Browser: 'opera'}, {UniquePageviews: 0, Browser: 'opera'}, {UniquePageviews: 1000, Browser: 'IE'}, {UniquePageviews: 800, Browser: 'IE'}, ];

$scope.totalBrowserCount = function () { var total = 0; for (var i = 0; i < data.length; i++) { var product = data[i].UniquePageviews; total += product; } return total; }

{{key}} {{(value | map: 'UniquePageviews' | sum) * 100 / totalBrowserCount() | number :0}}%

Above code groups the result and in the list it only shows each browser name. But as you can see few browsers have most unique visits (i.e. IE has 1800 in total), so I am expecting IE on the top of the list.

mjortman commented 7 years ago

Did you ever find an answer? I'm having difficulty with this as well. I've moved the orderBy around both before and after the groupBy, I tried using toArray as in the example, and none of it seems to work.

a8m commented 7 years ago

Hi @mjortman, did you see this example? Can you share a jsbin example with us?

Thanks

onigetoc commented 7 years ago

I think this filter module should handle all common function like orderBy, sort ect. Without manipuling ourself the javascript