Merge pull request #16467 from owncloud/apps-fixsort

Sort apps by level, then by name
This commit is contained in:
Lukas Reschke 2015-05-28 16:10:27 +02:00
commit 173b147305
2 changed files with 27 additions and 9 deletions

View File

@ -86,17 +86,25 @@ OC.Settings.Apps = OC.Settings.Apps || {
}), {
type:'GET',
success: function (apps) {
OC.Settings.Apps.State.apps = _.indexBy(apps.apps, 'id');
var appList = _.map(_.indexBy(apps.apps, 'id'), function(app) {
// default values for missing fields
return _.extend({level: 0}, app);
});
OC.Settings.Apps.State.apps = appList;
var source = $("#app-template").html();
var template = Handlebars.compile(source);
if (apps.apps.length) {
apps.apps.sort(function(a,b) {
return b.level - a.level;
if (appList.length) {
appList.sort(function(a,b) {
var levelDiff = b.level - a.level;
if (levelDiff === 0) {
return OC.Util.naturalSortCompare(a.name, b.name);
}
return levelDiff;
});
var firstExperimental = false;
_.each(apps.apps, function(app) {
_.each(appList, function(app) {
if(app.level === 0 && firstExperimental === false) {
firstExperimental = true;
OC.Settings.Apps.renderApp(app, template, null, true);

View File

@ -130,14 +130,26 @@ describe('OC.Settings.Apps tests', function() {
apps: [
{
id: 'foo',
name: 'Foo app',
level: 0
},
{
id: 'alpha',
name: 'Alpha app',
level: 300
},
{
id: 'nolevel',
name: 'No level'
},
{
id: 'zork',
name: 'Some famous adventure game',
level: 200
},
{
id: 'delta',
name: 'Mathematical symbol',
level: 200
}
]
@ -145,10 +157,8 @@ describe('OC.Settings.Apps tests', function() {
);
var results = getResultsFromDom();
expect(results.length).toEqual(3);
expect(results[0]).toEqual('alpha');
expect(results[1]).toEqual('delta');
expect(results[2]).toEqual('foo');
expect(results.length).toEqual(5);
expect(results).toEqual(['alpha', 'delta', 'zork', 'foo', 'nolevel']);
});
});