UsersView.js revision 2d7019e19039fd083850f76e54b6b26a7b06a8f2
2665d7759e63acff0bcd4135678f2cc6f2041d46Christian Maeder/*
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
e9458b1a7a19a63aa4c179f9ab20f4d50681c168Jens Elkner *
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer * Copyright © 2011 ForgeRock AS. All rights reserved.
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer *
98890889ffb2e8f6f722b00e265a211f13b5a861Corneliu-Claudiu Prodescu * The contents of this file are subject to the terms
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer * of the Common Development and Distribution License
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer * (the License). You may not use this file except in
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer * compliance with the License.
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer *
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer * You can obtain a copy of the License at
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer * http://forgerock.org/license/CDDLv1.0.html
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer * See the License for the specific language governing
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer * permission and limitations under the License.
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer *
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer * When distributing Covered Code, include this CDDL
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer * Header Notice in each file and include the License file
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer * at http://forgerock.org/license/CDDLv1.0.html
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer * If applicable, add the following below the CDDL Header,
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer * with the fields enclosed by brackets [] replaced by
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer * your own identifying information:
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer * "Portions Copyrighted [year] [name of copyright owner]"
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer */
92d79cd0ad22cf74b345e1381d806ffc364d9ea1Thiemo Wiedemeyer
92d79cd0ad22cf74b345e1381d806ffc364d9ea1Thiemo Wiedemeyer/*global $, define */
92d79cd0ad22cf74b345e1381d806ffc364d9ea1Thiemo Wiedemeyer
eeae57399bf0e5d2bac38097748dfc74e0393528Thiemo Wiedemeyer/**
c12d42ce40f77309a5e5572a1de874d823cf1b9dThiemo Wiedemeyer * @author mbilski
92d79cd0ad22cf74b345e1381d806ffc364d9ea1Thiemo Wiedemeyer */
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer
5607bbe40d1b360797381a83a6eae6773ee7cd2cChristian Maederdefine("app/comp/admin/usermanagement/UsersView", ["app/util/UIUtils"],function(UIUtils) {
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer var obj = {};
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer obj.maxUsers = 10;
5607bbe40d1b360797381a83a6eae6773ee7cd2cChristian Maeder obj.users = 0;
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer
92d79cd0ad22cf74b345e1381d806ffc364d9ea1Thiemo Wiedemeyer obj.init = function() {
92d79cd0ad22cf74b345e1381d806ffc364d9ea1Thiemo Wiedemeyer obj.users = 0;
92d79cd0ad22cf74b345e1381d806ffc364d9ea1Thiemo Wiedemeyer };
5607bbe40d1b360797381a83a6eae6773ee7cd2cChristian Maeder
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer obj.show = function(showCallback) {
5607bbe40d1b360797381a83a6eae6773ee7cd2cChristian Maeder console.log("showing users");
8f31d51d47da96200437dd3af1d785cd88a46f71Thiemo Wiedemeyer
92d79cd0ad22cf74b345e1381d806ffc364d9ea1Thiemo Wiedemeyer $.ajax({
92d79cd0ad22cf74b345e1381d806ffc364d9ea1Thiemo Wiedemeyer type : "GET",
92d79cd0ad22cf74b345e1381d806ffc364d9ea1Thiemo Wiedemeyer url : "templates/admin/UsersTemplate.html",
dataType : "html",
success : function(data) {
$("#content").fadeOut(100, function() {
$(this).html(data);
$(this).fadeIn(100);
showCallback();
});
},
error : showCallback
});
};
/**
* userNumber - user index in UserCtrl's users array
*/
obj.addUser = function(user, userNumber, callback) {
if( obj.users < obj.maxUsers && !obj.hasUser(userNumber) ) {
var i = 0, u, userRow;
u = $("#usersTable").find("input[type='hidden']").first();
userRow = obj.getUserRow(user, userNumber);
if( u.length === 0 ) {
console.log('adding user at the beggining');
$("#usersTable").append(userRow);
} else {
while( u.length !== 0 ) {
if( $(u).val() > userNumber ) {
console.log('adding user before' + $(u).val());
$(u).parent().parent().after(userRow);
break;
}
i++;
u = $("#usersTable").find("input[type='hidden']").filter(":gt(" + i + ")").first();
}
if( u.length === 0 ) {
console.log('adding at the end');
$("#usersTable").append(userRow);
}
}
obj.users++;
}
if( callback !== undefined ) {
callback();
}
};
obj.getUserRow = function(user, userNumber) {
return "<tr><td width='245'><a href='#'>" + user.email + "</a></td>" +
"<td width='210'>" + user.lastname + "</td>" +
"<td width='110'>" + user.firstname + "</td>" +
"<td style='width: auto; text-align: center;'><input type=\"hidden\" name=\"number\" value=\"" + userNumber +"\">" +
"<a href='#'>show</a></td></tr>";
};
obj.removeUser = function(userNumber) {
if( obj.hasUser(userNumber) ) {
console.log('removing user from users list');
$("#usersTable").find("input[value='" + userNumber + "']").parent().parent().remove();
obj.users--;
}
};
obj.hasUser = function(userNumber) {
if( $("#usersTable").find("input[value='" + userNumber + "']").length !== 0 ) {
return true;
}
return false;
};
obj.getFilterInput = function() {
return $("#users").find("input[name='filter']").first();
};
obj.getEditButton = function(userNumber) {
return $("#users").find("input[value='" + userNumber + "']").parent().parent();
};
obj.getUserNumberByEditButton = function(editButton) {
return $(editButton).find("input[type='hidden']").val();
};
obj.getRemoveButton = function(userId) {
};
obj.getAddUserButton = function() {
return $("#addUserButton");
};
obj.getMaxUsers = function() {
return obj.maxUsers;
};
obj.setMaxUsers = function(max) {
obj.maxUsers = max;
};
obj.getUsers = function() {
return obj.users;
};
obj.getRemainingUsers = function() {
return $("#remainingUsers");
};
obj.getActionLinks = function() {
return $('#usersTable a:odd');
};
obj.getUserPrincipleLinks = function() {
return $("#usersTable a:even");
};
obj.getUserIdByPrincipleLink = function(link) {
return $(link).parent().parent().find('input[type=hidden]').first().val();
};
obj.getActionMenu = function() {
return "<ul><li><a href='#' id='deleteUserLink'>Delete this user</a></li><li><a href='#' id='editUserLink'>Edit this user's details</a></li></ul>";
};
obj.getUserNumberByActionLink = function(link) {
return $(link).prev().val();
};
obj.getDeleteUserLink = function() {
return $("#deleteUserLink");
};
obj.getEditUserLink = function() {
return $("#editUserLink");
};
obj.getUserBriefInfo = function(user, callback) {
UIUtils.fillTemplateWithData("templates/admin/UserBriefInfoTemplate.html", user, function(data) {
callback(data);
});
};
return obj;
});