[MRM-1812] Users - Manage section needs Sort by User Name, Sort by Full Name, and Sort by Email buttons

This commit is contained in:
Olivier Lamy 2014-05-06 16:57:38 +10:00
parent 8e8148886b
commit 7d3cdeb181
3 changed files with 59 additions and 35 deletions

View 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

View 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");

View File

@ -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'">