You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

152 lines
6.4 KiB

<% this.title = '题库' %>
<% include header %>
<%
let tagIDs = [];
if (typeof tags !== 'undefined') tagIDs = tags.map(x => x.id);
%>
<script src="//cdn.bootcss.com/js-cookie/2.1.4/js.cookie.min.js"></script>
<div class="padding">
<div class="ui grid">
<div class="row">
<div class="seven wide column">
<% if (typeof tags !== 'undefined') { %>
<%
tags.sort((a, b) => {
return a.color > b.color ? 1 : -1;
});
%>
<% for (let tag of tags) { %>
<% let tagListRemovedThisTag = tagIDs.filter(x => x != tag.id).sort().join(','); %>
<% let url = tagListRemovedThisTag ? syzoj.utils.makeUrl(['problems', 'tag', tagListRemovedThisTag]) : syzoj.utils.makeUrl(['problems']); %>
<a href="<%= url %>" class="ui tiny <%= tag.color %> label">
<%= tag.name %>
</a>
<% } %>
<% } %>
</div>
<div class="nine wide right aligned column">
<div class="ui toggle checkbox" id="show_tag">
<style id="show_tag_style"></style>
<script>
if (Cookies.get('show_tag') === '1') {
document.write('<input type="checkbox" checked>');
document.getElementById('show_tag_style').innerHTML = '.show_tag_controled { visibility: visible; }';
} else {
document.write('<input type="checkbox">');
document.getElementById('show_tag_style').innerHTML = '.show_tag_controled { visibility: hidden; }';
}
</script>
<script>
$(function () {
$('#show_tag').checkbox('setting', 'onChange', function () {
let checked = $('#show_tag').checkbox('is checked');
Cookies.set('show_tag', checked ? '1' : '0');
if (checked) {
document.getElementById('show_tag_style').innerHTML = '.show_tag_controled { visibility: visible; }';
} else {
document.getElementById('show_tag_style').innerHTML = '.show_tag_controled { visibility: hidden; }';
}
});
});
</script>
<label>显示分类标签</label>
</div>
<div style="margin-left: 10px; display: inline-block; ">
<% if (user && user.is_admin) { %>
<% if (typeof tags !== 'undefined' && tags.length === 1) { %>
<a style="margin-left: 10px; " href="<%= syzoj.utils.makeUrl(['problems', 'tag', tags[0].id, 'edit']) %>" class="ui labeled icon mini blue button"><i class="write icon"></i> 编辑标签</a>
<% } %>
<a style="margin-left: 10px; " href="<%= syzoj.utils.makeUrl(['problems', 'tag', 0, 'edit']) %>" class="ui labeled icon mini green button"><i class="plus icon"></i> 添加标签</a>
<% } %>
<% if (user) { %>
<div style="margin-left: 10px; " class="ui mini buttons">
<div class="ui labeled icon mini dropdown button" id="add_problem_dropdown"><i class="plus icon"></i> 添加题目
<div class="menu">
<a class="item" href="<%= syzoj.utils.makeUrl(['problem', 0, 'edit']) %>"><i class="file icon"></i> 新建题目</a>
<a class="item" href="<%= syzoj.utils.makeUrl(['problem', 0, 'import']) %>"><i class="cloud download icon"></i> 导入题目</a>
</div>
</div>
</div>
<% } %>
</div>
</div>
</div>
</div>
<table class="ui very basic center aligned table">
<thead>
<tr>
<% if (user) { %>
<th class="one wide">提交状态</th>
<% } %>
<th class="one wide">编号</th>
<th class="left aligned">题目名称</th>
<th class="one wide">通过</th>
<th class="one wide">提交</th>
<th class="one wide">通过率</th>
</tr>
</thead>
<tbody>
<% for (let problem of problems) { %>
<% if (problem.is_public || problem.allowedEdit) { %>
<tr>
<% if (user) { %>
<td>
<% if (problem.judge_state) { %>
<a href="<%= syzoj.utils.makeUrl(['submission', problem.judge_state.id]) %>">
<span class="status <%= problem.judge_state.status.toLowerCase().split(' ').join('_') %>">
<i class="<%= icon[problem.judge_state.status] || 'remove' %> icon"></i>
</span>
</a>
<% } %>
</td>
<% } %>
<td><%= problem.id %></td>
<td class="left aligned">
<a style="vertical-align: middle; " href="<%= syzoj.utils.makeUrl(['problem', problem.id]) %>"><%= problem.title %>
<% if (!problem.is_public) { %><span class="ui header"><span class="ui tiny red label">未公开</span></span><% } %>
</a>
<div class="show_tag_controled" style="float: right; ">
<%
if (problem.tags) {
for (let tag of problem.tags) {
let tagListToggledThisTag;
if (!tagIDs.includes(tag.id)) tagListToggledThisTag = tagIDs.concat([tag.id]);
else tagListToggledThisTag = tagIDs.filter(x => x != tag.id);
tagListToggledThisTag = tagListToggledThisTag.sort().join(',');
let url = tagListToggledThisTag ? syzoj.utils.makeUrl(['problems', 'tag', tagListToggledThisTag]) : syzoj.utils.makeUrl(['problems']);
%>
<span class="ui header">
<a href="<%= url %>" class="ui tiny <%= tag.color %> label">
<%= tag.name %>
</a>
</span>
<%
}
}
%>
</div>
</td>
<td><%= problem.ac_num %></td>
<td><%= problem.submit_num %></td>
<td><%= ((problem.ac_num / problem.submit_num * 100) || 0).toFixed(2) %>%</td>
</tr>
<% } %>
<% } %>
</tbody>
</table><br>
<% include page %>
<script>
document.addEventListener('keydown', function (event) {
if (event.keyCode === 39) document.getElementById('page_next').click();
else if (event.keyCode === 37) document.getElementById('page_prev').click();
});
$(function () {
$('#add_problem_dropdown').dropdown();
});
</script>
</div>
<% include footer %>