Blame view

src/pages/Dashboard/LiveOnlineClass.vue 14.3 KB
ac24ec07a   Amber Dev   added live online
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  <template>
    <div class="body-color">
      <!-- LOADER -->
      <div class="loader" v-if="showLoader">
        <v-progress-circular indeterminate color="white"></v-progress-circular>
      </div>
  
      <!-- SNACKBAR -->
      <v-snackbar
        :timeout="timeout"
        :top="y === 'top'"
        :right="x === 'right'"
        :vertical="mode === 'vertical'"
        v-model="snackbar"
        :color="snackbarColor"
      >
        {{ text }}
        <v-spacer></v-spacer>
        <v-btn flat text @click="snackbar = false">X</v-btn>
      </v-snackbar>
ac24ec07a   Amber Dev   added live online
21
22
      <v-container grid-list-xl class="pt-0">
        <v-layout row wrap class="mt-1">
e91641fe5   Amber Dev   solved bugs
23
          <!-- if logged in user is parent -->
30e404e65   Amber Dev   added live session
24
25
26
27
          <v-flex xs12 sm12 md9 v-if=" $store.state.role === 'PARENT' ">
            <v-layout column>
              <!-- HEADING -->
              <v-flex>
e91641fe5   Amber Dev   solved bugs
28
29
30
                <div
                  class="title side-bar-color font-weight-bold"
                >Live Online Classes - {{$route.query.chapterName}}</div>
9a4a64725   Amber Dev   hid jitsi ending ...
31
                <!-- <div class="subheading grey--text lighten-1">{{liveLink}}</div> -->
edfe025fa   Amber Dev   added jitsi meet
32
                <!-- <div
30e404e65   Amber Dev   added live session
33
                  class="subheading grey--text lighten-1"
852713654   Amber Dev   added live class ...
34
                >The session started at 1:00 there is 1 moderator</div>-->
30e404e65   Amber Dev   added live session
35
36
37
              </v-flex>
  
              <!-- JOIN OR END SESSION -->
46997790d   Shikha Mishra   remove join sessi...
38
              <v-flex v-if="showJoinSessionButton">
30e404e65   Amber Dev   added live session
39
                <div>
edfe025fa   Amber Dev   added jitsi meet
40
41
42
43
44
                  <v-btn
                    round
                    class="open-dialog-button"
                    dark
                    v-if="studentBtn"
d23a27a41   Amber Dev   added select All ...
45
                    @click="showLoader = true;startChat();"
edfe025fa   Amber Dev   added jitsi meet
46
                  >{{studentBtn}}</v-btn>
e659e774f   Shikha Mishra   integrate updateL...
47
                  <span class="subheading grey--twxt lighten-1" v-else>Session hasn't started yet</span>
30e404e65   Amber Dev   added live session
48
49
                </div>
              </v-flex>
375b62cd1   Amber Dev   added video for t...
50
              <v-flex id="studentClone">
edfe025fa   Amber Dev   added jitsi meet
51
52
                <div id="jitsi-container"></div>
              </v-flex>
30e404e65   Amber Dev   added live session
53
54
            </v-layout>
          </v-flex>
e91641fe5   Amber Dev   solved bugs
55
56
  
          <!-- if logged in user is teacher -->
30e404e65   Amber Dev   added live session
57
          <v-flex xs12 sm12 md12 v-else>
ac24ec07a   Amber Dev   added live online
58
59
60
            <v-layout column>
              <!-- HEADING -->
              <v-flex>
cf2d498a8   Amber Dev   made live session...
61
62
63
                <div
                  class="title side-bar-color font-weight-bold"
                >Live Online Classes - {{$route.query.chapterName}}</div>
852713654   Amber Dev   added live class ...
64
65
                <!-- <div class="subheading grey--text lighten-1"></div> -->
                <!-- <div
ac24ec07a   Amber Dev   added live online
66
                  class="subheading grey--text lighten-1"
852713654   Amber Dev   added live class ...
67
                >The session started at 1:00 there is 1 moderator</div>-->
ac24ec07a   Amber Dev   added live online
68
69
70
              </v-flex>
  
              <!-- JOIN OR END SESSION -->
