From 5c7060fa98303e06a8dcce4cc2e5cc31cb3b0ccb Mon Sep 17 00:00:00 2001
From: cramakri <cramakri>
Date: Mon, 4 Feb 2013 21:21:26 +0000
Subject: [PATCH] CCS-30 SP-488 : Improved feedback in the ipad debug webapp.

SVN: 28288
---
 .../1/as/webapps/ipad-debug/html/webapp.js    | 47 +++++++++----------
 .../1/as/webapps/ipad-debug/html/webapp.js    | 47 +++++++++----------
 2 files changed, 46 insertions(+), 48 deletions(-)

diff --git a/openbis-ipad/ipad-example-data/ipad-ui-ylab/1/as/webapps/ipad-debug/html/webapp.js b/openbis-ipad/ipad-example-data/ipad-ui-ylab/1/as/webapps/ipad-debug/html/webapp.js
index 07b20d2cebf..1c87a13bdec 100644
--- a/openbis-ipad/ipad-example-data/ipad-ui-ylab/1/as/webapps/ipad-debug/html/webapp.js
+++ b/openbis-ipad/ipad-example-data/ipad-ui-ylab/1/as/webapps/ipad-debug/html/webapp.js
@@ -115,9 +115,11 @@ function displayResults(node, data)
 {
 	if (data.error) {
 		console.log(data.error);
-		root.append("p").text("Could not retrieve data.");
+		node.append("p").text("Could not retrieve data.");
 		return;
 	}
+
+	node.selectAll("p").data([]).exit().remove();
 	
 	// This will show the object in the log -- helpful for debugging
 	// console.log(data.result);
@@ -131,31 +133,25 @@ function displayResults(node, data)
 	showTableData(table);
 }
 
-function displayClientPreferences(data)
-{
-	displayResults(clientPrefs, data)
-}
-
-
-function displayNavigation(data)
-{
-	displayResults(navigation, data)
-}
-
-function displayRoot(data)
+/**
+ * Display that the call is in progress
+ */
+function displayCallInProgress(node)
 {
-	displayResults(root, data)
+	// Display the rows in a table
+	var table = node.selectAll("table").data([]);
+	// Code under enter is run if there is no HTML element for a data element
+	table.enter().append("table").attr("class", "table");
+	table.exit().remove();
+	node.append("p").text("Getting data...");
 }
 
-function displayDrill(data)
-{
-	displayResults(drill, data)
-}
 
-function displayDetail(data)
-{
-	displayResults(detail, data)
-}
+function displayClientPreferences(data) { displayResults(clientPrefs, data) }
+function displayNavigation(data) { displayResults(navigation, data) }
+function displayRoot(data) { displayResults(root, data) }
+function displayDrill(data) { displayResults(drill, data) }
+function displayDetail(data) { displayResults(detail, data) }
 
 /**
  * Request the client perferences and show them in the page.
@@ -163,7 +159,7 @@ function displayDetail(data)
 function listClientPreferences()
 {
 	var parameters = {requestKey : 'CLIENT_PREFS'};
-
+	displayCallInProgress(clientPrefs);
 	openbisServer.createReportFromAggregationService("DSS1", "ipad-read-service-v1", parameters, displayClientPreferences);
 }
 
@@ -173,7 +169,7 @@ function listClientPreferences()
 function listNavigationEntities()
 {
 	var parameters = {requestKey : 'NAVIGATION'};
-
+	displayCallInProgress(navigation);
 	openbisServer.createReportFromAggregationService("DSS1", "ipad-read-service-v1", parameters, displayNavigation);
 }
 
@@ -185,6 +181,7 @@ function listRootLevelEntities(permId, refcon)
 	var entities = [{"PERM_ID" : permId, "REFCON" : refcon}];
 	var parameters = {requestKey : 'ROOT', entities: entities};
 
+	displayCallInProgress(root);
 	openbisServer.createReportFromAggregationService("DSS1", "ipad-read-service-v1", parameters, displayRoot);
 }
 
@@ -193,6 +190,7 @@ function drillOnEntity(permId, refcon)
 	var entities = [{"PERM_ID" : permId, "REFCON" : refcon}];
 	var parameters = {requestKey : 'DRILL', entities: entities};
 
+	displayCallInProgress(drill);
 	openbisServer.createReportFromAggregationService("DSS1", "ipad-read-service-v1", parameters, displayDrill);
 }
 
@@ -201,6 +199,7 @@ function detailsForEntity(permId, refcon)
 	var entities = [{"PERM_ID" : permId, "REFCON" : refcon}];
 	var parameters = {requestKey : 'DETAIL', entities: entities};
 
+	displayCallInProgress(detail);
 	openbisServer.createReportFromAggregationService("DSS1", "ipad-read-service-v1", parameters, displayDetail);
 }
 
diff --git a/openbis-ipad/ipad-example-data/ipad-ui/1/as/webapps/ipad-debug/html/webapp.js b/openbis-ipad/ipad-example-data/ipad-ui/1/as/webapps/ipad-debug/html/webapp.js
index 07b20d2cebf..1c87a13bdec 100644
--- a/openbis-ipad/ipad-example-data/ipad-ui/1/as/webapps/ipad-debug/html/webapp.js
+++ b/openbis-ipad/ipad-example-data/ipad-ui/1/as/webapps/ipad-debug/html/webapp.js
@@ -115,9 +115,11 @@ function displayResults(node, data)
 {
 	if (data.error) {
 		console.log(data.error);
-		root.append("p").text("Could not retrieve data.");
+		node.append("p").text("Could not retrieve data.");
 		return;
 	}
+
+	node.selectAll("p").data([]).exit().remove();
 	
 	// This will show the object in the log -- helpful for debugging
 	// console.log(data.result);
@@ -131,31 +133,25 @@ function displayResults(node, data)
 	showTableData(table);
 }
 
-function displayClientPreferences(data)
-{
-	displayResults(clientPrefs, data)
-}
-
-
-function displayNavigation(data)
-{
-	displayResults(navigation, data)
-}
-
-function displayRoot(data)
+/**
+ * Display that the call is in progress
+ */
+function displayCallInProgress(node)
 {
-	displayResults(root, data)
+	// Display the rows in a table
+	var table = node.selectAll("table").data([]);
+	// Code under enter is run if there is no HTML element for a data element
+	table.enter().append("table").attr("class", "table");
+	table.exit().remove();
+	node.append("p").text("Getting data...");
 }
 
