var mainWindow = { data: function(){ return { 'courses': [], 'selectCourses': [], 'departments': [], 'selectDepartment': '', 'foundName': "", "user": "", 'token': "" } }, 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] }) }, 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.name}) 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 }) } }, 'removeCourse': function(course){ console.log("remove "+course) for(var i=this.selectCourses.length-1;i>=0;i--){ if(this.selectCourses[i].name == course){ 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) } } }, }, components: { 'course-table': courseTable, 'choose-department': chooseDepartment, 'course-anslist': coursesList }, template: `