1 {% extends "layout-unfold1.html" %}
\r
4 {{ wizard.form.media }}
\r
7 {% block unfold_main %}
\r
9 <link rel="stylesheet" type="text/css" href="{{STATIC_URL}}/css/onelab.css" />
\r
11 <!-- Reputation Specific -->
\r
12 <link rel="stylesheet" type="text/css" href="{{STATIC_URL}}reputation_static/css/main.css" />
\r
14 <link rel="stylesheet" type="text/css" href="{{STATIC_URL}}reputation_static/css/jquery-ui-1.9.2.custom.min.css" />
\r
16 <link rel="stylesheet" type="text/css" href="{{STATIC_URL}}reputation_static/css/jquery.rating.css" />
\r
18 <script src="{{STATIC_URL}}reputation_static/js/jquery-1.9.0.min.js" type="text/javascript"></script>
\r
19 <script type="text/javascript" src="{{STATIC_URL}}reputation_static/js/ui/jquery-ui-1.9.2.custom.min.js"></script>
\r
20 <script type="text/javascript" src="{{STATIC_URL}}reputation_static/js/jquery.raty.min.js"></script>
\r
23 color: rgb(96, 96, 216);
\r
24 width:75% !important;
\r
27 .ui-accordion-header, .ui-accordion-content {
\r
28 width:120% !important;
\r
44 #slicelist li:last-child {
\r
58 #scoreform > ol > li > div > input:first-child {
\r
59 margin: 4px 3px 0 0;
\r
61 #scoreform > ol > li > div > input:last-child {
\r
62 margin: 4px 3px 0 10px;
\r
66 <div id='rep-container' align="center" style="text-align:left;margin-left:1%;">
\r
71 <li><a href="#tabs-1">Testbeds' Reputation</a></li>
\r
72 <li><a href="#tabs-2">Evaluate your experiments</a></li>
\r
77 <table class="reptable table table-bordered table-hover">
\r
80 {% for service in rep_serv %}
\r
81 <th id='service{{forloop.counter}}' class='{{service}}-class'>Service: {{ service}} </th>
\r
86 {% for testbed_rep in reputation %}
\r
87 <tr class="border_bottom">
\r
89 <span> {{ testbed_rep.testbed }} </span>
\r
92 {% for tb_serv in testbed_rep.services %}
\r
105 <h1>Experiment Evaluation</h1>
\r
106 <p><b>List of your unrated experiments</b></p><div id="slicelist">
\r
108 {% for aslice in slicelist %}
\r
109 <h3>Slice <b>{{ aslice.slice_hrn }}</b></h3>
\r
110 <div style="padding-bottom:0;padding-top:0;">
\r
112 experiment from <b>{{ aslice.start_t }}</b> to <b>{{ aslice.end_t }}</b> | <a href="#" class="rate_button" data-resid={{ aslice.id }}>Rate it</a>
\r
126 <div id="scoreform" style="display:none">
\r
129 <span>How was your overall experience with NETMODE Testbed?</span>
\r
134 Did you experience any problems during the experiment?
\r
136 <input type="radio" name="q2" value="1" />Yes
\r
137 <input type="radio" name="q2" value="0" />No
\r
142 How would you rate the provided user support (instructions, tutorials, email support)?
\r
147 Would you use NETMODE testbed again?
\r
149 <input type="radio" name="q4" value="1" />Yes
\r
150 <input type="radio" name="q4" value="0" />No
\r
154 Would you be willing to pay for this service?
\r
156 <input type="radio" name="q5" value="1" />Yes
\r
157 <input type="radio" name="q5" value="0" />No
\r
161 How would you rate the Node Availability in the experiment?
\r
166 How would you rate the Link Quality regarding PDR in the experiment (1:Very Low, 5:Very High )?
\r
171 Rate your level of certainty regarding your answers above?
\r
178 <a href="#">Submit »</a>
\r
186 <div id='temp_log' style="display: none;">
\r
188 <table class="mytable table table-bordered table-hover">
\r
190 <th>User Email</th>
\r
198 {% for slice in slices_users %}
\r
199 <tr class="border_bottom">
\r
201 <a href="/portal/user/{{slice.user}}"><span class="glyphicon glyphicon-search"></span></a>
\r
204 <td class="odd"> {{ slice.user_hrn }} </td>
\r
205 <td class="even"> {{ slice.slice_hrn }} </td>
\r
206 <td class="even"> {{ slice.resource }} </td>
\r
207 <td class="even"> {{ slice.lease }} </td>
\r
214 <div id='logging_out'>{{ logging_test }}</div>
\r
218 <!-- END of Reputation Specific -->
\r
221 <div class="onelab-title well-lg">
\r
222 <h2>Onelab Support</h2>
\r
223 <h4>If you have already registered, then please send an <a href="mailto:support@myslice.info">e-mail</a>
\r
224 or <a href="http://trac.myslice.info/" >visit us</a></h4>
\r
228 <!-- Reputation Specific -->
\r
230 <script type="text/javascript">
\r
232 serv_per_tb = jQuery.parseJSON('{{ serv_per_tb|safe }}');
\r
235 $( "#tabs" ).tabs();
\r
238 var data = jQuery.parseJSON('{{ json_data|safe }}');
\r
253 function initDialog() {
\r
256 $("input:radio").removeAttr("checked");
\r
257 $("#submit > a").click(function() {
\r
258 if ($("#q2 input:checked").val()) {
\r
259 q2 = $("#q2 input:checked").val();
\r
261 if ($("#q4 input:checked").val()) {
\r
262 q4 = $("#q4 input:checked").val();
\r
264 if ($("#q5 input:checked").val()) {
\r
265 q5 = $("#q5 input:checked").val();
\r
268 $("a[data-resid='"+resid+"']").css("text-decoration", "line-through").unbind("click").removeAttr("href");
\r
270 //TODO: check input if valid before submitting
\r
272 sum = q1 + q2 + q3 + q4 + q5 + q6 + q7 +q8;
\r
275 alert("Please provide at least one rating to submit");
\r
278 $("#scoreform").dialog("close");
\r
280 for(var event in data){
\r
281 if ((data[event]).id == resid) {
\r
282 slicedata = (data[event]);
\r
288 slicedata["user_eval"] = {'overall':q1, 'problems':q2, 'support':q3, 'reuse':q4, 'pay':q5, 'availability':q6, 'link_quality':q7, 'quality':q8};
\r
289 testbeds_str = JSON.stringify(slicedata['testbeds'])
\r
290 delete slicedata['testbeds'];
\r
291 //console.log(JSON.stringify(slicedata))
\r
295 url: "reputation/submit_eval",
\r
296 data: {slicedata: slicedata, testbeds: testbeds_str},
\r
297 accepts: "application/json",
\r
298 success: function (data) {
\r
299 var json = $.parseJSON(data);
\r
302 error: function(xhr,errmsg,err) {
\r
303 alert(" X " + errmsg + " X " + err+ ": " + xhr.responseText);
\r
313 starOn: 'static/reputation_static/img/star-on.png',
\r
314 starOff: 'static/reputation_static/img/star-off.png',
\r
315 click: function(score, evt) {
\r
322 starOn: 'static/reputation_static/img/star-on.png',
\r
323 starOff: 'static/reputation_static/img/star-off.png',
\r
324 click: function(score, evt) {
\r
331 starOn: 'static/reputation_static/img/star-on.png',
\r
332 starOff: 'static/reputation_static/img/star-off.png',
\r
333 click: function(score, evt) {
\r
340 starOn: 'static/reputation_static/img/star-on.png',
\r
341 starOff: 'static/reputation_static/img/star-off.png',
\r
342 click: function(score, evt) {
\r
349 starOn: 'static/reputation_static/img/star-on.png',
\r
350 starOff: 'static/reputation_static/img/star-off.png',
\r
351 click: function(score, evt) {
\r
358 vars with answers to questions
\r
361 $("#slicelist").accordion({
\r
362 heightStyle: "content"
\r
367 clone = $("#scoreform").clone(true);
\r
369 $(".rate_button").click(function() {
\r
378 resid = $(this).attr("data-resid");
\r
381 for(var event in data){
\r
382 if ((data[event]).id == resid) {
\r
383 slicedata = (data[event]);
\r
388 for (var tb in slicedata["testbeds"]){
\r
389 for (var srv in serv_per_tb[tb]){
\r
390 if (srv != 'equals') {
\r
391 //console.log(serv_per_tb[tb][srv]);
\r
392 srv_arr.push(serv_per_tb[tb][srv])
\r
398 cq6 = "availability";
\r
399 cq7 = "link_quality";
\r
403 if ($.inArray(cq1, srv_arr) == -1 ){
\r
404 $("#scoreform > ol").children(':eq('+0+')').remove();
\r
406 if ($.inArray(cq6, srv_arr) == -1 ){
\r
407 $("#scoreform > ol").children(':eq('+5+')').remove();
\r
409 if ($.inArray(cq7, srv_arr) == -1 ){
\r
410 $("#scoreform > ol").children(':eq('+6+')').remove();
\r
413 $("#scoreform").dialog({
\r
414 title: "Rate experiment",
\r
420 close : function() {
\r
421 $(this).dialog("destroy");
\r
422 $("#scoreform").remove();
\r
423 $("body").append(clone);
\r
434 <!-- END of Reputation Specific -->
\r