{% extends "three-column-content.html" %}
{% block three_col_media %}
    <link rel="stylesheet" href="{{ static('libs/nouislider.min.css') }}">
    <noscript>
        <style>
            #category, #types {
                visibility: visible;
            }
        </style>
    </noscript>
    {% if not request.in_contest_mode %}
        <style>
            #search-org, #search-author {
                width: 100%;
            }
            #problem-table th {
                padding: 0;
            }
            a.hot-problem-link:hover > .hot-problem-count {
                visibility: visible;
            }
            span.hot-problem-count {
                color: #555;
                font-size: 0.75em;
                vertical-align: super;
                visibility: hidden;
                padding-left: 0.25em;
                position: relative;
            }
            ul.problem-list {
                padding: 0 !important;
            }
            #content {
                width: 99%;
                margin-left: 0;
            }
            .volunteer-types {
                width: 100%;
            }
            .point-input {
                height: 2em;
                padding-top: 4px;
            }
        </style>
    {% endif %}
{% endblock %}

{% block three_col_js %}
    <script>
        window.point_start = {{point_start}};
        window.point_end = {{point_end}};
        window.point_values = {{point_values|json|safe}};
    </script>
    {% compress js %}
        <script src="{{ static('libs/nouislider.min.js') }}" type="text/javascript"></script>
        <script>
            $(function () {
                {% if not request.in_contest_mode %}
                    // wrap middle and write column
                    if (window.matchMedia('(max-width: 799px)').matches) {
                        $('.middle-content').next().addBack().wrapAll('<div class="problem-middle-right"/>');
                    }
                {% endif %}

                var $form = $('form#filter-form');
                var $search = $('#search');
                var $category = $('#category');

                function prep_form() {
                    $search.prop('disabled', !$search.val());
                    $category.prop('disabled', !$category.val());
                }

                function clear_point_interval() {
                    if ($('#search').val() !== "{{ search_query or '' }}") {
                        $('#point-start').remove();
                        $('#point-end').remove();
                    }
                }

                function clean_submit() {
                    prep_form();
                    clear_point_interval();
                    $form.submit();
                }

                function form_serialize() {
                    clear_point_interval();
                    return $form.serialize();
                }

                $category.select2().css({'visibility': 'visible'}).change(clean_submit);
                $('#types').select2({multiple: 1, placeholder: '{{ _('Filter by type...') }}'})
                    .css({'visibility': 'visible'});
                $('#search-org').select2({multiple: 1, placeholder: '{{ _('Organizations...') }}'})
                    .css({'visibility': 'visible'});
                $('#search-author').select2({multiple: 1, placeholder: '{{ _('Authors') }}...'})
                    .css({'visibility': 'visible'});

                // This is incredibly nasty to do but it's needed because otherwise the select2 steals the focus
                $search.keypress(function (e) {
                    if (e.keyCode == 13)
                        $('#go').click();
                });

                $('#random').click(function (e) {
                    var action = $form.attr('action');
                    $form.attr('action', '{{ url('problem_random') }}').attr('target', '_blank').submit();
                    $form.attr('action', action).attr('target', '');
                    e.preventDefault();
                });

                $('#go').click(clean_submit);

                $('input#full_text, input#hide_solved, input#show_types, input#show_editorial, input#have_editorial').click(function () {
                    prep_form();
                    ($('<form>').attr('action', window.location.pathname + '?' + form_serialize())
                        .append($('<input>').attr('type', 'hidden').attr('name', 'csrfmiddlewaretoken')
                            .attr('value', $.cookie('csrftoken')))
                        .attr('method', 'POST').appendTo($('body')).submit());
                });

                var intFormatter = {
                    to: function (value) {
                        return value;
                    },
                    from: function (value) {
                        return +value;
                    }
                };
                var $slider = $('#point-slider');
                if ($slider.length) {
                    var $start = $('#point-start');
                    var $end = $('#point-end');

                    noUiSlider.create($slider[0], {
                        start: [point_start, point_end],
                        connect: true,
                        snap: true,
                        tooltips: [intFormatter, intFormatter],
                        range: point_values
                    }).on('change', function (values) {
                        var start = +values[0], end = +values[1];
                        $start.prop('disabled', start === point_values.min).val(start);
                        $end.prop('disabled', end === point_values.max).val(end);
                    });
                }
                {% if feed_type=='volunteer' and request.user.has_perm('judge.suggest_problem_changes') %}
                    $(".edit-btn").on('click', function() {
                        var pid = $(this).attr('pid');
                        $('#volunteer-types-' + pid).css({'width': '100%'});
                        $('#volunteer-types-' + pid).select2({multiple: 1, placeholder: '{{ _('Add types...') }}'})
                        .css({'visibility': 'visible'});

                        $('#form-' + pid).show();
                        $('#submit-' + pid).show();
                        $(this).hide();
                    });

                    let isChecking = false;
                    $(".volunteer-submit-btn").on('click', function(e) {
                        var pid = $(this).attr('pid');
                        var pcode = $(this).attr('pcode');
                        var $form = $('#form-' + pid);
                        
                        if (!$form[0].checkValidity()) {
                            if (isChecking) return;
                            isChecking = true;
                            // The form won't actually submit;
                            $(this).click();
                        }
                        else {
                            isChecking = false;
                        }
                        if (isChecking) return;
                        
                        e.preventDefault();
                        $('#volunteer-types-' + pid).select2({multiple: 1, placeholder: '{{ _('Add types...') }}'})
                        .css({'visibility': 'visible'});
                        $('#form-' + pid).hide();
                        $('#edit-' + pid).show();
                        $('#thank-' + pid).show();
                        $(this).hide();
                        
                        var data = {
                            problem: pcode,
                            types: $('#volunteer-types-' + pid).val(),
                            knowledge_points: $('#knowledge_point-' + pid).val(),
                            thinking_points: $('#thinking_point-' + pid).val(),
                            feedback: $('#feedback-' + pid).val(),
                        };
                        $.post("{{url('volunteer_problem_vote')}}", data)
                            .fail(function() {
                                $('#thank-' + pid).html("{{_('Fail to vote!')}}");
                            })
                            .done(function() {
                                $('#thank-' + pid).html("{{_('Successful vote! Thank you!')}}");
                            });
                    });
                {% endif %}
            });
        </script>
    {% endcompress %}
    {% if request.in_contest_mode %}
        {% compress js %}
            <script src="{{ static('libs/tablesorter.js') }}" type="text/javascript"></script>
            <script type="text/javascript">
                $(function () {
                    $.tablesorter.addParser({
                        id: 'solvedsort',
                        is: function (s) {
                            return false;
                        },
                        format: function (s, table, cell, cellIndex) {
                            return $(cell).attr('solved');
                        },
                        type: 'numeric'
                    });

                    $('#problem-table').tablesorter({
                        headers: {
                            0: {
                                sorter: 'solvedsort'
                            }
                        },
                        textExtraction: function (node) {
                            node = $(node);
                            var text = node.text().replace(/^\s+|\s+$/g, '');
                            return (node.hasClass('p') ? text.replace(/p$/, '') : text);
                        }
                    });
                    window.register_contest_notification("{{url('contest_clarification_ajax', request.participation.contest.key)}}");

                    {% if request.in_contest_mode %}
                        $('.left-sidebar').hide();
                        $('.middle-content').css('max-width', '80%');
                    {% endif %}
                });
            </script>
        {% endcompress %}
    {% endif %}
{% endblock %}

