From 5f902a55febf0f35ac194553a6b1c8d7e944e221 Mon Sep 17 00:00:00 2001 From: Joe Fiorini Date: Thu, 28 May 2015 12:46:08 -0400 Subject: [PATCH] Sort modules by built-in then custom --- .../get-module-options.factory.js | 27 +++++++++++++++---- .../system-tracking.partial.html | 2 +- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/awx/ui/static/js/system-tracking/data-services/get-module-options.factory.js b/awx/ui/static/js/system-tracking/data-services/get-module-options.factory.js index 961ef718ac..5ea39f2480 100644 --- a/awx/ui/static/js/system-tracking/data-services/get-module-options.factory.js +++ b/awx/ui/static/js/system-tracking/data-services/get-module-options.factory.js @@ -2,32 +2,48 @@ var moduleConfig = { 'packages': { compareKey: ['release', 'version'], nameKey: 'name', - displayType: 'flat' + displayType: 'flat', + sortKey: 1 }, 'services': { compareKey: ['state', 'source'], nameKey: 'name', - displayType: 'flat' + displayType: 'flat', + sortKey: 2 }, 'files': { compareKey: ['size', 'mode', 'md5', 'mtime', 'gid', 'uid'], nameKey: 'path', - displayType: 'flat' + displayType: 'flat', + sortKey: 3 + }, + 'ansible': + { displayType: 'nested', + sortKey: 4 }, 'custom': { displayType: 'nested' } }; -function makeModule(option) { +function makeModule(option, index) { var name = option[0]; var displayName = option[1]; var config = moduleConfig.hasOwnProperty(name) ? moduleConfig[name] : moduleConfig.custom; + var modulesCount = _.keys(moduleConfig).length - 1; config.name = name; config.displayName = displayName; + // Use index to sort custom modules, + // offset by built-in modules since + // they have a hardcoded sort key + // + if (_.isUndefined(config.sortKey)) { + config.sortKey = (index - 1) + modulesCount; + } + return config; } @@ -39,7 +55,8 @@ function factory(hostId, rest, getBasePath, _) { rest.setUrl(url); return _(rest.options()) .then(function(response) { - return response.data.actions.GET.module.choices; + var choices = response.data.actions.GET.module.choices; + return _.sortBy(choices, '1'); }).thenMap(makeModule); } diff --git a/awx/ui/static/js/system-tracking/system-tracking.partial.html b/awx/ui/static/js/system-tracking/system-tracking.partial.html index cfa2ff6d7b..6b45cbec9e 100644 --- a/awx/ui/static/js/system-tracking/system-tracking.partial.html +++ b/awx/ui/static/js/system-tracking/system-tracking.partial.html @@ -24,7 +24,7 @@ 'FactModuleFilter-module--isActive': module.isActive, }" ng-click="setActiveModule(module.name)" - ng-repeat="module in modules"> + ng-repeat="module in modules | orderBy: 'sortKey'"> {{module.displayName}}