Accept Merge Request #127 小BUG修复 : (dev-sxw -> dev)

Merge Request: 小BUG修复
Created By: @esp
Reviewed By: @virusdefender 
Accepted By: @virusdefender
URL: https://coding.net/u/virusdefender/p/qduoj/git/merge/127?tab=files
This commit is contained in:
virusdefender 2015-08-25 12:41:09 +08:00
commit a39dc9d227
14 changed files with 125 additions and 101 deletions

View File

@ -36,7 +36,6 @@ require(["jquery", "avalon", "editor", "uploader", "bsAlert", "csrfToken", "date
ajaxData.groups.push(parseInt(vm.choseGroupList[i].id))
}
console.log(ajaxData);
$.ajax({ // Add contest
beforeSend: csrfTokenHeader,
url: "/api/admin/contest/",
@ -64,11 +63,9 @@ require(["jquery", "avalon", "editor", "uploader", "bsAlert", "csrfToken", "date
}
else {
bsAlert(data.data);
console.log(data);
}
}
});
console.log(JSON.stringify(ajaxData));
}
return false;
});

View File

@ -21,6 +21,10 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "datetimePicker",
bsAlert("你没有选择参赛用户!");
return false;
}
if (vm.editDescription == "") {
bsAlert("比赛描述不能为空!");
return false;
}
if (vm.choseGroupList[0].id == 0) { //everyone | public contest
if (vm.editPassword) {
ajaxData.password = vm.editPassword;
@ -36,29 +40,26 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "datetimePicker",
ajaxData.groups.push(parseInt(vm.choseGroupList[i].id))
}
console.log(ajaxData);
$.ajax({ // Add contest
beforeSend: csrfTokenHeader,
url: "/api/admin/contest/",
dataType: "json",
contentType: "application/json",
data: JSON.stringify(ajaxData),
method: "put",
contentType: "application/json",
success: function (data) {
if (!data.code) {
bsAlert("修改成功!");
console.log(data);
vm.getPage(1);
}
else {
bsAlert(data.data);
console.log(data);
}
}
});
console.log(JSON.stringify(ajaxData));
}
$.ajax({ // Add contest
beforeSend: csrfTokenHeader,
url: "/api/admin/contest/",
dataType: "json",
contentType: "application/json",
data: JSON.stringify(ajaxData),
method: "put",
contentType: "application/json",
success: function (data) {
if (!data.code) {
bsAlert("修改成功!");
vm.editingContestId = 0; // Hide the editor
vm.getPage(1); // Refresh the contest list
}
else {
bsAlert(data.data);
}
}
});
}
return false;
});
@ -90,7 +91,7 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "datetimePicker",
vm.editChoseGroupList= [];
vm.editingProblemContestIndex= 0;
}
else
else {
var vm = avalon.define({
$id: "contestList",
contestList: [],
@ -98,6 +99,7 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "datetimePicker",
nextPage: 0,
page: 1,
totalPage: 1,
showVisibleOnly: false,
group: "-1",
groupList: [],
choseGroupList: [],
@ -139,6 +141,8 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "datetimePicker",
getPageData(page_index);
},
showEditContestArea: function (contestId) {
if (vm.editingContestId && !confirm("如果继续将丢失未保存的信息,是否继续?"))
return;
if (contestId == vm.editingContestId)
vm.editingContestId = 0;
else {
@ -148,15 +152,11 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "datetimePicker",
vm.editStartTime = vm.contestList[contestId-1].start_time.substring(0,16).replace("T"," ");
vm.editEndTime = vm.contestList[contestId-1].end_time.substring(0,16).replace("T"," ");
vm.editMode = vm.contestList[contestId-1].mode;
editVisible = vm.contestList[contestId-1].visible;
vm.editVisible = vm.contestList[contestId-1].visible;
if (vm.contestList[contestId-1].contest_type == 0) { //contest type == 0, contest in group
//Clear the choseGroupList
var stack = [], sp;
for (sp = 0; sp < vm.choseGroupList.length; sp++){
stack. push(vm.choseGroupList[sp].index);
}
while (sp--){
vm.removeGroup(stack[sp]);
while (vm.choseGroupList.length) {
vm.removeGroup(0);
}
for (var i = 0; i < vm.contestList[contestId-1].groups.length; i++){
@ -215,8 +215,8 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "datetimePicker",
if (vm.groupList[vm.group].id == 0){
vm.passwordUsable = true;
vm.choseGroupList = [];
for (var key in vm.groupList){
vm.groupList[key].chose = true;
for (var i = 0; i < vm.groupList.length; i++) {
vm.groupList[i].chose = true;
}
}
vm.groupList[vm.group]. chose = true;
@ -227,8 +227,8 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "datetimePicker",
removeGroup: function(groupIndex){
if (vm.groupList[vm.choseGroupList[groupIndex].index].id == 0){
vm.passwordUsable = false;
for (key in vm.groupList){
vm.groupList[key].chose = false;
for (var i = 0; i < vm.groupList.length; i++) {
vm.groupList[i].chose = false;
}
}
vm.groupList[vm.choseGroupList[groupIndex].index].chose = false;
@ -238,7 +238,6 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "datetimePicker",
vm.$fire("up!showContestProblemPage", 0, vm.contestList[vm.editingProblemContestIndex-1].id, vm.editMode);
},
showProblemEditor: function(el) {
console.log(el);
vm.$fire("up!showContestProblemPage", el.id, vm.contestList[vm.editingProblemContestIndex-1].id, vm.editMode);
},
getYesOrNo: function(yORn) {
@ -246,6 +245,10 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "datetimePicker",
return "否";
}
});
vm.$watch("showVisibleOnly", function() {
getPageData(1);
})
}
getPageData(1);
//init time picker
@ -264,6 +267,8 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "datetimePicker",
function getPageData(page) {
var url = "/api/admin/contest/?paging=true&page=" + page + "&page_size=10";
if (vm.showVisibleOnly)
url += "&visible=true"
if (vm.keyword != "")
url += "&keyword=" + vm.keyword;
$.ajax({

View File

@ -158,7 +158,6 @@ require(["jquery", "avalon", "editor", "uploader", "bsAlert", "csrfToken", "tagE
}
else {
var problem = data.data;
console.log(problem);
vm.title = problem.title;
vm.description = problem.description;
vm.timeLimit = problem.time_limit;

View File

@ -1,4 +1,4 @@
require(["jquery", "avalon", "csrfToken", "bsAlert", "formValidation"], function ($, avalon, csrfTokenHeader, bsAlert) {
require(["jquery", "avalon", "csrfToken", "bsAlert"], function ($, avalon, csrfTokenHeader, bsAlert) {
avalon.ready(function () {
avalon.vmodels.submissionList = null;
@ -41,9 +41,11 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "formValidation"], function
getPage: function (page_index) {
getPageData(page_index);
},
showSubmissionDetailPage: function (submissionId) {
},
showProblemListPage: function(){
vm.$fire("up!showProblemListPage");
}
});

View File

@ -3,58 +3,68 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "validator"], function ($,
// avalon:定义模式 userList
avalon.ready(function () {
avalon.vmodels.userList = null;
var vm = avalon.define({
$id: "userList",
//通用变量
userList: [],
previousPage: 0,
nextPage: 0,
page: 1,
editingUserId: 0,
totalPage: 1,
userType: ["一般用户", "管理员", "超级管理员"],
keyword: "",
showAdminOnly: false,
//编辑区域同步变量
username: "",
realName: "",
email: "",
adminType: 0,
id: 0,
getNext: function () {
if (!vm.nextPage)
return;
getPageData(vm.page + 1);
},
getPrevious: function () {
if (!vm.previousPage)
return;
getPageData(vm.page - 1);
},
getBtnClass: function (btn) { //上一页/下一页按钮启用禁用逻辑
if (btn) {
return vm.nextPage ? "btn btn-primary" : "btn btn-primary disabled";
//avalon.vmodels.userList = null;
if (avalon.vmodels.userList) {
var vm = avalon.vmodels.userList;
// initialize avalon object
userList = []; previousPage= 0; nextPage= 0; page = 1;
editingUserId= 0; totalPage = 1; keyword= ""; showAdminOnly= false;
//user editor fields
username= ""; realName= ""; email= ""; adminType= 0; id= 0;
}
else {
var vm = avalon.define({
$id: "userList",
//通用变量
userList: [],
previousPage: 0,
nextPage: 0,
page: 1,
editingUserId: 0,
totalPage: 1,
userType: ["一般用户", "管理员", "超级管理员"],
keyword: "",
showAdminOnly: false,
//编辑区域同步变量
username: "",
realName: "",
email: "",
adminType: 0,
id: 0,
getNext: function () {
if (!vm.nextPage)
return;
getPageData(vm.page + 1);
},
getPrevious: function () {
if (!vm.previousPage)
return;
getPageData(vm.page - 1);
},
getBtnClass: function (btn) { //上一页/下一页按钮启用禁用逻辑
if (btn == "next") {
return vm.nextPage ? "btn btn-primary" : "btn btn-primary disabled";
}
else {
return vm.previousPage ? "btn btn-primary" : "btn btn-primary disabled";
}
},
editUser: function (user) { //点击编辑按钮的事件,显示/隐藏编辑区
vm.username = user.username;
vm.realName = user.real_name;
vm.adminType = user.admin_type;
vm.email = user.email;
vm.id = user.id;
if (vm.editingUserId == user.id)
vm.editingUserId = 0;
else
vm.editingUserId = user.id;
},
search: function () {
getPageData(1);
}
else {
return vm.previousPage ? "btn btn-primary" : "btn btn-primary disabled";
}
},
editUser: function (user) { //点击编辑按钮的事件,显示/隐藏编辑区
vm.username = user.username;
vm.realName = user.real_name;
vm.adminType = user.admin_type;
vm.email = user.email;
vm.id = user.id;
if (vm.editingUserId == user.id)
vm.editingUserId = 0;
else
vm.editingUserId = user.id;
},
search: function () {
getPageData(1);
}
});
});
}
vm.$watch("showAdminOnly", function () {
getPageData(1);
});

View File

@ -164,7 +164,7 @@ class ContestSubmissionAPIView(APIView):
"""
创建比赛的提交
---
request_serializer: ConestSubmissionSerializer
request_serializer: CreateContestSubmissionSerializer
"""
serializer = CreateContestSubmissionSerializer(data=request.data)
if serializer.is_valid():

View File

@ -103,4 +103,4 @@
</form>
</div>
<script src="/static/js/app/admin/contest/add_contest.js"></script>
<script src="/static/js/app/admin/contest/addContest.js"></script>

View File

@ -34,6 +34,9 @@
</td>
</tr>
</table>
<div class="form-group">
<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>
@ -161,6 +164,7 @@
<th>编号</th>
<th>题目</th>
<th ms-visible="editMode=='2'">分值</th>
<th>可见</th>
<th>创建时间</th>
<td></td>
</tr>
@ -168,6 +172,7 @@
<td>{{ el.sort_index }}</td>
<td>{{ el.title }}</td>
<td ms-visible="editMode=='2'">{{ el.score}}</td>
<td>{{ getYesOrNo(el.visible) }}</td>
<td>{{ el.create_time|date("yyyy-MM-dd HH:mm:ss") }}</td>
<td>
<a href="javascript:void(0)" class="btn-sm btn-info"
@ -180,4 +185,4 @@
</div>
<script src="/static/js/app/admin/contest/contest_list.js"></script>
<script src="/static/js/app/admin/contest/contestList.js"></script>

View File

@ -2,7 +2,7 @@
<form id="edit-problem-form">
<nav>
<ul class="pager">
<li class="previous" ms-click="goBack()"><a href="javascript:void(0)"><span
<li class="previous" ms-click="goBack(0)"><a href="javascript:void(0)"><span
aria-hidden="true">&larr;</span> 返回</a></li>
</ul>
</nav>
@ -135,4 +135,4 @@
</form>
</div>
<script src="/static/js/app/admin/contest/edit_problem.js"></script>
<script src="/static/js/app/admin/contest/editProblem.js"></script>

View File

@ -134,4 +134,4 @@
</form>
</div>
<script src="/static/js/app/admin/problem/add_problem.js"></script>
<script src="/static/js/app/admin/problem/addProblem.js"></script>

View File

@ -140,4 +140,4 @@
</form>
</div>
<script src="/static/js/app/admin/problem/edit_problem.js"></script>
<script src="/static/js/app/admin/problem/editProblem.js"></script>

View File

@ -1,4 +1,10 @@
<div ms-controller="submissionList" class="col-md-9">
<nav>
<ul class="pager">
<li class="previous" ms-click="showProblemListPage()"><a href="javascript:void(0)"><span
aria-hidden="true">&larr;</span> 返回</a></li>
</ul>
</nav>
<h1>提交列表</h1>
<table class="table table-striped">
@ -25,4 +31,4 @@
<button ms-attr-class="getBtnClass('next')" ms-click="getNext">下一页</button>
</div>
</div>
<script src="/static/js/app/admin/problem/submission_list.js"></script>
<script src="/static/js/app/admin/problem/submissionList.js"></script>