147 lines
5.5 KiB
JavaScript
147 lines
5.5 KiB
JavaScript
require(["jquery", "avalon", "editor", "uploader", "bsAlert", "csrfToken", "datetimePicker",
|
|
"validator"],
|
|
function ($, avalon, editor, uploader, bsAlert, csrfTokenHeader) {
|
|
|
|
$("#add-contest-form").validator().on('submit', function (e) {
|
|
if (!e.isDefaultPrevented()) {
|
|
e.preventDefault();
|
|
var ajaxData = {
|
|
title: vm.title,
|
|
description: vm.description,
|
|
mode: vm.mode,
|
|
contest_type: 0,
|
|
real_time_rank: vm.realTimeRank,
|
|
show_user_submission: vm.showSubmission,
|
|
start_time: vm.startTime,
|
|
end_time: vm.endTime,
|
|
visible: 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);
|
|
}
|
|
}
|
|
ajaxData.groups = selectedGroups;
|
|
}
|
|
else {
|
|
if (vm.password) {
|
|
ajaxData.password = vm.password;
|
|
ajaxData.contest_type = 2;
|
|
}
|
|
else
|
|
ajaxData.contest_type = 1;
|
|
}
|
|
if (!vm.isGlobal && !selectedGroups.length) {
|
|
bsAlert("你没有选择参赛用户!");
|
|
return false;
|
|
}
|
|
if (vm.editDescription == "") {
|
|
bsAlert("比赛描述不能为空!");
|
|
return false;
|
|
}
|
|
$.ajax({ // Add contest
|
|
beforeSend: csrfTokenHeader,
|
|
url: "/api/admin/contest/",
|
|
dataType: "json",
|
|
contentType: "application/json;charset=UTF-8",
|
|
data: JSON.stringify(ajaxData),
|
|
method: "post",
|
|
success: function (data) {
|
|
if (!data.code) {
|
|
bsAlert("添加成功!将转到比赛列表页以便为比赛添加问题(注意比赛当前状态为:隐藏)");
|
|
vm.title = "";
|
|
vm.description = "";
|
|
vm.startTime = "";
|
|
vm.endTime = "";
|
|
vm.password = "";
|
|
vm.mode = "0";
|
|
vm.showSubmission = true;
|
|
location.hash = "#contest/contest_list";
|
|
vm.isGlobal = true;
|
|
vm.allGroups = [];
|
|
vm.showGlobalViewRadio = true;
|
|
}
|
|
else {
|
|
bsAlert(data.data);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
return false;
|
|
});
|
|
|
|
editor("#editor");
|
|
if (avalon.vmodels.add_contest)
|
|
var vm = avalon.vmodels.add_contest;
|
|
else
|
|
var vm = avalon.define({
|
|
$id: "add_contest",
|
|
title: "",
|
|
description: "",
|
|
startTime: "",
|
|
endTime: "",
|
|
password: "",
|
|
mode: "0",
|
|
showSubmission: true,
|
|
isGlobal: true,
|
|
allGroups: [],
|
|
showGlobalViewRadio: true,
|
|
realTimeRank: true
|
|
});
|
|
|
|
$.ajax({
|
|
url: "/api/user/",
|
|
method: "get",
|
|
dataType: "json",
|
|
success: function (data) {
|
|
if (!data.code) {
|
|
var admin_type = data.data.admin_type;
|
|
if (data.data.admin_type == 1) {
|
|
vm.isGlobal = false;
|
|
vm.showGlobalViewRadio = false;
|
|
|
|
}
|
|
}
|
|
$.ajax({
|
|
url: "/api/admin/group/",
|
|
method: "get",
|
|
dataType: "json",
|
|
success: function (data) {
|
|
if (!data.code) {
|
|
if (!data.data.length) {
|
|
if (admin_type != 2)
|
|
bsAlert("您的用户权限只能创建小组内比赛,但是您还没有创建过小组");
|
|
return;
|
|
}
|
|
for (var i = 0; i < data.data.length; i++) {
|
|
var item = data.data[i];
|
|
item["isSelected"] = false;
|
|
vm.allGroups.push(item);
|
|
}
|
|
}
|
|
else {
|
|
bsAlert(data.data);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
avalon.scan();
|
|
|
|
$("#contest_start_time").datetimepicker({
|
|
format: "yyyy-mm-dd hh:ii",
|
|
minuteStep: 5,
|
|
weekStart: 1,
|
|
language: "zh-CN"
|
|
});
|
|
$("#contest_end_time").datetimepicker({
|
|
format: "yyyy-mm-dd hh:ii",
|
|
minuteStep: 5,
|
|
weekStart: 1,
|
|
language: "zh-CN"
|
|
});
|
|
}); |