|
1 | 1 | {% extends "base.html" %} |
2 | 2 | {# Copyright The IETF Trust 2015, All Rights Reserved #} |
3 | 3 | {% load origin %} |
4 | | -{% load staticfiles %} |
5 | | -{% load ietf_filters %} |
6 | | -{% load humanize %} |
7 | | - |
8 | | -{% block title %}IETF {{ meeting.number }} Meeting Agenda: Timeslot/Room Availability{% endblock %} |
9 | 4 | {% load agenda_custom_tags %} |
10 | | -{% block pagehead %} |
11 | | -<link rel='stylesheet' type='text/css' href="{% static 'ietf/css/agenda/jquery-ui-themes/jquery-ui-1.8.11.custom.css' %}" /> |
12 | | -<link rel='stylesheet' type='text/css' href="{% static 'ietf/css/agenda/base2.css' %}" /> |
13 | | -<link rel='stylesheet' type='text/css' href="{% static 'ietf/css/agenda/agenda.css' %}" /> |
14 | | -{% endblock pagehead %} |
15 | | - |
16 | | -{% block js %} |
17 | | -<script type="text/javascript" src="{% static 'ietf/js/agenda/jquery-1.8.2.min.js' %}"></script> |
18 | | -<script src="{% static 'jquery.cookie/jquery.cookie.js' %}"></script> |
19 | | -<script> |
20 | | -jQuery.ajaxSetup({ |
21 | | - crossDomain: false, // obviates need for sameOrigin test |
22 | | - beforeSend: function(xhr, settings) { |
23 | | - if (!csrfSafeMethod(settings.type)) { |
24 | | - xhr.setRequestHeader("X-CSRFToken", $.cookie('csrftoken')); |
25 | | - } |
26 | | - } |
27 | | -}); |
28 | | -</script> |
29 | | -<script type='text/javascript' src="{% static 'ietf/js/agenda/jquery-ui-1.9.0.custom/jquery-ui.custom.js' %}"></script> |
30 | | -<script type='text/javascript' src="{% static 'ietf/js/agenda/jquery-ui-1.9.0.custom/jquery.ui.widget.js' %}"></script> |
31 | | -<script type='text/javascript' src="{% static 'ietf/js/agenda/jquery-ui-1.9.0.custom/jquery.ui.droppable.js' %}"></script> |
32 | | -<script type='text/javascript' src="{% static 'ietf/js/agenda/jquery-ui-1.9.0.custom/jquery.ui.sortable.js' %}"></script> |
33 | | -<script type='text/javascript' src="{% static 'ietf/js/agenda/jquery-ui-1.9.0.custom/jquery.ui.accordion.js' %}"></script> |
34 | | -<script type='text/javascript' src="{% static 'ietf/js/agenda/jquery-ui-1.9.0.custom/jquery.ui.draggable.js' %}"></script> |
35 | | -<script type='text/javascript' src="{% static 'ietf/js/agenda/jquery-ui-1.9.0.custom/jquery.ui.datepicker.js' %}"></script> |
36 | | - |
37 | | -<!-- source (MIT License) http://momentjs.com/ https://github.com/moment/moment/ --> |
38 | | -<script type='text/javascript' src="{% static 'ietf/js/agenda/moment.min.js' %}"></script> |
39 | | - |
40 | | -<!-- source (MIT License) : https://github.com/trentrichardson/jQuery-Timepicker-Addon --> |
41 | | -<script type='text/javascript' src="{% static 'ietf/js/agenda/jquery-ui-timepicker/jquery-ui-timepicker-addon.js' %}"></script> |
42 | | -<script type='text/javascript' src="{% static 'ietf/js/agenda/jquery-ui-timepicker/jquery-ui-sliderAccess.js' %}"></script> |
43 | | -<link rel='stylesheet' type='text/css' href="{% static 'ietf/css/agenda/jquery-ui-timepicker-addon.css' %}" /> |
44 | | - |
45 | | -<script type='text/javascript' src="{% static 'spin.js/spin.min.js' %}"></script> |
46 | | -<script type='text/javascript' src="{% static 'ietf/js/agenda/timeslot_edit.js' %}"></script> |
47 | | -<script type='text/javascript' src="{% static 'ietf/js/agenda/agenda_objects.js' %}"></script> |
48 | | -<script type='text/javascript' src="{% static 'ietf/js/agenda/agenda_helpers.js' %}"></script> |
49 | | -<script type='text/javascript' src="{% static 'ietf/js/agenda/agenda_listeners.js' %}"></script> |
50 | | - |
51 | 5 |
|
52 | | -<script type='text/javascript'> |
53 | | - |
54 | | -var meeting_number = "{{ meeting.number }}"; |
55 | | -var meeting_base_url = "{{ meeting_base_url }}"; |
56 | | -var site_base_url = "{{ site_base_url }}"; |
57 | | -var meeting_slots_href = "{% url "ietf.meeting.ajax.timeslot_slotsurl" meeting.number %}"; |
58 | | -total_days = {{time_slices|length}}; |
59 | | -total_rooms = {{rooms|length}}; |
60 | | - |
61 | | -first_day = new Date("{% with timeslots|first as day %} {{ day.time }} {% endwith %}"); /* needed for the datepicker */ |
62 | | - |
63 | | -function setup_slots(promiselist){ |
64 | | -var ts_promise = load_timeslots(meeting_slots_href); |
65 | | -promiselist.push(ts_promise); |
66 | | - |
67 | | -{% for day in time_slices %} |
68 | | - days.push("{{day}}"); |
69 | | -{% endfor %} |
70 | | - console.log("setup_slots run"); |
71 | | -} |
| 6 | +{% block title %}IETF {{ meeting.number }} Meeting Agenda: Timeslot/Room Availability{% endblock %} |
72 | 7 |
|
73 | | -</script> |
74 | | -{% endblock js %} |
| 8 | +{% block morecss %} |
| 9 | +.tstable { width: 100%;} |
| 10 | +.tstable th { white-space: nowrap;} |
| 11 | +.tstable td { white-space: nowrap;} |
| 12 | +.capacity { font-size:80%; font-weight: normal;} |
75 | 13 |
|
| 14 | +.tstable .tstype_unavail {background-color:#666;} |
| 15 | +{% endblock %} |
76 | 16 |
|
77 | 17 | {% block content %} |
78 | 18 | {% origin %} |
79 | | -<div class="wrapper custom_text_stuff"> |
80 | | -<div style="ui-icon ui-icon-arrow-1-w" id="close_ietf_menubar"> |
81 | | -< |
82 | | -</div> |
83 | 19 |
|
84 | | -<div class="agenda_div"> |
85 | 20 |
|
86 | | -<table id="meetings" class="ietf-navbar" style="width:100%"> |
87 | | - <th class="schedule_title"><div id="pageloaded" style="display:none"><span id="schedule_name">name: {{meeting.number}}</span></div> |
88 | | - <div id="spinner"><!-- spinney goes here --></div> |
89 | | - </th> |
90 | | - <th><!-- resources --></th> |
91 | | -{% for day in time_slices %} |
92 | | - <th colspan="{{date_slices|colWidth:day}}" id="{{day|date:'Y-m-d'}}-btn" class=" day_{{day}} agenda_slot_title"> |
93 | | - <div style="display: none;" class="delete delete_day bottom_left" id="delete_{{day|date:'Y-m-d'}}">X</div> |
94 | | - {{day|date:'D'}} ({{day}}) |
95 | | - |
96 | | - </th> |
97 | | - <th class="day_{{day}} spacer {{day|date:'Y-m-d'}}-spacer" id=""> |
98 | | - <div class="ui-widget-content ui-resizable" id="resize-{{day|date:'Y-m-d'}}-spacer"> |
99 | | - <div class="spacer_grip ui-resizable-handle ui-resizable-e"></div> |
100 | | - </div> |
101 | | -</th> |
102 | | -{% endfor %} |
103 | | - <tr> |
104 | | - <th> |
105 | | - <div class="addbutton" id="add_room">+ROOM</div> |
106 | | - <div class="addbutton" id="add_day">+DAY</div> |
107 | | - </th> |
108 | | - <th><!-- resources --></th> |
| 21 | +<table class="tstable table table-striped table-compact table-bordered"> |
| 22 | + <thead> |
| 23 | + <tr> |
| 24 | + <th></th> |
| 25 | + {% for day in time_slices %} |
| 26 | + <th colspan="{{date_slices|colWidth:day}}"> |
| 27 | + {{day|date:'D'}} ({{day}}) |
| 28 | + </th> |
| 29 | + {% endfor %} |
| 30 | + </tr> |
| 31 | + <tr> |
| 32 | + <th></th> |
109 | 33 | {% for day in time_slices %} |
110 | 34 | {% for slot in slot_slices|lookup:day %} |
111 | | - <th class="day_{{day}} room_title"> |
112 | | - <div |
113 | | - href="{{slot.json_url}}" |
114 | | - timeslot_id="{{slot.pk}}" |
115 | | - class="delete delete_slot bottom_left" |
116 | | - id="delete_{{day|date:'Y-m-d'}}_{{slot.time|date:'Hi'}}">X</div> |
117 | | - {{slot.time|date:'Hi'}}-{{slot.end_time|date:'Hi'}} |
| 35 | + <th> |
| 36 | + {{slot.time|date:'Hi'}}-{{slot.end_time|date:'Hi'}} |
118 | 37 | </th> |
119 | | - |
120 | 38 | {% endfor %} |
121 | | - <th class="day_{{day}} spacer {{day|date:'Y-m-d'}}-spacer"> |
122 | | - </div></th> |
123 | | - |
124 | 39 | {% endfor %} |
| 40 | + </tr> |
| 41 | + </thead> |
125 | 42 |
|
126 | | - {% for r in rooms %} |
127 | | - <tr id="{{r.name|to_acceptable_id}}" class="agenda_slot_row"> |
128 | | - <th class="vert_time"> |
129 | | - <div class="delete delete_room bottom_left" |
130 | | - id="delete_{{r.name|to_acceptable_id}}" |
131 | | - href="{{r.json_url}}" |
132 | | - roomid="{{r.pk}}">X</div> |
133 | | - <div class="right room_name"><a class="edit_room editlink" |
134 | | - href="/meeting/{{ meeting.number }}/room/{{r.pk}}.html" >{{r.name}} <span class="capacity">({{r.capacity}})</span></a></div> |
135 | | - |
136 | | - <!-- <span class="hide_room light_blue_border">X</span><span class="left">{{r.name}}</span></th> --> |
137 | | - <th class="room_features"> |
138 | | - <div class="resource_list"> |
139 | | - {% for resource in r.resources.all %} |
140 | | - <span class="resource_image"> |
141 | | - {% if resource.id == "project" %} <img src="{% static 'ietf/images/projector.png' %}" height=24 alt="{{resource.desc}}" title="{{resource.desc}}"/>{% endif %} |
142 | | - {% if resource.id == "proj2" %} <img src="{% static 'ietf/images/projector2.png' %}" height=24 alt="{{resource.desc}}" title="{{resource.desc}}"/>{% endif %} |
143 | | - {% if resource.id == "meetecho" %} <img src="{% static 'ietf/images/meetecho-mini.png' %}" height=24 alt="{{resource.desc}}" title="{{resource.desc}}"/>{% endif %} |
144 | | - {% if resource.id == "boardroom" %} <img src="{% static 'ietf/images/projector.png' %}" height=24 alt="{{resource.desc}}" title="{{resource.desc}}"/>{% endif %} |
145 | | - </span> |
146 | | - {% endfor %} |
147 | | - </div> |
148 | | - </th> |
| 43 | + {% for room in rooms %} |
| 44 | + <tr> |
| 45 | + <th>{{room.name}}<span class='capacity'>{% if room.capacity %} ({{room.capacity}}){% endif %}</th> |
149 | 46 | {% for day in time_slices %} |
150 | | - {% for slot in date_slices|lookup:day %} |
151 | | - <td slot_time="{{day}} {{slot.0|date:'H:i:s'}}" slot_duration="{{slot.2}}" slot_room="{{r.pk}}" id="{{r.dom_id}}_{{day}}_{{slot.0|date:'Hi'}}" class="day_{{day}} agenda-column-{{day}}-{{slot.0|date:'Hi'}} agenda_slot {% cycle 'agenda_slot_alt' '' %} agenda_slot_unavailable" ></td> |
| 47 | + {% for slice in date_slices|lookup:day %} |
| 48 | + {% with ts=ts_list.popleft %} |
| 49 | + <td{% if ts %} class="tstype_{{ts.type.slug}}"{% endif %}>{% if ts %}<a href="{% url 'ietf.meeting.views.edit_timeslot_type' num=meeting.number slot_id=ts.id %}">{{ts.type.slug}}</a>{% endif %}</td> |
| 50 | + {% endwith %} |
152 | 51 | {% endfor %} |
153 | | - <td class="day_{{day}} spacer {{day|date:'Y-m-d'}}-spacer"></td> |
154 | 52 | {% endfor %} |
155 | 53 | </tr> |
156 | 54 | {% endfor %} |
157 | 55 | </table> |
158 | 56 |
|
159 | | -</div> |
160 | | -<div class="dialog" id="add_room_dialog"> |
161 | | - <form action="{{roomsurl}}" method="post">{% csrf_token %} |
162 | | - <table> |
163 | | - {{ addroom.as_table }} |
164 | | - <tr><td><input type="submit" name="addroom" value="addroom"></td></tr> |
165 | | - </table> |
166 | | - </form> |
167 | | -</div> |
168 | | -<div class="dialog" id="add_day_dialog"> |
169 | | - <table> |
170 | | - <form action="{{adddayurl}}" method="post">{% csrf_token %} |
171 | | - {{ addday }} |
172 | | - <tr><th><label>Duration</label></th><td><input type="text" id="duration_time"></td></tr> |
173 | | - <tr><th></th><td><div id="timespan"></div></td></tr> |
174 | | - <tr><td><input type="submit" name="addday" value="addday"></td></tr> |
175 | | - </form> |
176 | | - </table> |
177 | | -</div> |
178 | | - |
179 | | -<div class="dialog" id="room_delete_dialog"> |
180 | | - Are you sure you want to delete this room? |
181 | | -</div> |
182 | | - |
183 | | -<div class="dialog" id="slot_delete_dialog"> |
184 | | - Are you sure you want to delete this entire timeslot? |
185 | | -</div> |
186 | | - |
187 | 57 | {% endblock %} |
0 commit comments