{% extends "three-column-content.html" %} {% block meta %} <meta name="description" content="The {{ SITE_NAME }}'s contest list - past, present, and future."> {% endblock %} {% block three_col_media %} <style> .non-padding-top { padding-top: 0; } .btn-contest { display: inline-block; padding: 1px 6px; } #search-contest { width: 100%; height: 2.3em; } #search-org { width: 100%; } .contest-format-user { flex: 0.5 !important; } .participate-button { float: right; } </style> {% block contest_list_media %}{% endblock %} {% endblock %} {% block js_media %} <script type="text/javascript"> $(document).ready(function () { $('#active-url').attr('href', changeTabParameter('active')); $('#current-url').attr('href', changeTabParameter('current')); $('#future-url').attr('href', changeTabParameter('future')); $('#past-url').attr('href', changeTabParameter('past')); registerNavigation(); var $form = $('form#filter-form'); $('#hide_organization_contests').click(function () { submitFormWithParams($form, "POST"); }); $('#go').click(function() { submitFormWithParams($form, "GET"); }); $('.time-remaining').each(function () { count_down($(this)); }); $('.contest-tag').find('a[data-featherlight]').featherlight(); $('.join-warning').click(function () { let q = '{{ _('Are you sure you want to join?') }}\n' + '{{ _('Joining a contest for the first time starts your timer, after which it becomes unstoppable.') }}'; {% if request.in_contest %} q += " {{ _('By joining in this contest, you will automatically leave contest') }} \"{{ request.participation.contest.name }}\". "; {% endif %} return confirm(q); }); $form.on('keypress', function(e) { if (e.key === 'Enter') { e.preventDefault(); } }); $('#search-contest').keypress(function (e) { if (e.keyCode === 13) { $('#go').click(); } }); $('#search-org').select2({multiple: 1, placeholder: '{{ _('Groups') }}...'}); $('#order').select2(); // var tooltip_classes = 'tooltipped tooltipped-e'; // // $('.contest-tag').each(function () { // var link = $(this);// // link.mouseenter(function (e) { // link.addClass(tooltip_classes).attr('aria-label', link.attr('data-description')); // }).mouseleave(function (e) { // link.removeClass(tooltip_classes).removeAttr('aria-label'); // }); // }); }); </script> {% block contest_list_js %}{% endblock %} {% endblock %} {% block left_sidebar %} {% include "contest/contest-list-tabs.html" %} {% endblock %} {% block right_sidebar %} <div class="right-sidebar"> {% include "contest/search-form.html" %} </div> {% endblock %} {% from "contest/macros.html" import contest_head, time_left, user_count, contest_format_user %} {% macro contest_join(contest, request, is_past=False) %} {% if request.in_contest and request.participation.contest == contest %} <button class="small" disabled>{{ _('In contest') }}</button> {% elif is_past %} <form action="{{ url('contest_join', contest.key) }}" method="post"> {% csrf_token %} <input type="submit" class="unselectable button full small" value="{{ _('Virtual join') }}"> </form> {% elif request.profile.id in contest.editor_ids or request.profile.id in contest.tester_ids %} <form action="{{ url('contest_join', contest.key) }}" method="post"> {% csrf_token %} <input type="submit" class="unselectable button full small" value="{{ _('Spectate') }}"> </form> {% else %} <form action="{{ url('contest_join', contest.key) }}" method="post"> {% csrf_token %} <input type="submit" class="unselectable button full small join-warning" value="{{ _('Join') }}"> </form> {% endif %} {% endmacro %} {% block middle_content %} <div class="tabs tabs-no-flex" style="width: 100%;margin-left: auto;margin-right: auto;"> <ul> {% if request.user.is_authenticated %} <li class="{{'active' if current_tab=='active'}}"> <a id='active-url'>{{ _('Active') }} {% if active_count %} ({{active_count}}) {% endif %} </a> </li> {% endif %} <li class="{{'active' if current_tab=='current'}}"> <a id='current-url'>{{ _('Ongoing') }} {% if current_count %} ({{current_count}}) {% endif %} </a> </li> <li class="{{'active' if current_tab=='future'}}"> <a id='future-url'>{{ _('Upcoming') }} {% if future_count %} ({{future_count}}) {% endif %} </a> </li> <li class="{{'active' if current_tab=='past'}}"> <a id='past-url'>{{ _('Past') }}</a> </li> </ul> </div> {% if request.user.is_authenticated and current_tab == 'active' %} {% if contests %} {% for participation in contests %} {% with contest=participation.contest %} <div class="list-contest"> <div class="info-contest"> <div class="contest-title"> {{ _('Contests') }} </div> {{ contest_head(contest, organization) }} </div> <div class="info-contest"> <div class="contest-title"> {{ _('Time') }} </div> <div class="contest-block"> {% if contest.start_time %} {{ time_left(contest) }} {% if contest.time_limit %} <span class="time"> {% trans countdown=participation.end_time|as_countdown %}Window ends in {{countdown}}{% endtrans %} </span> {% elif contest.time_before_end %} <span class="time">{% trans countdown=contest.end_time|as_countdown %}Ends in {{countdown}}{% endtrans %}</span> {% endif %} {% endif %} </div> </div> <div class="info-contest contest-format-user"> {{ contest_format_user(contest, request, is_official=is_official) }} <div class="participate-button"> {{ contest_join(contest, request) }} </div> </div> </div> {% endwith %} {% endfor %} {% if page_obj and page_obj.num_pages > 1 %} <div style="margin-top: 10px;"> {% include "list-pages.html" %} </div> {% endif %} {% else %} <i> {{ _('There is no active contest at this time.') }} </i> {% endif %} {% endif %} {% if current_tab == 'current' %} {% if contests %} {% for contest in contests %} <div class="list-contest"> <div class="info-contest"> <div class="contest-title"> {{ _('Contests') }} </div> {{ contest_head(contest, organization) }} </div> <div class="info-contest"> <div class="contest-title"> {{ _('Time') }} </div> <div class="contest-block"> {% if contest.start_time %} {{ time_left(contest) }} {% if contest.time_before_end %} <span class="time">{% trans countdown=contest.end_time|as_countdown %}Ends in {{countdown}}{% endtrans %}</span> {% endif %} {% endif %} </div> </div> <div class="info-contest contest-format-user"> {{ contest_format_user(contest, request, is_official=is_official) }} <div class="participate-button"> {{ contest_join(contest, request) }} </div> </div> </div> {% endfor %} {% if page_obj and page_obj.num_pages > 1 %} <div style="margin-top: 10px;"> {% include "list-pages.html" %} </div> {% endif %} {% else %} <i> {{ _('There is no ongoing contest at this time.') }} </i> {% endif %} {% endif %} {% if current_tab == 'future' %} {% if contests %} {% for contest in contests %} <div class="list-contest"> <div class="info-contest"> <div class="contest-title"> {{ _('Contests') }} </div> {{ contest_head(contest, organization) }} </div> <div class="info-contest"> <div class="contest-title"> {{ _('Time') }} </div> <div class="contest-block"> {% if contest.start_time %} {{ time_left(contest) }} {% if contest.time_before_start %} <span class="time">{{ _('Starting in %(countdown)s.', countdown=contest.start_time|as_countdown) }}</span> {% endif %} {% endif %} </div> </div> <div class="info-contest contest-format-user"> {{ contest_format_user(contest, request, show_user=False, is_official=is_official) }} </div> </div> {% endfor %} {% if page_obj and page_obj.num_pages > 1 %} <div style="margin-top: 10px;"> {% include "list-pages.html" %} </div> {% endif %} {% else %} <i>{{ _('There is no scheduled contest at this time.') }}</i> {% endif %} {% endif %} {% if current_tab == 'past' %} {% if contests %} {% for contest in contests %} <div class="list-contest"> <div class="info-contest"> <div class="contest-title"> {{ _('Contests') }} </div> {{ contest_head(contest, organization) }} </div> <div class="info-contest"> <div class="contest-title"> {{ _('Time') }} </div> <div class="contest-block"> {{ time_left(contest) }} </div> </div> <div class="info-contest contest-format-user"> {{ contest_format_user(contest, request, is_official=is_official) }} <div class="participate-button"> {{ contest_join(contest, request, is_past=True) }} </div> </div> </div> {% endfor %} {% if page_obj and page_obj.num_pages > 1 %} <div style="margin-top: 10px;"> {% include "list-pages.html" %} </div> {% endif %} {% else %} <i> {{ _('There is no past contest.') }} </i> {% endif %} {% endif %} {% endblock %}