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
10 <link rel="stylesheet" type="text/css" href="{{STATIC_URL}}/css/fed4fire.css" />
\r
11 <!-- unbound Specific -->
\r
12 <link rel="stylesheet" type="text/css" href="{{STATIC_URL}}unbound_reservation_static/css/bootstrap.css">
\r
13 <link rel="stylesheet" type="text/css" href="{{STATIC_URL}}unbound_reservation_static/css/workflow.css">
\r
15 <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
\r
16 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
\r
17 <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
\r
18 <link rel="stylesheet" type="text/css" href="{{STATIC_URL}}unbound_reservation_static/css/dhtmlxform.css"/>
\r
19 <link rel="stylesheet" type="text/css" href="{{STATIC_URL}}unbound_reservation_static/css/rmenu_styles.css"/>
\r
21 div.dhxform_item_label_left.button_save div.dhxform_btn_txt {
\r
22 background-image: url(../common/imgs/save.gif);
\r
23 background-repeat: no-repeat;
\r
24 background-position: 0px 3px;
\r
26 margin: 0px 15px 0px 12px;
\r
28 div.dhxform_item_label_left.button_cancel div.dhxform_btn_txt {
\r
29 background-image: url(../common/imgs/cancel.gif);
\r
30 background-repeat: no-repeat;
\r
31 background-position: 0px 3px;
\r
33 margin: 0px 15px 0px 12px;
\r
36 <link rel="stylesheet" type="text/css" href="{{STATIC_URL}}unbound_reservation_static/css/dhtmlx.css"/>
\r
37 <script src="{{STATIC_URL}}unbound_reservation_static/lib/jsBezier-0.6.js"></script>
\r
38 <script src="{{STATIC_URL}}unbound_reservation_static/lib/jsplumb-geom-0.1.js"></script>
\r
39 <script src="{{STATIC_URL}}unbound_reservation_static/src/util.js"></script>
\r
40 <script src="{{STATIC_URL}}unbound_reservation_static/src/dom-adapter.js"></script>
\r
41 <script src="{{STATIC_URL}}unbound_reservation_static/src/jsPlumb.js"></script>
\r
42 <script src="{{STATIC_URL}}unbound_reservation_static/src/endpoint.js"></script>
\r
43 <script src="{{STATIC_URL}}unbound_reservation_static/src/connection.js"></script>
\r
44 <script src="{{STATIC_URL}}unbound_reservation_static/src/anchors.js"></script>
\r
45 <script src="{{STATIC_URL}}unbound_reservation_static/src/defaults.js"></script>
\r
46 <script src="{{STATIC_URL}}unbound_reservation_static/src/connectors-bezier.js"></script>
\r
47 <script src="{{STATIC_URL}}unbound_reservation_static/src/connectors-statemachine.js"></script>
\r
48 <script src="{{STATIC_URL}}unbound_reservation_static/src/connectors-flowchart.js"></script>
\r
49 <script src="{{STATIC_URL}}unbound_reservation_static/src/connector-editors.js"></script>
\r
50 <script src="{{STATIC_URL}}unbound_reservation_static/src/renderers-svg.js"></script>
\r
51 <script src="{{STATIC_URL}}unbound_reservation_static/src/renderers-canvas.js"></script>
\r
52 <script src="{{STATIC_URL}}unbound_reservation_static/src/renderers-vml.js"></script>
\r
53 <script src="{{STATIC_URL}}unbound_reservation_static/src/jquery.jsPlumb.js"></script>
\r
56 <script type="text/javascript" src="{{STATIC_URL}}unbound_reservation_static/js/main.js"></script>
\r
57 <script type="text/javascript" src="{{STATIC_URL}}unbound_reservation_static/js/bootstrap.min.js"></script>
\r
58 <script type="text/javascript" src="{{STATIC_URL}}unbound_reservation_static/js/createpost.js"></script>
\r
59 <script type="text/javascript" src="{{STATIC_URL}}unbound_reservation_static/js/script.js"></script>
\r
60 <script type="text/javascript" src="{{STATIC_URL}}unbound_reservation_static/js/contextmenu/contextMenu.js"></script>
\r
61 <script type="text/javascript" src="{{STATIC_URL}}unbound_reservation_static/js/contextmenu/contextMenu.min.js"></script>
\r
62 <link rel="stylesheet" type="text/css" href="{{STATIC_URL}}unbound_reservation_static/js/contextmenu/contextMenu.css">
\r
64 <script type="text/javascript" src="{{STATIC_URL}}unbound_reservation_static/js/menu/jquery.contextMenu.js"></script>
\r
65 <script type="text/javascript" src="{{STATIC_URL}}unbound_reservation_static/js/menu/jquery.ui.position.js"></script>
\r
66 <link rel="stylesheet" type="text/css" href="{{STATIC_URL}}unbound_reservation_static/js/menu/jquery.contextMenu.css">
\r
68 <script src="{{STATIC_URL}}unbound_reservation_static/lib/dhtmlx.js"></script>
\r
72 s=myslice.user().slices;
\r
74 //console.log(myslice.user.slices);
\r
75 $('input').bind('input', function() {
\r
76 alert($(this).value);
\r
78 var myForm, myForm2, formData,str;
\r
80 var columns_unsaved = {};
\r
85 document.body.onload = function(){
\r
89 myCalendar1 = new dhtmlXCalendarObject(["fromdate"]);
\r
90 myCalendar2 = new dhtmlXCalendarObject(["todate"]);
\r
91 if (d.getDate()<10) {
\r
92 var ndate="0"+(d.getDate()).toString();
\r
95 var ndate=(d.getDate()).toString();
\r
97 if (d.getMonth()+1<10) {
\r
98 var n=(d.getMonth()+1).toString();
\r
101 var nmonth=(d.getMonth()+1).toString();
\r
103 var today=d.getFullYear()+"-"+nmonth+"-"+ndate;
\r
104 //console.log("today:"+today);
\r
105 myCalendar1.setSensitiveRange( today, null);
\r
106 myCalendar1.setDateFormat("%D %M %j %H:%i:%s EET %Y");
\r
107 myCalendar2.setSensitiveRange(today, null);
\r
108 myCalendar2.setDateFormat("%D %M %j %H:%i:%s EET %Y");
\r
110 d.setDate(d.getDate());
\r
111 d.setHours(d.getHours());
\r
112 d.setMinutes(d.getMinutes());
\r
114 document.getElementById("fromdate").value = myCalendar1.getFormatedDate(null,d);
\r
119 document.getElementById("todate").value = myCalendar2.getFormatedDate(null,d);
\r
128 function setSens(inputId,mezh){
\r
129 var d1 = new Date();
\r
131 //myCalendar1.setSensitiveRange(null,d1.getDate());
\r
134 //myCalendar.setSensitiveRange(null,"2015-04-14");
\r
141 function doOnLoad() {
\r
142 //myAcc = new dhtmlXAccordion({
\r
143 // parent: "accObj",
\r
145 // {id: "a1", text: "General"},
\r
146 // {id: "a2", text: "ExoGeni"},
\r
147 // {id: "a3", text: "c"}
\r
151 var sel = document.getElementById('user_slices');
\r
152 for(var i = 0; i < s.length; i++) {
\r
153 var opt = document.createElement('option');
\r
154 opt.innerHTML = s[i];
\r
156 sel.appendChild(opt);
\r
164 {type: "combo", name:"testbed", label: "Select testbed", name: "testbed", options:[
\r
165 {text: "Netmode", value: "Netmode", selected: true},
\r
166 {text: "Nitos", value: "Nitos"},
\r
167 {text: "Wilabt", value: "wilabt"}
\r
171 {type: "combo", name:"exogeni", label: "ExoGeni Resource Type", name: "exogeni", options:[
\r
172 {text: "xo.small", value: "xo.small", selected: true},
\r
173 {text: "xo.medium", value: "xo.medium"},
\r
174 {text: "xo.large", value: "xo.large"},
\r
175 {text: "xo.xlarge", value: "xo.xlarge"},
\r
176 {text: "exogeni-m4", value: "exogeni-m4"}
\r
178 {type: "combo", name:"wftestbeds", label: "Select testbed", comboType: "checkbox", name: "wftestbeds", options:[
\r
179 {text: "iMinds WiLab 2", value: "iMinds WiLab 2", selected: true},
\r
180 {text: "clab", value: "clab"}
\r
184 {type: "button", name: "form_button_3", value: "Save changes"}
\r
188 // myForm = new dhtmlXForm("myForm", formData);
\r
190 //document.getElementsByName("form_button_3").addEventListener('click', getItemsList);
\r
195 function nodeid(sour,target,id) {
\r
197 document.getElementById("elemid").value=id;
\r
198 //document.disableItem("elemid");
\r
202 function renderForm() {
\r
203 //myForm = myAcc.cells("a1").attachForm();
\r
204 // myForm.loadStruct(formData);
\r
205 //myForm2 = myAcc.cells("a2").attachForm();
\r
206 //myForm2.loadStruct(formData1);
\r
207 myForm = new dhtmlXForm("myForm", formData);
\r
208 myForm.disableItem("elemid");
\r
209 for (var i in str) {
\r
210 var element_spec = str[i];
\r
211 var form_wrapper = document.getElementById('myForm');
\r
212 renderElement(form_wrapper, element_spec);
\r
217 function renderElement(container, spec) {
\r
219 switch (spec.type) {
\r
221 renderFieldset(container, spec);
\r
224 renderInputElement(container, spec);
\r
230 function renderInputElement(container, spec) {
\r
232 renderInputLabel(container, spec.label);
\r
235 var input_element = document.createElement('input');
\r
237 if (spec.type === 'input') {
\r
238 var input_type = 'text';
\r
240 var input_type = spec.type;
\r
243 input_element.setAttribute('type', input_type);
\r
244 input_element.setAttribute('name', spec.name);
\r
247 input_element.setAttribute('value', spec.value);
\r
250 container.appendChild(input_element);
\r
252 attachAnyEventHandlers(input_element);
\r
255 function renderInputLabel(container, labelText) {
\r
256 var label = document.createElement('label');
\r
257 var labelText = document.createTextNode(labelText);
\r
259 container.appendChild(label);
\r
260 label.appendChild(labelText);
\r
263 function renderFieldset(container, spec) {
\r
264 var fieldset = document.createElement('fieldset');
\r
265 var label = document.createElement('legend');
\r
266 var labelText = document.createTextNode(spec.label);
\r
268 fieldset.setAttribute('name', spec.name);
\r
271 for (var j in spec.list) {
\r
272 renderElement(fieldset, spec.list[j]);
\r
276 container.appendChild(fieldset);
\r
277 fieldset.appendChild(label);
\r
278 label.appendChild(labelText);
\r
281 function attachAnyEventHandlers(element) {
\r
282 switch(element.getAttribute('name')) {
\r
283 case 'form_button_1':
\r
284 element.addEventListener('click', addFieldset);
\r
286 case 'form_button_2':
\r
287 element.addEventListener('click', resetForm);
\r
289 case 'form_button_3':
\r
290 // element.addEventListener('click', getItemsList(document.getElementById('elemid').value));
\r
292 case 'form_button_4':
\r
293 element.addEventListener('click', getItemsString);
\r
298 function addFieldset() {
\r
301 name:"form_fieldset_" + k,
\r
302 label:"Fieldset" + k,
\r
304 {type:"input", name:"form_input_" + k + "_1", label:"Input"},
\r
305 {type:"input", name:"form_input_" + k + "_2", label:"Input"}
\r
309 str.splice(k, 0, itemData);
\r
315 function removeFieldset() {
\r
316 if (k === 1) { // Don't delete buttons
\r
326 function resetForm(k,colid) {
\r
327 //var elemid=document.getElementByName('elemid').value;
\r
328 //console.log(columns)
\r
331 console.log('1'+jsondata);
\r
332 delete columns[colid];
\r
333 console.log('2'+jsondata);
\r
335 for(var m in columns) {
\r
336 var value = columns[m];
\r
337 var test = value.data;
\r
338 //alert(value.valid_from+" " +value.valid_until + " " + test);
\r
339 //a[m]="{valid_from:"+value.valid_from+"{," +value.valid_until + " " +value.type;
\r
340 var myEvent =JSON.stringify(test);
\r
341 //myEvent=myEvent.substring(2);
\r
342 myEvent=myEvent.replace("}}","}");
\r
344 //console.log("*****************"+myEvent);
\r
345 //console.log( a.toString() );
\r
348 var jsondata="{\"resources\":["+a.toString()+"]}";
\r
349 console.log(jsondata);
\r
350 document.getElementById("jsondata").value=jsondata;
\r
352 var myEvent2 =JSON.stringify(a);
\r
353 //var myEvent =JSON.stringify(value.data);
\r
354 //console.log(myEvent2);
\r
355 var myEvent1 = {"resources":[{"type": "Node"},{"type": "Node"}]};
\r
360 function emptyForm(id) {
\r
361 console.log('empty'+id);
\r
362 delete columns[id];
\r
363 for(var m in columns) {
\r
364 var value = columns[m];
\r
365 var test = value.data;
\r
373 function readItemsList(id) {
\r
374 var value = columns[id];
\r
375 if (value.domain) {
\r
377 var testbed_value = "<li data-action = 'first'><a href='#' class='selector'><span>"+value.domain+"</span></a></li>";
\r
379 var testbed_value = "<li data-action = 'first'><a href='#' class='selector'><span>ANY</span></a></li>";
\r
382 var html_memu="<ul><li class='active'><span>Properties</span></li><li class='has-sub'><a href='#'><span>Testbed</span></a><ul>"+testbed_value+"<li data-action = 'first'><a href='#'><span>ANY</span></a></li><li data-action = 'second' ><a href='#' ><span>Netmode</span></a></li><li data-action = 'third'><a href='#'><span>Nitos</span></a></li><li class='last' data-action = 'forth'><a href='#'><span>Wilabt</span></a></li></ul></li><li class='last'><a href='#'><span>kati allo</span></a></li></ul>";
\r
383 // $('#cssmenu').empty().append(html_memu);
\r
384 console.log("testbed"+testbed_value);
\r
387 function getItemsList(id,nodetype,testbed) {
\r
389 console.log(s.length);
\r
392 document.getElementById('testbet').value=testbed;
\r
394 var items = document.querySelectorAll('[type=text]');
\r
397 from=document.getElementById("fromdate").value;
\r
398 to=document.getElementById("todate").value ;
\r
399 console.log("nikos"+id+$( "#testbet option:selected" ).text + from+to);
\r
400 domaintyp=document.getElementById('testbet').value;
\r
403 columns_unsaved[key] = {
\r
406 exclusive:nodetype,
\r
409 domain:document.getElementById('testbet').value
\r
412 columns_unsaved[key] = {
\r
415 exclusive:nodetype,
\r
424 domain:document.getElementById('testbet').value,
\r
425 exclusive: nodetype,
\r
427 data: columns_unsaved[key]
\r
430 resetForm(columns);
\r
434 function getItemsString() {
\r
435 var serv_response = jQuery.parseJSON('{{ responsejson }}');
\r
436 alert('{{ responsejson }}' + "****" +serv_response );
\r
437 //test[document.getElementByName('elemid')]=JSON.stringify(formData);
\r
441 <div class="container">
\r
442 <div class="row clearfix top-header">
\r
443 <div class="col-md-12 column">
\r
448 <div class="row border-editor content-editor">
\r
449 <div class="col-md-2 column heigh-editor border-right-editor">
\r
450 <span class="label label-info top-label">Select Node Type</span>
\r
451 <ul class="tool-panel" id="sortable-element">
\r
452 <li attr-type="actor"> <img src="{{STATIC_URL}}unbound_reservation_static/img/workflow/vm_icon.png">Virtual machine</li>
\r
453 <li attr-type="wireless"> <img src="{{STATIC_URL}}unbound_reservation_static/img/workflow/wireless_icon.png">Wireless</li>
\r
454 <!--<li attr-type="openflow"> <img src="{{STATIC_URL}}unbound_reservation_static/img/workflow/open_flow_icon.png">Open Flow</li>-->
\r
459 <div class="col-md-7 column heigh-editor">
\r
460 <span class="label label-danger top-label">Slice Editor</span>
\r
461 <div class="css-editor" id="editor"><ul id="menu" style="position: relative; top: 0px; left: 0px;"></ul> <ul class='custom-menu'>
\r
462 <li data-action = "first">ANY</li>
\r
463 <li data-action = "second">Netmode</li>
\r
464 <li data-action = "third">Third thing</li>
\r
468 <li class='active'><span>Properties</span></li>
\r
469 <li class='has-sub'><a href='#'><span>Testbed</span></a>
\r
471 <li data-action = "first"><a href='#'><span>ANY</span></a></li>
\r
472 <!--<li data-action = "second" class='selector'><a href='#' ><span>Netmode</span></a></li>-->
\r
473 <li data-action = "second" ><a href='#' ><span>Netmode</span></a></li>
\r
474 <li class='last' data-action = "third"><a href='#'><span>Nitos</span></a></li>
\r
475 <!--<li class='last' data-action = "fifth"><a href='#'><span>PLE</span></a></li> -->
\r
476 <!-- <li class='last' data-action = "forth"><a href='#'><span>Wilabt</span></a></li> -->
\r
480 <!-- <li class='last'><a href='#'><span>kati allo</span></a></li> -->
\r
483 <div id='cssmenu_'>
\r
485 <li class='active'><span>Properties</span></li>
\r
486 <li class='has-sub'><a href='#'><span>Testbed</span></a>
\r
489 <li class='last' data-action = "fifth"><a href='#'><span>PLE</span></a></li>
\r
490 <!-- <li class='last' data-action = "forth"><a href='#'><span>Wilabt</span></a></li> -->
\r
494 <!-- <li class='last'><a href='#'><span>kati allo</span></a></li> -->
\r
499 <div class="col-md-3 column heigh-editor">
\r
500 <span class="label label-danger top-label">Node Properties</span>
\r
502 <div class="css-editor" id="editor"><br><br><div align="center"><button type="button" id="b1" name="b1" class="btn btn-warning">Send request</button><br><br><button type="button" id="b2" name="b2" class="btn btn-warning" style="display:none;">Reserve request</button><div id="but"></div></div><br><br>
\r
503 <div style="position:relative;margin-bottom:30px;"><input type="hidden" name="jsondata" id="jsondata" value="">
\r
504 <label style="position:absolute;top:5px;left:5px; for="fromdate">from:</label><input style="position:absolute;top:5px;left:45px;width:180px;font-size:12px;text-align:center;" onclick="setSens('todate','max')" value="" id="fromdate" readonly>
\r
505 <br><label style="position:absolute;top:45px;left:5px; for="todate">to:</label><input style="position:absolute;top:45px;left:45px;width:180px;font-size:12px;text-align:center;" onchange="getItemsList(document.getElementById('elemid').value)" onclick="setSens('fromdate','min')" value="" id="todate" readonly>
\r
506 <div style="display: none;><br><label style="position:absolute;top:85px; for="elemid">NodeId</label><input type="hidden" style="position:absolute;top:85px;left:45px;width:180px;font-size:12px;text-align:center; value="" id="elemid" name="elemid" readonly>
\r
507 <br><select style="position:absolute;top:160px;width:180px;" id="testbet" class="form-control input-sm col-md-1" type="hidden">
\r
508 <option value="">ANY</option>
\r
509 <option value="omf:netmode">Netmode</option>
\r
510 <option value="omf:nitos.outdoor">Nitos</option>
\r
511 <option value="ple">PLE</option>
\r
513 </select><br></div>
\r
515 <label style="position:absolute;top:130px;left:65px;"> Select Slice</label>
\r
516 <select style="position:absolute;top:150px;width:180px;" id="user_slices" name="user_slices_list"></select>
\r
517 <!--<select style="position:absolute;top:150px;width:180px;" id="user_slices" name="user_slices_list" >
\r
519 {% for user_slices in slice %}
\r
520 <option value="{{user_slices}}"
\r
521 {% if user_slices == current_org %}selected="selected"{% endif %}>
\r
522 {{user_slices|capfirst}}
\r
528 <span></span><br><br>
\r
529 <div id="form_wrapper"><table>
\r
532 <td valign="top"><div id="myForm" style="height:200px;"></div></td>
\r
535 </table></div> </div>
\r
541 <!-- END of Reputation Specific -->
\r