]> source.dussan.org Git - archiva.git/commitdiff
[MRM-1812] Users - Manage section needs Sort by User Name, Sort by Full Name, and...
authorOlivier Lamy <olamy@apache.org>
Tue, 6 May 2014 06:57:38 +0000 (16:57 +1000)
committerOlivier Lamy <olamy@apache.org>
Tue, 6 May 2014 06:57:38 +0000 (16:57 +1000)
archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/redback/users.js
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/templates/redback/user-edit.html

index 684f6b3c56dbd4aa1f038b189a2d050a29dd8d33..14a8c099e6182f33fa19a077327f02d1b7d4803a 100644 (file)
@@ -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
index 827a206536e0ba8f5cdba7934f68331c8ec12985..79a9d1612393227308c72745bee502f8029f69de 100644 (file)
@@ -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");
index 3baec2b24918c5b652d13a29631a7bd79a959b09..f129ad38a94918a4556109d41aaab1e15dd1e3bb 100644 (file)
   <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>
   </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'">