blob: 282a5883d59bf72f87c2e1d9b8c92a5df29a3933 [file] [log] [blame]
scmmishra1778b592018-10-30 18:25:49 +05301import Vue from 'vue/dist/vue.js';
2import VueRouter from 'vue-router/dist/vue-router.js'
scmmishra6678f5b2018-11-02 20:50:55 +05303
scmmishra1778b592018-10-30 18:25:49 +05304import AcademyRoot from "./web-academy/AcademyRoot.vue";
5import AcademyHome from "./web-academy/pages/AcademyHome.vue";
6import AcademyProgramPage from "./web-academy/pages/AcademyProgramPage.vue";
7import AcademyCoursePage from "./web-academy/pages/AcademyCoursePage.vue";
8
9Vue.use(VueRouter)
10
scmmishra6678f5b2018-11-02 20:50:55 +053011
scmmishra1778b592018-10-30 18:25:49 +053012const routes = [
scmmishra84297fa2018-11-01 17:17:30 +053013 {name: 'home', path: '', component: AcademyHome},
14 {name: 'program', path: '/Program/:code', component: AcademyProgramPage, props: true},
15 {name: 'content', path: '/Program/:code/:course/:type/:content', component: AcademyCoursePage, props: true},
scmmishra1778b592018-10-30 18:25:49 +053016];
17
scmmishra6678f5b2018-11-02 20:50:55 +053018var store = {
19 debug: true,
20 state: {
21 completedCourses: new Set(),
scmmishrabcafe842018-11-03 14:48:42 +053022 enrolledPrograms: new Set(),
scmmishraa0546552018-11-03 19:33:04 +053023 enrolledCourses: new Set(),
scmmishra6678f5b2018-11-02 20:50:55 +053024 currentEnrollment: '',
scmmishrabcafe842018-11-03 14:48:42 +053025 student: '',
26 isLogin: false
scmmishra6678f5b2018-11-02 20:50:55 +053027 },
scmmishrabcafe842018-11-03 14:48:42 +053028
29 setCurrentEnrollment (enrollment) {
scmmishra6678f5b2018-11-02 20:50:55 +053030 if (this.debug) console.log('setCourseEnrollment triggered with', enrollment)
31 this.state.currentEnrollment = enrollment
32 },
scmmishrabcafe842018-11-03 14:48:42 +053033
34 getCurrentEnrollment () {
35 if (this.debug) console.log('getCourseEnrollment triggered')
36 return this.state.currentEnrollment
37 },
38
scmmishra6678f5b2018-11-02 20:50:55 +053039 addCompletedCourses (courseName){
40 if (this.debug) console.log('addCompletedCourses triggered with', courseName)
41 this.state.completedCourses.add(courseName)
42 },
scmmishrabcafe842018-11-03 14:48:42 +053043
scmmishra6678f5b2018-11-02 20:50:55 +053044 checkCourseCompletion (courseName){
45 return this.state.completedCourses.has(courseName)
46 },
scmmishrabcafe842018-11-03 14:48:42 +053047
48 checkProgramEnrollment (programName){
49 return this.state.enrolledPrograms.has(programName)
50 },
51
scmmishraa0546552018-11-03 19:33:04 +053052 updateEnrolledPrograms (){
53 if (this.debug) console.log('Updating enrolledPrograms')
54 frappe.call("erpnext.www.academy.get_program_enrollments").then( r => {
55 for(var ii=0; ii < r.message.length; ii++){
56 this.state.enrolledPrograms.add(r.message[ii])
57 }
58 })
59 if (this.debug) console.log('Updated State', this.state.enrolledPrograms)
60 },
61
62 updateEnrolledCourses (){
63 if (this.debug) console.log('Updating enrolledCourses')
64 frappe.call("erpnext.www.academy.get_course_enrollments").then( r => {
65 for(var ii=0; ii < r.message.length; ii++){
66 this.state.enrolledCourses.add(r.message[ii])
67 }
68 })
69 if (this.debug) console.log('Updated State', this.state.enrolledCourses)
70 },
71
scmmishrabcafe842018-11-03 14:48:42 +053072 updateCompletedCourses (){
scmmishra6678f5b2018-11-02 20:50:55 +053073 if (this.debug) console.log('Updating States')
scmmishrabcafe842018-11-03 14:48:42 +053074 frappe.call("erpnext.www.academy.get_completed_courses").then( r => {
scmmishra6678f5b2018-11-02 20:50:55 +053075 for(var ii=0; ii < r.message.length; ii++){
76 this.state.completedCourses.add(r.message[ii])
77 }
78 })
79 if (this.debug) console.log('Updated State', this.state.completedCourses)
scmmishrabcafe842018-11-03 14:48:42 +053080 },
81
82 checkLogin (){
83 if(frappe.session.user === "Guest"){
84 if (this.debug) console.log('No Session')
85 this.isLogin = false
86 }
87 else {
88 if (this.debug) console.log('Current User: ', frappe.session.user)
89 this.isLogin = true
90 }
91 return this.isLogin
92 },
93
94 updateState (){
95 this.updateCompletedCourses()
scmmishraa0546552018-11-03 19:33:04 +053096 this.updateEnrolledPrograms()
97 this.updateEnrolledCourses()
scmmishrabcafe842018-11-03 14:48:42 +053098 this.checkLogin()
99
100 },
scmmishra6678f5b2018-11-02 20:50:55 +0530101}
102
scmmishra1778b592018-10-30 18:25:49 +0530103const router = new VueRouter({
104 routes: routes,
105});
106
107frappe.ready(() => {
scmmishra84297fa2018-11-01 17:17:30 +0530108 window.v = new Vue({
scmmishra6678f5b2018-11-02 20:50:55 +0530109 el: "#academy",
scmmishra1778b592018-10-30 18:25:49 +0530110 router: router,
scmmishra6678f5b2018-11-02 20:50:55 +0530111 data: store,
scmmishra1778b592018-10-30 18:25:49 +0530112 template: "<academy-root/>",
scmmishra6678f5b2018-11-02 20:50:55 +0530113 components: { AcademyRoot },
114 created: function() {
scmmishrabcafe842018-11-03 14:48:42 +0530115 if(store.checkLogin()){
116 store.updateState()
117 }
scmmishra6678f5b2018-11-02 20:50:55 +0530118 }
scmmishra1778b592018-10-30 18:25:49 +0530119 });
120})