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 @@
-
- - - +
+ +
+
+
+ + +
+
+
+
+ +
+
+
+
请填写比赛描述
-
- -
-
- -
-
+
+
+ +
+
+ +
+
+
+ ms-duplex="editStartTime" data-error="请填写比赛开始时间" required> +
-
- +
+
+
+ +
-
- +
+
+ +
+
+ +
+
+
+
-
- +
+
+
+
-
- +
+
+
{{el.name}}
+
+
+ +
+
+ +
+
+ +
+
+
+ + +
-
- +
+
+
+
-
- - +
+
+
+
-
-
- -
-
-
- - - - - - - - - - - - - -
编号题目测试数据
题目{{ $index+1 }}{{ el.title }}{{ el.testCaseList.length }}组 - 编辑 - 删除 -
-
+
+
+ + 添加 + + + + + + + + + + + + + +
编号题目测试数据
题目{{ $index+1 }}{{ el.title }}{{ el.testCaseList.length }}组 + 编辑 + 删除 +
+ +