major updates to slice reservation page and plugins
[myslice.git] / plugins / queryupdater / static / js / queryupdater.js
index 7718253..4bd5189 100644 (file)
@@ -26,7 +26,7 @@
     // Record state through the query cycle
 
 
-    var QueryUpdater = Plugin.extend({
+    var QueryUpdaterPlugin = Plugin.extend({
 
         init: function(options, element) {
                this.classname="queryupdater";
@@ -79,6 +79,7 @@
 
             var accepted_sla = Array();
             var count = 0;
+            var self = e.data;
             // XXX check that the query is not disabled
 
             console.log("DATA VALUE: " + data.value);
             var flagVW = false;
             var  flagWi = false;
 
+            promt.append('<p>SLA description</p>');
+            
             var wilabForm = "";
-            var wimessage = '<p>SLA description</p><p>to be deployed</p>';
+            wilabForm += "<ul>";
             for(var iter = 0; iter < arrayselectedresources.length; iter++){
-                var list = '<p class="wi'+iter+'" name=wi"'+iter+'">'+arrayselectedresources[iter].toLowerCase()+'</p><br>';
+                var list = '<li class="wi'+iter+'" name=wi"'+iter+'">'+arrayselectedresources[iter].toLowerCase()+'</li>';
                 
-
                 if (arrayselectedresources[iter].toLowerCase().indexOf("wilab2") >= 0){
 
                     accepted_sla.push({"wilab2":false}); 
                 }
 
             }
+            wilabForm += "</ul>";
 
             //var wallmessage = '<p>SLA description</p><p>Testbed guarantees 0.99 Uptime rate for 0.99 rate of the VirtualWall resources during the sliver lifetime</p>';
 
             var wallForm = "";
+            wallForm += "<ul>";
             for(var iter = 0; iter < arrayselectedresources.length; iter++){
-                var list = '<class="wall'+iter+'" name=wall"'+iter+'" >'+arrayselectedresources[iter].toLowerCase()+'</p><br>';
+                var list = '<li class="wall'+iter+'" name=wall"'+iter+'" >'+arrayselectedresources[iter].toLowerCase()+'</li>';
                 
                 if (arrayselectedresources[iter].toLowerCase().indexOf("wall2") >= 0){
 
                 }
 
             }
-            promt.append(wimessage);
+            wallForm += "</ul>";
+            
             var flagDouble = false;
             if(flagWi)
             {
                 flagDouble = true;
+                promt.append('<p>Testbed guarantees 0.99 Uptime rate for 0.99 rate of the WiLab2 resources during the sliver lifetime</p>');
                 promt.append(wilabForm);
+                promt.append('<br />');
             }
             if(flagVW)
             {
                 //promt.append(wallmessage);
                 flagDouble = true;
+                promt.append('<p>Testbed guarantees 0.99 Uptime rate for 0.99 rate of the VirtualWall resources during the sliver lifetime</p>');
                 promt.append(wallForm);
+                promt.append('<br />');
             }
 
                         
             // var wimessage = '<p>SLA description</p><p>Testbed guarantees 0.99 Uptime rate for 0.99 rate of the VirtualWall resources during the sliver lifetime</p>'
 
+            if(flagWi || flagVW){
                 $('#sla_dialog').show();
+
                     $('#slamodal-wilab2').modal('show');
-                    
+            }
+            else
+            {
+                
+
+                var username = e.data.options.username;
+                var urn = data.value;
+                // XXX check that the query is not disabled
+
+                self.spin();
+                // XXX check that the query is not disabled
+                manifold.raise_event(self.options.query_uuid, RUN_UPDATE);
+                return;
+            }
                     
                         $("#accept_sla_wilab2").click(function(){
                             console.log("SLA ACCEPTED");
                                     $('#slamodal-wilab2').modal('hide');
                                 accepted_sla["wilab2"] = true;
                             
-                                this.do_update(e);
+                                manifold.raise_event(self.options.query_uuid, RUN_UPDATE);
                             }
+                            $('#modal-body').empty();
                         }); 
                     
                         $("#dismiss_sla_wilab2").click(function(){
                             console.log("SLA NOT ACCEPTED");
                             $('#slamodal-wilab2').modal('hide');
+                            $('#modal-body').empty();
                         }); 
+                
+            // } else {
+            //     this.do_update(e);
+            // }
 
             // for(var iter = 0; iter < arrayselectedresources.length; iter++){
             //     var list = '<input type="checkbox" name="'+iter+'" >'+arrayselectedresources[iter].toLowerCase()+'<br>';
 
         set_state: function(data)
         {
-            console.log("function set_state");
             var action;
             var msg;
             var button = '';
 
         // XXX we don't want to show automaticaly the pending when a checkbox is checked
            //this.toggle_on();
-           
-            switch(data.request) {
-                case FIELD_REQUEST_ADD_RESET:
-                case FIELD_REQUEST_REMOVE_RESET:
+
+            switch (data.status) {
+                case STATE_SET_IN_PENDING:
+                    action = 'ADD';
+                    msg   = 'PENDING';
+                    button = "<span class='glyphicon glyphicon-remove ResourceSelectedClose' id='" + data.key + "'/>";
+                    break;
+                case STATE_SET_OUT_PENDING:
+                    action = 'REMOVE';
+                    msg   = 'PENDING';
+                    button = "<span class='glyphicon glyphicon-remove ResourceSelectedClose' id='" + data.key + "'/>";
+                    break;
+                case STATE_SET_IN:
+                case STATE_SET_OUT:
                     // find line and delete it
+                    // XXX Naming is incorrect for badge-pending !!!!
+                    // XXX What is this badge ?
                     row = this.find_row(data.value);
                     if (row)
                         this.table.fnDeleteRow(row.nTr);
+                        /* indent was wrong !!
                         $("#badge-pending").data('number', $("#badge-pending").data('number') - 1 );
                         $("#badge-pending").text($("#badge-pending").data('number'));
+                        */
                     return;
-                case FIELD_REQUEST_CHANGE:
-                    action = 'UPDATE';
-                    break;
-                case FIELD_REQUEST_ADD:
-                    action = 'ADD';
-                    break;
-                case FIELD_REQUEST_REMOVE:
-                    action = 'REMOVE';
-                    break;
-            }
-
-            switch(data.status) {
-                case FIELD_REQUEST_PENDING:
-                    msg   = 'PENDING';
-                    button = "<span class='glyphicon glyphicon-remove ResourceSelectedClose' id='" + data.key + "'/>";
-                    break;
-                case FIELD_REQUEST_SUCCESS:
+                    break;  
+                case STATE_SET_IN_SUCCESS:
+                case STATE_SET_OUT_SUCCESS:
                     msg   = 'SUCCESS';
                     break;
-                case FIELD_REQUEST_FAILURE:
+                case STATE_SET_IN_FAILURE:
+                case STATE_SET_OUT_FAILURE:
                     msg   = 'FAILURE';
                     break;
+                case STATE_CHANGE:
+                    action = 'UPDATE';
+                    break;
+                
             }
 
             var status = msg + status;
 
-            
-
             // find line
             // if no, create it, else replace it
             // XXX it's not just about adding lines, but sometimes removing some
             // XXX how do we handle status reset ?
-            data.value = JSON.stringify(data.value);
+
+            // Jordan : I don't understand this. I added this test otherwise we have string = ""..."" double quoted twice.
+            if (typeof(data.value) !== "string")
+                data.value = JSON.stringify(data.value);
             data.selected_resources = this.selected_resources;
             row = this.find_row(data.value);
             newline = [
                 // XXX second parameter refresh = false can improve performance. todo in querytable also
                 this.table.fnAddData(newline);
                 row = this.find_row(data.value);
+                /*
                 $("#badge-pending").data('number', $("#badge-pending").data('number') + 1 );
                 $("#badge-pending").text($("#badge-pending").data('number'));
+                */
             } else {
                 // Update row text...
                 this.table.fnUpdate(newline, row.nTr);
 
         on_new_record: function(record)
         {
-            console.log("query_updater on_new_record");
-            console.log(record);
 
             // if (not and update) {
 
 
         on_query_done: function()
         {
-            console.log("on_query_done");
             this.unspin();
         },
 
         // NOTE: record_key could be sufficient 
         on_added_record: function(record)
         {
-            console.log("on_added_record = ",record);
             this.set_record_state(record, RECORD_STATE_ADDED);
             // update pending number
         },
 
         on_removed_record: function(record_key)
         {
-            console.log("on_removed_record = ",record_key);
             this.set_record_state(RECORD_STATE_REMOVED);
         },
 
 
         on_field_state_changed: function(result)
         {
-            console.log("on_field_state_changed");
-            console.log(result);
             if(result.request == FIELD_REQUEST_ADD){
                 this.selected_resources.push(result.value);
             } else if(result.request == FIELD_REQUEST_REMOVE_RESET){
                     this.selected_resources.splice(i,1);
                 }
             }
-            console.log("Resources: " + self.selected_resources);
             messages.debug(result)
-            /* this.set_state(result.request, result.key, result.value, result.status); */
+
             this.set_state(result);
         },
 
 
     });
 
-    $.plugin('QueryUpdater', QueryUpdater);
+    $.plugin('QueryUpdaterPlugin', QueryUpdaterPlugin);
 
 })(jQuery);