* feat: agenda page in vue (wip) * feat: scroll to agenda day * fix: vue 3 composition api + eslint settings * fix: agenda day scroll match indicator * fix: convert vite deps to yarn * fix: missing lodash + legacy build step * fix: agenda - move calendar into drawer * fix: improve agenda filter UI * fix: download ics + move agenda into own component * feat: use fullcalendar for agenda calendar view (wip) * feat: add events to agenda calendar * feat: agenda filter UI improvements * feat: agenda add to calendar dropdown * feat: agenda calendar filter + timezone + event coloring * feat: agenda calendar color improvements * chore: exclude dist-neue from git * feat: agenda calendar event modal * fix: rebuild yarn deps * chore: add run migration task to vscode * fix: agenda buttons display flag * feat: agenda event modal component * feat: show calendar event quick info on hover * fix: clear calendar quick info on timezone change * feat: agenda list view improvements * feat: agenda list row coloring * feat: agenda list note * feat: agenda list icons for office hours + hackathon * fix: agenda top links * refactor: use pinia as store for agenda components * feat: agenda jump to now * fix: agenda mobile improvements * feat: agenda search * feat: agenda search improvements * feat: agenda event recordings buttons for post-meeting * fix: agenda switch to meeting timezone on load * feat: agenda pre & live session buttons * fix: remove agenda utc + personalize links in top menu * feat: add pre-vue loading state on page load * feat: filter from agenda picker mode * fix: agenda UI improvements * fix: django-vite non-dev mode * chore: update yarn dependencies for vue + vite * feat: agenda settings panel + UI improvements * feat: agenda settings colors + import/export feature * feat: agenda color assignments + responsive UI improvements * feat: agenda realtime red line + debug datetime offset * feat: agenda add aria labels for settings * feat: add new agenda path + pages/menu * fix: bring base/menu.html up to main * fix: agenda various fixes * test: add new agenda item to meetings menu for item count * chore: restore devcontainer extensions list * fix: agenda UI improvements + montserrat default font * feat: agenda bolder text + hide event icons options * feat: agenda warning badge * fix: agenda various UI improvements + intersectionObserver fix * feat: agenda floorplan page + various UI improvements * feat: agenda floor plan pin * feat: view floor plan room from agenda * feat: agenda floor plan mobile optimization * feat: adjust calendar options + default calendar view in settings * feat: agenda persist picked events + change base font only on new agenda page * feat: agenda mobile view optimizations * fix: add .vite to cached volumes * fix: mobile view for filters, calendar, settings panels * test: upgrade cypress existing tests to work on bs5 + update dependencies * fix: use named url patterns to avoid hardcoded URLs. Add rudimentary test coverage for the neue views. Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
107 lines
5.1 KiB
HTML
107 lines
5.1 KiB
HTML
{% 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="automaticarrow(); checkParams();" onresize="checkParams();"{% endblock %}
|
|
{% block precontent %}
|
|
<div class="meeting-switch">
|
|
<i class="bi bi-arrow-left-right me-2"></i>
|
|
<a href="{% url 'floor-plan-neue' num=schedule.meeting.number %}">Switch to New Agenda Display</a>
|
|
</div>
|
|
{% endblock %}
|
|
{% block content %}
|
|
{% origin %}
|
|
{% include "meeting/meeting_heading.html" with selected="floor-plan" title_extra="Floor Plan" %}
|
|
{% for floor in floors %}
|
|
<h2 class="mt-4" id="floor-{{ floor.name|xslugify }}">{{ floor.name }}</h2>
|
|
<div class="row rooms">
|
|
<div class="col-sm-2">
|
|
{% for f in floors %}
|
|
{% for room in f.room_set.all %}
|
|
<a href="javascript: setarrow('room-{{ room.name|xslugify }}')">{{ room.name }}</a>
|
|
<br>
|
|
{% endfor %}
|
|
{% endfor %}
|
|
</div>
|
|
<div class="col-sm-2">
|
|
{% for f in floors %}
|
|
{% for room in f.room_set.all %}
|
|
{% if room.functional_display_name %}
|
|
<a href="javascript: setarrow('room-{{ room.name|xslugify }}')">{{ room.functional_display_name }}</a>
|
|
<br>
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endfor %}
|
|
</div>
|
|
<div class="col-sm-8">
|
|
<div class="floor-plan position-relative">
|
|
{% if floor.image %}
|
|
<img id="floor-{{ floor.name|xslugify }}-image"
|
|
alt="{{ floor.name }} Map"
|
|
class="img-fluid w-100"
|
|
src="{{ floor.image.url }}">
|
|
{# We need as many of these as we can have individual rooms combining into one #}
|
|
<div id="floor-{{ floor.name|xslugify }}-arrowdiv0"
|
|
class="position-absolute" hidden>
|
|
<img alt="Location arrow" src="{% static 'ietf/images/arrow-ani.webp' %}">
|
|
</div>
|
|
<div id="floor-{{ floor.name|xslugify }}-arrowdiv1"
|
|
class="position-absolute" hidden>
|
|
<img alt="Location arrow" src="{% static 'ietf/images/arrow-ani.webp' %}">
|
|
</div>
|
|
<div id="floor-{{ floor.name|xslugify }}-arrowdiv2"
|
|
class="position-absolute" hidden>
|
|
<img alt="Location arrow" src="{% static 'ietf/images/arrow-ani.webp' %}">
|
|
</div>
|
|
<div id="floor-{{ floor.name|xslugify }}-arrowdiv3"
|
|
class="position-absolute" hidden>
|
|
<img alt="Location arrow" src="{% static 'ietf/images/arrow-ani.webp' %}">
|
|
</div>
|
|
{% else %}
|
|
No floor image available yet.
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endfor %}
|
|
{% endblock %}
|
|
{% block js %}
|
|
<script src="{% static 'ietf/js/room_params.js' %}"></script>
|
|
<script>
|
|
// These must match the 'arrowdiv' divs above
|
|
var arrowsuffixlist = [ '0', '1', '2', '3' ];
|
|
var floorlist = [{% for floor in floors %}{% if not forloop.first %}, {%endif%}'floor-{{floor.name|xslugify}}'{% endfor %}];
|
|
|
|
function roommap(nm)
|
|
{
|
|
var c = findroom(nm);
|
|
if (c) return nm;
|
|
var m = suffixmap(nm);
|
|
// console.log("m=" + m);
|
|
return m;
|
|
}
|
|
|
|
function findroom(nm)
|
|
{
|
|
var left = 0, top = 0, right = 0, bottom = 0, floor="", width=0;
|
|
|
|
if (0) { }
|
|
{% for room in meeting.room_set.all %}{% if room.floorplan %}
|
|
else if (nm == 'room-{{room.name|xslugify}}') { left = {{room.left}}; top = {{room.top}}; right = {{room.right}}; bottom = {{room.bottom}}; floor='floor-{{room.floorplan.name|xslugify}}'; width={{room.floorplan.image.width}}; }{% endif %}{% endfor %}
|
|
|
|
{% for room in meeting.room_set.all %}{% if room.functional_display_name %}{% if room.floorplan %}
|
|
else if (nm == '{{room.functional_name|xslugify}}') { left = {{room.left}}; top = {{room.top}}; right = {{room.right}}; bottom = {{room.bottom}}; floor='floor-{{room.floorplan.name|xslugify}}'; width={{room.floorplan.image.width}}; }{% endif %}{% endif %}{% endfor %}
|
|
|
|
else return null;
|
|
|
|
// console.log("nm=" + nm + ",left=" + left + ",top=" + top + ",r=" + right + ",b=" + bottom);
|
|
return [left, top, right, bottom, floor, width];
|
|
}
|
|
</script>
|
|
{% endblock %} |