后台 js 的部分 bug 修复,还没改完
This commit is contained in:
@@ -5,6 +5,7 @@
|
|||||||
@import url("simditor/simditor.css");
|
@import url("simditor/simditor.css");
|
||||||
@import url("webuploader/webuploader.css");
|
@import url("webuploader/webuploader.css");
|
||||||
@import url("datetime_picker/bootstrap-datetimepicker.css");
|
@import url("datetime_picker/bootstrap-datetimepicker.css");
|
||||||
|
@import url("tagEditor/jquery.tag-editor.css");
|
||||||
|
|
||||||
#loading-gif{
|
#loading-gif{
|
||||||
width: 40px;
|
width: 40px;
|
||||||
|
|||||||
@@ -64,18 +64,15 @@ require(["jquery", "avalon", "editor", "uploader", "bs_alert", "csrf", "tagEdito
|
|||||||
})
|
})
|
||||||
.on("success.form.fv", function (e) {
|
.on("success.form.fv", function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
if (vm.test_case_id == '')
|
if (vm.test_case_id == '') {
|
||||||
{
|
|
||||||
bs_alert("你还没有上传测试数据!");
|
bs_alert("你还没有上传测试数据!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (vm.description == '')
|
if (vm.description == '') {
|
||||||
{
|
|
||||||
bs_alert("题目描述不能为空!");
|
bs_alert("题目描述不能为空!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (vm.hint == '')
|
if (vm.hint == '') {
|
||||||
{
|
|
||||||
bs_alert("提示不能为空!");
|
bs_alert("提示不能为空!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -88,33 +85,30 @@ require(["jquery", "avalon", "editor", "uploader", "bs_alert", "csrf", "tagEdito
|
|||||||
test_case_id: vm.test_case_id,
|
test_case_id: vm.test_case_id,
|
||||||
hint: vm.hint,
|
hint: vm.hint,
|
||||||
source: vm.source,
|
source: vm.source,
|
||||||
tags: [],
|
tags: $("#tags").tagEditor("getTags")[0].tags,
|
||||||
difficulty: vm.difficulty
|
difficulty: vm.difficulty
|
||||||
};
|
};
|
||||||
if (vm.samples.length == 0)
|
if (vm.samples.length == 0) {
|
||||||
{
|
|
||||||
bs_alert("请至少添加一组样例!");
|
bs_alert("请至少添加一组样例!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var tags = $("#tags").tagEditor("getTags")[0].tags;
|
|
||||||
if (tags.length == 0)
|
if (tags.length == 0) {
|
||||||
{
|
|
||||||
bs_alert("请至少添加一个标签,这将有利于用户发现你的题目!");
|
bs_alert("请至少添加一个标签,这将有利于用户发现你的题目!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (key in vm.samples.length) {
|
|
||||||
ajaxData.samples.push({input: vm.samples[key].input, output: vm.samples[key].output});
|
for (var i = 0; i < vm.samples.$model.length; i++) {
|
||||||
|
ajaxData.samples.push({input: vm.samples.$model[i].input, output: vm.samples.$model[i].output});
|
||||||
}
|
}
|
||||||
for (key in tags) {
|
|
||||||
ajaxData.tags.push(tags[key].tag);
|
|
||||||
}
|
|
||||||
console.log(ajaxData);
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
beforeSend: csrfHeader,
|
beforeSend: csrfHeader,
|
||||||
url: "/api/admin/problem/",
|
url: "/api/admin/problem/",
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
data:ajaxData,
|
data: JSON.stringify(ajaxData),
|
||||||
method: "post",
|
method: "post",
|
||||||
|
contentType: "application/json",
|
||||||
success: function (data) {
|
success: function (data) {
|
||||||
if (!data.code) {
|
if (!data.code) {
|
||||||
bs_alert("successful!");
|
bs_alert("successful!");
|
||||||
@@ -188,8 +182,8 @@ require(["jquery", "avalon", "editor", "uploader", "bs_alert", "csrf", "tagEdito
|
|||||||
if (!data.code) {
|
if (!data.code) {
|
||||||
tagList = data.data;
|
tagList = data.data;
|
||||||
completeList = [];
|
completeList = [];
|
||||||
for (key in tagList) {
|
for (var i = 0; i < tagList.length; i++) {
|
||||||
completeList.push(tagList[key].name);
|
completeList.push(tagList[i].name);
|
||||||
}
|
}
|
||||||
$("#tags").tagEditor({
|
$("#tags").tagEditor({
|
||||||
autocomplete: {
|
autocomplete: {
|
||||||
|
|||||||
@@ -1,103 +1,113 @@
|
|||||||
<div ms-controller="add_problem" class="col-md-9">
|
<div ms-controller="add_problem" class="col-md-9">
|
||||||
<form id="add-problem-form">
|
<form id="add-problem-form">
|
||||||
<div class="col-md-12">
|
|
||||||
<div class="form-group col-md-6">
|
|
||||||
<label>题目标题</label>
|
|
||||||
<input type="text" name="title" class="form-control" ms-duplex="title">
|
|
||||||
</div>
|
|
||||||
<div class="form-group col-md-6">
|
|
||||||
<label>来源</label>
|
|
||||||
<input type="text" name="source" class="form-control" ms-duplex="source">
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label>题目描述</label>
|
|
||||||
<textarea id="problemDescription" placeholder="这里输入内容" autofocus ms-duplex="description"></textarea>
|
|
||||||
<small ms-visible="description==''" style="color:red">请填写题目描述</small>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label>提示</label>
|
|
||||||
<textarea id="hint" placeholder="这里输入内容" ms-duplex="hint"></textarea>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-md-3">
|
<div class="form-group col-md-12">
|
||||||
<div class="form-group"><label>时间限制(ms)</label>
|
<label>题目标题</label>
|
||||||
<input type="number" name="cpu" class="form-control" ms-duplex="cpu">
|
<input type="text" name="title" class="form-control" ms-duplex="title">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<div class="col-md-3">
|
|
||||||
<div class="form-group"><label>内存限制(MB)</label>
|
|
||||||
<input type="number" name="memory" class="form-control" ms-duplex="memory">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-3">
|
|
||||||
<div class="form-group"><label>难度</label>
|
|
||||||
<input type="number" name="difficulty" class="form-control" ms-duplex="difficulty">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-3 form-group">
|
|
||||||
<label>前台是否可见</label><br>
|
|
||||||
<label><input type="checkbox" ms-duplex-checked="visible">
|
|
||||||
<small> 可见</small>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div id="tag" class="col-md-12">
|
|
||||||
<label>标签</label><br>
|
|
||||||
<input type="text" id="tags">
|
|
||||||
</div>
|
|
||||||
<div class="col-md-12"><br>
|
|
||||||
<label>样例</label>
|
|
||||||
<a href="javascript:void(0)" class="btn btn-primary btn-sm" ms-click="add_sample()">添加</a>
|
|
||||||
|
|
||||||
<div class="sample">
|
<div class="form-group col-md-12">
|
||||||
<div class="panel panel-default sample-panel" ms-repeat-sample="samples">
|
<label>题目描述</label>
|
||||||
<div class="panel-heading">
|
<textarea id="problemDescription" placeholder="这里输入内容" autofocus ms-duplex="description"></textarea>
|
||||||
<span class="panel-title">样例{{$index + 1}}</span>
|
<small ms-visible="description==''" style="color:red">请填写题目描述</small>
|
||||||
<a href="javascript:void(0)" class="btn btn-primary btn-sm"
|
</div>
|
||||||
ms-click="toggle_sample(sample)">
|
|
||||||
{{getBtnContent(sample)}}
|
|
||||||
</a>
|
<div class="col-md-3">
|
||||||
<a href="javascript:void(0)" class="btn btn-danger btn-sm"
|
<div class="form-group"><label>时间限制(ms)</label>
|
||||||
ms-click="del_sample(sample)">
|
<input type="number" name="cpu" class="form-control" ms-duplex="cpu">
|
||||||
删除
|
</div>
|
||||||
</a>
|
</div>
|
||||||
</div>
|
<div class="col-md-3">
|
||||||
<div class="panel-body row" ms-visible="sample.visible">
|
<div class="form-group"><label>内存限制(MB)</label>
|
||||||
<div class="col-md-6">
|
<input type="number" name="memory" class="form-control" ms-duplex="memory">
|
||||||
<div class="form-group">
|
</div>
|
||||||
<label>样例输入</label>
|
</div>
|
||||||
<textarea class="form-control" rows="5" ms-duplex="sample.input"></textarea>
|
<div class="col-md-3">
|
||||||
</div>
|
<div class="form-group"><label>难度</label>
|
||||||
|
<input type="number" name="difficulty" class="form-control" ms-duplex="difficulty">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3 form-group">
|
||||||
|
<label>前台是否可见</label><br>
|
||||||
|
<label><input type="checkbox" ms-duplex-checked="visible">
|
||||||
|
<small> 可见</small>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div id="tag" class="col-md-12">
|
||||||
|
<label>标签</label><br>
|
||||||
|
<input type="text" id="tags">
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12"><br>
|
||||||
|
<label>样例</label>
|
||||||
|
<a href="javascript:void(0)" class="btn btn-primary btn-sm" ms-click="add_sample()">添加</a>
|
||||||
|
|
||||||
|
<div class="sample">
|
||||||
|
<div class="panel panel-default sample-panel" ms-repeat-sample="samples">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<span class="panel-title">样例{{$index + 1}}</span>
|
||||||
|
<a href="javascript:void(0)" class="btn btn-primary btn-sm"
|
||||||
|
ms-click="toggle_sample(sample)">
|
||||||
|
{{ getBtnContent(sample)}}
|
||||||
|
</a>
|
||||||
|
<a href="javascript:void(0)" class="btn btn-danger btn-sm"
|
||||||
|
ms-click="del_sample(sample)">
|
||||||
|
删除
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body row" ms-visible="sample.visible">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group">
|
||||||
|
<label>样例输入</label>
|
||||||
|
<textarea class="form-control" rows="5" ms-duplex="sample.input"></textarea>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
</div>
|
||||||
<div class="form-group">
|
<div class="col-md-6">
|
||||||
<label>样例输出</label>
|
<div class="form-group">
|
||||||
<textarea class="form-control" rows="5" ms-duplex="sample.output"></textarea>
|
<label>样例输出</label>
|
||||||
</div>
|
<textarea class="form-control" rows="5" ms-duplex="sample.output"></textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-12"><br>
|
</div>
|
||||||
<label>测试数据</label><br>
|
<div class="col-md-12"><br>
|
||||||
<small class="text-info">请将所有测试用例打包在一个文件中上传,所有文件要在压缩包的根目录,且输入输出文件名要以从1开始连续数字标识要对应例如:<br>
|
<label>测试数据</label><br>
|
||||||
1.in 1.out 2.in 2.out</small>
|
<small class="text-info">请将所有测试用例打包在一个文件中上传,所有文件要在压缩包的根目录,且输入输出文件名要以从1开始连续数字标识要对应例如:<br>
|
||||||
<table class="table table-striped" ms-visible="uploadSuccess">
|
1.in 1.out 2.in 2.out
|
||||||
<tr><td>编号</td><td>输入文件名</td><td>输出文件名</td></tr>
|
</small>
|
||||||
<tr ms-repeat="testCaseList"><td>{{$index}}</td><td>{{el.input}}</td><td>{{el.output}}</td></tr>
|
<table class="table table-striped" ms-visible="uploadSuccess">
|
||||||
</table>
|
<tr>
|
||||||
</div>
|
<td>编号</td>
|
||||||
<div class="col-md-12">
|
<td>输入文件名</td>
|
||||||
<div class="form-group">
|
<td>输出文件名</td>
|
||||||
<div id="testCaseFile">选择文件</div>
|
</tr>
|
||||||
</div>
|
<tr ms-repeat="testCaseList">
|
||||||
|
<td>{{$index + 1}}</td>
|
||||||
|
<td>{{ el.input }}</td>
|
||||||
|
<td>{{ el.output }}</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="form-group">
|
||||||
|
<div id="testCaseFile">选择文件</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group col-md-12">
|
||||||
|
<label>提示</label>
|
||||||
|
<textarea id="hint" placeholder="这里输入内容" ms-duplex="hint"></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-12">
|
||||||
|
<label>来源</label>
|
||||||
|
<input type="text" name="source" class="form-control" ms-duplex="source">
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<input type="submit" class="btn btn-success btn-lg" value="发布题目" id="submitBtn">
|
<input type="submit" class="btn btn-success btn-lg" value="发布题目" id="submitBtn">
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="/static/js/app/admin/problem/add_problem.js"></script>
|
<script src="/static/js/app/admin/problem/add_problem.js"></script>
|
||||||
<link href="/static/css/tagEditor/jquery.tag-editor.css" rel="stylesheet">
|
|
||||||
@@ -7,16 +7,15 @@
|
|||||||
<a href="problem.html">题目</a></li>
|
<a href="problem.html">题目</a></li>
|
||||||
<li role="presentation"><a href="/problem/1/my_solutions/">我的提交</a></li>
|
<li role="presentation"><a href="/problem/1/my_solutions/">我的提交</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<h2 class="text-center">Battle Over Cities - Hard Version</h2>
|
<h2 class="text-center">{{ problem.title }}</h2>
|
||||||
|
|
||||||
<p class="text-muted text-center">发布时间: 2015-07-05 CPU: 1000ms 内存: 256M</p>
|
<p class="text-muted text-center">发布时间: {{ problem.create_time }} CPU: {{ problem.time_limit }}ms 内存: {{ problem.memory_limit }}M</p>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<div class="problem-section">
|
<div class="problem-section">
|
||||||
<label class="problem-label">描述</label>
|
<label class="problem-label">描述</label>
|
||||||
|
|
||||||
<p class="problem-detail"> n的阶乘定义为n!=1*2*3*……*n 如3!=6
|
<p class="problem-detail">{{ problem.description|safe }}</p>
|
||||||
n!通常最后会有很多0,如5!=120 最后有一个0,现在统计n!去除末尾的0后,最后k位是多少</p>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="problem-section">
|
<div class="problem-section">
|
||||||
<label class="problem-label">输入</label>
|
<label class="problem-label">输入</label>
|
||||||
@@ -28,47 +27,37 @@
|
|||||||
|
|
||||||
<p class="problem-detail">第一行包括两个数n,k</p>
|
<p class="problem-detail">第一行包括两个数n,k</p>
|
||||||
</div>
|
</div>
|
||||||
|
{% for item in samples %}
|
||||||
<div class="problem-section">
|
<div class="problem-section">
|
||||||
<label class="problem-label">样例输入1</label>
|
<label class="problem-label">样例输入1</label>
|
||||||
<pre title="双击可以复制哦~">
|
<pre>
|
||||||
1 2 3 4 5 6 7
|
{{ item.input }}</pre>
|
||||||
1 2 3 4 5 6 7</pre>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="problem-section">
|
<div class="problem-section">
|
||||||
|
|
||||||
<label class="problem-label">样例输出1</label>
|
<label class="problem-label">样例输出1</label>
|
||||||
<pre>
|
<pre>
|
||||||
1 2 3 4 5 6 7</pre>
|
{{ item.output }}</pre>
|
||||||
</div>
|
|
||||||
<div class="problem-section">
|
|
||||||
<label class="problem-label">样例输入2</label>
|
|
||||||
<pre title="双击可以复制哦~">
|
|
||||||
1 2 3 4 5 6 7
|
|
||||||
1 2 3 4 5 6 7</pre>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="problem-section">
|
|
||||||
|
|
||||||
<label class="problem-label">样例输出2</label>
|
|
||||||
<pre>
|
|
||||||
1 2 3 4 5 6 7</pre>
|
|
||||||
</div>
|
</div>
|
||||||
|
{% endfor %}
|
||||||
<div>
|
<div>
|
||||||
<button type="button" id="show-more-btn" class="btn btn-info btn-sm">查看隐藏信息</button>
|
<button type="button" id="show-more-btn" class="btn btn-info btn-sm">查看隐藏信息</button>
|
||||||
</div>
|
</div>
|
||||||
|
{% if problem.hind %}
|
||||||
<div class="problem-section hide">
|
<div class="problem-section hide">
|
||||||
<label class="problem-label">提示</label>
|
<label class="problem-label">提示</label>
|
||||||
|
|
||||||
<p class="problem-detail">画一下图</p>
|
<p class="problem-detail">{{ problem.hint|safe }}</p>
|
||||||
</div>
|
</div>
|
||||||
|
{% endif %}
|
||||||
<div class="problem-section hide">
|
<div class="problem-section hide">
|
||||||
<label class="problem-label">标签</label>
|
<label class="problem-label">标签</label>
|
||||||
|
|
||||||
<p class="problem-detail">
|
<p class="problem-detail">
|
||||||
<span class="label label-success">Success</span>
|
{% for tag in problem.tags.all %}
|
||||||
<span class="label label-info">Info</span>
|
<span class="label label-success">{{ tag.name }}</span>
|
||||||
|
{% endfor %}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user