summaryrefslogtreecommitdiffstats
path: root/archiva-modules/archiva-web
diff options
context:
space:
mode:
authorOlivier Lamy <olamy@apache.org>2013-01-02 09:00:36 +0000
committerOlivier Lamy <olamy@apache.org>2013-01-02 09:00:36 +0000
commit4b1e50a608c4c1738b30a1f402b7a62b38419fa6 (patch)
tree719b43e98c1770b86f7586383ce4d38c944f4315 /archiva-modules/archiva-web
parent822bf24e6bcea06de20ec7344b07bf854411b41b (diff)
downloadarchiva-4b1e50a608c4c1738b30a1f402b7a62b38419fa6.tar.gz
archiva-4b1e50a608c4c1738b30a1f402b7a62b38419fa6.zip
[MRM-1734] add some filtering for searching in users table
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1427713 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'archiva-modules/archiva-web')
-rw-r--r--archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/redback/users.js54
-rw-r--r--archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/templates/redback/user-edit.html34
2 files changed, 71 insertions, 17 deletions
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 4409b0435..13b2f72ad 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
@@ -23,8 +23,9 @@ function(jquery,utils,i18n,jqueryValidate,ko,koSimpleGrid) {
* view model used for users grid
*/
UsersViewModel=function() {
- this.users = ko.observableArray([]);
var self = this;
+ this.users = ko.observableArray([]);
+ this.originalUsers=ko.observableArray([]);
this.gridViewModel = new ko.simpleGrid.viewModel({
data: this.users,
@@ -32,17 +33,25 @@ function(jquery,utils,i18n,jqueryValidate,ko,koSimpleGrid) {
columns: [
{
headerText: "User Name",
- rowText: "username"},
+ rowText: "username",
+ filter: true
+ },
{
headerText: "Full Name",
- rowText: "fullName"},
+ rowText: "fullName",
+ filter: true
+ },
{
headerText: "Email",
- rowText: "email"}
+ rowText: "email",
+ filter: true
+ }
],
pageSize: 10
});
-
+ clearFilters=function(){
+ self.users(self.originalUsers());
+ };
this.addUser=function() {
clearUserMessages();
var mainContent = $("#main-content");
@@ -227,6 +236,34 @@ function(jquery,utils,i18n,jqueryValidate,ko,koSimpleGrid) {
}
+ applyAutocompleteOnHeader=function(property,usersViewModel){
+ $("#main-content").find("#users-grid-filter-auto-"+property ).autocomplete({
+ minLength: 0,
+ source: function(request, response){
+ var founds=[];
+ $.log("source:"+request.term+",users:"+usersViewModel.users().length)
+ $(usersViewModel.users()).each(function(idx,user){
+ if(user[property] && user[property]() && user[property]().indexOf(request.term)>=0){
+ founds.push(user[property]());
+ }
+ });
+ response(unifyArray(founds,true));
+ },
+ select: function( event, ui ) {
+ $.log("property:"+property+','+ui.item.value);
+ var users=[];
+ $(usersViewModel.users()).each(function(idx,user){
+ if(user[property] && user[property]() && user[property]().indexOf(ui.item.value)>=0){
+ users.push(user);
+ }
+ });
+ $.log("property:"+property+','+ui.item.value+",size:"+users.length);
+ usersViewModel.users(users);
+ return false;
+ }
+ });
+ }
+
/**
* called from the menu to display tabs with users grid
*/
@@ -245,12 +282,10 @@ function(jquery,utils,i18n,jqueryValidate,ko,koSimpleGrid) {
});
var usersViewModel = new UsersViewModel();
usersViewModel.users(mappedUsers);
+ usersViewModel.originalUsers(mappedUsers);
ko.applyBindings(usersViewModel,jQuery("#main-content").get(0));
mainContent.find("#users-view-tabs a:first").tab('show');
mainContent.find("#users-view-tabs a[data-toggle='tab']").on('show', function (e) {
- //$.log( $(e.target).attr("href") ); // activated tab
- //e.relatedTarget // previous tab
- $.log("tabs shown");
if ($(e.target).attr("href")=="#createUserForm") {
usersViewModel.addUser();
}
@@ -260,6 +295,9 @@ function(jquery,utils,i18n,jqueryValidate,ko,koSimpleGrid) {
})
mainContent.find("#users-view-tabs-content #users-view").addClass("active");
+ applyAutocompleteOnHeader("username",usersViewModel);
+ applyAutocompleteOnHeader("fullName",usersViewModel);
+ applyAutocompleteOnHeader("email",usersViewModel);
}
}
);
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 3db9d88ce..6ec095661 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
@@ -178,16 +178,31 @@
</script>
<script id='ko_usersGrid_grid' type='text/html'>
+
<thead>
- <tr>
- {{each(i, columnDefinition) columns}}
- <th>${ columnDefinition.headerText }</th>
- {{/each}}
- <th>${$.i18n.prop('edit')}</th>
- <th>${$.i18n.prop('delete')}</th>
- <th>${$.i18n.prop('user.list.locked')}</th>
- <th>${$.i18n.prop('user.change.password.required')}</th>
- </tr>
+ <tr>
+ {{each(i, columnDefinition) columns}}
+ <th>${ columnDefinition.headerText }</th>
+ {{/each}}
+ <th>${$.i18n.prop('edit')}</th>
+ <th>${$.i18n.prop('delete')}</th>
+ <th>${$.i18n.prop('user.list.locked')}</th>
+ <th>${$.i18n.prop('user.change.password.required')}</th>
+ </tr>
+ <tr>
+ {{each(i, columnDefinition) columns}}
+ <th>
+ {{if columnDefinition.filter }}
+ <input type="text" class="form-search input-medium" id="users-grid-filter-auto-${columnDefinition.rowText}"
+ placeholder="${$.i18n.prop('search.artifact.result.grid.filter')}"/>
+ {{/if}}
+ </th>
+ {{/each}}
+ <th></th>
+ <th></th>
+ <th>locked ?</th>
+ <th>chg pwd</th>
+ </tr>
</thead>
<tbody>
{{each(i, row) itemsOnCurrentPage()}}
@@ -270,6 +285,7 @@
<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('search.artifact.result.filter')}</a>
<table class="table table-striped table-bordered" id="usersTable"
data-bind="simpleGrid: gridViewModel,simpleGridTemplate:'ko_usersGrid_grid',pageLinksId:'usersPagination'">
</table>