From ce5b0804b9a74d76e8df9a188668bf28159a9cff Mon Sep 17 00:00:00 2001 From: virusdefender <1670873886@qq.com> Date: Mon, 17 Aug 2015 16:33:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E9=A1=B5=E9=9D=A2=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC=E6=97=B6=E4=BF=9D=E5=AD=98=E4=B8=8A=E4=B8=80=E9=A1=B5?= =?UTF-8?q?=E7=8A=B6=E6=80=81=EF=BC=8C=E5=90=8C=E6=97=B6=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/src/js/app/admin/admin.js | 13 ++++ static/src/js/app/admin/group/group.js | 2 +- static/src/js/app/admin/group/groupDetail.js | 5 +- .../src/js/app/admin/problem/edit_problem.js | 3 + static/src/js/app/admin/problem/problem.js | 77 +++++++++++-------- .../js/app/admin/problem/submission_list.js | 76 ++++++++++++++++++ 6 files changed, 140 insertions(+), 36 deletions(-) create mode 100644 static/src/js/app/admin/problem/submission_list.js diff --git a/static/src/js/app/admin/admin.js b/static/src/js/app/admin/admin.js index 80ba2d98..c1ab3987 100644 --- a/static/src/js/app/admin/admin.js +++ b/static/src/js/app/admin/admin.js @@ -41,6 +41,19 @@ define("admin", ["jquery", "avalon"], function ($, avalon) { vm.template_url = "template/problem/edit_problem.html"; }); + vm.$watch("showProblemListPage", function(){ + vm.template_url = "template/problem/problem_list.html"; + }); + + vm.$watch("showGroupListPage", function(){ + vm.template_url = "template/group/group.html"; + }); + + vm.$watch("showProblemSubmissionPage", function(problemId){ + vm.problemId = problemId; + vm.template_url = "template/problem/submission_list.html"; + }); + avalon.scan(); li_active("#li-" + hash.replace("/", "-")); diff --git a/static/src/js/app/admin/group/group.js b/static/src/js/app/admin/group/group.js index 4ff6ba40..b4b31170 100644 --- a/static/src/js/app/admin/group/group.js +++ b/static/src/js/app/admin/group/group.js @@ -45,7 +45,7 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "formValidation"], function getPageData(1); function getPageData(page) { - var url = "/api/admin/group/?paging=true&page=" + page + "&page_size=10"; + var url = "/api/admin/group/?paging=true&page=" + page + "&page_size=2"; if (vm.keyword) url += "&keyword=" + vm.keyword; $.ajax({ diff --git a/static/src/js/app/admin/group/groupDetail.js b/static/src/js/app/admin/group/groupDetail.js index 8dd0202c..e622a161 100644 --- a/static/src/js/app/admin/group/groupDetail.js +++ b/static/src/js/app/admin/group/groupDetail.js @@ -3,7 +3,7 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "formValidation"], function // avalon:定义模式 group_list avalon.ready(function () { - avalon.vmodels.groupDetail = null; + avalon.vmodels.groupDetail = null; var vm = avalon.define({ $id: "groupDetail", //通用变量 @@ -47,6 +47,9 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "formValidation"], function bsAlert(data.data); } }) + }, + showGroupListPage: function () { + vm.$fire("up!showGroupListPage"); } }); diff --git a/static/src/js/app/admin/problem/edit_problem.js b/static/src/js/app/admin/problem/edit_problem.js index 75ebbae4..25462d18 100644 --- a/static/src/js/app/admin/problem/edit_problem.js +++ b/static/src/js/app/admin/problem/edit_problem.js @@ -167,6 +167,9 @@ require(["jquery", "avalon", "editor", "uploader", "bsAlert", "csrfToken", "tagE if (item.visible) return "折叠"; return "展开"; + }, + showProblemListPage: function(){ + vm.$fire("up!showProblemListPage"); } }); var hintEditor = editor("#hint"); diff --git a/static/src/js/app/admin/problem/problem.js b/static/src/js/app/admin/problem/problem.js index 4f87b3d6..d7e07397 100644 --- a/static/src/js/app/admin/problem/problem.js +++ b/static/src/js/app/admin/problem/problem.js @@ -1,40 +1,49 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "formValidation"], function ($, avalon, csrfTokenHeader, bsAlert) { avalon.ready(function () { - avalon.vmodels.problemList = null; - var vm = avalon.define({ - $id: "problemList", - problemList: [], - previousPage: 0, - nextPage: 0, - page: 1, - totalPage: 1, - keyword: "", - 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"; + if(avalon.vmodels.problemList){ + vm = avalon.vmodels.problemList; + } + else { + var vm = avalon.define({ + $id: "problemList", + problemList: [], + previousPage: 0, + nextPage: 0, + page: 1, + totalPage: 1, + keyword: "", + 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"; + } + }, + getPage: function (page_index) { + getPageData(page_index); + }, + showEditProblemPage: function (problemId) { + vm.$fire("up!showEditProblemPage", problemId); + }, + showProblemSubmissionPage: function(problemId){ + vm.$fire("up!showProblemSubmissionPage", problemId); } - else { - return vm.previousPage ? "btn btn-primary" : "btn btn-primary disabled"; - } - }, - getPage: function (page_index) { - getPageData(page_index); - }, - showEditProblemPage: function (problem_id) { - vm.$fire("up!showEditProblemPage", problem_id); - } - }); + }); + + getPageData(1); + } function getPageData(page) { var url = "/api/admin/problem/?paging=true&page=" + page + "&page_size=10"; @@ -59,7 +68,7 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "formValidation"], function }); } - getPageData(1); + }); avalon.scan(); }); \ No newline at end of file diff --git a/static/src/js/app/admin/problem/submission_list.js b/static/src/js/app/admin/problem/submission_list.js new file mode 100644 index 00000000..21c451bf --- /dev/null +++ b/static/src/js/app/admin/problem/submission_list.js @@ -0,0 +1,76 @@ +require(["jquery", "avalon", "csrfToken", "bsAlert", "formValidation"], function ($, avalon, csrfTokenHeader, bsAlert) { + + avalon.ready(function () { + avalon.vmodels.submissionList = null; + var vm = avalon.define({ + $id: "submissionList", + submissionList: [], + previousPage: 0, + nextPage: 0, + page: 1, + totalPage: 1, + results : { + 0: "Accepted", + 1: "Runtime Error", + 2: "Time Limit Exceeded", + 3: "Memory Limit Exceeded", + 4: "Compile Error", + 5: "Format Error", + 6: "Wrong Answer", + 7: "System Error", + 8: "Waiting" + }, + 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"; + } + }, + getPage: function (page_index) { + getPageData(page_index); + }, + + showSubmissionDetailPage: function (submissionId) { + + } + }); + + getPageData(1); + + function getPageData(page) { + var url = "/api/admin/submission/?paging=true&page=" + page + "&page_size=10&problem_id=" + avalon.vmodels.admin.problemId; + $.ajax({ + url: url, + dataType: "json", + method: "get", + success: function (data) { + if (!data.code) { + vm.submissionList = data.data.results; + vm.totalPage = data.data.total_page; + vm.previousPage = data.data.previous_page; + vm.nextPage = data.data.next_page; + vm.page = page; + } + else { + bsAlert(data.data); + } + } + }); + } + + + }); + avalon.scan(); +}); \ No newline at end of file