Skip to content
Snippets Groups Projects
journal.twig 9.88 KiB
Newer Older
{% extends 'base' %}

{% block title %}Контроль посещаемости{% endblock %}
{% block media %}
    {{ HTML.script('static/js/functions.js')|raw }}
    {{ HTML.script('static/js/libs/jquery.fileDownload.js')|raw }}

    {{ HTML.script('static/js/discipline/journal.js')|raw }}

    {{ HTML.script('static/js/libs/jquery-ui-1.12.1.js')|raw }}
    {# addon для установки даты и времени, а не только даты #}
    {#  {{ HTML.script('static/js/libs/jquery-timepicker-addon-1.6.3.js')|raw }}  #}
    {# локализация jquery datepicker plugin на русский #}
    {{ HTML.script('static/js/libs/datepicker-ru.js')|raw }}
    {{ HTML.script('static/js/libs/tabulator.min.js')|raw }}
    {#{{ HTML.script('static/js/libs/xlsx.full.min.js')|raw }}#}
    {#{{ HTML.script('static/js/libs/jspdf.min.js')|raw }}#}
    {#{{ HTML.script('static/js/libs/jspdf.plugin.autotable.js')|raw }}#}
    {{ HTML.style('static/css/teacher/discipline/journal.css')|raw }}
    {{ HTML.style('static/css/jquery-ui-1.12.1.css')|raw }}
    {{ HTML.style('static/css/tabulator.min.css')|raw }}
    {#HTML.style('https://unpkg.com/tabulator-tables@4.2.3/dist/css/tabulator_modern.min.css')|raw }} #}
    {# {{ HTML.style('static/css/jquery-timepicker-addon-1.6.3.css')|raw }} #}
{% endblock %}
{% macro AnchorButton(URL, Text, AnchorTitle, AnchorClass) %}
    {{ HTML.anchor(URL, Text, {
        'title': AnchorTitle,
        'class': AnchorClass
    })|raw }}
{% endmacro %}


{% macro JournalCell(Col, Row, Discipline, Attendance, LessonType) %}
    <td id="col_row_{{ Col }}_{{ Row }}" class="journal checkbox regular lesson_type_{{ LessonType }}">
        <input type="checkbox" id="checkbox_col_row_{{ Col }}_{{ Row }}" {{ Attendance ? 'checked' }}>
        <label class="checkmark" for="checkbox_col_row_{{ Col }}_{{ Row }}"></label>
    </td>
{% endmacro %}

{% macro JournalCellTemplate(Col, Row, Discipline, Attendance) %}
    <td id="col_row_{{ Col }}_{{ Row }}" class="journal checkbox regular" style="display: none">
        <input type="checkbox" id="checkbox_col_row_{{ Col }}_{{ Row }}" {{ Attendance ? 'checked' }}>
        <label class="checkmark" for="checkbox_col_row_{{ Col }}_{{ Row }}"></label>
    </td>
{% endmacro %}

{% macro EmptyCell(Col, Row) %}
    <td id="col_row_{{ Col }}_{{ Row }}" class="journal empty">
    </td>
{% endmacro %}

{% macro RateCell(Col, Row, Discipline, Rate) %}
    <td class="journal static semester">{{ Rate }}</td>
{% endmacro %}


{% macro LessonCell(Col, LessonID, LessonDate, LessonType, LessonName) %}
    <td id="lesson_{{ LessonID }}" class="lesson_col_{{ Col }} lesson_type_{{ LessonType }}">
=======
{% macro LessonCell(Col, LessonID, LessonDate, LessonType, SubgroupID) %}
    <td id="lesson_{{ LessonID }}" class="lesson_col_{{ Col }} lesson_type_{{ LessonType }} lesson_subgroup_{{SubgroupID}}">
>>>>>>> WIP: filtering by subgroup in journal #299
        <input type="text" id="lesson_input_{{ LessonID }}" class="lesson_input col_{{ Col }}" value="{{ LessonDate | date("d-m") }}">
        {# <input type="text" id="lesson_input_{{ LessonID }}" class="lesson_input col_{{ Col }}" value="{{ LessonDate }}"> #}
        <div>
            <input type="text" id="lesson_name_{{ LessonID }}" class="lesson_name_input col_{{ Col }}" value="{{ LessonName }}">
        </div>
        <div class="delete_lesson"><span class="delete_lesson_icon"></span></div>
    </td>
{% endmacro %}

{% macro LessonCellTemplate(Col, LessonID, LessonDate, SubgroupID) %}
    <td id="lesson_{{ LessonID }}" class="lesson_col_{{ Col }}" style="display: none">
        <input type="text" id="lesson_input_{{ LessonID }}" class="lesson_input col_{{ Col }}" value="{{ LessonDate | date("d-m") }}">
        {# <input type="text" id="lesson_input_{{ LessonID }}" class="lesson_input col_{{ Col }}" value="{{ LessonDate }}"> #}
        <div>
            <input type="text" id="lesson_name_{{ LessonID }}" class="lesson_name_input col_{{ Col }}" value="">
        </div>
        <div class="delete_lesson"><span class="delete_lesson_icon"></span></div>
    </td>
{% endmacro %}

{% block main_top_title %}Контроль посещаемости{% endblock %}
{% block main_content %}
    {% if Discipline.Milestone %}
        <p class="noEdit">Семестр завершен, выставлять посещаемость запрещено</p>
    {% endif %}

    <div class="rateHeader ClearFix">
        <h2 class="subject">{{ Discipline.SubjectName }}</h2>
        {% if Discipline.IsGlobal %}
            <h3 class="subject">{{ Discipline.GlobalName }}</h3>
        {% endif %}

        {{ _self.AnchorButton('discipline/' ~ Discipline.ID ~ '/rate', 'Семестр', 'Семестр', 'button') }}
        {{ _self.AnchorButton('discipline/' ~ Discipline.ID ~ '/exam', 'Сессия', 'Сессия', 'button') }}
        {{ _self.AnchorButton('discipline/' ~ Discipline.ID ~ '/history', 'История', 'История', 'button') }}
        {#{{ _self.AnchorButton('discipline/' ~ Discipline.ID ~ '/structure', Discipline.IsLocked ? 'Просмотр' : 'Редактирование', 'История', 'button') }}#}

        <div class="lessonSelector">
            <span class="defaultForm">Тип занятия:</span>
            <select class="defaultForm" id="lessonSelector">
                <option value="0">Все занятия</option>
                {% for Type in LessonTypes %}
                    <option value="{{ Type.ID }}">
                        {{ Type.LessonType }}
                    </option>
                {% endfor %}
            </select>
        </div>
        
        <div class="subgroupSelector">
            <span class="defaultForm">Подгруппы:</span>
            <select class="defaultForm" id="subgroupSelector">
                <option value="0">Все подгруппы</option>
                {% for Subgroup in Subgroups %}
                    <option value="{{ Subgroup.ID }}">
                        {{ Subgroup.Title }}
                    </option>
                {% endfor %}
            </select>
        </div>
        {#<div class="groupSelector">#}
            {#<span class="defaultForm">Фильтр:</span>#}
            {#<select class="defaultForm" id="groupSelector">#}
                {#<option value="0">Все группы</option>#}
                {#{% for Group in Groups %}#}
                    {#<option value="{{ Group.ID }}">#}
                        {#{% if Group.Degree == 'master' %}#}
                            {#Магистратура, {{ Group.GradeNum }} год#}
                        {#{% elseif Group.Degree == 'specialist' %}#}
                            {#Специалитет, {{ Group.GradeNum }} курс#}
                        {#{% elseif Group.Degree == 'postgraduate' %}#}
                            {#Аспирантура, {{ Group.GradeNum }} год#}
                        {#{% else %}#}
                            {#{{ Group.GradeNum }} курс#}
                        {#{% endif %}#}

                        {#{{ Group.GroupNum }} группа#}

                        {#{% if Group.FormName == 'очно-заочная' %}#}
                        {#{% if Group.FormName == 'заочная' %}#}
                            {#ЗО#}
                        {#{% endif %}#}
                    {#</option>#}
                {#{% endfor %}#}
            {#</select>#}
        {#</div>#}
Anton Bagliy's avatar
Anton Bagliy committed
        {#<span class="delete_button_switcher">Режим удаления</span>#}
    {#<button id="download-xlsx" class="defaultForm BlueButton marginBetween" style="width: 100px; height: 28px; margin-left: 5px; margin-right: 5px"> Скачать xlsx </button>#}
    {#<button id="download-pdf" class="defaultForm BlueButton marginBetween" style="width: 100px; height: 28px; margin-left: 5px; margin-right: 5px"> Скачать pdf </button>#}
    <button id="history-undo" class="defaultForm BlueButton marginBetween" style="width: 100px; height: 28px; margin-left: 5px; margin-right: 5px"> Отменить </button>
    <button id="history-redo" class="defaultForm BlueButton marginBetween" style="width: 100px; height: 28px; margin-left: 5px; margin-right: 5px"> Повторить </button>
    <button id="tabulator-clear-settings" class="defaultForm BlueButton marginBetween" style="width: 200px; height: 28px; margin-left: 5px; margin-right: 5px;"> Очистить форматирование </button>
        <label> Добавить новое занятие: </label>
        <input type="text" id="new_lesson_input" class="new_lesson_input">
        <button class="defaultForm BlueButton marginBetween" id="new_lesson_button" style="width: 100px; height: 28px; margin-left: 5px">добавить</button>
    <div class="journalContent" style="height:90vh;">
        <div id="studentsAttendance">
        </div>
    {#<div id="cellInfo" class="cellInfo">#}
        {#<span id="student" class="field">#}
            {#<span class="name">Студент:</span>#}
            {#<span class="value"></span>#}
        {#</span>#}
        {#<span id="lesson" class="field">#}
            {#<span class="name">Занятие:</span>#}
            {#<span class="value"></span>#}
        {#</span>#}
    {#</div>#}

    <div id="json_discipline" style="display: none">
        {{ Discipline|json_encode|raw }}
    </div>
    <div id="json_lessonTypes" style="display: none">
        {{ LessonTypes|json_encode|raw }}
    </div>
    <div id="json_lessons" style="display: none">
        {{ Lessons|json_encode|raw }}
    </div>
    <div id="json_students" style="display: none">
        {{ Students|json_encode|raw }}
    </div>
    <div id="json_groups" style="display: none">
        {{ Groups|json_encode|raw }}
    </div>
    <div id="json_attendance" style="display: none">
        {{ Attendance|json_encode|raw }}
    </div>