Blame view

src/pages/Dashboard/LiveOnlineClass.vue 11.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
45
46
                  <v-btn
                    round
                    class="open-dialog-button"
                    dark
                    v-if="studentBtn"
                    @click="startConference();"
                  >{{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>
edfe025fa   Amber Dev   added jitsi meet
50
51
52
              <v-flex>
                <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
77
                  <v-btn
                    round
                    class="open-dialog-button"
                    dark
                    @click="createRoom($route.query.classId)"
852713654   Amber Dev   added live class ...
78
                  >{{startLiveSession}}</v-btn>
ac24ec07a   Amber Dev   added live online
79
80
                </div>
              </v-flex>
e91641fe5   Amber Dev   solved bugs
81
82
              <v-flex>
                <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
107
108
    components: {
      CoursesSideBar
    },
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
  
        // DATA TABLE
        search: "",
        pagination: {
          rowsPerPage: 10
        },
        liveOnlineHeaders: [
          {
            text: "Playback",
            value: "attachementUrl",
            sortable: false,
            align: "center"
          },
          {
            text: "Meeting",
            align: "center",
            sortable: false,
            value: ""
          },
          {
            text: "Recording",
            value: "",
            sortable: false,
            align: "center"
          },
          {
            text: "Description Preview",
            value: "",
            sortable: false,
            align: "center"
          },
          { text: "Date", value: "", sortable: false, align: "center" },
          { text: "Duration", value: "", sortable: false, align: "center" },
          { text: "Toolbar", value: "", sortable: false, align: "center" }
        ],
        liveOnlineItems: [],
e91641fe5   Amber Dev   solved bugs
149
        // JITSI CONTAINER
edfe025fa   Amber Dev   added jitsi meet
150
        liveLink: "",
e91641fe5   Amber Dev   solved bugs
151
152
153
154
155
156
157
158
159
160
        token: "",
        selectStudents: {},
        classRules: [v => !!v || " Class Name is required"],
        sectionRules: [v => !!v || " Section Name is required"],
        addclass: [],
        addSection: [],
        loading: false,
        room: "",
        username: "",
        roomPassword: ""
ac24ec07a   Amber Dev   added live online
161
162
163
      };
    },
    methods: {
e91641fe5   Amber Dev   solved bugs
164
165
166
167
      // JITSI CONTAINER
      startConference() {
        var _this = this;
        try {
01a388dfe   Amber Dev   added intrack logo
168
          const domain = "meet.intrack.in";
e91641fe5   Amber Dev   solved bugs
169
170
171
172
          const options = {
            audioInput: "<deviceLabel>",
            audioOutput: "<deviceLabel>",
            videoInput: "<deviceLabel>",
edfe025fa   Amber Dev   added jitsi meet
173
            prejoinPageEnabled: false,
e91641fe5   Amber Dev   solved bugs
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
            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",
                "tileview"
              ]
            },
            configOverwrite: {
              disableSimulcast: false
            },
            teacherName: "",
            romm: ""
          };
ac24ec07a   Amber Dev   added live online
212

e91641fe5   Amber Dev   solved bugs
213
214
215
          this.api = new JitsiMeetExternalAPI(domain, options);
          this.api.addEventListener("videoConferenceJoined", () => {
            console.log("Local User Joined");
ac24ec07a   Amber Dev   added live online
216

e91641fe5   Amber Dev   solved bugs
217
            _this.api.executeCommand("displayName", _this.username);
edfe025fa   Amber Dev   added jitsi meet
218
            _this.api.executeCommand("password", _this.roomPassword);
ac24ec07a   Amber Dev   added live online
219
          });
e91641fe5   Amber Dev   solved bugs
220
221
        } catch (error) {
          console.error("Failed to load Jitsi API", error);
ac24ec07a   Amber Dev   added live online
222
223
        }
      },
e91641fe5   Amber Dev   solved bugs
224
225
226
227
228
229
230
231
232
233
234
      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
235
      },
e91641fe5   Amber Dev   solved bugs
236
      createRoom(classId) {
ac24ec07a   Amber Dev   added live online
237
        this.showLoader = true;
e91641fe5   Amber Dev   solved bugs
238
239
        var classId = {
          classId: classId
ac24ec07a   Amber Dev   added live online
240
241
        };
        http()
e91641fe5   Amber Dev   solved bugs
242
243
244
245
          .post("/createLiveClasses", {
            classId: this.$route.query.classId,
            courseId: this.$route.query.courseId,
            chapterId: this.$route.query.chapterId
ac24ec07a   Amber Dev   added live online
246
          })
ac24ec07a   Amber Dev   added live online
247
          .then(response => {
e91641fe5   Amber Dev   solved bugs
248
249
250
            // this.addSection = response.data.data;
            console.log("CREATE___ROOOM", response.data);
            this.room = response.data.data.LiveClasses.roomName;
01a388dfe   Amber Dev   added intrack logo
251
252
            // this.username = response.data.data.LiveClasses.teacherName;
            this.roomPassword = response.data.data.LiveClasses.password;
e91641fe5   Amber Dev   solved bugs
253
254
255
256
257
258
259
260
261
262
263
264
265
266
            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");
            }
ac24ec07a   Amber Dev   added live online
267
            this.showLoader = false;
ac24ec07a   Amber Dev   added live online
268
          })
e91641fe5   Amber Dev   solved bugs
269
          .catch(err => {
ac24ec07a   Amber Dev   added live online
270
271
272
273
            this.showLoader = false;
          });
      }
    },
e91641fe5   Amber Dev   solved bugs
274
275
276
277
  
    mounted() {
      this.token = this.$store.state.token;
    },
ac24ec07a   Amber Dev   added live online
278
    async created() {
e91641fe5   Amber Dev   solved bugs
279
280
281
282
283
      /* 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
ac24ec07a   Amber Dev   added live online
284
      });
e91641fe5   Amber Dev   solved bugs
285
      console.log("response getLiveClassesesList- ", response);
852713654   Amber Dev   added live class ...
286
287
  
      /* CHECK RESPONSE TO ASSIGN MESSAGE INSIDE BUTTON */
e91641fe5   Amber Dev   solved bugs
288
      if (response.data.data.length == 0) {
852713654   Amber Dev   added live class ...
289
290
291
        this.startLiveSession = "Start Session";
        this.studentBtn = "";
      } else {
edfe025fa   Amber Dev   added jitsi meet
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
        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);
  
        // // 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();
          }
        }
852713654   Amber Dev   added live class ...
316
317
318
319
320
321
322
323
        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";
        }
e91641fe5   Amber Dev   solved bugs
324
325
326
327
328
329
330
331
332
      }
  
      /* getStudentCourses - to get courseData - defined in GetApis.js*/
      if (this.$store.state.role === "PARENT") {
        await this.getStudentCourses({
          classId: localStorage.getItem("parentClassId"),
          studentId: localStorage.getItem("parentStudentId")
        });
      }
ac24ec07a   Amber Dev   added live online
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
    }
  };
  </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
361
362
363
  #jitsi-container {
    height: 100vh;
  }
ac24ec07a   Amber Dev   added live online
364
  </style>