summaryrefslogtreecommitdiffstats
path: root/archiva-modules/archiva-web
diff options
context:
space:
mode:
authorOlivier Lamy <olamy@apache.org>2014-05-06 16:57:38 +1000
committerOlivier Lamy <olamy@apache.org>2014-05-06 16:57:38 +1000
commit7d3cdeb181c70f6ba94065d45b2e48b728c34fa8 (patch)
tree5884909ee379716c5df964b6579b373ed78bda25 /archiva-modules/archiva-web
parent8e8148886bbcda08cfa7f607a2468d18ad201e2e (diff)
downloadarchiva-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')
-rw-r--r--archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties1
-rw-r--r--archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/redback/users.js84
-rw-r--r--archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/templates/redback/user-edit.html9
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'">