cmda-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From xingwei...@apache.org
Subject [9/9] incubator-cmda git commit: Update Frontend: Add shortest path and search in knowledge graph; Modify service register page; Add FRQs page
Date Sat, 21 Nov 2015 00:35:25 GMT
Update Frontend: Add shortest path and search in knowledge graph; Modify service register page; Add FRQs page


Project: http://git-wip-us.apache.org/repos/asf/incubator-cmda/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cmda/commit/391a7a7f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cmda/tree/391a7a7f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cmda/diff/391a7a7f

Branch: refs/heads/master
Commit: 391a7a7f150170616435b475669007f68c534bac
Parents: dd5cfa5
Author: mingqi830 <mqi@andrew.cmu.edu>
Authored: Fri Nov 20 16:34:58 2015 -0800
Committer: mingqi830 <mqi@andrew.cmu.edu>
Committed: Fri Nov 20 16:34:58 2015 -0800

----------------------------------------------------------------------
 ApacheCMDA-Frontend/app/.DS_Store               |  Bin 0 -> 6148 bytes
 ApacheCMDA_Frontend_1.0/app/.DS_Store           |  Bin 0 -> 6148 bytes
 .../app/controllers/AboutController.java        |    4 +
 .../app/controllers/AnalyticsController.java    |  107 +-
 .../controllers/ClimateServiceController.java   |   88 +-
 .../app/controllers/DatasetController.java      |   10 +-
 .../app/utils/Constants.java                    |   15 +-
 .../views/frequentlyAskedQuestions.scala.html   |   71 +
 .../app/views/header.scala.html                 |    6 +-
 .../app/views/knowledgeGraph.scala.html         |  179 +-
 .../app/views/recommendationSummary.scala.html  |  371 +-
 .../views/registerAClimateService.scala.html    |   71 +-
 .../app/views/serviceDetail.scala.html          |   43 +-
 .../app/views/serviceLog.scala.html             |   13 +-
 ApacheCMDA_Frontend_1.0/conf/routes             |    7 +-
 .../public/html/js/.svn/all-wcprops             |   41 +
 .../public/html/js/.svn/entries                 |  232 +
 .../js/.svn/text-base/jquery-1.4.4.js.svn-base  | 7179 ++++++++++++++++++
 .../.svn/text-base/jquery-1.4.4.min.js.svn-base |  167 +
 .../.svn/text-base/jquery-1.6.4.min.js.svn-base |    4 +
 .../.svn/text-base/jquery.flot.min.js.svn-base  |    1 +
 .../html/js/.svn/text-base/json2.js.svn-base    |  478 ++
 .../html/js/.svn/text-base/xmisc.js.svn-base    |  320 +
 .../public/html/js/jquery-1.4.4.js              | 7179 ++++++++++++++++++
 .../public/html/js/jquery-1.4.4.min.js          |  167 +
 .../public/html/js/jquery-1.6.4.min.js          |    4 +
 .../public/html/js/jquery.flot.min.js           |    1 +
 ApacheCMDA_Frontend_1.0/public/html/js/json2.js |  478 ++
 ApacheCMDA_Frontend_1.0/public/html/js/xmisc.js |  320 +
 .../public/html/serviceDiffPlot2Vars.html       |  605 ++
 30 files changed, 17821 insertions(+), 340 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/391a7a7f/ApacheCMDA-Frontend/app/.DS_Store
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Frontend/app/.DS_Store b/ApacheCMDA-Frontend/app/.DS_Store
new file mode 100644
index 0000000..9fdda36
Binary files /dev/null and b/ApacheCMDA-Frontend/app/.DS_Store differ

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/391a7a7f/ApacheCMDA_Frontend_1.0/app/.DS_Store
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Frontend_1.0/app/.DS_Store b/ApacheCMDA_Frontend_1.0/app/.DS_Store
new file mode 100644
index 0000000..b1504a0
Binary files /dev/null and b/ApacheCMDA_Frontend_1.0/app/.DS_Store differ

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/391a7a7f/ApacheCMDA_Frontend_1.0/app/controllers/AboutController.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Frontend_1.0/app/controllers/AboutController.java b/ApacheCMDA_Frontend_1.0/app/controllers/AboutController.java
index abebeb0..476c890 100644
--- a/ApacheCMDA_Frontend_1.0/app/controllers/AboutController.java
+++ b/ApacheCMDA_Frontend_1.0/app/controllers/AboutController.java
@@ -17,5 +17,9 @@ public class AboutController extends Controller {
     public static Result tutorial() {
 		return ok(tutorial.render());
 	}
+    
+    public static Result FAQs() {
+		return ok(frequentlyAskedQuestions.render());
+	}
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/391a7a7f/ApacheCMDA_Frontend_1.0/app/controllers/AnalyticsController.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Frontend_1.0/app/controllers/AnalyticsController.java b/ApacheCMDA_Frontend_1.0/app/controllers/AnalyticsController.java
index fb1c3b1..fe8fa2b 100644
--- a/ApacheCMDA_Frontend_1.0/app/controllers/AnalyticsController.java
+++ b/ApacheCMDA_Frontend_1.0/app/controllers/AnalyticsController.java
@@ -1,5 +1,9 @@
 package controllers;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
 import models.ServiceExecutionLog;
 import play.data.Form;
 import play.libs.Json;
@@ -19,10 +23,10 @@ public class AnalyticsController extends Controller{
 			.form(ServiceExecutionLog.class);
 	
 	
-	public static Result getKnowledgeGraph() {
-		String parameter1 = "User";
-		String parameter2 = "Dataset";
-		String parameter3 = "Service";
+	public static Result getKnowledgeGraph(String param1, String param2, String param3) {
+		String parameter1 = param1;
+		String parameter2 = param2;
+		String parameter3 = param3;
 		JsonNode response = null;
 		ObjectNode jsonData = Json.newObject();
 		try {
@@ -135,38 +139,75 @@ public class AnalyticsController extends Controller{
 		String parameter1 = json.path("param1").asText();
 		String parameter2 = json.path("param2").asText();
 		String groupName = json.path("groupName").asText();
-		String combination = parameter1 + parameter2 + groupName;
+		
+		
+		String startTime = json.path("startTime").asText();
+		String endTime = json.path("endTime").asText();
+		
 		long id = json.path("id").asLong();
-		JsonNode response = null;
+		
 		ObjectNode jsonData = Json.newObject();
+		
+		Date executionStartTime = null, executionEndTime= null;
+		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm");
+		
+		if (!startTime.isEmpty()) {
+			try {
+				executionStartTime = simpleDateFormat.parse(startTime);
+		        jsonData.put("executionStartTime", executionStartTime.getTime());
+			} catch (ParseException e) {
+				System.out.println("Wrong Date Format :" + startTime);
+				return badRequest("Wrong Date Format :" + startTime);
+			}
+		}
+		if (!endTime.isEmpty()) {
+			try {
+				executionEndTime = simpleDateFormat.parse(endTime);
+				jsonData.put("executionEndTime", executionEndTime.getTime());
+			} catch (ParseException e) {
+				System.out.println("Wrong Date Format :" + endTime);
+				return badRequest("Wrong Date Format :" + endTime);
+			}
+		}
+		
+		String combination = parameter1 + parameter2 + groupName;
+		
+		JsonNode response = null;
+		
 		try {
-			switch(combination) {
-			case "UserDatasetuser":
-				response = RESTfulCalls.getAPI(Constants.URL_HOST
-						+ Constants.CMU_BACKEND_PORT + "/analytics/getOneUserWithAllDatasetAndCountByUserId/" + id + "/json");
-				break;
-			case "UserDatasetdataset":
-				response = RESTfulCalls.getAPI(Constants.URL_HOST
-						+ Constants.CMU_BACKEND_PORT + "/analytics/getOneDatasetWithAllUserAndCountByDatasetId/" + id + "/json");
-				break;
-			case "UserServiceuser":
-				response = RESTfulCalls.getAPI(Constants.URL_HOST
-						+ Constants.CMU_BACKEND_PORT + "/analytics/getOneUserWithAllServiceAndCountByUserId/" + id + "/json");
-				break;
-			case "UserServiceservice":
-				response = RESTfulCalls.getAPI(Constants.URL_HOST
-						+ Constants.CMU_BACKEND_PORT + "/analytics/getOneServiceWithAllUserAndCountByServiceId/" + id + "/json");
-				break;
-			case "DatasetServiceservice":
-				response = RESTfulCalls.getAPI(Constants.URL_HOST
-						+ Constants.CMU_BACKEND_PORT + "/analytics/getOneServiceWithAllDatasetAndCountByServiceId/" + id + "/json");
-				break;
-			case "DatasetServicedataset":
-				response = RESTfulCalls.getAPI(Constants.URL_HOST
-						+ Constants.CMU_BACKEND_PORT + "/analytics/getOneDatasetWithAllServiceAndCountByDatasetId/" + id + "/json");
-				break;
-			default:
-				break;
+			jsonData.put("id", id);
+			if(!startTime.isEmpty() || !endTime.isEmpty()) {
+				response = RESTfulCalls.postAPI(Constants.URL_HOST
+							+ Constants.CMU_BACKEND_PORT + "/datasetLog/queryDatasets", jsonData);
+			}else {
+				switch(combination) {
+				case "UserDatasetuser":
+					response = RESTfulCalls.getAPI(Constants.URL_HOST
+							+ Constants.CMU_BACKEND_PORT + "/analytics/getOneUserWithAllDatasetAndCountByUserId/" + id + "/json");
+					break;
+				case "UserDatasetdataset":
+					response = RESTfulCalls.getAPI(Constants.URL_HOST
+							+ Constants.CMU_BACKEND_PORT + "/analytics/getOneDatasetWithAllUserAndCountByDatasetId/" + id + "/json");
+					break;
+				case "UserServiceuser":
+					response = RESTfulCalls.getAPI(Constants.URL_HOST
+							+ Constants.CMU_BACKEND_PORT + "/analytics/getOneUserWithAllServiceAndCountByUserId/" + id + "/json");
+					break;
+				case "UserServiceservice":
+					response = RESTfulCalls.getAPI(Constants.URL_HOST
+							+ Constants.CMU_BACKEND_PORT + "/analytics/getOneServiceWithAllUserAndCountByServiceId/" + id + "/json");
+					break;
+				case "DatasetServiceservice":
+					response = RESTfulCalls.getAPI(Constants.URL_HOST
+							+ Constants.CMU_BACKEND_PORT + "/analytics/getOneServiceWithAllDatasetAndCountByServiceId/" + id + "/json");
+					break;
+				case "DatasetServicedataset":
+					response = RESTfulCalls.getAPI(Constants.URL_HOST
+							+ Constants.CMU_BACKEND_PORT + "/analytics/getOneDatasetWithAllServiceAndCountByDatasetId/" + id + "/json");
+					break;
+				default:
+					break;
+				}
 			}
 
 		} catch (IllegalStateException e) {

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/391a7a7f/ApacheCMDA_Frontend_1.0/app/controllers/ClimateServiceController.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Frontend_1.0/app/controllers/ClimateServiceController.java b/ApacheCMDA_Frontend_1.0/app/controllers/ClimateServiceController.java
index c7ae26a..ddbfde2 100644
--- a/ApacheCMDA_Frontend_1.0/app/controllers/ClimateServiceController.java
+++ b/ApacheCMDA_Frontend_1.0/app/controllers/ClimateServiceController.java
@@ -353,7 +353,14 @@ public class ClimateServiceController extends Controller {
 		return ok(mostPopularServices.render(climateServices));
 	}
 	
-	public static Result recommendationSummary() {
+	public static Result recommendationSummary(String userId) {		
+		
+		List<String> userBasedDataset = new ArrayList<String>();
+		
+		List<String> itemBasedDataset = new ArrayList<String>();
+		
+		List<String> featureBasedDataset = new ArrayList<String>();
+		
 		List<ClimateService> climateServices = new ArrayList<ClimateService>();
 		
 		List<Dataset> dataSetsList = new ArrayList<Dataset>();
@@ -367,17 +374,9 @@ public class ClimateServiceController extends Controller {
 		// if no value is returned or error or is not json array
 		if (usersNode == null || usersNode.has("error")
 				|| !usersNode.isArray()) {
-			return ok(recommendationSummary.render(climateServices, dataSetsList, usersList));
+			return ok(recommendationSummary.render(climateServices, dataSetsList, usersList, userBasedDataset, featureBasedDataset, itemBasedDataset, userId));
 		}
 
-		
-//		JsonNode dataSetsNode = RESTfulCalls.getAPI(Constants.URL_HOST
-//				+ Constants.CMU_BACKEND_PORT
-//				+ Constants.GET_ALL_DATASETS);
-//		
-//		System.out.println("GET API: " + Constants.URL_HOST
-//				+ Constants.CMU_BACKEND_PORT
-//				+ Constants.GET_ALL_DATASETS);
 
 		JsonNode climateServicesNode = RESTfulCalls.getAPI(Constants.URL_HOST
 				+ Constants.CMU_BACKEND_PORT
@@ -386,16 +385,9 @@ public class ClimateServiceController extends Controller {
 		// if no value is returned or error or is not json array
 		if (climateServicesNode == null || climateServicesNode.has("error")
 				|| !climateServicesNode.isArray()) {
-			return ok(recommendationSummary.render(climateServices, dataSetsList, usersList));
+			return ok(recommendationSummary.render(climateServices, dataSetsList, usersList, userBasedDataset, featureBasedDataset, itemBasedDataset, userId));
 		}
 		
-//		// if no value is returned or error or is not json array
-//		if (dataSetsNode == null || dataSetsNode.has("error")
-//				|| !dataSetsNode.isArray()) {
-//			System.out.println("All oneDatasets format has error!");
-//			return ok(recommendationSummary.render(climateServices, dataSetsList));
-//		}
-
 		// parse the json string into object
 		for (int i = 0; i < climateServicesNode.size(); i++) {
 			JsonNode json = climateServicesNode.path(i);
@@ -403,13 +395,6 @@ public class ClimateServiceController extends Controller {
 			climateServices.add(newService);
 		}		
 
-//		// parse the json string into object
-//		for (int i = 0; i < dataSetsNode.size(); i++) {
-//			JsonNode json = dataSetsNode.path(i);
-//			Dataset oneDataset = DatasetController.deserializeJsonToDataSet(json);
-//			dataSetsList.add(oneDataset);
-//		}
-		
 		
 		// parse the json string into object
 		for (int i = 0; i < usersNode.size(); i++) {
@@ -430,7 +415,44 @@ public class ClimateServiceController extends Controller {
 
 		int k = Integer.MAX_VALUE; // Set the first popular K datasets
 		dataSetsList = DatasetController.queryFirstKDatasetsWithoutClimateService("", "", "", "", "", new Date(0), new Date(), k);
-		return ok(recommendationSummary.render(climateServices, dataSetsList, usersList));
+		
+		
+		
+		JsonNode userBased = RESTfulCalls.getAPI(Constants.URL_SERVER
+				+ Constants.URL_FLASK
+				+ Constants.GET_TOP_K_USER_BASED_DATASET1 + userId
+				+ Constants.GET_TOP_K_USER_BASED_DATASET2 + 10);
+		
+		for (int i = 0; i<userBased.size(); i++) {
+			userBasedDataset.add(userBased.path(i).findValue("dataset").toString());
+		}
+		
+		JsonNode itemBased = RESTfulCalls.getAPI(Constants.URL_SERVER
+				+ Constants.URL_FLASK
+				+ Constants.GET_TOP_K_ITEM_BASED_DATASET1 + userId
+				+ Constants.GET_TOP_K_ITEM_BASED_DATASET2 + 10);
+		
+		for (int i = 0; i<itemBased.size(); i++) {
+			itemBasedDataset.add(itemBased.path(i).findValue("dataset").toString());
+		}
+		
+		JsonNode featureBased = RESTfulCalls.getAPI(Constants.URL_SERVER
+				+ Constants.URL_FLASK
+				+ Constants.GET_TOP_K_FEATURE_BASED_DATASET1 + userId
+				+ Constants.GET_TOP_K_FEATURE_BASED_DATASET2 + 10);
+		
+		for (int i = 0; i<featureBased.size(); i++) {
+			featureBasedDataset.add(featureBased.path(i).findValue("dataset").toString());
+		}
+		
+		System.out.println("--------------------------");
+		System.out.println(userId);
+//		JsonNode test = userBased.path(0);
+//		System.out.println(test.findValue("dataset"));
+		System.out.println(userBasedDataset);
+		System.out.println("--------------------------");
+		
+		return ok(recommendationSummary.render(climateServices, dataSetsList, usersList, userBasedDataset, featureBasedDataset, itemBasedDataset, userId));
 	}
 
 	public static Result mostRecentlyUsedClimateServices() {
@@ -470,12 +492,19 @@ public class ClimateServiceController extends Controller {
 					result.getAbsolutePath()));
 			StringBuilder sb = new StringBuilder();
 			line = br.readLine();
-			int count = 0;
-			while (line != null && count < 22) {
+			//int count = 0;
+			String fileNameLine = "<h2 class=\"text-center\">";
+			while (line != null ) {
 				sb.append(line);
 				sb.append("\n");
 				line = br.readLine();
-				count++;
+				
+//				if (line.length() > 23)
+//					System.out.println("pair1" + line.substring(0, 24));
+//					System.out.println("pair2" + fileNameLine);
+				if (line.length()>= 24 && line.substring(0, 24).equals(fileNameLine)) 
+					break;
+				//count++;
 			}
 			br.close();
 		} catch (FileNotFoundException e) {
@@ -487,6 +516,7 @@ public class ClimateServiceController extends Controller {
 		}
 
 		// TEMPOARY SOLUTION : get the fileName from the html page
+		System.out.println("original Name" + line);
 		String tempName = line.substring(24, line.length() - 5);
 		String fileName = "public/html/service"
 				+ tempName.substring(0, 1).toUpperCase()

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/391a7a7f/ApacheCMDA_Frontend_1.0/app/controllers/DatasetController.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Frontend_1.0/app/controllers/DatasetController.java b/ApacheCMDA_Frontend_1.0/app/controllers/DatasetController.java
index 9a0d6dd..d6c29ec 100644
--- a/ApacheCMDA_Frontend_1.0/app/controllers/DatasetController.java
+++ b/ApacheCMDA_Frontend_1.0/app/controllers/DatasetController.java
@@ -123,12 +123,12 @@ public class DatasetController extends Controller {
 			
 
 		} catch (IllegalStateException e) {
-			e.printStackTrace();
-			Application.flashMsg(RESTfulCalls
-					.createResponse(ResponseType.CONVERSIONERROR));
+//			e.printStackTrace();
+//			Application.flashMsg(RESTfulCalls
+//					.createResponse(ResponseType.CONVERSIONERROR));
 		} catch (Exception e) {
-			e.printStackTrace();
-			Application.flashMsg(RESTfulCalls.createResponse(ResponseType.UNKNOWN));
+//			e.printStackTrace();
+//			Application.flashMsg(RESTfulCalls.createResponse(ResponseType.UNKNOWN));
 		}
 
 		List<Dataset> response = queryDataSet(dataSetName, agency, instrument, physicalVariable, gridDimension, dataSetStartTime, dataSetEndTime);

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/391a7a7f/ApacheCMDA_Frontend_1.0/app/utils/Constants.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Frontend_1.0/app/utils/Constants.java b/ApacheCMDA_Frontend_1.0/app/utils/Constants.java
index fba17c7..cf56321 100644
--- a/ApacheCMDA_Frontend_1.0/app/utils/Constants.java
+++ b/ApacheCMDA_Frontend_1.0/app/utils/Constants.java
@@ -3,14 +3,16 @@ package utils;
 public class Constants {
 
 	public static final String URL_HOST = "http://localhost";
-	public static final String URL_SERVER = "http://einstein.sv.cmu.edu";
-	//public static final String URL_SERVER = "http://localhost";
+	//public static final String URL_SERVER = "http://einstein.sv.cmu.edu";
+	public static final String URL_SERVER = "http://localhost";
+
 	
 	// port
 	public static final String JPL_BACKEND_PORT = ":9002";
 	public static final String LOCAL_HOST_PORT = ":9032";
 	public static final String CMU_BACKEND_PORT = ":9035"; 
-
+	public static final String URL_FLASK = ":9040";
+	
 	// API Call format
 	public static final String FORMAT = "json";
 	
@@ -85,4 +87,11 @@ public class Constants {
 	public static final String GET_RELATIONAL_GRAPH = "/analytics/getRelationalKnowledgeGraph/json";
 	public static final String GET_SHORTEST_PATH = "/graphAlgorithm/getShortestPath/source/";
 	
+	//recommendation
+	public static final String GET_TOP_K_USER_BASED_DATASET1 = "/getTopKUserBasedCFRecommendedDatasetByUsername?username=";
+	public static final String GET_TOP_K_USER_BASED_DATASET2 = "&top_num=";
+	public static final String GET_TOP_K_ITEM_BASED_DATASET1 = "/getTopKItemBasedCFRecommendedDatasetByUsername?username=";
+	public static final String GET_TOP_K_ITEM_BASED_DATASET2 = "&top_num=";
+	public static final String GET_TOP_K_FEATURE_BASED_DATASET1 = "/getTopKLDABasedRecommendedDatasetByUsername?username=";
+	public static final String GET_TOP_K_FEATURE_BASED_DATASET2 = "&top_num=";
 }

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/391a7a7f/ApacheCMDA_Frontend_1.0/app/views/frequentlyAskedQuestions.scala.html
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Frontend_1.0/app/views/frequentlyAskedQuestions.scala.html b/ApacheCMDA_Frontend_1.0/app/views/frequentlyAskedQuestions.scala.html
new file mode 100644
index 0000000..59e5e76
--- /dev/null
+++ b/ApacheCMDA_Frontend_1.0/app/views/frequentlyAskedQuestions.scala.html
@@ -0,0 +1,71 @@
+@import helper._
+
+@main("Frequently Requested Queries") {
+
+   <h2>Frequently Requested Queries</h2>
+   <div class="container">
+   <h3>Visualize Relationship in Knowledge Graph</h3>
+   <ul>
+   <li style="margin-bottom: 5px;">
+   <a href='@routes.AnalyticsController.getKnowledgeGraph()'>Visualize relationship between user and dataset, based on service usage</a>
+   </li>
+   <li style="margin-bottom: 5px;">
+   <a href='@routes.AnalyticsController.getKnowledgeGraph("User", "Service", "Dataset")'>Visualize relationship between user and service, based on dataset usage</a>
+   </li>
+   <li style="margin-bottom: 5px;">
+   <a href='@routes.AnalyticsController.getKnowledgeGraph("Dataset", "Service", "User")'>Visualize relationship between dataset and service, based on user</a>
+   </li>
+   <li style="margin-bottom: 5px;">
+   <a href='@routes.AnalyticsController.getKnowledgeGraph("User", "User", "Dataset")'>Visualize relationship between user and user, based on dataset usage</a>
+   </li>
+   <li style="margin-bottom: 5px;">
+   <a href='@routes.AnalyticsController.getKnowledgeGraph("User", "User", "Service")'>Visualize relationship between user and user, based on service usage</a>
+   </li>
+   <li style="margin-bottom: 5px;">
+   <a href='@routes.AnalyticsController.getKnowledgeGraph("Dataset", "Dataset", "Service")'>Visualize relationship between dataset and dataset, based on service usage</a>
+   </li>
+   <li style="margin-bottom: 5px;">
+   <a href='@routes.AnalyticsController.getKnowledgeGraph("Dataset", "Dataset", "User")'>Visualize relationship between dataset and dataset, based on user</a>
+   </li>
+   <li style="margin-bottom: 5px;">
+   <a href='@routes.AnalyticsController.getKnowledgeGraph("Service", "Service", "Dataset")'>Visualize relationship between service and service, based on dataset usage</a>
+   </li>
+   <li style="margin-bottom: 5px;">
+   <a href='@routes.AnalyticsController.getKnowledgeGraph("Service", "Service", "User")'>Visualize relationship between service and service, based on user</a>
+   </li>
+   </ul>
+   
+   <h3>Search in Knowledge Graph</h3>
+   <ul>
+   <li style="margin-bottom: 5px;">
+   <a href='@routes.ClimateServiceController.searchClimateServices()'>Search on service based on features</a>
+   </li>
+   <li style="margin-bottom: 5px;">
+   <a href='@routes.DatasetController.searchDataset()'>Search on dataset based on features</a>
+   </li>
+   <li style="margin-bottom: 5px;">
+   <a href='@routes.ServiceExecutionLogController.searchServiceLog'>Search on service execution log based on criteria</a>
+   </li>
+   <li style="margin-bottom: 5px;">
+   <a href='@routes.AnalyticsController.getKnowledgeGraph()'>Visualize user behavior on dataset within a time range</a>
+   </li>
+   </ul>
+   
+   <h3>Dynamic Statistics</h3>
+   <ul>
+   <li style="margin-bottom: 5px;">
+   <a href='@routes.ClimateServiceController.mostPopularServices()'>Most popular service</a>
+   </li>
+   <li style="margin-bottom: 5px;">
+   <a href='@routes.DatasetController.mostPopularDatasets()'>Most popular dataset</a>
+   </li>
+   <li style="margin-bottom: 5px;">
+   <a href='@routes.UsersController.getAllUsers()'>Most active user</a>
+   </li>
+   <li style="margin-bottom: 5px;">
+   <a href='@routes.ClimateServiceController.recommendationSummary("ochimborazo")'>ML Based Recommendation</a>
+   </li>
+   </ul>
+   
+	</div>
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/391a7a7f/ApacheCMDA_Frontend_1.0/app/views/header.scala.html
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Frontend_1.0/app/views/header.scala.html b/ApacheCMDA_Frontend_1.0/app/views/header.scala.html
index 2d9f2e1..3627eba 100644
--- a/ApacheCMDA_Frontend_1.0/app/views/header.scala.html
+++ b/ApacheCMDA_Frontend_1.0/app/views/header.scala.html
@@ -21,8 +21,7 @@
 					<li class="dropdown">
 						<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="text-danger">Recommendation</span><b class="caret"></b></a>
 						<ul class="dropdown-menu">
-							<li><a href="@routes.ClimateServiceController.recommendationSummary()">Summary</a></li>
-							
+							<li><a href='@routes.ClimateServiceController.recommendationSummary("ochimborazo")'>Summary</a></li>							
 						</ul>				
 					</li>
 					
@@ -58,7 +57,7 @@
 							<li><a href="@routes.ServiceExecutionLogController.getServiceLog">Service Execution Log</a></li>
 							<li><a href="@routes.ServiceExecutionLogController.searchServiceLog">Search Service Log</a></li>
 							<li><a href="@routes.DatasetLogController.getAllDatasetLogs">Dataset Log</a></li>
-							<li><a href="@routes.AnalyticsController.getKnowledgeGraph">Knowledge Graph</a></li>
+							<li><a href="@routes.AnalyticsController.getKnowledgeGraph()">Knowledge Graph</a></li>
 							<li><a href="@routes.AnalyticsController.getRelationalKnowledgeGraph">Relational Knowledge Graph</a></li>
 							<li><a href="@routes.AnalyticsController.getDatasetRecommend">Semantic Dataset Analytics</a></li>
 							<li><a href="@routes.AnalyticsController.getScientistRecommend">User Analytics</a></li>
@@ -86,6 +85,7 @@
 							<li><a href="@routes.Application.home()">Home</a></li>
 							<li><a href="@routes.AboutController.aboutUs()">About Us</a></li>
 							<li><a href="@routes.AboutController.aboutProject()">About project</a></li>
+							<li><a href="@routes.AboutController.FAQs()">FRQs</a></li>
 							<li><a href="@routes.AboutController.tutorial()">Tutorial</a></li>
 						</ul>
 					</li>

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/391a7a7f/ApacheCMDA_Frontend_1.0/app/views/knowledgeGraph.scala.html
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Frontend_1.0/app/views/knowledgeGraph.scala.html b/ApacheCMDA_Frontend_1.0/app/views/knowledgeGraph.scala.html
index 86cef0d..c039be3 100644
--- a/ApacheCMDA_Frontend_1.0/app/views/knowledgeGraph.scala.html
+++ b/ApacheCMDA_Frontend_1.0/app/views/knowledgeGraph.scala.html
@@ -133,6 +133,8 @@
 	    var visAdvancedConfig = 1;
 	    var visBasicConfig = 1;
 	    
+	    document.getElementById("paramCombination1").disabled = true;
+	    
 	    
 	    function getParameters() {
 	    	var temp1 = document.getElementById("paramCombination").value;
@@ -156,6 +158,11 @@
 	        }).done(function(data1) {
 	        	console.log("success");
 	        	jsonString = data1;
+	        	if(p1 == "Dataset" || p2 == "Dataset") {
+		    		$("#setShownName").show();
+		    	}else {
+		    		$("#setShownName").hide();
+		    	}
 	        	draw();
 	        }).fail(function(xhr, textStatus, errorThrown) {
 	        	console.log("error!");
@@ -199,12 +206,11 @@
 	      var test = jsonString;
 	      
 	      //test = JSON.stringify(test);
-	      console.log("test: " + test);
 	      test = JSON.parse(test);
 	      var nodes = test.nodes;
-	      console.log("nodes: " + nodes);
+
 	      var edges = test.edges;
-	      console.log("edges: " + edges); 
+
 		  
 	      nodesDataset = new vis.DataSet(nodes); 
 	      edgesDataset = new vis.DataSet(edges); 
@@ -268,15 +274,15 @@
 	        },
 	        
 	        physics: {    
-	          barnesHut: {
-	        	  centralGravity: 1.95,	              
-	        	  springLength: 195,
-	              springConstant: 0.185,
-	        	  damping: 0.25,
-	              avoidOverlap: 0.5
-   			    },
+   			  hierarchicalRepulsion: {
+   				  springConstant: 0.01,
+   		      	  centralGravity: 1.75,
+   		      	  nodeDistance: 120,
+   		      	  
+   		      },
    			 	maxVelocity: 10,
    			    minVelocity: 0.75,
+   			    solver: "hierarchicalRepulsion",
 	          stabilization: {
 	            enabled:true,
 	            iterations:200,
@@ -347,42 +353,9 @@
 	            data: JSON.stringify(ids),
 	            dataType: "text"
 	        }).done(function(data1) {
-	        	var connectedNodes =  null;
-	        	
-	        	
-	        	console.log(data1);
-	        	data1 = JSON.parse(data1);
-	        	var edges = data1.edges;
-	        	var nodes = data1.nodes;
-	        	
-	        	console.log(nodes[0].label);
-	        	for (var i = 0; i< nodes.length; i++) {	             		
-	        		allNodes[nodes[i].id].color =  'rgba(0,255,0,1)';        		
-	        	}
-	        	for (var i = 0; i< edges.length; i++) {	             		
-	        		allEdges[edges[i].id].color =  'rgba(0,255,0,1)';        		
-	        	}
-	        	
-	        	
-	        	var updateArray = [];
-	    	    for (nodeId in allNodes) {
-	    	      if (allNodes.hasOwnProperty(nodeId)) {
-	    	        updateArray.push(allNodes[nodeId]);
-	    	      }
-	    	    }	    	
-	    	
-	    	    nodesDataset.update(updateArray);    	 
-	    	     
-	    	    updateArray = [];
-	    	    for (edgeId in allEdges) {
-	    	      if (allEdges.hasOwnProperty(edgeId)) {
-	    	        updateArray.push(allEdges[edgeId]);
-	    	      }
-	    	    }
-	    	    
-	    	    edgesDataset.update(updateArray);  
-	    	    
-	        	
+	        	console.log("success");
+	        	jsonString = data1;
+	        	draw();
 	        }).fail(function(xhr, textStatus, errorThrown) {
 	        	console.log("error!");
 	        	console.log(xhr);
@@ -397,7 +370,12 @@
 	    		
 	    		var node1 = params.nodes[0];
 	    		var group = allNodes[node1].group;
+	    		var startTime = "";
+		    	var endTime = "";
+	    		
 	    		var id = null;
+	    		
+	    		console.log("***************" + group)
 	    		switch(group) {
 	    		case "service":
 	    			id = allNodes[node1].serviceId;
@@ -411,17 +389,14 @@
 	    		default:
 	    			break;
 	    		}
-	    		
-	    		console.log("id: " + id);
-	    		console.log("idP: " + node1);
-	    		console.log("p1: " + p1);
-	    		console.log("p2: " + p2);
-	    		
+
 	    		var parameters = {
 		    			param1:p1,
 		    			param2:p2,
 		    			id:id,
-		    			groupName:group
+		    			groupName:group,
+		    			startTime:startTime,
+		    			endTime:endTime
 		    	}
 	    		$.ajax({
 		            url: "/getPartKnowledgeGraph",
@@ -448,17 +423,17 @@
 	    	
 	    	 var group = document.getElementById("paramCombination1").value;
 	    	 var id = document.getElementById("userConfId").value;
-	    		
-	    		console.log("id: " + id);
-	    		console.log("group: " + group);
-	    		console.log("p1: " + p1);
-	    		console.log("p2: " + p2);
+	    	 var startTime = document.getElementById("startTime").value;
+	    	 var endTime = document.getElementById("endTime").value;
+	    	 var choice = $('input[name="customizedChoice"]:checked').val();
 	    		
 	    		var parameters = {
 		    			param1:p1,
 		    			param2:p2,
 		    			id:id,
-		    			groupName:group
+		    			groupName:group,
+		    			startTime:startTime,
+		    			endTime:endTime
 		    	}
 	    		$.ajax({
 		            url: "/getPartKnowledgeGraph",
@@ -468,7 +443,20 @@
 		            dataType: "text"
 		        }).done(function(data1) {
 		        	console.log("success");
-		        	jsonString = data1;
+		        	if(choice === "datasetName") {
+		        		jsonString = data1;
+		        	}else {
+		        		
+		        		data1 = JSON.parse(data1);
+		      	        var nodes = data1.nodes;
+		      	        for(var i=0; i<nodes.length; i++) {
+		      	        	if(nodes[i].group == "dataset") {
+		      	        		var start = nodes[i].label.split(" ")[0].length;
+		      	        		nodes[i].label = nodes[i].label.substring(start+1);
+		      	        	}
+		      	        }
+		        		jsonString = JSON.stringify(data1);
+		        	}
 		        	draw();
 		        }).fail(function(xhr, textStatus, errorThrown) {
 		        	console.log("error!");
@@ -519,7 +507,7 @@
 
     	      // all second degree nodes get a different color and their label back
     	      for (i = 0; i < allConnectedNodes.length; i++) {
-    	        allNodes[allConnectedNodes[i]].color = 'rgba(0,255,0,0.3)';
+    	        allNodes[allConnectedNodes[i]].color = 'rgba(0,255,0,0.9)';
     	        if (allNodes[allConnectedNodes[i]].hiddenLabel !== undefined) {
     	          allNodes[allConnectedNodes[i]].label = allNodes[allConnectedNodes[i]].hiddenLabel;
     	          allNodes[allConnectedNodes[i]].hiddenLabel = undefined;
@@ -528,25 +516,45 @@
 
     	      // all first degree nodes get their own color and their label back
     	      for (i = 0; i < connectedNodes.length; i++) {
-    	        allNodes[connectedNodes[i]].color = 'rgba(255,0,0,0.3)';
+    	        allNodes[connectedNodes[i]].color = 'rgba(255,255,0,0.9)';
     	        if (allNodes[connectedNodes[i]].hiddenLabel !== undefined) {
     	          allNodes[connectedNodes[i]].label = allNodes[connectedNodes[i]].hiddenLabel;
     	          allNodes[connectedNodes[i]].hiddenLabel = undefined;
     	        }
     	      }
-    	      
-    	      var curNode = allNodes[selectedNode];	   
-    	      
-    	      $("#nodeName").text(curNode.title);		  	       
-	  	      $("#id").text(curNode.id);
+
+    	      var curNode = allNodes[selectedNode];
+    	      var group = curNode.group;
+	    		var id = null;
+	    		switch(group) {
+	    		case "service":
+	    			id = curNode.serviceId;
+	    			$("#description").text("Service ");
+	    			break;
+	    		case "dataset":
+	    			id = curNode.datasetId;
+	    			$("#description").text("Dataset ");
+	    			break;
+	    		case "user":
+	    			id = curNode.userId;
+	    			$("#description").text("User");
+	    			break;
+	    		default:
+	    			break;
+	    		}  
+    	      		  	      
+	    	  $("#groupId").text(group.charAt(0).toUpperCase()+group.substring(1) + " Id:" );
+	  	      $("#nodeName").text(curNode.title);
+	  	      $("#id").text(id);
+		  	  $("#nodeId").text(curNode.id);
 	  	      $("#cluster").text(curNode.cluster);
 	  	      $("#label").text(curNode.label);
   	          $("#panel").show();
-    	      
+  	          
     	      // the main node gets its own color and its label back.
     	      
     	      
-    	      allNodes[selectedNode].color = 'rgba(0,0,255,0.3)'
+    	      allNodes[selectedNode].color = 'rgba(255,0,255,0.9)'
     	      if (allNodes[selectedNode].hiddenLabel !== undefined) {
     	        allNodes[selectedNode].label = allNodes[selectedNode].hiddenLabel;
     	        allNodes[selectedNode].hiddenLabel = undefined;
@@ -660,12 +668,12 @@
 	        	<br>
 	        	<div class="input-group">
 				  <span class="input-group-addon" id="basic-addon1">Start Point</span>
-				  <input type="text" class="form-control" placeholder="Type in Id" aria-describedby="basic-addon1" id="startPoint">
+				  <input type="text" class="form-control" placeholder="Type in Node Id" aria-describedby="basic-addon1" id="startPoint">
 			    </div>
 			    <br>
 			    <div class="input-group">
 				  <span class="input-group-addon" id="basic-addon2">End Point</span>
-				  <input type="text" class="form-control" placeholder="Type in Id" aria-describedby="basic-addon2" id="endPoint">
+				  <input type="text" class="form-control" placeholder="Type in Node Id" aria-describedby="basic-addon2" id="endPoint">
 				</div>
 				<br>
 				<div class="text-center">
@@ -715,10 +723,11 @@
 		    </div>
 		    <div class="card-block text-center">
 		      <h4 class="card-title" id="nodeName">card</h4>
-		      <p class="card-text text-muted" >A data set (or dataset) is a collection of data.</p>
+		      <p class="card-text text-muted" ><code id="description"></code></p>
 		    </div>
 		    <ul class="list-group list-group-flush">
-		      <li class="list-group-item"><strong>Id:</strong><code id="id"></code></li>
+		      <li class="list-group-item"><strong id="groupId"></strong><code id="id"></code></li>
+		      <li class="list-group-item"><strong>Node Id:</strong><code id="nodeId"></code></li>
 		      <li class="list-group-item"><strong>Cluster:</strong><code id="cluster"></code></li>
 		      <li class="list-group-item"><strong>Label:</strong><code id="label"></code></li>
 		    </ul>
@@ -730,6 +739,7 @@
 		</div>
 	</div>
 	<br>
+
 	<div id="userConfig" class="col-lg-8">
 	<form>
    		<label>Customized ID</label>
@@ -743,12 +753,29 @@
 	                 </select>
 	             </div>
              </div>
-             <div class="col-sm-4 col-md-2">
-             	<input type="text" class="form-control col-lg-3" id="userConfId" placeholder="1">
+             <div class="col-sm-4 col-md-4">
+             	<input type="text" class="form-control col-lg-4" id="userConfId" placeholder="User/Dataset/Service Id">
+             </div>
              </div>
+             <div class="row">
              <div class="col-sm-4 col-md-4">
-                 <button type="button" class="btn btn-primary col-lg-3" onclick="Javascript:selectThatNodeCustomized()">Show</button>
+                <label>Start Time</label>
+             	<input type="text" class="form-control col-lg-4" id="startTime" placeholder="MM/DD/YYYY hh:mm">
              </div>
+             <div class="col-sm-4 col-md-4">
+                <label>End Time</label>
+             	<input type="text" class="form-control col-lg-4" id="endTime" placeholder="MM/DD/YYYY hh:mm">
+             </div>
+             </div>
+             <br>
+             <div class="row">
+                <div id = "setShownName" class="col-sm-4 col-md-4">
+             		<input type="radio" id="datasetNameC" name="customizedChoice" checked="checked" value="datasetName" /> Dataset Name
+             		<input type="radio" id="variableNameC" name="customizedChoice" value="variableName" /> Variable Name
+             	</div>
+	             <div class="col-sm-4 col-md-4">
+	                 <button type="button" class="btn btn-primary col-lg-3" onclick="Javascript:selectThatNodeCustomized()">Show</button>
+	             </div>
              </div>
        	</form>
 	</div>

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/391a7a7f/ApacheCMDA_Frontend_1.0/app/views/recommendationSummary.scala.html
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Frontend_1.0/app/views/recommendationSummary.scala.html b/ApacheCMDA_Frontend_1.0/app/views/recommendationSummary.scala.html
index ea6e1f7..449453e 100644
--- a/ApacheCMDA_Frontend_1.0/app/views/recommendationSummary.scala.html
+++ b/ApacheCMDA_Frontend_1.0/app/views/recommendationSummary.scala.html
@@ -1,101 +1,90 @@
-@(climateServices: List[ClimateService], dataSets: List[Dataset], users: List[User])
-
-@import helper._
+@(climateServices: List[ClimateService], dataSets: List[Dataset], users:
+List[User], userBasedDataset: List[String], featureBasedDataset :
+List[String], itemBasedDataset : List[String], currentUser: String)
 
+@import helper._ 
 @scripts = {
 	<script type="text/javascript">
-	$(document).ready(function(){
-		$('#myTabs a').click(function (e) {
-			  e.preventDefault()
-			  $(this).tab('show')
-		})
-	});
+		$(document).ready(function() {
+			$('#myTabs a').click(function(e) {
+				e.preventDefault()
+				$(this).tab('show')
+			})
+		});
+		
+		
+		
+		function sendUserId() {
+			var userIdSent = $("#UserIdForRecommend").val();
+			window.location = "/climateService/recommendationSummary/" + userIdSent;
+		}
 	</script>
-}
+} 
 
 @main("Climate Services", scripts) {
-	 
-    <h1>Recommendation</h1>
-    
-    <div>
-	  <!-- Nav tabs -->
-	  <ul class="nav nav-tabs" role="tablist">
-	    <li role="presentation" class="active"><a href="#mostPopService" aria-controls="home" role="tab" data-toggle="tab">Most Popular Service</a></li>
-	    <li role="presentation"><a href="#mostPopDataset" aria-controls="profile" role="tab" data-toggle="tab">Most Popular Dataset</a></li>
-	    <li role="presentation"><a href="#mostActUsers" aria-controls="messages" role="tab" data-toggle="tab">Most Active User</a></li>
-	    <li role="presentation"><a href="#settings" aria-controls="settings" role="tab" data-toggle="tab">Settings</a></li>
-	  </ul>	
-	  <!-- Tab panes -->
-	  <div class="tab-content">
-	    <div role="tabpanel" class="tab-pane active" id="mostPopService">
-				<table class="table table-striped table-bordered table-condensed ex2">
+
+<h1>Recommendation</h1>
+
+<div>
+	<!-- Nav tabs -->
+	<ul class="nav nav-tabs" role="tablist">
+		<li role="presentation"><a href="#mostPopService" aria-controls="home" role="tab" data-toggle="tab">Most Popular Service</a></li>
+		<li role="presentation"><a href="#mostPopDataset" aria-controls="profile" role="tab" data-toggle="tab">Most Popular Dataset</a></li>
+		<li role="presentation"><a href="#mostActUsers" aria-controls="messages" role="tab" data-toggle="tab">Most Active User</a></li>
+		<li role="presentation" class="active"><a href="#settings"	aria-controls="settings" role="tab" data-toggle="tab">ML Based Recommendation</a></li>
+	</ul>
+	<!-- Tab panes -->
+	<div class="tab-content">
+		<div role="tabpanel" class="tab-pane " id="mostPopService">
+			<br>
+			<table class="table table-striped table-bordered table-condensed tablesorter" id = "mostPopServiceTable">
+				<thead>
 					<tr>
-						<td class="col-md-2">Climate Service Name</td>
-						<td class="col-md-2">Purpose</td>
-						<td class="col-md-4">Url</td>
-						<td class="col-md-2">Scenario</td>
-						<td class="col-md-2">Version</td>
-						<td class="col-md-2">Root_Service</td>						  
+						<th class="col-md-3 ">Climate Service Name</th>
+						<th class="col-md-2">Purpose</th>
+						<th class="col-md-4">Url</th>
+						<th class="col-md-2">Scenario</th>
+						<th class="col-md-2">Version</th>
+						<th class="col-md-2">Root_Service</th>
 					</tr>
-					
+				</thead>
+				<tbody>
 					@for(climateService <- climateServices){
 					<tr>
-						<td><a href = "@climateService.getUrl()">@climateService.getName()</a></td>
-				
-						<td><span class="@climateService.getName() editable" data-name='purpose'>
-								@climateService.getPurpose() </span></td>
-						
-						<td><span class="@climateService.getName() editable" id = "url" data-name='url'>
-								<a href = "@climateService.getUrl()">
-								@climateService.getUrl()</a> </span></td>
-								
-						<td><span class="@climateService.getName() editable" data-name='scenario'>
-								@climateService.getScenario() </span></td>
-								
-						<td><span class="@climateService.getName() editable" data-name='versionNo'>
-								@climateService.getVersionNo() </span></td>
-								
-						<td><span class="@climateService.getName() editable" data-name='rootServiceId'>
-								@climateService.getRootServiceId() </span></td>						
+						<td><a href="@climateService.getUrl()">@climateService.getName()</a></td>
+						<td>@climateService.getPurpose()</td>
+						<td><a href="@climateService.getUrl()">@climateService.getUrl()</a></td>
+						<td>@climateService.getScenario()</td>
+						<td>@climateService.getVersionNo()</td>
+						<td>@climateService.getRootServiceId()</td>
 					</tr>
 					}
-			    </table>
-    	</div>
-    	
-	    <div role="tabpanel" class="tab-pane" id="mostPopDataset">
-				<table class="table table-striped table-bordered table-condensed ex2" >
-					<thead>
+				</tbody>
+			</table>
+		</div>
+
+		<div role="tabpanel" class="tab-pane" id="mostPopDataset">
+			<br>
+			<table class="table table-striped table-bordered table-condensed tablesorter" id = "mostPopDatasetTable">
+				<thead>
 					<tr>
-						<!--  
-						<th style = "vertical-align: top;" class="col-md-1 header">Id</th>
-						-->
-						<th style = "vertical-align: top;" class="col-md-2">Dataset Name</th>
-						<th style = "vertical-align: top;" class="col-md-1">Agency</th>
-						<th style = "vertical-align: top;" class="col-md-1">Instrument/Model Experiment</th>
-						<th style = "vertical-align: top;" class="col-md-2">Physical variable</th>
-						<th style = "vertical-align: top;" class="col-md-1">Variable short name</th>
-						<th style = "vertical-align: top;" class="col-md-1">Units</th>
-						<th style = "vertical-align: top;" class="col-md-1">Grid Dimension</th>
-						<!--  
-						<th style = "vertical-align: top;" class="col-md-3">Source</th> 
-						<th style = "vertical-align: top;" class="col-md-3">Status</th>
-						<th style = "vertical-align: top;" class="col-md-4">Responsible Person</th>
-						<th style = "vertical-align: top;" class="col-md-4">Data Source Name in Web Interface</th> 
-						-->
-						<th style = "vertical-align: top;" class="col-md-2">Variable Name in Web Interface</th>
-						<th style = "vertical-align: top;" class="col-md-1">Data Source Input Parameter</th>
-						<!-- <th style = "vertical-align: top;" class="col-md-3">Variable Name Input Parameter</th> -->
-						<th style = "vertical-align: top;" class="col-md-1">Dataset Start Time</th>
-						<th style = "vertical-align: top;"class="col-md-1">Dataset End Time</th>
-						<th style = "vertical-align: top;"class="col-md-1">Duration</th>
+						<th style="vertical-align: top;" class="col-md-2">Dataset Name</th>
+						<th style="vertical-align: top;" class="col-md-1">Agency</th>
+						<th style="vertical-align: top;" class="col-md-1">Instrument/Model Experiment</th>
+						<th style="vertical-align: top;" class="col-md-2">Physical variable</th>
+						<th style="vertical-align: top;" class="col-md-1">Variable short name</th>
+						<th style="vertical-align: top;" class="col-md-1">Units</th>
+						<th style="vertical-align: top;" class="col-md-1">Grid	Dimension</th>
+						<th style="vertical-align: top;" class="col-md-2">Variable Name in Web Interface</th>
+						<th style="vertical-align: top;" class="col-md-1">Data Source 	Input Parameter</th>
+						<th style="vertical-align: top;" class="col-md-1">Dataset Start Time</th>
+						<th style="vertical-align: top;" class="col-md-1">Dataset End Time</th>
+						<th style="vertical-align: top;" class="col-md-1">Duration</th>
 					</tr>
-					</thead>
-					<tbody>
+				</thead>
+				<tbody>
 					@for(dataSet <- dataSets){
 					<tr>
-						<!--  
-						<td><font size="2">@dataSet.getId()</font></td> 
-						-->
 						<td><font size="2">@dataSet.getName()</font></td>
 						<td><font size="2">@dataSet.getAgencyId()</font></td>
 						<td><font size="2">@dataSet.getInstrument()</font></td>
@@ -103,69 +92,197 @@
 						<td><font size="2">@dataSet.getCMIP5VarName()</font></td>
 						<td><font size="2">@dataSet.getUnits()</font></td>
 						<td><font size="2">@dataSet.getGridDimension()</font></td>
-						<!--
-						<td><font size="2">@dataSet.getSource()</font></td>
-						<td><font size="2">@dataSet.getStatus()</font></td>
-						<td><font size="2">@dataSet.getResponsiblePerson()</font></td>
-						<td><font size="2">@dataSet.getDataSourceNameinWebInterface()</font></td>
-						-->
 						<td><font size="2">@dataSet.getVariableNameInWebInterface()</font></td>
 						<td><font size="2">@dataSet.getDataSourceInputParameterToCallScienceApplicationCode()</font></td>
-						<!--<td><font size="2">@dataSet.getVariableNameInputParameterToCallScienceApplicationCode()</font></td> -->
 						<td><font size="2">@dataSet.getStartTime()</font></td>
 						<td><font size="2">@dataSet.getEndTime()</font></td>
-						<td><font size="2">@dataSet.getDuration()</font></td>						
-					</tr>					
+						<td><font size="2">@dataSet.getDuration()</font></td>
+					</tr>
 					}
-					</tbody>
-				    </table>
-		
+				</tbody>
+			</table>
 		</div>
-	    <div role="tabpanel" class="tab-pane" id="mostActUsers">
-
-			<table class="table table-striped table-bordered table-condensed ex2">
-				<tr>
-					<td class="col-md-1">Id</td>
-					<td class="col-md-2">User Name</td>
-					<td class="col-md-2">First Name</td>
-					<td class="col-md-2">Middle Name</td>
-					<td class="col-md-2">Last Name</td>
-					<td class="col-md-2">Afflication</td>
-					<td class="col-md-4">Email</td>
-					<td class="col-md-2">Research Area</td>
-					
-				</tr>
+		<div role="tabpanel" class="tab-pane" id="mostActUsers">
+			<br>
+			<table class="table table-striped table-bordered table-condensed tablesorter" id="mostActUsersTable">
+				<thead>
+					<tr>
+						<th class="col-md-1">Id</th>
+						<th class="col-md-1">User Name</th>
+						<th class="col-md-1">First Name</th>
+						<th class="col-md-2">Middle Name</th>
+						<th class="col-md-1">Last Name</th>
+						<th class="col-md-1">Afflication</th>
+						<th class="col-md-2">Email</th>
+						<th class="col-md-2">Research Area</th>
+					</tr>
+				</thead>
+				<tbody>
 				@for(user <- users){
 				<tr>
 					<td>@user.getId()</td>
-					
 					<td><span class="@user.getId() editable" data-name='username'>@user.getUserName()</span></td>
-							
 					<td><span class="@user.getId() editable" data-name='firstName'>@user.getFirstName()</span></td>
-							
 					<td><span class="@user.getId() editable" data-name='middleInitial'>@user.getMiddleInitial()</span></td>
-							
 					<td><span class="@user.getId() editable" data-name='lastName'>@user.getLastName()</span></td>
-					
 					<td><span class="@user.getId() editable" data-name='affiliation'>@user.getAffiliation()</span></td>
-							
 					<td><span class="@user.getId() editable" data-name='email'>@user.getEmail()</span></td>
-							
 					<td><span class="@user.getId() editable" data-name='researchFields'>@user.getResearchFields()</span></td>
-						
 				</tr>
 				}
-		    </table>
-		
-		
-		
+				</tbody>
+			</table>
 		</div>
-	    <div role="tabpanel" class="tab-pane" id="settings">...</div>
-	  </div>
+
+		<div role="tabpanel" class="tab-pane active " id="settings">
+			<br>
+			<form class="form-inline" role="form">
+				<div class="form-group">
+					<label>User Id:</label> <select class="form-control"
+						id="UserIdForRecommend">
+						<option value="ochimborazo">ochimborazo</option>
+						<option value="fcannon">fcannon</option>
+						<option value="kwillmot">kwillmot</option>
+						<option value="nkille">nkille</option>
+						<option value="jnanteza">jnanteza</option>
+						<option value="ksauter">ksauter</option>
+						<option value="jgristey">jgristey</option>
+						<option value="caquilinger">caquilinger</option>
+						<option value="fpolverari">fpolverari</option>
+						<option value="kneff">kneff</option>
+						<option value="emaroon">emaroon</option>
+						<option value="rbuchholz">rbuchholz</option>
+						<option value="abeatriz">abeatriz</option>
+						<option value="htseng">htseng</option>
+						<option value="mlinz">mlinz</option>
+						<option value="kzhang">kzhang</option>
+						<option value="jbrodie">jbrodie</option>
+						<option value="dzermenodia">dzermenodia</option>
+						<option value="cmartinezvi">cmartinezvi</option>
+						<option value="mclavner">mclavner</option>
+						<option value="hwei">hwei</option>
+						<option value="gmarques">gmarques</option>
+						<option value="mroge">mroge</option>
+					</select>
+				</div>
+				<button type="button" class="btn btn-info" onclick="sendUserId()">Recommend</button>
+			</form>
+
+			<br>
+
+			<h4>Current User: @currentUser</h4>
+			<div class="row well col-lg-10">
+				<div class="col-lg-offset-0 col-lg-6">
+					<div class="panel panel-success">
+						<!-- Default panel contents -->
+						<div class="panel-heading">Recommended based on dataset
+							similarity and the user's past behavior</div>
+						<div class="panel-body">
+							<p>The supporting algorithms are Latent Dirichlet Allocation
+								(LDA) and Collaborative Filtering (CF), which take into account
+								of semetic meaning of dataset as well as the user's past dataset
+								usage history.</p>
+						</div>
+
+						<!-- Table -->
+						<table class="table">
+							<thead>
+								<tr>
+									<th>Dataset Name</th>
+									<th>...</th>
+									<th>...</th>
+								</tr>
+							</thead>
+							<tbody>
+								@for(String <- featureBasedDataset){
+								<tr>
+									<td>@String.substring(1, String.length-1)</td>
+									<td>...</td>
+									<td>...</td>
+								</tr>
+								}
+
+							</tbody>
+						</table>
+					</div>
+				</div>
+
+				<div class=" col-lg-6">
+					<div class="panel panel-danger ">
+						<!-- Default panel contents -->
+						<div class="panel-heading">Recommended based on peer scientists' dataset usage behavior</div>
+						<div class="panel-body">
+							<p>The supporting algorithm is User-based Collaborative
+								Filtering, which takes into account the dataset usage
+								preferences from other scientists with similar profiles and
+								background.</p>
+						</div>
+
+						<!-- Table -->
+						<table class="table">
+							<thead>
+								<tr>
+									<th>Dataset Name</th>
+									<th>...</th>
+									<th>...</th>
+								</tr>
+							</thead>
+							<tbody>
+								@for(String <- userBasedDataset){
+								<tr>
+									<td>@String.substring(1, String.length-1)</td>
+									<td>...</td>
+									<td>...</td>
+								</tr>
+								}
+							</tbody>
+						</table>
+					</div>
+				</div>
+			</div>
+
+			<div class="row">
+				<div class="well col-lg-offset-0 col-lg-5">
+					<div class="panel panel-info">
+						<!-- Default panel contents -->
+						<div class="panel-heading">Recommended based on past dataset
+							usage history</div>
+						<div class="panel-body">
+							<p>The supporting algorithm is Item-based Collaborative
+								Filtering, which takes into account the dataset usage
+								preferences from the user.</p>
+						</div>
+
+						<!-- Table -->
+						<table class="table">
+							<thead>
+								<tr>
+									<th>Dataset Name</th>
+									<th>...</th>
+									<th>...</th>
+								</tr>
+							</thead>
+							<tbody>
+								@for(String <- itemBasedDataset){
+								<tr>
+									<td>@String.substring(1, String.length-1)</td>
+									<td>...</td>
+									<td>...</td>
+								</tr>
+								}
+							</tbody>
+						</table>
+					</div>
+				</div>
+			</div>
+		</div>
+
 	</div>
-    
-	
- 
-    
-     
+</div>
+</div>
+
+
+
+
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/391a7a7f/ApacheCMDA_Frontend_1.0/app/views/registerAClimateService.scala.html
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Frontend_1.0/app/views/registerAClimateService.scala.html b/ApacheCMDA_Frontend_1.0/app/views/registerAClimateService.scala.html
index 85b4a44..d6084b2 100644
--- a/ApacheCMDA_Frontend_1.0/app/views/registerAClimateService.scala.html
+++ b/ApacheCMDA_Frontend_1.0/app/views/registerAClimateService.scala.html
@@ -5,6 +5,8 @@
 <script type="text/javascript">	
 	$(document).ready(function(){
 		$("#msg").hide();
+		$("#dependencyDetailForm").hide();
+		$("#cacheForm").hide();
 	});
 		
 	</script>
@@ -102,7 +104,26 @@ $(window).load(function(){
                         <option value="Multiple selects">Multiple selects</option>
                         <option value="Radio button">Radio button</option>
                         <option value="Dropdown list">Dropdown list</option>
-                    </select>
+                    </select>                
+
+                    <div class="col-log-12 " id = "dropdownNameDataDiv">
+                    
+                    <div class="radio">                   
+					      <label>
+						    <input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" onchange="disableDropdownItem()" checked>
+						    Load backend API names <span class="glyphicon glyphicon-question-sign" data-toggle="tooltip" data-placement="right" title="Here API names mean..."></span>
+						  <button type="button" class="btn btn-primary btn-sm" onclick="showDropdownExample1()">Show example</button>
+						  </label>
+					 </div>
+					 <div class="radio">
+						  <label>
+						    <input type="radio" name="optionsRadios" id="optionsRadios2" value="option2" onchange = "disableDropdownItem()">
+						    Display descriptive names, embed backend API names <span class="glyphicon glyphicon-question-sign" data-toggle="tooltip" data-placement="right" title="Here API names mean... and Descriptive names mean..."></span>
+					 		<button type="button" class="btn btn-primary btn-sm" onclick="showDropdownExample2()">Show example</button>
+					 		</label>
+					 </div>					 
+                      		<textarea class="form-control" rows="3" id="dropdownNameData" placeholder ="Placeholder for the js format data"></textarea>
+                     </div>
                 </div>
                 <div class="form-group">
                     <label>Parameter Values</label>
@@ -140,7 +161,23 @@ $(window).load(function(){
 	                    <button type="button" class="btn btn-success" onclick="">Reset dependency</button>
 	                </div> 
              </div>
-			<div class="well">					
+             
+             <div class="radio">                   
+			      <label>
+				    <input type="radio" name="dependencyRadio" id="dependencyRadio1" value="option1" onchange="disableDependencyItem()" checked>
+				    Disable Smart Input<span class="glyphicon glyphicon-question-sign" data-toggle="tooltip" data-placement="right" title="Here I mean..."></span>
+				  <button type="button" class="btn btn-primary btn-sm" onclick="showDependencyExample1()">Show example</button>
+				  </label>
+			 </div>
+             <div class="radio">
+				  <label>
+				    <input type="radio" name="dependencyRadio" id="dependencyRadio2" value="option2" onchange = "disableDependencyItem()">
+				    Enable Smart Input<span class="glyphicon glyphicon-question-sign" data-toggle="tooltip" data-placement="right" title="Here I mean..."></span>
+			 		<button type="button" class="btn btn-primary btn-sm" onclick="showDependencyExample2()">Show example</button>
+			 		</label>
+			 </div>	
+					 
+			<div class="well" id = "dependencyDetailForm">					
 	            <form>
 	            	<div class="form-group">
 	                    <label>Data source</label>
@@ -167,17 +204,10 @@ $(window).load(function(){
 	                    <button type="button" class="btn btn-primary" onclick="Javascript:oneClickAdd()">One-click add</button>
 	                </div>       
 	            </form>
-	            <br>
-	
-	            <div class="well">
-	                <div class="text-center">
-	                    <button type="button" class="btn  btn-primary" onclick="Javascript:continue1()">Add one rule</button>
-	                    <button type="button" class="btn  btn-primary" onclick="Javascript:addDataList()">Add rule list</button>
-						<button type="button" class="btn  btn-success" onclick="Javascript:deleteAllData()">Reset rule</button>	                
-	                </div>
-	            </div>
+	            <br>            
             </div>
-            <div class="well">
+           	
+            <div class="well" >
                 <label>Rule Preview</label>
                 <textarea class="form-control" rows="10" id="preview" placeholder ="Placeholder for the json data"></textarea>
             
@@ -187,17 +217,26 @@ $(window).load(function(){
                     <button class="btn btn-primary" onclick="Javascript:validate()" type="button">Validate Json Format and Save</button>
                     </span>
                 </div><!-- /input-group -->
-
+			
             </div>
-
-            <div class="well">
+            
+			<div class="well" >
+                <div class="text-center">
+                    <button type="button" class="btn  btn-primary" onclick="Javascript:continue1()">Add one rule</button>
+                    <button type="button" class="btn  btn-primary" onclick="Javascript:addDataList()">Add rule list</button>
+					<button type="button" class="btn  btn-success" onclick="Javascript:deleteAllData()">Reset rule</button>	                
+                </div>
+            </div>
+            
+            <div class="well" id = "cacheForm">
                 <div class="form-group">
                     <label>Show Cache</label>
                     <input type="text" class="form-control" id="demo1" placeholder="Show Cache" >
                 </div>
                 <label>Para Preview</label>
                 <textarea class="form-control" rows="10" id="previewPara" placeholder ="Placeholder for the Para data"></textarea>
-            </div>
+            </div>            
+            
         </div>
         
         <div class="well">

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/391a7a7f/ApacheCMDA_Frontend_1.0/app/views/serviceDetail.scala.html
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Frontend_1.0/app/views/serviceDetail.scala.html b/ApacheCMDA_Frontend_1.0/app/views/serviceDetail.scala.html
index 65782a0..89113d1 100644
--- a/ApacheCMDA_Frontend_1.0/app/views/serviceDetail.scala.html
+++ b/ApacheCMDA_Frontend_1.0/app/views/serviceDetail.scala.html
@@ -1,9 +1,7 @@
-@(servicePage: String, moreScript: String, confItems: List[ServiceConfigurationItem], serviceLog: ServiceExecutionLog)
-
-@import helper._
-
+@(servicePage: String, moreScript: String, confItems: List[ServiceConfigurationItem], serviceLog: ServiceExecutionLog) 
+@import helper._ 
 @scripts = {
-	<script type="text/javascript">
+<script type="text/javascript">
 	
 	window.onload = function() {
 		
@@ -46,8 +44,7 @@
 		            break;
 		        case "Multiple selects":
 		        	var paraArr = parameterValue.split(",");
-		        	var checkedPara = value.split(",");
-		        	
+		        	var checkedPara = value.split(",");		        	
 		        	for (var i=0; i<paraArr.length; i++) {
 		        		$("#" + name + i).prop( "checked", false );
 		        		for (var j=0; j<checkedPara.length; j++ ) {
@@ -56,7 +53,7 @@
 		        			}
 		        		} 
 		        	}
-		        	//$( 'input' ).filter('[value="6"]').prop( "checked", false );
+		        	
 		            break;
 		        case "Radio button":
 		        	var paraArr = parameterValue.split(",");
@@ -67,8 +64,7 @@
 		        		}
 		        	}
 		            break;
-		        case "Dropdown list":
-		        	//$( 'option:contains("'+value+'")').attr('selected','selected');
+		        case "Dropdown list":		        	
 		        	var allOptions = document.getElementById(parameterName + "_trID").getElementsByTagName('option');
 		        	for (var i =0; i<allOptions.length; i++) {
 		        		if(allOptions[i].value == value) {
@@ -80,35 +76,12 @@
 		            
 			}					
 		}
-		//only for testing
-		//document.getElementById('startTime').value = parameterType;
 		
 		document.getElementById("purpose_detail").innerHTML = "@serviceLog.getPurpose()";
 		document.getElementById("serviceImg").src = "@serviceLog.getPlotUrl()";
 		document.getElementById("comment").value = "@serviceLog.getDataUrl()";
-/*		
-			var res = parameterPurpose.split(" ");
-			var name = res[0];
-			for (i = 1; i < res.length; i++) {
-				var temp = res[i].charAt(0).toUpperCase();
-				temp += res[i].substring(1);
-				name += temp;
-			}
-			console.log(name + value + parameterType + parameterValue + parameterDefaultValue);
-			
-			if (parameterType == "Input text" ) {
-				document.getElementById(name).value = value;
-			}
-		
-		
-		document.getElementById("serviceImg").src = "@serviceLog.getPlotUrl()";
-		document.getElementById("comment").value = "@serviceLog.getDataUrl()";
-*/
+
 	}
 	@Html(moreScript)
 	</script>
-}
-
-@main("Service Details", scripts) {
-	@Html(servicePage)
-}
+} @main("Service Details", scripts) { @Html(servicePage) }

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/391a7a7f/ApacheCMDA_Frontend_1.0/app/views/serviceLog.scala.html
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Frontend_1.0/app/views/serviceLog.scala.html b/ApacheCMDA_Frontend_1.0/app/views/serviceLog.scala.html
index 1ef867e..c3854bf 100644
--- a/ApacheCMDA_Frontend_1.0/app/views/serviceLog.scala.html
+++ b/ApacheCMDA_Frontend_1.0/app/views/serviceLog.scala.html
@@ -5,13 +5,7 @@
 @main("Service Logs"){ 
 	 
     <h1>@serviceLogs.size() Service Logs</h1>
-    <!--
-    @helper.form(routes.Application.home()) {
-    	<div class = "col-sm-2">
-    		<input class="btn btn-primary" type="submit" value="Sync data" style="margin-top:18px">
-    	</div>
-    }
-    -->
+   
     
     @helper.form(routes.Application.home()) {
     <div class = "container">
@@ -39,10 +33,7 @@
 		<th style = "vertical-align: top;" class="col-sm-2">Execution End Time</th>		
 		<th style = "vertical-align: top;" class="col-sm-1">DataSet Start Time</th>
 		<th style = "vertical-align: top;" class="col-sm-1">DataSet End Time</th>
-		<th style = "vertical-align: top;" class="col-sm-1">Details</th>
-		<!-- 
-		<td class="col-md-2">Operation</td>
-		 -->
+		<th style = "vertical-align: top;" class="col-sm-1">Details</th>		
 	</tr>
 	</thead>
 	<tbody>

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/391a7a7f/ApacheCMDA_Frontend_1.0/conf/routes
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Frontend_1.0/conf/routes b/ApacheCMDA_Frontend_1.0/conf/routes
index 5bf1a72..d972436 100644
--- a/ApacheCMDA_Frontend_1.0/conf/routes
+++ b/ApacheCMDA_Frontend_1.0/conf/routes
@@ -16,7 +16,9 @@ POST	/isEmailExisted				controllers.Application.isEmailExisted()
 
 
 #recommendation overview
-GET		/climateService/recommendationSummary					controllers.ClimateServiceController.recommendationSummary()
+GET		/climateService/recommendationSummary/:userId				controllers.ClimateServiceController.recommendationSummary(userId: String)
+
+
 
 # Climate Service
 GET		/climateService/allServices									controllers.ClimateServiceController.showAllClimateServices()
@@ -58,7 +60,7 @@ GET     /datasetRecommend                           controllers.AnalyticsControl
 GET     /profileRecommend                           controllers.AnalyticsController.getScientistRecommend()
 GET     /serviceLogGraph                            controllers.AnalyticsController.getLogGraph()
 GET 	/searchAndGenerateWorkflow					controllers.AnalyticsController.getSearchAndGenerateWorkflow()
-GET     /serviceKnowledgeGraph                      controllers.AnalyticsController.getKnowledgeGraph()
+GET     /serviceKnowledgeGraph                      controllers.AnalyticsController.getKnowledgeGraph(param1 ?= "User", param2 ?= "Dataset", param3 ?= "Service")
 GET     /relationalKnowledgeGraph                   controllers.AnalyticsController.getRelationalKnowledgeGraph()
 POST	/getSpecifiedKnowledgeGraph					controllers.AnalyticsController.getSpecifiedKnowledgeGraph()
 POST	/getShortestPath 							controllers.AnalyticsController.getShortestPath()
@@ -77,6 +79,7 @@ POST    /assets/*file               controllers.Assets.at(path="/public", file)
 GET     /aboutUs					controllers.AboutController.aboutUs()
 GET     /aboutProject				controllers.AboutController.aboutProject()
 GET		/tutorial					controllers.AboutController.tutorial()
+GET		/FAQs						controllers.AboutController.FAQs()
 
 # BugReporting
 GET         /bugs                                                controllers.BugReportController.reports()

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/391a7a7f/ApacheCMDA_Frontend_1.0/public/html/js/.svn/all-wcprops
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Frontend_1.0/public/html/js/.svn/all-wcprops b/ApacheCMDA_Frontend_1.0/public/html/js/.svn/all-wcprops
new file mode 100644
index 0000000..cfc7d74
--- /dev/null
+++ b/ApacheCMDA_Frontend_1.0/public/html/js/.svn/all-wcprops
@@ -0,0 +1,41 @@
+K 25
+svn:wc:ra_dav:version-url
+V 51
+/svn/cmac/!svn/ver/103/trunk/web_portal/cmac/web/js
+END
+json2.js
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/cmac/!svn/ver/103/trunk/web_portal/cmac/web/js/json2.js
+END
+jquery-1.4.4.js
+K 25
+svn:wc:ra_dav:version-url
+V 67
+/svn/cmac/!svn/ver/103/trunk/web_portal/cmac/web/js/jquery-1.4.4.js
+END
+jquery-1.4.4.min.js
+K 25
+svn:wc:ra_dav:version-url
+V 71
+/svn/cmac/!svn/ver/103/trunk/web_portal/cmac/web/js/jquery-1.4.4.min.js
+END
+xmisc.js
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/cmac/!svn/ver/103/trunk/web_portal/cmac/web/js/xmisc.js
+END
+jquery.flot.min.js
+K 25
+svn:wc:ra_dav:version-url
+V 70
+/svn/cmac/!svn/ver/103/trunk/web_portal/cmac/web/js/jquery.flot.min.js
+END
+jquery-1.6.4.min.js
+K 25
+svn:wc:ra_dav:version-url
+V 71
+/svn/cmac/!svn/ver/103/trunk/web_portal/cmac/web/js/jquery-1.6.4.min.js
+END

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/391a7a7f/ApacheCMDA_Frontend_1.0/public/html/js/.svn/entries
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Frontend_1.0/public/html/js/.svn/entries b/ApacheCMDA_Frontend_1.0/public/html/js/.svn/entries
new file mode 100644
index 0000000..90b0817
--- /dev/null
+++ b/ApacheCMDA_Frontend_1.0/public/html/js/.svn/entries
@@ -0,0 +1,232 @@
+10
+
+dir
+1012
+https://higgs.jpl.nasa.gov:8043/svn/cmac/trunk/web_portal/cmac/web/js
+https://higgs.jpl.nasa.gov:8043/svn/cmac
+
+
+
+2013-02-06T09:16:39.558873Z
+103
+pan
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+7b6b0737-f4d6-4764-b6e6-6b822f93333f
+
+json2.js
+file
+
+
+
+
+2015-08-30T19:21:24.096601Z
+70373c5d1da2b46813a293d4f3235e81
+2013-02-06T09:16:39.558873Z
+103
+pan
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+17308
+
+jquery-1.4.4.js
+file
+
+
+
+
+2015-08-30T19:21:24.096601Z
+ede38e8db778584feacf86ef6767948a
+2013-02-06T09:16:39.558873Z
+103
+pan
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+183184
+
+jquery-1.4.4.min.js
+file
+
+
+
+
+2015-08-30T19:21:24.096601Z
+73a9c334c5ca71d70d092b42064f6476
+2013-02-06T09:16:39.558873Z
+103
+pan
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+78601
+
+xmisc.js
+file
+
+
+
+
+2015-08-30T19:21:24.096601Z
+5cca54013da56be3460df7bf384a442a
+2013-02-06T09:16:39.558873Z
+103
+pan
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+8076
+
+jquery.flot.min.js
+file
+
+
+
+
+2015-08-30T19:21:24.096601Z
+894855595d743ec62595d0772f1424fe
+2013-02-06T09:16:39.558873Z
+103
+pan
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+32993
+
+jquery-1.6.4.min.js
+file
+
+
+
+
+2015-08-30T19:21:24.096601Z
+9118381924c51c89d9414a311ec9c97f
+2013-02-06T09:16:39.558873Z
+103
+pan
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+91669
+


Mime
View raw message