Blame view

src/pages/Dashboard/LiveOnlineClass.vue 12.2 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>
edfe025fa   Amber Dev   added jitsi meet
31
32
                <div class="subheading grey--text lighten-1">{{liveLink}}</div>
                <!-- <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"
375b62cd1   Amber Dev   added video for t...
45
                    @click="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>
e91641fe5   Amber Dev   solved bugs
73
74
75
76
                  <v-btn
                    round
                    class="open-dialog-button"
                    dark
375b62cd1   Amber Dev   added video for t...
77
78
                    @click="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,
ac24ec07a   Amber Dev   added live online
162
163
164
      };
    },
    methods: {
375b62cd1   Amber Dev   added video for t...
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
      startChat() {
        if (this.$store.state.role === "PARENT") {
          let div = document.getElementById("jitsi-container");
          var parent = div.parentNode;
          var clone = div.cloneNode(true);
          clone.id = "jitsi-container";
          parent.replaceChild(clone, div);
          // div.replaceWith(input.val('').clone(true));
          this.studentClasses();
        }
        if (this.$store.state.role === "TEACHER") {
          let div = document.getElementById("jitsi-container");
          var parent = div.parentNode;
          var clone = div.cloneNode(true);
          clone.id = "jitsi-container";
          parent.replaceChild(clone, div);
          // div.replaceWith(input.val('').clone(true));
          this.createRoom();
        }
      },
e91641fe5   Amber Dev   solved bugs
185
186
      // JITSI CONTAINER
      startConference() {
375b62cd1   Amber Dev   added video for t...
187
        console.log("yes session started");
e91641fe5   Amber Dev   solved bugs
188
189
        var _this = this;
        try {
01a388dfe   Amber Dev   added intrack logo
190
          const domain = "meet.intrack.in";
e91641fe5   Amber Dev   solved bugs
191
192
193
194
          const options = {
            audioInput: "<deviceLabel>",
            audioOutput: "<deviceLabel>",
            videoInput: "<deviceLabel>",
edfe025fa   Amber Dev   added jitsi meet
195
            prejoinPageEnabled: false,
e91641fe5   Amber Dev   solved bugs
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
            roomName: this.room,
            height: 500,
            parentNode: document.getElementById("jitsi-container"),
            interfaceConfigOverwrite: {
              filmStripOnly: false,
              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...
225
226
                "tileview",
              ],
e91641fe5   Amber Dev   solved bugs
227
228
            },
            configOverwrite: {
375b62cd1   Amber Dev   added video for t...
229
              disableSimulcast: false,
e91641fe5   Amber Dev   solved bugs
230
231
            },
            teacherName: "",
375b62cd1   Amber Dev   added video for t...
232
            romm: "",
e91641fe5   Amber Dev   solved bugs
233
          };
ac24ec07a   Amber Dev   added live online
234

e91641fe5   Amber Dev   solved bugs
235
236
237
          this.api = new JitsiMeetExternalAPI(domain, options);
          this.api.addEventListener("videoConferenceJoined", () => {
            console.log("Local User Joined");
ac24ec07a   Amber Dev   added live online
238

e91641fe5   Amber Dev   solved bugs
239
            _this.api.executeCommand("displayName", _this.username);
edfe025fa   Amber Dev   added jitsi meet
240
            _this.api.executeCommand("password", _this.roomPassword);
ac24ec07a   Amber Dev   added live online
241
          });
e91641fe5   Amber Dev   solved bugs
242
243
        } catch (error) {
          console.error("Failed to load Jitsi API", error);
ac24ec07a   Amber Dev   added live online
244
245
        }
      },
e91641fe5   Amber Dev   solved bugs
246
247
248
249
250
251
252
253
254
255
256
      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
257
      },
