Files
OnlineJudge/static/src/js/app/admin/contest/contestList.js

64 lines
2.1 KiB
JavaScript

require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "datetimePicker", "validator", "pager"], function ($, avalon, csrfTokenHeader, bsAlert, editor) {
avalon.ready(function () {
if (avalon.vmodels.contestList) {
var vm = avalon.vmodels.contestList;
vm.contestList = [];
}
else {
var vm = avalon.define({
$id: "contestList",
contestList: [],
keyword: "",
showVisibleOnly: false,
pager: {
getPage: function(page){
getPage(page);
}
},
search: function () {
getPage(1);
avalon.vmodels.contestListPager.currentPage = 1;
},
editContest: function(contestId){
avalon.vmodels.admin.contestId = contestId;
avalon.vmodels.admin.template_url = "template/contest/edit_contest.html";
},
showContestProblems: function(contestId){
// todo
}
})
}
vm.$watch("showVisibleOnly", function () {
getPage(1);
avalon.vmodels.contestListPager.currentPage = 1;
});
function getPage(page) {
var url = "/api/admin/contest/?paging=true&page=" + page + "&page_size=20";
if (vm.showVisibleOnly)
url += "&visible=true";
if (vm.keyword != "")
url += "&keyword=" + vm.keyword;
$.ajax({
url: url,
dataType: "json",
method: "get",
success: function (data) {
if (!data.code) {
vm.contestList = data.data.results;
avalon.vmodels.contestListPager.totalPage = data.data.total_page;
}
else {
bsAlert(data.data);
}
}
});
}
});
avalon.scan();
});