重构添加比赛的页面

This commit is contained in:
virusdefender 2015-10-24 14:57:30 +08:00
parent 84e776a8b4
commit f5953d64a5
3 changed files with 22 additions and 51 deletions

View File

@ -1,5 +1,5 @@
require(["jquery", "avalon", "editor", "uploader", "bsAlert", "csrfToken", "datetimePicker",
"validator"],
"validator", "editorComponent"],
function ($, avalon, editor, uploader, bsAlert, csrfTokenHeader) {
$("#add-contest-form").validator().on('submit', function (e) {
@ -7,11 +7,9 @@ require(["jquery", "avalon", "editor", "uploader", "bsAlert", "csrfToken", "date
e.preventDefault();
var ajaxData = {
title: vm.title,
description: vm.description,
mode: vm.mode,
description: avalon.vmodels.contestDescriptionEditor.content,
contest_type: 0,
real_time_rank: vm.realTimeRank,
show_user_submission: vm.showSubmission,
start_time: vm.startTime,
end_time: vm.endTime,
visible: false
@ -38,12 +36,11 @@ require(["jquery", "avalon", "editor", "uploader", "bsAlert", "csrfToken", "date
bsAlert("你没有选择参赛用户!");
return false;
}
if (vm.editDescription == "") {
if (ajaxData.description.trim() == "") {
bsAlert("比赛描述不能为空!");
return false;
}
$.ajax({ // Add contest
beforeSend: csrfTokenHeader,
$.ajax({
url: "/api/admin/contest/",
dataType: "json",
contentType: "application/json;charset=UTF-8",
@ -52,17 +49,7 @@ require(["jquery", "avalon", "editor", "uploader", "bsAlert", "csrfToken", "date
success: function (data) {
if (!data.code) {
bsAlert("添加成功!将转到比赛列表页以便为比赛添加问题(注意比赛当前状态为:隐藏)");
vm.title = "";
vm.description = "";
vm.startTime = "";
vm.endTime = "";
vm.password = "";
vm.mode = "0";
vm.showSubmission = true;
location.hash = "#contest/contest_list";
vm.isGlobal = true;
vm.allGroups = [];
vm.showGlobalViewRadio = true;
}
else {
bsAlert(data.data);
@ -73,23 +60,25 @@ require(["jquery", "avalon", "editor", "uploader", "bsAlert", "csrfToken", "date
return false;
});
editor("#editor");
//editor("#editor");
if (avalon.vmodels.add_contest)
var vm = avalon.vmodels.add_contest;
else
var vm = avalon.define({
$id: "add_contest",
title: "",
description: "",
startTime: "",
endTime: "",
password: "",
mode: "0",
showSubmission: true,
isGlobal: true,
allGroups: [],
showGlobalViewRadio: true,
realTimeRank: true
realTimeRank: true,
contestDescriptionEditor: {
editorId: "contest-description-editor",
placeholder: "比赛介绍内容"
}
});
$.ajax({
@ -102,7 +91,6 @@ require(["jquery", "avalon", "editor", "uploader", "bsAlert", "csrfToken", "date
if (data.data.admin_type == 1) {
vm.isGlobal = false;
vm.showGlobalViewRadio = false;
}
}
$.ajax({

View File

@ -17,8 +17,7 @@
</div>
<div class="col-md-12">
<div class="form-group">
<textarea id="editor" placeholder="这里输入内容" autofocus ms-duplex="description"></textarea>
<p class="error-info" ms-visible="description==''">请填写比赛描述</p>
<ms:editor $id="contestDescriptionEditor" config="contestDescriptionEditor"></ms:editor>
</div>
</div>
<div class="col-md-6">
@ -39,7 +38,7 @@
</div>
<div class="col-md-6">
<div class="form-group">
<label>可见范围</label>
<label>比赛类型</label>
<div>
<span ms-if="showGlobalViewRadio">
@ -70,30 +69,12 @@
<input type="checkbox" value="group_id" ms-duplex-checked="el.isSelected">&nbsp;&nbsp;{{ el.name }}
</div>
</div>
<div class="col-md-3">
<label>排名方式</label>
<div class="form-group">
<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>分数</small>
</label>
</div>
</div>
<div class="col-md-3">
<label>公开提交记录</label>
<div class="form-group">
<label class="text"><input type="checkbox" ms-duplex-checked="showSubmission">
<small>公开</small>
</label>
</div>
</div>
<div class="col-md-3">
<div class="col-md-12">
<label>实时排名</label>
<div class="form-group">
<label class="text"><input type="checkbox" ms-duplex-checked="realTimeRank">
<small></small>
<small>如果不勾选,排名会被缓存,不会更新,而且只显示自己的提交。用于 acm 封榜。</small>
</label>
</div>
</div>

View File

@ -38,10 +38,10 @@
<label>仅显示可见 <input ms-duplex-checked="showVisibleOnly" type="checkbox"/></label>
</div>
<div class="text-right">
页数:{{ page }}/{{ totalPage }}&nbsp;&nbsp;
<button ms-attr-class="getBtnClass('pre')" ms-click="getPrevious">上一页</button>
<button ms-attr-class="getBtnClass('next')" ms-click="getNext">下一页</button>
<ms:pager $id="contestListPager" config="pager"></ms:pager>
</div>
<!--
<div ms-visible="editingContestId">
<form id="edit-contest-form">
<div class="col-md-12">
@ -108,7 +108,7 @@
<input type="text" class="form-control" name="password" placeholder="留空就是公开赛" ms-duplex="editPassword">
</div>
<div class="form-group col-md-12" ms-visible="!isGlobal">
<!-- radio 的value 没有用 但是没有的话,表单验证会出错-->
<div ms-repeat="allGroups" class="col-md-4">
<input type="checkbox" value="group_id" ms-duplex-checked="el.isSelected">&nbsp;&nbsp;{{ el.name }}
</div>
@ -186,6 +186,8 @@
</div>
-->
</div>
<script src="/static/js/app/admin/contest/contestList.js"></script>