-function displayDrill(data)
-{
-	displayResults(drill, data)
-}
 
-function displayDetail(data)
-{
-	displayResults(detail, data)
-}
+function displayClientPreferences(data) { displayResults(clientPrefs, data) }
+function displayNavigation(data) { displayResults(navigation, data) }
+function displayRoot(data) { displayResults(root, data) }
+function displayDrill(data) { displayResults(drill, data) }
+function displayDetail(data) { displayResults(detail, data) }
 
 /**
  * Request the client perferences and show them in the page.
@@ -163,7 +159,7 @@ function displayDetail(data)
 function listClientPreferences()
 {
 	var parameters = {requestKey : 'CLIENT_PREFS'};
-
+	displayCallInProgress(clientPrefs);
 	openbisServer.createReportFromAggregationService("DSS1", "ipad-read-service-v1", parameters, displayClientPreferences);
 }
 
@@ -173,7 +169,7 @@ function listClientPreferences()
 function listNavigationEntities()
 {
 	var parameters = {requestKey : 'NAVIGATION'};
-
+	displayCallInProgress(navigation);
 	openbisServer.createReportFromAggregationService("DSS1", "ipad-read-service-v1", parameters, displayNavigation);
 }
 
@@ -185,6 +181,7 @@ function listRootLevelEntities(permId, refcon)
 	var entities = [{"PERM_ID" : permId, "REFCON" : refcon}];
 	var parameters = {requestKey : 'ROOT', entities: entities};
 
+	displayCallInProgress(root);
 	openbisServer.createReportFromAggregationService("DSS1", "ipad-read-service-v1", parameters, displayRoot);
 }
 
@@ -193,6 +190,7 @@ function drillOnEntity(permId, refcon)
 	var entities = [{"PERM_ID" : permId, "REFCON" : refcon}];
 	var parameters = {requestKey : 'DRILL', entities: entities};
 
+	displayCallInProgress(drill);
 	openbisServer.createReportFromAggregationService("DSS1", "ipad-read-service-v1", parameters, displayDrill);
 }
 
@@ -201,6 +199,7 @@ function detailsForEntity(permId, refcon)
 	var entities = [{"PERM_ID" : permId, "REFCON" : refcon}];
 	var parameters = {requestKey : 'DETAIL', entities: entities};
 
+	displayCallInProgress(detail);
 	openbisServer.createReportFromAggregationService("DSS1", "ipad-read-service-v1", parameters, displayDetail);
 }
 
-- 
GitLab