diff --git a/src/Umbraco.Web.UI.Client/src/common/services/usershelper.service.js b/src/Umbraco.Web.UI.Client/src/common/services/usershelper.service.js index 2ab873bd67..dc0c4fe160 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/usershelper.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/usershelper.service.js @@ -3,23 +3,58 @@ function usersHelperService(localizationService) { + var userStates = [ + { "name": "All", "key": "All"} , + { "value": 0, "name": "Active", "key": "Active", "color": "success" }, + { "value": 1, "name": "Disabled", "key": "Disabled", "color": "danger" }, + { "value": 2, "name": "Locked out", "key": "LockedOut", "color": "danger" }, + { "value": 3, "name": "Invited", "key": "Invited", "color": "warning" } + ]; + function getUserStateFromValue(value) { - switch (value) { - case 0: - return { "name": "Active", "alias": "active", "color": "success" }; - case 1: - return { "name": "Disabled", "alias": "disabled", "color": "danger" }; - case 2: - return { "name": "Locked out", "alias": "lockedOut", "color": "danger" }; - case 3: - return { "name": "Invited", "alias": "invited", "color": "warning" }; + var foundUserState; + angular.forEach(userStates, function (userState) { + if(userState.value === value) { + foundUserState = userState; + } + }); + return foundUserState; + } + + function getUserStateByKey(key) { + var foundUserState; + angular.forEach(userStates, function (userState) { + if(userState.key === key) { + foundUserState = userState; + } + }); + return foundUserState; + } + + function getUserStatesFilter(userStatesObject) { + + var userStatesFilter = []; + + for (var key in userStatesObject) { + if (userStatesObject.hasOwnProperty(key)) { + var userState = getUserStateByKey(key); + if(userState) { + userState.count = userStatesObject[key]; + userStatesFilter.push(userState); + } + } } + + return userStatesFilter; + } //////////// var service = { - getUserStateFromValue: getUserStateFromValue + getUserStateFromValue: getUserStateFromValue, + getUserStateByKey: getUserStateByKey, + getUserStatesFilter: getUserStatesFilter }; return service; diff --git a/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.controller.js b/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.controller.js index 54b39124fb..00d920911f 100644 --- a/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.controller.js @@ -19,6 +19,7 @@ { label: "Oldest", key: "CreateDate", direction: "Ascending" }, { label: "Last login", key: "LastLoginDate", direction: "Descending" } ]; + vm.userStatesFilter = []; vm.newUser.userGroups = []; vm.usersViewState = 'overview'; @@ -76,7 +77,9 @@ vm.selectAll = selectAll; vm.areAllSelected = areAllSelected; vm.searchUsers = searchUsers; - vm.getGroupFilterName = getGroupFilterName; + vm.getFilterName = getFilterName; + vm.setUserStatesFilter = setUserStatesFilter; + vm.setUserGroupFilter = setUserGroupFilter; vm.setOrderByFilter = setOrderByFilter; vm.changePageNumber = changePageNumber; vm.createUser = createUser; @@ -271,29 +274,40 @@ search(); } - function getGroupFilterName() { - - var name = ""; + function getFilterName(array) { + var name = "All"; var found = false; - - angular.forEach(vm.usersOptions.filter, function(value, index){ - angular.forEach(vm.userGroups, function(userGroup){ - if(value === userGroup.alias) { - if(index === 0) { - name = userGroup.name; - } else { - name = name + ", " + userGroup.name; - } + angular.forEach(array, function (item) { + if (item.selected) { + if(!found) { + name = item.name found = true; + } else { + name = name + ", " + item.name; } - }); + } }); + return name; + } - if(!found) { - name = "All"; + function setUserStatesFilter(value) { + getUsers(); + } + + function setUserGroupFilter(userGroup) { + + if(!vm.usersOptions.userGroups) { + vm.usersOptions.userGroups = []; } - return name; + if(userGroup.selected) { + vm.usersOptions.userGroups.push(userGroup.alias); + } else { + var index = vm.usersOptions.userGroups.indexOf(userGroup.alias); + vm.usersOptions.userGroups.splice(index, 1); + } + + getUsers(); } function setOrderByFilter(value, direction) { @@ -363,17 +377,18 @@ vm.loading = true; // Get users - usersResource.getPagedResults(vm.usersOptions).then(function (users) { + usersResource.getPagedResults(vm.usersOptions).then(function (data) { - vm.users = users.items; + vm.users = data.items; - vm.usersOptions.pageNumber = users.pageNumber; - vm.usersOptions.pageSize = users.pageSize; - vm.usersOptions.totalItems = users.totalItems; - vm.usersOptions.totalPages = users.totalPages; + vm.usersOptions.pageNumber = data.pageNumber; + vm.usersOptions.pageSize = data.pageSize; + vm.usersOptions.totalItems = data.totalItems; + vm.usersOptions.totalPages = data.totalPages; formatDates(vm.users); setUserDisplayState(vm.users); + vm.userStatesFilter = usersHelper.getUserStatesFilter(data.userStates); vm.loading = false; @@ -411,15 +426,15 @@ return; } - if(user.userDisplayState.alias === "disabled") { + if(user.userDisplayState.key === "Disabled") { vm.allowDisableUser = false; } - if(user.userDisplayState.alias === "active") { + if(user.userDisplayState.key === "Active") { vm.allowEnableUser = false; } - if(user.userDisplayState.alias === "invited") { + if(user.userDisplayState.key === "Invited") { vm.allowEnableUser = false; } @@ -436,7 +451,6 @@ vm.page.createButtonState = "init"; } - init(); } diff --git a/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.html b/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.html index 9d8d4b8c87..d8b79ba168 100644 --- a/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.html +++ b/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.html @@ -92,6 +92,7 @@ +
@@ -100,17 +101,17 @@
- -