diff --git a/lib/units/device/plugins/browser.js b/lib/units/device/plugins/browser.js index 07bbda0e..f21197f5 100644 --- a/lib/units/device/plugins/browser.js +++ b/lib/units/device/plugins/browser.js @@ -49,6 +49,12 @@ module.exports = syrup.serial() return acc } + function compareIgnoreCase(a, b) { + var la = (a || '').toLowerCase() + , lb = (b || '').toLowerCase() + return la === lb ? 0 : (la < lb ? -1 : 1) + } + function updateBrowsers(data) { log.info('Updating browser list') push.send([ @@ -56,7 +62,9 @@ module.exports = syrup.serial() , wireutil.envelope(new wire.DeviceBrowserMessage( options.serial , data.selected - , data.apps.reduce(appReducer, []) + , data.apps.reduce(appReducer, []).sort(function(appA, appB) { + return compareIgnoreCase(appA.name, appB.name) + }) )) ]) } diff --git a/res/app/device-list/column/device-column-service.js b/res/app/device-list/column/device-column-service.js index c7f09818..6ceb858f 100644 --- a/res/app/device-list/column/device-column-service.js +++ b/res/app/device-list/column/device-column-service.js @@ -419,9 +419,12 @@ function DeviceBrowserCell(options) { , update: function(td, device) { var span = td.firstChild , browser = options.value(device) + , apps = browser.apps.slice().sort(function(appA, appB) { + return compareIgnoreCase(appA.name, appB.name) + }) - for (var i = 0, l = browser.apps.length; i < l; ++i) { - var app = browser.apps[i] + for (var i = 0, l = apps.length; i < l; ++i) { + var app = apps[i] , img = span.childNodes[i] || span.appendChild(document.createElement('img')) , src = '/static/app/browsers/icon/36x36/' + (app.type || '_default') + '.png'