92c6232a6   Shikha Mishra   password required...
71
              <v-flex v-if="showStartSessionButton">
ac24ec07a   Amber Dev   added live online
72
                <div>
860da881d   Shikha Mishra   comment all consoles
73
74
75
76
77
78
                  <v-btn
                    round
                    class="open-dialog-button"
                    dark
                    @click="showLoader = true;startChat()"
                  >Start Session</v-btn>
ac24ec07a   Amber Dev   added live online
79
80
                </div>
              </v-flex>
375b62cd1   Amber Dev   added video for t...
81
              <v-flex id="teacherClone">
e91641fe5   Amber Dev   solved bugs
82
                <div id="jitsi-container"></div>
ac24ec07a   Amber Dev   added live online
83
84
85
86
87
              </v-flex>
            </v-layout>
          </v-flex>
  
          <v-spacer></v-spacer>
e91641fe5   Amber Dev   solved bugs
88
          <!-- COURSES SIDE BAR- positioned to the right of the page -->
de958fcfc   Amber Dev   added upload pdf
89
          <!-- <v-flex xs3>
ac24ec07a   Amber Dev   added live online
90
            <v-card class="elevation-0 card-border" height="100%">
e91641fe5   Amber Dev   solved bugs
91
              <CoursesSideBar></CoursesSideBar>
ac24ec07a   Amber Dev   added live online
92
            </v-card>
de958fcfc   Amber Dev   added upload pdf
93
          </v-flex>-->
ac24ec07a   Amber Dev   added live online
94
95
96
97
98
99
100
101
        </v-layout>
      </v-container>
    </div>
  </template>
  <script>
  import AllApiCalls from "@/Services/AllApiCalls.js";
  import http from "@/Services/http.js";
  import moment from "moment";
e91641fe5   Amber Dev   solved bugs
102
103
  import Meet from "@/pages/Meet/meet.vue";
  import CoursesSideBar from "@/pages/Common/CoursesSideBar.vue";
