Also changes .editorconfig to not strip trailing whitespace
This commit is contained in:
parent
d2edc5bda3
commit
0944312c20
|
@ -11,7 +11,7 @@ root = true
|
|||
[*]
|
||||
indent_size = 4
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
trim_trailing_whitespace = false
|
||||
insert_final_newline = true
|
||||
|
||||
# Specializations below *add to* the above defaults
|
||||
|
|
|
@ -438,18 +438,6 @@ class MeetingTests(BaseMeetingTestCase):
|
|||
r = self.client.get(url)
|
||||
self.assertFalse(any([x in unicontent(r) for x in ['IESG Breakfast','Breakfast Room']]))
|
||||
|
||||
def test_agenda_room_view(self):
|
||||
meeting = make_meeting_test_data()
|
||||
url = urlreverse("ietf.meeting.views.room_view",kwargs=dict(num=meeting.number))
|
||||
login_testing_unauthorized(self,"secretary",url)
|
||||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code,200)
|
||||
self.assertTrue(all([x in unicontent(r) for x in ['mars','IESG Breakfast','Test Room','Breakfast Room']]))
|
||||
url = urlreverse("ietf.meeting.views.room_view",kwargs=dict(num=meeting.number,name=meeting.unofficial_schedule.name,owner=meeting.unofficial_schedule.owner.email()))
|
||||
r = self.client.get(url)
|
||||
self.assertTrue(all([x in unicontent(r) for x in ['mars','Test Room','Breakfast Room']]))
|
||||
self.assertNotContains(r, 'IESG Breakfast')
|
||||
|
||||
|
||||
def test_agenda_week_view(self):
|
||||
meeting = make_meeting_test_data()
|
||||
|
|
|
@ -34,7 +34,6 @@ type_ietf_only_patterns = [
|
|||
url(r'^agenda/%(owner)s/%(schedule_name)s/make_official$' % settings.URL_REGEXPS, views.make_schedule_official),
|
||||
url(r'^agenda/%(owner)s/%(schedule_name)s(\.(?P<ext>.html))?/?$' % settings.URL_REGEXPS, views.agenda),
|
||||
url(r'^agenda/%(owner)s/%(schedule_name)s/week-view(?:.html)?/?$' % settings.URL_REGEXPS, views.week_view),
|
||||
url(r'^agenda/%(owner)s/%(schedule_name)s/room-view(?:.html)?/?$' % settings.URL_REGEXPS, views.room_view),
|
||||
url(r'^agenda/%(owner)s/%(schedule_name)s/by-room/?$' % settings.URL_REGEXPS, views.agenda_by_room),
|
||||
url(r'^agenda/%(owner)s/%(schedule_name)s/by-type/?$' % settings.URL_REGEXPS, views.agenda_by_type),
|
||||
url(r'^agenda/%(owner)s/%(schedule_name)s/by-type/(?P<type>[a-z]+)$' % settings.URL_REGEXPS, views.agenda_by_type),
|
||||
|
@ -77,11 +76,9 @@ type_ietf_only_patterns_id_optional = [
|
|||
url(r'^agenda\.ics$', views.agenda_ical),
|
||||
url(r'^agenda.json$', views.agenda_json),
|
||||
url(r'^agenda/week-view(?:.html)?/?$', views.week_view),
|
||||
url(r'^agenda/room-view(?:.html)?/?$', views.room_view),
|
||||
url(r'^floor-plan/?$', views.floor_plan),
|
||||
url(r'^floor-plan/(?P<floor>[-a-z0-9_]+)/?$', views.floor_plan),
|
||||
url(r'^week-view(?:.html)?/?$', views.week_view),
|
||||
url(r'^room-view(?:.html)?/?$', views.room_view),
|
||||
url(r'^materials(?:.html)?/?$', views.materials),
|
||||
url(r'^request_minutes/?$', views.request_minutes),
|
||||
url(r'^materials/%(document)s((?P<ext>\.[a-z0-9]+)|/)?$' % settings.URL_REGEXPS, views.materials_document),
|
||||
|
|
|
@ -32,7 +32,7 @@ from django.contrib.auth.decorators import login_required
|
|||
from django.core.exceptions import ValidationError
|
||||
from django.core.validators import URLValidator
|
||||
from django.urls import reverse,reverse_lazy
|
||||
from django.db.models import F, Min, Max, Q
|
||||
from django.db.models import F, Max, Q
|
||||
from django.forms.models import modelform_factory, inlineformset_factory
|
||||
from django.template import TemplateDoesNotExist
|
||||
from django.template.loader import render_to_string
|
||||
|
@ -1906,69 +1906,6 @@ def week_view(request, num=None, name=None, owner=None):
|
|||
"items": json.dumps(items),
|
||||
})
|
||||
|
||||
@role_required('Area Director','Secretariat','IAB')
|
||||
def room_view(request, num=None, name=None, owner=None):
|
||||
meeting = get_meeting(num)
|
||||
|
||||
rooms = meeting.room_set.order_by('functional_name','name')
|
||||
if not rooms.exists():
|
||||
return HttpResponse("No rooms defined yet")
|
||||
|
||||
if name is None:
|
||||
schedule = get_schedule(meeting)
|
||||
else:
|
||||
person = get_person_by_email(owner)
|
||||
schedule = get_schedule_by_name(meeting, person, name)
|
||||
|
||||
assignments = SchedTimeSessAssignment.objects.filter(
|
||||
schedule__in=[schedule, schedule.base if schedule else None]
|
||||
).prefetch_related(
|
||||
'timeslot', 'timeslot__location', 'session', 'session__group', 'session__group__parent'
|
||||
)
|
||||
unavailable = meeting.timeslot_set.filter(type__slug='unavail')
|
||||
if not (assignments.exists() or unavailable.exists()):
|
||||
return HttpResponse("No sessions/timeslots available yet")
|
||||
|
||||
earliest = None
|
||||
latest = None
|
||||
|
||||
if assignments:
|
||||
earliest = assignments.aggregate(Min('timeslot__time'))['timeslot__time__min']
|
||||
latest = assignments.aggregate(Max('timeslot__time'))['timeslot__time__max']
|
||||
|
||||
if unavailable:
|
||||
earliest_unavailable = unavailable.aggregate(Min('time'))['time__min']
|
||||
if not earliest or ( earliest_unavailable and earliest_unavailable < earliest ):
|
||||
earliest = earliest_unavailable
|
||||
latest_unavailable = unavailable.aggregate(Max('time'))['time__max']
|
||||
if not latest or ( latest_unavailable and latest_unavailable > latest ):
|
||||
latest = latest_unavailable
|
||||
|
||||
if not (earliest and latest):
|
||||
raise Http404
|
||||
|
||||
base_time = earliest
|
||||
base_day = datetime.datetime(base_time.year,base_time.month,base_time.day)
|
||||
|
||||
day = base_day
|
||||
days = []
|
||||
while day <= latest :
|
||||
days.append(day)
|
||||
day += datetime.timedelta(days=1)
|
||||
|
||||
unavailable = list(unavailable)
|
||||
for t in unavailable:
|
||||
t.delta_from_beginning = (t.time - base_time).total_seconds()
|
||||
t.day = (t.time-base_day).days
|
||||
|
||||
assignments = list(assignments)
|
||||
for ss in assignments:
|
||||
ss.delta_from_beginning = (ss.timeslot.time - base_time).total_seconds()
|
||||
ss.day = (ss.timeslot.time-base_day).days
|
||||
|
||||
template = "meeting/room-view.html"
|
||||
return render(request, template,{"meeting":meeting,"schedule":schedule,"unavailable":unavailable,"assignments":assignments,"rooms":rooms,"days":days})
|
||||
|
||||
def ical_session_status(assignment):
|
||||
if assignment.session.current_status == 'canceled':
|
||||
return "CANCELLED"
|
||||
|
|
|
@ -1,514 +0,0 @@
|
|||
var start_map = items.map(function (el, i) {
|
||||
return { room_index: el.room_index, start_time: el.delta_from_beginning, index: i };
|
||||
});
|
||||
start_map.sort(function (a, b) {
|
||||
if (a.room_index != b.room_index) {
|
||||
return (a.room_index - b.room_index);
|
||||
}
|
||||
return a.start_time - b.start_time;
|
||||
});
|
||||
|
||||
var end_map = items.map(function (el, i) {
|
||||
return { room_index: el.room_index, end_time: el.delta_from_beginning + el.duration, index: i };
|
||||
});
|
||||
end_map.sort(function (a, b) {
|
||||
if (a.room_index != b.room_index) {
|
||||
return (a.room_index - b.room_index);
|
||||
}
|
||||
return a.end_time - b.end_time;
|
||||
});
|
||||
|
||||
var si = 0;
|
||||
var ei = 0;
|
||||
var overlap = 0;
|
||||
var max_lanes = 0;
|
||||
var next_lane = [];
|
||||
|
||||
var start_overlap = si;
|
||||
while (si < items.length) {
|
||||
var start_room_change = false;
|
||||
while (!start_room_change && si < items.length && start_map[si].start_time < end_map[ei].end_time) {
|
||||
overlap++;
|
||||
if (next_lane.length > 0) {
|
||||
items[start_map[si].index].lane = next_lane.shift();
|
||||
} else {
|
||||
items[start_map[si].index].lane = max_lanes;
|
||||
max_lanes++;
|
||||
}
|
||||
start_room_change = (si + 1 == items.length || start_map[si].room_index != start_map[si + 1].room_index);
|
||||
si++;
|
||||
}
|
||||
var end_room_change = false;
|
||||
while (ei < items.length && !end_room_change && (start_room_change || si == items.length || start_map[si].start_time >= end_map[ei].end_time)) {
|
||||
next_lane.push(items[end_map[ei].index].lane);
|
||||
overlap--;
|
||||
end_room_change = (ei + 1 == items.length || end_map[ei].room_index != end_map[ei + 1].room_index);
|
||||
ei++;
|
||||
}
|
||||
if (overlap == 0) {
|
||||
for (var i = start_overlap; i < si; i++) {
|
||||
items[start_map[i].index].lanes = max_lanes;
|
||||
}
|
||||
max_lanes = 0;
|
||||
next_lane = [];
|
||||
start_overlap = si;
|
||||
}
|
||||
}
|
||||
|
||||
var fg = {
|
||||
app: "#008",
|
||||
art: "#808",
|
||||
gen: "#080",
|
||||
int: "#088",
|
||||
ops: "#800",
|
||||
rai: "#808",
|
||||
rtg: "#880",
|
||||
sec: "#488",
|
||||
tsv: "#484",
|
||||
irtf: "#448",
|
||||
break: "#000"
|
||||
};
|
||||
|
||||
var bg = {
|
||||
app: "#eef",
|
||||
art: "#fef",
|
||||
gen: "#efe",
|
||||
int: "#eff",
|
||||
ops: "#fee",
|
||||
rai: "#fef",
|
||||
rtg: "#ffe",
|
||||
sec: "#dff",
|
||||
tsv: "#dfd",
|
||||
irtf: "#ddf",
|
||||
break: "#fff"
|
||||
};
|
||||
|
||||
var divlist = [];
|
||||
|
||||
var lastfrag;
|
||||
var lastheight;
|
||||
var lastwidth;
|
||||
|
||||
var padding = 2;
|
||||
var border = 1;
|
||||
|
||||
setInterval(animate, 50);
|
||||
|
||||
window.draw_calendar = function () {
|
||||
window.setTimeout(draw_calendar, 1000);
|
||||
|
||||
var width = $('#mtgheader')
|
||||
.width();
|
||||
var offset = $('#mtgheader')
|
||||
.offset()
|
||||
.left;
|
||||
var height = document.body.clientHeight;
|
||||
|
||||
if (lastheight == height &&
|
||||
lastwidth == width &&
|
||||
lastfrag == window.location.hash) {
|
||||
return;
|
||||
}
|
||||
|
||||
var i;
|
||||
|
||||
var day_start = 23 * 60 + 59;
|
||||
var day_end = 0;
|
||||
|
||||
/* Find our boundaries */
|
||||
for (i = 0; i < items.length; i++) {
|
||||
{
|
||||
var start_time = parseInt(items[i].time.substr(0, 2), 10) * 60 +
|
||||
parseInt(items[i].time.substr(2, 2), 10);
|
||||
var end_time = start_time + (items[i].duration / 60);
|
||||
|
||||
if (start_time < day_start) { day_start = start_time; }
|
||||
if (end_time > day_end) { day_end = end_time; }
|
||||
}
|
||||
}
|
||||
|
||||
var timelabel_width = width * 0.020;
|
||||
var header_height = height * 0.05;
|
||||
var header_offset = $('#daytabs')
|
||||
.outerHeight(true) + $('#mtgheader')
|
||||
.outerHeight(true);
|
||||
|
||||
var num_minutes = day_end - day_start;
|
||||
var minute_height = (height - header_height - header_offset) / num_minutes;
|
||||
|
||||
var daydiv;
|
||||
for (i = 0; i < num_days; i++) {
|
||||
daydiv = document.getElementById("day" + i);
|
||||
while (daydiv.childNodes.length) { daydiv.removeChild(daydiv.childNodes[0]); }
|
||||
}
|
||||
|
||||
var room_width = (width - timelabel_width) / (rooms_count ? rooms_count : 1);
|
||||
for (var day = 0; day < num_days; day++) {
|
||||
for (var ri = 0; ri < room_names.length; ri++) {
|
||||
var e = document.createElement("div");
|
||||
|
||||
e.style.border = "solid";
|
||||
e.style.borderWidth = border + "px";
|
||||
|
||||
e.style.background = "#2647f0";
|
||||
e.style.color = "#fff";
|
||||
e.style.borderColor = "#000 #fff";
|
||||
e.style.borderColor = "#2647f0 #2647f0 #000 #2647f0";
|
||||
|
||||
e.style.display = "block";
|
||||
e.style.overflow = "hidden";
|
||||
e.style.position = "absolute";
|
||||
|
||||
e.style.top = header_offset + "px";
|
||||
e.style.left = (offset + timelabel_width + ri * room_width) + "px";
|
||||
e.style.width = room_width + "px";
|
||||
e.style.height = header_height + "px";
|
||||
|
||||
e.style.margin = 0 + "px";
|
||||
e.style.padding = padding + "px";
|
||||
e.style.fontFamily = "sans-serif";
|
||||
e.style.fontSize = (header_height * 0.25) + "px";
|
||||
|
||||
e.style.textAlign = "center";
|
||||
|
||||
var div = document.createElement("div");
|
||||
div.appendChild(document.createTextNode(room_names[ri]));
|
||||
if (room_functional_names[ri].length > 0) {
|
||||
div.appendChild(document.createElement("br"));
|
||||
div.appendChild(document.createTextNode(room_functional_names[ri]));
|
||||
}
|
||||
if (room_typelabels[ri].length > 0) {
|
||||
div.title = room_names[ri] + "\n" + room_functional_names[ri] + "\n" + room_typelabels[ri];
|
||||
}
|
||||
e.appendChild(div);
|
||||
document.getElementById("day" + day)
|
||||
.appendChild(e);
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// Draw column border
|
||||
//-----------------------------------------------------------------
|
||||
e = document.createElement("div");
|
||||
|
||||
e.style.border = "solid";
|
||||
e.style.borderWidth = border + "px";
|
||||
|
||||
e.style.color = "#000";
|
||||
e.style.borderColor = "#fff #000";
|
||||
|
||||
e.style.display = "block";
|
||||
e.style.overflow = "hidden";
|
||||
e.style.position = "absolute";
|
||||
|
||||
e.style.top = (header_height + header_offset) + "px";
|
||||
e.style.left = (offset + timelabel_width + ri * room_width) + "px";
|
||||
e.style.width = room_width + "px";
|
||||
e.style.height = (height - header_height - header_offset) + "px";
|
||||
|
||||
e.style.margin = 0 + "px";
|
||||
e.style.padding = padding + "px";
|
||||
|
||||
document.getElementById("day" + day)
|
||||
.appendChild(e);
|
||||
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// Draw hour lines
|
||||
//-----------------------------------------------------------------
|
||||
for (var time = day_start - (day_start % 60) + 60; time < day_end; time += 60) {
|
||||
e = document.createElement("div");
|
||||
e.style.borderTopStyle = "solid";
|
||||
e.style.boderTopWidth = "2px";
|
||||
e.style.borderColor = "#f8f8f8";
|
||||
e.style.overflow = "hidden";
|
||||
e.style.position = "absolute";
|
||||
e.style.top = (header_height + header_offset + (time - day_start) * minute_height) + "px";
|
||||
e.style.left = (offset + timelabel_width) + "px";
|
||||
e.style.width = (width - timelabel_width) + "px";
|
||||
e.style.height = 0 + "px";
|
||||
e.style.zIndex = "-1";
|
||||
e.style.margin = 0 + "px";
|
||||
e.style.padding = padding + "px";
|
||||
document.getElementById("day" + day)
|
||||
.appendChild(e);
|
||||
|
||||
e = document.createElement("div");
|
||||
e.style.overflow = "hidden";
|
||||
e.style.position = "absolute";
|
||||
e.style.top = (header_height + header_offset - (header_height * 0.125) + (time - day_start) * minute_height) + "px";
|
||||
e.style.left = offset + "px";
|
||||
e.style.width = timelabel_width + "px";
|
||||
e.style.height = (header_height * 0.5) + "px";
|
||||
e.style.zIndex = "-1";
|
||||
e.style.margin = 0 + "px";
|
||||
e.style.padding = padding;
|
||||
e.style.fontFamily = "sans-serif";
|
||||
e.style.fontSize = (header_height * 0.25) + "px";
|
||||
e.style.textAlign = "right";
|
||||
e.style.color = "#e0e0e0";
|
||||
var label = time / 60 + "00";
|
||||
if (label.length < 4) {
|
||||
label = "0" + label;
|
||||
}
|
||||
e.appendChild(document.createTextNode(label));
|
||||
|
||||
document.getElementById("day" + day)
|
||||
.appendChild(e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// Draw a block for each meeting
|
||||
//-----------------------------------------------------------------
|
||||
var resize_func = function (div, t, l, w, h, to_fit) { return function () { resize(div, t, l, w, h, to_fit); }; };
|
||||
var maximize_func = function (e) { return function () { maximize(e); }; };
|
||||
|
||||
for (i = 0; i < items.length; i++) {
|
||||
{
|
||||
start_time = parseInt(items[i].time.substr(0, 2), 10) * 60 +
|
||||
parseInt(items[i].time.substr(2, 2), 10);
|
||||
end_time = start_time + (items[i].duration / 60);
|
||||
|
||||
var sess_width = room_width / items[i].lanes;
|
||||
var sess_height = ((end_time - start_time) * minute_height);
|
||||
var room_left = offset + timelabel_width + items[i].room_index * room_width;
|
||||
var sess_left = room_left + sess_width * items[i].lane;
|
||||
var sess_top = ((start_time - day_start) * minute_height) + header_height + header_offset;
|
||||
|
||||
e = document.createElement("div");
|
||||
e.style.border = "solid";
|
||||
e.style.borderWidth = border + "px";
|
||||
|
||||
if (fg[items[i].area]) {
|
||||
e.style.background = bg[items[i].area];
|
||||
e.style.color = fg[items[i].area];
|
||||
e.style.borderColor = fg[items[i].area];
|
||||
} else {
|
||||
e.style.background = "#e0e0e0";
|
||||
e.style.color = "#000000";
|
||||
e.style.borderColor = "#000000";
|
||||
}
|
||||
|
||||
e.style.display = "block";
|
||||
e.style.overflow = "hidden";
|
||||
e.style.position = "absolute";
|
||||
e.style.top = sess_top + "px";
|
||||
e.style.left = sess_left + "px";
|
||||
e.style.width = sess_width + "px";
|
||||
e.style.height = sess_height + "px";
|
||||
e.style.margin = 0 + "px";
|
||||
e.style.padding = padding + "px";
|
||||
e.style.fontFamily = "sans-serif";
|
||||
e.style.fontSize = "8pt";
|
||||
if (items[i].from_base_schedule)
|
||||
e.style.opacity = 0.5;
|
||||
|
||||
e.id = i;
|
||||
|
||||
e.onmouseover = resize_func(e, sess_top, room_left,
|
||||
room_width,
|
||||
sess_height, true);
|
||||
|
||||
e.onmouseout = resize_func(e, sess_top, sess_left, sess_width, sess_height, false);
|
||||
|
||||
if (items[i].agenda) {
|
||||
e.onclick = maximize_func(e);
|
||||
e.style.cursor = "pointer";
|
||||
}
|
||||
|
||||
div = document.createElement("div");
|
||||
div.appendChild(document.createTextNode(items[i].verbose_time));
|
||||
div.appendChild(document.createElement("br"));
|
||||
|
||||
label = items[i].name;
|
||||
if (label.length == 0) { label = "Free Slot"; }
|
||||
if (items[i].wg && fg[items[i].area]) {
|
||||
label = label + " (" + items[i].wg + ")";
|
||||
}
|
||||
var bold = document.createElement("span");
|
||||
bold.appendChild(document.createTextNode(label));
|
||||
bold.style.fontWeight = "bold";
|
||||
div.appendChild(bold);
|
||||
|
||||
e.appendChild(div);
|
||||
|
||||
document.getElementById("day" + items[i].day)
|
||||
.appendChild(e);
|
||||
}
|
||||
}
|
||||
|
||||
lastheight = height;
|
||||
lastwidth = width;
|
||||
lastfrag = window.location.hash;
|
||||
};
|
||||
|
||||
function resize(div, t2, l2, w2, h2, to_fit) {
|
||||
// Move the element to the front
|
||||
var parent = div.parentElement;
|
||||
parent.removeChild(div);
|
||||
parent.appendChild(div);
|
||||
|
||||
div.t2 = t2;
|
||||
div.l2 = l2;
|
||||
div.w2 = w2;
|
||||
div.h2 = h2;
|
||||
div.to_fit = to_fit;
|
||||
div.percent = 0;
|
||||
divlist.push(div);
|
||||
}
|
||||
|
||||
function animate() {
|
||||
var offset = $('#mtgheader')
|
||||
.offset()
|
||||
.left;
|
||||
var i;
|
||||
for (i = divlist.length - 1; i >= 0; i--) {
|
||||
var div = divlist[i];
|
||||
if (div.percent < 100) {
|
||||
div.percent += 5;
|
||||
var t1 = parseFloat(div.style.top.replace("px", "")) + "px";
|
||||
var l1 = offset + parseFloat(div.style.left.replace("px", "")) + "px";
|
||||
var w1 = parseFloat(div.style.width.replace("px", "")) + "px";
|
||||
var h1 = parseFloat(div.style.height.replace("px", "")) + "px";
|
||||
|
||||
div.style.top = wavg(t1, div.t2, div.percent) + "px" + "px";
|
||||
div.style.left = offset + wavg(l1, div.l2, div.percent) + "px" + "px";
|
||||
div.style.width = wavg(w1, div.w2, div.percent) + "px" + "px";
|
||||
div.style.height = wavg(h1, div.h2, div.percent) + "px" + "px";
|
||||
|
||||
if (t1 == div.t2 && l1 == div.l2 &&
|
||||
w1 == div.w2 && h1 == div.h2) { div.percent = 100; }
|
||||
|
||||
} else {
|
||||
if (div.to_fit) {
|
||||
var tmp = div.style.height;
|
||||
div.style.removeProperty("height");
|
||||
if (div.h2 < div.clientHeight) {
|
||||
div.h2 = div.clientHeight;
|
||||
div.percent = 0;
|
||||
} else {
|
||||
divlist.remove(i);
|
||||
if (div.callback) {
|
||||
tmp = div.callback;
|
||||
div.callback = undefined;
|
||||
tmp();
|
||||
}
|
||||
}
|
||||
div.style.height = tmp + "px";
|
||||
} else {
|
||||
divlist.remove(i);
|
||||
if (div.callback) {
|
||||
tmp = div.callback;
|
||||
div.callback = undefined;
|
||||
tmp();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function finish_maximize(e) {
|
||||
if (!items[e.id].agenda) {
|
||||
return;
|
||||
}
|
||||
|
||||
e.insertBefore(document.createElement("br"), e.firstChild);
|
||||
var offset = $('#mtgheader')
|
||||
.offset()
|
||||
.left;
|
||||
|
||||
var minimize_func = function (e) { return function () { minimize(e); }; };
|
||||
var i = document.createElement("i");
|
||||
i.classList.add('bi', 'bi-x-lg');
|
||||
i.style.cssFloat = "right";
|
||||
i.onclick = minimize_func(e);
|
||||
i.style.cursor = "pointer";
|
||||
e.insertBefore(i, e.firstChild);
|
||||
|
||||
var h = document.createElement("span");
|
||||
h.appendChild(document.createTextNode(items[e.id].dayname));
|
||||
h.style.fontWeight = "bold";
|
||||
e.insertBefore(h, e.firstChild);
|
||||
e.style.fontSize = "10pt";
|
||||
|
||||
var tmp = e.style.height;
|
||||
e.style.removeProperty("height");
|
||||
var used_height = e.clientHeight;
|
||||
e.style.height = tmp + "px";
|
||||
|
||||
var frame = document.createElement("iframe");
|
||||
frame.setAttribute("src", items[e.id].agenda);
|
||||
|
||||
frame.style.position = "absolute";
|
||||
frame.style.left = (offset + 8) + "px";
|
||||
frame.style.width = (e.clientWidth - 16) + "px";
|
||||
frame.style.top = (used_height + 8) + "px";
|
||||
frame.style.height = (e.clientHeight - used_height - 16) + "px";
|
||||
|
||||
frame.style.background = "#fff";
|
||||
frame.style.overflow = "auto";
|
||||
frame.id = "agenda";
|
||||
|
||||
frame.style.border = e.style.border;
|
||||
frame.style.borderWidth = border + "px";
|
||||
frame.style.padding = padding + "px";
|
||||
frame.style.borderColor = e.style.borderColor;
|
||||
|
||||
e.appendChild(frame);
|
||||
}
|
||||
|
||||
function finish_minimize(e) {
|
||||
e.onmouseover = e.oldmouseover;
|
||||
e.onmouseout = e.oldmouseout;
|
||||
e.oldmouseover = undefined;
|
||||
e.oldmouseout = undefined;
|
||||
e.style.cursor = "pointer";
|
||||
}
|
||||
|
||||
function maximize(e) {
|
||||
if (e.onmouseover) {
|
||||
e.oldmouseover = e.onmouseover;
|
||||
e.oldmouseout = e.onmouseout;
|
||||
e.onmouseover = undefined;
|
||||
e.onmouseout = undefined;
|
||||
e.style.cursor = "auto";
|
||||
|
||||
var callback_func = function (e) { return function () { finish_maximize(e); }; };
|
||||
e.callback = callback_func(e);
|
||||
|
||||
resize(e, 0, 0,
|
||||
document.body.clientWidth,
|
||||
document.body.clientHeight);
|
||||
}
|
||||
}
|
||||
|
||||
function minimize(e) {
|
||||
var agenda = document.getElementById("agenda");
|
||||
if (agenda) {
|
||||
e.removeChild(agenda);
|
||||
}
|
||||
|
||||
var callback_func = function (e) { return function () { finish_minimize(e); }; };
|
||||
e.callback = callback_func(e);
|
||||
e.oldmouseout();
|
||||
|
||||
e.removeChild(e.firstChild);
|
||||
e.removeChild(e.firstChild);
|
||||
e.removeChild(e.firstChild);
|
||||
e.style.fontSize = "8pt";
|
||||
}
|
||||
|
||||
function wavg(x1, x2, percent) {
|
||||
if (percent == 100) { return x2; }
|
||||
var res = x2 * (percent / 100) + x1 * ((100 - percent) / 100);
|
||||
return res;
|
||||
}
|
||||
|
||||
// Array Remove - By John Resig (MIT Licensed)
|
||||
Array.prototype.remove = function (from, to) {
|
||||
var rest = this.slice((to || from) + 1 || this.length);
|
||||
this.length = from < 0 ? this.length + from : from;
|
||||
return this.push.apply(this, rest);
|
||||
};
|
|
@ -66,13 +66,6 @@
|
|||
type
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {% if selected == "room-view" %}active{% endif %}"
|
||||
href="{% url 'ietf.meeting.views.room_view' num=meeting.number name=schedule.name owner=schedule.owner.email %}">
|
||||
Room
|
||||
grid
|
||||
</a>
|
||||
</li>
|
||||
{% else %}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {% if selected == "by-room" %}active{% endif %}"
|
||||
|
@ -86,12 +79,6 @@
|
|||
By type
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {% if selected == "room-view" %}active{% endif %}"
|
||||
href="{% url 'ietf.meeting.views.room_view' num=meeting.number %}">
|
||||
Room grid
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<li class="nav-item">
|
||||
|
@ -104,4 +91,4 @@
|
|||
<a class="nav-link"
|
||||
href="{% url 'ietf.meeting.views.agenda' num=meeting.number ext='.txt' %}">Plaintext</a>
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
|
|
@ -1,87 +0,0 @@
|
|||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% load ietf_filters %}
|
||||
{% load textfilters %}
|
||||
{% load static %}
|
||||
{% block title %}
|
||||
IETF {{ meeting.number }} meeting agenda
|
||||
{% if "-utc" in request.path %}(UTC){% endif %}
|
||||
{% endblock %}
|
||||
{% block bodyAttrs %}onload="draw_calendar();" onresize="draw_calendar();"{% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
{# FIXME: patched this for some minimal functionality, this code needs to be replaced, ideally with fullcalendar #}
|
||||
<div id="mtgheader">
|
||||
{% include "meeting/meeting_heading.html" with updated=schedule.meeting.updated selected="room-view" title_extra="Room Grid" %}
|
||||
</div>
|
||||
<div id="daycontainer" role="tabpanel">
|
||||
<ul id="daytabs" class="nav nav-tabs my-3" role="tablist">
|
||||
{% for day in days %}
|
||||
<li class="nav-item" role="presentation">
|
||||
<button data-bs-target="#day{{ forloop.counter0 }}"
|
||||
id="day{{ forloop.counter0 }}-tab"
|
||||
role="tab" type="button"
|
||||
class="nav-link {% if forloop.first %}active{% endif %}"
|
||||
data-bs-toggle="tab"
|
||||
aria-controls="day{{ forloop.counter0 }}">
|
||||
{{ day|date:"D, M d" }}
|
||||
</button>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
{% for day in days %}
|
||||
<div role="tabpanel"
|
||||
class="tab-pane{% if forloop.first %} active{% endif %}"
|
||||
id="day{{ forloop.counter0 }}">
|
||||
Error loading calendar for {{ day|date:"D, M d" }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block js %}
|
||||
<script>
|
||||
{% autoescape off %}
|
||||
var room_names = [{% for room in rooms %}"{{room.name}}"{% if not forloop.last %},{% endif %}{% endfor %}];
|
||||
var room_functional_names = [{% for room in rooms %}"{{room.functional_name}}"{% if not forloop.last %},{% endif %}{% endfor %}];
|
||||
var room_typelabels = [{% for room in rooms %}"{% for type in room.session_types.all %}{{type.name}}{% if not forloop.last %},{% endif %}{% endfor %}"{% if not forloop.last %},{% endif %}{% endfor %}];
|
||||
var num_days = {{days|length}};
|
||||
var rooms_count = {{ rooms.count }};
|
||||
|
||||
|
||||
var items = new Array();
|
||||
|
||||
{% for slot in unavailable %}
|
||||
if (room_names.indexOf("{{slot.get_hidden_location}}") >= 0 )
|
||||
{
|
||||
items.push({room_index:room_names.indexOf("{{slot.get_hidden_location}}"),day:{{slot.day}}, delta_from_beginning:{{slot.delta_from_beginning}},time:"{{slot.time|date:"Hi"}}-{{slot.end_time|date:"Hi"}}", verbose_time:"{{slot.time|date:"D, M d Hi"}}-{{slot.end_time|date:"Hi"}}",duration:{{slot.duration.total_seconds}}, type:"{{slot.type}}", name:"Unavailable", dayname:"{{ slot.time|date:"l"|upper }}, {{ slot.time|date:"F j, Y" }}" });
|
||||
}
|
||||
{% endfor %}
|
||||
{% for ss in assignments %}
|
||||
if (room_names.indexOf("{{ss.timeslot.get_hidden_location}}") >= 0 )
|
||||
{
|
||||
items.push({room_index:room_names.indexOf("{{ss.timeslot.get_hidden_location}}"),day:{{ss.day}}, delta_from_beginning:{{ss.delta_from_beginning}},time:"{{ss.timeslot.time|date:"Hi"}}-{{ss.timeslot.end_time|date:"Hi"}}", verbose_time:"{{ss.timeslot.time|date:"D, M d Hi"}}-{{ss.timeslot.end_time|date:"Hi"}}",duration:{{ss.timeslot.duration.total_seconds}}, type:"{{ss.slot_type}}", {% if ss.session.name %}name:"{{ss.session.name|escapejs}}",{% if ss.session.group.acronym %} wg:"{{ss.session.group.acronym}}",{%endif%}{% else %}{% if ss.slot_type.name == "Break" %}name:"{{ss.timeslot.name|escapejs}}", area:"break", wg:"break",{% elif ss.slot_type.slug == "unavail" %}name:"Unavailable",{% else %}name:"{{ss.session.group.name|escapejs}}{%if ss.session.group.state.name == "BOF"%} BOF{%endif%}",wg:"{{ss.session.group.acronym}}",state:"{{ss.session.group.state}}",area:"{{ss.session.group.parent.acronym}}",{% endif %}{% endif %} dayname:"{{ ss.timeslot.time|date:"l"|upper }}, {{ ss.timeslot.time|date:"F j, Y" }}"{% if ss.session.agenda %}, agenda:"{{ss.session.agenda.get_href}}"{% endif %}, from_base_schedule: {% if ss.schedule_id != meeting.schedule_id %}true{% else %}false{% endif %} });
|
||||
}
|
||||
{% endfor %}
|
||||
{% endautoescape %}
|
||||
</script>
|
||||
<script src="{% static "ietf/js/room-view.js" %}"></script>
|
||||
<script>
|
||||
$(document)
|
||||
.ready(function () {
|
||||
// Javascript to enable link to tab
|
||||
var url = document.location.toString();
|
||||
if (url.match('#')) {
|
||||
$('.nav-tabs button[data-bs-target="#' + url.split('#')[1] + '"]')
|
||||
.tab('show');
|
||||
}
|
||||
// Change hash for page-reload
|
||||
$('.nav-tabs button')
|
||||
.on('shown.bs.tab', function (e) {
|
||||
history.replaceState(null, null, e.currentTarget.dataset.bsTarget);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
|
@ -88,7 +88,6 @@
|
|||
"ietf/static/js/moment.js",
|
||||
"ietf/static/js/password_strength.js",
|
||||
"ietf/static/js/review-stats.js",
|
||||
"ietf/static/js/room-view.js",
|
||||
"ietf/static/js/room_params.js",
|
||||
"ietf/static/js/select2.js",
|
||||
"ietf/static/js/session_details_form.js",
|
||||
|
|
Loading…
Reference in a new issue