Blame view

src/pages/Dashboard/LiveOnlineClass.vue 13.6 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
38
39
              </v-flex>
  
              <!-- JOIN OR END SESSION -->
              <v-flex>
                <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>
852713654   Amber Dev   added live class ...
47
                  <span class="subheading grey--twxt lighten-1" v-else>Session hasnt 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
161
        roomPassword: "",
        counter: 0,
b6e4f6eaa   Shikha Mishra   Check user's devi...
162
        appLink: "",
92c6232a6   Shikha Mishra   password required...
163
        showStartSessionButton: true,
ac24ec07a   Amber Dev   added live online
164
165
166
      };
    },
    methods: {
6e1cb5c96   Amber Dev   added token
167
      async startChat() {
375b62cd1   Amber Dev   added video for t...
168
        if (this.$store.state.role === "PARENT") {
9a4a64725   Amber Dev   hid jitsi ending ...
169
          if (this.counter == 0) {
860da881d   Shikha Mishra   comment all consoles
170
            //   console.log("enter start chat");
b6e4f6eaa   Shikha Mishra   Check user's devi...
171
172
173
174
175
176
            const isMobile = /iPhone|iPad|iPod|Android/i.test(
              navigator.userAgent
            );
            if (isMobile) {
              // console.log("==PARENT=appLink==", this.appLink);
              window.open(this.appLink);
92c6232a6   Shikha Mishra   password required...
177
              this.showLoader = false;
b6e4f6eaa   Shikha Mishra   Check user's devi...
178
179
180
181
            } else {
              this.startConference();
              this.counter += 1;
            }
6e1cb5c96   Amber Dev   added token
182
          }
375b62cd1   Amber Dev   added video for t...
183
184
        }
        if (this.$store.state.role === "TEACHER") {
9a4a64725   Amber Dev   hid jitsi ending ...
185
          if (this.counter == 0) {
fa975e45a   Amber Dev   change students d...
186
            this.createRoom();
9a4a64725   Amber Dev   hid jitsi ending ...
187
            this.counter += 1;
fa975e45a   Amber Dev   change students d...
188
          }
375b62cd1   Amber Dev   added video for t...
189
190
        }
      },
e91641fe5   Amber Dev   solved bugs
191
192
      // JITSI CONTAINER
      startConference() {
860da881d   Shikha Mishra   comment all consoles
193
        //   console.log("yes session started");
e91641fe5   Amber Dev   solved bugs
194
195
        var _this = this;
        try {
01a388dfe   Amber Dev   added intrack logo
196
          const domain = "meet.intrack.in";
e91641fe5   Amber Dev   solved bugs
197
198
199
200
          const options = {
            audioInput: "<deviceLabel>",
            audioOutput: "<deviceLabel>",
            videoInput: "<deviceLabel>",
edfe025fa   Amber Dev   added jitsi meet
201
            prejoinPageEnabled: false,
e91641fe5   Amber Dev   solved bugs
202
203
204
205
206
            roomName: this.room,
            height: 500,
            parentNode: document.getElementById("jitsi-container"),
            interfaceConfigOverwrite: {
              filmStripOnly: false,
9a4a64725   Amber Dev   hid jitsi ending ...
207
208
              SHOW_PROMOTIONAL_CLOSE_PAGE: false,
              SHOW_POWERED_BY: false,
e91641fe5   Amber Dev   solved bugs
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
              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...
233
234
                "tileview",
              ],
e91641fe5   Amber Dev   solved bugs
235
236
            },
            configOverwrite: {
375b62cd1   Amber Dev   added video for t...
237
              disableSimulcast: false,
e91641fe5   Amber Dev   solved bugs
238
239
            },
            teacherName: "",
e05668b28   Shikha Mishra   Clear preavious d...
240
            room: "",
e91641fe5   Amber Dev   solved bugs
241
          };
a690a86fb   Neeraj Sharma   implement meet fu...
242
          _this.api = new JitsiMeetExternalAPI(domain, options);
860da881d   Shikha Mishra   comment all consoles
243
          // console.log("this.api ", this.api);
a690a86fb   Neeraj Sharma   implement meet fu...
244
          _this.api.addEventListener("videoConferenceJoined", () => {
90bec8782   Amber Dev   added loader to v...
245
            this.showLoader = false;
e05668b28   Shikha Mishra   Clear preavious d...
246
247
248
249
            setTimeout(() => {
              _this.api.executeCommand("displayName", _this.username);
              _this.api.executeCommand("password", _this.roomPassword);
            }, 1000);
ac24ec07a   Amber Dev   added live online
250
          });
860da881d   Shikha Mishra   comment all consoles
251

a690a86fb   Neeraj Sharma   implement meet fu...
252
          _this.api.on("readyToClose", () => {
92c6232a6   Shikha Mishra   password required...
253
254
255
256
            //   this.$router.push({ name: "Refresh" });
            let jitsi = document.getElementById("jitsi-container");
            jitsi.innerHTML = "";
            this.showStartSessionButton = true;
9a4a64725   Amber Dev   hid jitsi ending ...
257
          });
e91641fe5   Amber Dev   solved bugs
258
        } catch (error) {
860da881d   Shikha Mishra   comment all consoles
259
          // console.error("Failed to load Jitsi API", error);
ac24ec07a   Amber Dev   added live online
260
261
        }
      },
