NCNU_Course/js/index.vue

206 lines
6.8 KiB
Vue

var vm = new Vue({
el: "#table",
data: {
'courses': [],
'selectCourses': [],
'departments': [],
'selectDepartment': '',
'foundName': "",
'token': ""
},
created() {
window.fbAsyncInit = function() {
FB.init({
appId : '',
cookie : true,
xfbml : true,
version : 'v9.0'
});
FB.AppEvents.logPageView();
vm.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() {
axios
.get("./output.json")
.then(response => (vm.courses = response.data))
.then(function(){
for(var course of vm.courses){
// console.log(course.name)
if(vm.departments.indexOf(course.department)==-1){
vm.departments.push(course.department)
}
}
})
.then(function(){
vm.departments.sort()
vm.selectDepartment = vm.departments[15]
})
},
methods: {
'getCourseTable': function(){
FB.getLoginStatus(function(response) {
vm.statusChangeCallback(response);
});
},
'statusChangeCallback': function(response){
if(response.status == "connected"){
this.token = response.authResponse.accessToken
fetch('https://api.snsd0805.com/courseTable?token='+this.token)
.then(function(response){
return response.json()
}).then(function(jsonData){
console.log(jsonData)
})
.catch(function(err){
alert("錯誤: "+err)
})
}else{
}
},
'saveCourseTable': function(){
if(this.token!=""){
fetch('https://api.snsd0805.com/courseTable',{
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
'token': vm.token,
'data': vm.selectCourses
})
})
.then(function(response){
return response.json()
})
.then(function(response){
if(response.status=="saved"){
alert("已儲存")
}else{
alert("錯誤")
}
})
.catch(function(err){
alert("錯誤: "+err)
})
}else{
FB.login(function(response){
vm.getCourseTable()
})
}
},
'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,
}
})
// 'update': function(){
// this.tableBody = ""
// for(var hour=8;hour<=21;hour++){
// // console.log(hour)
// symbolIndex = (hour<12)?(hour-8):(hour-9)
// this.tableBody += "<tr>"
// if(hour==12){ //處理中午時段
// this.tableBody += "<th style='text-align: center;' scope='row'>"+hour+"~"+(hour+1)+"<br>z</th>"
// this.tableBody += "<td style='text-align: center; background-color: #1abc9c;' colspan='5'>中午休息時間</td>"
// continue
// }else{
// this.tableBody += "<th style='text-align: center;' scope='row'>"+hour+"~"+(hour+1)+"<br>"+String.fromCharCode(97+symbolIndex)+"</th>"
// }
// for(var week=1;week<=5;week++){
// this.tableBody += "<td>"
// // console.log(symbolIndex)
// var course = this.exist(week+String.fromCharCode(97+symbolIndex))
// if(course){
// this.tableBody += "<div style='border: 5px #1abc9c solid; text-align: center;'>"
// // console.log(week+String.fromCharCode(97+(hour-8)))
// this.tableBody += course.name+' <button type="button" v-on:click=\"$emit(\'remove\', course)\" class="btn btn-danger btn-sm">刪</button>'
// }
// this.tableBody += "</td>"
// }
// this.tableBody += "</tr>"
// }
// this.tableBody += "</tbody>"
// }