From d2515bf886dbf83d8eac25d74881c833aaaf1b32 Mon Sep 17 00:00:00 2001 From: esp Date: Wed, 26 Aug 2015 11:35:21 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=89=8D=E7=AB=AF-=E5=90=8E=E5=8F=B0]?= =?UTF-8?q?=E7=BB=8F=E8=BF=87=E6=B5=8B=E8=AF=95=E8=BF=98=E6=98=AF=E6=9C=89?= =?UTF-8?q?=E4=BA=9B=E9=97=AE=E9=A2=98(=E6=AF=94=E5=A6=82=E5=85=AC?= =?UTF-8?q?=E5=91=8A=E9=A1=B5=E9=9D=A2=E5=9C=A8=E9=87=8D=E5=A4=8D=E8=BD=BD?= =?UTF-8?q?=E5=85=A5=E5=90=8E=E4=BB=85=E6=98=BE=E7=A4=BA=E5=8F=AF=E8=A7=81?= =?UTF-8?q?=E7=9A=84ms-duplex-checked=E5=B0=B1=E5=A4=B1=E6=95=88=E4=BA=86,?= =?UTF-8?q?=E4=BD=86=E6=98=AF=E4=BB=85=E6=98=AF=E5=9C=A8=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=B6=E5=A4=B1=E6=95=88,=E4=BD=A0?= =?UTF-8?q?=E7=82=B9=E4=BB=96=E5=88=B0=E4=B9=9F=E8=BF=98=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?...)=E6=89=80=E4=BB=A5=E5=B9=B2=E8=84=86=E6=8A=8A=E5=90=8E?= =?UTF-8?q?=E5=8F=B0=E8=BF=99=E4=BA=9Bavalon=E9=83=BD=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E6=88=90=E4=B8=80=E6=A0=B7=E7=9A=84=E5=A4=84=E7=90=86=E4=BA=86?= =?UTF-8?q?[CI=20SKIP]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../js/app/admin/announcement/announcement.js | 221 +++++++++--------- static/src/js/app/admin/group/group.js | 84 +++---- static/src/js/app/admin/group/groupDetail.js | 97 ++++---- .../app/admin/group/joinGroupRequestList.js | 162 ++++--------- static/src/js/app/admin/problem/problem.js | 1 + .../js/app/admin/problem/submissionList.js | 98 ++++---- static/src/js/app/admin/user/userList.js | 6 +- 7 files changed, 313 insertions(+), 356 deletions(-) diff --git a/static/src/js/app/admin/announcement/announcement.js b/static/src/js/app/admin/announcement/announcement.js index 7dd2051b..e5585858 100644 --- a/static/src/js/app/admin/announcement/announcement.js +++ b/static/src/js/app/admin/announcement/announcement.js @@ -1,127 +1,132 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "validator"], function ($, avalon, csrfTokenHeader, bsAlert, editor) { avalon.ready(function () { - avalon.vmodels.announcement = null; var createAnnouncementEditor = editor("#create-announcement-editor"); var editAnnouncementEditor = editor("#edit-announcement-editor"); + if (avalon.vmodels.announcement){ + var vm = avalon.vmodels.announcement; + announcementList = []; + } + else { - var vm = avalon.define({ - $id: "announcement", - //通用变量 - announcementList: [], // 公告列表数据项 - previousPage: 0, // 之前的页数 - nextPage: 0, // 之后的页数 - page: 1, // 当前页数 - editingAnnouncementId: 0, // 正在编辑的公告的ID, 为零说明未在编辑 - totalPage: 1, // 总页数 - showVisibleOnly: false, //仅显示可见公告 - // 编辑 - newTitle: "", - announcementVisible: 0, - showGlobalViewRadio: true, - isGlobal: true, - allGroups: [], - getState: function (el) { //获取公告当前状态,显示 - if (el.visible) - return "可见"; - else - return "隐藏"; - }, - getNext: function () { - if (!vm.nextPage) - return; - getPageData(vm.page + 1); - }, - getPrevious: function () { - if (!vm.previousPage) - return; - getPageData(vm.page - 1); - }, - getBtnClass: function (btnType) { - if (btnType == "next") { - return vm.nextPage ? "btn btn-primary" : "btn btn-primary disabled"; - } - else { - return vm.previousPage ? "btn btn-primary" : "btn btn-primary disabled"; - } + var vm = avalon.define({ + $id: "announcement", + //通用变量 + announcementList: [], // 公告列表数据项 + previousPage: 0, // 之前的页数 + nextPage: 0, // 之后的页数 + page: 1, // 当前页数 + editingAnnouncementId: 0, // 正在编辑的公告的ID, 为零说明未在编辑 + totalPage: 1, // 总页数 + showVisibleOnly: false, //仅显示可见公告 + // 编辑 + newTitle: "", + announcementVisible: 0, + showGlobalViewRadio: true, + isGlobal: true, + allGroups: [], + getState: function (el) { //获取公告当前状态,显示 + if (el.visible) + return "可见"; + else + return "隐藏"; + }, + getNext: function () { + if (!vm.nextPage) + return; + getPageData(vm.page + 1); + }, + getPrevious: function () { + if (!vm.previousPage) + return; + getPageData(vm.page - 1); + }, + getBtnClass: function (btnType) { + if (btnType == "next") { + return vm.nextPage ? "btn btn-primary" : "btn btn-primary disabled"; + } + else { + return vm.previousPage ? "btn btn-primary" : "btn btn-primary disabled"; + } - }, - editAnnouncement: function (announcement) { - vm.newTitle = announcement.title; - editAnnouncementEditor.setValue(announcement.content); - vm.announcementVisible = announcement.visible; - if (vm.editingAnnouncementId == announcement.id) + }, + editAnnouncement: function (announcement) { + vm.newTitle = announcement.title; + editAnnouncementEditor.setValue(announcement.content); + vm.announcementVisible = announcement.visible; + if (vm.editingAnnouncementId == announcement.id) + vm.editingAnnouncementId = 0; + else + vm.editingAnnouncementId = announcement.id; + vm.isGlobal = announcement.is_global; + for (var i = 0; i < announcement.groups.length; i++) { + for (var j = 0; j < vm.allGroups.length; j++) { + if (announcement.groups[i] == vm.allGroups[j].id) { + vm.allGroups[j].isSelected = true; + } + } + } + editAnnouncementEditor.focus(); + }, + cancelEdit: function () { vm.editingAnnouncementId = 0; - else - vm.editingAnnouncementId = announcement.id; - vm.isGlobal = announcement.is_global; - for (var i = 0; i < announcement.groups.length; i++) { - for (var j = 0; j < vm.allGroups.length; j++) { - if (announcement.groups[i] == vm.allGroups[j].id) { - vm.allGroups[j].isSelected = true; + }, + submitChange: function () { + var title = vm.newTitle; + var content = editAnnouncementEditor.getValue(); + + if (content == "" || title == "") { + bsAlert("标题和内容都不能为空"); + return false; + } + + var selectedGroups = []; + if (!vm.isGlobal) { + for (var i = 0; i < vm.allGroups.length; i++) { + if (vm.allGroups[i].isSelected) { + selectedGroups.push(vm.allGroups[i].id); + } } } - } - editAnnouncementEditor.focus(); - }, - cancelEdit: function () { - vm.editingAnnouncementId = 0; - }, - submitChange: function () { - var title = vm.newTitle; - var content = editAnnouncementEditor.getValue(); - if (content == "" || title == "") { - bsAlert("标题和内容都不能为空"); - return false; - } - - var selectedGroups = []; - if (!vm.isGlobal) { - for (var i = 0; i < vm.allGroups.length; i++) { - if (vm.allGroups[i].isSelected) { - selectedGroups.push(vm.allGroups[i].id); - } + if (!vm.isGlobal && !selectedGroups.length) { + bsAlert("请至少选择一个小组"); + return false; } - } - if (!vm.isGlobal && !selectedGroups.length) { - bsAlert("请至少选择一个小组"); - return false; - } - - $.ajax({ - beforeSend: csrfTokenHeader, - url: "/api/admin/announcement/", - contentType: "application/json", - dataType: "json", - method: "put", - data: JSON.stringify({ - id: vm.editingAnnouncementId, - title: title, - content: content, - visible: vm.announcementVisible, - is_global: vm.isGlobal, - groups: selectedGroups - }), - success: function (data) { - if (!data.code) { - bsAlert("修改成功"); - vm.editingAnnouncementId = 0; - getPageData(1); + $.ajax({ + beforeSend: csrfTokenHeader, + url: "/api/admin/announcement/", + contentType: "application/json", + dataType: "json", + method: "put", + data: JSON.stringify({ + id: vm.editingAnnouncementId, + title: title, + content: content, + visible: vm.announcementVisible, + is_global: vm.isGlobal, + groups: selectedGroups + }), + success: function (data) { + if (!data.code) { + bsAlert("修改成功"); + vm.editingAnnouncementId = 0; + getPageData(1); + } + else { + bsAlert(data.data); + } } - else { - bsAlert(data.data); - } - } - }); + }); - } - }); - vm.$watch("showVisibleOnly", function () { - getPageData(1); - }); + } + }); + vm.$watch("showVisibleOnly", function () { + getPageData(1); + }); + } getPageData(1); diff --git a/static/src/js/app/admin/group/group.js b/static/src/js/app/admin/group/group.js index 470f9caf..7327dbaf 100644 --- a/static/src/js/app/admin/group/group.js +++ b/static/src/js/app/admin/group/group.js @@ -1,47 +1,53 @@ require(["jquery", "avalon", "csrfToken", "bsAlert"], function ($, avalon, csrfTokenHeader, bsAlert) { - avalon.ready(function () { - avalon.vmodels.group = null; - var vm = avalon.define({ - $id: "group", - //通用变量 - groupList: [], // 用户列表数据项 - previousPage: 0, // 之前的页数 - nextPage: 0, // 之后的页数 - page: 1, // 当前页数 - totalPage: 1, // 总页数 - keyword: "", + //avalon.vmodels.group = null; + if (avalon.vmodels.group) { + var vm = avalon.vmodels.group; + } + else { - getNext: function () { - if (!vm.nextPage) - return; - getPageData(vm.page + 1); - }, - getPrevious: function () { - if (!vm.previousPage) - return; - getPageData(vm.page - 1); - }, - getBtnClass: function (btnType) { - if (btnType == "next") { - return vm.nextPage ? "btn btn-primary" : "btn btn-primary disabled"; - } - else { - return vm.previousPage ? "btn btn-primary" : "btn btn-primary disabled"; - } + var vm = avalon.define({ + $id: "group", + //通用变量 + groupList: [], // 用户列表数据项 + 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 (btnType) { + if (btnType == "next") { + return vm.nextPage ? "btn btn-primary" : "btn btn-primary disabled"; + } + else { + return vm.previousPage ? "btn btn-primary" : "btn btn-primary disabled"; + } + + }, + search: function(){ + getPageData(1); + }, + getGroupSettingString: function (setting) { + return {0: "允许任何人加入", 1: "提交请求后管理员审核", 2: "不允许任何人加入"}[setting] + }, + showGroupDetailPage: function (groupId) { + vm.$fire("up!showGroupDetailPage", groupId); + } + }); + } - }, - search: function(){ - getPageData(1); - }, - getGroupSettingString: function (setting) { - return {0: "允许任何人加入", 1: "提交请求后管理员审核", 2: "不允许任何人加入"}[setting] - }, - showGroupDetailPage: function (groupId) { - vm.$fire("up!showGroupDetailPage", groupId); - } - }); getPageData(1); function getPageData(page) { diff --git a/static/src/js/app/admin/group/groupDetail.js b/static/src/js/app/admin/group/groupDetail.js index cddc755d..c06f9ce0 100644 --- a/static/src/js/app/admin/group/groupDetail.js +++ b/static/src/js/app/admin/group/groupDetail.js @@ -3,55 +3,60 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "validator"], function ($, // avalon:定义模式 group_list avalon.ready(function () { - avalon.vmodels.groupDetail = null; - var vm = avalon.define({ - $id: "groupDetail", - //通用变量 - memberList: [], - previousPage: 0, - nextPage: 0, - page: 1, - totalPage: 1, - name: "", - description: "", - checkedSetting: "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"; - } - }, + if (avalon.vmodels.groupDetail) { + var vm = avalon.vmodels.groupDetail; + } + else { + var vm = avalon.define({ + $id: "groupDetail", + //通用变量 + memberList: [], + previousPage: 0, + nextPage: 0, + page: 1, + totalPage: 1, + name: "", + description: "", + checkedSetting: "0", - removeMember: function (relation) { - $.ajax({ - beforeSend: csrfTokenHeader, - url: "/api/admin/group_member/", - method: "put", - data: JSON.stringify({group_id: relation.group, members: [relation.user.id]}), - contentType: "application/json", - success: function (data) { - vm.memberList.remove(relation); - bsAlert(data.data); + 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"; } - }) - }, - showGroupListPage: function () { - vm.$fire("up!showGroupListPage"); - } - }); + else { + return vm.previousPage ? "btn btn-primary" : "btn btn-primary disabled"; + } + }, + + removeMember: function (relation) { + $.ajax({ + beforeSend: csrfTokenHeader, + url: "/api/admin/group_member/", + method: "put", + data: JSON.stringify({group_id: relation.group, members: [relation.user.id]}), + contentType: "application/json", + success: function (data) { + vm.memberList.remove(relation); + bsAlert(data.data); + } + }) + }, + showGroupListPage: function () { + vm.$fire("up!showGroupListPage"); + } + }); + } avalon.scan(); getPageData(1); diff --git a/static/src/js/app/admin/group/joinGroupRequestList.js b/static/src/js/app/admin/group/joinGroupRequestList.js index 8b9859ad..b178a801 100644 --- a/static/src/js/app/admin/group/joinGroupRequestList.js +++ b/static/src/js/app/admin/group/joinGroupRequestList.js @@ -2,50 +2,56 @@ require(["jquery", "avalon", "csrfToken", "bsAlert"], function ($, avalon, csrfT // avalon:定义模式 group_list avalon.ready(function () { - avalon.vmodels.requestList = null; - var vm = avalon.define({ - $id: "requestList", - //通用变量 - requestList: [], // 列表数据项 - previousPage: 0, // 之前的页数 - nextPage: 0, // 之后的页数 - page: 1, // 当前页数 - totalPage: 1, // 总页数 - 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); - }, - processRequest: function(request, status){ - $.ajax({ - beforeSend: csrfTokenHeader, - url: "/api/admin/join_group_request/", - method: "put", - data: {request_id: request.id, status: status}, - success: function(data){ - vm.requestList.remove(request); - bsAlert(data.data); + if (avalon.vmodels.requestList) { + var vm = avalon.vmodels.requestList; + } + else { + + var vm = avalon.define({ + $id: "requestList", + //通用变量 + requestList: [], // 列表数据项 + previousPage: 0, // 之前的页数 + nextPage: 0, // 之后的页数 + page: 1, // 当前页数 + totalPage: 1, // 总页数 + + 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); + }, + processRequest: function(request, status){ + $.ajax({ + beforeSend: csrfTokenHeader, + url: "/api/admin/join_group_request/", + method: "put", + data: {request_id: request.id, status: status}, + success: function(data){ + vm.requestList.remove(request); + bsAlert(data.data); + } + }) + } + }); + } avalon.scan(); getPageData(1); @@ -72,78 +78,6 @@ require(["jquery", "avalon", "csrfToken", "bsAlert"], function ($, avalon, csrfT }); } - /*$("#edit_user-form") - .formValidation({ - framework: "bootstrap", - fields: { - username: { - validators: { - notEmpty: { - message: "请填写用户名" - }, - stringLength: { - min: 3, - max: 30, - message: '用户名长度必须在3到30位之间' - } - } - }, - real_name: { - validators: { - notEmpty: { - message: "请填写真实姓名" - } - } - }, - email: { - validators: { - notEmpty: { - message: "请填写电子邮箱邮箱地址" - }, - emailAddress: { - message: "请填写有效的邮箱地址" - } - } - }, - password: { - validators: { - stringLength: { - min: 6, - max: 30, - message: '密码长度必须在6到30位之间' - } - } - } - } - } - ).on('success.form.fv', function (e) { - e.preventDefault(); - var data = { - username: vm.username, - real_name: vm.real_name, - email: vm.email, - id: vm.id, - admin_type: vm.admin_type - }; - if ($("#password").val() !== "") - data.password = $("#password").val(); - $.ajax({ - beforeSend: csrfHeader, - url: "/api/admin/user/", - data: data, - dataType: "json", - method: "put", - success: function (data) { - if (!data.code) { - bsAlert("提交成功!"); - getPageData(1); - $("#password").val(""); - } else { - bsAlert(data.data); - } - } - }) - });*/ }); }); \ No newline at end of file diff --git a/static/src/js/app/admin/problem/problem.js b/static/src/js/app/admin/problem/problem.js index 2632ebf5..c11d7c70 100644 --- a/static/src/js/app/admin/problem/problem.js +++ b/static/src/js/app/admin/problem/problem.js @@ -3,6 +3,7 @@ require(["jquery", "avalon", "csrfToken", "bsAlert"], function ($, avalon, csrfT avalon.ready(function () { if(avalon.vmodels.problemList){ vm = avalon.vmodels.problemList; + problemList = []; } else { var vm = avalon.define({ diff --git a/static/src/js/app/admin/problem/submissionList.js b/static/src/js/app/admin/problem/submissionList.js index 405cffa7..1af2e6ce 100644 --- a/static/src/js/app/admin/problem/submissionList.js +++ b/static/src/js/app/admin/problem/submissionList.js @@ -1,53 +1,59 @@ require(["jquery", "avalon", "csrfToken", "bsAlert"], 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) { - }, - showProblemListPage: function(){ - vm.$fire("up!showProblemListPage"); - } - }); + if (avalon.vmodels.submissionList){ + var vm = avalon.vmodels.submissionList; + } + else { + + 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) { + + }, + showProblemListPage: function(){ + vm.$fire("up!showProblemListPage"); + } + }); + } getPageData(1); diff --git a/static/src/js/app/admin/user/userList.js b/static/src/js/app/admin/user/userList.js index 3f80c89d..d2949f05 100644 --- a/static/src/js/app/admin/user/userList.js +++ b/static/src/js/app/admin/user/userList.js @@ -3,12 +3,12 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "validator"], function ($, // avalon:定义模式 userList avalon.ready(function () { - //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; + userList = []; //previousPage= 0; nextPage= 0; page = 1; + //editingUserId= 0; totalPage = 1; keyword= ""; showAdminOnly= false; //user editor fields username= ""; realName= ""; email= ""; adminType= 0; id= 0; }