diff --git a/static/src/js/app/admin/contest/contestList.js b/static/src/js/app/admin/contest/contestList.js new file mode 100644 index 0000000..7eb47fa --- /dev/null +++ b/static/src/js/app/admin/contest/contestList.js @@ -0,0 +1,57 @@ +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; + } + }) + } + + 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; + vm.announcementList = data.data.results; + avalon.vmodels.contestListPager.totalPage = data.data.total_page; + } + else { + bsAlert(data.data); + } + } + }); + } + + }); + avalon.scan(); +}); \ No newline at end of file