var GroupNodeTableUpdater = {}; /** * Hides/shows the nodes in a node group table. */ GroupNodeTableUpdater.toggleSection = function(nodeGroupName) { var tableId = "div_" + nodeGroupName; var imageId = tableId + '-im'; var expandSpanId = "img_gr_" + nodeGroupName; var tableObj = $(tableId); if(null == tableObj) { alert('Error: section ' + tableId + ' not found.'); return false; } var imageTag = $(imageId); var expandSpanObj = $(expandSpanId); if(!tableObj.style.display || tableObj.style.display == 'inline') { // the inner table is currently visible tableObj.style.display = 'none'; imageTag.src = "../images/plus-sign.gif"; expandSpanObj.title = "Click to expand section"; } else { // the inner table is currently invisible tableObj.style.display = 'inline'; imageTag.src = "../images/minus-sign.gif"; expandSpanObj.title = "Click to collapse section"; } return true; }; GroupNodeTableUpdater.getFailureSpanHTML = function(nodeGroupName) { var spanId = "nodegroup_" + nodeGroupName + "_failure"; var html = 'There was a problem loading the node for the group ' + nodeGroupName + ''; return html; } GroupNodeTableUpdater.getLoadingSpanHTML = function(nodeGroupName) { var spanId = "nodegroup_" + nodeGroupName + "_loading"; var html = ''; return html; } /** * This is the onCreate callback for the AJAX request made in GroupNodeTableUpdater.updateNodeList. * It updates the interface to show that the request is loading. * See http://www.prototypejs.org/api/ajax/options */ GroupNodeTableUpdater.updateNodeListLoading = function(nodeGroupName) { var spanId = 'img_gr_' + nodeGroupName; new Insertion.Bottom(spanId, GroupNodeTableUpdater.getLoadingSpanHTML(nodeGroupName)); var loadingSpanId = "nodegroup_" + nodeGroupName + "_loading"; new Effect.Appear(loadingSpanId); } /** * This is the onFailure callback for the AJAX request made in GroupNodeTableUpdater.updateNodeList. * It updates the interface to show that the request failed. * See http://www.prototypejs.org/api/ajax/options */ GroupNodeTableUpdater.updateNodeListFailure = function(nodeGroupName) { var spanId = 'img_gr_' + nodeGroupName; new Insertion.Bottom(spanId, GroupNodeTableUpdater.getFailureSpanHTML(nodeGroupName)); var failureSpanId = "nodegroup_" + nodeGroupName + "_failure"; new Effect.Shake(failureSpanId); } /** * Add table rows representing nodes to the table that represents the node group * identified by the given name. */ GroupNodeTableUpdater.updateNodeList = function(nodeGroupName) { var tableId = "div_" + nodeGroupName; var imageId = tableId + '-im'; var expandSpanId = "img_gr_" + nodeGroupName; var tableObj = $(tableId); if(null == tableObj) { alert('Error: section ' + tableId + ' not found.'); return false; } var imageTag = $(imageId); var expandSpanObj = $(expandSpanId); if(!tableObj.style.display || tableObj.style.display == 'inline') {// currently visible tableObj.style.display = 'none'; imageTag.src = "../images/plus-sign.gif"; expandSpanObj.title = "Click to expand section"; } else { //currently invisible imageTag.src = "../images/minus-sign.gif"; expandSpanObj.title = "Click to collapse section"; var target = "div_" + nodeGroupName; var pars = 'nodeGroupName=' + nodeGroupName; var URL = 'nodes_by_group.php'; // Check whether the table already exists and has already been updated? //alert('About to call Ajax.Updater'); new Ajax.Updater(target, URL, { method: 'post', parameters: pars, onCreate: function() { GroupNodeTableUpdater.updateNodeListLoading(nodeGroupName) }, // Needs Prototype 1.5.1 onFailure: function() {GroupNodeTableUpdater.updateNodeListFailure(nodeGroupName) }, onComplete: function() {new Effect.Fade("nodegroup_" + nodeGroupName + "_loading")} }); // the inner table is currently invisible tableObj.style.display = 'inline'; //alert('Back from Ajax.Updater'); } //return true; //GroupNodeTableUpdater.toggleSection(nodeGroupName); }