{% extends 'base' %}

{% block media %} {# head -> css, js #}
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    {{ HTML.style('static/css/student/subject.css')|raw }}
{% endblock %}

    {% macro event(event_name, event_date, event_ball, event_max_ball) %}
        <tr class="table_content">
            <td>{{ event_name }}</td>
            <td>{{ event_date }}</td>
            <td>{{ event_ball }} / {{ event_max_ball }}</td>
        </tr>
    {% endmacro %}

{% import _self as map %}

{% block title %}{{ Discipline.SubjectName|default('УКД') }}{% endblock %}
{% block main_top_title %}Учебная карта дисциплины{% endblock %}
{% block main_content_classes %}sidePadding{% endblock %}

{% block main_content %}

    <div class="pageTitle">
        <h2>{{ Discipline.SubjectName|default('—') }}</h2>
    </div>

    <div class="disciplineInfo first">
        <div class="clearFix">
            <div class="label">Форма аттестации:</div>
            <div class="content">{{ Rus[Discipline.Type] |default('—') }}</div>
        </div>
        <div class="clearFix">
            <div class="label">Семестр:</div>
            <div class="content">
                {{ Semester.Season == 'autumn' ? 'Осенний' : 'Весенний' }} семестр
                {{ Semester.Year }}/{{ Semester.Year + 1 }} учебного года
            </div>
        </div>
    </div>

    <div class="disciplineInfo last">
        <div class="clearFix">
            <div class="label">Преподаватели:</div>
            <div class="content">
                {% set TeachersLimit = 3 %}
                {% for Teacher in Teachers %}
                    {% if loop.index < TeachersLimit or loop.index == TeachersLimit and loop.last %}
                        <div>{{ Teacher.Name }}</div>
                    {% else %}
                        {% if loop.index == TeachersLimit %}
                            {% set MoreTeachers = Teacher.Name %}
                        {% else %}
                            {% set MoreTeachers = MoreTeachers ~ Teacher.Name %}
                        {% endif %}
                        {% if loop.last %}
                            <div><abbr title="{{ MoreTeachers }}">...</abbr></div>
                        {% else %}
                            {% set MoreTeachers = MoreTeachers ~ '\n' %}
                        {% endif %}
                    {% endif %}
                {% else %}
                    —
                {% endfor %}
            </div>
        </div>
        <div class="clearFix">
            <div class="label">Учебная нагрузка:</div>
            <div class="content">

                {% if (Discipline.Practice) and (Discipline.Labs) %}
                    {% set FirstConjuction = ',' %}
                    {% set SecondConjuction = ' и' %}
                {% elseif (Discipline.Practice) or (Discipline.Labs) %}
                    {% if Discipline.Lectures %}
                        {% set FirstConjuction = ' и' %}
                    {% elseif Discipline.Labs %}
                        {% set SecondConjuction = ' и' %}
                    {% endif %}
                {% endif %}

                {% set Hours = [
                    { Type: 'Lectures', Text: 'теории' ~ FirstConjuction },
                    { Type: 'Practice', Text: 'практики' ~ SecondConjuction },
                    { Type: 'Labs',     Text: 'лабораторных занятий' }
                ] %}

                {% for Hour in Hours if Discipline[Hour.Type] %}
                    {{ Discipline[Hour.Type] }}
                    {{ Rus.NumEnding(Discipline[Hour.Type], ['час', 'часа', 'часов']) }}
                    {{ Hour.Text }}
                {% endfor %}

            </div>
        </div>
    </div>

    <h3 class="blockTitle">Баллы за семестр</h3>

    {% set SemesterRate = 0 %}
    {% set SemesterMaxRate = 0 %}

    <div class="blockMargin">
    {% for Module in DisciplineMap.Modules %}
        {% set ModuleRate = 0 %}
        {% set ModuleMaxRate = 0 %}

        <div class="tableTitle Module">
            {{ Module.Title|default('Модуль ' ~ loop.index) }}
        </div>
        {% for SubmoduleID in Module.Submodules %}
            {% set Submodule = Submodules[SubmoduleID] %}
            <div class="submoduleBlock">
                <div class="submoduleTitle">
                    {{ Submodule.Title|default('Мероприятие ' ~ loop.index) }}
                </div>
                <div class="submoduleRate">
                    {{ +Submodule.Rate }} / {{ +Submodule.MaxRate }}
                    {% set ModuleRate = ModuleRate + Submodule.Rate %}
                </div>
                <div class="submodulePercent">
                    {{ Submodule.MaxRate ? (Submodule.Rate * 100) // Submodule.MaxRate ~ ' %' : '—' }}
                    {% set ModuleMaxRate = ModuleMaxRate + Submodule.MaxRate %}
                </div>
                <div class="submoduleDate">
                    {{ Submodule.Date ? Submodule.Date|date('d.m.Y') : '—' }}
                </div>
            </div>

            {% if loop.last %}
                <div class="moduleResult">
                    Итого за модуль: {{ ModuleRate }} / {{ ModuleMaxRate }}
                    {% set SemesterRate = SemesterRate + ModuleRate %}
                    {% set SemesterMaxRate = SemesterMaxRate + ModuleMaxRate %}
                </div>
            {% endif %}
        {% endfor %}
    {% endfor %}
    </div>

    {% if Discipline.Type == 'exam' %}
    <h3 class="blockTitle">Допуск к экзамену</h3>
    <div class="blockMargin">
        {% set Admission = 38 - (SemesterRate + ExtraRate) %}
        {% if Admission > 0 %}
            Для допуска к экзамену Вам необходимо получить еще {{ Admission }} {{ Rus.NumEnding(Admission, ['балл', 'балла', 'баллов']) }}.
        {% else %}
            Поздравляем, заработанных Вами баллов достаточно для получения допуска к экзамену!
        {% endif %}
        {% if ExtraRate %}
            <div class="blockMargin">
                <div class="submoduleBlock topBorder">
                    <div class="submoduleTitle">Добор баллов</div>
                    <div class="submoduleRate">{{ ExtraRate }}</div>
                    <div class="submodulePercent">&nbsp;</div>
                    <div class="submoduleDate">—</div>
                </div>
            </div>
        {% endif %}
    </div>

    <div class="Middle totalRate">
        Промежуточный итог: {{ SemesterRate + ExtraRate }} / {{ SemesterMaxRate }}
    </div>

    {% set Bonus = Submodules[DisciplineMap.Bonus] %}
    {% set Exam = Submodules[DisciplineMap.Exam] %}

    <h3 class="blockTitle">Экзамен</h3>
    <div class="blockMargin">
        <div class="tableTitle Extra">
            Экзамен по курсу &laquo;{{ Discipline.SubjectName|default('—') }}&raquo;
        </div>
        {% if Bonus is not empty %}
        <div class="submoduleBlock">
            <div class="submoduleTitle">Бонусные баллы</div>
            <div class="submoduleRate">
                {{ +Bonus.Rate }} / {{ +Bonus.MaxRate }}
            </div>
            <div class="submodulePercent">
                {{ +Bonus.MaxRate ? (Bonus.Rate * 100) // Bonus.MaxRate : 0 }} %
            </div>
            <div class="submoduleDate">
                {{ Bonus.Date ? Bonus.Date|date('d.m.Y') : '—' }}
            </div>
        </div>
        {% endif %}
        {% if Exam is not empty %}
            <div class="submoduleBlock">
                <div class="submoduleTitle">Экзамен по курсу &laquo;{{ Discipline.SubjectName|default('—') }}&raquo;</div>
                <div class="submoduleRate">
                    {{ +Exam.Rate }} / {{ +Exam.MaxRate }}
                </div>
                <div class="submodulePercent">
                    {{ +Exam.MaxRate ? (Exam.Rate * 100) // Exam.MaxRate : 0 }} %
                </div>
                <div class="submoduleDate">
                    {{ Exam.Date ? Exam.Date|date('d.m.Y') : '—' }}
                </div>
            </div>
        {% endif %}
    </div>

    <div class="Final totalRate">
        {% set Rating = SemesterRate + ExtraRate + Bonus.Rate + Exam.Rate %}
        Итоговый рейтинг: {{ min(Rating, 100) }} / 100
    </div>

    {% elseif Discipline.Type == 'credit' %}
        <h3 class="blockTitle">Зачет</h3>
        <div class="blockMargin">
            {% set Admission = 60 - (SemesterRate + ExtraRate) %}
            {% if Admission > 0 %}
                Для получения зачета необходимо набрать ещё {{ Admission }} {{ Rus.NumEnding(Admission, ['балл', 'балла', 'баллов']) }}.
            {% else %}
                Поздравляем, Вы получили зачет по курсу &laquo;{{ Discipline.SubjectName|default('—') }}&raquo;!
            {% endif %}
            {% if ExtraRate or not Admission or Bonus is not empty %}
            <div class="tableTitle Extra">
                Зачет по курсу &laquo;{{ Discipline.SubjectName|default('—') }}&raquo;
            </div>
            {% if ExtraRate or not Admission %}
                <div class="blockMargin">
                    <div class="submoduleBlock topBorder">
                        <div class="submoduleTitle">Добор баллов</div>
                        <div class="submoduleRate">{{ +ExtraRate }}</div>
                        <div class="submodulePercent">&nbsp;</div>
                        <div class="submoduleDate">—</div>
                    </div>
                </div>
            {% endif %}
            {% if Bonus is not empty %}
                <div class="submoduleBlock">
                    <div class="submoduleTitle">Бонусные баллы</div>
                    <div class="submoduleRate">
                        {{ +Bonus.Rate }} / {{ +Bonus.MaxRate }}
                    </div>
                    <div class="submodulePercent">
                        {{ +Bonus.MaxRate ? (Bonus.Rate * 100) // Bonus.MaxRate : 0 }} %
                    </div>
                    <div class="submoduleDate">
                        {{ Bonus.Date ? Bonus.Date|date('d.m.Y') : '—' }}
                    </div>
                </div>
            {% endif %}
            {% endif %}
        </div>

        <div class="Final totalRate">
            {% set Rating = SemesterRate + ExtraRate + Bonus.Rate %}
            Итоговый рейтинг: {{ min(Rating, 100) }} / 100
        </div>
    {% endif %}
{% endblock %}