automatic reload on lists; new django decorator for ajax request
[osm/LW-UI.git] / projecthandler / template / project / osm / osm_project_descriptors.html
index 30ea76a..182c8cc 100644 (file)
@@ -22,7 +22,7 @@
 
 {% block breadcrumb_body %}
        {{ block.super }}
-    <li><a href="{% url 'projects:open_project' project_id=project_id %}">{{project_overview_data.name}}</a></li>
+    <li><a href="{% url 'projects:open_project' %}">{{project_id}}</a></li>
     <li><a> {% if descriptor_type  %}
      {{ descriptor_type }}
   {% else%}
 
 {% block resource_block %}
        {{ block.super }}
-    <script src="/static/bower_components/select2/dist/js/select2.js"></script>
     <script>
-        function deletePackage(project_id, descriptor_type, package_id) {
-            bootbox.confirm("Are you sure want to delete?", function (result) {
-                if (result) {
-                    location.href = '/projects/' + project_id + '/descriptors/' + descriptor_type + '/' + package_id + '/delete'
-                }
-            })
-        }
-
-        function openModalCreateNS(project_id, descriptor_type, descriptor_id) {
-            select2_groups = $('#vimAccountId').select2({
-                placeholder: 'Select VIM',
-                ajax: {
-                    url: '{% url "vim:list" %}',
-                    dataType: 'json',
-                    processResults: function (data) {
-                        vims = [];
-                        if (data['datacenters']){
-                            for(d in data['datacenters']){
-                            var datacenter = data['datacenters'][d];
-                            vims.push({id: datacenter['_id'], text: datacenter['name']})
-                        }
-                        }
-
-                        return {
-                            results: vims
-                        };
+    var csrf_token = '{{csrf_token}}';
+    var descr_list_url = '{% url "projects:list_descriptors"   descriptor_type=descriptor_type%}';
+    var vim_list_url = '{% url "vims:list"  %}';
+    var new_desc_url ="{% url 'projects:new_descriptor'  descriptor_type=descriptor_type %}";
+    var descriptor_type = '{{ descriptor_type }}';
+    var project_id = '{{ project_id }}';
+    $(document).ready( function () {
+        var table = $('#descriptors_table').DataTable({
+            responsive: true,
+            "ajax": {
+                "url": "/projects/descriptors/" +descriptor_type+"/list",
+                "dataSrc": function (json) {
+                    return json['descriptors'];
+                },
+                statusCode: {
+                    401: function () {
+                        console.log("no auth");
+                        moveToLogin(window.location.pathname);
                     }
-                }
-            });
-            $('#nsdId').val(descriptor_id);
-            $('#modal_new_instance').modal('show');
-        }
-
-        function openPackageContentList(project_id, type, pkg_id) {
-            var dialog = bootbox.dialog({
-                message: '<div class="text-center"><i class="fa fa-spin fa-spinner"></i> Loading...</div>',
-                closeButton: true
-            });
-            $.ajax({
-                url: '/projects/' + project_id + '/descriptors/' + type + '/' + pkg_id + '/action/get_package_files_list',
-                type: 'GET',
-                dataType: "json",
-                contentType: "application/json;charset=utf-8",
-                success: function (result) {
-                    //$('#modal_show_vim_body').empty();
-                    console.log(result)
-                    dialog.modal('hide');
-                    build_file_list("Files in " + pkg_id, result.files);
                 },
-                error: function (result) {
-                    dialog.modal('hide');
-                    bootbox.alert("An error occurred while retrieving the package content.");
+                "error": function (hxr, error, thrown) {
+                    console.log(hxr)
+                    console.log(thrown)
+                    console.log(error);
                 }
-            });
-        }
-
-
-        function build_file_list(title, list) {
-            $('#files_list_tbody').find('tr:gt(0)').remove();
-            $('#files_list_tbody_title').text(title)
-            for (var i in list) {
-                var template = '<tr><td>-</td><td>' + list[i] + '</td><td><button type="button" class="btn btn-default" onclick="" disabled><i class="fa fa-folder-open"></i></button></td></tr>'
-                $('#files_list_tbody').append(template)
-            }
-            $('#modal_files_list').modal('show');
-        }
+
+            },
+            "columns": [
+                {
+                    "render": function (data, type, row) {
+                       return row['short-name'];
+                    },
+                    "targets": 0
+                },
+                {
+                    "render": function (data, type, row) {
+                       return row['_id'];
+                    },
+                    "targets": 1
+                },
+                {
+                    "render": function (data, type, row) {
+                       return row['description'] || '';
+                    },
+                    "targets": 2
+                },
+                {
+                    "render": function (data, type, row) {
+                       return row['vendor'] || '';
+                    },
+                    "targets": 3
+                },
+                {
+                    "render": function (data, type, row) {
+                       return row['version'] || '';
+                    },
+                    "targets": 4
+                },
+                {
+                    "render": function (data, type, row) {
+                       var result = '<div class="btn-group">\n' ;
+                       if(descriptor_type == "nsd")
+                           result += '    <button type="button" class="btn btn-default" data-container="body"\n' +
+                               'data-toggle="tooltip" data-placement="top" title="Instantiate NS"\n' +
+                               'onclick="javascript:openModalCreateNS({ \'project_id\':\'' + project_id +'\', \'descriptor_type\': \''+ descriptor_type +'\', \'descriptor_name\':\''+row["name"]+'\', \'descriptor_id\':\''+row["_id"]+'\',\'vim_list_url\': \''+vim_list_url+'\',  \'nsd_list_url\': \''+descr_list_url+'\' })">\n' +
+                               '<i class="fa fa-paper-plane"></i></button>\n';
+                        result += '<button type="button" class="btn btn-default" data-container="body"\n' +
+                           '        data-toggle="tooltip" data-placement="top" title="Edit"\n' +
+                           '        onclick="javascript:openDescriptorView(\''+descriptor_type+'\', \''+row["_id"]+'\')">\n' +
+                           '    <i class="fa fa-edit"></i></button>\n' +
+                           '<button type="button" class="btn btn-default" data-container="body"\n' +
+                           '        data-toggle="tooltip" data-placement="top" title="Show content"\n' +
+                           '        onclick="javascript:openPackageContentList(\''+ descriptor_type +'\', \''+row["_id"]+'\')">\n' +
+                           '    <i class="fa fa-folder-open"></i></button>\n' +
+                           '<button type="button" class="btn btn-default" data-container="body"\n' +
+                           '        data-toggle="tooltip" data-placement="top" title="Show Graph"\n' +
+                           '        onclick="location.href=\'/projects/graph?type='+descriptor_type+'&id='+row["_id"] +'\'"\n' +
+                           '        disabled><i class="fa fa-sitemap fa-fw"></i></button>\n' +
+                           '<button type="button" class="btn btn-default" data-container="body"\n' +
+                           '        data-toggle="tooltip" data-placement="top" title="Download package"\n' +
+                           '        onclick="location.href=\'/projects/descriptors/'+descriptor_type+'/'+ row["_id"] +'/action/download_pkg\'">\n' +
+                           '    <i class="fa fa-download fa-fw"></i></button>\n' +
+                           '<button type="button" class="btn btn-default" data-container="body"\n' +
+                           '        data-toggle="tooltip" data-placement="top" title="Delete"\n' +
+                           '        onclick="javascript:deletePackage( \'' + descriptor_type + '\', \''+row["_id"] + '\')">\n' +
+                           '    <i class="far fa-trash-alt"></i></button>\n' +
+                           '</div>';
+
+                               return result
+                    },
+                    "targets": 5
+                }]
+
+
+        });
+
+        setInterval(function () {
+                table.ajax.reload();
+            }, 10000);
+    });
     </script>
+    <script src="/static/bower_components/select2/dist/js/select2.js"></script>
+    <script src="/static/src/instancehandler/instance_create.js"></script>
+    <script src="/static/src/projecthandler/descriptorslist.js"></script>
+    <script src="/static/src/projecthandler/onboard_package.js"></script>
+
 {% endblock %}
 
 {% block footer %}