From 2c9a9c599775ea2ea440065a35aa6870a6d8d870 Mon Sep 17 00:00:00 2001
From: Costas Yiotis <coyiotis@gmail.com>
Date: Mon, 24 Nov 2014 12:34:24 +0200
Subject: [PATCH] myslice reputation plugin v0.2

---
 portal/reputationview.py         | 10 ++++--
 portal/templates/reputation.html | 53 +++++++++++++++++++++++++++-----
 2 files changed, 52 insertions(+), 11 deletions(-)

diff --git a/portal/reputationview.py b/portal/reputationview.py
index 4699dd22..520253d6 100644
--- a/portal/reputationview.py
+++ b/portal/reputationview.py
@@ -192,7 +192,7 @@ class ReputationView (LoginRequiredAutoLogoutView, ThemeView):
         testbeds = []
 
         for slice in slice_details:
-
+            
             if users_hrn[cur_username] in slice['users']:
                 slices_users.append({'slice_hrn':slice['slice_hrn'], 'user':cur_username, 'user_hrn':users_hrn[cur_username] \
                                      , 'resource':slice['resource'], 'lease':slice['lease'] })  
@@ -244,14 +244,17 @@ class ReputationView (LoginRequiredAutoLogoutView, ThemeView):
 
         ###### Get Reputation values from Reputation DB
         reps = json_to_rest('http://survivor.lab.netmode.ntua.gr:4567/reputation/showrep', "a")
-        env['logging_test'] = reps    
+        #env['logging_test'] = reps    
         
+        #create a services list and a dict containing the services for each testbed
+        serv_per_tb = {}
         services = []
         for item in reps:
+            serv_per_tb[item['testbed']]=[]
             for serv in item['services']:
                 if serv.keys()[0] not in services:
                     services.append(serv.keys()[0])
-        
+                    serv_per_tb[item['testbed']].append(serv.keys()[0])        
         
         #in json, sevices are in the form: 'services':[{'serv1':x}, {'serv2':y}], so we transform it to 'services':[x,y] based on
         # the services dict above. If for a specific service there is no applicable value, we put N/A            
@@ -272,6 +275,7 @@ class ReputationView (LoginRequiredAutoLogoutView, ThemeView):
                 
         ###### Pass variables to template
         env['logging_test'] = json.dumps(all_exp, ensure_ascii=False)
+        env['serv_per_tb'] = json.dumps(serv_per_tb, ensure_ascii=False)
         env['reputation'] = reps
         env['rep_serv'] = services
         env['slicelist'] = all_exp
diff --git a/portal/templates/reputation.html b/portal/templates/reputation.html
index c690f77c..c000ee9a 100644
--- a/portal/templates/reputation.html
+++ b/portal/templates/reputation.html
@@ -8,8 +8,6 @@
 
 <link rel="stylesheet" type="text/css" href="{{STATIC_URL}}/css/onelab.css" />
 
-
-
 <!-- Reputation Specific -->
 <link rel="stylesheet" type="text/css" href="{{STATIC_URL}}reputation_static/css/main.css" />
 
@@ -128,7 +126,7 @@
 <div id="scoreform" style="display:none">
     <ol>
         <li>
-            How was your overall experience with NETMODE Testbed? 
+            <span>How was your overall experience with NETMODE Testbed?</span> 
             <div id="q1">
             </div>
         </li>
@@ -231,6 +229,7 @@
 
 <script type="text/javascript">
 
+serv_per_tb = jQuery.parseJSON('{{ serv_per_tb|safe }}');
 
 $(function() {
 	$( "#tabs" ).tabs();
@@ -240,6 +239,7 @@ var data = jQuery.parseJSON('{{ json_data|safe }}');
 
 
 
+
 var resid = -1;
 var q1 = -1;
 var q2 = -1;
@@ -282,10 +282,13 @@ function initDialog() {
 					slicedata = (data[event]);
 				}	
 			}
+			
+
+			
 			slicedata["user_eval"] = {'overall':q1, 'problems':q2, 'support':q3, 'reuse':q4, 'pay':q5, 'availability':q6, 'link_quality':q7, 'quality':q8};
 			testbeds_str = JSON.stringify(slicedata['testbeds'])
 			delete slicedata['testbeds'];
-            console.log(JSON.stringify(slicedata))
+            //console.log(JSON.stringify(slicedata))
                         
             $.ajax({
 	            type: "GET",
@@ -360,7 +363,7 @@ $(function() {
     });
 
     initDialog();
-	
+		
     clone = $("#scoreform").clone(true);
 
     $(".rate_button").click(function() {
@@ -370,9 +373,43 @@ $(function() {
         q4 = -1;
         q5 = -1;
         q6 = -1;
-	q7 = -1;
-	q8 = -1;
-        resid = $(this).attr("data-resid");        
+		q7 = -1;
+		q8 = -1;
+        resid = $(this).attr("data-resid"); 
+        
+        slicedata = {};
+    	for(var event in data){
+			if ((data[event]).id == resid) {
+				slicedata = (data[event]);
+			}	
+		}	
+
+		srv_arr = []	        
+        for (var tb in slicedata["testbeds"]){ 
+        	for (var srv in serv_per_tb[tb]){ 
+        		if (srv != 'equals') {
+        			//console.log(serv_per_tb[tb][srv]); 
+        			srv_arr.push(serv_per_tb[tb][srv]) 
+        		} 
+        	} 
+        }     
+        
+        cq1 = "overall";
+        cq6 = "availability";
+        cq7 = "link_quality";
+        
+        q_to_remove = []
+        
+        if ($.inArray(cq1, srv_arr) == -1 ){
+        	$("#scoreform > ol").children(':eq('+0+')').remove();
+        } 
+        if ($.inArray(cq6, srv_arr) == -1 ){
+        	$("#scoreform > ol").children(':eq('+5+')').remove();
+        } 
+		if ($.inArray(cq7, srv_arr) == -1 ){
+        	$("#scoreform > ol").children(':eq('+6+')').remove();
+        } 
+        
         $("#scoreform").dialog({
             title: "Rate experiment",
             width: 500,
-- 
2.47.0