2015-08-07 09:13:44 +00:00
|
|
|
|
<div ms-controller="add_contest">
|
|
|
|
|
<form id="add-contest-form">
|
|
|
|
|
<div class="col-md-9">
|
|
|
|
|
<div class="col-md-12">
|
2015-08-09 12:50:04 +00:00
|
|
|
|
<label>比赛名称</label>
|
2015-08-07 09:13:44 +00:00
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-12">
|
|
|
|
|
<div class="form-group">
|
2015-08-19 02:50:09 +00:00
|
|
|
|
<input type="text" name="name" class="form-control" ms-duplex="title"
|
|
|
|
|
data-error="请填写比赛名称(名称不能超过50个字)" required>
|
|
|
|
|
<div class="help-block with-errors"></div>
|
2015-08-02 01:47:50 +00:00
|
|
|
|
</div>
|
2015-08-07 09:13:44 +00:00
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-12">
|
|
|
|
|
<label>说明</label>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-12">
|
|
|
|
|
<div class="form-group">
|
2015-08-09 12:50:04 +00:00
|
|
|
|
<textarea id="editor" placeholder="这里输入内容" autofocus ms-duplex="description"></textarea>
|
2015-08-19 02:50:09 +00:00
|
|
|
|
<div class="help-block with-errors"></div>
|
2015-08-09 12:50:04 +00:00
|
|
|
|
<small ms-visible="description==''" style="color:red">请填写比赛描述</small>
|
2015-08-02 01:47:50 +00:00
|
|
|
|
</div>
|
2015-08-07 09:13:44 +00:00
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-6">
|
|
|
|
|
<label>开始时间</label>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-6">
|
|
|
|
|
<label>结束时间</label>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-6">
|
|
|
|
|
<div class="form-group">
|
2015-08-09 12:50:04 +00:00
|
|
|
|
<input type="text" class="form-control" name="start_time" id="contest_start_time"
|
2015-08-19 02:50:09 +00:00
|
|
|
|
ms-duplex="startTime" data-error="请填写比赛开始时间" required>
|
|
|
|
|
<div class="help-block with-errors"></div>
|
2015-08-02 01:47:50 +00:00
|
|
|
|
</div>
|
2015-08-07 09:13:44 +00:00
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-6">
|
|
|
|
|
<div class="form-group">
|
2015-08-19 02:50:09 +00:00
|
|
|
|
<input type="text" class="form-control" name="end_time" id="contest_end_time"
|
|
|
|
|
ms-duplex="endTime" data-error="请填写比赛结束时间" required>
|
|
|
|
|
<div class="help-block with-errors"></div>
|
2015-08-02 01:47:50 +00:00
|
|
|
|
</div>
|
2015-08-07 09:13:44 +00:00
|
|
|
|
</div>
|
2015-08-19 02:50:09 +00:00
|
|
|
|
<div class="col-md-6">
|
|
|
|
|
<label>允许参加的用户</label>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-6" >
|
2015-08-11 08:22:59 +00:00
|
|
|
|
<label>密码保护</label>
|
2015-08-19 02:50:09 +00:00
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-6">
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<select class="form-control" name="password" ms-duplex="group" ms-change="addGroup" value="-1">
|
|
|
|
|
<option value="-1">请选择</option>
|
|
|
|
|
<option ms-repeat="groupList" ms-attr-value="$index" ms-visible="!el.choosed">{{el.name}}</option>
|
|
|
|
|
</select>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-6">
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<input type="text" class="form-control" name="password" placeholder="留空就是公开赛" ms-duplex="password" ms-attr-readonly="!passwordUsable">
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-12">
|
|
|
|
|
<div ms-repeat="choosedGroupList" class="group-tag" ms-click="unchoosed($index)">{{el.name}}</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-6">
|
|
|
|
|
<label>排名方式</label>
|
2015-08-07 09:13:44 +00:00
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-3">
|
2015-08-19 02:50:09 +00:00
|
|
|
|
<label>结束前是否开放排名</label>
|
2015-08-07 09:13:44 +00:00
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-3">
|
2015-08-19 02:50:09 +00:00
|
|
|
|
<label>是否公开提交记录</label>
|
2015-08-07 09:13:44 +00:00
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-6">
|
|
|
|
|
<div class="form-group">
|
2015-08-19 02:50:09 +00:00
|
|
|
|
<label><input type="radio" name="mode" ms-duplex-string="mode" value="0">
|
|
|
|
|
<small>ACM</small>
|
|
|
|
|
</label>
|
|
|
|
|
<label><input type="radio" name="mode" ms-duplex-string="mode" value="1">
|
|
|
|
|
<small>AC数量</small>
|
|
|
|
|
</label>
|
|
|
|
|
<label><input type="radio" name="mode" ms-duplex-string="mode" value="2">
|
|
|
|
|
<small>分数</small>
|
|
|
|
|
</label>
|
2015-08-02 01:47:50 +00:00
|
|
|
|
</div>
|
2015-08-07 09:13:44 +00:00
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-3">
|
|
|
|
|
<div class="form-group">
|
2015-08-19 02:50:09 +00:00
|
|
|
|
<label class="text"><input type="checkbox" ms-duplex-checked="showRank">
|
|
|
|
|
<small>开放排名</small>
|
2015-08-09 12:50:04 +00:00
|
|
|
|
</label>
|
2015-08-02 01:47:50 +00:00
|
|
|
|
</div>
|
2015-08-07 09:13:44 +00:00
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-3">
|
|
|
|
|
<div class="form-group">
|
2015-08-19 02:50:09 +00:00
|
|
|
|
<label class="text"><input type="checkbox" ms-duplex-checked="showSbumission">
|
|
|
|
|
<small>允许查看提交记录</small>
|
2015-08-09 12:50:04 +00:00
|
|
|
|
</label>
|
2015-08-02 01:47:50 +00:00
|
|
|
|
</div>
|
2015-08-07 09:13:44 +00:00
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-12">
|
|
|
|
|
<label>添加题目</label>
|
|
|
|
|
<a href="javascript:void(0)" class="btn btn-primary btn-sm" ms-click="add_problem()">添加</a>
|
2015-08-18 12:37:36 +00:00
|
|
|
|
<table class="table table-striped">
|
|
|
|
|
<tr>
|
|
|
|
|
<th>编号</th>
|
|
|
|
|
<th>题目</th>
|
|
|
|
|
<th>测试数据</th>
|
|
|
|
|
<td></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr ms-repeat="problems">
|
|
|
|
|
<td>题目{{ $index+1 }}</td>
|
|
|
|
|
<td>{{ el.title }}</td>
|
|
|
|
|
<td>{{ el.testCaseList.length }}组</td>
|
|
|
|
|
<td>
|
|
|
|
|
<a href="javascript:void(0)"class="btn-sm btn-info" ms-click="showProblemEditArea($index+1)">编辑</a>
|
|
|
|
|
<a href="javascript:void(0)"class="btn-sm btn-danger" ms-click="del_problem($index+1)">删除</a>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</table>
|
|
|
|
|
|
2015-08-07 09:13:44 +00:00
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-12">
|
2015-08-18 12:37:36 +00:00
|
|
|
|
|
|
|
|
|
<div class="problem" ms-visible="editingProblemId">
|
2015-08-11 08:22:59 +00:00
|
|
|
|
<div class="panel panel-default problem-panel">
|
2015-08-07 09:13:44 +00:00
|
|
|
|
<div class="panel-heading">
|
2015-08-18 12:37:36 +00:00
|
|
|
|
<span class="panel-title">题目{{editingProblemId}} </span>
|
2015-08-19 02:50:09 +00:00
|
|
|
|
<a href="javascript:void(0)" class="btn btn-primary btn-sm" ms-click="hidden()">隐藏</a>
|
|
|
|
|
<a href="javascript:void(0)" class="btn btn-danger btn-sm" ms-click="del_problem(editingProblemId)">删除</a>
|
2015-08-07 09:13:44 +00:00
|
|
|
|
</div>
|
2015-08-18 12:37:36 +00:00
|
|
|
|
<div class="panel-body" >
|
2015-08-11 08:22:59 +00:00
|
|
|
|
<div class="form-group col-md-12">
|
2015-08-15 05:54:30 +00:00
|
|
|
|
<label>题目标题</label>
|
2015-08-19 02:50:09 +00:00
|
|
|
|
<input type="text" name="problemName" class="form-control" ms-duplex="problems[editingProblemId-1].title"data-error="请填写题目标题" required>
|
|
|
|
|
<div class="help-block with-errors"></div>
|
2015-08-15 05:54:30 +00:00
|
|
|
|
</div>
|
|
|
|
|
<div class="form-group col-md-12">
|
|
|
|
|
<label>题目描述</label>
|
2015-08-18 12:37:36 +00:00
|
|
|
|
<textarea id="problemDescriptionEditor" placeholder="这里输入内容"
|
|
|
|
|
ms-duplex="problems[editingProblemId-1].description"></textarea>
|
|
|
|
|
<small ms-visible="editDescription==''" style="color:red">请填写题目描述</small>
|
2015-08-07 09:13:44 +00:00
|
|
|
|
</div>
|
2015-08-11 08:22:59 +00:00
|
|
|
|
<div class="form-group col-md-12">
|
2015-08-10 08:59:45 +00:00
|
|
|
|
<label>提示</label>
|
2015-08-18 12:37:36 +00:00
|
|
|
|
<textarea id="problemHintEditor" placeholder="这里输入内容"
|
|
|
|
|
ms-duplex="problems[editingProblemId-1].hint"></textarea>
|
2015-08-07 09:13:44 +00:00
|
|
|
|
</div>
|
2015-08-11 08:22:59 +00:00
|
|
|
|
<div class="col-md-3 form-group">
|
|
|
|
|
<label>cpu</label>
|
2015-08-19 02:50:09 +00:00
|
|
|
|
<input type="number" class="form-control" ms-duplex="problems[editingProblemId-1].timeLimit" data-error="请填写时间限制" required>
|
|
|
|
|
<div class="help-block with-errors"></div>
|
2015-08-07 09:13:44 +00:00
|
|
|
|
</div>
|
2015-08-10 08:59:45 +00:00
|
|
|
|
<div class="col-md-3 form-group">
|
2015-08-11 08:22:59 +00:00
|
|
|
|
<label>内存</label>
|
2015-08-19 02:50:09 +00:00
|
|
|
|
<input type="number" class="form-control" ms-duplex="problems[editingProblemId-1].memoryLimit" data-error="请填写内存限制" required>
|
|
|
|
|
<div class="help-block with-errors"></div>
|
2015-08-10 08:59:45 +00:00
|
|
|
|
</div>
|
2015-08-19 02:50:09 +00:00
|
|
|
|
<div class="col-md-3 form-group" ms-visible="mode==2">
|
2015-08-18 12:37:36 +00:00
|
|
|
|
<label>分值</label>
|
2015-08-19 02:50:09 +00:00
|
|
|
|
<input type="number" class="form-control" ms-duplex="problems[editingProblemId-1].score" data-error="请填写题目分值" required>
|
|
|
|
|
<div class="help-block with-errors"></div>
|
2015-08-10 08:59:45 +00:00
|
|
|
|
</div>
|
2015-08-07 09:13:44 +00:00
|
|
|
|
<div class="col-md-12">
|
|
|
|
|
<label>样例</label>
|
2015-08-15 05:54:30 +00:00
|
|
|
|
<a href="javascript:void(0)" class="btn btn-primary btn-sm"
|
2015-08-18 12:37:36 +00:00
|
|
|
|
ms-click="add_sample()">添加</a>
|
|
|
|
|
<div>
|
|
|
|
|
<div class="panel panel-default sample-panel" ms-repeat-sample="editSamples">
|
|
|
|
|
<div class="panel-heading">
|
2015-08-07 09:13:44 +00:00
|
|
|
|
<span class="panel-title">样例{{$index + 1}}</span>
|
2015-08-15 05:54:30 +00:00
|
|
|
|
<a href="javascript:void(0)" class="btn btn-primary btn-sm"
|
2015-08-18 12:37:36 +00:00
|
|
|
|
ms-click="toggle(sample)">{{ getBtnContent(sample)}}</a>
|
2015-08-15 05:54:30 +00:00
|
|
|
|
<a href="javascript:void(0)" class="btn btn-danger btn-sm"
|
2015-08-18 12:37:36 +00:00
|
|
|
|
ms-click="del_sample(sample)">删除</a>
|
2015-08-07 09:13:44 +00:00
|
|
|
|
</div>
|
2015-08-09 12:50:04 +00:00
|
|
|
|
<div class="panel-body row" ms-visible="sample.visible">
|
|
|
|
|
<div class="col-md-6">
|
2015-08-07 09:13:44 +00:00
|
|
|
|
<div class="form-group">
|
2015-08-09 12:50:04 +00:00
|
|
|
|
<label>样例输入</label>
|
|
|
|
|
<textarea class="form-control" rows="5"
|
|
|
|
|
ms-duplex="sample.input"></textarea>
|
2015-08-02 01:47:50 +00:00
|
|
|
|
</div>
|
2015-08-07 09:13:44 +00:00
|
|
|
|
</div>
|
2015-08-09 12:50:04 +00:00
|
|
|
|
<div class="col-md-6">
|
2015-08-07 09:13:44 +00:00
|
|
|
|
<div class="form-group">
|
2015-08-09 12:50:04 +00:00
|
|
|
|
<label>样例输出</label>
|
2015-08-10 08:59:45 +00:00
|
|
|
|
<textarea class="form-control" rows="5"
|
|
|
|
|
ms-duplex="sample.output"></textarea>
|
2015-08-02 01:47:50 +00:00
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2015-08-07 09:13:44 +00:00
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-12">
|
2015-08-19 02:50:09 +00:00
|
|
|
|
|
|
|
|
|
<label>测试数据</label>
|
|
|
|
|
<table class="table table-striped">
|
2015-08-10 08:59:45 +00:00
|
|
|
|
<tr>
|
|
|
|
|
<td>编号</td>
|
|
|
|
|
<td>输入文件名</td>
|
|
|
|
|
<td>输出文件名</td>
|
|
|
|
|
</tr>
|
2015-08-18 12:37:36 +00:00
|
|
|
|
<tr ms-repeat="editTestCaseList">
|
2015-08-10 08:59:45 +00:00
|
|
|
|
<td>{{$index}}</td>
|
2015-08-15 05:54:30 +00:00
|
|
|
|
<td>{{ el.input }}</td>
|
|
|
|
|
<td>{{ el.output }}</td>
|
2015-08-10 08:59:45 +00:00
|
|
|
|
</tr>
|
|
|
|
|
</table>
|
2015-08-07 09:13:44 +00:00
|
|
|
|
</div>
|
2015-08-02 01:47:50 +00:00
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2015-08-09 12:50:04 +00:00
|
|
|
|
<div class="col-md-12">
|
2015-08-19 02:50:09 +00:00
|
|
|
|
<label>上传测试测试数据</label>
|
|
|
|
|
<div id="uploader">
|
|
|
|
|
<div>选择文件</div>
|
|
|
|
|
</div>
|
|
|
|
|
<small class="text-info">请将所有测试用例打包在一个文件中上传,所有文件要在压缩包的根目录,且输入输出文件名要以从1开始连续数字标识要对应例如:<br>
|
|
|
|
|
1.in 1.out 2.in 2.out
|
|
|
|
|
</small><br>
|
|
|
|
|
|
2015-08-09 12:50:04 +00:00
|
|
|
|
<input type="submit" class="btn btn-success btn-lg" value="发布比赛">
|
|
|
|
|
</div>
|
2015-08-07 09:13:44 +00:00
|
|
|
|
</div>
|
2015-08-09 12:50:04 +00:00
|
|
|
|
|
2015-08-07 09:13:44 +00:00
|
|
|
|
</form>
|
|
|
|
|
</div>
|
|
|
|
|
|
2015-08-18 05:21:33 +00:00
|
|
|
|
<script src="/static/js/app/admin/contest/add_contest.js"></script>
|
2015-08-19 02:50:09 +00:00
|
|
|
|
<link href="/static/css/add_contest.css" rel="stylesheet">
|