Blame view

src/pages/Dashboard/LiveOnlineClass.vue 12.4 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
71
72
              </v-flex>
  
              <!-- JOIN OR END SESSION -->
              <v-flex>
                <div>
d23a27a41   Amber Dev   added select All ...
73
                  <v-btn round class="open-dialog-button" dark @click="showLoader = true;startChat()">Start Session</v-btn>
ac24ec07a   Amber Dev   added live online
74
75
                </div>
              </v-flex>
375b62cd1   Amber Dev   added video for t...
76
              <v-flex id="teacherClone">
e91641fe5   Amber Dev   solved bugs
77
                <div id="jitsi-container"></div>
ac24ec07a   Amber Dev   added live online
78
79
80
81
82
              </v-flex>
            </v-layout>
          </v-flex>
  
          <v-spacer></v-spacer>
e91641fe5   Amber Dev   solved bugs
83
          <!-- COURSES SIDE BAR- positioned to the right of the page -->
de958fcfc   Amber Dev   added upload pdf
84
          <!-- <v-flex xs3>
ac24ec07a   Amber Dev   added live online
85
            <v-card class="elevation-0 card-border" height="100%">
e91641fe5   Amber Dev   solved bugs
86
              <CoursesSideBar></CoursesSideBar>
ac24ec07a   Amber Dev   added live online
87
            </v-card>
de958fcfc   Amber Dev   added upload pdf
88
          </v-flex>-->
ac24ec07a   Amber Dev   added live online
89
90
91
92
93
94
95
96
        </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
97
98
  import Meet from "@/pages/Meet/meet.vue";
  import CoursesSideBar from "@/pages/Common/CoursesSideBar.vue";
