1 {% extends
"base.html" %}
8 <link rel=
"stylesheet" href=
"/static/bower_components/codemirror/lib/codemirror.css">
9 <link rel=
"stylesheet" href=
"/static/bower_components/codemirror/addon/fold/foldgutter.css" />
10 <link rel=
"stylesheet" href=
"/static/bower_components/codemirror/theme/neat.css">
11 <link rel=
"stylesheet" href=
"/static/bower_components/codemirror/addon/dialog/dialog.css">
12 <link rel=
"stylesheet" href=
"/static/bower_components/codemirror/addon/display/fullscreen.css">
13 <link rel=
"stylesheet" href=
"/static/bower_components/select2/dist/css/select2.min.css">
14 <link rel=
"stylesheet" href=
"/static/bower_components/datatables.net-bs/css/dataTables.bootstrap.min.css">
16 {% block title_header_big %}
18 Network Slices Templates
20 {% block left_sidebar %}
22 {% include 'osm/osm_project_left_sidebar.html' %}
27 {% block breadcrumb_body %}
29 <li><a href=
"{% url "netslices:list_templates
" %}">NetSlice Templates
</a></li>
32 {% block content_body %}
34 {% include 'modal/nst_details.html' %}
35 {% include 'modal/instance_create_nsi.html' %}
38 <div class=
"col-md-12">
41 <div class=
"box-header with-border">
42 <h3 class=
"box-title"></h3>
43 <div class=
"box-tools"></div>
45 <div class=
"box-body">
46 <table id=
"templates_table" class=
"table table-bordered table-striped dataTable" role=
"grid">
65 <div class=
"col-sm-12">
66 <div class=
"box box-solid">
67 <div class=
"box-body">
69 <div class=
"upload-drop-zone" id=
"drop-zone">
70 <i class=
"fa fa-upload"></i> Just drag and drop files here
79 {% block resource_block %}
81 <script src=
"/static/bower_components/select2/dist/js/select2.js"></script>
82 <script src=
"/static/bower_components/codemirror/lib/codemirror.js"></script>
83 <script src=
"/static/bower_components/codemirror/addon/fold/foldcode.js"></script>
84 <script src=
"/static/bower_components/codemirror/addon/fold/foldgutter.js"></script>
85 <script src=
"/static/bower_components/codemirror/addon/fold/brace-fold.js"></script>
86 <script src=
"/static/bower_components/codemirror/mode/javascript/javascript.js"></script>
87 <script src=
"/static/bower_components/codemirror/addon/search/searchcursor.js"></script>
88 <script src=
"/static/bower_components/codemirror/addon/search/search.js"></script>
89 <script src=
"/static/bower_components/codemirror/addon/dialog/dialog.js"></script>
90 <script src=
"/static/bower_components/codemirror/addon/display/autorefresh.js"></script>
91 <script src=
"/static/bower_components/codemirror/addon/edit/matchbrackets.js"></script>
92 <script src=
"/static/bower_components/codemirror/addon/edit/closebrackets.js"></script>
93 <script src=
"/static/bower_components/codemirror/addon/display/fullscreen.js"></script>
94 <script src=
"/static/bower_components/codemirror/keymap/sublime.js"></script>
95 <script src=
"/static/bower_components/datatables.net/js/jquery.dataTables.min.js"></script>
96 <script src=
"/static/bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js"></script>
97 <script src=
"/static/src/drop_zone.js"></script>
98 <script src=
"/static/src/netslicehandler/onboard_template.js"></script>
99 <script src=
"/static/src/netslicehandler/templates_list.js"></script>
100 <script src=
"/static/src/instancehandler/instance_create.js"></script>
102 var csrf_token = '{{csrf_token}}';
109 $(document).ready(function () {
110 table = $('#templates_table').DataTable({
113 "url":
"netslices/templates/list",
114 "dataSrc": function (json) {
115 return json['templates'];
119 console.log(
"no auth");
120 moveToLogin(window.location.pathname);
123 "error": function (hxr, error, thrown) {
132 "render": function (data, type, row) {
133 return row['name'] || '';
138 "render": function (data, type, row) {
144 "render": function (data, type, row) {
145 return row['_admin']['usageState'];
150 "render": function (data, type, row) {
151 return '
<div class=
"btn-group">' +
152 '
<button type=
"button" class=
"btn btn-default" data-container=
"body"\n' +
153 '
data-toggle=
"tooltip" data-placement=
"top" title=
"Instantiate NS"\n' +
154 '
onclick=
"javascript:openModalCreateNSI({\'template_name\':\''+row["name
"]+'\', \'template_id\':\''+row["_id
"]+'\', \'project_id\':\'{{ project_id }}\',\'vim_list_url\': \'{% url "vims:list
" %}\', \'nst_list_url\': \'{% url "netslices:list_templates
" %}\'})">\n' +
155 '
<i class=
"fa fa-paper-plane"></i></button>\n'+
156 '
<button type=
"button" class=
"btn btn-default"' +
157 '
onclick=
"javascript:showNstDetails(\'' + row["_id
"] + '\')"' +
158 '
data-toggle=
"tooltip" data-placement=
"top" data-container=
"body" title=
"Open">' +
159 '
<i class=
"fa fa-info"></i>' +
161 '
<button type=
"button" class=
"btn btn-default"' +
162 '
onclick=
"window.location.href=\'/netslices/templates/'+row["_id
"]+'/edit\'"' +
163 '
data-toggle=
"tooltip" data-placement=
"top" data-container=
"body" title=
"Edit">' +
164 '
<i class=
"fa fa-edit"></i>' +
166 '
<button type=
"button" class=
"btn btn-default"' +
167 '
onclick=
"javascript:deleteTemplate(\'' + row["name
"] + '\', \'' + row["_id
"] + '\')"' +
168 '
data-toggle=
"tooltip" data-placement=
"top" data-container=
"body" title=
"Delete"><i' +
169 '
class=
"far fa-trash-alt"></i></button>' +
178 setInterval(function () {
182 var json_editor_settings = {
184 showCursorWhenSelecting: true,
189 gutters: [
"CodeMirror-linenumbers",
"CodeMirror-foldgutter"],
190 autoCloseBrackets: true,
193 "F11": function (cm) {
194 cm.setOption(
"fullScreen", !cm.getOption(
"fullScreen"));
196 "Esc": function (cm) {
197 if (cm.getOption(
"fullScreen")) cm.setOption(
"fullScreen", false);
199 "Ctrl-Q": function (cm) {
200 cm.foldCode(cm.getCursor());
206 var myJsonTextArea = document.getElementById(
"nst_view_json");
207 editorJSON = CodeMirror(function (elt) {
208 myJsonTextArea.parentNode.replaceChild(elt, myJsonTextArea);
209 }, json_editor_settings);
212 function refreshTable() {