From 4361f4d6e4b819d2a69646552f05cb6b6f107cdf Mon Sep 17 00:00:00 2001
From: esp
Date: Sat, 22 Aug 2015 19:20:22 +0800
Subject: [PATCH] =?UTF-8?q?[=E5=89=8D=E7=AB=AF]=E4=BF=AE=E6=94=B9=E5=AE=8C?=
=?UTF-8?q?=E5=96=84=E4=BA=86=E6=B7=BB=E5=8A=A0=E6=AF=94=E8=B5=9B=E9=A1=B5?=
=?UTF-8?q?=E9=9D=A2,=20=20=E6=AF=94=E8=B5=9B=E5=88=97=E8=A1=A8=E5=8A=9F?=
=?UTF-8?q?=E8=83=BD=E4=BB=8D=E4=B8=8D=E5=85=A8=E9=9D=A2,=E7=A8=8D?=
=?UTF-8?q?=E5=90=8E=E6=94=B9=E8=BF=9B[CI=20SKIP]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/js/app/admin/contest/add_contest.js | 149 ++++++++-------
.../src/js/app/admin/contest/contest_list.js | 71 +++++--
template/admin/contest/add_contest.html | 5 +-
template/admin/contest/contest_list.html | 177 +++++++++++-------
4 files changed, 255 insertions(+), 147 deletions(-)
diff --git a/static/src/js/app/admin/contest/add_contest.js b/static/src/js/app/admin/contest/add_contest.js
index d3a7900e..dfa8d603 100644
--- a/static/src/js/app/admin/contest/add_contest.js
+++ b/static/src/js/app/admin/contest/add_contest.js
@@ -3,41 +3,58 @@ require(["jquery", "avalon", "editor", "uploader", "bsAlert", "csrfToken", "date
function ($, avalon, editor, uploader, bsAlert, csrfTokenHeader) {
avalon.vmodels.add_contest = null;
$("#add-contest-form").validator().on('submit', function (e) {
- if (!e.isDefaultPrevented()){
- alert("smoething went wrong!");
+ if (!e.isDefaultPrevented()){
+ e.preventDefault();
+ var ajaxData = {
+ title: vm.title,
+ description: vm.description,
+ mode: vm.mode,
+ contest_type: 0,
+ show_rank: vm.showRank,
+ show_user_submission: vm.showSubmission,
+ //password: vm.password,
+ start_time: vm.startTime,
+ end_time: vm.endTime,
+ visible: true
+ };
+ if (vm.choseGroupList[0].id == 0) //everyone | public contest
+ if (vm.password == "")
+ ajaxData.contest_type = 1;
+ else{
+ ajaxData.password = vm.password;
+ }
+ else { // Add groups info
+ ajaxData.groups = [];
+ for (var i = 0; vm.choseGroupList[i]; i++)
+ ajaxData.groups.push(parseInt(vm.choseGroupList[i].id))
}
- else{
- var data = {
- title: vm.title,
- description: vm.description,
- start_time: vm.startTime,
- end_time: vm.endTime,
- password: vm.password,
- mode: vm.model,
- show_rank: vm.openRank
- };
- $.ajax({
- beforeSend: csrfTokenHeader,
- url: "/api/admin/contest/",
- dataType: "json",
- data: data,
- method: "post",
- contentType: "application/json",
- success: function (data) {
- if (!data.code) {
- bsAlert("添加成功!");
- console.log(data);
- }
- else {
- bsAlert(data.data);
- console.log(data);
- }
- }
- });
- console.log(data);
- }
- return false;
- })
+
+
+ console.log(ajaxData);
+ $.ajax({
+ beforeSend: csrfTokenHeader,
+ url: "/api/admin/contest/",
+ dataType: "json",
+ contentType: "application/json",
+ data: JSON.stringify(ajaxData),
+ method: "post",
+ contentType: "application/json",
+ success: function (data) {
+ if (!data.code) {
+ bsAlert("添加成功!");
+ console.log(data);
+ }
+ else {
+ bsAlert(data.data);
+ console.log(data);
+ }
+ }
+ });
+ console.log(JSON.stringify(ajaxData));
+ }
+ return false;
+ });
+
editor("#editor");
editor("#problemDescriptionEditor");
editor("#problemHintEditor");
@@ -57,8 +74,8 @@ require(["jquery", "avalon", "editor", "uploader", "bsAlert", "csrfToken", "date
editSamples: [],
editTestCaseList: [],
group: "-1",
- groupList: [{name:"Group one", id :3, choosed: false},{name:"Group two", id:5, choosed: false}],
- choosedGroupList: [],
+ groupList: [],
+ choseGroupList: [],
showProblemEditArea: function (problemIndex) {
if (vm.editingProblemId == problemIndex){
vm.problems[vm.editingProblemId-1].samples = vm.editSamples;
@@ -126,50 +143,48 @@ require(["jquery", "avalon", "editor", "uploader", "bsAlert", "csrfToken", "date
if (vm.group == -1) return;
if (vm.groupList[vm.group].id == 0){
vm.passwordUsable = true;
- vm.choosedGroupList = [];
+ vm.choseGroupList = [];
for (var key in vm.groupList){
- vm.groupList[key].choosed = true;
+ vm.groupList[key].chose = true;
}
}
- vm.groupList[vm.group]. choosed = true;
- vm.choosedGroupList .push({name:vm.groupList[vm.group].name, index:vm.group, id:vm.groupList[vm.group].id});
+ vm.groupList[vm.group]. chose = true;
+ vm.choseGroupList.push({name:vm.groupList[vm.group].name, index:vm.group, id:vm.groupList[vm.group].id});
},
- unchoosed: function(groupIndex){
- if (vm.groupList[vm.choosedGroupList[groupIndex].index].id == 0){
+ unchose: function(groupIndex){
+ if (vm.groupList[vm.choseGroupList[groupIndex].index].id == 0){
vm.passwordUsable = false;
for (key in vm.groupList){
- vm.groupList[key].choosed = false;
+ vm.groupList[key].chose = false;
}
}
- vm.groupList[vm.choosedGroupList[groupIndex].index].choosed = false;
- vm.choosedGroupList.remove(vm.choosedGroupList[groupIndex]);
+ vm.groupList[vm.choseGroupList[groupIndex].index].chose = false;
+ vm.choseGroupList.remove(vm.choseGroupList[groupIndex]);
}
});
var isSuperAdmin = true;
$.ajax({ //用于获取该用户创建的所有小组的ajax请求
- beforeSend: csrfTokenHeader,
- url: "/api/admin/group/?my_group=true",
- dataType: "json",
- method: "get",
- contentType: "application/json",
- success: function (data) {
- if (!data.code) {
- for (var key in data.data)
- {
- data.data[key].choosed = false;
- vm.groupList.push(data.data[key]);
- }
- if (isSuperAdmin)
- vm.groupList.push({id:0, name:"everyone", choosed: false});
- console.log(data);
- }
- else {
- bsAlert(data.data);
- console.log(data);
- }
- }
- });
+ beforeSend: csrfTokenHeader,
+ url: "/api/admin/group/?my_group=true",
+ dataType: "json",
+ method: "get",
+ contentType: "application/json",
+ success: function (data) {
+ if (!data.code) {
+ if (isSuperAdmin)
+ vm.groupList.push({id:0, name:"所有人", chose: false});
+ for (var key in data.data) {
+ data.data[key].chose = false;
+ vm.groupList.push(data.data[key]);
+ }
+ }
+ else {
+ bsAlert(data.data);
+ console.log(data);
+ }
+ }
+ });
diff --git a/static/src/js/app/admin/contest/contest_list.js b/static/src/js/app/admin/contest/contest_list.js
index ceafce19..a7378e14 100644
--- a/static/src/js/app/admin/contest/contest_list.js
+++ b/static/src/js/app/admin/contest/contest_list.js
@@ -13,10 +13,25 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "datetimePicker"]
nextPage: 0,
page: 1,
totalPage: 1,
+ group: "-1",
+ groupList: [],
keyword: "",
editingContestId: 0,
editTitle: "",
- editingProblemList: [],
+ editProblemList: [],
+ editPassword: "",
+ editStartTime: "",
+ editEndTime: "",
+ editMode: "",
+ editShowRank: false,
+ editShowSubmission: false,
+ editProblemList: [],
+ editingProblemId: 0,
+ editSamples: [],
+ editTestCaseList: [],
+ editChoseGroupList: [],
+ modelNameList: ["ACM", "AC总数", "分数"],
+ contestTypeNameList: ["小组赛", "公开赛", "有密码保护的公开赛"],
getNext: function () {
if (!vm.nextPage)
return;
@@ -44,6 +59,24 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "datetimePicker"]
else {
vm.editingContestId = contestId;
vm.editTitle = vm.contestList[contestId-1].title;
+ vm.editEndTime = vm.contestList[contestId-1].end_time;
+ vm.editPassword = vm.contestList[contestId-1].password;
+ vm.editStartTime = vm.contestList[contestId-1].start_time;
+ vm.editMode = vm.contestList[contestId-1].mode;
+ vm.editChoseGroupList = [];
+ //= vm.contestList[contestId-1].group;//
+ /*for (var key in vm.contestList[contestId-1].groups){
+ var id = parseInt(vm.contestList[contestId-1].groups);
+ for ()
+ vm.editChoseGroupList.push({
+ name:vm.groupList[vm.group].name,
+ index:index,
+ id:parseInt(vm.contestList[contestId-1].groups)
+ });
+ }*/
+ vm.editShowRank = vm.contestList[contestId-1].show_rank;
+ vm.editShowSubmission = vm.contestList[contestId-1].show_user_submission;
+ //vm.editProblemList = vm.contestList[contestId-1].problems
editor("#editor").setValue(vm.contestList[contestId-1].description);
vm.editingProblemList = vm.contestList[contestId-1].problemList;
}
@@ -54,7 +87,7 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "datetimePicker"]
}
function getPageData(page) {
-/*
+
var url = "/api/admin/contest/?paging=true&page=" + page + "&page_size=10";
if (vm.keyword != "")
url += "&keyword=" + vm.keyword;
@@ -75,20 +108,30 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "datetimePicker"]
}
}
});
-*/
- vm.contestList =[{
- id: 1, title:"The first contest",
- created_by: {username:"owen"},
- description:"this contest is just for
fun
",
- problemList:[{title:"A+B problem", id:1, testCaseList:[1,2], samples:[1,2]}]
- }];
- vm.totalPage = 1;
- vm.previousPage = false;
- vm.nextPage = false;
- vm.page = 1;
}
-
+ var isSuperAdmin = true;
+ $.ajax({ //用于获取该用户创建的所有小组的ajax请求
+ beforeSend: csrfTokenHeader,
+ url: "/api/admin/group/?my_group=true",
+ dataType: "json",
+ method: "get",
+ contentType: "application/json",
+ success: function (data) {
+ if (!data.code) {
+ if (isSuperAdmin)
+ vm.groupList.push({id:0, name:"所有人", chose: false});
+ for (var key in data.data) {
+ data.data[key].chose = false;
+ vm.groupList.push(data.data[key]);
+ }
+ }
+ else {
+ bsAlert(data.data);
+ console.log(data);
+ }
+ }
+ });
});
avalon.scan();
});
diff --git a/template/admin/contest/add_contest.html b/template/admin/contest/add_contest.html
index f4be26d6..44ae98ac 100644
--- a/template/admin/contest/add_contest.html
+++ b/template/admin/contest/add_contest.html
@@ -51,7 +51,7 @@
@@ -61,7 +61,7 @@
-
{{el.name}}
+
{{el.name}}
@@ -231,4 +231,3 @@
-
diff --git a/template/admin/contest/contest_list.html b/template/admin/contest/contest_list.html
index 9fd4874b..ab878ae5 100644
--- a/template/admin/contest/contest_list.html
+++ b/template/admin/contest/contest_list.html
@@ -16,27 +16,21 @@
ID |
比赛 |
比赛类型 |
- 比赛模式 |
公开排名 |
开始时间 |
结束时间 |
创建时间 |
创建者 |
- |
-
+
| {{ el.id }} |
{{ el.title }} |
- {{ el.type }} |
- {{ el.mode }} |
+ {{ contestTypeNameList[el.contest_type] }} |
{{ el.show_rank }} |
{{ el.start_time|date("yyyy-MM-dd HH:mm:ss")}} |
{{ el.end_time|date("yyyy-MM-dd HH:mm:ss")}} |
{{ el.create_time|date("yyyy-MM-dd HH:mm:ss")}} |
{{ el.created_by.username }} |
-
-
- |
@@ -45,72 +39,129 @@
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+