sprint/templates/task_settings.html
Egor Matveev 9c0123cbf2 initial
2021-07-11 10:28:12 +03:00

327 lines
17 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{% 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">&times;</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">&times;</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">&times;</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">&times;</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 %}