ac24ec07a   Amber Dev   added live online
104
105
  export default {
    mixins: [AllApiCalls],
e91641fe5   Amber Dev   solved bugs
106
    components: {
375b62cd1   Amber Dev   added video for t...
107
      CoursesSideBar,
e91641fe5   Amber Dev   solved bugs
108
    },
ac24ec07a   Amber Dev   added live online
109
110
    data() {
      return {
e91641fe5   Amber Dev   solved bugs
111
        startLiveSession: "",
852713654   Amber Dev   added live class ...
112
        studentBtn: "",
ac24ec07a   Amber Dev   added live online
113
114
115
116
  
        // DATA TABLE
        search: "",
        pagination: {
375b62cd1   Amber Dev   added video for t...
117
          rowsPerPage: 10,
ac24ec07a   Amber Dev   added live online
118
119
120
121
122
123
        },
        liveOnlineHeaders: [
          {
            text: "Playback",
            value: "attachementUrl",
            sortable: false,
375b62cd1   Amber Dev   added video for t...
124
            align: "center",
ac24ec07a   Amber Dev   added live online
125
126
127
128
129
          },
          {
            text: "Meeting",
            align: "center",
            sortable: false,
375b62cd1   Amber Dev   added video for t...
130
            value: "",
ac24ec07a   Amber Dev   added live online
131
132
133
134
135
          },
          {
            text: "Recording",
            value: "",
            sortable: false,
375b62cd1   Amber Dev   added video for t...
136
            align: "center",
ac24ec07a   Amber Dev   added live online
137
138
139
140
141
          },
          {
            text: "Description Preview",
            value: "",
            sortable: false,
375b62cd1   Amber Dev   added video for t...
142
            align: "center",
ac24ec07a   Amber Dev   added live online
143
144
145
          },
          { text: "Date", value: "", sortable: false, align: "center" },
          { text: "Duration", value: "", sortable: false, align: "center" },
375b62cd1   Amber Dev   added video for t...
146
          { text: "Toolbar", value: "", sortable: false, align: "center" },
ac24ec07a   Amber Dev   added live online
147
148
        ],
        liveOnlineItems: [],
e91641fe5   Amber Dev   solved bugs
149
        // JITSI CONTAINER
edfe025fa   Amber Dev   added jitsi meet
150
        liveLink: "",
e91641fe5   Amber Dev   solved bugs
151
152
        token: "",
        selectStudents: {},
375b62cd1   Amber Dev   added video for t...
153
154
        classRules: [(v) => !!v || " Class Name is required"],
        sectionRules: [(v) => !!v || " Section Name is required"],
e91641fe5   Amber Dev   solved bugs
155
156
157
158
159
        addclass: [],
        addSection: [],
        loading: false,
        room: "",
        username: "",
375b62cd1   Amber Dev   added video for t...
160
        roomPassword: "",
e659e774f   Shikha Mishra   integrate updateL...
161
        //   counter: 0,
b6e4f6eaa   Shikha Mishra   Check user's devi...
162
        appLink: "",
92c6232a6   Shikha Mishra   password required...
163
        showStartSessionButton: true,
46997790d   Shikha Mishra   remove join sessi...
164
        showJoinSessionButton: true,
ac24ec07a   Amber Dev   added live online
165
166
167
      };
    },
    methods: {
6e1cb5c96   Amber Dev   added token
168
      async startChat() {
375b62cd1   Amber Dev   added video for t...
169
        if (this.$store.state.role === "PARENT") {
d32525d71   Shikha Mishra   Start video again...
170
171
172
173
174
175
176
177
178
179
          // if (this.counter == 0) {
          //   console.log("enter start chat");
          const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);
          if (isMobile) {
            window.open(this.appLink);
            this.showLoader = false;
          } else {
            this.startConference();
            // this.counter += 1;
            this.showJoinSessionButton = false;
6e1cb5c96   Amber Dev   added token
180
          }
d32525d71   Shikha Mishra   Start video again...
181
          // }
375b62cd1   Amber Dev   added video for t...
182
183
        }
        if (this.$store.state.role === "TEACHER") {
d32525d71   Shikha Mishra   Start video again...
184
185
186
187
          // if (this.counter == 0) {
          this.createRoom();
          //   this.counter += 1;
          // }
375b62cd1   Amber Dev   added video for t...
188
189
        }
      },
e91641fe5   Amber Dev   solved bugs
190
191
      // JITSI CONTAINER
      startConference() {
860da881d   Shikha Mishra   comment all consoles
192
        //   console.log("yes session started");
e91641fe5   Amber Dev   solved bugs
193
194
        var _this = this;
        try {
01a388dfe   Amber Dev   added intrack logo
195
          const domain = "meet.intrack.in";
e91641fe5   Amber Dev   solved bugs
196
197
198
199
          const options = {
            audioInput: "<deviceLabel>",
            audioOutput: "<deviceLabel>",
            videoInput: "<deviceLabel>",
edfe025fa   Amber Dev   added jitsi meet
200
            prejoinPageEnabled: false,
e91641fe5   Amber Dev   solved bugs
201
202
203
204
205
            roomName: this.room,
            height: 500,
            parentNode: document.getElementById("jitsi-container"),
            interfaceConfigOverwrite: {
              filmStripOnly: false,
9a4a64725   Amber Dev   hid jitsi ending ...
206
207
              SHOW_PROMOTIONAL_CLOSE_PAGE: false,
              SHOW_POWERED_BY: false,
e91641fe5   Amber Dev   solved bugs
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
              SHOW_JITSI_WATERMARK: false,
              TOOLBAR_BUTTONS: [
                "microphone",
                "camera",
                "closedcaptions",
                "desktop",
                "fullscreen",
                "fodeviceselection",
                "hangup",
                "profile",
                "info",
                "chat",
                "recording",
                "livestreaming",
                "etherpad",
                "sharedvideo",
                "settings",
                "raisehand",
                "videoquality",
                "filmstrip",
                "invite",
                "feedback",
                "stats",
                "shortcuts",
375b62cd1   Amber Dev   added video for t...
232
233
                "tileview",
              ],
e91641fe5   Amber Dev   solved bugs
234
235
            },
            configOverwrite: {
375b62cd1   Amber Dev   added video for t...
236
              disableSimulcast: false,
e91641fe5   Amber Dev   solved bugs
237
238
            },
            teacherName: "",
e05668b28   Shikha Mishra   Clear preavious d...
239
            room: "",
e91641fe5   Amber Dev   solved bugs
240
          };
a690a86fb   Neeraj Sharma   implement meet fu...
241
          _this.api = new JitsiMeetExternalAPI(domain, options);
860da881d   Shikha Mishra   comment all consoles
242
          // console.log("this.api ", this.api);
a690a86fb   Neeraj Sharma   implement meet fu...
243
          _this.api.addEventListener("videoConferenceJoined", () => {
90bec8782   Amber Dev   added loader to v...
244
            this.showLoader = false;
e05668b28   Shikha Mishra   Clear preavious d...
245
246
247
248
            setTimeout(() => {
              _this.api.executeCommand("displayName", _this.username);
              _this.api.executeCommand("password", _this.roomPassword);
            }, 1000);
ac24ec07a   Amber Dev   added live online
249
          });
860da881d   Shikha Mishra   comment all consoles
250

32eff55c5   Shikha Mishra   password required...
251
252
253
          _this.api.on("passwordRequired", () => {
            _this.api.executeCommand("password", _this.roomPassword);
          });
a690a86fb   Neeraj Sharma   implement meet fu...
254
          _this.api.on("readyToClose", () => {
92c6232a6   Shikha Mishra   password required...
255
256
257
258
            //   this.$router.push({ name: "Refresh" });
            let jitsi = document.getElementById("jitsi-container");
            jitsi.innerHTML = "";
            this.showStartSessionButton = true;
46997790d   Shikha Mishra   remove join sessi...
259
            this.showJoinSessionButton = true;
e659e774f   Shikha Mishra   integrate updateL...
260
261
262
            if (this.$store.state.role === "TEACHER") {
              this.updateLiveClass();
            }
9a4a64725   Amber Dev   hid jitsi ending ...
263
          });
e91641fe5   Amber Dev   solved bugs
264
        } catch (error) {
860da881d   Shikha Mishra   comment all consoles
265
          // console.error("Failed to load Jitsi API", error);
ac24ec07a   Amber Dev   added live online
266
267
        }
      },
e91641fe5   Amber Dev   solved bugs
268
269
270
271
272
273
274
275
276
277
278
      openRoom() {
        // verify the JitsiMeetExternalAPI constructor is added to the global..
        // if (this.teacherName != "" || this.room != "") {
        //   if (window.JitsiMeetExternalAPI) {
        //     // var person = prompt("Please enter your name:", "Rabie");
        //     if (person != null || person != "") this.username = this.teacherName;
        //     var room = prompt("Please enter your room:", "Test Room");
        //     if (room != null || room != "") this.room = this.room;
        //     this.startConference();
        //   } else alert("Jitsi Meet API script not loaded");
        // }
ac24ec07a   Amber Dev   added live online
279
      },
e91641fe5   Amber Dev   solved bugs
280
      createRoom(classId) {
8b7976c3a   Amber Dev   added loader for ...
281
        // this.showLoader = true;
e91641fe5   Amber Dev   solved bugs
282
        var classId = {
375b62cd1   Amber Dev   added video for t...
283
          classId: classId,
ac24ec07a   Amber Dev   added live online
284
285
        };
        http()
e91641fe5   Amber Dev   solved bugs
286
287
288
          .post("/createLiveClasses", {
            classId: this.$route.query.classId,
            courseId: this.$route.query.courseId,
375b62cd1   Amber Dev   added video for t...
289
            chapterId: this.$route.query.chapterId,
ac24ec07a   Amber Dev   added live online
290
          })
375b62cd1   Amber Dev   added video for t...
291
          .then((response) => {
e91641fe5   Amber Dev   solved bugs
292
            // this.addSection = response.data.data;
860da881d   Shikha Mishra   comment all consoles
293
            //   console.log("CREATE___ROOOM", response.data);
a690a86fb   Neeraj Sharma   implement meet fu...
294
            var room = response.data.data.roomName;
860da881d   Shikha Mishra   comment all consoles
295
            var username = localStorage.getItem("teacherName");
a690a86fb   Neeraj Sharma   implement meet fu...
296
            var roomPassword = response.data.data.password;
b6e4f6eaa   Shikha Mishra   Check user's devi...
297
            this.appLink = response.data.data.appLink;
e659e774f   Shikha Mishra   integrate updateL...
298
            this.liveClassId = response.data.data._id;
860da881d   Shikha Mishra   comment all consoles
299
300
301
302
303
304
305
306
            //   console.log(
            //     "room",
            //     room,
            //     "username",
            //     username,
            //     "roomPassword",
            //     roomPassword
            //   );
e91641fe5   Amber Dev   solved bugs
307
            var this_ = this;
a690a86fb   Neeraj Sharma   implement meet fu...
308
            if (username != "" || room != "") {
b6e4f6eaa   Shikha Mishra   Check user's devi...
309
310
311
312
313
314
              const isMobile = /iPhone|iPad|iPod|Android/i.test(
                navigator.userAgent
              );
              if (isMobile) {
                //   console.log("==TEACHER=appLink==", this.appLink);
                window.open(this.appLink);
92c6232a6   Shikha Mishra   password required...
315
316
                this.showLoader = false;
                this.showStartSessionButton = false;
b6e4f6eaa   Shikha Mishra   Check user's devi...
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
              } else {
                if (window.JitsiMeetExternalAPI) {
                  // var person = prompt("Please enter your name:", "Rabie");
                  if (username != null || username != "") {
                    this_.username = username;
                  }
                  // var room = prompt("Please enter your room:", "Test Room");
                  if (room != null || room != "") {
                    this_.room = room;
                  }
                  if (roomPassword != null || roomPassword != "") {
                    this_.roomPassword = roomPassword;
                  }
                } else alert("Jitsi Meet API script not loaded");
                this_.startConference();
92c6232a6   Shikha Mishra   password required...
332
                this.showStartSessionButton = false;
b6e4f6eaa   Shikha Mishra   Check user's devi...
333
              }
e91641fe5   Amber Dev   solved bugs
334
            }
ac24ec07a   Amber Dev   added live online
335
          })
375b62cd1   Amber Dev   added video for t...
336
          .catch((err) => {
ac24ec07a   Amber Dev   added live online
337
338
            this.showLoader = false;
          });
375b62cd1   Amber Dev   added video for t...
339
      },
e659e774f   Shikha Mishra   integrate updateL...
340
341
342
343
344
345
346
347
348
349
350
351
352
353
      updateLiveClass() {
        this.showLoader = true;
        var payloadData = {
          liveClassesId: this.liveClassId,
        };
        http()
          .put("/updateLiveClasses", payloadData)
          .then((response) => {
            this.showLoader = false;
          })
          .catch((error) => {
            this.showLoader = false;
          });
      },
375b62cd1   Amber Dev   added video for t...
354
      async studentClasses() {
fa975e45a   Amber Dev   change students d...
355
356
357
358
        this.liveLink = "";
        this.room = "";
        this.username = "";
        this.roomPassword = "";
375b62cd1   Amber Dev   added video for t...
359
360
361
362
363
364
        /* getLiveClassesesList - To up date line under heading*/
        let response = await this.getLiveClassesesList({
          classId: this.$route.query.classId,
          courseId: this.$route.query.courseId,
          chapterId: this.$route.query.chapterId,
        });
860da881d   Shikha Mishra   comment all consoles
365
        //   console.log("response getLiveClassesesList- ", response);
852713654   Amber Dev   added live class ...
366

375b62cd1   Amber Dev   added video for t...
367
        /* CHECK RESPONSE TO ASSIGN MESSAGE INSIDE BUTTON */
6e1cb5c96   Amber Dev   added token
368
369
370
371
372
373
374
375
        if (response.data.data[0].sessionStatus == "ENDED") {
          // this.startLiveSession = "Start Session";
          this.studentBtn = "";
        }
        if (response.data.data[0].sessionStatus == "STARTED") {
          // this.startLiveSession = "Join Session";
          this.studentBtn = "Join Session";
        }
375b62cd1   Amber Dev   added video for t...
376
377
378
379
380
        if (response.data.data.length == 0) {
          this.startLiveSession = "Start Session";
          this.studentBtn = "";
        } else {
          this.liveLink = response.data.data[0].link;
b6e4f6eaa   Shikha Mishra   Check user's devi...
381
          this.appLink = response.data.data[0].appLink;
fa975e45a   Amber Dev   change students d...
382
          var room = response.data.data[0].roomName;
a690a86fb   Neeraj Sharma   implement meet fu...
383
384
          var username = this.currentUser;
          var roomPassword = response.data.data[0].password;
375b62cd1   Amber Dev   added video for t...
385
          var this_ = this;
a690a86fb   Neeraj Sharma   implement meet fu...
386
          // console.log(this.room, this.roomPassword, this.username);
edfe025fa   Amber Dev   added jitsi meet
387

fa975e45a   Amber Dev   change students d...
388
          if (username != "" || room != "") {
375b62cd1   Amber Dev   added video for t...
389
390
            if (window.JitsiMeetExternalAPI) {
              // var person = prompt("Please enter your name:", "Rabie");
fa975e45a   Amber Dev   change students d...
391
              if (username != null || username != "") {
a690a86fb   Neeraj Sharma   implement meet fu...
392
393
394
395
                this_.username = username;
              }
              if (roomPassword != null || roomPassword != "") {
                this_.roomPassword = roomPassword;
375b62cd1   Amber Dev   added video for t...
396
397
              }
              // var room = prompt("Please enter your room:", "Test Room");
fa975e45a   Amber Dev   change students d...
398
              if (room != null || room != "") {
a690a86fb   Neeraj Sharma   implement meet fu...
399
                this_.room = room;
375b62cd1   Amber Dev   added video for t...
400
              }
6e1cb5c96   Amber Dev   added token
401
              // this.startConference();
edfe025fa   Amber Dev   added jitsi meet
402
            }
edfe025fa   Amber Dev   added jitsi meet
403
          }
852713654   Amber Dev   added live class ...
404
        }
375b62cd1   Amber Dev   added video for t...
405
406
      },
    },
