You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by tu...@apache.org on 2015/11/03 12:25:30 UTC

[08/79] [partial] incubator-geode git commit: GEODE-12: Imported pulse from geode-1.0.0-SNAPSHOT-2.src.tar

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/webapp/scripts/pulsescript/PulseCallbacks.js
----------------------------------------------------------------------
diff --git a/pulse/src/main/webapp/scripts/pulsescript/PulseCallbacks.js b/pulse/src/main/webapp/scripts/pulsescript/PulseCallbacks.js
new file mode 100644
index 0000000..6b12b74
--- /dev/null
+++ b/pulse/src/main/webapp/scripts/pulsescript/PulseCallbacks.js
@@ -0,0 +1,1724 @@
+/*=========================================================================
+ * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * one or more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+/**
+ *  @overview
+ * This is the actual response handling and processing of the web calls
+ * that are made by the PulseFunctions class. It will also process the 
+ * JSON response.
+ *
+ * @name PulseCallbacks.js
+ * @author ashutosh zambare.
+ * @version 1.0
+ *
+ */
+
+/**
+ * @function
+ * 
+ * @param r
+ *                This is the JSON object that is returned by the AJAX call made
+ *                by the PulseFunctions.
+ */
+var getPulseVersionBack = function(data) {
+
+  if (data.pulseVersion != undefined && data.pulseVersion != "") {
+    // Set Pulse version details
+    $('#pulseVersion').html(data.pulseVersion);
+    $('#pulseVer').html(data.pulseVersion);
+    $('#buildId').html(data.buildId);
+    $('#buildDate').html(data.buildDate);
+    $('#sourceDate').html(data.sourceDate);
+    $('#sourceRevision').html(data.sourceRevision);
+    $('#sourceRepository').html(data.sourceRepository);
+
+    // Display version details link
+    $('#pulseVersionDetailsLink').show();
+  } else {
+    // Hide version details link
+    $('#pulseVersionDetailsLink').hide();
+  }
+};
+
+
+/**
+ * Default handler for ClusterDetails service,
+ * function used for getting the response of Cluster Basic Details and wired
+ * them with HTML representing tags.
+ */
+var getClusterDetailsBack = null;
+
+/**
+ * For Gemfire, handler for ClusterDetails service
+ * function used for getting the response of Cluster Basic Details and wired
+ * them with HTML representing tags.
+ */
+var getClusterDetailsGemfireBack = function(data) {
+
+  if (severAlerts.length > 0) { // Severe
+    $('#clusterStatusText').html("Severe");
+    $("#clusterStatusIcon").addClass("severeStatus");
+  } else if (errorAlerts.length > 0) { // Error
+    $('#clusterStatusText').html("Error");
+    $("#clusterStatusIcon").addClass("errorStatus");
+    $("#clusterStatusIcon").removeClass("severeStatus");
+  } else if (warningAlerts.length > 0) { // Warning
+    $('#clusterStatusText').html("Warning");
+    $("#clusterStatusIcon").addClass("warningStatus");
+    $("#clusterStatusIcon").removeClass("severeStatus");
+    $("#clusterStatusIcon").removeClass("errorStatus");
+  } else { // Normal
+    $('#clusterStatusText').html("Normal");
+    $("#clusterStatusIcon").addClass("normalStatus");
+    $("#clusterStatusIcon").removeClass("severeStatus");
+    $("#clusterStatusIcon").removeClass("errorStatus");
+    $("#clusterStatusIcon").removeClass("warningStatus");
+  }
+
+  $('#clusterName').html(data.clusterName);
+  $('#clusterTotalMembersText').html(data.totalMembers);
+  $('#clusterServersText').html(data.servers);
+  $('#clusterClientsText').html(data.clients);
+  $('#clusterLocatorsText').html(data.locators);
+  $('#clusterTotalRegionsText').html(data.totalRegions);
+  $('#clusterTotalHeap').html(data.totalHeap);
+  $('#clusterFunctions').html(data.functions);
+  $('#clusterUniqueCQs').html(data.uniqueCQs);
+  $('#clusterSubscriptionsText').html(data.subscriptions);
+  $('#userName').html(data.userName);
+
+};
+
+/**
+ * function to sort array based on
+ *  string property
+ */
+var sortedArray =  function dynamicSort(property) { 
+	return function (obj1,obj2) {
+        return obj1[property] > obj2[property] ? 1
+            : obj1[property] < obj2[property] ? -1 : 0;
+    } 
+}
+
+/**
+ * For SQLfire, handler for ClusterDetails service
+ * function used for getting the response of Cluster Basic Details and wired
+ * them with HTML representing tags.
+ */
+var getClusterDetailsSQLfireBack = function(data) {
+
+  if (severAlerts.length > 0) { // Severe
+    $('#clusterStatusText').html("Severe");
+    $("#clusterStatusIcon").addClass("severeStatus");
+  } else if (errorAlerts.length > 0) { // Error
+    $('#clusterStatusText').html("Error");
+    $("#clusterStatusIcon").addClass("errorStatus");
+    $("#clusterStatusIcon").removeClass("severeStatus");
+  } else if (warningAlerts.length > 0) { // Warning
+    $('#clusterStatusText').html("Warning");
+    $("#clusterStatusIcon").addClass("warningStatus");
+    $("#clusterStatusIcon").removeClass("severeStatus");
+    $("#clusterStatusIcon").removeClass("errorStatus");
+  } else { // Normal
+    $('#clusterStatusText').html("Normal");
+    $("#clusterStatusIcon").addClass("normalStatus");
+    $("#clusterStatusIcon").removeClass("severeStatus");
+    $("#clusterStatusIcon").removeClass("errorStatus");
+    $("#clusterStatusIcon").removeClass("warningStatus");
+  }
+
+  $('#clusterName').html(data.clusterName);
+  $('#clusterTotalMembersText').html(data.totalMembers);
+  $('#clusterServersText').html(data.servers);
+  $('#clusterClientsText').html(data.clients);
+  $('#clusterLocatorsText').html(data.locators);
+  $('#clusterTotalRegionsText').html(data.totalRegions);
+  $('#clusterTotalHeap').html(data.totalHeap);
+  $('#clusterFunctions').html(data.functions);
+  $('#clusterTxnCommittedText').html(data.txnCommitted);
+  $('#clusterTxnRollbackText').html(data.txnRollback);
+  $('#userName').html(data.userName);
+
+};
+
+/**
+ * Default handler for ClusterKeyStatistics service,
+ * function used for getting the response of Cluster Key Statistics widget and wired
+ * them with HTML representing tags.
+ */
+var getClusterKeyStatisticsBack = null;
+
+/**
+ * For Gemfire, handler for ClusterKeyStatistics service 
+ * function used for getting the response of Cluster Key Statistics widget and
+ * wired them with HTML representing tags.
+ */
+var getClusterKeyStatisticsGemfireBack = function(data) {
+
+  // sparkline graph options
+  var sparklineOptions = {
+    width : '300px',
+    height : '20px',
+    lineColor : '#00CCFF',
+    fillColor : false,
+    spotColor : false,
+    minSpotColor : false,
+    maxSpotColor : false
+  };
+
+  var writePerSecTrend = data.writePerSecTrend;
+  var readPerSecTrend = data.readPerSecTrend;
+  var queriesPerSecTrend = data.queriesPerSecTrend;
+
+  var sumWrites = 0;
+  for ( var i = 0; i < writePerSecTrend.length; i++) {
+    sumWrites += writePerSecTrend[i];
+  }
+
+  var avgWrites = 0;
+  if (writePerSecTrend.length > 0) {
+    avgWrites = sumWrites / writePerSecTrend.length;
+  }
+
+  var sumReads = 0;
+  for ( var i = 0; i < readPerSecTrend.length; i++) {
+    sumReads += readPerSecTrend[i];
+  }
+
+  var avgReads = 0;
+  if (readPerSecTrend.length > 0) {
+    avgReads = sumReads / readPerSecTrend.length;
+  }
+
+  var sumQueries = 0;
+  for ( var i = 0; i < queriesPerSecTrend.length; i++) {
+    sumQueries += queriesPerSecTrend[i];
+  }
+
+  var avgQueries = 0;
+  if (queriesPerSecTrend.length > 0) {
+    avgQueries = sumQueries / queriesPerSecTrend.length;
+  }
+  // write per sec
+  $('#writePerSec').html(applyNotApplicableCheck(avgWrites.toFixed(2)));
+  $('#writePerSecSparkLine').sparkline(writePerSecTrend, sparklineOptions);
+
+  // read per second
+  $('#readPerSec').html(applyNotApplicableCheck(avgReads.toFixed(2)));
+  $('#readPerSecSparkLine').sparkline(readPerSecTrend, sparklineOptions);
+
+  // queries per sec
+  $('#queriesPerSec').html(avgQueries.toFixed(2));
+  $('#queriesPerSecSparkLine').sparkline(queriesPerSecTrend, sparklineOptions);
+};
+
+/**
+ * For SQLfire, handler for ClusterKeyStatistics service
+ * function used for getting the response of Cluster Key Statistics widget and
+ * wired them with HTML representing tags.
+ */
+var getClusterKeyStatisticsSQLfireBack = function(data) {
+
+  // sparkline graph options
+  var sparklineOptions = {
+    width : '300px',
+    height : '20px',
+    lineColor : '#00CCFF',
+    fillColor : false,
+    spotColor : false,
+    minSpotColor : false,
+    maxSpotColor : false
+  };
+
+  var writePerSecTrend = data.writePerSecTrend;
+  var readPerSecTrend = data.readPerSecTrend;
+  var queriesPerSecTrend = data.queriesPerSecTrend;
+
+  var sumWrites = 0;
+  for ( var i = 0; i < writePerSecTrend.length; i++) {
+    sumWrites += writePerSecTrend[i];
+  }
+
+  var avgWrites = 0;
+  if (writePerSecTrend.length > 0) {
+    avgWrites = sumWrites / writePerSecTrend.length;
+  }
+
+  var sumReads = 0;
+  for ( var i = 0; i < readPerSecTrend.length; i++) {
+    sumReads += readPerSecTrend[i];
+  }
+
+  var avgReads = 0;
+  if (readPerSecTrend.length > 0) {
+    avgReads = sumReads / readPerSecTrend.length;
+  }
+
+  var sumQueries = 0;
+  for ( var i = 0; i < queriesPerSecTrend.length; i++) {
+    sumQueries += queriesPerSecTrend[i];
+  }
+
+  var avgQueries = 0;
+  if (queriesPerSecTrend.length > 0) {
+    avgQueries = sumQueries / queriesPerSecTrend.length;
+  }
+  // write per sec
+  $('#writePerSec').html(applyNotApplicableCheck(avgWrites.toFixed(2)));
+  $('#writePerSecSparkLine').sparkline(writePerSecTrend, sparklineOptions);
+
+  // read per second
+  $('#readPerSec').html(applyNotApplicableCheck(avgReads.toFixed(2)));
+  $('#readPerSecSparkLine').sparkline(readPerSecTrend, sparklineOptions);
+};
+
+/**
+ * function used for getting the response of Cluster WAN Info widget and wired
+ * them with HTML representing tags.
+ */
+var getClusterWANInfoBack = function(data) {
+  var clusterList = data.connectedClusters;
+  var htmlList = "";
+  if (clusterList.length > 0) {
+    $('#wanInfoWidget').show();
+    for ( var i = 0; i < clusterList.length; i++) {
+      if (clusterList[i].status == true) {
+        htmlList += '<div class="statusUpDowmBlock statusUp">' + "Cluster_"
+            + clusterList[i].name + '</div>';
+      } else {
+        htmlList += '<div class="statusUpDowmBlock statusDown">' + "Cluster_"
+            + clusterList[i].name + '</div>';
+      }
+    }
+    $('#wanInfoList').html(htmlList);
+    $('.scroll-pane_1').jScrollPane();
+  } else {
+    $('#wanInfoWidget').hide();
+  }
+};
+
+/**
+ * function used for getting the response of Cluster Memory Usage widget and
+ * wired them with HTML representing tags.
+ */
+var getClusterMemoryUsageBack = function(data) {
+
+  var memoryUsageTrend = [];
+  memoryUsageTrend = data.memoryUsageTrend;
+
+  var sumMemory = 0;
+  for ( var i = 0; i < memoryUsageTrend.length; i++) {
+    sumMemory += memoryUsageTrend[i];
+  }
+
+  var avgMemory = 0;
+  if (memoryUsageTrend.length > 0) {
+    avgMemory = sumMemory / memoryUsageTrend.length;
+  }
+
+  var sparklineOptions = {
+    width : '230px',
+    height : '72px',
+    lineColor : '#FAB948',
+    fillColor : false,
+    spotRadius : 2.5,
+    labelPosition : 'left',
+    spotColor : false,
+    minSpotColor : false,
+    maxSpotColor : false,
+    lineWidth : 2
+  };
+
+  $('#memoryUsage').sparkline(memoryUsageTrend, sparklineOptions);
+  // checking if currentMemoryUsage > 1024 then show the result in GB else
+  // show the result in MB
+  if (data.currentMemoryUsage > 1024) {
+    var memoryUsageGB = (avgMemory / 1024).toFixed(2);
+    $('#currentMemoryUsage').html(memoryUsageGB);
+    $('#memoryUsageMB').html("GB");
+
+  } else {
+    $('#currentMemoryUsage').html(applyNotApplicableCheck(avgMemory.toFixed(2)));
+    $('#memoryUsageMB').html("MB");
+  }
+
+};
+
+/**
+ * function used for getting the response of Cluster GCPauses widget and wired
+ * them with HTML representing tags.
+ */
+var getClusterJVMPausesBack = function(data) {
+
+  var gCPausesTrend = [];
+  gCPausesTrend = data.gCPausesTrend;
+
+  var sparklineOptions = {
+    width : '230px',
+    height : '72px',
+    lineColor : '#FAB948',
+    fillColor : false,
+    spotRadius : 2.5,
+    labelPosition : 'left',
+    spotColor : false,
+    minSpotColor : false,
+    maxSpotColor : false,
+    lineWidth : 2
+  };
+
+  var sumOfPauses = 0;
+  for ( var i = 0; i < gCPausesTrend.length; i++) {
+    sumOfPauses += gCPausesTrend[i];
+  }
+
+  $('#gcPauses').sparkline(gCPausesTrend, sparklineOptions);
+  $('#currentGCPauses').html(sumOfPauses);
+};
+
+/**
+ * function used for getting the response of Cluster ThroughputWrites widget and
+ * wired them with HTML representing tags.
+ */
+var getClusterDiskThroughputBack = function(data) {
+
+  var throughputReads = data.throughputReads;
+  var throughputWrites = data.throughputWrites;
+
+  var readsSum = 0;
+  for ( var i = 0; i < throughputReads.length; i++) {
+    readsSum += throughputReads[i];
+  }
+
+  var avgThroughputReads = 0;
+  if (throughputReads.length > 0) {
+    avgThroughputReads = readsSum / throughputReads.length;
+  }
+
+  var writesSum = 0;
+  for ( var i = 0; i < throughputWrites.length; i++) {
+    writesSum += throughputWrites[i];
+  }
+
+  var avgThroughputWrites = 0;
+  if (throughputWrites.length > 0) {
+    avgThroughputWrites = writesSum / throughputWrites.length;
+  }
+
+  var sparklineOptions = {
+    width : '230px',
+    height : '72px',
+    lineColor : '#FAB948',
+    lineWidth : 2,
+    fillColor : false,
+    spotRadius : 3,
+    spotColor : false,
+    minSpotColor : false,
+    maxSpotColor : false,
+    highlightSpotColor : false,
+    composite : false
+  };
+
+  // Reads trends
+  $('#diskReadsThroughputTrend').sparkline(throughputReads, sparklineOptions);
+  $('#diskReadsThroughput').html(applyNotApplicableCheck(avgThroughputReads.toFixed(2)));
+
+  // Writes trends
+  sparklineOptions.lineColor = '#2e84bb';
+  $('#diskWritesThroughputTrend').sparkline(throughputWrites, sparklineOptions);
+  $('#diskWritesThroughput').html(applyNotApplicableCheck(avgThroughputWrites.toFixed(2)));
+};
+
+/**
+ * function used for getting the response of Member Clients widget and wired
+ * them with HTML representing tags.
+ */
+var getMemberClientsBack = function(data) {
+  $('#memberClientsList').jqGrid('clearGridData');
+  var clients = data.memberClients;
+  if (clients.length > 0) {
+    $('#memberClientsWidget').show();
+    for ( var i = 0; i < clients.length; i++) {
+      var clientData = clients[i];
+      $('#memberClientsList').jqGrid('addRowData', i + 1, clientData);
+    }
+
+    var gridUserData = jQuery("#memberClientsList").getGridParam('userData');
+
+    // Apply sort order ans sort columns on updated jqgrid data
+    jQuery("#memberClientsList").jqGrid('setGridParam', {
+      sortname : gridUserData.sortColName,
+      sortorder : gridUserData.sortOrder
+    });
+    // Reload jqgrid
+    jQuery("#memberClientsList").trigger("reloadGrid");
+
+  } else {
+    $('#memberClientsWidget').hide();
+  }
+};
+
+/**
+ * function used for getting the response of Member Basic Details widget and wired
+ * them with HTML representing tags.
+ */
+var getMemberDetailsBack = function(data) {
+
+  // check if data for member is available or not
+  if (data.errorOnMember != undefined && data.errorOnMember != null
+      && $.trim(data.errorOnMember) != "") {
+
+    // Display error message
+    var message = data.errorOnMember;
+    message += "<div class=\"clear\"></div>"
+               + "<a onclick=\"openClusterDetail();\" href=\"#.\" >" 
+               + "Go To Cluster View</a>";
+    $('#connectionErrorMsgDiv').html(message);
+    $('#connectionStatusDiv').show();
+    return;
+  }
+
+  $('#userName').html(data.userName);
+  $('#clusterNameLink').html(data.clusterName);
+  $('#memberName').html(data.name);
+  $('#memberName').prop('title', data.name);
+  $('#memberRegionsCount').html(data.regionsCount);
+  $('#loadAverage').html(applyNotApplicableCheck(data.loadAverage));
+  $('#sockets').html(applyNotApplicableCheck(data.sockets));
+  $('#threads').html(data.threads);
+
+  // off heap free size
+  var offHeapFreeSize = convertBytesToMBorGB(data.offHeapFreeSize);
+  $('#offHeapFreeSize').html(offHeapFreeSize[0]+" "+offHeapFreeSize[1]);
+
+  // off heap used size
+  var offHeapUsedSize = convertBytesToMBorGB(data.offHeapUsedSize);
+  $('#offHeapUsedSize').html(offHeapUsedSize[0]+" "+offHeapUsedSize[1]);
+
+  $('#numClients').html(data.numClients);
+  
+  // setting member status according to notification alert
+  $('#memberStatus').html(data.status);
+  if (data.status == "Severe") { // Severes
+    if ($("#memberStatusIcon").hasClass("normalStatus"))
+      $("#memberStatusIcon").removeClass("normalStatus");
+    if ($("#memberStatusIcon").hasClass("errorStatus"))
+      $("#memberStatusIcon").removeClass("errorStatus");
+    if ($("#memberStatusIcon").hasClass("warningStatus"))
+      $("#memberStatusIcon").removeClass("warningStatus");
+
+    $('#memberStatus').html("Severe");
+    $("#memberStatusIcon").addClass("severeStatus");
+
+  } else if (data.status == "Error") { // Error
+
+    if ($("#memberStatusIcon").hasClass("normalStatus")) {
+      $("#memberStatusIcon").removeClass("normalStatus");
+    }
+    if ($("#memberStatusIcon").hasClass("warningStatus")) {
+      $("#memberStatusIcon").removeClass("warningStatus");
+    }
+    $("#memberStatusIcon").addClass("errorStatus");
+    $('#memberStatus').html("Error");
+  } else if (data.status == "Warning") { // Warning
+
+    if ($("#memberStatusIcon").hasClass("normalStatus")) {
+      $("#memberStatusIcon").removeClass("normalStatus");
+    }
+    if ($("#memberStatusIcon").hasClass("errorStatus")) {
+      $("#memberStatusIcon").removeClass("errorStatus");
+    }
+    if ($("#memberStatusIcon").hasClass("severeStatus")) {
+      $("#memberStatusIcon").removeClass("severeStatus");
+    }
+    $('#memberStatus').html("Warning");
+    $("#memberStatusIcon").addClass("warningStatus");
+  } else { // Normal
+
+    if ($("#memberStatusIcon").hasClass("severeStatus"))
+      $("#memberStatusIcon").removeClass("severeStatus");
+    if ($("#memberStatusIcon").hasClass("errorStatus"))
+      $("#memberStatusIcon").removeClass("errorStatus");
+    if ($("#memberStatusIcon").hasClass("warningStatus"))
+      $("#memberStatusIcon").removeClass("warningStatus");
+    $('#memberStatus').html("Normal");
+    $("#memberStatusIcon").addClass("normalStatus");
+  }
+  
+};
+
+/**
+ * function used for getting the response of Member KeyStatistics widget and
+ * wired them with HTML representing tags.
+ */
+var getMemberKeyStatisticsBack = function(data) {
+  // sparkline graph options
+  var sparklineOptions = {
+    width : '300px',
+    height : '20px',
+    lineColor : '#00CCFF',
+    fillColor : false,
+    spotColor : false,
+    minSpotColor : false,
+    maxSpotColor : false
+  };
+
+  // cpu usage
+  var sumCPUUsage = 0;
+  var cpuUsageTrend = data.cpuUsageTrend;
+
+  for ( var i = 0; i < cpuUsageTrend.length; i++) {
+    sumCPUUsage += cpuUsageTrend[i];
+  }
+
+  var avgCPUUsage = 0;
+  if (cpuUsageTrend.length > 0) {
+    avgCPUUsage = sumCPUUsage / cpuUsageTrend.length;
+  }
+
+  $('#memberCPUUsageValue').html(avgCPUUsage.toFixed(2));
+  $('#memberCPUUsageSparkLine').sparkline(data.cpuUsageTrend, sparklineOptions);
+
+  // gets per sec
+  var readPerSecTrend = data.readPerSecTrend;
+  var sumReads = 0;
+  for ( var i = 0; i < readPerSecTrend.length; i++) {
+    sumReads += readPerSecTrend[i];
+  }
+
+  var avgReads = 0;
+  if (readPerSecTrend.length > 0) {
+    avgReads = sumReads / readPerSecTrend.length;
+  }
+
+  $('#memberGetsPerSecValue').html(applyNotApplicableCheck(avgReads.toFixed(2)));
+  $('#memberGetsPerSecSparkLine').sparkline(data.readPerSecTrend,
+      sparklineOptions);
+
+  // puts per sec
+  var writePerSecTrend = data.writePerSecTrend;
+  var sumWrites = 0;
+  for ( var i = 0; i < writePerSecTrend.length; i++) {
+    sumWrites += writePerSecTrend[i];
+  }
+
+  var avgWrites = 0;
+  if (writePerSecTrend.length > 0) {
+    avgWrites = sumWrites / writePerSecTrend.length;
+  }
+
+  $('#memberPutsPerSecValue').html(applyNotApplicableCheck(avgWrites.toFixed(2)));
+  $('#memberPutsPerSecSparkLineBar').sparkline(data.writePerSecTrend,
+      sparklineOptions);
+};
+
+/**
+ * function used for getting the response of Member GCPauses widget and wired
+ * them with HTML representing tags.
+ */
+var getMemberGCPausesBack = function(data) {
+
+  gcPausesTrend = data.gcPausesTrend;
+
+  var sparklineOptions = {
+    width : '230px',
+    height : '72px',
+    lineColor : '#FAB948',
+    fillColor : false,
+    spotRadius : 2.5,
+    labelPosition : 'left',
+    spotColor : false,
+    minSpotColor : false,
+    maxSpotColor : false,
+    lineWidth : 2
+  };
+
+  var sumOfPauses = 0;
+  for ( var i = 0; i < gcPausesTrend.length; i++) {
+    sumOfPauses += gcPausesTrend[i];
+  }
+
+  $('#memberGCPauses').sparkline(gcPausesTrend, sparklineOptions);
+  $('#memberGcPausesAvg').html(sumOfPauses);
+};
+
+/**
+ * function used for getting the response of Member HeapUsage widget and wired
+ * them with HTML representing tags.
+ */
+var getMemberHeapUsageBack = function(data) {
+  var heapUsageTrend = [];
+  heapUsageTrend = data.heapUsageTrend;
+  var sumMemory = 0;
+  for ( var i = 0; i < heapUsageTrend.length; i++) {
+    sumMemory += heapUsageTrend[i];
+  }
+
+  var avgMemory = 0;
+  if (heapUsageTrend.length > 0) {
+    avgMemory = sumMemory / heapUsageTrend.length;
+  }
+
+  var sparklineOptions = {
+    width : '230px',
+    height : '72px',
+    lineColor : '#FAB948',
+    fillColor : false,
+    spotRadius : 2.5,
+    labelPosition : 'left',
+    spotColor : false,
+    minSpotColor : false,
+    maxSpotColor : false,
+    lineWidth : 2
+  };
+
+  $('#memberHeapUsage').sparkline(heapUsageTrend, sparklineOptions);
+  // set current value
+  if (avgMemory > 1024) {
+    var heapUsageGB = (avgMemory / 1024).toFixed(2);
+    $('#memberHeapUsageAvg').html(
+        heapUsageGB + ' <span class="font-size23 paddingL5">GB</span>');
+
+  } else {
+    $('#memberHeapUsageAvg')
+        .html(
+            applyNotApplicableCheck(avgMemory.toFixed(2))
+                + ' <span class="font-size23 paddingL5">MB</span>');
+  }
+};
+
+/**
+ * function used for getting the response of Member TroughputWrites widget and
+ * wired them with HTML representing tags.
+ */
+var getMemberDiskThroughputBack = function(data) {
+  var throughputReadsTrend = data.throughputReadsTrend;
+  var throughputWritesTrend = data.throughputWritesTrend;
+
+  var readsSum = 0;
+  for ( var i = 0; i < throughputReadsTrend.length; i++) {
+    readsSum += throughputReadsTrend[i];
+  }
+
+  var avgThroughputReads = 0;
+  if (throughputReadsTrend.length > 0) {
+    avgThroughputReads = readsSum / throughputReadsTrend.length;
+  }
+
+  var writesSum = 0;
+  for ( var i = 0; i < throughputWritesTrend.length; i++) {
+    writesSum += throughputWritesTrend[i];
+  }
+
+  var avgThroughputWrites = 0;
+  if (throughputWritesTrend.length > 0) {
+    avgThroughputWrites = writesSum / throughputWritesTrend.length;
+  }
+
+  var sparklineOptions = {
+    width : '230px',
+    height : '72px',
+    lineColor : '#FAB948',
+    lineWidth : 2,
+    fillColor : false,
+    spotRadius : 3,
+    spotColor : false,
+    minSpotColor : false,
+    maxSpotColor : false,
+    highlightSpotColor : false,
+    composite : false
+  };
+
+  // Reads trends
+  // sparklineOptions.lineColor = '#87b025';
+  $('#diskReadsThroughputTrend').sparkline(throughputReadsTrend,
+      sparklineOptions);
+  $('#diskReadsThroughput').html(applyNotApplicableCheck(avgThroughputReads.toFixed(2)));
+
+  // Writes trends
+  sparklineOptions.lineColor = '#2e84bb';
+  $('#diskWritesThroughputTrend').sparkline(throughputWritesTrend,
+      sparklineOptions);
+  $('#diskWritesThroughput').html(applyNotApplicableCheck(avgThroughputWrites.toFixed(2)));
+
+};
+
+/**
+ * function used for getting the response of Member GatewayHub widget and wired
+ * them with HTML representing tags.
+ */
+var getMemberGatewayHubBack = function(data) {
+
+  var gatewayDetails = data;
+
+  if ((!data.isGatewayReceiver) && (!data.isGatewaySender)) {
+    // hide widget
+    $('#MemberGatewayHubWidget').hide();
+    return;
+  } else {
+    // show widget
+    $('#MemberGatewayHubWidget').show();
+  }
+
+  if (data.isGatewayReceiver) {
+    if (data.listeningPort != undefined && data.listeningPort != "") {
+      $('#receiverListeningPort').html(data.listeningPort);
+    } else {
+      $('#receiverListeningPort').html('-');
+    }
+
+    if (data.linkTroughput != undefined) {
+      $('#receiverLinkThroughput').html(data.linkTroughput.toFixed(1));
+    } else {
+      $('#receiverLinkThroughput').html('-');
+    }
+
+    if (data.avgBatchLatency != undefined ) {
+      $('#receiverAvgBatchLatency').html(
+          data.avgBatchLatency
+              + ' <span class="font-size13 paddingL5">ms</span>');
+    } else {
+      $('#receiverAvgBatchLatency').html('-');
+    }
+  } else {
+    $('#receiverListeningPort').html('-');
+    $('#receiverLinkThroughput').html('-');
+    $('#receiverAvgBatchLatency').html('-');
+  }
+
+  if (data.isGatewaySender) {
+
+    var endPoints = gatewayDetails.gatewaySenders;
+    var htmlListEndPoints = "";
+
+    endPoints = endPoints.sort(sortedArray('id'));
+
+    for ( var i = 0; i < endPoints.length; i++) {
+      htmlListEndPoints += '<div>'
+          + '<span class="pointDetailsPaddingMember pointC1" title="'
+          + endPoints[i].id + '">' + endPoints[i].id + '</span>'
+          + '<span class="pointDetailsPaddingMember pointC2" title="'
+          + endPoints[i].queueSize + '">' + endPoints[i].queueSize + '</span>';
+      if (endPoints[i].status == true) {
+        htmlListEndPoints += '<span class="pointDetailsPaddingMember pointC3" title="Running"><img src="images/status-up.png"></span>';
+      } else if (endPoints[i].status == false) {
+        htmlListEndPoints += '<span class="pointDetailsPaddingMember pointC3" title="Not Running"><img src="images/status-down.png"></span>';
+      }
+      htmlListEndPoints += '</div>';
+    }
+    $('#gatewaySendersList').html(htmlListEndPoints);
+    if(endPoints.length == 0){
+      $('#idGatewaySenderMoreDetailsLink').hide();
+    }
+
+    var regionList = gatewayDetails.regionsInvolved;
+    var htmlListRegions = "";
+    for ( var i = 0; i < regionList.length; i++) {
+      htmlListRegions += '<div> <span class="pointDetailsPaddingMember pointC1-2">'
+          + regionList[i].name
+          + '</span><span class="pointDetailsPaddingMember pointC3"></div>';
+    }
+    $('#regionInvolvedList').html(htmlListRegions);
+    
+    // initialize for the popup
+    gatewaysenderEndpoints = gatewayDetails.gatewaySenders;
+
+    $('.pointGridData').jScrollPane();
+    $('#idGatewaySenderMoreDetailsLink').show();
+  } else {
+    $('#idGatewaySenderMoreDetailsLink').hide();
+  }
+};
+
+/**
+ * function used for getting the response of Member Asynch Event Queues widget and wired
+ * them with HTML representing tags.
+ */
+var getMemberAsynchEventQueuesBack = function(data) {
+
+  if (!data.isAsyncEventQueuesPresent) {
+    // hide widget
+    $('#MemberAsynchEventQueuesWidget').hide();
+    return;
+  } else {
+    // show widget
+    $('#MemberAsynchEventQueuesWidget').show();
+  }
+
+  asyncEventQueueData = data.asyncEventQueues;
+  asyncEventQueueData = asyncEventQueueData.sort(sortedArray('id'));
+  if (asyncEventQueueData.length > 0){
+      var htmlListQueues = "";
+    
+      for ( var i = 0; i < asyncEventQueueData.length; i++) {
+        htmlListQueues += '<div>'
+            + '<span class="pointDetailsPaddingMember pointC1" title="'
+            + asyncEventQueueData[i].id + '">' + asyncEventQueueData[i].id + '</span>'
+            + '<span class="pointDetailsPaddingMember pointC2" title="'
+            + asyncEventQueueData[i].queueSize + '">' + asyncEventQueueData[i].queueSize + '</span>';
+
+        if (asyncEventQueueData[i].primary == true) {
+          htmlListQueues += '<span class="pointDetailsPaddingMember pointC3" title="Primary">Primary</span>';
+        } else if (asyncEventQueueData[i].primary == false) {
+          htmlListQueues += '<span class="pointDetailsPaddingMember pointC3" title="Not Primary">Secondary</span>';
+        }
+        
+        htmlListQueues += '</div>';
+      }
+      
+      $('#asynchList').html(htmlListQueues);
+      $('.pointGridData').jScrollPane();
+      $('#idAsynchMoreDetailsLink').show();
+  } else {
+    $('#idAsynchMoreDetailsLink').hide();
+  }
+};
+
+var getClearAllAlertsBack = function(data) {
+  numTotalSeverAlerts = 0;
+  numTotalErrorAlerts = 0;
+  numTotalWarningAlerts = 0;
+
+  severAlerts.splice(0, severAlerts.length);
+  errorAlerts.splice(0, errorAlerts.length);
+  warningAlerts.splice(0, warningAlerts.length);
+
+  document.getElementById("severeList").innerHTML = "";
+  document.getElementById("severeTotalCount").innerHTML = "";
+  document.getElementById("severeTotalCount").innerHTML = "0";
+
+  document.getElementById("errorList").innerHTML = "";
+  document.getElementById("errorTotalCount").innerHTML = "";
+  document.getElementById("errorTotalCount").innerHTML = "0";
+
+  document.getElementById("warningList").innerHTML = "";
+  document.getElementById("warningTotalCount").innerHTML = "";
+  document.getElementById("warningTotalCount").innerHTML = "0";
+
+  document.getElementById("allAlertList").innerHTML = "";
+  document.getElementById("allAlertCount").innerHTML = "";
+  document.getElementById("allAlertCount").innerHTML = "0";
+
+  // Hide Load More
+  $('#containerLoadMoreAlertsLink').hide();
+
+  // update dashboard stats
+  displayClusterStatus();
+
+  if (!(document.getElementById("memberStatusIcon") == null)) {
+    $('#memberStatus').html("Normal");
+    $("#memberStatusIcon").addClass("normalStatus");
+
+    if ($("#memberStatusIcon").hasClass("severeStatus"))
+      $("#memberStatusIcon").removeClass("severeStatus");
+    if ($("#memberStatusIcon").hasClass("errorStatus"))
+      $("#memberStatusIcon").removeClass("errorStatus");
+    if ($("#memberStatusIcon").hasClass("warningStatus"))
+      $("#memberStatusIcon").removeClass("warningStatus");
+  }
+  $("#allAlertScrollPane").addClass("hide-scroll-pane");
+};
+
+function getSystemAlertsBack(data) {
+  if (data.connectedFlag) {
+    $('#connectionStatusDiv').hide();
+  } else {
+    $('#connectionStatusDiv').show();
+    $('#connectionErrorMsgDiv').html(data.connectedErrorMsg);
+  }
+
+  $('#pageNumber').val(data.pageNumber);
+
+  // Update global alerts variables
+  severAlerts = new Array();
+  if(undefined != data.systemAlerts.severe){
+    severAlerts = data.systemAlerts.severe;
+  }
+
+  errorAlerts = new Array();
+  if(undefined != data.systemAlerts.errors){
+    errorAlerts = data.systemAlerts.errors;
+  }
+
+  warningAlerts = new Array();
+  if(undefined != data.systemAlerts.warnings){
+    warningAlerts = data.systemAlerts.warnings;
+  }
+
+  infoAlerts = new Array();
+  if(undefined != data.systemAlerts.info){
+    infoAlerts = data.systemAlerts.info;
+  }
+  
+  // Apply filter if text criteria is already specified by user on ui
+  applyFilterOnNotificationsList(currentActiveNotificationTab);
+  
+};
+
+/**
+ * function used for getting the response of Cluster R Graph widget and wired
+ * them with HTML representing tags.
+ */
+var getClusterMembersRGraphBack = function(data) {
+  // if member count is < 50 then make R-Graph as default view
+  if ("" == flagActiveTab && data.memberCount <= 50) {
+    openViewPanel('member', 'default','rgraph');
+  } else if ("" == flagActiveTab && data.memberCount > 50
+      && data.memberCount <= 100) { 
+    // if member count is > 50 and <=100 then make Tree map as default view
+    openViewPanel('member', 'default','treemap');
+  } else if ("" == flagActiveTab && data.memberCount > 100) { // if member
+    // count is > 100 then make grid as default view
+    openViewPanel('member', 'default','grid');
+  }
+
+  if (flagActiveTab == "MEM_R_GRAPH_DEF") // if
+  {
+    clusteRGraph.loadJSON(data.clustor);
+    clusteRGraph.compute('end');
+    if (vMode != 8)
+      refreshNodeAccAlerts();
+    clusteRGraph.refresh();
+  }
+};
+
+var getClusterMembersBack = function(data) {
+
+  gblClusterMembers = data.members;
+
+  memberCount = data.members.length;
+
+  if (flagActiveTab == "MEM_TREE_MAP_DEF") {
+    updateClusterMembersTreeMapDefault(data);
+  } else if (flagActiveTab == "MEM_TREE_MAP_SG") {
+    updateClusterMembersTreeMapSG(data);
+  } else if (flagActiveTab == "MEM_TREE_MAP_RZ") {
+    updateClusterMembersTreeMapRZ(data);
+  } else if (flagActiveTab == "MEM_GRID_DEF") {
+    updateClusterMembersGridDefault(data);
+  } else if (flagActiveTab == "MEM_GRID_SG") {
+    updateClusterMembersGridSG(data);
+  } else if (flagActiveTab == "MEM_GRID_RZ") {
+    updateClusterMembersGridRZ(data);
+  } else {
+    // Do Nothing
+  }
+};
+
+/**
+ * function used for getting the response of Cluster Member Default Tree Map 
+ * widget and wired them with HTML representing tags.
+ */
+var updateClusterMembersTreeMapDefault = function(data) {
+  var members = data.members;
+
+  var json = buildDefaultMembersTreeMapData(members);
+
+  clusterMemberTreeMap.loadJSON(json);
+  clusterMemberTreeMap.refresh();
+};
+
+/**
+ * function used for getting the response of Cluster Member Default Tree Map 
+ * widget and wired them with HTML representing tags.
+ */
+var updateClusterMembersTreeMapSG = function(data) {
+  var members = data.members;
+
+  var json = buildSGMembersTreeMapData(members);
+
+  clusterSGMemberTreeMap.loadJSON(json);
+  clusterSGMemberTreeMap.refresh();
+};
+
+/**
+ * function used for getting the response of Cluster Member Default Tree Map 
+ * widget and wired them with HTML representing tags.
+ */
+var updateClusterMembersTreeMapRZ = function(data) {
+  var members = data.members;
+
+  var json = buildRZMembersTreeMapData(members);
+
+  clusterRZMemberTreeMap.loadJSON(json);
+  clusterRZMemberTreeMap.refresh();
+};
+
+/**
+ * function used for getting the response of Cluster Member Default Tree Map 
+ * widget and wired them with HTML representing tags.
+ */
+var updateClusterRegionsTreeMapDefault = function(data) {
+  var regions = data.regions;
+
+  var json = buildRegionsTreeMapData(regions);
+
+  clusterRegionsTreeMap.loadJSON(json);
+  clusterRegionsTreeMap.refresh();
+};
+
+var updateClusterMembersGridDefault = function(data) {
+  var members = data.members;
+
+  memberCount = members.length;
+
+  $('#memberList').jqGrid('clearGridData');
+
+  for ( var i = 0; i < members.length; i++) {
+    var memberData = members[i];
+    $('#memberList').jqGrid('addRowData',
+        memberData.memberId + "&" + memberData.name, memberData);
+  }
+
+  var gridUserData = jQuery("#memberList").getGridParam('userData');
+
+  // Apply sort order ans sort columns on updated jqgrid data
+  jQuery("#memberList").jqGrid('setGridParam', {
+    sortname : gridUserData.sortColName,
+    sortorder : gridUserData.sortOrder
+  });
+  // Reload jqgrid
+  jQuery("#memberList").trigger("reloadGrid");
+
+  // apply scroll if grid container block is not minimized
+  if ($("#LargeBlock_1").css("display") != "none") {
+    $('.ui-jqgrid-bdiv').jScrollPane();
+  }
+};
+
+var updateClusterMembersGridSG = function(data) {
+  var members = buildSGMembersGridData(data.members);
+
+  $('#memberListSG').jqGrid('clearGridData');
+
+  for ( var i = 0; i < members.length; i++) {
+    var memberData = members[i];
+    $('#memberListSG').jqGrid('addRowData',
+        memberData.memberId + "&" + memberData.name, memberData);
+  }
+
+  var gridUserData = jQuery("#memberListSG").getGridParam('userData');
+
+  // Apply sort order ans sort columns on updated jqgrid data
+  jQuery("#memberListSG").jqGrid('setGridParam', {
+    sortname : gridUserData.sortColName,
+    sortorder : gridUserData.sortOrder
+  });
+  // Reload jqgrid
+  jQuery("#memberListSG").trigger("reloadGrid");
+
+  // apply scroll if grid container block is not minimized
+  if ($("#LargeBlock_1").css("display") != "none") {
+    $('.ui-jqgrid-bdiv').jScrollPane();
+  }
+};
+
+var updateClusterMembersGridRZ = function(data) {
+  var members = buildRZMembersGridData(data.members);
+
+  $('#memberListRZ').jqGrid('clearGridData');
+
+  for ( var i = 0; i < members.length; i++) {
+    var memberData = members[i];
+    $('#memberListRZ').jqGrid('addRowData',
+        memberData.memberId + "&" + memberData.name, memberData);
+  }
+
+  var gridUserData = jQuery("#memberListRZ").getGridParam('userData');
+
+  // Apply sort order ans sort columns on updated jqgrid data
+  jQuery("#memberListRZ").jqGrid('setGridParam', {
+    sortname : gridUserData.sortColName,
+    sortorder : gridUserData.sortOrder
+  });
+  // Reload jqgrid
+  jQuery("#memberListRZ").trigger("reloadGrid");
+
+  // apply scroll if grid container block is not minimized
+  if ($("#LargeBlock_1").css("display") != "none") {
+    $('.ui-jqgrid-bdiv').jScrollPane();
+  }
+};
+
+var updateClusterRegionsGridDefault = function(data) {
+  var regions = data.regions;
+
+  $('#regionsList').jqGrid('clearGridData');
+
+  for ( var i = 0; i < regions.length; i++) {
+    var regionData = regions[i];
+    $('#regionsList').jqGrid('addRowData',
+        regionData.id + "&" + regionData.name, regionData);
+  }
+
+  var gridUserData = jQuery("#regionsList").getGridParam('userData');
+
+  // Apply sort order ans sort columns on updated jqgrid data
+  jQuery("#regionsList").jqGrid('setGridParam', {
+    sortname : gridUserData.sortColName,
+    sortorder : gridUserData.sortOrder
+  });
+  // Reload jqgrid
+  jQuery("#regionsList").trigger("reloadGrid");
+
+  // apply scroll if grid container block is not minimized
+  if ($("#LargeBlock_1").css("display") != "none") {
+    $('.ui-jqgrid-bdiv').jScrollPane();
+  }
+};
+
+// function used for applying filter of cluster regions in data view screen
+var applyFilterOnClusterRegions = function() {
+  // console.log("applyFilterOnClusterRegions called");
+  var searchKeyword = extractFilterTextFrom("filterClusterRegionsBox");
+
+  if (searchKeyword != "") {
+    var filteredClusterRegions = new Array();
+    for ( var i = 0; i < clusterDataViewRegions.length; i++) {
+      // filtered list
+      if (clusterDataViewRegions[i].name.toLowerCase().indexOf(searchKeyword) !== -1) {
+        filteredClusterRegions.push(clusterDataViewRegions[i]);
+      }
+    }
+    updateDataViewDetails(filteredClusterRegions);
+  } else {
+    updateDataViewDetails(clusterDataViewRegions);
+  }
+};
+
+// update the cluster regions grid and treemap view on data view page
+function updateDataViewDetails(clusterRegions) {
+
+  $('#regionList').jqGrid('clearGridData');
+  jQuery("#regionList").trigger("reloadGrid");
+
+  // variable to store value of total of entry counts of all regions
+  var totalOfEntryCounts = 0;
+  // flag to determine if all regions are having entry count = 0
+  var flagSetEntryCountsToZero = false;
+
+  // Calculate the total of all regions entry counts
+  for ( var i = 0; i < clusterRegions.length; i++) {
+    totalOfEntryCounts += clusterRegions[i].entryCount;
+  }
+
+  // If totalOfEntryCounts is zero and at least one region is present
+  // then set flagSetEntryCountsToZero to avoid displaying circles
+  // in treemap as all valid regions are zero area regions and also display
+  // all regions with evenly placement of blocks
+  if (totalOfEntryCounts == 0 && clusterRegions.length > 0) {
+    flagSetEntryCountsToZero = true;
+  }
+
+  var childerensVal = [];
+  if (clusterRegions.length > 0) {
+
+    if (selectedDataViewTM == "") {
+      selectedDataViewTM = clusterRegions[0].regionPath;
+    } else {
+      // check selected region exists or not
+      // if selected region does not exists, set first region as selected
+      // region
+      var selectedRegionExists = false;
+      for ( var i = 0; i < clusterRegions.length; i++) {
+        if (selectedDataViewTM == clusterRegions[i].regionPath) {
+          selectedRegionExists = true;
+        }
+      }
+      if (!selectedRegionExists) {
+        selectedDataViewTM = clusterRegions[0].regionPath;
+      }
+    }
+
+    for ( var i = 0; i < clusterRegions.length; i++) {
+
+      $('#regionList').jqGrid('addRowData', i + 1, clusterRegions[i]);
+      var entryCount = clusterRegions[i].systemRegionEntryCount;
+      // If flagSetEntryCountsToZero is true then set entry count to
+      // display all
+      // regions with evenly placement of blocks
+      if (flagSetEntryCountsToZero && entryCount == 0) {
+        entryCount = 1;
+      }
+      var color = colorCodeForRegions;
+      if(clusterRegions[i].systemRegionEntryCount == 0){
+        color = colorCodeForZeroEntryCountRegions;
+      }
+
+      if (selectedDataViewTM == clusterRegions[i].regionPath)
+        color = colorCodeForSelectedRegion;
+
+      var wanEnabled = clusterRegions[i].wanEnabled;
+      var wanEnabledxt = "";
+      if (wanEnabled == true)
+        wanEnabledxt = "WAN Enabled";
+      // if (entryCount == 0)
+      // entryCount = 1;
+      var dataVal = {
+        "name" : clusterRegions[i].name,
+        "id" : clusterRegions[i].regionPath,
+        "$color" : color,
+        "$area" : entryCount,
+        "systemRegionEntryCount" : clusterRegions[i].systemRegionEntryCount,
+        "type" : clusterRegions[i].type,
+        "regionPath" : clusterRegions[i].regionPath,
+        "entrySize" : clusterRegions[i].entrySize,
+        "memberCount" : clusterRegions[i].memberCount,
+        "writes" : clusterRegions[i].putsRate,
+        "reads" : clusterRegions[i].getsRate,
+        "emptyNodes" : clusterRegions[i].emptyNodes,
+        "persistence" : clusterRegions[i].persistence,
+        "isEnableOffHeapMemory" : clusterRegions[i].isEnableOffHeapMemory,
+        "compressionCodec" : clusterRegions[i].compressionCodec,
+        "isHDFSWriteOnly" : clusterRegions[i].isHDFSWriteOnly,
+        "memberNames" : clusterRegions[i].memberNames,
+        "memoryWritesTrend" : clusterRegions[i].memoryWritesTrend,
+        "memoryReadsTrend" : clusterRegions[i].memoryReadsTrend,
+        "diskWritesTrend" : clusterRegions[i].diskWritesTrend,
+        "diskReadsTrend" : clusterRegions[i].diskReadsTrend,
+        "memoryUsage" : clusterRegions[i].memoryUsage,
+        "dataUsage" : clusterRegions[i].dataUsage,
+        "totalDataUsage" : clusterRegions[i].totalDataUsage,
+        "totalMemory" : clusterRegions[i].totalMemory
+      };
+      var childrenVal = {
+        "children" : [],
+        "data" : dataVal,
+        "id" : clusterRegions[i].regionPath,
+        "name" : wanEnabledxt
+      };
+      if (selectedDataViewTM == clusterRegions[i].regionPath)
+        displayRegionDetails(dataVal);
+      childerensVal[i] = childrenVal;
+    }
+
+  } else {
+    var dataVal = {
+      "name" : "",
+      "id" : "",
+      "$color" : "",
+      "$area" : 0,
+      "systemRegionEntryCount" : "",
+      "type" : "",
+      "regionPath" : "",
+      "entrySize" : "",
+      "memberCount" : "",
+      "writes" : "",
+      "reads" : "",
+      "emptyNodes" : "",
+      "persistence" : "",
+      "isEnableOffHeapMemory" : "",
+      "compressionCodec" : "",
+      "isHDFSWriteOnly" : "",
+      "memberNames" : "",
+      "memoryWritesTrend" : "",
+      "memoryReadsTrend" : "",
+      "diskWritesTrend" : "",
+      "diskReadsTrend" : "",
+      "memoryUsage" : 0,
+      "dataUsage" : "",
+      "totalDataUsage" : "",
+      "totalMemory" : 0
+    };
+    displayRegionDetails(dataVal);
+  }
+
+  var json = {
+    "children" : childerensVal,
+    "data" : {},
+    "id" : "root",
+    "name" : "Regions"
+  };
+
+  var gridUserData = jQuery("#regionList").getGridParam('userData');
+
+  // Apply sort order ans sort columns on updated jqgrid data
+  jQuery("#regionList").jqGrid('setGridParam', {
+    sortname : gridUserData.sortColName,
+    sortorder : gridUserData.sortOrder
+  });
+  // Reload jqgrid
+  jQuery("#regionList").trigger("reloadGrid");
+  $('.ui-jqgrid-bdiv').jScrollPane();
+
+  // Load treemap
+  dataViewRegionTM.loadJSON(json);
+  dataViewRegionTM.refresh();
+
+}
+
+// Callback function for ClusterRegion serice
+var getClusterRegionsBack = function(data) {
+  
+  if (flagActiveTab == "DATA_TREE_MAP_DEF") {
+    updateClusterRegionsTreeMapDefault(data);
+  } else if (flagActiveTab == "DATA_GRID_DEF") {
+    updateClusterRegionsGridDefault(data);
+  }
+  
+};
+
+//Callback function for ClusterRegion serice
+var getClusterRegionBack = function(data) {
+
+  $('#userName').html(data.userName);
+  document.getElementById("clusterName").innerHTML = data.clusterName;
+  clusterDataViewRegions = data.region;
+  // aaply filter and update data view details
+  applyFilterOnClusterRegions();
+};
+
+// function used for applying filter of member names in data view screen
+var applyFilterOnMembersList = function() {
+  var searchKeyword = extractFilterTextFrom('filterMembersListBox');
+  var htmlMemberListWithFilter = '';
+  if (searchKeyword != "") {
+    for ( var i = 0; i < memberList.length; i++) {
+      // filtered list
+      if (memberList[i].name.toLowerCase().indexOf(searchKeyword) !== -1) {
+        var divId = memberList[i].id + "&" + memberList[i].name;
+        htmlMemberListWithFilter += "<div class='pointDetailsPadding' title='"
+            + memberList[i].name + "' id='" + divId
+            + "' onClick = 'javascript:openMemberDetails(this.id)'>"
+            + memberList[i].name + "</div>";
+      }
+    }
+  } else {
+    for ( var i = 0; i < memberList.length; i++) {
+      // non filtered list
+      var divId = memberList[i].id + "&" + memberList[i].name;
+      htmlMemberListWithFilter += "<div class='pointDetailsPadding' title='"
+          + memberList[i].name + "' id='" + divId
+          + "' onClick = 'javascript:openMemberDetails(this.id)'>"
+          + memberList[i].name + "</div>";
+    }
+  }
+  document.getElementById("memberNames").innerHTML = htmlMemberListWithFilter;
+  $('.regionMembersSearchBlock').jScrollPane();
+};
+
+// function used for redirecting to member details page on click of any member
+// name from
+// the member names list.
+var openMemberDetails = function(divId) {
+  var member = divId.split("&");
+  location.href = 'MemberDetails.html?member=' + member[0] + '&memberName='
+      + member[1];
+};
+
+// function used for applying filter of member regions in member details page
+var applyFilterOnMemberRegions = function() {
+  // console.log("applyFilterOnMemberRegions called");
+  var searchKeyword = extractFilterTextFrom("filterMemberRegionsBox");
+
+  if (searchKeyword != "") {
+    var filteredMemberRegions = new Array();
+    for ( var i = 0; i < memberRegions.length; i++) {
+      // filtered list
+      if (memberRegions[i].name.toLowerCase().indexOf(searchKeyword) !== -1) {
+        filteredMemberRegions.push(memberRegions[i]);
+      }
+    }
+    updateMemberRegionViewDetails(filteredMemberRegions);
+  } else {
+    updateMemberRegionViewDetails(memberRegions);
+  }
+};
+
+// update the member regions grid and treemap view on members details page
+function updateMemberRegionViewDetails(regions) {
+
+  $('#memberRegionsList').jqGrid('clearGridData');
+  jQuery("#memberRegionsList").trigger("reloadGrid");
+
+  var childerensVal = [];
+
+  // variable to store value of total of entry counts of all regions
+  var totalOfEntryCounts = 0;
+  // flag to determine if all regions are having entry count = 0
+  var flagSetEntryCountsToZero = false;
+
+  // Calculate the total of all regions entry counts
+  for ( var i = 0; i < regions.length; i++) {
+    totalOfEntryCounts += regions[i].entryCount;
+  }
+
+  // If totalOfEntryCounts is zero and at least one region is present
+  // then set flagSetEntryCountsToZero to avoid displaying circles
+  // in treemap as all valid regions are zero area regions and also display
+  // all regions with evenly placement of blocks
+  if (totalOfEntryCounts == 0 && regions.length > 0) {
+    flagSetEntryCountsToZero = true;
+  }
+
+  for ( var i = 0; i < regions.length; i++) {
+    var regionData = regions[i];
+    $('#memberRegionsList').jqGrid('addRowData', i + 1, regionData);
+    var name = "";
+    name = regions[i].name;
+    var regionFullPath = regions[i].fullPath;
+    var entryCount = regions[i].entryCount;
+    // If flagSetEntryCountsToZero is true then set entry count to display
+    // all
+    // regions with evenly placement of blocks
+    if (flagSetEntryCountsToZero && entryCount == 0) {
+      entryCount = 1;
+    }
+    // if(entryCount == 0)
+    // entryCount = 1;
+
+    var colorCode = colorCodeForRegions;
+    if(regions[i].entryCount == 0){
+      colorCode = colorCodeForZeroEntryCountRegions;
+    }
+
+    var dataVal = {
+      "name" : name,
+      "id" : regionFullPath,
+      "$color" : colorCode,
+      "$area" : entryCount,
+      "regionType" : regions[i].type,
+      "entryCount" : regions[i].entryCount,
+      "entrySize" : regions[i].entrySize
+    };
+    var childrenVal = {
+      "children" : [],
+      "data" : dataVal,
+      "name" : name,
+      "id" : regionFullPath
+    };
+    childerensVal[i] = childrenVal;
+    
+  }
+
+  var gridUserData = jQuery("#memberRegionsList").getGridParam('userData');
+
+  // Apply sort order ans sort columns on updated jqgrid data
+  jQuery("#memberRegionsList").jqGrid('setGridParam', {
+    sortname : gridUserData.sortColName,
+    sortorder : gridUserData.sortOrder
+  });
+  
+  var gridHeight = 250;
+  // Adjust height of div and grid dynamically based on no of rows
+  if(regions.length > 10) {
+    gridHeight = 450;
+  }
+
+  jQuery("#memberRegionsList").jqGrid( 'setGridParam', {height : gridHeight} );
+  $("#gridBlocks_Panel").css('height', gridHeight + 54);
+
+  var gviewMemberRegionsListBDiv = $('#gview_memberRegionsList').children('.ui-jqgrid-bdiv');
+  gviewMemberRegionsListBDiv.css('height',gridHeight);
+
+  // Reload jqgrid
+  jQuery("#memberRegionsList").trigger("reloadGrid");
+  // apply scroll if grid container block is not minimized
+  if ($("#LargeBlock_1").css("display") != "none") {
+    $('.ui-jqgrid-bdiv').jScrollPane();
+  }
+
+  if (regions.length > 0) {
+    var json = {
+      "children" : childerensVal,
+      "data" : {},
+      "name" : "Regions",
+      "id" : "Root"
+    };
+
+    memberRegionsTreeMap.loadJSON(json);
+    memberRegionsTreeMap.refresh();
+  } else {
+    var json = {
+      "children" : [],
+      "data" : {},
+      "name" : "Regions",
+      "id" : "Root"
+    };
+    memberRegionsTreeMap.loadJSON(json);
+    memberRegionsTreeMap.refresh();
+  }
+
+}
+
+// Callback function for MemberRegions serice
+var getMemberRegionsBack = function(data) {
+
+  $('#memberRegionsList').jqGrid('clearGridData');
+
+  memberRegions = data.memberRegions;
+  // apply filter and update region details
+  applyFilterOnMemberRegions();
+};
+
+/**
+ * function used for getting the response of Members Name List widget and wired
+ * them with HTML representing tags.
+ */
+var getMembersListBack = function(data) {
+
+  // Update global list of cluster members
+  membersList = data.clusterMembers;
+
+  // update tabname
+  $('#clusterNameLink').html(data.clusterName);
+
+  // add filter functionality
+  if (!isMemberListFilterHandlerBound) {
+    $('#filterMembersBox').bind("keyup", applyFilterOnMembersListDropDown);
+    isMemberListFilterHandlerBound = true;
+  }
+
+  // apply filter criteria if exist
+  $('#filterMembersBox').keyup();
+
+};
+
+var getQueryStatisticsBack = function(data) {
+  
+  // each refresh display jmx connectiopn status
+  if (data.connectedFlag) {
+    $('#connectionStatusDiv').hide();
+  } else {
+    $('#connectionStatusDiv').show();
+    $('#connectionErrorMsgDiv').html(data.connectedErrorMsg);
+  }
+  
+  //load the data
+  $('#queryStatisticsList').jqGrid('clearGridData');
+  if (data.queriesList.length > 0) {
+
+    // load all queries
+    grid.jqGrid("getGridParam").data = data.queriesList;
+    
+    var gridUserData = jQuery("#queryStatisticsList").getGridParam('userData');
+    // Apply sort order ans sort columns on updated jqgrid data
+    jQuery("#queryStatisticsList").jqGrid('setGridParam', {
+      sortname : gridUserData.sortColName,
+      sortorder : gridUserData.sortOrder
+    });
+    
+    // Reload jqgrid
+    jQuery("#queryStatisticsList").trigger("reloadGrid");
+    var queryStatisticsList = $('#gview_queryStatisticsList');
+    var queryStatisticsListChild = queryStatisticsList
+        .children('.ui-jqgrid-bdiv');
+    var api = queryStatisticsListChild.data('jsp');
+    api.reinitialise();
+    
+    $('#queryStatisticsList').toggle();
+    refreshTheGrid($('#queryStatisticsList'));
+  }
+};
+
+//Callback function for ClusterSelectedRegion serice
+var getClusterSelectedRegionBack = function(data) {
+
+  $('#userName').html(data.userName);
+  $('#clusterName').html(data.clusterName);
+  $('#idClusterName').html(data.clusterName);
+  
+  var regionName = data.selectedRegion.name;
+  if(regionName){
+    // display details of regions
+    displaySelectedRegionDetails(regionName, data);
+  } else {
+    // check if region error is there and display it
+    if (data.selectedRegion.errorOnRegion != undefined && data.selectedRegion.errorOnRegion != null
+        && $.trim(data.selectedRegion.errorOnRegion) != "") {
+
+      // Display error message
+      var message = data.selectedRegion.errorOnRegion;
+      message += "<div class=\"clear\"></div>"
+                 + "<a onclick=\"openClusterDetail();\" href=\"#.\" >" 
+                 + "Go To Cluster View</a>";
+      $('#connectionErrorMsgDiv').html(message);
+      $('#connectionStatusDiv').show();
+      return;
+    }
+  }
+};
+
+var getClusterSelectedRegionsMemberBack = function(data) {
+  
+  regionMembers = data.selectedRegionsMembers;
+  applyFilterOnRegionMembers();
+
+};
+
+function updateClusterSelectedRegionMembers(regionOnMembers){
+  
+  //check if region error is there and display it
+  if (regionOnMembers.errorOnRegion != undefined 
+      && regionOnMembers.errorOnRegion != null
+      && $.trim(regionOnMembers.errorOnRegion) != "") {
+
+    // Display error message
+    var message = regionOnMembers.errorOnRegion;
+    message += "<div class=\"clear\"></div>"
+               + "<a onclick=\"openClusterDetail();\" href=\"#.\" >" 
+               + "Go To Cluster View</a>";
+    $('#connectionErrorMsgDiv').html(message);
+    $('#connectionStatusDiv').show();
+    return;
+  }
+
+  if(regionOnMembers){
+
+    // build members tree map
+    globalJson = buildMemberTreeMap(regionOnMembers);
+      
+    regionMemberTreeMap.loadJSON(globalJson);
+    regionMemberTreeMap.refresh();
+
+    updateSelectedRegionMembersGrid(regionOnMembers);
+
+    memberOnRegionJson = regionOnMembers;
+
+    if(tipObj != null){
+        var key = '';
+        var spo = {
+            width : '110px',
+            height : '50px',
+            lineColor : '#FAB948',
+            fillColor : false,
+            spotRadius : 2.5,
+            labelPosition : 'left',
+            spotColor : false,
+            minSpotColor : false,
+            maxSpotColor : false,
+            lineWidth : 2
+        };
+        
+        var memberName = tipObj.find('#idMemberName').html();
+        key = 'memberOnRegionJson.' + memberName + '.entryCount';
+        tipObj.find('#regionMemberEntryCount').html(eval(key));
+        key = 'memberOnRegionJson.' + memberName + '.entrySize';
+        tipObj.find('#regionMemberEntrySize').html(eval(key));
+        key = 'memberOnRegionJson.' + memberName + '.accessor';
+        tipObj.find('#regionMemberAccessor').html(eval(key));
+        
+        key = 'memberOnRegionJson.' + memberName + '.memoryReadsTrend';
+        tipObj.find('#memberMemoryReadsTrend').sparkline(eval(key),spo);
+        key = 'memberOnRegionJson.' + memberName + '.diskReadsTrend';
+        tipObj.find('#memberDiskReadsTrend').sparkline(eval(key),spo);
+        
+        // Writes trends
+        spo.lineColor = '#2e84bb';
+        key = 'memberOnRegionJson.' + memberName + '.diskWritesTrend';
+        tipObj.find('#memberDiskWritesTrend').sparkline(eval(key),spo);
+        key = 'memberOnRegionJson.' + memberName + '.memoryWritesTrend';
+        tipObj.find('#memberMemoryWritesTrend').sparkline(eval(key),spo);
+        
+        $.sparkline_display_visible(); 
+    }
+  }
+};
+
+function refreshTheGrid(gridDiv) {
+  setTimeout(function(){gridDiv.toggle();}, 500);
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1922937f/pulse/src/main/webapp/scripts/pulsescript/PulseFunctions.js
----------------------------------------------------------------------
diff --git a/pulse/src/main/webapp/scripts/pulsescript/PulseFunctions.js b/pulse/src/main/webapp/scripts/pulsescript/PulseFunctions.js
new file mode 100644
index 0000000..1ca170b
--- /dev/null
+++ b/pulse/src/main/webapp/scripts/pulsescript/PulseFunctions.js
@@ -0,0 +1,216 @@
+/*=========================================================================
+ * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * one or more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+/**
+ * @name PulseFunctions.js
+ * @author Ashutosh Zambare.
+ * @version 1.0
+ *
+ */
+
+/**
+  @class A thin JavaScript client that accesses the pulse services. It provides an abstraction layer to communicate with the system and returns json object as a result.
+
+  @constructor
+
+ */
+function PulseFunctions() {
+
+}
+
+/**
+ @description get pulse version function
+ @param responseBack Indicates which function to be called when a response is received. 
+ @example
+    var pulseVersionBack = function(r, jsonResponse) { ... // handle response };
+    pf.pulseVersion(pulseVersionBack, "param1", "param2");
+*/
+PulseFunctions.prototype.pulseVersion = function(responseBack) {
+    var po = new Object();
+    po.traceNo = UUIDv4();
+    ajaxPost("pulse/pulseVersion", po, responseBack);
+};
+
+PulseFunctions.prototype.CluserAlertNotificationFunc = function (funcName, postData) {
+  var qp = new Object();
+  qp.pageNumber = $('#pageNumber').val();
+  postData["SystemAlerts"] = qp;
+};
+
+PulseFunctions.prototype.ClusterKeyStatisticsFunc = function (funcName, postData) {
+  var qp = new Object();
+  //postData[funcName] = qp;
+  postData["ClusterKeyStatistics"] = qp;
+};
+
+PulseFunctions.prototype.ClusterMembersFunc = function (funcName, postData) {
+  var qp = new Object();
+  postData["ClusterMembers"] = qp;
+};
+
+PulseFunctions.prototype.ClusterJVMPAusesFunc = function (funcName, postData) {
+  var qp = new Object();
+  postData["ClusterJVMPauses"] = qp;
+};
+
+PulseFunctions.prototype.ClusterWanInformationFunc = function (funcName, postData) {
+  var qp = new Object();
+  postData["ClusterWANInfo"] = qp;
+};
+
+PulseFunctions.prototype.ClusterMemoryUsageFunc = function (funcName, postData) {
+  var qp = new Object();
+  postData["ClusterMemoryUsage"] = qp;
+};
+
+PulseFunctions.prototype.ClusterDiskThroughputFunc = function (funcName, postData) {
+  var qp = new Object();
+  postData["ClusterDiskThroughput"] = qp;
+};
+
+PulseFunctions.prototype.PulseVersionDetailsFunc = function (funcName, postData) {
+  var qp = new Object();
+  postData["PulseVersion"] = qp;
+
+};
+
+PulseFunctions.prototype.CluserBasicDetailsFunc = function (funcName, postData) {
+  var qp = new Object();
+  postData["ClusterDetails"] = qp;
+};
+
+
+PulseFunctions.prototype.ClusterMembersRGraphFunc = function (funcName, postData) {
+  var qp = new Object();
+  postData["ClusterMembersRGraph"] = qp;
+};
+
+PulseFunctions.prototype.ClusterRegionFunc = function (funcName, postData) {
+  var qp = new Object();
+  postData["ClusterRegion"] = qp;
+};
+
+PulseFunctions.prototype.ClusterRegionsFunc = function (funcName, postData) {
+  var qp = new Object();
+  postData["ClusterRegions"] = qp;
+};
+
+PulseFunctions.prototype.ClearAllAlertsFunc = function (funcName, postData) {
+  var qp = new Object();
+  qp.alertType = -1;
+  postData["ClearAllAlerts"] = qp;
+};
+
+PulseFunctions.prototype.MemberGatewayHubFunc = function (funcName, postData) {
+  getRequestParams();
+  var qp = new Object();
+  qp.memberId = memberId;
+  qp.memberName = memberName;
+  postData["MemberGatewayHub"] = qp;
+};
+
+PulseFunctions.prototype.MemberAsynchEventQueuesFunc = function (funcName, postData) {
+  getRequestParams();
+  var qp = new Object();
+  qp.memberId = memberId;
+  qp.memberName = memberName;
+  postData["MemberAsynchEventQueues"] = qp;
+};
+
+PulseFunctions.prototype.MemberDiskThroughputFunc = function (funcName, postData) {
+  getRequestParams();
+  var qp = new Object();
+  qp.memberId = memberId;
+  qp.memberName = memberName;
+  postData["MemberDiskThroughput"] = qp;
+};
+
+PulseFunctions.prototype.MemberHeapUsageFunc = function (funcName, postData) {
+  getRequestParams();
+  var qp = new Object();
+  qp.memberId = memberId;
+  qp.memberName = memberName;
+  postData["MemberHeapUsage"] = qp;
+};
+
+PulseFunctions.prototype.MemberClientsFunc = function (funcName, postData) {
+  getRequestParams();
+  var qp = new Object();
+  qp.memberId = memberId;
+  qp.memberName = memberName;
+  postData["MemberClients"] = qp;
+};
+
+PulseFunctions.prototype.MemberRegionSummaryFunc = function (funcName, postData) {
+  getRequestParams();
+  var qp = new Object();
+  qp.memberId = memberId;
+  qp.memberName = memberName;
+  postData["MemberRegions"] = qp;
+};
+
+PulseFunctions.prototype.MemberGCPausesFunc = function (funcName, postData) {
+  getRequestParams();
+  var qp = new Object();
+  qp.memberId = memberId;
+  qp.memberName = memberName;
+  postData["MemberGCPauses"] = qp;
+};
+
+PulseFunctions.prototype.MemberKeyStatisticsFunc = function (funcName, postData) {
+  getRequestParams();
+  var qp = new Object();
+  qp.memberId = memberId;
+  qp.memberName = memberName;
+  postData["MemberKeyStatistics"] = qp;
+};
+
+PulseFunctions.prototype.MembersListFunc = function (funcName, postData) {
+  getRequestParams();
+  var qp = new Object();
+  postData["MembersList"] = qp;
+};
+
+PulseFunctions.prototype.MemberDetailsFunc = function (funcName, postData) {
+  getRequestParams();
+  var qp = new Object();
+  qp.memberId = memberId;
+  qp.memberName = memberName;
+  postData["MemberDetails"] = qp;
+};
+
+PulseFunctions.prototype.QueryStatisticsFunc = function (funcName, postData) {
+  getRequestParams();
+  var qp = new Object();
+  // later send filter, page etc params here
+  //qp.memberId = memberId;
+  //qp.memberName = memberName;
+  postData["QueryStatistics"] = qp;
+};
+
+PulseFunctions.prototype.ClusterSelectedRegionFunc = function (funcName, postData) {
+  getRequestParams();
+  var qp = new Object();
+  qp.regionFullPath = regionFullPath;
+  postData["ClusterSelectedRegion"] = qp;
+};
+
+PulseFunctions.prototype.ClusterSelectedRegionsMemberFunc = function (funcName, postData) {
+  getRequestParams();
+  var qp = new Object();
+  qp.regionFullPath = regionFullPath;
+  postData["ClusterSelectedRegionsMember"] = qp;
+};
+
+/*
+PulseFunctions.prototype.ClusterMembersFunc = function (funcName, postData) {
+  var qp = new Object();
+  qp.param1 = "7777";
+  qp.param2 = 1;
+  postData["ClusterMembers"] = qp;
+};*/