ac24ec07a   Amber Dev   added live online
99
100
  export default {
    mixins: [AllApiCalls],
e91641fe5   Amber Dev   solved bugs
101
    components: {
375b62cd1   Amber Dev   added video for t...
102
      CoursesSideBar,
e91641fe5   Amber Dev   solved bugs
103
    },
ac24ec07a   Amber Dev   added live online
104
105
    data() {
      return {
e91641fe5   Amber Dev   solved bugs
106
        startLiveSession: "",
852713654   Amber Dev   added live class ...
107
        studentBtn: "",
ac24ec07a   Amber Dev   added live online
108
109
110
111
  
        // DATA TABLE
        search: "",
        pagination: {
375b62cd1   Amber Dev   added video for t...
112
          rowsPerPage: 10,
ac24ec07a   Amber Dev   added live online
113
114
115
116
117
118
        },
        liveOnlineHeaders: [
          {
            text: "Playback",
            value: "attachementUrl",
            sortable: false,
375b62cd1   Amber Dev   added video for t...
119
            align: "center",
ac24ec07a   Amber Dev   added live online
120
121
122
123
124
          },
          {
            text: "Meeting",
            align: "center",
            sortable: false,
375b62cd1   Amber Dev   added video for t...
125
            value: "",
ac24ec07a   Amber Dev   added live online
126
127
128
129
130
          },
          {
            text: "Recording",
            value: "",
            sortable: false,
375b62cd1   Amber Dev   added video for t...
131
            align: "center",
ac24ec07a   Amber Dev   added live online
132
133
134
135
136
          },
          {
            text: "Description Preview",
            value: "",
            sortable: false,
375b62cd1   Amber Dev   added video for t...
137
            align: "center",
ac24ec07a   Amber Dev   added live online
138
139
140
          },
          { text: "Date", value: "", sortable: false, align: "center" },
          { text: "Duration", value: "", sortable: false, align: "center" },
375b62cd1   Amber Dev   added video for t...
141
          { text: "Toolbar", value: "", sortable: false, align: "center" },
ac24ec07a   Amber Dev   added live online
142
143
        ],
        liveOnlineItems: [],
e91641fe5   Amber Dev   solved bugs
144
        // JITSI CONTAINER
edfe025fa   Amber Dev   added jitsi meet
145
        liveLink: "",
e91641fe5   Amber Dev   solved bugs
146
147
        token: "",
        selectStudents: {},
375b62cd1   Amber Dev   added video for t...
148
149
        classRules: [(v) => !!v || " Class Name is required"],
        sectionRules: [(v) => !!v || " Section Name is required"],
e91641fe5   Amber Dev   solved bugs
150
151
152
153
154
        addclass: [],
        addSection: [],
        loading: false,
        room: "",
        username: "",
375b62cd1   Amber Dev   added video for t...
155
156
        roomPassword: "",
        counter: 0,
ac24ec07a   Amber Dev   added live online
157
158
159
      };
    },
    methods: {
6e1cb5c96   Amber Dev   added token
160
      async startChat() {
375b62cd1   Amber Dev   added video for t...
161
        if (this.$store.state.role === "PARENT") {
9a4a64725   Amber Dev   hid jitsi ending ...
162
          if (this.counter == 0) {
a690a86fb   Neeraj Sharma   implement meet fu...
163
            console.log("enter start chat");
fa975e45a   Amber Dev   change students d...
164
            this.startConference();
9a4a64725   Amber Dev   hid jitsi ending ...
165
            this.counter += 1;
6e1cb5c96   Amber Dev   added token
166
          }
375b62cd1   Amber Dev   added video for t...
167
168
        }
        if (this.$store.state.role === "TEACHER") {
9a4a64725   Amber Dev   hid jitsi ending ...
169
          if (this.counter == 0) {
fa975e45a   Amber Dev   change students d...
170
            this.createRoom();
9a4a64725   Amber Dev   hid jitsi ending ...
171
            this.counter += 1;
fa975e45a   Amber Dev   change students d...
172
          }
375b62cd1   Amber Dev   added video for t...
173
174
        }
      },
e91641fe5   Amber Dev   solved bugs
175
176
      // JITSI CONTAINER
      startConference() {
375b62cd1   Amber Dev   added video for t...
177
        console.log("yes session started");
e91641fe5   Amber Dev   solved bugs
178
179
        var _this = this;
        try {
01a388dfe   Amber Dev   added intrack logo
180
          const domain = "meet.intrack.in";
e91641fe5   Amber Dev   solved bugs
181
182
183
184
          const options = {
            audioInput: "<deviceLabel>",
            audioOutput: "<deviceLabel>",
            videoInput: "<deviceLabel>",
edfe025fa   Amber Dev   added jitsi meet
185
            prejoinPageEnabled: false,
e91641fe5   Amber Dev   solved bugs
186
187
188
189
190
            roomName: this.room,
            height: 500,
            parentNode: document.getElementById("jitsi-container"),
            interfaceConfigOverwrite: {
              filmStripOnly: false,
9a4a64725   Amber Dev   hid jitsi ending ...
191
192
              SHOW_PROMOTIONAL_CLOSE_PAGE: false,
              SHOW_POWERED_BY: false,
e91641fe5   Amber Dev   solved bugs
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
              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...
217
218
                "tileview",
              ],
e91641fe5   Amber Dev   solved bugs
219
220
            },
            configOverwrite: {
375b62cd1   Amber Dev   added video for t...
221
              disableSimulcast: false,
e91641fe5   Amber Dev   solved bugs
222
223
            },
            teacherName: "",
375b62cd1   Amber Dev   added video for t...
224
            romm: "",
e91641fe5   Amber Dev   solved bugs
225
          };
a690a86fb   Neeraj Sharma   implement meet fu...
226
227
228
          _this.api = new JitsiMeetExternalAPI(domain, options);
          console.log("this.api ", this.api);
          _this.api.addEventListener("videoConferenceJoined", () => {
e91641fe5   Amber Dev   solved bugs
229
            console.log("Local User Joined");
90bec8782   Amber Dev   added loader to v...
230
            this.showLoader = false;
e91641fe5   Amber Dev   solved bugs
231
            _this.api.executeCommand("displayName", _this.username);
a690a86fb   Neeraj Sharma   implement meet fu...
232
            _this.api.executeCommand("password", this_.roomPassword);
ac24ec07a   Amber Dev   added live online
233
          });
90bec8782   Amber Dev   added loader to v...
234
          
a690a86fb   Neeraj Sharma   implement meet fu...
235
236
          _this.api.on("readyToClose", () => {
            this.$router.push({ name: "Refresh" });
90bec8782   Amber Dev   added loader to v...
237
            
9a4a64725   Amber Dev   hid jitsi ending ...
238
          });
90bec8782   Amber Dev   added loader to v...
239
          
e91641fe5   Amber Dev   solved bugs
240
241
        } catch (error) {
          console.error("Failed to load Jitsi API", error);
ac24ec07a   Amber Dev   added live online
242
243
        }
      },
e91641fe5   Amber Dev   solved bugs
244
245
246
247
248
249
250
251
252
253
254
      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
255
      },
