1 {% extends "base.html" %}
9 <link href="{% static "bower_components/fullcalendar/dist/fullcalendar.css" %}"
11 <link href="{% static "bower_components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css" %}"
13 {% endblock extrahead %}
16 <div class="col-lg-8">
17 <div class="container-fluid">
18 <div class="panel panel-default">
19 <div class="panel-heading">
20 <i class="fa fa-calendar fa-fw"></i>Calendar
22 <div class="panel-body">
30 <div class="col-lg-4">
31 <div class="panel panel-default">
32 <div class="panel-heading">
33 <i class="fa fa-edit fa-fw"></i>Booking
35 <div class="panel-body">
36 {% if user.is_authenticated %}
37 <div id="booking_form_div">
38 {% bootstrap_form_errors form type='non_fields' %}
39 <form method="post" action="" class="form" id="bookingform">
42 <div class='input-group' id='starttimepicker'>
43 {% bootstrap_field form.start addon_after='<span class="glyphicon glyphicon-calendar"></span>' %}
45 <div class='input-group' id='endtimepicker'>
46 {% bootstrap_field form.end addon_after='<span class="glyphicon glyphicon-calendar"></span>' %}
48 {% bootstrap_field form.opsys %}
49 {% bootstrap_field form.purpose %}
50 {% bootstrap_field form.installer %}
51 {% bootstrap_field form.scenario %}
53 <button type="submit" class="btn btn btn-success">
57 <br>By continuing, you agree to our
58 <a href="https://wiki.opnfv.org/display/INF/Lab-as-a-Service+at+the+UNH-IOL#Lab-as-a-ServiceattheUNH-IOL-AcceptableUsagePolicy">Acceptable Usage Policy</a>
63 <div id="booking_edit_form_div">
64 {% bootstrap_form_errors form type='non_fields' %}
65 <form method="post" action="" class="form" id="bookingeditform">
67 <div id='hide_if_noext'>
68 <div class='input-group' id='starttimeeditpicker'>
69 {% bootstrap_field form.start addon_after='<span class="glyphicon glyphicon-calendar"></span>' %}
71 <div class='input-group' id='endtimeeditpicker'>
72 {% bootstrap_field form.end addon_after='<span class="glyphicon glyphicon-calendar"></span>' %}
75 <script type="text/javascript">
76 if( {{ booking.ext_count }} <= 0 ){
77 var hidediv = document.getElementById('hide_if_noext');
78 hidediv.style.display = 'none';
79 var par = document.createElement("div");
80 var text = document.createTextNode("No Extensions Remaining");
81 par.appendChild(text);
82 par.style.fontWeight = 'bold';
83 par.style.paddingBottom = '15pt';
84 hidediv.parentNode.insertBefore(par,hidediv.nextSibling);
87 {% bootstrap_field form.opsys %}
88 {% bootstrap_field form.purpose %}
89 {% bootstrap_field form.installer %}
90 {% bootstrap_field form.scenario %}
91 {% bootstrap_field form.reset %}
93 <button type="submit" class="btn btn btn-success">
99 <script type="text/javascript">
100 //Check if current view is an edit or a standard booking view
101 if(window.location.href.includes('edit')) {
102 var element = document.getElementById("bookingform");
103 element.parentNode.removeChild(element); }
105 var element = document.getElementById("bookingeditform");
106 element.parentNode.removeChild(element); }
110 <a href="{% url 'account:login' %}">
118 <div id="booking_detail_modal" class="modal fade" role="dialog">
119 <div class="modal-dialog">
121 <!-- Modal content-->
122 <div class="modal-content">
123 <div class="modal-header">
124 <button type="button" class="close" data-dismiss="modal">×</button>
125 <h4 class="modal-title">Booking Detail</h4>
127 <div class="modal-body" id="booking_detail_content">
129 <div class="modal-footer">
130 <button type="button" class="btn btn-primary" data-dismiss="modal">Close
137 {% endblock content %}
140 <script type="text/javascript">
141 var bookings_url = "{% url 'booking:bookings_json' resource_id=resource.id %}";
142 var booking_detail_prefix = "{% url 'booking:detail_prefix' %}";
143 var booking_delete_prefix = "{% url 'booking:delete_prefix' %}";
144 var user_timezone = "{{ request.user.userprofile.timezone }}"
146 var sup_installer_dict = {{ installer_filter }}
147 var sup_scenario_dict = {{ scenario_filter }}
151 <script type="text/javascript">
152 $(document).ready(function () {
153 $("#id_installer").children().hide();
154 $("#id_scenario").children().hide();
157 function installerHider() {
158 dropFilter("id_installer", sup_installer_dict, "id_opsys");
161 document.getElementById('id_opsys').addEventListener('change', installerHider);
163 function scenarioHider() {
164 dropFilter("id_scenario", sup_scenario_dict, "id_installer");
166 document.getElementById('id_installer').addEventListener('change', scenarioHider);
168 function dropFilter(target, target_filter, master) {
169 ob = document.getElementById(target);
171 for(var i=0; i<ob.options.length; i++) {
172 if ( ob.options[i].text == '---------' ) {
173 ob.selectedIndex = i;
177 targ_id = "#" + target;
178 $(targ_id).children().hide();
179 var drop = document.getElementById(master);
180 var opts = target_filter[drop.options[drop.selectedIndex].value];
186 var map = Object.create(null);
187 for (var i = 0; i < opts.length; i++) {
192 for (var i = 0; i < document.getElementById(target).childNodes.length; i++) {
193 if (document.getElementById(target).childNodes[i].value in opts && !(document.getElementById(target).childNodes[i].value in emptyMap) ) {
194 document.getElementById(target).childNodes[i].style.display = "inherit";
200 <script src={% static "bower_components/moment/moment.js" %}></script>
201 <script src={% static "bower_components/fullcalendar/dist/fullcalendar.js" %}></script>
202 <script type="text/javascript"
203 src={% static "bower_components/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js" %}></script>
204 <script src={% static "js/fullcalendar-options.js" %}></script>
205 <script src={% static "js/datetimepicker-options.js" %}></script>
206 <script src={% static "js/booking-calendar.js" %}></script>
207 {% endblock extrajs %}