Files
OnlineJudge/static/src/js/app/admin/problem/problem.js

67 lines
2.2 KiB
JavaScript

require(["jquery", "avalon", "csrfToken", "bsAlert", "pager"], function ($, avalon, csrfTokenHeader, bsAlert) {
avalon.ready(function () {
if(avalon.vmodels.problemList){
vm = avalon.vmodels.problemList;
}
else {
var vm = avalon.define({
$id: "problemList",
problemList: [],
keyword: "",
showVisibleOnly: false,
pager: {
getPage: function (page) {
getPage(page);
}
},
showEditProblemPage: function (problemId) {
avalon.vmodels.admin.problemId = problemId;
avalon.vmodels.admin.template_url = "template/problem/edit_problem.html";
},
showProblemSubmissionPage: function(problemId){
avalon.vmodels.admin.problemId = problemId;
avalon.vmodels.admin.template_url = "template/problem/submission_list.html";
},
search: function(){
getPage(1);
avalon.vmodels.problemPager.currentPage = 1;
}
});
vm.$watch("showVisibleOnly", function () {
getPage(1);
avalon.vmodels.problemPager.currentPage = 1;
});
}
function getPage(page) {
var url = "/api/admin/problem/?paging=true&page=" + page + "&page_size=10";
if (vm.keyword != "")
url += "&keyword=" + vm.keyword;
if (vm.showVisibleOnly)
url += "&visible=true";
$.ajax({
url: url,
dataType: "json",
method: "get",
success: function (data) {
if (!data.code) {
vm.problemList = data.data.results;
avalon.vmodels.problemPager.totalPage = data.data.total_page;
}
else {
bsAlert(data.data);
}
}
});
}
});
avalon.scan();
});