375b62cd1   Amber Dev   added video for t...
407
    async created() {
860da881d   Shikha Mishra   comment all consoles
408
409
410
411
      // console.log(
      //   "this.$store.state.studentsData",
      //   this.$store.state.studentsData[0].name
      // );
a690a86fb   Neeraj Sharma   implement meet fu...
412
      this.currentUser = localStorage.getItem("studentName");
fa975e45a   Amber Dev   change students d...
413
      this.token = this.$store.state.token;
375b62cd1   Amber Dev   added video for t...
414
      if (this.$store.state.role === "PARENT") {
6e1cb5c96   Amber Dev   added token
415
        await this.studentClasses();
e91641fe5   Amber Dev   solved bugs
416
417
418
419
420
421
      }
  
      /* getStudentCourses - to get courseData - defined in GetApis.js*/
      if (this.$store.state.role === "PARENT") {
        await this.getStudentCourses({
          classId: localStorage.getItem("parentClassId"),
375b62cd1   Amber Dev   added video for t...
422
          studentId: localStorage.getItem("parentStudentId"),
e91641fe5   Amber Dev   solved bugs
423
424
        });
      }
375b62cd1   Amber Dev   added video for t...
425
    },
ac24ec07a   Amber Dev   added live online
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
  };
  </script>
  <style scoped>
  .side-bar-color {
    color: #827bfa !important;
    /* border-top-right-radius: 74px !important; */
  }
  .card-border {
    border: 1px #bdbdbd solid;
    border-radius: 3px;
  }
  .reply-desc {
    border: 1px solid #f2f2f2;
  }
  .open-dialog-button {
    background: #827bfa !important;
    border-color: #827bfa !important;
    text-transform: none !important;
  }
  
  .reply-btn {
    background: #feb83c !important;
    border-color: #feb83c !important;
    text-transform: none !important;
    -webkit-box-shadow: none !important;
    box-shadow: none !important;
  }
e91641fe5   Amber Dev   solved bugs
453
454
455
  #jitsi-container {
    height: 100vh;
  }
ac24ec07a   Amber Dev   added live online
456
  </style>