Sort modules by built-in then custom

This commit is contained in:
Joe Fiorini 2015-05-28 12:46:08 -04:00
parent 579ee6d721
commit 5f902a55fe
2 changed files with 23 additions and 6 deletions

View File

@ -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);
}

View File

@ -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}}
</button>
</nav>