Ticket #268: Add pagination for connections.

This commit is contained in:
Michael Jumper
2013-02-18 11:51:57 -08:00
parent 3c4d074152
commit 9d07362469
2 changed files with 48 additions and 21 deletions

View File

@@ -77,6 +77,9 @@
<div id="connection-list"> <div id="connection-list">
</div> </div>
<div id="connection-list-buttons">
</div>
</div> </div>
</div> </div>

View File

@@ -22,23 +22,23 @@
*/ */
var GuacAdmin = { var GuacAdmin = {
"lists" : { "containers" : {
"connection_list" : document.getElementById("connection-list"), "connection_list" : document.getElementById("connection-list"),
"user_list" : document.getElementById("user-list") "user_list" : document.getElementById("user-list"),
"user_list_buttons" : document.getElementById("user-list-buttons"),
"connection_list_buttons" : document.getElementById("connection-list-buttons")
}, },
"user_list_buttons" : document.getElementById("user-list-buttons"),
"buttons" : { "buttons" : {
"back" : document.getElementById("back"), "back" : document.getElementById("back"),
"logout" : document.getElementById("logout"), "logout" : document.getElementById("logout"),
"add_connection" : document.getElementById("add-connection"), "add_connection" : document.getElementById("add-connection"),
"add_user" : document.getElementById("add-user") "add_user" : document.getElementById("add-user")
}, },
"fields" : { "fields" : {
"connection_id" : document.getElementById("connection-id"), "connection_id" : document.getElementById("connection-id"),
"username" : document.getElementById("username") "username" : document.getElementById("username")
}, },
"cached_permissions" : null, "cached_permissions" : null,
@@ -530,7 +530,7 @@ GuacAdmin.addUser = function(name) {
// Deselect // Deselect
function deselect() { function deselect() {
GuacUI.removeClass(GuacAdmin.lists.user_list, "disabled"); GuacUI.removeClass(GuacAdmin.containers.user_list, "disabled");
GuacUI.removeClass(item_element, "selected"); GuacUI.removeClass(item_element, "selected");
item_element.removeChild(form_element); item_element.removeChild(form_element);
GuacAdmin.selected_user = null; GuacAdmin.selected_user = null;
@@ -538,7 +538,7 @@ GuacAdmin.addUser = function(name) {
// Select // Select
function select() { function select() {
GuacUI.addClass(GuacAdmin.lists.user_list, "disabled"); GuacUI.addClass(GuacAdmin.containers.user_list, "disabled");
GuacUI.addClass(item_element, "selected"); GuacUI.addClass(item_element, "selected");
item_element.appendChild(form_element); item_element.appendChild(form_element);
} }
@@ -685,6 +685,11 @@ GuacAdmin.addUser = function(name) {
}; };
/**
* Currently-defined pager for connections, if any.
*/
GuacAdmin.connectionPager = null;
/** /**
* Adds the given connection to the displayed connection list. * Adds the given connection to the displayed connection list.
*/ */
@@ -692,7 +697,7 @@ GuacAdmin.addConnection = function(connection) {
var item = new GuacAdmin.ListItem("connection", connection.id); var item = new GuacAdmin.ListItem("connection", connection.id);
var item_element = item.getElement(); var item_element = item.getElement();
GuacAdmin.lists.connection_list.appendChild(item_element); GuacAdmin.connectionPager.addElement(item_element);
item_element.onclick = function() { item_element.onclick = function() {
@@ -796,7 +801,7 @@ GuacAdmin.addConnection = function(connection) {
// Deselect // Deselect
function deselect() { function deselect() {
GuacUI.removeClass(GuacAdmin.lists.connection_list, "disabled"); GuacUI.removeClass(GuacAdmin.containers.connection_list, "disabled");
GuacUI.removeClass(item_element, "selected"); GuacUI.removeClass(item_element, "selected");
item_element.removeChild(form_element); item_element.removeChild(form_element);
GuacAdmin.selected_connection = null; GuacAdmin.selected_connection = null;
@@ -804,7 +809,7 @@ GuacAdmin.addConnection = function(connection) {
// Select // Select
function select() { function select() {
GuacUI.addClass(GuacAdmin.lists.connection_list, "disabled"); GuacUI.addClass(GuacAdmin.containers.connection_list, "disabled");
GuacUI.addClass(item_element, "selected"); GuacUI.addClass(item_element, "selected");
item_element.appendChild(form_element); item_element.appendChild(form_element);
} }
@@ -1031,17 +1036,17 @@ GuacAdmin.reset = function() {
user_previous_page = GuacAdmin.userPager.current_page; user_previous_page = GuacAdmin.userPager.current_page;
// Add new pager // Add new pager
GuacAdmin.lists.user_list.innerHTML = ""; GuacAdmin.containers.user_list.innerHTML = "";
GuacAdmin.userPager = new GuacAdmin.Pager(GuacAdmin.lists.user_list); GuacAdmin.userPager = new GuacAdmin.Pager(GuacAdmin.containers.user_list);
// Add users to pager // Add users to pager
for (var name in GuacAdmin.cached_permissions.read_user) for (var name in GuacAdmin.cached_permissions.read_user)
GuacAdmin.addUser(name) GuacAdmin.addUser(name)
// If more than one page, add navigation buttons // If more than one page, add navigation buttons
GuacAdmin.user_list_buttons.innerHTML = ""; GuacAdmin.containers.user_list_buttons.innerHTML = "";
if (GuacAdmin.userPager.last_page != 0) if (GuacAdmin.userPager.last_page != 0)
GuacAdmin.user_list_buttons.appendChild(GuacAdmin.userPager.getElement()); GuacAdmin.containers.user_list_buttons.appendChild(GuacAdmin.userPager.getElement());
// Set starting page // Set starting page
GuacAdmin.userPager.setPage(Math.min(GuacAdmin.userPager.last_page, GuacAdmin.userPager.setPage(Math.min(GuacAdmin.userPager.last_page,
@@ -1051,10 +1056,29 @@ GuacAdmin.reset = function() {
* Add readable connections. * Add readable connections.
*/ */
GuacAdmin.lists.connection_list.innerHTML = ""; // Get previous page, if any
var connection_previous_page = 0;
if (GuacAdmin.connectionPager)
connection_previous_page = GuacAdmin.connectionPager.current_page;
// Add new pager
GuacAdmin.containers.connection_list.innerHTML = "";
GuacAdmin.connectionPager = new GuacAdmin.Pager(GuacAdmin.containers.connection_list);
// Add connections to pager
for (var i=0; i<GuacAdmin.cached_connections.length; i++) for (var i=0; i<GuacAdmin.cached_connections.length; i++)
GuacAdmin.addConnection(GuacAdmin.cached_connections[i]); GuacAdmin.addConnection(GuacAdmin.cached_connections[i]);
// If more than one page, add navigation buttons
GuacAdmin.containers.connection_list_buttons.innerHTML = "";
if (GuacAdmin.connectionPager.last_page != 0)
GuacAdmin.containers.connection_list_buttons.appendChild(
GuacAdmin.connectionPager.getElement());
// Set starting page
GuacAdmin.connectionPager.setPage(Math.min(GuacAdmin.connectionPager.last_page,
connection_previous_page));
}; };
// Initial load // Initial load