e91641fe5   Amber Dev   solved bugs
262
263
264
265
266
267
268
269
270
271
272
      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
273
      },
e91641fe5   Amber Dev   solved bugs
274
      createRoom(classId) {
8b7976c3a   Amber Dev   added loader for ...
275
        // this.showLoader = true;
e91641fe5   Amber Dev   solved bugs
276
        var classId = {
375b62cd1   Amber Dev   added video for t...
277
          classId: classId,
ac24ec07a   Amber Dev   added live online
278
279
        };
        http()
e91641fe5   Amber Dev   solved bugs
280
281
282
          .post("/createLiveClasses", {
            classId: this.$route.query.classId,
            courseId: this.$route.query.courseId,
375b62cd1   Amber Dev   added video for t...
283
            chapterId: this.$route.query.chapterId,
ac24ec07a   Amber Dev   added live online
284
          })
375b62cd1   Amber Dev   added video for t...
285
          .then((response) => {
e91641fe5   Amber Dev   solved bugs
286
            // this.addSection = response.data.data;
860da881d   Shikha Mishra   comment all consoles
287
            //   console.log("CREATE___ROOOM", response.data);
a690a86fb   Neeraj Sharma   implement meet fu...
288
            var room = response.data.data.roomName;
860da881d   Shikha Mishra   comment all consoles
289
            var username = localStorage.getItem("teacherName");
a690a86fb   Neeraj Sharma   implement meet fu...
290
            var roomPassword = response.data.data.password;
b6e4f6eaa   Shikha Mishra   Check user's devi...
291
            this.appLink = response.data.data.appLink;
860da881d   Shikha Mishra   comment all consoles
292
293
294
295
296
297
298
299
            //   console.log(
            //     "room",
            //     room,
            //     "username",
            //     username,
            //     "roomPassword",
            //     roomPassword
            //   );
e91641fe5   Amber Dev   solved bugs
300
            var this_ = this;
a690a86fb   Neeraj Sharma   implement meet fu...
301
            if (username != "" || room != "") {
b6e4f6eaa   Shikha Mishra   Check user's devi...
302
303
304
305
306
307
              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...
308
309
                this.showLoader = false;
                this.showStartSessionButton = false;
b6e4f6eaa   Shikha Mishra   Check user's devi...
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
              } 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...
325
                this.showStartSessionButton = false;
b6e4f6eaa   Shikha Mishra   Check user's devi...
326
              }
e91641fe5   Amber Dev   solved bugs
327
            }
ac24ec07a   Amber Dev   added live online
328
          })
