first commit
[osm/LW-UI.git] / static / topology3D / js / graph_request.js
diff --git a/static/topology3D/js/graph_request.js b/static/topology3D/js/graph_request.js
new file mode 100644 (file)
index 0000000..055fc1c
--- /dev/null
@@ -0,0 +1,318 @@
+/*
+   Copyright 2017 CNIT - Consorzio Nazionale Interuniversitario per le Telecomunicazioni
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an  BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
+if (typeof dreamer === 'undefined') {
+    var dreamer = {};
+}
+var level = {}
+
+dreamer.GraphRequests = (function(global) {
+    'use strict';
+
+    var DEBUG = true;
+
+    GraphRequests.prototype.constructor = GraphRequests;
+
+    /**
+     * Constructor
+     */
+    function GraphRequests(args) {
+
+
+    }
+
+    GraphRequests.prototype.addNode = function(args, choice, success, error) {
+        var data = new FormData();
+        data.append('csrfmiddlewaretoken', this.getCookie('csrftoken'));
+
+        data = args_to_formdata(args, data);
+
+        //FIXME questo metodo dovrebbere essere generico
+        if(args.existing_element)
+            data.append('existing_element', args.existing_element ? args.existing_element : false)
+        //if (choice)
+        //    data.append('choice', choice);
+        $.ajax({
+            url: "addelement",
+            type: 'POST',
+            data: data,
+            cache: false,
+            contentType: false,
+            processData: false,
+            success: function(result) {
+                if (success)
+                    success();
+            },
+            error: function(result) {
+                if (error)
+                    error(result);
+                log("some error: " + result);
+            }
+        });
+    };
+
+    GraphRequests.prototype.removeNode = function(args, choice, success, error) {
+        var data = new FormData();
+        data.append('csrfmiddlewaretoken', this.getCookie('csrftoken'));
+
+        data = args_to_formdata(args, data);
+
+        $.ajax({
+            url: "removeelement",
+            type: 'POST',
+            data: data,
+            cache: false,
+            contentType: false,
+            processData: false,
+            success: function(result) {
+                if (success)
+                    success();
+            },
+            error: function(result) {
+                if (error)
+                    error(result);
+            }
+        });
+    };
+
+    GraphRequests.prototype.getNodeOverview = function(args, success, error) {
+
+        var params = jQuery.param(args)
+        console.log("params", params)
+        $.ajax({
+            url: "overviewelement?"+params,
+            type: 'GET',
+            success: function(result) {
+                if (success)
+                    success(result);
+            },
+            error: function(result) {
+                if (error)
+                    error(result);
+            }
+        });
+    };
+
+    GraphRequests.prototype.addLink = function(args, choice, success, error) {
+        var data = new FormData();
+        data.append('csrfmiddlewaretoken', this.getCookie('csrftoken'));
+        data = args_to_formdata(args, data);
+
+        //data.append('destination', JSON.stringify(destination));
+        if (choice)
+            data.append('choice', choice);
+        //if(link.desc_id)
+        //    data.append('element_desc_id', link.desc_id || '');
+        $.ajax({
+            url: "addlink",
+            type: 'POST',
+            data: data,
+            cache: false,
+            contentType: false,
+            processData: false,
+            success: function(result) {
+                if (success)
+                    success();
+            },
+            error: function(result) {
+                if (error)
+                    error(result);
+                log("some error: " + result);
+            }
+        });
+    };
+
+    GraphRequests.prototype.removeLink = function(args, success, error) {
+        var data = new FormData();
+        data.append('csrfmiddlewaretoken', this.getCookie('csrftoken'));
+        data = args_to_formdata(args, data);
+
+        $.ajax({
+            url: "removelink",
+            type: 'POST',
+            data: data,
+            cache: false,
+            contentType: false,
+            processData: false,
+            success: function(result) {
+                if (success)
+                    success();
+            },
+            error: function(result) {
+                if (error)
+                    error(result);
+                log("some error: " + result);
+            }
+        });
+    };
+
+    //
+    GraphRequests.prototype.getAvailableNodes = function(args, success, error){
+        var data = new FormData();
+        data.append('csrfmiddlewaretoken', this.getCookie('csrftoken'));
+        $.ajax({
+            url: "availablenodes?layer="+args.layer,
+            type: 'GET',
+            success: function(result) {
+                if (success)
+                    success(result);
+            },
+            error: function(result) {
+                if (error)
+                    error(result);
+                log("some error: " + result);
+            }
+        });
+    }
+
+    GraphRequests.prototype.savePositions = function(positions, success, error) {
+        var data = new FormData();
+        data.append('csrfmiddlewaretoken', this.getCookie('csrftoken'));
+        data.append('positions', JSON.stringify(positions));
+        $.ajax({
+            url: "positions",
+            type: 'POST',
+            data: data,
+            cache: false,
+            contentType: false,
+            processData: false,
+            success: function(result) {
+                if (success)
+                    success();
+            },
+            error: function(result) {
+                if (error)
+                    error(result);
+                log("some error: " + result);
+            }
+        });
+    };
+
+    /*  START ETSI methods  */
+    GraphRequests.prototype.addVnffg = function(args, success, error) {
+        var data = new FormData();
+        data.append('csrfmiddlewaretoken', this.getCookie('csrftoken'));
+       /* data.append('group_id', args.info.group[0]);
+        data.append('element_id', args.id);
+        data.append('element_type', args.info.type);*/
+        data = args_to_formdata(args, data);
+        $.ajax({
+            url: "addelement",
+            type: 'POST',
+            data: data,
+            cache: false,
+            contentType: false,
+            processData: false,
+            success: function(result) {
+                if (success)
+                    success(result);
+            },
+            error: function(result) {
+                if (error)
+                    error(result);
+                log("some error: " + result);
+            }
+        });
+    };
+
+    GraphRequests.prototype.addNodeToVnffg = function(args, success, error) {
+        var data = new FormData();
+        data.append('csrfmiddlewaretoken', this.getCookie('csrftoken'));
+       /* data.append('group_id', args.info.group[0]);
+        data.append('element_id', args.id);
+        data.append('element_type', args.info.type);
+        data.append('vnffg_id', args.vnffgId);*/
+        data = args_to_formdata(args, data);
+
+        $.ajax({
+            url: "addnodetovnffg",
+            type: 'POST',
+            data: data,
+            cache: false,
+            contentType: false,
+            processData: false,
+            success: function(result) {
+                if (success)
+                    success(result);
+            },
+            error: function(result) {
+                if (error)
+                    error(result);
+                log("some error: " + result);
+            }
+        });
+    };
+
+    GraphRequests.prototype.getUnusedVnf = function(nsd_id, success, error) {
+        var data = new FormData();
+        data.append('csrfmiddlewaretoken', this.getCookie('csrftoken'));
+        $.ajax({
+            url: "unusedvnf/" + nsd_id,
+            type: 'GET',
+            success: function(result) {
+                if (success)
+                    success(result);
+            },
+            error: function(result) {
+                if (error)
+                    error(result);
+                log("some error: " + result);
+            }
+        });
+
+    };
+    /*  END ETSI methods  */
+
+    GraphRequests.prototype.getCookie = function(name) {
+        var cookieValue = null;
+        if (document.cookie && document.cookie !== '') {
+            var cookies = document.cookie.split(';');
+            for (var i = 0; i < cookies.length; i++) {
+                var cookie = jQuery.trim(cookies[i]);
+                // Does this cookie string begin with the name we want?
+                if (cookie.substring(0, name.length + 1) === (name + '=')) {
+                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
+                    break;
+                }
+            }
+        }
+        return cookieValue;
+    };
+
+    function args_to_formdata(args, form_data){
+        for ( var key in args ) {
+            form_data.append(key, args[key]);
+        }
+        return form_data;
+    };
+
+
+    /**
+     * Log utility
+     */
+    function log(text) {
+        if (DEBUG)
+            console.log("::GraphRequests::", text);
+    }
+
+    return GraphRequests;
+
+
+}(this));
+
+if (typeof module === 'object') {
+    module.exports = dreamer.GraphRequests;
+}