utn-frm-si/reservas

View on GitHub
templates/app_reservas/tv_cuerpos.html

Summary

Maintainability
Test Coverage
{% extends 'app_reservas/base_tv.html' %}
{% load static %}

{% block title %}
    Distribución física - Cuerpos
{% endblock title %}


{% block static_css %}
    {{ block.super }}

    <link rel="stylesheet" href='{% static 'apps/reservas/css/tv_cuerpos.css' %}'>
{% endblock static_css %}


{% block contenido %}
    <div id="cuerpos">
        {% for cuerpo in cuerpos %}
            <div id="cuerpo_{{ cuerpo.numero }}" class="contenedor-calendario">
                <h1>{{ cuerpo }}</h1>

                <div id="calendar_cuerpo_{{ cuerpo.numero }}" class="calendar"></div>
            </div>
        {% endfor %}
    </div>
{% endblock contenido %}


{% block footer_right %}
    <div id="footer-right-image" class="footer-image">
        <img src='{% static 'apps/reservas/images/gtlogo-80px.png'%}'></img>
    </div>
    <div id="footer-right-content">
        <p>
            Gestión Tecnológica, DiTIC
            <br />
            Facultad Regional Mendoza
            <br />
            Universidad Tecnológica Nacional
        </p>
    </div>
{% endblock footer_right %}


{% block scripts %}
    <script>
        {% block fullcalendar_js_vars %}
            {{ block.super }}
        {% endblock fullcalendar_js_vars %}

        $(document).ready(function() {
            {% for cuerpo in cuerpos %}
                $("#calendar_cuerpo_{{ cuerpo.numero }}").fullCalendar({
                    {% block fullcalendar_defaultView %}
                        {{ block.super }}
                    {% endblock fullcalendar_defaultView %}
                    {% block fullcalendar_base_config %}
                        {{ block.super }}
                    {% endblock fullcalendar_base_config %}
                    resourceColumns: [
                        {
                            group: true,
                            labelText: 'Nivel',
                            field: 'nivel'
                        },
                        {
                            labelText: 'Recurso',
                            field: 'title'
                        },
                    ],
                    resources: [
                        {% for nivel in cuerpo.get_niveles %}
                            {% if not nivel_solicitado or nivel_solicitado == nivel.numero %}
                                {% for tipo_recurso in nivel.get_recursos %}
                                    {% for recurso in tipo_recurso.elementos %}
                                        {
                                            id: '{{ recurso.id }}',
                                            nivel: '{{ nivel.get_nombre_corto }}',
                                            title: '{{ recurso.get_nombre_corto }}',
                                        },
                                    {% endfor %}
                                {% endfor %}
                            {% endif %}
                        {% endfor %}
                    ],
                    eventSources: [
                        {% for nivel in cuerpo.get_niveles %}
                            {% if not nivel_solicitado or nivel_solicitado == nivel.numero %}
                                {% for tipo_recurso in nivel.get_recursos %}
                                    {% for recurso in tipo_recurso.elementos %}
                                        {
                                            url: '{% url "recurso_eventos_json" recurso.id %}',
                                            {% if recurso.calendar_color %}
                                                color: '{{ recurso.calendar_color }}',
                                            {% endif %}
                                        },
                                    {% endfor %}
                                {% endfor %}
                            {% endif %}
                        {% endfor %}
                    ],
                    header: {
                        {% block fullcalendar_header %}
                            {{ block.super }}
                        {% endblock fullcalendar_header %}
                    },
                    {% block fullcalendar_loading_callback %}
                        {{ block.super }}
                    {% endblock fullcalendar_loading_callback %}
                    {% block fullcalendar_opciones %}
                        {{ block.super }}
                    {% endblock %}
                });
            {% endfor %}

            // Función que genera la transición de cuerpos, al ir quitando el último cuerpo del
            // listado, y añadiéndolo al principio del mismo.
            function generarTransicionCuerpo() {
                var ultimo_cuerpo = $(".contenedor-calendario").last();
                ultimo_cuerpo.hide();
                $("#cuerpos").prepend(ultimo_cuerpo);
                ultimo_cuerpo.fadeIn(1500);
            }

            // Ejecuta la transición sólo cuando hay más de un cuerpo disponible en la vista.
            if ($(".contenedor-calendario").length > 1) {
                // Establece la transición de cuerpos cada 10 segundos.
                var timer = setInterval(generarTransicionCuerpo, 10000);
            }
        });
    </script>
{% endblock scripts %}