diff options
author | Olivier Lamy <olamy@apache.org> | 2014-05-06 16:57:38 +1000 |
---|---|---|
committer | Olivier Lamy <olamy@apache.org> | 2014-05-06 16:57:38 +1000 |
commit | 7d3cdeb181c70f6ba94065d45b2e48b728c34fa8 (patch) | |
tree | 5884909ee379716c5df964b6579b373ed78bda25 /archiva-modules/archiva-web | |
parent | 8e8148886bbcda08cfa7f607a2468d18ad201e2e (diff) | |
download | archiva-7d3cdeb181c70f6ba94065d45b2e48b728c34fa8.tar.gz archiva-7d3cdeb181c70f6ba94065d45b2e48b728c34fa8.zip |
[MRM-1812] Users - Manage section needs Sort by User Name, Sort by Full Name, and Sort by Email buttons
Diffstat (limited to 'archiva-modules/archiva-web')
3 files changed, 59 insertions, 35 deletions
diff --git a/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties b/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties index 684f6b3c5..14a8c099e 100644 --- a/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties +++ b/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties @@ -241,6 +241,7 @@ user.change.password.required=Change password required users.grid.tab.title=Users users.list=Users List users.sort.byname=Sort by User Name +users.sort.generic=Sort effective.roles.edit=Edit Roles locked=Locked validated=Validated diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/redback/users.js b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/redback/users.js index 827a20653..79a9d1612 100644 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/redback/users.js +++ b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/redback/users.js @@ -52,6 +52,7 @@ function(jquery,utils,i18n,jqueryValidate,ko,koSimpleGrid,typeahead) { gridUpdateCallBack: function(){ $.log("gridUpdateCallBack users result"); applyAutocompleteOnUsersHeaders(self); + applySortOnHeadersButtons(self); } }); clearFilters=function(){ @@ -149,6 +150,10 @@ function(jquery,utils,i18n,jqueryValidate,ko,koSimpleGrid,typeahead) { }); }; + sortByProperty = function( property ) { + $.log("sortByProperty:" + property.headerText); + } + deleteUser=function(user){ clearUserMessages(); @@ -234,7 +239,53 @@ function(jquery,utils,i18n,jqueryValidate,ko,koSimpleGrid,typeahead) { } - } + }; + + applyAutocompleteOnUsersHeaders=function(usersViewModel){ + applyAutocompleteOnHeaderUsers("username",usersViewModel); + applyAutocompleteOnHeaderUsers("fullName",usersViewModel); + applyAutocompleteOnHeaderUsers("email",usersViewModel); + }; + + applySortOnHeadersButtons=function(usersViewModel){ + applySortOnHeadersButton("username",usersViewModel); + applySortOnHeadersButton("fullName",usersViewModel); + applySortOnHeadersButton("email",usersViewModel); + }; + + applyAutocompleteOnHeaderUsers=function(property,usersViewModel){ + var founds=[]; + $(usersViewModel.originalUsers()).each(function(idx,user){ + if(user[property] && user[property]()){ + founds.push(user[property]()); + } + }); + var cell = $("#main-content").find("#users-grid-filter-auto-"+property ); + cell.typeahead({ + local: founds, + name: 'users-'+property+'-'+$.now() + }); + cell.on('typeahead:selected', function(obj, datum) { + var users=[]; + + $(usersViewModel.originalUsers()).each(function(idx,user){ + if(user[property] && user[property]() && user[property]().indexOf(datum.value)>=0){ + users.push(user); + } + }); + usersViewModel.users(users); + }); + + }; + + applySortOnHeadersButton=function(property,usersViewModel){ + var cell = $("#main-content").find("#users-header-"+property ); + cell.on("click",function(){ + usersViewModel.users.sort(function(a, b) { + return a[property]().localeCompare(b[property]()); + }); + }); + }; editUserRoles=function(user){ var viewModel = new UserViewModel(user); @@ -280,31 +331,6 @@ function(jquery,utils,i18n,jqueryValidate,ko,koSimpleGrid,typeahead) { } - applyAutocompleteOnHeaderUsers=function(property,usersViewModel){ - var founds=[]; - $(usersViewModel.originalUsers()).each(function(idx,user){ - if(user[property] && user[property]()){ - founds.push(user[property]()); - } - }); - //var filteredHeader = ; - $("#main-content").find("#users-grid-filter-auto-"+property ).typeahead({ - local: founds, - name: 'users-'+property+'-'+$.now() - }); - $("#main-content").find("#users-grid-filter-auto-"+property ).on('typeahead:selected', function(obj, datum) { - var users=[]; - - $(usersViewModel.originalUsers()).each(function(idx,user){ - if(user[property] && user[property]() && user[property]().indexOf(datum.value)>=0){ - users.push(user); - } - }); - usersViewModel.users(users); - }); - - } - /** * called from the menu to display tabs with users grid */ @@ -345,11 +371,7 @@ function(jquery,utils,i18n,jqueryValidate,ko,koSimpleGrid,typeahead) { } - applyAutocompleteOnUsersHeaders=function(usersViewModel){ - applyAutocompleteOnHeaderUsers("username",usersViewModel); - applyAutocompleteOnHeaderUsers("fullName",usersViewModel); - applyAutocompleteOnHeaderUsers("email",usersViewModel); - } + activateUsersGridTab=function(){ var mainContent = $("#main-content"); diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/templates/redback/user-edit.html b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/templates/redback/user-edit.html index 3baec2b24..f129ad38a 100644 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/templates/redback/user-edit.html +++ b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/templates/redback/user-edit.html @@ -182,7 +182,11 @@ <thead> <tr> {{each(i, columnDefinition) columns}} - <th>${ columnDefinition.headerText }</th> + <th>${columnDefinition.headerText} + <button id="users-header-${columnDefinition.rowText}" class="btn"> + ${$.i18n.prop('users.sort.generic')} + </button> + </th> {{/each}} <th>${$.i18n.prop('edit')}</th> <th>${$.i18n.prop('delete')}</th> @@ -306,9 +310,6 @@ </ul> <div id="users-view-tabs-content" class="tab-content"> <div id="users-view" class="tab-pane"> - <button data-bind='click: sortByName' class="btn"> - ${$.i18n.prop('users.sort.byname')} - </button> <a href="#" class="btn btn-warning" data-bind="click: clearFilters" id="remove-filter-id">${$.i18n.prop('users.grid.filter')}</a> <table class="table table-striped table-bordered" id="usersTable" data-bind="simpleGrid: gridViewModel,simpleGridTemplate:'ko_usersGrid_grid',pageLinksId:'usersPagination'"> |