e91641fe5   Amber Dev   solved bugs
258
      createRoom(classId) {
ac24ec07a   Amber Dev   added live online
259
        this.showLoader = true;
e91641fe5   Amber Dev   solved bugs
260
        var classId = {
375b62cd1   Amber Dev   added video for t...
261
          classId: classId,
ac24ec07a   Amber Dev   added live online
262
263
        };
        http()
e91641fe5   Amber Dev   solved bugs
264
265
266
          .post("/createLiveClasses", {
            classId: this.$route.query.classId,
            courseId: this.$route.query.courseId,
375b62cd1   Amber Dev   added video for t...
267
            chapterId: this.$route.query.chapterId,
ac24ec07a   Amber Dev   added live online
268
          })
375b62cd1   Amber Dev   added video for t...
269
          .then((response) => {
e91641fe5   Amber Dev   solved bugs
270
271
            // this.addSection = response.data.data;
            console.log("CREATE___ROOOM", response.data);
375b62cd1   Amber Dev   added video for t...
272
            this.room = response.data.data.roomName;
01a388dfe   Amber Dev   added intrack logo
273
            // this.username = response.data.data.LiveClasses.teacherName;
375b62cd1   Amber Dev   added video for t...
274
            this.roomPassword = response.data.data.password;
e91641fe5   Amber Dev   solved bugs
275
276
277
278
279
280
281
282
283
284
285
286
287
288
            var this_ = this;
            if (this.username != "" || this.room != "") {
              if (window.JitsiMeetExternalAPI) {
                // var person = prompt("Please enter your name:", "Rabie");
                if (this_.username != null || this_.username != "") {
                  this.username = this.username;
                }
                // var room = prompt("Please enter your room:", "Test Room");
                if (this_.room != null || this_.room != "") {
                  this.room = this.room;
                }
                this.startConference();
              } else alert("Jitsi Meet API script not loaded");
            }
375b62cd1   Amber Dev   added video for t...
289
            console.log("bazinga");
ac24ec07a   Amber Dev   added live online
290
            this.showLoader = false;
ac24ec07a   Amber Dev   added live online
291
          })
375b62cd1   Amber Dev   added video for t...
292
          .catch((err) => {
ac24ec07a   Amber Dev   added live online
293
294
            this.showLoader = false;
          });
375b62cd1   Amber Dev   added video for t...
295
296
297
298
299
300
301
302
303
      },
      async studentClasses() {
        /* 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 ...
304

375b62cd1   Amber Dev   added video for t...
305
306
307
308
309
310
311
312
313
314
315
316
        /* CHECK RESPONSE TO ASSIGN MESSAGE INSIDE BUTTON */
        if (response.data.data.length == 0) {
          this.startLiveSession = "Start Session";
          this.studentBtn = "";
        } else {
          this.liveLink = response.data.data[0].link;
          this.room = response.data.data[0].roomName;
          this.username = response.data.data[0].teacherId.name;
          this.roomPassword = response.data.data[0].password;
          // this.room = response.data.data[0].roomName;
          var this_ = this;
          console.log(this.room, this.roomPassword, this.username);
edfe025fa   Amber Dev   added jitsi meet
317

375b62cd1   Amber Dev   added video for t...
318
319
320
321
322
323
324
325
326
327
328
329
330
331
          // // this.username = response.data.data.LiveClasses.teacherName;
          // this.roomPassword = response.data.data[0].password;
          // var this_ = this;
          if (this.username != "" || this.room != "") {
            if (window.JitsiMeetExternalAPI) {
              // var person = prompt("Please enter your name:", "Rabie");
              if (this_.username != null || this_.username != "") {
                this.username = this.username;
              }
              // var room = prompt("Please enter your room:", "Test Room");
              if (this_.room != null || this_.room != "") {
                this.room = this.room;
              }
              this.startConference();
edfe025fa   Amber Dev   added jitsi meet
332
            }
edfe025fa   Amber Dev   added jitsi meet
333
          }
edfe025fa   Amber Dev   added jitsi meet
334

375b62cd1   Amber Dev   added video for t...
335
336
337
338
339
340
341
342
          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";
          }
852713654   Amber Dev   added live class ...
343
        }
375b62cd1   Amber Dev   added video for t...
344
345
346
347
348
349
350
351
352
      },
    },
  
    mounted() {
      this.token = this.$store.state.token;
    },
    async created() {
      if (this.$store.state.role === "PARENT") {
        this.studentClasses();
e91641fe5   Amber Dev   solved bugs
353
354
355
356
357
358
      }
  
      /* 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...
359
          studentId: localStorage.getItem("parentStudentId"),
e91641fe5   Amber Dev   solved bugs
360
361
        });
      }
375b62cd1   Amber Dev   added video for t...
362
    },
ac24ec07a   Amber Dev   added live online
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
  };
  </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
390
391
392
  #jitsi-container {
    height: 100vh;
  }
ac24ec07a   Amber Dev   added live online
393
  </style>