Add server filters to NGusers & enable filter first

This patch adds server side filters to current NG users panel
it also enables the filter first functionality

Look at:https://review.openstack.org/#/c/427794/

Partially-Implements: blueprint ng-users
Implements: blueprint admin-views-filter-first

Change-Id: If0a5e2b38b1076387fd4eb7ff2c01fadb06badc3
Depends-on: Ieeedffbc621291251d50e7d8f254d3ce4def896c
This commit is contained in:
Luis Daniel Castellanos 2017-02-17 12:18:54 -06:00 committed by Daniel Castellanos
parent 55d23e7dfd
commit bed34722f3
3 changed files with 48 additions and 11 deletions

View File

@ -37,18 +37,18 @@
run.$inject = [
'horizon.framework.conf.resource-type-registry.service',
'horizon.app.core.openstack-service-api.keystone',
'horizon.dashboard.identity.users.basePath',
'horizon.dashboard.identity.users.resourceType',
'horizon.dashboard.identity.users.service'
];
function run(registry, keystone, basePath, userResourceType, usersService) {
function run(registry, basePath, userResourceType, usersService) {
registry.getResourceType(userResourceType)
.setNames(gettext('User'), gettext('Users'))
.setSummaryTemplateUrl(basePath + 'details/drawer.html')
.setProperties(userProperties())
.setListFunction(usersService.getUsersPromise)
.setNeedsFilterFirstFunction(usersService.getFilterFirstSettingPromise)
.tableColumns
.append({
id: 'name',
@ -76,7 +76,8 @@
.append({
label: gettext('Name'),
name: 'name',
singleton: true
singleton: true,
isServer: true
})
.append({
label: gettext('Email'),
@ -86,12 +87,14 @@
.append({
label: gettext('ID'),
name: 'id',
singleton: true
singleton: true,
isServer: true
})
.append({
label: gettext('Enabled'),
name: 'enabled',
singleton: true,
isServer: true,
options: [
{label: gettext('Yes'), key: 'true'},
{label: gettext('No'), key: 'false'}

View File

@ -22,18 +22,20 @@
userService.$inject = [
'$q',
'horizon.app.core.openstack-service-api.keystone',
'horizon.app.core.detailRoute'
'horizon.app.core.detailRoute',
'horizon.app.core.openstack-service-api.settings'
];
/*
* @ngdoc factory
* @name horizon.dashboard.identity.users.service
*/
function userService($q, keystone, detailRoute) {
function userService($q, keystone, detailRoute, settings) {
return {
getDetailsPath: getDetailsPath,
getUserPromise: getUserPromise,
getUsersPromise: getUsersPromise
getUsersPromise: getUsersPromise,
getFilterFirstSettingPromise: getFilterFirstSettingPromise
};
/*
@ -47,14 +49,15 @@
return detailRoute + 'OS::Keystone::User/' + item.id;
}
/*
/**
* @ngdoc function
* @name getUsersPromise
* @param params - query params
* @description
* Returns a promise for the users data.
*/
function getUsersPromise() {
return keystone.getUsers();
function getUsersPromise(params) {
return keystone.getUsers(params);
}
/*
@ -94,6 +97,22 @@
return user;
}
}
/**
* @ngdoc function
* @name getFilterFirstSettingPromise
* @description Returns a promise for the FILTER_DATA_FIRST setting
*
*/
function getFilterFirstSettingPromise() {
return settings.getSetting('FILTER_DATA_FIRST', {'identity.users': false})
.then(resolve);
function resolve(result) {
return result['identity.users'];
}
}
}
})();

View File

@ -17,12 +17,13 @@
"use strict";
describe('Identity user service', function() {
var service, keystone, scope, $q, detailRoute;
var service, keystone, scope, settings, $q, detailRoute;
beforeEach(module('horizon.dashboard.identity.users'));
beforeEach(inject(function($injector, _$q_) {
service = $injector.get('horizon.dashboard.identity.users.service');
keystone = $injector.get('horizon.app.core.openstack-service-api.keystone');
settings = $injector.get('horizon.app.core.openstack-service-api.settings');
detailRoute = $injector.get('horizon.app.core.detailRoute');
scope = $injector.get('$rootScope').$new();
$q = _$q_;
@ -106,5 +107,19 @@
});
});
describe('getFilterFirstSettingPromise', function() {
it('provides the setting value for identitty.users panel', function() {
var deferredSetting = $q.defer();
spyOn(settings, 'getSetting').and.returnValue(deferredSetting.promise);
var result = service.getFilterFirstSettingPromise();
deferredSetting.resolve({'identity.users': false});
scope.$apply();
expect(settings.getSetting).toHaveBeenCalled();
expect(result.$$state.value).toBe(false);
});
});
});
})();