{% block left_sidebar %}
    {% if not request.in_contest_mode %}
        <div class="left-sidebar">
            {{ make_tab_item('feed', 'fa fa-pagelines', url('problem_feed'), _('Feed')) }}
            {{ make_tab_item('list', 'fa fa-list', url('problem_list'), _('List')) }}
            {{ make_tab_item('admin', 'fa fa-edit', url('admin:judge_problem_changelist'), _('Admin')) }}
        </div>
    {% endif %}
{% endblock %}

{% block middle_content %}
    {% if in_contest_mode or page_type == 'list' %}
        <div id="content-left" class="problems">
            <table id="problem-table" class="table striped">
                <thead>
                <tr>
                    {% if request.in_contest_mode %}
                        {% if request.user.is_authenticated %}
                            <th class="solved"><i class="fa fa-check"></i></th>
                        {% endif %}
                        <th class="problem">{{ _('Problem') }}</th>
                        <th class="pcode">{{ _('Problem code') }}</th>
                        {% if show_types %}
                            <th>{{ _('Types') }}</th>
                        {% endif %}
                        <th class="points">{{ _('Points') }}</th>
                        <th class="users">{{ _('Users') }}</th>
                    {% else %}
                        {% if request.user.is_authenticated %}
                            <th class="solved">
                                <a href="{{ sort_links.solved }}"><i class="fa fa-check"></i>{{ sort_order.solved }}
                                </a>
                            </th>
                        {% endif %}
                        <th class="problem">
                            <a href="{{ sort_links.name }}">{{ _('Problem') }}{{ sort_order.name }}</a>
                        </th>
                        <th class="pcode">
                            <a href="{{ sort_links.code }}">{{ _('Problem code') }}</a>
                        </th>
                        <th class="category">
                            <a href="{{ sort_links.group }}">{{ _('Category') }}{{ sort_order.group }}</a>
                        </th>
                        {% if show_types %}
                            <th>
                                <a href="{{ sort_links.type }}">{{ _('Types') }}{{ sort_order.type }}</a>
                            </th>
                        {% endif %}
                        <th class="points">
                            <a href="{{ sort_links.points }}">{{ _('Points') }}{{ sort_order.points }}</a>
                        </th>
                        <th class="ac-rate">
                            <a href="{{ sort_links.ac_rate }}">{{ _('AC %%') }}{{ sort_order.ac_rate }}</a>
                        </th>
                        <th class="users">
                            <a href="{{ sort_links.user_count }}">{{ _('Users') }}{{ sort_order.user_count }}</a>
                        </th>
                        {% if show_editorial %}
                        <th class="editorial">
                            {{_('Editorial')}}
                        </th>
                        {% endif %}
                    {% endif %}
                </tr>
                </thead>
                <tbody>
                {% for problem in object_list %}
                    <tr>
                        {% if request.user.is_authenticated %}
                            {% if problem.id in completed_problem_ids %}
                                <td solved="1">
                                    <a href="{{ url('user_submissions', problem.code, request.user.username) }}">
                                        {% if problem.is_public or request.in_contest_mode %}
                                            <i class="solved-problem-color fa fa-check-circle"></i>
                                        {% else %}
                                            <i class="solved-problem-color fa fa-lock"></i>
                                        {% endif %}
                                    </a>
                                </td>
                            {% elif problem.id in attempted_problems %}
                                <td solved="0">
                                    <a href="{{ url('user_submissions', problem.code, request.user.username) }}">
                                        {% if problem.is_public or request.in_contest_mode %}
                                            <i class="attempted-problem-color fa fa-minus-circle"></i>
                                        {% else %}
                                            <i class="attempted-problem-color fa fa-lock"></i>
                                        {% endif %}
                                    </a>
                                </td>
                            {% else %}
                                <td solved="-1">
                                    {% if problem.is_public or request.in_contest_mode %}
                                        <i class="unsolved-problem-color fa fa-minus-circle"></i>
                                    {% else %}
                                        <i class="unsolved-problem-color fa fa-lock"></i>
                                    {% endif %}
                                </td>
                            {% endif %}
                        {% endif %}
                        <td class="problem">
                            <a href="{{ url('problem_detail', problem.code) }}">{{ problem.i18n_name }}</a>
                        </td>
                        <td class="pcode">
                            <a class="pcodecell" href="{{ url('problem_detail', problem.code) }}">{{ problem.code }}</a>
                        </td>
                        {% if not request.in_contest_mode %}
                            <td class="category">{{ problem.group.full_name }}</td>
                        {% endif %}
                        {% if show_types %}
                            <td class="types">
                                {% for type in problem.types_list %}
                                    <span class="type-tag">{{ type }}</span>{% if not loop.last %}, {% endif %}
                                {% endfor %}
                            </td>
                        {% endif %}
                        <td class="p">{{ problem.points|floatformat }}{% if problem.partial %}p{% endif %}</td>
                        {% if not request.in_contest_mode %}
                            <td class="ac-rate">{{ problem.ac_rate|floatformat(1) }}%</td>
                        {% endif %}
                        <td class="users">
                            <a href="{{ url('ranked_submissions', problem.code) }}">
                                {% if not request.in_contest_mode or not hide_contest_scoreboard %}
                                    {{ problem.user_count }}
                                {% else %}
                                    ???
                                {% endif %}
                            </a>
                        </td>
                        {% if show_editorial%}
                        <td class="editorial">
                            {% if problem.has_public_editorial %}
                                <a href="{{ url('problem_editorial', problem.code) }}">{{ _('Editorial') }}</a>
                            {% endif %}
                        </td>
                        {% endif %}
                    </tr>
                {% endfor %}
                </tbody>
            </table>
            {% if request.in_contest_mode and request.participation.contest.use_clarifications %}
                <br><br>
                {% if can_edit_contest %}
                <div style="float: right; font-size: 1.2em">
                    <a href="{{url('new_contest_clarification', request.participation.contest.key)}}"><i class="fa fa-plus-circle" style="color:green"></i> <u>{{_('Add clarifications')}}</u></a>
                </div>
                {% endif %}
                {% if has_clarifications %}
                    <div style="font-size: 1.2em; font-style: bold">
                        <i class="fa fa-question-circle"></i> {{_('Clarifications')}}</div>
                    <table class="table">
                        <tr>
                            <th>{{_('Problem')}}</th>
                            <th>{{_('Time')}}</th>
                            <th>{{_('Description')}}</th>
                        </tr>
                        {% for clarification in clarifications %}
                            <tr>
                                <td>
                                    <a href="{{ url('problem_detail', clarification.problem.code) }}"
                                       class="problem">
                                        {{ clarification.problem.name }}
                                    </a>
                                </td>
                                <td class="time">{{ relative_time(clarification.date) }}</td>
                                <td><p style="overflow-wrap: break-word; word-break: break-word">{{clarification.description}}</p></td>
                            </tr>
                        {% endfor %}
                    </table>
                {% else %}
                    <p style="font-style: italic; text-align: center">
                        {{ _('No clarifications have been made at this time.') }}</center>
                    </p>
                {% endif %}
            {% endif %}
            
        </div>
    {% elif page_type == 'feed' %}
        <div class="problem-feed-option">
            <a href="{{url('problem_feed')}}" class="problem-feed-option-item {{'active' if feed_type=='for_you'}}">
                {{_('FOR YOU')}}
            </a>
            <a href="{{url('problem_feed_new')}}" class="problem-feed-option-item {{'active' if feed_type=='new'}}">
                {{_('NEW')}}
            </a>
            {% if request.user.has_perm('judge.suggest_problem_changes') %}
                <a href="{{url('problem_feed_volunteer')}}" class="problem-feed-option-item {{'active' if feed_type=='volunteer'}}">
                    {{_('VOLUNTEER')}}
                </a>
            {% endif %}
        </div>
        {% for problem in problems %}
            {% include "problem/feed.html" %}
        {% endfor %}
    {% endif %}
    {% if page_obj.num_pages > 1 %}
        <div style="margin-top:10px;">{% include "list-pages.html" %}</div>
    {% endif %}
{% endblock %}

{% block right_sidebar %}
    {% if not request.in_contest_mode %}
        <div id="content-right" class="problems right-sidebar">
            {% include "problem/search-form.html" %}
            {% include "problem/recent-attempt.html" %}
        </div>
    {% endif %}
{% endblock %}