Commit 02a8418782ef936e3441a92c3d30170af716bcfe

Authored by Amber Dev
1 parent bdcd68fbce

ccommented token

src/Services/http.js
1 import axios from 'axios' 1 import axios from 'axios'
2 import store from '@/store/store' 2 import store from '@/store/store'
3 import Vue from 'vue' 3 import Vue from 'vue'
4 import { vm1 } from "@/main.js" 4 import { vm1 } from "@/main.js"
5 5
6 const baseDomain = "https://api-dashboard.intrack.in/v1"; 6 const baseDomain = "https://api-dashboard.intrack.in/v1";
7 7
8 const baseURL = `${baseDomain}`; 8 const baseURL = `${baseDomain}`;
9 // var token = "" 9 // var token = ""
10 // if (store.state.role === "ADMIN") { 10 // if (store.state.role === "ADMIN") {
11 // token = `${store.state.token}` 11 // token = `${store.state.token}`
12 // } else if (store.state.schoolRole === "SUPERADMIN") { 12 // } else if (store.state.schoolRole === "SUPERADMIN") {
13 // token = `${store.state.schoolToken}` 13 // token = `${store.state.schoolToken}`
14 // } 14 // }
15 15
16 // console.log("role",`${store.state.schoolRole}`); 16 // console.log("role",`${store.state.schoolRole}`);
17 // console.log("token",`${store.state.schoolToken}`); 17 // console.log("token",`${store.state.schoolToken}`);
18 18
19 export default () => { 19 export default () => {
20 // return axios.create({ 20 // return axios.create({
21 // // baseURL: 'http://192.168.2.221:3002/v1', 21 // // baseURL: 'http://192.168.2.221:3002/v1',
22 // baseURL, 22 // baseURL,
23 // headers: { 23 // headers: {
24 // Authorization: `Bearer ${store.state.token}` 24 // Authorization: `Bearer ${store.state.token}`
25 // } 25 // }
26 // }) 26 // })
27 let instance = axios.create({ 27 let instance = axios.create({
28 // LIVE 28 // LIVE
29 //baseURL: 'https://annadata.patanjaliayurved.org/api', 29 //baseURL: 'https://annadata.patanjaliayurved.org/api',
30 // DEVELOPMENT 30 // DEVELOPMENT
31 baseURL: baseURL, 31 baseURL: baseURL,
32 32
33 headers: { 33 headers: {
34 Authorization: `Bearer ${store.state.token}`, 34 Authorization: `Bearer ${store.state.token}`,
35 // 'Access-Control-Allow-Origin': '*' 35 // 'Access-Control-Allow-Origin': '*'
36 36
37 } 37 }
38 }) 38 })
39 39
40 instance.interceptors.request.use((config) => { 40 instance.interceptors.request.use((config) => {
41 // Do something before request is sent 41 // Do something before request is sent
42 42
43 return config 43 return config
44 }, error => { 44 }, error => {
45 return Promise.reject(error) 45 return Promise.reject(error)
46 }) 46 })
47 instance.interceptors.response.use((response) => { 47 instance.interceptors.response.use((response) => {
48 // do something with the response data 48 // do something with the response data
49 49
50 50
51 return response; 51 return response;
52 }, error => { 52 }, error => {
53 // handle the response error 53 // handle the response error
54 console.log("error in interceptor - ", error.response.status) 54 console.log("error in interceptor - ", error.response.status)
55 var customError 55 var customError
56 const errorNo = error.response.status 56 const errorNo = error.response.status
57 57
58 switch (errorNo) { 58 switch (errorNo) {
59 case 401: 59 case 401:
60 customError = "Session expired" 60 customError = "Session expired"
61 console.log("what is this - ", vm1)
62 vm1.$store.dispatch("setToken", null); 61 vm1.$store.dispatch("setToken", null);
63 vm1.$router.replace({ path: "/" }); 62 vm1.$router.replace({ path: "/" });
64
65 vm1.$store.dispatch("Id", null); 63 vm1.$store.dispatch("Id", null);
66 64
67 break; 65 break;
68 } 66 }
69 67
70 return Promise.reject(error); 68 return Promise.reject(error);
71 }) 69 })
72 // response parse 70 // response parse
73 71
74 return instance; 72 return instance;
75 } 73 }
src/pages/Dashboard/dashboard.vue
1 <template> 1 <template>
2 <v-app id="pages-dasboard"> 2 <v-app id="pages-dasboard">
3 <!-- ****** VIEW PROFIL NOTICE BOARD ****** --> 3 <!-- ****** VIEW PROFIL NOTICE BOARD ****** -->
4 <!-- <v-dialog v-model="dialogNotice" max-width="940px" scrollable> 4 <!-- <v-dialog v-model="dialogNotice" max-width="940px" scrollable>
5 <v-card> 5 <v-card>
6 <v-toolbar color="grey lighten-2" flat> 6 <v-toolbar color="grey lighten-2" flat>
7 <v-spacer></v-spacer> 7 <v-spacer></v-spacer>
8 <v-toolbar-title> 8 <v-toolbar-title>
9 <h3>Notice Board</h3> 9 <h3>Notice Board</h3>
10 </v-toolbar-title> 10 </v-toolbar-title>
11 <v-spacer></v-spacer> 11 <v-spacer></v-spacer>
12 <v-icon @click="closeNotice">close</v-icon> 12 <v-icon @click="closeNotice">close</v-icon>
13 </v-toolbar> 13 </v-toolbar>
14 <v-card-text> 14 <v-card-text>
15 <v-layout> 15 <v-layout>
16 <v-flex align-center justify-center layout text-xs-center class="mt-2"> 16 <v-flex align-center justify-center layout text-xs-center class="mt-2">
17 <img src="/static/icon/user.png" width="70px" v-if="!notice.eventImageUrl" /> 17 <img src="/static/icon/user.png" width="70px" v-if="!notice.eventImageUrl" />
18 <img :src="notice.eventImageUrl" width="280px" v-else-if="notice.eventImageUrl" /> 18 <img :src="notice.eventImageUrl" width="280px" v-else-if="notice.eventImageUrl" />
19 </v-flex> 19 </v-flex>
20 </v-layout> 20 </v-layout>
21 <v-container grid-list-md> 21 <v-container grid-list-md>
22 <v-layout wrap> 22 <v-layout wrap>
23 <v-flex> 23 <v-flex>
24 <v-layout> 24 <v-layout>
25 <v-flex xs5 sm6> 25 <v-flex xs5 sm6>
26 <h5 class="right my-1"> 26 <h5 class="right my-1">
27 <b>Title:</b> 27 <b>Title:</b>
28 </h5> 28 </h5>
29 </v-flex> 29 </v-flex>
30 <v-flex sm6 xs8> 30 <v-flex sm6 xs8>
31 <h5 class="my-1">{{ notice.title }}</h5> 31 <h5 class="my-1">{{ notice.title }}</h5>
32 </v-flex> 32 </v-flex>
33 </v-layout> 33 </v-layout>
34 <v-layout> 34 <v-layout>
35 <v-flex xs5 sm6> 35 <v-flex xs5 sm6>
36 <h5 class="right my-1"> 36 <h5 class="right my-1">
37 <b>Description:</b> 37 <b>Description:</b>
38 </h5> 38 </h5>
39 </v-flex> 39 </v-flex>
40 <v-flex sm6 xs8> 40 <v-flex sm6 xs8>
41 <h5 class="my-1">{{ notice.description }}</h5> 41 <h5 class="my-1">{{ notice.description }}</h5>
42 </v-flex> 42 </v-flex>
43 </v-layout> 43 </v-layout>
44 </v-flex> 44 </v-flex>
45 </v-layout> 45 </v-layout>
46 </v-container> 46 </v-container>
47 </v-card-text> 47 </v-card-text>
48 </v-card> 48 </v-card>
49 </v-dialog>--> 49 </v-dialog>-->
50 <!-- <v-container fluid grid-list-xl> --> 50 <!-- <v-container fluid grid-list-xl> -->
51 51
52 <!-- LOADER --> 52 <!-- LOADER -->
53 <div class="loader" v-if="showLoader"> 53 <div class="loader" v-if="showLoader">
54 <v-progress-circular indeterminate color="white"></v-progress-circular> 54 <v-progress-circular indeterminate color="white"></v-progress-circular>
55 </div> 55 </div>
56 56
57 <!-- SNACKBAR --> 57 <!-- SNACKBAR -->
58 <v-snackbar 58 <v-snackbar
59 :timeout="timeout" 59 :timeout="timeout"
60 :top="y === 'top'" 60 :top="y === 'top'"
61 :right="x === 'right'" 61 :right="x === 'right'"
62 :vertical="mode === 'vertical'" 62 :vertical="mode === 'vertical'"
63 v-model="snackbar" 63 v-model="snackbar"
64 :color="snackbarColor" 64 :color="snackbarColor"
65 > 65 >
66 {{ text }} 66 {{ text }}
67 <v-spacer></v-spacer> 67 <v-spacer></v-spacer>
68 <v-btn flat text @click="snackbar = false">X</v-btn> 68 <v-btn flat text @click="snackbar = false">X</v-btn>
69 </v-snackbar> 69 </v-snackbar>
70 70
71 <!-- DIALOG BOX EVENT DETAILS --> 71 <!-- DIALOG BOX EVENT DETAILS -->
72 <v-dialog v-model="viewEventDetails" max-width="500"> 72 <v-dialog v-model="viewEventDetails" max-width="500">
73 <v-card flat class="card-style pa-2" dark> 73 <v-card flat class="card-style pa-2" dark>
74 <!-- TITLE --> 74 <!-- TITLE -->
75 <v-layout> 75 <v-layout>
76 <v-layout> 76 <v-layout>
77 <v-flex xs12> 77 <v-flex xs12>
78 <label class="title text-xs-center">{{particularEvent.title}}</label> 78 <label class="title text-xs-center">{{particularEvent.title}}</label>
79 <v-icon size="24" class="right" @click="viewEventDetails = false">cancel</v-icon> 79 <v-icon size="24" class="right" @click="viewEventDetails = false">cancel</v-icon>
80 </v-flex> 80 </v-flex>
81 </v-layout> 81 </v-layout>
82 </v-layout> 82 </v-layout>
83 83
84 <v-card-text> 84 <v-card-text>
85 <v-list dark class="card-style"> 85 <v-list dark class="card-style">
86 <v-list-tile> 86 <v-list-tile>
87 <v-list-tile-content> 87 <v-list-tile-content>
88 <v-list-tile-title>Date Of Event : {{moment(particularEvent.dateOfEvent).format("DD MMMM, YYYY")}}</v-list-tile-title> 88 <v-list-tile-title>Date Of Event : {{moment(particularEvent.dateOfEvent).format("DD MMMM, YYYY")}}</v-list-tile-title>
89 </v-list-tile-content> 89 </v-list-tile-content>
90 </v-list-tile> 90 </v-list-tile>
91 <v-list-tile> 91 <v-list-tile>
92 <v-list-tile-content> 92 <v-list-tile-content>
93 <v-list-tile-title>Start Time : {{particularEvent.startTime}}</v-list-tile-title> 93 <v-list-tile-title>Start Time : {{particularEvent.startTime}}</v-list-tile-title>
94 </v-list-tile-content> 94 </v-list-tile-content>
95 </v-list-tile> 95 </v-list-tile>
96 <v-list-tile> 96 <v-list-tile>
97 <v-list-tile-content> 97 <v-list-tile-content>
98 <v-list-tile-title>Duration : {{particularEvent.duration}}</v-list-tile-title> 98 <v-list-tile-title>Duration : {{particularEvent.duration}}</v-list-tile-title>
99 </v-list-tile-content> 99 </v-list-tile-content>
100 </v-list-tile> 100 </v-list-tile>
101 <v-list-tile> 101 <v-list-tile>
102 <v-list-tile-content> 102 <v-list-tile-content>
103 <v-list-tile-title> 103 <v-list-tile-title>
104 Link : 104 Link :
105 <a :href="particularEvent.link">{{particularEvent.link}}</a> 105 <a :href="particularEvent.link">{{particularEvent.link}}</a>
106 </v-list-tile-title> 106 </v-list-tile-title>
107 </v-list-tile-content> 107 </v-list-tile-content>
108 </v-list-tile> 108 </v-list-tile>
109 </v-list> 109 </v-list>
110 </v-card-text> 110 </v-card-text>
111 </v-card> 111 </v-card>
112 </v-dialog> 112 </v-dialog>
113 113
114 <v-layout wrap row> 114 <v-layout wrap row>
115 <v-flex xs12 sm12 md9> 115 <v-flex xs12 sm12 md9>
116 <v-container fluid grid-list-xl> 116 <v-container fluid grid-list-xl>
117 <!-- ***** Total Students ***** --> 117 <!-- ***** Total Students ***** -->
118 <v-layout wrap class v-if="$store.state.role != 'PARENT' "> 118 <v-layout wrap class v-if="$store.state.role != 'PARENT' ">
119 <v-flex xs12 sm12 md3> 119 <v-flex xs12 sm12 md3>
120 <router-link :to="{ name:'Students' }"> 120 <router-link :to="{ name:'Students' }">
121 <v-card class="card pink-bgcolor"> 121 <v-card class="card pink-bgcolor">
122 <v-card-title primary-title class="titleCard white--text py-3">Students</v-card-title> 122 <v-card-title primary-title class="titleCard white--text py-3">Students</v-card-title>
123 <img src="/static/icon/student.png" class="ml-2" width="40" alt="icons" /> 123 <img src="/static/icon/student.png" class="ml-2" width="40" alt="icons" />
124 <v-card-title class="headline py-1 white--text">{{ students.length }}</v-card-title> 124 <v-card-title class="headline py-1 white--text">{{ students.length }}</v-card-title>
125 </v-card> 125 </v-card>
126 </router-link> 126 </router-link>
127 </v-flex> 127 </v-flex>
128 <!-- ***** Total Teachers***** --> 128 <!-- ***** Total Teachers***** -->
129 <v-flex xs12 sm12 md3> 129 <v-flex xs12 sm12 md3>
130 <router-link :to="{ name:'Teachers' }"> 130 <router-link :to="{ name:'Teachers' }">
131 <v-card flat class="card elevation-2 firozi-bgcolor"> 131 <v-card flat class="card elevation-2 firozi-bgcolor">
132 <v-card-title primary-title class="titleCard white--text py-3">Teachers</v-card-title> 132 <v-card-title primary-title class="titleCard white--text py-3">Teachers</v-card-title>
133 <img src="/static/icon/teacher.png" class="ml-2" width="40" alt="icons" /> 133 <img src="/static/icon/teacher.png" class="ml-2" width="40" alt="icons" />
134 134
135 <v-card-title class="headline py-1 white--text">{{ teachers.length }}</v-card-title> 135 <v-card-title class="headline py-1 white--text">{{ teachers.length }}</v-card-title>
136 </v-card> 136 </v-card>
137 </router-link> 137 </router-link>
138 </v-flex> 138 </v-flex>
139 <!-- ***** Total Parents ***** --> 139 <!-- ***** Total Parents ***** -->
140 <v-flex xs12 sm12 md3> 140 <v-flex xs12 sm12 md3>
141 <router-link :to="{ name:'Parents' }"> 141 <router-link :to="{ name:'Parents' }">
142 <v-card flat class="card yellow darken-3"> 142 <v-card flat class="card yellow darken-3">
143 <v-card-title primary-title class="titleCard white--text py-3">Parents</v-card-title> 143 <v-card-title primary-title class="titleCard white--text py-3">Parents</v-card-title>
144 <img src="/static/icon/parents.png" class="ml-3" width="40px" alt="icons" /> 144 <img src="/static/icon/parents.png" class="ml-3" width="40px" alt="icons" />
145 <v-card-title class="headline py-1 white--text">{{ parents.length }}</v-card-title> 145 <v-card-title class="headline py-1 white--text">{{ parents.length }}</v-card-title>
146 </v-card> 146 </v-card>
147 </router-link> 147 </router-link>
148 </v-flex> 148 </v-flex>
149 <!-- ***** Total Class***** --> 149 <!-- ***** Total Class***** -->
150 <v-flex xs12 sm12 md3> 150 <v-flex xs12 sm12 md3>
151 <router-link :to="{ name:'Class' }"> 151 <router-link :to="{ name:'Class' }">
152 <v-card flat class="card darkBlue-bgcolor"> 152 <v-card flat class="card darkBlue-bgcolor">
153 <v-card-title primary-title class="titleCard white--text py-3">Class</v-card-title> 153 <v-card-title primary-title class="titleCard white--text py-3">Class</v-card-title>
154 <img src="/static/icon/class.png" width="40" alt="icons" class="ml-2" /> 154 <img src="/static/icon/class.png" width="40" alt="icons" class="ml-2" />
155 <v-card-title class="headline py-1 white--text">{{ classes.length }}</v-card-title> 155 <v-card-title class="headline py-1 white--text">{{ classes.length }}</v-card-title>
156 </v-card> 156 </v-card>
157 </router-link> 157 </router-link>
158 </v-flex> 158 </v-flex>
159 </v-layout> 159 </v-layout>
160 160
161 <p 161 <p
162 v-if="studentsData.length === 0 && role == 'PARENT'" 162 v-if="studentsData.length === 0 && role == 'PARENT'"
163 class="text-center title grey lighten-4 error--text" 163 class="text-center title grey lighten-4 error--text"
164 >You have no student registered with school</p> 164 >You have no student registered with school</p>
165 <!-- ACCOUNT --> 165 <!-- ACCOUNT -->
166 <v-layout v-if="role == 'SUPERADMIN'|| role == 'ADMIN'"> 166 <v-layout v-if="role == 'SUPERADMIN'|| role == 'ADMIN'">
167 <v-flex xs12> 167 <v-flex xs12>
168 <v-card class="card mt-2 account-Card"> 168 <v-card class="card mt-2 account-Card">
169 <h4> 169 <h4>
170 <b>Account</b> 170 <b>Account</b>
171 </h4> 171 </h4>
172 <v-layout wrap> 172 <v-layout wrap>
173 <v-flex xs12 sm12 md3> 173 <v-flex xs12 sm12 md3>
174 <v-list two-line> 174 <v-list two-line>
175 <template> 175 <template>
176 <v-list-tile> 176 <v-list-tile>
177 <v-list-tile-avatar> 177 <v-list-tile-avatar>
178 <v-icon class="account-circle darkBlue-color">panorama_fish_eye</v-icon> 178 <v-icon class="account-circle darkBlue-color">panorama_fish_eye</v-icon>
179 </v-list-tile-avatar> 179 </v-list-tile-avatar>
180 <v-list-tile-content> 180 <v-list-tile-content>
181 <v-list-tile-title class="mt-2"> 181 <v-list-tile-title class="mt-2">
182 <p class="subheading font-color">Fees</p> 182 <p class="subheading font-color">Fees</p>
183 </v-list-tile-title> 183 </v-list-tile-title>
184 <v-list-tile-title>Rs. {{ feeData.totalFees }}</v-list-tile-title> 184 <v-list-tile-title>Rs. {{ feeData.totalFees }}</v-list-tile-title>
185 </v-list-tile-content> 185 </v-list-tile-content>
186 </v-list-tile> 186 </v-list-tile>
187 <v-list-tile> 187 <v-list-tile>
188 <v-list-tile-avatar> 188 <v-list-tile-avatar>
189 <v-icon class="account-circle yellowDark-color">panorama_fish_eye</v-icon> 189 <v-icon class="account-circle yellowDark-color">panorama_fish_eye</v-icon>
190 </v-list-tile-avatar> 190 </v-list-tile-avatar>
191 <v-list-tile-content> 191 <v-list-tile-content>
192 <v-list-tile-title class="mt-2"> 192 <v-list-tile-title class="mt-2">
193 <p class="subheading font-color">Collection</p> 193 <p class="subheading font-color">Collection</p>
194 </v-list-tile-title> 194 </v-list-tile-title>
195 <v-list-tile-title>Rs. {{ feeData.totalCollection }}</v-list-tile-title> 195 <v-list-tile-title>Rs. {{ feeData.totalCollection }}</v-list-tile-title>
196 </v-list-tile-content> 196 </v-list-tile-content>
197 </v-list-tile> 197 </v-list-tile>
198 <v-list-tile> 198 <v-list-tile>
199 <v-list-tile-avatar> 199 <v-list-tile-avatar>
200 <v-icon class="account-circle pink-color">panorama_fish_eye</v-icon> 200 <v-icon class="account-circle pink-color">panorama_fish_eye</v-icon>
201 </v-list-tile-avatar> 201 </v-list-tile-avatar>
202 <v-list-tile-content> 202 <v-list-tile-content>
203 <v-list-tile-title class="mt-2"> 203 <v-list-tile-title class="mt-2">
204 <p class="subheading font-color">Expences</p> 204 <p class="subheading font-color">Expences</p>
205 </v-list-tile-title> 205 </v-list-tile-title>
206 <v-list-tile-title>Rs. {{ expenseData.sum }}</v-list-tile-title> 206 <v-list-tile-title>Rs. {{ expenseData.sum }}</v-list-tile-title>
207 </v-list-tile-content> 207 </v-list-tile-content>
208 </v-list-tile> 208 </v-list-tile>
209 </template> 209 </template>
210 </v-list> 210 </v-list>
211 </v-flex> 211 </v-flex>
212 <v-flex xs12 sm12 md9 lg9> 212 <v-flex xs12 sm12 md9 lg9>
213 <div id="chart"> 213 <div id="chart">
214 <div v-if="showChart"> 214 <div v-if="showChart">
215 <apexchart 215 <apexchart
216 type="bar" 216 type="bar"
217 height="250" 217 height="250"
218 style="max-width: 800px !important" 218 style="max-width: 800px !important"
219 :options="chartOptions" 219 :options="chartOptions"
220 :series="series" 220 :series="series"
221 ></apexchart> 221 ></apexchart>
222 </div> 222 </div>
223 </div> 223 </div>
224 </v-flex> 224 </v-flex>
225 </v-layout> 225 </v-layout>
226 </v-card> 226 </v-card>
227 </v-flex> 227 </v-flex>
228 </v-layout> 228 </v-layout>
229 229
230 <!-- FOR ADMIN ROLE --> 230 <!-- FOR ADMIN ROLE -->
231 <v-card class="mt-2 card" v-if="role == 'ADMIN'"> 231 <v-card class="mt-2 card" v-if="role == 'ADMIN'">
232 <!-- <full-calendar 232 <!-- <full-calendar
233 ref="calendar" 233 ref="calendar"
234 defaultView="month" 234 defaultView="month"
235 droppable="false" 235 droppable="false"
236 :events="events" 236 :events="events"
237 :config="config" 237 :config="config"
238 ></full-calendar>--> 238 ></full-calendar>-->
239 <h4 class="pa-3"> 239 <h4 class="pa-3">
240 <b>Notice</b> 240 <b>Notice</b>
241 </h4> 241 </h4>
242 242
243 <v-data-table 243 <v-data-table
244 :items="noticeData" 244 :items="noticeData"
245 class="elevation-0" 245 class="elevation-0"
246 flat 246 flat
247 hide-actions 247 hide-actions
248 hide-headers 248 hide-headers
249 style="border-spacing: 0 !important;" 249 style="border-spacing: 0 !important;"
250 > 250 >
251 <template 251 <template
252 slot="items" 252 slot="items"
253 slot-scope="props" 253 slot-scope="props"
254 v-if="props.index < 5" 254 v-if="props.index < 5"
255 style="border-spacing: 0 !important;" 255 style="border-spacing: 0 !important;"
256 > 256 >
257 <tr class="td-notice"> 257 <tr class="td-notice">
258 <td class="grey--text" style="width:18px">{{ props.index + 1}}</td> 258 <td class="grey--text" style="width:18px">{{ props.index + 1}}</td>
259 <td> 259 <td>
260 <span class="grey--text caption">{{ date(props.item.created) }}</span> 260 <span class="grey--text caption">{{ date(props.item.created) }}</span>
261 <br /> 261 <br />
262 <span class="body-2">{{ props.item.title}}</span> 262 <span class="body-2">{{ props.item.title}}</span>
263 </td> 263 </td>
264 <td class="grey--text mt-2">{{ props.item.description}}</td> 264 <td class="grey--text mt-2">{{ props.item.description}}</td>
265 265
266 <td class="text-xs-center"> 266 <td class="text-xs-center">
267 <span> 267 <span>
268 <v-tooltip top> 268 <v-tooltip top>
269 <img 269 <img
270 slot="activator" 270 slot="activator"
271 style="cursor:pointer; width:25px; height:25px; " 271 style="cursor:pointer; width:25px; height:25px; "
272 @click="profile" 272 @click="profile"
273 src="/static/icon/view.png" 273 src="/static/icon/view.png"
274 /> 274 />
275 <span>View</span> 275 <span>View</span>
276 </v-tooltip> 276 </v-tooltip>
277 </span> 277 </span>
278 </td> 278 </td>
279 </tr> 279 </tr>
280 </template> 280 </template>
281 </v-data-table> 281 </v-data-table>
282 </v-card> 282 </v-card>
283 283
284 <!-- FOR TEACHER ROLE --> 284 <!-- FOR TEACHER ROLE -->
285 <v-card class="mt-2 card" v-if="role == 'TEACHER'"> 285 <v-card class="mt-2 card" v-if="role == 'TEACHER'">
286 <v-layout> 286 <v-layout>
287 <v-flex xs6 sm6 md6> 287 <v-flex xs6 sm6 md6>
288 <h4 class="pa-3"> 288 <h4 class="pa-3">
289 <b>Notice</b> 289 <b>Notice</b>
290 </h4> 290 </h4>
291 <v-data-table 291 <v-data-table
292 :items="noticeData" 292 :items="noticeData"
293 class="elevation-0" 293 class="elevation-0"
294 flat 294 flat
295 hide-actions 295 hide-actions
296 hide-headers 296 hide-headers
297 style="border-spacing: 0 !important;" 297 style="border-spacing: 0 !important;"
298 > 298 >
299 <template 299 <template
300 slot="items" 300 slot="items"
301 slot-scope="props" 301 slot-scope="props"
302 v-if="props.index < 5" 302 v-if="props.index < 5"
303 style="border-spacing: 0 !important;" 303 style="border-spacing: 0 !important;"
304 > 304 >
305 <tr class="td-notice"> 305 <tr class="td-notice">
306 <td class="grey--text" style="width:18px">{{ props.index + 1}}</td> 306 <td class="grey--text" style="width:18px">{{ props.index + 1}}</td>
307 <td> 307 <td>
308 <span class="grey--text caption">{{ date(props.item.created) }}</span> 308 <span class="grey--text caption">{{ date(props.item.created) }}</span>
309 <br /> 309 <br />
310 <span class="body-2">{{ props.item.title}}</span> 310 <span class="body-2">{{ props.item.title}}</span>
311 </td> 311 </td>
312 <td class="grey--text mt-2">{{ props.item.description}}</td> 312 <td class="grey--text mt-2">{{ props.item.description}}</td>
313 313
314 <td class="text-xs-center"> 314 <td class="text-xs-center">
315 <span> 315 <span>
316 <v-tooltip top> 316 <v-tooltip top>
317 <img 317 <img
318 slot="activator" 318 slot="activator"
319 style="cursor:pointer; width:25px; height:25px; " 319 style="cursor:pointer; width:25px; height:25px; "
320 @click="profile" 320 @click="profile"
321 src="/static/icon/view.png" 321 src="/static/icon/view.png"
322 /> 322 />
323 <span>View</span> 323 <span>View</span>
324 </v-tooltip> 324 </v-tooltip>
325 </span> 325 </span>
326 </td> 326 </td>
327 </tr> 327 </tr>
328 </template> 328 </template>
329 </v-data-table> 329 </v-data-table>
330 </v-flex> 330 </v-flex>
331 331
332 <v-flex xs6 sm6 md6> 332 <v-flex xs6 sm6 md6>
333 <v-card-text> 333 <v-card-text>
334 <v-card-title class="justify-center subheading font-weight-bold">Latest Events</v-card-title> 334 <v-card-title class="justify-center subheading font-weight-bold">Latest Events</v-card-title>
335 <div 335 <div
336 v-for="(activity,index) in activityList" 336 v-for="(activity,index) in activityList"
337 :key="index" 337 :key="index"
338 class="mt-2" 338 class="mt-2"
339 style="cursor: pointer;" 339 style="cursor: pointer;"
340 @click="seeEventDetails(activity)" 340 @click="seeEventDetails(activity)"
341 > 341 >
342 <span 342 <span
343 :style="{ 'background-color': colorsArray[index%colorsArray.length] }" 343 :style="{ 'background-color': colorsArray[index%colorsArray.length] }"
344 style="height: 12px;width: 12px;border-radius: 50%;display: inline-block;vertical-align: top;" 344 style="height: 12px;width: 12px;border-radius: 50%;display: inline-block;vertical-align: top;"
345 ></span> 345 ></span>
346 <div style="display: inline-block;" class="ml-2"> 346 <div style="display: inline-block;" class="ml-2">
347 <div> 347 <div>
348 <div 348 <div
349 class="grey--text lighten-1 caption" 349 class="grey--text lighten-1 caption"
350 v-if="activity.dateOfEvent" 350 v-if="activity.dateOfEvent"
351 >{{moment(activity.dateOfEvent).format("DD MMMM, YYYY")}}</div> 351 >{{moment(activity.dateOfEvent).format("DD MMMM, YYYY")}}</div>
352 <div class="body-2" v-if="activity.title">{{activity.title}}</div> 352 <div class="body-2" v-if="activity.title">{{activity.title}}</div>
353 </div> 353 </div>
354 </div> 354 </div>
355 </div> 355 </div>
356 <div v-if="activityList.length == 0"> 356 <div v-if="activityList.length == 0">
357 <p class="text-center title grey lighten-4 error--text">No Data Found!</p> 357 <p class="text-center title grey lighten-4 error--text">No Data Found!</p>
358 </div> 358 </div>
359 </v-card-text> 359 </v-card-text>
360 </v-flex> 360 </v-flex>
361 </v-layout> 361 </v-layout>
362 </v-card> 362 </v-card>
363 363
364 <!-- COURSES --> 364 <!-- COURSES -->
365 <v-layout v-if="role == 'PARENT'"> 365 <v-layout v-if="role == 'PARENT'">
366 <v-flex xs12> 366 <v-flex xs12>
367 <v-card class="card mt-2 account-Card"> 367 <v-card class="card mt-2 account-Card">
368 <h4> 368 <h4>
369 <b>My Courses</b> 369 <b>My Courses</b>
370 </h4> 370 </h4>
371 <v-layout wrap> 371 <v-layout wrap>
372 <v-flex xs12 sm12> 372 <v-flex xs12 sm12>
373 <v-list two-line> 373 <v-list two-line>
374 <template> 374 <template>
375 <v-list-tile v-for="(course,i) in courseData" :key="i"> 375 <v-list-tile v-for="(course,i) in courseData" :key="i">
376 <v-list-tile-avatar> 376 <v-list-tile-avatar>
377 <v-icon 377 <v-icon
378 class="account-circle darkBlue-color" 378 class="account-circle darkBlue-color"
379 style="cursor: pointer;" 379 style="cursor: pointer;"
380 @click="routeToCourseDetails(course._id)" 380 @click="routeToCourseDetails(course._id)"
381 >panorama_fish_eye</v-icon> 381 >panorama_fish_eye</v-icon>
382 </v-list-tile-avatar> 382 </v-list-tile-avatar>
383 <v-list-tile-content> 383 <v-list-tile-content>
384 <v-list-tile-title 384 <v-list-tile-title
385 style="cursor: pointer;" 385 style="cursor: pointer;"
386 @click="routeToCourseDetails(course._id)" 386 @click="routeToCourseDetails(course._id)"
387 >{{ course.courseName }}</v-list-tile-title> 387 >{{ course.courseName }}</v-list-tile-title>
388 </v-list-tile-content> 388 </v-list-tile-content>
389 </v-list-tile> 389 </v-list-tile>
390 </template> 390 </template>
391 </v-list> 391 </v-list>
392 </v-flex> 392 </v-flex>
393 </v-layout> 393 </v-layout>
394 </v-card> 394 </v-card>
395 </v-flex> 395 </v-flex>
396 </v-layout> 396 </v-layout>
397 <v-layout v-if="role == 'PARENT'"> 397 <v-layout v-if="role == 'PARENT'">
398 <v-flex xs6> 398 <v-flex xs6>
399 <v-card class="mt-2 card"> 399 <v-card class="mt-2 card">
400 <h4 class="pa-3"> 400 <h4 class="pa-3">
401 <b>Latest Annoucements</b> 401 <b>Latest Annoucements</b>
402 </h4> 402 </h4>
403 403
404 <v-data-table 404 <v-data-table
405 :items="annoucementData" 405 :items="annoucementData"
406 class="elevation-0" 406 class="elevation-0"
407 flat 407 flat
408 hide-actions 408 hide-actions
409 hide-headers 409 hide-headers
410 style="border-spacing: 0 !important;" 410 style="border-spacing: 0 !important;"
411 > 411 >
412 <template 412 <template
413 slot="items" 413 slot="items"
414 slot-scope="props" 414 slot-scope="props"
415 v-if="props.index < 5" 415 v-if="props.index < 5"
416 style="border-spacing: 0 !important;" 416 style="border-spacing: 0 !important;"
417 > 417 >
418 <tr class="td-notice"> 418 <tr class="td-notice">
419 <td class="grey--text" style="width:18px">{{ props.index + 1}}</td> 419 <td class="grey--text" style="width:18px">{{ props.index + 1}}</td>
420 <td> 420 <td>
421 <span class="grey--text caption">{{ date(props.item.created) }}</span> 421 <span class="grey--text caption">{{ date(props.item.created) }}</span>
422 <br /> 422 <br />
423 <span class="body-2">{{ props.item.discussionType}}</span> 423 <span class="body-2">{{ props.item.discussionType}}</span>
424 </td> 424 </td>
425 <td class="text-xs-center"> 425 <td class="text-xs-center">
426 <span> 426 <span>
427 <v-tooltip top> 427 <v-tooltip top>
428 <img 428 <img
429 slot="activator" 429 slot="activator"
430 style="cursor:pointer; width:25px; height:25px; " 430 style="cursor:pointer; width:25px; height:25px; "
431 src="/static/icon/view.png" 431 src="/static/icon/view.png"
432 /> 432 />
433 <span>View</span> 433 <span>View</span>
434 </v-tooltip> 434 </v-tooltip>
435 </span> 435 </span>
436 </td> 436 </td>
437 </tr> 437 </tr>
438 </template> 438 </template>
439 </v-data-table> 439 </v-data-table>
440 </v-card> 440 </v-card>
441 </v-flex> 441 </v-flex>
442 <v-flex xs6> 442 <v-flex xs6>
443 <v-card class="mt-2 card"> 443 <v-card class="mt-2 card">
444 <h4 class="pa-3"> 444 <h4 class="pa-3">
445 <b>Online User</b> 445 <b>Online User</b>
446 </h4> 446 </h4>
447 447
448 <v-data-table 448 <v-data-table
449 :items="onlineUser" 449 :items="onlineUser"
450 class="elevation-0" 450 class="elevation-0"
451 flat 451 flat
452 hide-actions 452 hide-actions
453 hide-headers 453 hide-headers
454 style="border-spacing: 0 !important;" 454 style="border-spacing: 0 !important;"
455 > 455 >
456 <template 456 <template
457 slot="items" 457 slot="items"
458 slot-scope="props" 458 slot-scope="props"
459 v-if="props.index < 5" 459 v-if="props.index < 5"
460 style="border-spacing: 0 !important;" 460 style="border-spacing: 0 !important;"
461 > 461 >
462 <tr class="td-notice"> 462 <tr class="td-notice">
463 <td class="grey--text" style="width:18px">{{ props.index + 1}}</td> 463 <td class="grey--text" style="width:18px">{{ props.index + 1}}</td>
464 <td> 464 <td>
465 <span class="body-2">{{ props.item.user }}</span> 465 <span class="body-2">{{ props.item.user }}</span>
466 </td> 466 </td>
467 <td class="text-xs-center"> 467 <td class="text-xs-center">
468 <span> 468 <span>
469 <v-tooltip top> 469 <v-tooltip top>
470 <img 470 <img
471 slot="activator" 471 slot="activator"
472 style="cursor:pointer; width:25px; height:25px; " 472 style="cursor:pointer; width:25px; height:25px; "
473 src="/static/icon/view.png" 473 src="/static/icon/view.png"
474 /> 474 />
475 <span>View</span> 475 <span>View</span>
476 </v-tooltip> 476 </v-tooltip>
477 </span> 477 </span>
478 </td> 478 </td>
479 </tr> 479 </tr>
480 </template> 480 </template>
481 </v-data-table> 481 </v-data-table>
482 </v-card> 482 </v-card>
483 </v-flex> 483 </v-flex>
484 </v-layout> 484 </v-layout>
485 </v-container> 485 </v-container>
486 </v-flex> 486 </v-flex>
487 <v-spacer></v-spacer> 487 <v-spacer></v-spacer>
488 <!-- SIDE BAR --> 488 <!-- SIDE BAR -->
489 <v-flex xs12 sm12 md3> 489 <v-flex xs12 sm12 md3>
490 <v-card height="100%" class="elevation-0 mt-3 profileDasboard"> 490 <v-card height="100%" class="elevation-0 mt-3 profileDasboard">
491 <v-card-text class="px-2"> 491 <v-card-text class="px-2">
492 <h4 class="text-xs-center py-3"> 492 <h4 class="text-xs-center py-3">
493 <b>Profile</b> 493 <b>Profile</b>
494 </h4> 494 </h4>
495 <v-flex xs12 class="py-3"> 495 <v-flex xs12 class="py-3">
496 <v-layout wrap> 496 <v-layout wrap>
497 <v-flex xs12 sm12 md4> 497 <v-flex xs12 sm12 md4>
498 <img 498 <img
499 src="/static/icon/user.png" 499 src="/static/icon/user.png"
500 v-if="!userData.profilePicUrl && !userData.schoolLogoUrl" 500 v-if="!userData.profilePicUrl && !userData.schoolLogoUrl"
501 width="80" 501 width="80"
502 /> 502 />
503 <img 503 <img
504 :src="userData.profilePicUrl" 504 :src="userData.profilePicUrl"
505 onerror="this.src='/static/icon/user.png';" 505 onerror="this.src='/static/icon/user.png';"
506 v-if="userData.profilePicUrl" 506 v-if="userData.profilePicUrl"
507 width="80" 507 width="80"
508 /> 508 />
509 <img 509 <img
510 :src="userData.schoolLogoUrl" 510 :src="userData.schoolLogoUrl"
511 onerror="this.src='/static/icon/user.png';" 511 onerror="this.src='/static/icon/user.png';"
512 v-if="userData.schoolLogoUrl" 512 v-if="userData.schoolLogoUrl"
513 width="80" 513 width="80"
514 /> 514 />
515 </v-flex> 515 </v-flex>
516 <v-flex xs12 sm12 md6> 516 <v-flex xs12 sm12 md6>
517 <p class="mb-0 body-1"> 517 <p class="mb-0 body-1">
518 <i>{{ userData.name }}</i> 518 <i>{{ userData.name }}</i>
519 </p> 519 </p>
520 <p class="mb-0 caption grey--text">{{ userData.email }}</p> 520 <p class="mb-0 caption grey--text">{{ userData.email }}</p>
521 <p class="mb-0 caption grey--text">{{ userData.mobile }}</p> 521 <p class="mb-0 caption grey--text">{{ userData.mobile }}</p>
522 <address class="caption grey--text mb-3">{{ userData.address }}</address> 522 <address class="caption grey--text mb-3">{{ userData.address }}</address>
523 </v-flex> 523 </v-flex>
524 </v-layout> 524 </v-layout>
525 </v-flex> 525 </v-flex>
526 <hr /> 526 <hr />
527 <div class="text-xs-center py-3 subheading font-weight-bold">Calender</div> 527 <div class="text-xs-center py-3 subheading font-weight-bold">Calender</div>
528 528
529 <vue-event-calendar :events="activityEvents" @day-changed="handleDayChanged($event)"></vue-event-calendar> 529 <vue-event-calendar :events="activityEvents" @day-changed="handleDayChanged($event)"></vue-event-calendar>
530 530
531 <!-- LATEST EVENTS --> 531 <!-- LATEST EVENTS -->
532 <v-card class="my-3 elevation-0" v-if="role != 'TEACHER'"> 532 <v-card class="my-3 elevation-0" v-if="role != 'TEACHER'">
533 <v-card-text> 533 <v-card-text>
534 <v-card-title class="justify-center subheading font-weight-bold">Latest Events</v-card-title> 534 <v-card-title class="justify-center subheading font-weight-bold">Latest Events</v-card-title>
535 <div 535 <div
536 v-for="(activity,index) in activityList" 536 v-for="(activity,index) in activityList"
537 :key="index" 537 :key="index"
538 class="mt-2" 538 class="mt-2"
539 style="cursor: pointer;" 539 style="cursor: pointer;"
540 @click="seeEventDetails(activity)" 540 @click="seeEventDetails(activity)"
541 > 541 >
542 <span 542 <span
543 :style="{ 'background-color': colorsArray[index%colorsArray.length] }" 543 :style="{ 'background-color': colorsArray[index%colorsArray.length] }"
544 style="height: 12px;width: 12px;border-radius: 50%;display: inline-block;vertical-align: top;" 544 style="height: 12px;width: 12px;border-radius: 50%;display: inline-block;vertical-align: top;"
545 ></span> 545 ></span>
546 <div style="display: inline-block;" class="ml-2"> 546 <div style="display: inline-block;" class="ml-2">
547 <!-- LATEST EVENTS FOR PARENT --> 547 <!-- LATEST EVENTS FOR PARENT -->
548 <div v-if="$store.state.role === 'PARENT' "> 548 <div v-if="$store.state.role === 'PARENT' ">
549 <div 549 <div
550 class="grey--text lighten-1 caption" 550 class="grey--text lighten-1 caption"
551 v-if="activity.meetingEvent" 551 v-if="activity.meetingEvent"
552 >{{moment(activity.meetingEvent.dateOfEvent).format("DD MMMM, YYYY")}}</div> 552 >{{moment(activity.meetingEvent.dateOfEvent).format("DD MMMM, YYYY")}}</div>
553 <div 553 <div
554 class="body-2" 554 class="body-2"
555 v-if="activity.meetingEvent" 555 v-if="activity.meetingEvent"
556 >{{activity.meetingEvent.title}}</div> 556 >{{activity.meetingEvent.title}}</div>
557 </div> 557 </div>
558 558
559 <!-- LATEST EVENTS FOR TEACHER --> 559 <!-- LATEST EVENTS FOR TEACHER -->
560 <div v-if="role == 'TEACHER'"> 560 <div v-if="role == 'TEACHER'">
561 <div 561 <div
562 class="grey--text lighten-1 caption" 562 class="grey--text lighten-1 caption"
563 v-if="activity.dateOfEvent" 563 v-if="activity.dateOfEvent"
564 >{{moment(activity.dateOfEvent).format("DD MMMM, YYYY")}}</div> 564 >{{moment(activity.dateOfEvent).format("DD MMMM, YYYY")}}</div>
565 <div class="body-2" v-if="activity.title">{{activity.title}}</div> 565 <div class="body-2" v-if="activity.title">{{activity.title}}</div>
566 </div> 566 </div>
567 </div> 567 </div>
568 </div> 568 </div>
569 <div v-if="activityList.length == 0"> 569 <div v-if="activityList.length == 0">
570 <p class="text-center title grey lighten-4 error--text">No Data Found!</p> 570 <p class="text-center title grey lighten-4 error--text">No Data Found!</p>
571 </div> 571 </div>
572 </v-card-text> 572 </v-card-text>
573 </v-card> 573 </v-card>
574 </v-card-text> 574 </v-card-text>
575 </v-card> 575 </v-card>
576 </v-flex> 576 </v-flex>
577 </v-layout> 577 </v-layout>
578 578
579 <v-dialog v-model="dialog" max-width="500"> 579 <v-dialog v-model="dialog" max-width="500">
580 <v-card color="grey lighten-4" flat> 580 <v-card color="grey lighten-4" flat>
581 <v-toolbar dark color="fixcolors"> 581 <v-toolbar dark color="fixcolors">
582 <v-spacer></v-spacer> 582 <v-spacer></v-spacer>
583 <v-btn icon @click="dialog= false"> 583 <v-btn icon @click="dialog= false">
584 <v-icon>close</v-icon> 584 <v-icon>close</v-icon>
585 </v-btn> 585 </v-btn>
586 </v-toolbar> 586 </v-toolbar>
587 <v-flex class="py-4"> 587 <v-flex class="py-4">
588 <v-list-tile> 588 <v-list-tile>
589 <v-list-tile-action> 589 <v-list-tile-action>
590 <v-icon>edit</v-icon> 590 <v-icon>edit</v-icon>
591 </v-list-tile-action> 591 </v-list-tile-action>
592 <v-list-tile-content> 592 <v-list-tile-content>
593 <v-list-tile-title>{{ selected.title }}</v-list-tile-title> 593 <v-list-tile-title>{{ selected.title }}</v-list-tile-title>
594 </v-list-tile-content> 594 </v-list-tile-content>
595 </v-list-tile> 595 </v-list-tile>
596 <v-list-tile> 596 <v-list-tile>
597 <v-list-tile-action> 597 <v-list-tile-action>
598 <v-icon>access_time</v-icon> 598 <v-icon>access_time</v-icon>
599 </v-list-tile-action> 599 </v-list-tile-action>
600 <v-list-tile-content> 600 <v-list-tile-content>
601 <v-list-tile-title>{{ date(selected.start)}}</v-list-tile-title> 601 <v-list-tile-title>{{ date(selected.start)}}</v-list-tile-title>
602 </v-list-tile-content> 602 </v-list-tile-content>
603 </v-list-tile> 603 </v-list-tile>
604 </v-flex> 604 </v-flex>
605 </v-card> 605 </v-card>
606 </v-dialog> 606 </v-dialog>
607 </v-app> 607 </v-app>
608 </template> 608 </template>
609 609
610 <script> 610 <script>
611 import http from "@/Services/http.js"; 611 import http from "@/Services/http.js";
612 import moment from "moment"; 612 import moment from "moment";
613 import AllApiCalls from "@/Services/AllApiCalls.js"; 613 import AllApiCalls from "@/Services/AllApiCalls.js";
614 // import { FunctionalCalendar } from "vue-functional-calendar"; 614 // import { FunctionalCalendar } from "vue-functional-calendar";
615 615
616 export default { 616 export default {
617 components: { 617 components: {
618 // FunctionalCalendar 618 // FunctionalCalendar
619 }, 619 },
620 mixins: [AllApiCalls], 620 mixins: [AllApiCalls],
621 data() { 621 data() {
622 return { 622 return {
623 // data: { 623 // data: {
624 // clieckedToday: false 624 // clieckedToday: false
625 // }, 625 // },
626 // markedDates: ["16/4/2019", "18/4/2019", "20/4/2019", "21/4/2019"], 626 // markedDates: ["16/4/2019", "18/4/2019", "20/4/2019", "21/4/2019"],
627 // calendarData: {}, 627 // calendarData: {},
628 // calendar: {}, 628 // calendar: {},
629 629
630 // DIALOG BOX EVENT DETAILS 630 // DIALOG BOX EVENT DETAILS
631 viewEventDetails: false, 631 viewEventDetails: false,
632 632
633 // CALENDER 633 // CALENDER
634 moment: moment, 634 moment: moment,
635 activityEvents: [], 635 activityEvents: [],
636 onlineUser: [ 636 onlineUser: [
637 { 637 {
638 user: "Student Demo", 638 user: "Student Demo",
639 }, 639 },
640 { 640 {
641 user: "Teacher Demo", 641 user: "Teacher Demo",
642 }, 642 },
643 { 643 {
644 user: "Priyansh Gupta", 644 user: "Priyansh Gupta",
645 }, 645 },
646 { 646 {
647 user: "Gaurav Aggarwal", 647 user: "Gaurav Aggarwal",
648 }, 648 },
649 { 649 {
650 user: "Approve Arorra", 650 user: "Approve Arorra",
651 }, 651 },
652 ], 652 ],
653 showLoader: false, 653 showLoader: false,
654 calendarData: {}, 654 calendarData: {},
655 dialog: false, 655 dialog: false,
656 dialogNotice: false, 656 dialogNotice: false,
657 HolidaysList: [], 657 HolidaysList: [],
658 EventsList: [], 658 EventsList: [],
659 events: [], 659 events: [],
660 config: { 660 config: {
661 eventClick: (event) => { 661 eventClick: (event) => {
662 this.selected = event; 662 this.selected = event;
663 this.dialog = true; 663 this.dialog = true;
664 }, 664 },
665 }, 665 },
666 selected: {}, 666 selected: {},
667 barGraph: [], 667 barGraph: [],
668 // notice: {}, 668 // notice: {},
669 userData: {}, 669 userData: {},
670 dated: new Date(2018, 0, 9), 670 dated: new Date(2018, 0, 9),
671 userList: [], 671 userList: [],
672 sectionList: [], 672 sectionList: [],
673 students: "", 673 students: "",
674 parents: "", 674 parents: "",
675 teachers: "", 675 teachers: "",
676 classes: "", 676 classes: "",
677 noticeData: [], 677 noticeData: [],
678 expenseData: [], 678 expenseData: [],
679 feeData: [], 679 feeData: [],
680 collectionData: [], 680 collectionData: [],
681 courseData: [], 681 courseData: [],
682 studentsData: [], 682 studentsData: [],
683 annoucementData: [], 683 annoucementData: [],
684 role: "", 684 role: "",
685 attrs: [ 685 attrs: [
686 { 686 {
687 key: "today", 687 key: "today",
688 highlight: true, 688 highlight: true,
689 dates: new Date(), 689 dates: new Date(),
690 }, 690 },
691 ], 691 ],
692 drawer: true, 692 drawer: true,
693 items: [ 693 items: [
694 { title: "Home", icon: "dashboard" }, 694 { title: "Home", icon: "dashboard" },
695 { title: "About", icon: "question_answer" }, 695 { title: "About", icon: "question_answer" },
696 ], 696 ],
697 right: null, 697 right: null,
698 698
699 series: [ 699 series: [
700 { 700 {
701 name: "Total", 701 name: "Total",
702 data: [], 702 data: [],
703 }, 703 },
704 ], 704 ],
705 showChart: false, 705 showChart: false,
706 chartOptions: { 706 chartOptions: {
707 chart: { 707 chart: {
708 type: "bar", 708 type: "bar",
709 height: 150, 709 height: 150,
710 stacked: true, 710 stacked: true,
711 // animations: { 711 // animations: {
712 // enabled: true, 712 // enabled: true,
713 // easing: "easeinout", 713 // easing: "easeinout",
714 // speed: 1200, 714 // speed: 1200,
715 // animateGradually: { 715 // animateGradually: {
716 // enabled: true, 716 // enabled: true,
717 // delay: 450 717 // delay: 450
718 // }, 718 // },
719 // dynamicAnimation: { 719 // dynamicAnimation: {
720 // enabled: true, 720 // enabled: true,
721 // speed: 450 721 // speed: 450
722 // } 722 // }
723 // } 723 // }
724 }, 724 },
725 plotOptions: { 725 plotOptions: {
726 bar: { 726 bar: {
727 horizontal: false, 727 horizontal: false,
728 columnWidth: "25%", 728 columnWidth: "25%",
729 // endingShape: "rounded", 729 // endingShape: "rounded",
730 distributed: true, 730 distributed: true,
731 }, 731 },
732 }, 732 },
733 responsive: [ 733 responsive: [
734 { 734 {
735 breakpoint: 480, 735 breakpoint: 480,
736 options: { 736 options: {
737 legend: { 737 legend: {
738 position: "bottom", 738 position: "bottom",
739 offsetX: -10, 739 offsetX: -10,
740 offsetY: 0, 740 offsetY: 0,
741 }, 741 },
742 }, 742 },
743 }, 743 },
744 ], 744 ],
745 legend: { 745 legend: {
746 show: false, 746 show: false,
747 }, 747 },
748 colors: ["#7852cc", "#f9a825", "#ff8a89"], 748 colors: ["#7852cc", "#f9a825", "#ff8a89"],
749 dataLabels: { 749 dataLabels: {
750 enabled: false, 750 enabled: false,
751 }, 751 },
752 stroke: { 752 stroke: {
753 show: true, 753 show: true,
754 width: 2, 754 width: 2,
755 colors: ["transparent"], 755 colors: ["transparent"],
756 }, 756 },
757 xaxis: { 757 xaxis: {
758 categories: ["Fee", "Collections", "Expences"], 758 categories: ["Fee", "Collections", "Expences"],
759 }, 759 },
760 yaxis: { 760 yaxis: {
761 title: { 761 title: {
762 text: "", 762 text: "",
763 }, 763 },
764 }, 764 },
765 fill: { 765 fill: {
766 opacity: 1, 766 opacity: 1,
767 }, 767 },
768 tooltip: { 768 tooltip: {
769 y: { 769 y: {
770 formatter: function (val, opts) { 770 formatter: function (val, opts) {
771 return "" + val + " "; 771 return "" + val + " ";
772 }, 772 },
773 }, 773 },
774 }, 774 },
775 }, 775 },
776 776
777 // LATEST ACTIVITY 777 // LATEST ACTIVITY
778 colorsArray: ["#ff8a89", "#71d9ea", "#7852cc", "#F9A825"], 778 colorsArray: ["#ff8a89", "#71d9ea", "#7852cc", "#F9A825"],
779 activityList: [], 779 activityList: [],
780 }; 780 };
781 }, 781 },
782 782
783 783
784 methods: { 784 methods: {
785 test(e) { 785 test(e) {
786 console.log(" test - ", e); 786 console.log(" test - ", e);
787 }, 787 },
788 async handleDayChanged(e) { 788 async handleDayChanged(e) {
789 await this.getParticularMeetingEvent({ 789 await this.getParticularMeetingEvent({
790 meetingEventId: e.events[0]._id, 790 meetingEventId: e.events[0]._id,
791 }); 791 });
792 this.viewEventDetails = true; 792 this.viewEventDetails = true;
793 }, 793 },
794 async seeEventDetails(activity) { 794 async seeEventDetails(activity) {
795 if (this.$store.state.role === "TEACHER") { 795 if (this.$store.state.role === "TEACHER") {
796 await this.getParticularMeetingEvent({ meetingEventId: activity._id }); 796 await this.getParticularMeetingEvent({ meetingEventId: activity._id });
797 this.viewEventDetails = true; 797 this.viewEventDetails = true;
798 } 798 }
799 if (this.$store.state.role === "PARENT") { 799 if (this.$store.state.role === "PARENT") {
800 await this.getParticularMeetingEvent({ 800 await this.getParticularMeetingEvent({
801 meetingEventId: activity.meetingEvent._id, 801 meetingEventId: activity.meetingEvent._id,
802 }); 802 });
803 this.viewEventDetails = true; 803 this.viewEventDetails = true;
804 } 804 }
805 }, 805 },
806 async routeToCourseDetails(courseId) { 806 async routeToCourseDetails(courseId) {
807 /* getParticularCourseDetail- To get courseDetail - defined in GetApis.js*/ 807 /* getParticularCourseDetail- To get courseDetail - defined in GetApis.js*/
808 let response = await this.getParticularCourseDetail(courseId); 808 let response = await this.getParticularCourseDetail(courseId);
809 809
810 /* If the response is null then dont route */ 810 /* If the response is null then dont route */
811 if (response.data.data.length > 0) { 811 if (response.data.data.length > 0) {
812 this.$router.push({ 812 this.$router.push({
813 name: "Course Details", 813 name: "Course Details",
814 query: { courseId: courseId }, 814 query: { courseId: courseId },
815 }); 815 });
816 } else { 816 } else {
817 this.seeSnackbar("No Data Available", "warning"); 817 this.seeSnackbar("No Data Available", "warning");
818 } 818 }
819 }, 819 },
820 820
821 closeNotice() { 821 closeNotice() {
822 this.dialogNotice = false; 822 this.dialogNotice = false;
823 }, 823 },
824 profile() { 824 profile() {
825 // this.editedIndex = this.desserts.indexOf(item); 825 // this.editedIndex = this.desserts.indexOf(item);
826 // this.notice = Object.assign({}, item); 826 // this.notice = Object.assign({}, item);
827 // this.dialogNotice = true; 827 // this.dialogNotice = true;
828 this.$router.push("/noticeBoard"); 828 this.$router.push("/noticeBoard");
829 }, 829 },
830 date: function (date) { 830 date: function (date) {
831 return moment(date).format("MMMM DD, YYYY HH:mm"); 831 return moment(date).format("MMMM DD, YYYY HH:mm");
832 }, 832 },
833 activityDate(date) { 833 activityDate(date) {
834 return moment(date).format("MMMM DD, YYYY"); 834 return moment(date).format("MMMM DD, YYYY");
835 }, 835 },
836 refreshEvents() { 836 refreshEvents() {
837 this.$refs.calendar.$emit("refetch-events"); 837 this.$refs.calendar.$emit("refetch-events");
838 }, 838 },
839 removeEvent() { 839 removeEvent() {
840 this.$refs.calendar.$emit("remove-event", this.selected); 840 this.$refs.calendar.$emit("remove-event", this.selected);
841 this.selected = {}; 841 this.selected = {};
842 }, 842 },
843 eventSelected(event) { 843 eventSelected(event) {
844 this.selected = event; 844 this.selected = event;
845 }, 845 },
846 // eventDropStart: function(event) { 846 // eventDropStart: function(event) {
847 // event.editable = false; 847 // event.editable = false;
848 // }, 848 // },
849 eventCreated(...test) { 849 eventCreated(...test) {
850 console.log(test); 850 console.log(test);
851 }, 851 },
852 getStudents() { 852 getStudents() {
853 http() 853 http()
854 .get("/getStudentsList", { 854 .get("/getStudentsList")
855 headers: {
856 Authorization: "Bearer " + this.token,
857 },
858 })
859 .then((response) => { 855 .then((response) => {
860 this.students = response.data.data; 856 this.students = response.data.data;
861 this.showLoader = false; 857 this.showLoader = false;
862 }) 858 })
863 .catch((error) => { 859 .catch((error) => {
864 // console.log("err====>", err); 860 // console.log("err====>", err);
865 this.showLoader = false; 861 this.showLoader = false;
866 if (error.response.status === 401) { 862 if (error.response.status === 401) {
867 this.$router.replace({ path: "/" }); 863 this.$router.replace({ path: "/" });
868 this.$store.dispatch("setToken", null); 864 this.$store.dispatch("setToken", null);
869 this.$store.dispatch("Id", null); 865 this.$store.dispatch("Id", null);
870 } 866 }
871 }); 867 });
872 }, 868 },
873 getParents() { 869 getParents() {
874 http() 870 http()
875 .get("/getParentsList", { 871 .get("/getParentsList")
876 headers: {
877 Authorization: "Bearer " + this.token,
878 },
879 })
880 .then((response) => { 872 .then((response) => {
881 this.parents = response.data.data; 873 this.parents = response.data.data;
882 this.showLoader = false; 874 this.showLoader = false;
883 }) 875 })
884 .catch((error) => { 876 .catch((error) => {
885 // console.log("err====>", err); 877 // console.log("err====>", err);
886 this.showLoader = false; 878 this.showLoader = false;
887 }); 879 });
888 }, 880 },
889 getTeachers() { 881 getTeachers() {
890 http() 882 http()
891 .get("/getTeachersList", { 883 .get("/getTeachersList")
892 headers: {
893 Authorization: "Bearer " + this.token,
894 },
895 })
896 .then((response) => { 884 .then((response) => {
897 this.teachers = response.data.data; 885 this.teachers = response.data.data;
898 this.showLoader = false; 886 this.showLoader = false;
899 }) 887 })
900 .catch((error) => { 888 .catch((error) => {
901 // console.log("err====>", err); 889 // console.log("err====>", err);
902 this.showLoader = false; 890 this.showLoader = false;
903 }); 891 });
904 }, 892 },
905 getClasses() { 893 getClasses() {
906 http() 894 http()
907 .get("/getClassesList", { 895 .get("/getClassesList")
908 headers: {
909 Authorization: "Bearer " + this.token,
910 },
911 })
912 .then((response) => { 896 .then((response) => {
913 this.classes = response.data.data; 897 this.classes = response.data.data;
914 this.showLoader = false; 898 this.showLoader = false;
915 }) 899 })
916 .catch((error) => { 900 .catch((error) => {
917 this.showLoader = false; 901 this.showLoader = false;
918 }); 902 });
919 }, 903 },
920 getNoticeData() { 904 getNoticeData() {
921 this.showLoader = true; 905 this.showLoader = true;
922 http() 906 http()
923 .get("/getEventsList", { 907 .get("/getEventsList")
924 headers: {
925 Authorization: "Bearer " + this.token,
926 },
927 })
928 .then((response) => { 908 .then((response) => {
929 this.noticeData = response.data.data; 909 this.noticeData = response.data.data;
930 this.showLoader = false; 910 this.showLoader = false;
931 }) 911 })
932 .catch((error) => { 912 .catch((error) => {
933 this.showLoader = false; 913 this.showLoader = false;
934 }); 914 });
935 }, 915 },
936 getUserData() { 916 getUserData() {
937 // this.showLoader = true; 917 // this.showLoader = true;
938 if (this.$store.state.role === "PARENT") { 918 if (this.$store.state.role === "PARENT") {
939 http() 919 http()
940 .get("/getParticularUserDetail", { 920 .get("/getParticularUserDetail", {
941 headers: { 921
942 Authorization: "Bearer " + this.token,
943 },
944 params: { 922 params: {
945 studentId: localStorage.getItem("parentStudentId"), 923 studentId: localStorage.getItem("parentStudentId"),
946 }, 924 },
947 }) 925 })
948 .then((response) => { 926 .then((response) => {
949 this.userData = response.data.data; 927 this.userData = response.data.data;
950 this.showLoader = false; 928 this.showLoader = false;
951 }) 929 })
952 .catch((error) => { 930 .catch((error) => {
953 this.showLoader = false; 931 this.showLoader = false;
954 }); 932 });
955 } else { 933 } else {
956 http() 934 http()
957 .get("/getParticularUserDetail", { 935 .get("/getParticularUserDetail")
958 headers: {
959 Authorization: "Bearer " + this.token,
960 },
961 })
962 .then((response) => { 936 .then((response) => {
963 this.userData = response.data.data; 937 this.userData = response.data.data;
964 this.showLoader = false; 938 this.showLoader = false;
965 }) 939 })
966 .catch((error) => { 940 .catch((error) => {
967 this.showLoader = false; 941 this.showLoader = false;
968 }); 942 });
969 } 943 }
970 }, 944 },
971 945
972 getFeesAndCollectionsData() { 946 getFeesAndCollectionsData() {
973 http() 947 http()
974 .get("/getTotalFeesAndCollections", { 948 .get("/getTotalFeesAndCollections")
975 headers: {
976 Authorization: "Bearer " + this.token,
977 },
978 })
979 .then((response) => { 949 .then((response) => {
980 this.feeData = response.data.data; 950 this.feeData = response.data.data;
981 // this.collectionData = response.data.data; 951 // this.collectionData = response.data.data;
982 this.series[0].data[0] = this.feeData.totalFees; 952 this.series[0].data[0] = this.feeData.totalFees;
983 this.series[0].data[1] = this.feeData.totalCollection; 953 this.series[0].data[1] = this.feeData.totalCollection;
984 this.showLoader = false; 954 this.showLoader = false;
985 }) 955 })
986 .catch((error) => { 956 .catch((error) => {
987 this.showLoader = false; 957 this.showLoader = false;
988 }); 958 });
989 }, 959 },
990 getExpensesData() { 960 getExpensesData() {
991 http() 961 http()
992 .get("/getTotalExpenses", { 962 .get("/getTotalExpenses")
993 headers: {
994 Authorization: "Bearer " + this.token,
995 },
996 })
997 .then((response) => { 963 .then((response) => {
998 this.expenseData = response.data.data; 964 this.expenseData = response.data.data;
999 // var array = response.data.data.sum; 965 // var array = response.data.data.sum;
1000 this.series[0].data[2] = this.expenseData.sum; 966 this.series[0].data[2] = this.expenseData.sum;
1001 this.showChart = true; 967 this.showChart = true;
1002 // this.series = [ 968 // this.series = [
1003 // { 969 // {
1004 // name: "Total", 970 // name: "Total",
1005 // data: array 971 // data: array
1006 // } 972 // }
1007 // ]; 973 // ];
1008 this.showLoader = false; 974 this.showLoader = false;
1009 }) 975 })
1010 .catch((error) => { 976 .catch((error) => {
1011 this.showLoader = false; 977 this.showLoader = false;
1012 }); 978 });
1013 }, 979 },
1014 // async getparentStudents() { 980 // async getparentStudents() {
1015 // this.showLoader = true; 981 // this.showLoader = true;
1016 // await http() 982 // await http()
1017 // .get("/parentStudentsList") 983 // .get("/parentStudentsList")
1018 // .then((response) => { 984 // .then((response) => {
1019 985
1020 // /* set values in local storage */ 986 // /* set values in local storage */
1021 // this.studentsData = response.data.data.students; 987 // this.studentsData = response.data.data.students;
1022 // this.showLoader = false; 988 // this.showLoader = false;
1023 // }) 989 // })
1024 // .catch((err) => { 990 // .catch((err) => {
1025 // console.log("err====>", err); 991 // console.log("err====>", err);
1026 // this.showLoader = false; 992 // this.showLoader = false;
1027 // }); 993 // });
1028 // await this.getCourses(parentStudentsId, classId); 994 // await this.getCourses(parentStudentsId, classId);
1029 // await this.getAnnoucementes(classId); 995 // await this.getAnnoucementes(classId);
1030 // }, 996 // },
1031 async getCourses(parentStudentsId, classId) { 997 async getCourses(parentStudentsId, classId) {
1032 /* getStudentCourses - to get courseData - defined in GetApis.js*/ 998 /* getStudentCourses - to get courseData - defined in GetApis.js*/
1033 await this.getStudentCourses({ 999 await this.getStudentCourses({
1034 classId: localStorage.getItem("parentClassId"), 1000 classId: localStorage.getItem("parentClassId"),
1035 studentId: localStorage.getItem("parentStudentId"), 1001 studentId: localStorage.getItem("parentStudentId"),
1036 }); 1002 });
1037 }, 1003 },
1038 getAnnoucementes(classId) { 1004 getAnnoucementes(classId) {
1039 this.showLoader = true; 1005 this.showLoader = true;
1040 http() 1006 http()
1041 .get("/getAnnoucementesList", { 1007 .get("/getAnnoucementesList", {
1042 params: { 1008 params: {
1043 classId: localStorage.getItem("parentClassId"), 1009 classId: localStorage.getItem("parentClassId"),
1044 }, 1010 },
1045 }) 1011 })
1046 .then((response) => { 1012 .then((response) => {
1047 this.annoucementData = response.data.data; 1013 this.annoucementData = response.data.data;
1048 this.showLoader = false; 1014 this.showLoader = false;
1049 }) 1015 })
1050 .catch((err) => { 1016 .catch((err) => {
1051 console.log("err====>", err); 1017 console.log("err====>", err);
1052 this.showLoader = false; 1018 this.showLoader = false;
1053 }); 1019 });
1054 }, 1020 },
1055 async getMeetingEventes() { 1021 async getMeetingEventes() {
1056 if (this.role == "TEACHER") { 1022 if (this.role == "TEACHER") {
1057 this.showLoader = true; 1023 this.showLoader = true;
1058 await http() 1024 await http()
1059 .get("/getMeetingEventesList", { 1025 .get("/getMeetingEventesList")
1060 headers: {
1061 Authorization: "Bearer " + this.token,
1062 },
1063 })
1064 .then((response) => { 1026 .then((response) => {
1065 var activityList = response.data.data; 1027 var activityList = response.data.data;
1066 this.activityList = activityList; 1028 this.activityList = activityList;
1067 this.showLoader = false; 1029 this.showLoader = false;
1068 1030
1069 /* set activityEvents array to highlight event dates in calender */ 1031 /* set activityEvents array to highlight event dates in calender */
1070 for (var i = 0; i < this.activityList.length; i++) { 1032 for (var i = 0; i < this.activityList.length; i++) {
1071 let obj = {}; 1033 let obj = {};
1072 obj.date = moment(this.activityList[i].dateOfEvent).format( 1034 obj.date = moment(this.activityList[i].dateOfEvent).format(
1073 "YYYY/MM/DD" 1035 "YYYY/MM/DD"
1074 ); 1036 );
1075 obj.title = this.activityList[i].title; 1037 obj.title = this.activityList[i].title;
1076 obj._id = this.activityList[i]._id; 1038 obj._id = this.activityList[i]._id;
1077 this.activityEvents.push(obj); 1039 this.activityEvents.push(obj);
1078 } 1040 }
1079 }) 1041 })
1080 .catch((error) => { 1042 .catch((error) => {
1081 this.showLoader = false; 1043 this.showLoader = false;
1082 }); 1044 });
1083 } 1045 }
1084 }, 1046 },
1085 1047
1086 }, 1048 },
1087 1049
1088 mounted() { 1050 mounted() {
1089 // = this.$store.state.schoolToken; 1051 // = this.$store.state.schoolToken;
1090 // console.log("this.$store.state.role", this.token); 1052 // console.log("this.$store.state.role", this.token);
1091 // this.getUsersList(); 1053 // this.getUsersList();
1092 }, 1054 },
1093 1055
1094 async created() { 1056 async created() {
1095 if (this.$store.state.role === "ADMIN") { 1057 if (this.$store.state.role === "ADMIN") {
1096 this.token = this.$store.state.token; 1058 // this.token = this.$store.state.token;
1097 await this.getFeesAndCollectionsData(); 1059 await this.getFeesAndCollectionsData();
1098 await this.getExpensesData(); 1060 await this.getExpensesData();
1099 } else if (this.$store.state.schoolRole === "SUPERADMIN") { 1061 } else if (this.$store.state.schoolRole === "SUPERADMIN") {
1100 this.token = this.$store.state.schoolToken; 1062 // this.token = this.$store.state.schoolToken;
1101 await this.getFeesAndCollectionsData(); 1063 await this.getFeesAndCollectionsData();
1102 await this.getExpensesData(); 1064 await this.getExpensesData();
1103 } else if (this.$store.state.role === "TEACHER") { 1065 } else if (this.$store.state.role === "TEACHER") {
1104 this.token = this.$store.state.token; 1066 // this.token = this.$store.state.token;
1105 } else if (this.$store.state.role === "ACCOUNTANT") { 1067 } else if (this.$store.state.role === "ACCOUNTANT") {
1106 this.token = this.$store.state.token; 1068 // this.token = this.$store.state.token;
1107 } else if (this.$store.state.role === "LIBRARIAN") { 1069 } else if (this.$store.state.role === "LIBRARIAN") {
1108 this.token = this.$store.state.token; 1070 // this.token = this.$store.state.token;
1109 } else if (this.$store.state.role === "PARENT") { 1071 } else if (this.$store.state.role === "PARENT") {
1110 this.token = this.$store.state.token; 1072 // this.token = this.$store.state.token;
1111 // await this.getparentStudents(); 1073 // await this.getparentStudents();
1112 this.studentsData = this.$store.getters.GET_STUDENTS_DATA; 1074 this.studentsData = this.$store.getters.GET_STUDENTS_DATA;
1113 console.log("students data - ",this.studentsData) 1075 console.log("students data - ",this.studentsData)
1114 await this.getCourses(); 1076 await this.getCourses();
1115 await this.getAnnoucementes(); 1077 await this.getAnnoucementes();
1116 } 1078 }
1117 this.role = this.$store.state.role; 1079 this.role = this.$store.state.role;
1118 1080
1119 await this.getStudents(); 1081 await this.getStudents();
1120 await this.getTeachers(); 1082 await this.getTeachers();
1121 await this.getParents(); 1083 await this.getParents();
1122 await this.getClasses(); 1084 await this.getClasses();
1123 await this.getNoticeData(); 1085 await this.getNoticeData();
1124 await this.getUserData(); 1086 await this.getUserData();
1125 1087
1126 /* get Latest events list for student login*/ 1088 /* get Latest events list for student login*/
1127 if (this.$store.state.role == "PARENT") { 1089 if (this.$store.state.role == "PARENT") {
1128 let response = await this.studentMeetingEvents({ 1090 let response = await this.studentMeetingEvents({
1129 studentId: localStorage.getItem("parentStudentId"), 1091 studentId: localStorage.getItem("parentStudentId"),
1130 }); 1092 });
1131 this.activityList = response.data.data; 1093 this.activityList = response.data.data;
1132 1094
1133 /* set activityEvents array to highlight event dates in calender */ 1095 /* set activityEvents array to highlight event dates in calender */
1134 for (var i = 0; i < this.activityList.length; i++) { 1096 for (var i = 0; i < this.activityList.length; i++) {
1135 let obj = {}; 1097 let obj = {};
1136 obj.date = moment(this.activityList[i].meetingEvent.dateOfEvent).format( 1098 obj.date = moment(this.activityList[i].meetingEvent.dateOfEvent).format(
1137 "YYYY/MM/DD" 1099 "YYYY/MM/DD"
1138 ); 1100 );
1139 obj.title = this.activityList[i].meetingEvent.title; 1101 obj.title = this.activityList[i].meetingEvent.title;
1140 obj._id = this.activityList[i].meetingEvent._id; 1102 obj._id = this.activityList[i].meetingEvent._id;
1141 this.activityEvents.push(obj); 1103 this.activityEvents.push(obj);
1142 } 1104 }
1143 } 1105 }
1144 1106
1145 /* get Latest events list for teacher login*/ 1107 /* get Latest events list for teacher login*/
1146 if (this.role == "TEACHER") { 1108 if (this.role == "TEACHER") {
1147 await this.getMeetingEventes(); 1109 await this.getMeetingEventes();
1148 } 1110 }
1149 }, 1111 },
1150 }; 1112 };
1151 </script> 1113 </script>
1152 1114
1153 <style scoped> 1115 <style scoped>
1154 @import "fullcalendar/dist/fullcalendar.css"; 1116 @import "fullcalendar/dist/fullcalendar.css";
1155 1117
1156 a { 1118 a {
1157 color: white; 1119 color: white;
1158 } 1120 }
1159 </style> 1121 </style>