327 lines
17 KiB
HTML
327 lines
17 KiB
HTML
{% extends 'base.html' %}
|
||
|
||
{% load filters %}
|
||
|
||
{% block title %}{{ task.name }}|настройки{% endblock %}
|
||
|
||
{% block scripts %}
|
||
function uploaded() {
|
||
document.getElementById('is_uploaded').style.display = 'block';
|
||
document.getElementById('is_uploaded').nodeValue = document.getElementById('file-upload').nodeValue;
|
||
}
|
||
function uploaded1() {
|
||
document.getElementById('send').style.display = 'block';
|
||
document.getElementById('is_uploaded1').nodeValue = document.getElementById('file-upload1').nodeValue;
|
||
}
|
||
function valueChanged() {
|
||
const other = document.getElementById('show_details');
|
||
other.disabled = !document.getElementById('show_result').checked;
|
||
console.log('changed');
|
||
if (other.disabled) {
|
||
other.checked = false;
|
||
}
|
||
}
|
||
function set_checkboxes() {
|
||
if (!document.getElementById('show_result').checked) {
|
||
document.getElementById('show_details').disabled = true;
|
||
}
|
||
}
|
||
{% endblock %}
|
||
|
||
{% block onload %}set_checkboxes(){% endblock %}
|
||
|
||
{% block styles %}
|
||
input[type="file"] {
|
||
display: none;
|
||
}
|
||
input[name="new_file"] {
|
||
display: none;
|
||
}
|
||
.my_td {
|
||
vertical-align: middle;
|
||
height: 20px;
|
||
}
|
||
.params {
|
||
margin-top: 20px;
|
||
}
|
||
.in {
|
||
width: 500%;
|
||
}
|
||
{% endblock %}
|
||
{% block content %}
|
||
<h5><a href="/admin/block?id={{ task.block.id }}">{{ task.block.name }}</a></h5>
|
||
<h2>{{ task.name }} <a style="color: black;" href="/task?id={{ task.id }}"><i class="fa fa-eye"></i></a></h2>
|
||
<form action="" method="POST" id="main_form" enctype="multipart/form-data">
|
||
{% csrf_token %}
|
||
<table>
|
||
<tr class="params">
|
||
<td>
|
||
Легенда
|
||
</td>
|
||
<td>
|
||
<textarea form="main_form" rows="15" class="in" style="resize: none;" name="legend">{{ task.legend }}</textarea>
|
||
</td>
|
||
</tr>
|
||
<tr class="params">
|
||
<td>
|
||
Формат входных данных
|
||
</td>
|
||
<td>
|
||
<textarea form="main_form" rows="15" class="in" style="resize: none;" name="input">{{ task.input }}</textarea>
|
||
</td>
|
||
</tr>
|
||
<tr class="params">
|
||
<td>
|
||
Формат выходных данных
|
||
</td>
|
||
<td>
|
||
<textarea form="main_form" rows="15" class="in" style="resize: none;" name="output">{{ task.output }}</textarea>
|
||
</td>
|
||
</tr>
|
||
<tr class="params">
|
||
<td>
|
||
Спецификации
|
||
</td>
|
||
<td>
|
||
<textarea form="main_form" rows="15" class="in" style="resize: none;" name="specifications">{{ task.specifications }}</textarea>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Ограничения по времени
|
||
</td>
|
||
<td>
|
||
<input form="main_form" type="text" name="time_limit" class="in" value="{{ task.time_limit }}">
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Вес задачи
|
||
</td>
|
||
<td>
|
||
<input form="main_form" type="text" name="weight" class="in" value="{{ task.weight }}">
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Максимальная оценка
|
||
</td>
|
||
<td>
|
||
<input form="main_form" type="text" name="max_mark" class="in" value="{{ task.max_mark }}">
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Максимум решений
|
||
</td>
|
||
<td>
|
||
<input form="main_form" type="text" name="max_solutions_count" class="in" value="{{ task.max_solutions_count }}">
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Формула оценки
|
||
</td>
|
||
<td>
|
||
<input form="main_form" type="text" name="mark_formula" class="in" value="{{ task.mark_formula }}">
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Сдается полное решение
|
||
</td>
|
||
<td>
|
||
<input form="main_form" type="checkbox" name="full_solution" {{ task.is_full_solution }}>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Показывать результат тестирования
|
||
</td>
|
||
<td>
|
||
<input form="main_form" type="checkbox" id="show_result" name="show_result" onchange="valueChanged()" {% if task.show_result %}checked{% endif %}>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Показывать детали тестирования
|
||
</td>
|
||
<td>
|
||
<input form="main_form" type="checkbox" id="show_details" name="show_details" {{ task.showable }}>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Приоритет
|
||
</td>
|
||
<td>
|
||
<select name="priority">
|
||
{% for i in 10|num_range %}
|
||
<option {% if task.priority == i %}selected{% endif %}>{{ i }}</option>
|
||
{% endfor %}
|
||
</select>
|
||
</td>
|
||
|
||
</tr>
|
||
|
||
|
||
|
||
<tr>
|
||
<td>
|
||
Тесты
|
||
</td>
|
||
<td>
|
||
<!-- Button trigger modal -->
|
||
<button type="button" class="btn btn-link" data-toggle="modal" data-target="#exampleModalLong">
|
||
Посмотреть
|
||
</button>
|
||
|
||
<!-- Modal -->
|
||
<div class="modal fade bd-example-modal-lg" id="exampleModalLong" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitle" aria-hidden="true">
|
||
<div class="modal-dialog modal-lg" role="document">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<h5 class="modal-title" id="exampleModalLongTitle">Unit тесты</h5>
|
||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||
<span aria-hidden="true">×</span>
|
||
</button>
|
||
</div>
|
||
<div class="modal-body">
|
||
<div class="container-fluid">
|
||
<div class="row">
|
||
<div class="col-12">
|
||
<textarea cols="82" rows="30" name="tests_text">{{ task.tests_text }}</textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-secondary" data-dismiss="modal"><i class="fa fa-times"></i> Close</button>
|
||
<button type="submit" class="btn btn-primary" name="ACTION" value="SAVE_TESTS"><i class="fa fa-save"></i> Save</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
|
||
|
||
|
||
|
||
<tr>
|
||
<td style="vertical-align: top; padding-top: 10px;">
|
||
Дополнительные файлы и самплы
|
||
</td>
|
||
<td style="vertical-align: top;">
|
||
<table>
|
||
{% for file in task.files %}
|
||
<tr>
|
||
<td>
|
||
{% if file.can_be_sample %}
|
||
<input form="main_form" type="checkbox" name="sample_{{ file.id }}" {{ file.is_sample }}>
|
||
{% endif %}
|
||
</td>
|
||
<td>
|
||
<button type="submit" class="close" name="ACTION" value="DELETE_FILE_{{ file.id }}">
|
||
<span aria-hidden="true">×</span>
|
||
</button>
|
||
</td>
|
||
<td>
|
||
<img width="14px" height="14px" src="https://image.flaticon.com/icons/svg/876/876755.svg">
|
||
</td>
|
||
<td>
|
||
{% if file.readable %}
|
||
<button type="button" class="btn btn-link" data-toggle="modal" data-target="#filesModalLong{{ file.id }}">
|
||
{{ file.filename }}
|
||
</button>
|
||
|
||
<!-- Modal -->
|
||
<div class="modal fade bd-example-modal-lg" id="filesModalLong{{ file.id }}" tabindex="-1" role="dialog" aria-labelledby="filesModalLongTitle{{ file.id }}" aria-hidden="true">
|
||
<div class="modal-dialog modal-lg" role="document">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<h5 class="modal-title" id="filesModalLongTitle{{ file.id }}">{{ file.filename }}</h5>
|
||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||
<span aria-hidden="true">×</span>
|
||
</button>
|
||
</div>
|
||
<div class="modal-body">
|
||
<div class="container-fluid">
|
||
<div class="row">
|
||
<div class="col-12">
|
||
<textarea cols="82" rows="30" name="extra_file_text_{{ file.id }}">{{ file.text }}</textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="modal-footer">
|
||
Файл для компиляции <input type="checkbox" name="{{ file.id }}_for_compilation" {{ file.is_for_compilation }}>
|
||
<button type="button" class="btn btn-secondary" data-dismiss="modal"><i class="fa fa-times"></i> Close</button>
|
||
<button type="submit" class="btn btn-primary" name="ACTION" value="SAVE_EXTRA_FILE_{{ file.id }}"><i class="fa fa-save"></i> Save</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
{% else %}
|
||
<button type="button" class="btn btn-link" style="color: red;">
|
||
{{ file.filename }}
|
||
</button>
|
||
{% endif %}
|
||
|
||
</td>
|
||
</tr>
|
||
{% endfor %}
|
||
</table>
|
||
<label for="files" class="btn btn-primary">
|
||
<i class="fa fa-upload"></i> Загрузить файл
|
||
</label>
|
||
<form method="POST">
|
||
<input type="file" class="btn form-control-file" id="files" value="Выбрать файл" name="file" onchange="uploaded1()">
|
||
</form>
|
||
<label for="add_file" class="btn btn-success">
|
||
<i class="fa fa-plus"></i>
|
||
</label>
|
||
<input type="button" class="btn btn-success" id="add_file" value="Создать файл" name="new_file" data-toggle="modal" data-target="#exampleModalLongnewfile">
|
||
<button name="ACTION" value="UPLOAD_EXTRA_FILE" type="submit" class="btn btn-success" style="display: none;" id="send">Отправить</button>
|
||
<form method="POST">
|
||
{% csrf_token %}
|
||
<div class="modal fade" id="exampleModalLongnewfile" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitlenewfile" aria-hidden="true">
|
||
<div class="modal-dialog" role="document">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<h5 class="modal-title" id="exampleModalLongTitlenewfile">Создать новый файл</h5>
|
||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||
<span aria-hidden="true">×</span>
|
||
</button>
|
||
</div>
|
||
<div class="modal-body">
|
||
<div class="container-fluid">
|
||
<div class="row">
|
||
<div class="col-12">
|
||
<input type="text" placeholder="Имя файла" name="newfile_name">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-secondary" data-dismiss="modal"><i class="fa fa-times"></i> Закрыть</button>
|
||
<button name="ACTION" value="CREATE_EXTRA_FILE" type="submit" class="btn btn-primary"><i class="fa fa-file"></i> Создать</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<hr>
|
||
<button type="submit" name="ACTION" value="SAVE" class="btn btn-dark"><i class="fa fa-save"></i> Сохранить</button>
|
||
</form>
|
||
{% if is_superuser %}
|
||
<form style="margin-top: 15px;" id="another_form" method="POST">
|
||
{% csrf_token %}
|
||
<input type="hidden" name="ACTION" value="DELETE" form="another_form">
|
||
<button form="another_form" type="button" onclick="let del = confirm('Данное действие приведет к удалению условия, тестов, дополнительных файлов и решений, привязанных к этому таску. Точно удаляем?'); if (del) {this.form.submit();}" class="btn btn-dark"><i class="fa fa-trash"></i> Удалить таск</button>
|
||
</form>
|
||
{% endif %}
|
||
{% endblock %} |