375b62cd1   Amber Dev   added video for t...
329
          .catch((err) => {
ac24ec07a   Amber Dev   added live online
330
331
            this.showLoader = false;
          });
375b62cd1   Amber Dev   added video for t...
332
333
      },
      async studentClasses() {
fa975e45a   Amber Dev   change students d...
334
335
336
337
        this.liveLink = "";
        this.room = "";
        this.username = "";
        this.roomPassword = "";
375b62cd1   Amber Dev   added video for t...
338
339
340
341
342
343
        /* 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
344
        //   console.log("response getLiveClassesesList- ", response);
852713654   Amber Dev   added live class ...
345

375b62cd1   Amber Dev   added video for t...
346
        /* CHECK RESPONSE TO ASSIGN MESSAGE INSIDE BUTTON */
6e1cb5c96   Amber Dev   added token
347
348
349
350
351
352
353
354
        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...
355
356
357
358
359
        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...
360
          this.appLink = response.data.data[0].appLink;
fa975e45a   Amber Dev   change students d...
361
          var room = response.data.data[0].roomName;
a690a86fb   Neeraj Sharma   implement meet fu...
362
363
          var username = this.currentUser;
          var roomPassword = response.data.data[0].password;
375b62cd1   Amber Dev   added video for t...
364
          var this_ = this;
a690a86fb   Neeraj Sharma   implement meet fu...
365
          // console.log(this.room, this.roomPassword, this.username);
edfe025fa   Amber Dev   added jitsi meet
366

fa975e45a   Amber Dev   change students d...
367
          if (username != "" || room != "") {
375b62cd1   Amber Dev   added video for t...
368
369
            if (window.JitsiMeetExternalAPI) {
              // var person = prompt("Please enter your name:", "Rabie");
fa975e45a   Amber Dev   change students d...
370
              if (username != null || username != "") {
a690a86fb   Neeraj Sharma   implement meet fu...
371
372
373
374
                this_.username = username;
              }
              if (roomPassword != null || roomPassword != "") {
                this_.roomPassword = roomPassword;
375b62cd1   Amber Dev   added video for t...
375
376
              }
              // var room = prompt("Please enter your room:", "Test Room");
fa975e45a   Amber Dev   change students d...
377
              if (room != null || room != "") {
a690a86fb   Neeraj Sharma   implement meet fu...
378
                this_.room = room;
375b62cd1   Amber Dev   added video for t...
379
              }
6e1cb5c96   Amber Dev   added token
380
              // this.startConference();
edfe025fa   Amber Dev   added jitsi meet
381
            }
edfe025fa   Amber Dev   added jitsi meet
382
          }
852713654   Amber Dev   added live class ...
383
        }
375b62cd1   Amber Dev   added video for t...
384
385
      },
    },
375b62cd1   Amber Dev   added video for t...
386
    async created() {
860da881d   Shikha Mishra   comment all consoles
387
388
389
390
      // console.log(
      //   "this.$store.state.studentsData",
      //   this.$store.state.studentsData[0].name
      // );
a690a86fb   Neeraj Sharma   implement meet fu...
391
      this.currentUser = localStorage.getItem("studentName");
fa975e45a   Amber Dev   change students d...
392
      this.token = this.$store.state.token;
375b62cd1   Amber Dev   added video for t...
393
      if (this.$store.state.role === "PARENT") {
6e1cb5c96   Amber Dev   added token
394
        await this.studentClasses();
e91641fe5   Amber Dev   solved bugs
395
396
397
398
399
400
      }
  
      /* 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...
401
          studentId: localStorage.getItem("parentStudentId"),
e91641fe5   Amber Dev   solved bugs
402
403
        });
      }
375b62cd1   Amber Dev   added video for t...
404
    },
ac24ec07a   Amber Dev   added live online
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
  };
  </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
432
433
434
  #jitsi-container {
    height: 100vh;
  }
ac24ec07a   Amber Dev   added live online
435
  </style>