e91641fe5   Amber Dev   solved bugs
256
      createRoom(classId) {
ac24ec07a   Amber Dev   added live online
257
        this.showLoader = true;
e91641fe5   Amber Dev   solved bugs
258
        var classId = {
375b62cd1   Amber Dev   added video for t...
259
          classId: classId,
ac24ec07a   Amber Dev   added live online
260
261
        };
        http()
e91641fe5   Amber Dev   solved bugs
262
263
264
          .post("/createLiveClasses", {
            classId: this.$route.query.classId,
            courseId: this.$route.query.courseId,
375b62cd1   Amber Dev   added video for t...
265
            chapterId: this.$route.query.chapterId,
ac24ec07a   Amber Dev   added live online
266
          })
375b62cd1   Amber Dev   added video for t...
267
          .then((response) => {
e91641fe5   Amber Dev   solved bugs
268
269
            // this.addSection = response.data.data;
            console.log("CREATE___ROOOM", response.data);
a690a86fb   Neeraj Sharma   implement meet fu...
270
271
272
273
274
275
276
277
278
279
280
            var room = response.data.data.roomName;
            var username =  localStorage.getItem("teacherName")
            var roomPassword = response.data.data.password;
            console.log(
              "room",
              room,
              "username",
              username,
              "roomPassword",
              roomPassword
            );
e91641fe5   Amber Dev   solved bugs
281
            var this_ = this;
a690a86fb   Neeraj Sharma   implement meet fu...
282
            if (username != "" || room != "") {
e91641fe5   Amber Dev   solved bugs
283
284
              if (window.JitsiMeetExternalAPI) {
                // var person = prompt("Please enter your name:", "Rabie");
a690a86fb   Neeraj Sharma   implement meet fu...
285
286
                if (username != null || username != "") {
                  this_.username = username;
e91641fe5   Amber Dev   solved bugs
287
288
                }
                // var room = prompt("Please enter your room:", "Test Room");
a690a86fb   Neeraj Sharma   implement meet fu...
289
290
291
292
293
                if (room != null || room != "") {
                  this_.room = room;
                }
                if (roomPassword != null || roomPassword != "") {
                  this_.password = roomPassword;
e91641fe5   Amber Dev   solved bugs
294
                }
e91641fe5   Amber Dev   solved bugs
295
              } else alert("Jitsi Meet API script not loaded");
a690a86fb   Neeraj Sharma   implement meet fu...
296
              this_.startConference();
e91641fe5   Amber Dev   solved bugs
297
            }
ac24ec07a   Amber Dev   added live online
298
            this.showLoader = false;
ac24ec07a   Amber Dev   added live online
299
          })
375b62cd1   Amber Dev   added video for t...
300
          .catch((err) => {
ac24ec07a   Amber Dev   added live online
301
302
            this.showLoader = false;
          });
375b62cd1   Amber Dev   added video for t...
303
304
      },
      async studentClasses() {
fa975e45a   Amber Dev   change students d...
305
306
307
308
        this.liveLink = "";
        this.room = "";
        this.username = "";
        this.roomPassword = "";
375b62cd1   Amber Dev   added video for t...
309
310
311
312
313
314
315
        /* 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,
        });
        console.log("response getLiveClassesesList- ", response);
852713654   Amber Dev   added live class ...
316

375b62cd1   Amber Dev   added video for t...
317
        /* CHECK RESPONSE TO ASSIGN MESSAGE INSIDE BUTTON */
6e1cb5c96   Amber Dev   added token
318
319
320
321
322
323
324
325
        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...
326
327
328
329
330
        if (response.data.data.length == 0) {
          this.startLiveSession = "Start Session";
          this.studentBtn = "";
        } else {
          this.liveLink = response.data.data[0].link;
fa975e45a   Amber Dev   change students d...
331
          var room = response.data.data[0].roomName;
a690a86fb   Neeraj Sharma   implement meet fu...
332
333
          var username = this.currentUser;
          var roomPassword = response.data.data[0].password;
375b62cd1   Amber Dev   added video for t...
334
          var this_ = this;
a690a86fb   Neeraj Sharma   implement meet fu...
335
          // console.log(this.room, this.roomPassword, this.username);
edfe025fa   Amber Dev   added jitsi meet
336

fa975e45a   Amber Dev   change students d...
337
          if (username != "" || room != "") {
375b62cd1   Amber Dev   added video for t...
338
339
            if (window.JitsiMeetExternalAPI) {
              // var person = prompt("Please enter your name:", "Rabie");
fa975e45a   Amber Dev   change students d...
340
              if (username != null || username != "") {
a690a86fb   Neeraj Sharma   implement meet fu...
341
342
343
344
                this_.username = username;
              }
              if (roomPassword != null || roomPassword != "") {
                this_.roomPassword = roomPassword;
375b62cd1   Amber Dev   added video for t...
345
346
              }
              // var room = prompt("Please enter your room:", "Test Room");
fa975e45a   Amber Dev   change students d...
347
              if (room != null || room != "") {
a690a86fb   Neeraj Sharma   implement meet fu...
348
                this_.room = room;
375b62cd1   Amber Dev   added video for t...
349
              }
6e1cb5c96   Amber Dev   added token
350
              // this.startConference();
edfe025fa   Amber Dev   added jitsi meet
351
            }
edfe025fa   Amber Dev   added jitsi meet
352
          }
852713654   Amber Dev   added live class ...
353
        }
375b62cd1   Amber Dev   added video for t...
354
355
      },
    },
375b62cd1   Amber Dev   added video for t...
356
    async created() {
a690a86fb   Neeraj Sharma   implement meet fu...
357
358
359
360
361
      console.log(
        "this.$store.state.studentsData",
        this.$store.state.studentsData[0].name
      );
      this.currentUser = localStorage.getItem("studentName");
fa975e45a   Amber Dev   change students d...
362
      this.token = this.$store.state.token;
375b62cd1   Amber Dev   added video for t...
363
      if (this.$store.state.role === "PARENT") {
6e1cb5c96   Amber Dev   added token
364
        await this.studentClasses();
e91641fe5   Amber Dev   solved bugs
365
366
367
368
369
370
      }
  
      /* 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...
371
          studentId: localStorage.getItem("parentStudentId"),
e91641fe5   Amber Dev   solved bugs
372
373
        });
      }
375b62cd1   Amber Dev   added video for t...
374
    },
ac24ec07a   Amber Dev   added live online
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
  };
  </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
402
403
404
  #jitsi-container {
    height: 100vh;
  }
ac24ec07a   Amber Dev   added live online
405
  </style>