var mainWindow = { data: function () { return { 'courses': [], 'selectCourses': [], 'departments': [], 'selectDepartment': '', 'foundName': "", "user": "", 'token': "", 'is_print': false, } }, created() { var main = this window.fbAsyncInit = function () { FB.init({ appId: '', cookie: true, xfbml: true, version: 'v9.0' }); FB.AppEvents.logPageView(); main.getCourseTable() }; (function (d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) { return; } js = d.createElement(s); js.id = id; js.src = "https://connect.facebook.net/en_US/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); }, mounted() { var main = this axios .get("./output.json") .then(response => (main.courses = response.data)) .then(function () { for (var course of main.courses) { // console.log(course.name) if (main.departments.indexOf(course.department) == -1) { main.departments.push(course.department) } } }) .then(function () { main.departments.sort() main.selectDepartment = main.departments[15] }) // Collapse Navbar var navbarCollapse = function () { if ($("#mainNav").offset().top > 100) { $("#mainNav").addClass("navbar-shrink"); } else { $("#mainNav").removeClass("navbar-shrink"); } }; // Collapse now if page is not at top navbarCollapse(); // Collapse the navbar when page is scrolled $(window).scroll(navbarCollapse); }, methods: { 'login': function () { var main = this FB.login(function () { main.getCourseTable() }) }, 'logout': function () { var main = this FB.logout(function (response) { main.user = "" main.token = "" }); }, 'getCourseTable': function () { var main = this FB.getLoginStatus(function (response) { main.statusChangeCallback(response); }); }, 'statusChangeCallback': function (response) { if (response.status == "connected") { this.token = response.authResponse.accessToken var main = this FB.api('/me', function (response) { main.user = response }) fetch('https://api.snsd0805.com/courseTable?token=' + this.token) .then(function (response) { return response.json() }).then(function (jsonData) { console.log(jsonData) main.selectCourses = JSON.parse(jsonData['data']) }) .catch(function (err) { alert("錯誤: " + err) }) } }, 'saveCourseTable': function () { var main = this if (this.token != "") { fetch('https://api.snsd0805.com/courseTable', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ 'token': main.token, 'data': main.selectCourses }) }) .then(function (response) { return response.json() }) .then(function (response) { if (response.status == "saved") { alert("已儲存") } else { alert("錯誤") } }) .catch(function (err) { alert("錯誤: " + err) }) } else { this.login() } }, 'getTime': function (timeString) { ans = [] number = "" for (var i of timeString) { if (i >= "0" && i <= "9") { number = i } else if (i >= "a" && i <= "z") { ans.push(number + i) } else { ans.push(timeString) break } } return ans }, 'select': function (department) { this.selectDepartment = department }, 'founded': function (courseName) { this.foundName = courseName }, 'addCourse': function (course) { var time = this.getTime(course.time) for (var t of time) { this.selectCourses.push({ 'time': t, 'name': course.name, 'temp': false, 'number': course.number, 'class': course.class }) } }, 'removeCourse': function (course) { console.log("remove " + course.name) for (var i = this.selectCourses.length - 1; i >= 0; i--) { if (this.selectCourses[i].number === course.number && this.selectCourses[i].class === course.class) { this.selectCourses.splice(i, 1) } } }, 'saveTemp': function (course) { if (course == null) { } else { this.tempCourse = [] var time = this.getTime(course.time) for (var t of time) { this.selectCourses.push({ 'time': t, 'name': course.name, 'temp': true }) } } }, 'deleteTemp': function (course) { for (var i = this.selectCourses.length - 1; i >= 0; i--) { if (this.selectCourses[i].name == course.name && this.selectCourses[i].temp == true) { this.selectCourses.splice(i, 1) } } }, 'generatePic': function () { var main = this const doPrint = new Promise((resolve, reject) => { main.is_print = true; resolve(); }); doPrint .then(() =>{ html2canvas(document.getElementById('course-table-div')).then(function (canvas) { var a = document.createElement('a'); a.href = canvas.toDataURL("image/jpeg").replace("image/jpeg", "image/octet-stream"); a.download = '課表.jpg'; a.click(); }); }) .then(() => { main.is_print = false; }) }, 'share': function () { if (this.user != "") $('#share').modal('show'); else this.login() }, }, components: { 'course-table': courseTable, 'choose-department': chooseDepartment, 'course-anslist': coursesList }, template: `


課表


` }