Blame view

src/pages/Subjects/subjects.vue 15.4 KB
beb598536   Neeraj Sharma   design and functi...
1
2
  <template>
    <v-app id="pages-dasboard">
687e0b929   Neeraj Sharma   add user,attenden...
3
      <v-tabs grow slider-color="gray">
beb598536   Neeraj Sharma   design and functi...
4
5
6
7
8
9
        <v-tab
          ripple
          @click="activeTab('existing')"
          v-bind:class="{ active: isActive }"
          id="tab"
          class="subheading"
46db0a3b5   Neeraj Sharma   add sunbject and ...
10
        >Existing Subjects</v-tab>
beb598536   Neeraj Sharma   design and functi...
11
12
13
14
15
16
17
        <v-tab
          ripple
          @click="activeTab('new')"
          v-bind:class="{ active: newActive }"
          id="tab1"
          User
          class="subheading"
46db0a3b5   Neeraj Sharma   add sunbject and ...
18
        >Add New Subject</v-tab>
beb598536   Neeraj Sharma   design and functi...
19

46db0a3b5   Neeraj Sharma   add sunbject and ...
20
        <!-- ****** EDIT  Subject ****** -->
beb598536   Neeraj Sharma   design and functi...
21
22
23
24
25
26
27
28
29
30
31
32
  
        <v-tab-item>
          <v-snackbar
            :timeout="timeout"
            :top="y === 'top'"
            :right="x === 'right'"
            :vertical="mode === 'vertical'"
            v-model="snackbar"
            color="success"
          >{{ text }}</v-snackbar>
          <v-dialog v-model="dialog" max-width="600px">
            <v-flex xs12 sm12 class>
506be6fd7   Neeraj Sharma   implemet dyamic i...
33
              <v-toolbar color="v-toolbar">
beb598536   Neeraj Sharma   design and functi...
34
                <v-spacer></v-spacer>
46db0a3b5   Neeraj Sharma   add sunbject and ...
35
36
37
                <v-toolbar-title>
                  <h3>Edit Subject</h3>
                </v-toolbar-title>
beb598536   Neeraj Sharma   design and functi...
38
39
40
                <v-spacer></v-spacer>
              </v-toolbar>
              <v-card flat>
495e4037c   Neeraj Sharma   update
41
                <v-container fluid>
afc98f028   Neeraj Sharma   implement class v...
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
                  <v-form ref="formEditSubject" v-model="validEditSubject" lazy-validation>
                    <v-layout>
                      <v-flex xs4 class="pt-4 subheading">
                        <label class="right">Class:</label>
                      </v-flex>
                      <v-flex xs6 class="ml-3">
                        <v-select
                          :items="classList"
                          label="Select Class"
                          v-model="addSubject.selectName"
                          item-text="classNum"
                          item-value="_id"
                          name="Select Class"
                          :rules="nameEditSubjectRules"
                          required
                        ></v-select>
                      </v-flex>
                    </v-layout>
                    <v-layout>
                      <v-flex xs4 class="pt-4 subheading">
                        <label class="right">Subject:</label>
                      </v-flex>
                      <v-flex xs6 class="ml-3">
                        <v-text-field
                          placeholder="fill your Subject"
                          v-model="editedItem.subjectName"
39fb2832e   Neeraj Sharma   implement class v...
68
                          :rules="subjectEditNameRules"
afc98f028   Neeraj Sharma   implement class v...
69
70
71
72
73
74
75
76
77
78
79
80
                          type="text"
                          name="email"
                          required
                        ></v-text-field>
                      </v-flex>
                    </v-layout>
                    <v-flex xs12 sm9 offset-sm2>
                      <v-card-actions>
                        <v-btn round dark @click.native="close">Cancel</v-btn>
                        <v-spacer></v-spacer>
                        <v-btn round dark @click="save" :loading="editLoading">Save</v-btn>
                      </v-card-actions>
46db0a3b5   Neeraj Sharma   add sunbject and ...
81
                    </v-flex>
afc98f028   Neeraj Sharma   implement class v...
82
                  </v-form>
495e4037c   Neeraj Sharma   update
83
                </v-container>
beb598536   Neeraj Sharma   design and functi...
84
85
86
              </v-card>
            </v-flex>
          </v-dialog>
46db0a3b5   Neeraj Sharma   add sunbject and ...
87
          <!-- ****** VIEW PROFIL NOTICE BOARD ******  -->
beb598536   Neeraj Sharma   design and functi...
88
89
  
          <v-dialog v-model="dialog1" max-width="600px">
506be6fd7   Neeraj Sharma   implemet dyamic i...
90
            <v-toolbar color="v-toolbar">
beb598536   Neeraj Sharma   design and functi...
91
              <v-spacer></v-spacer>
46db0a3b5   Neeraj Sharma   add sunbject and ...
92
93
94
              <v-toolbar-title>
                <h3>Subject</h3>
              </v-toolbar-title>
beb598536   Neeraj Sharma   design and functi...
95
96
97
98
              <v-spacer></v-spacer>
              <v-icon @click="close1">close</v-icon>
            </v-toolbar>
            <v-card>
beb598536   Neeraj Sharma   design and functi...
99
100
101
102
              <v-card-text>
                <v-container grid-list-md>
                  <v-layout wrap>
                    <v-flex>
beb598536   Neeraj Sharma   design and functi...
103
                      <v-layout>
aa8fc5033   Neeraj Sharma   implenment all pa...
104
                        <v-flex xs7 sm6>
46db0a3b5   Neeraj Sharma   add sunbject and ...
105
106
107
                          <h5 class="right my-1">
                            <b>Subject Name:</b>
                          </h5>
beb598536   Neeraj Sharma   design and functi...
108
                        </v-flex>
aa8fc5033   Neeraj Sharma   implenment all pa...
109
                        <v-flex sm6 xs5>
46db0a3b5   Neeraj Sharma   add sunbject and ...
110
                          <h5 class="my-1">{{ editedItem.subjectName }}</h5>
beb598536   Neeraj Sharma   design and functi...
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
                        </v-flex>
                      </v-layout>
                    </v-flex>
                  </v-layout>
                </v-container>
              </v-card-text>
            </v-card>
          </v-dialog>
  
          <v-snackbar
            :timeout="timeout"
            :top="y === 'top'"
            :right="x === 'right'"
            :vertical="mode === 'vertical'"
            v-model="snackbar"
            color="success"
          >{{ text }}</v-snackbar>
46db0a3b5   Neeraj Sharma   add sunbject and ...
128
129
130
131
          <!-- ****** EXISTING SUBJECTS TABLE ****** -->
          <v-card flat>
            <v-card-actions>
              <v-layout>
79583580d   Neeraj Sharma   implement task ma...
132
                <v-flex xs4 sm2 lg1>
46db0a3b5   Neeraj Sharma   add sunbject and ...
133
134
                  <label class="right mt-4">Select Class:</label>
                </v-flex>
79583580d   Neeraj Sharma   implement task ma...
135
                <v-flex xs8 sm4 lg3>
46db0a3b5   Neeraj Sharma   add sunbject and ...
136
137
138
                  <v-select
                    :items="classList"
                    label="Select Class"
0721aca93   Neeraj Sharma   solve bugs in sub...
139
                    v-model="selectClassId"
46db0a3b5   Neeraj Sharma   add sunbject and ...
140
141
142
143
                    item-text="classNum"
                    item-value="_id"
                    name="Select Class"
                    :rules="nameRules"
0721aca93   Neeraj Sharma   solve bugs in sub...
144
                    @change="getClassSubject"
46db0a3b5   Neeraj Sharma   add sunbject and ...
145
146
147
148
149
150
151
                    class="px-4"
                    required
                  ></v-select>
                </v-flex>
              </v-layout>
            </v-card-actions>
          </v-card>
beb598536   Neeraj Sharma   design and functi...
152
153
          <v-data-table
            :headers="headers"
46db0a3b5   Neeraj Sharma   add sunbject and ...
154
            :items="subjectList.subjects"
beb598536   Neeraj Sharma   design and functi...
155
156
157
158
            :pagination.sync="pagination"
            :search="search"
          >
            <template slot="items" slot-scope="props">
495e4037c   Neeraj Sharma   update
159
              <td id="td" class="text-xs-center">{{ props.index + 1}}</td>
46db0a3b5   Neeraj Sharma   add sunbject and ...
160
              <td id="td" class="text-xs-center">{{ props.item.subjectName}}</td>
beb598536   Neeraj Sharma   design and functi...
161
162
163
  
              <td class="text-xs-center">
                <span>
495e4037c   Neeraj Sharma   update
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
                  <v-tooltip top>
                    <img
                      slot="activator"
                      style="cursor:pointer; width:25px; height:18px; "
                      class="mr5"
                      @click="profile(props.item)"
                      src="/static/icon/eye1.png"
                    />
                    <span>View</span>
                  </v-tooltip>
                  <v-tooltip top>
                    <img
                      slot="activator"
                      style="cursor:pointer; width:20px; height:18px; "
                      class="mr5"
                      @click="editItem(props.item)"
                      src="/static/icon/edit1.png"
                    />
                    <span>Edit</span>
                  </v-tooltip>
                  <v-tooltip top>
                    <img
                      slot="activator"
                      style="cursor:pointer; width:20px; height:20px; "
                      class="mr5"
                      @click="deleteItem(props.item)"
                      src="/static/icon/delete1.png"
                    />
                    <span>Delete</span>
                  </v-tooltip>
beb598536   Neeraj Sharma   design and functi...
194
195
196
197
198
199
200
201
202
203
204
                </span>
              </td>
            </template>
            <v-alert
              slot="no-results"
              :value="true"
              color="error"
              icon="warning"
            >Your search for "{{ search }}" found no results.</v-alert>
          </v-data-table>
        </v-tab-item>
46db0a3b5   Neeraj Sharma   add sunbject and ...
205
        <!-- ****** ADD MULTIPLE Subject ****** -->
beb598536   Neeraj Sharma   design and functi...
206
207
208
209
210
211
212
213
214
  
        <v-tab-item>
          <v-container>
            <v-snackbar
              :timeout="timeout"
              :top="y === 'top'"
              :right="x === 'right'"
              :vertical="mode === 'vertical'"
              v-model="snackbar"
0721aca93   Neeraj Sharma   solve bugs in sub...
215
              :color="color"
beb598536   Neeraj Sharma   design and functi...
216
217
218
219
220
221
222
223
            >{{ text }}</v-snackbar>
            <v-flex xs12 sm8 offset-sm2 class="top">
              <v-card flat>
                <v-container fluid fill-height>
                  <v-layout align-center>
                    <v-flex xs12>
                      <v-form ref="form" v-model="valid" lazy-validation>
                        <v-layout>
aa8fc5033   Neeraj Sharma   implenment all pa...
224
                          <v-flex xs4 sm4 class="pt-4 subheading">
46db0a3b5   Neeraj Sharma   add sunbject and ...
225
                            <label class="right">Class:</label>
beb598536   Neeraj Sharma   design and functi...
226
                          </v-flex>
aa8fc5033   Neeraj Sharma   implenment all pa...
227
                          <v-flex xs8 sm6 class="ml-3">
ebe04cc1d   Neeraj Sharma   solve issue uploa...
228
                            <v-select
46db0a3b5   Neeraj Sharma   add sunbject and ...
229
                              v-model="addSubject.classId"
ebe04cc1d   Neeraj Sharma   solve issue uploa...
230
                              label="Select your class"
beb598536   Neeraj Sharma   design and functi...
231
                              type="text"
46db0a3b5   Neeraj Sharma   add sunbject and ...
232
233
234
235
                              :items="classList"
                              item-text="classNum"
                              item-value="_id"
                              :rules="nameRules"
beb598536   Neeraj Sharma   design and functi...
236
                              required
ebe04cc1d   Neeraj Sharma   solve issue uploa...
237
                            ></v-select>
beb598536   Neeraj Sharma   design and functi...
238
239
                          </v-flex>
                        </v-layout>
46db0a3b5   Neeraj Sharma   add sunbject and ...
240
                        <v-layout>
aa8fc5033   Neeraj Sharma   implenment all pa...
241
                          <v-flex xs4 sm4 class="pt-4 subheading">
46db0a3b5   Neeraj Sharma   add sunbject and ...
242
                            <label class="right">Subject:</label>
beb598536   Neeraj Sharma   design and functi...
243
                          </v-flex>
aa8fc5033   Neeraj Sharma   implenment all pa...
244
                          <v-flex xs8 sm6 class="ml-3">
beb598536   Neeraj Sharma   design and functi...
245
                            <v-text-field
46db0a3b5   Neeraj Sharma   add sunbject and ...
246
                              v-model="addSubject.subjectName"
51e4f3e16   Neeraj Sharma   add sunbject and ...
247
                              placeholder="fill your Subject Name"
beb598536   Neeraj Sharma   design and functi...
248
249
                              name="name"
                              type="text"
46db0a3b5   Neeraj Sharma   add sunbject and ...
250
                              :rules="subjectRules"
beb598536   Neeraj Sharma   design and functi...
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
                              required
                            ></v-text-field>
                          </v-flex>
                        </v-layout>
                        <v-layout>
                          <v-flex xs12 sm9 offset-sm2>
                            <v-card-actions>
                              <v-btn @click="clear" round dark>clear</v-btn>
                              <v-spacer></v-spacer>
                              <v-btn @click="submit" round dark :loading="loading">Add</v-btn>
                            </v-card-actions>
                          </v-flex>
                        </v-layout>
                      </v-form>
                    </v-flex>
                  </v-layout>
                </v-container>
              </v-card>
            </v-flex>
          </v-container>
        </v-tab-item>
      </v-tabs>
36fc987df   Neeraj Sharma   add loader in all...
273
274
275
      <div class="loader" v-if="showLoader">
        <v-progress-circular indeterminate color="white"></v-progress-circular>
      </div>
beb598536   Neeraj Sharma   design and functi...
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
    </v-app>
  </template>
  
  <script>
  import http from "@/Services/http.js";
  import Util from "@/util";
  
  export default {
    data: () => ({
      snackbar: false,
      y: "top",
      x: "right",
      mode: "",
      timeout: 3000,
      text: "",
0721aca93   Neeraj Sharma   solve bugs in sub...
291
      color: "",
fc82ac667   Neeraj Sharma   fix design and re...
292
      showLoader: false,
beb598536   Neeraj Sharma   design and functi...
293
      loading: false,
afc98f028   Neeraj Sharma   implement class v...
294
      editLoading: false,
beb598536   Neeraj Sharma   design and functi...
295
296
      date: null,
      search: "",
beb598536   Neeraj Sharma   design and functi...
297
298
299
      dialog: false,
      dialog1: false,
      valid: true,
afc98f028   Neeraj Sharma   implement class v...
300
      validEditSubject: true,
beb598536   Neeraj Sharma   design and functi...
301
302
      isActive: true,
      newActive: false,
beb598536   Neeraj Sharma   design and functi...
303
      gender: ["Male", "Female"],
beb598536   Neeraj Sharma   design and functi...
304
      pagination: {
2b0e316ee   Neeraj Sharma   upload mytiple im...
305
        rowsPerPage: 19
beb598536   Neeraj Sharma   design and functi...
306
      },
46db0a3b5   Neeraj Sharma   add sunbject and ...
307
308
      token: "",
      nameRules: [v => !!v || " Class Name is required"],
afc98f028   Neeraj Sharma   implement class v...
309
      nameEditSubjectRules: [v => !!v || " Class Name is required"],
46db0a3b5   Neeraj Sharma   add sunbject and ...
310
      subjectRules: [v => !!v || " Subject Name is required"],
39fb2832e   Neeraj Sharma   implement class v...
311
      subjectEditNameRules: [v => !!v || " Subject Name is required"],
beb598536   Neeraj Sharma   design and functi...
312
313
314
315
316
317
318
      headers: [
        {
          text: "No",
          align: "center",
          sortable: false,
          value: "No"
        },
fc82ac667   Neeraj Sharma   fix design and re...
319
        {
46db0a3b5   Neeraj Sharma   add sunbject and ...
320
321
          text: "Subject Name",
          value: "subjectName",
fc82ac667   Neeraj Sharma   fix design and re...
322
323
324
          sortable: false,
          align: "center"
        },
beb598536   Neeraj Sharma   design and functi...
325
326
        { text: "Action", value: "", sortable: false, align: "center" }
      ],
46db0a3b5   Neeraj Sharma   add sunbject and ...
327
328
      subjectList: [],
      classList: [],
beb598536   Neeraj Sharma   design and functi...
329
      editedIndex: -1,
46db0a3b5   Neeraj Sharma   add sunbject and ...
330
331
      addSubject: {},
      selectClassId: "",
0721aca93   Neeraj Sharma   solve bugs in sub...
332
      selectClassId: "",
beb598536   Neeraj Sharma   design and functi...
333
      editedItem: {
46db0a3b5   Neeraj Sharma   add sunbject and ...
334
        subjectName: ""
a17c68a03   Neeraj Sharma   implement two rou...
335
      }
beb598536   Neeraj Sharma   design and functi...
336
    }),
beb598536   Neeraj Sharma   design and functi...
337
338
339
340
    methods: {
      pickFile() {
        this.$refs.image.click();
      },
beb598536   Neeraj Sharma   design and functi...
341
      editItem(item) {
afc98f028   Neeraj Sharma   implement class v...
342
        console.log("item", item);
beb598536   Neeraj Sharma   design and functi...
343
344
345
346
        this.editedItem = Object.assign({}, item);
        this.dialog = true;
      },
      profile(item) {
beb598536   Neeraj Sharma   design and functi...
347
348
349
350
        this.editedItem = Object.assign({}, item);
        this.dialog1 = true;
      },
      deleteItem(item) {
46db0a3b5   Neeraj Sharma   add sunbject and ...
351
        let deleteSubject = {
0721aca93   Neeraj Sharma   solve bugs in sub...
352
          classId: this.selectClassId,
46db0a3b5   Neeraj Sharma   add sunbject and ...
353
          subjectId: item._id
beb598536   Neeraj Sharma   design and functi...
354
355
356
        };
        http()
          .delete(
46db0a3b5   Neeraj Sharma   add sunbject and ...
357
            "/deleteSubject",
beb598536   Neeraj Sharma   design and functi...
358
            confirm("Are you sure you want to delete this?") && {
46db0a3b5   Neeraj Sharma   add sunbject and ...
359
              params: deleteSubject
beb598536   Neeraj Sharma   design and functi...
360
361
362
            }
          )
          .then(response => {
0721aca93   Neeraj Sharma   solve bugs in sub...
363
364
365
            this.getClassSubject();
            this.snackbar = true;
            this.text = "Successfully delete Existing Subject";
beb598536   Neeraj Sharma   design and functi...
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
          })
          .catch(error => {
            // console.log(error);
          });
      },
      activeTab(type) {
        switch (type) {
          case "existing":
            this.newActive = false;
            this.isActive = true;
            break;
  
          default:
            this.newActive = true;
            this.isActive = false;
            break;
        }
      },
      close() {
        this.dialog = false;
beb598536   Neeraj Sharma   design and functi...
386
387
388
389
390
391
      },
      close1() {
        this.dialog1 = false;
      },
      submit() {
        if (this.$refs.form.validate()) {
beb598536   Neeraj Sharma   design and functi...
392
          http()
46db0a3b5   Neeraj Sharma   add sunbject and ...
393
            .post("/addSubject", this.addSubject)
beb598536   Neeraj Sharma   design and functi...
394
            .then(response => {
0721aca93   Neeraj Sharma   solve bugs in sub...
395
396
397
              this.getClassSubject();
              this.snackbar = true;
              this.text = "New Subject added successfully";
beb598536   Neeraj Sharma   design and functi...
398
              this.clear();
0721aca93   Neeraj Sharma   solve bugs in sub...
399
              this.color = "green";
beb598536   Neeraj Sharma   design and functi...
400
401
402
            })
            .catch(error => {
              // console.log(error);
0721aca93   Neeraj Sharma   solve bugs in sub...
403
404
405
              this.snackbar = true;
              this.text = error.response.data.message;
              this.color = "error";
beb598536   Neeraj Sharma   design and functi...
406
407
408
            });
        }
      },
beb598536   Neeraj Sharma   design and functi...
409
410
411
412
      clear() {
        this.$refs.form.reset();
      },
      save() {
afc98f028   Neeraj Sharma   implement class v...
413
414
415
416
417
418
419
420
421
422
423
        if (this.$refs.formEditSubject.validate()) {
          let editSubject = {
            classId: this.addSubject.selectName,
            subjectId: this.editedItem._id,
            subjectName: this.editedItem.subjectName
          };
          this.editLoading = true;
          http()
            .put("/updateSubject", editSubject)
            .then(response => {
              this.snackbar = true;
46db0a3b5   Neeraj Sharma   add sunbject and ...
424
              this.text = "Successfully Edit Existing Subject";
afc98f028   Neeraj Sharma   implement class v...
425
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
              this.editLoading = false;
              http()
                .get(
                  "/getParticularClass",
                  { params: { classId: this.selectClassId } },
                  {
                    headers: { Authorization: "Bearer " + this.token }
                  }
                )
                .then(response => {
                  this.subjectList = response.data.data;
                  this.getClassSubject();
                  this.snackbar = true;
                  this.color = "green";
                  this.text = response.data.message;
                  this.close();
                })
                .catch(err => {
                  console.log("err====>", err);
                });
            })
            .catch(error => {
              this.editLoading = false;
  
              // console.log(error);
            });
        }
beb598536   Neeraj Sharma   design and functi...
452
      },
0721aca93   Neeraj Sharma   solve bugs in sub...
453
454
      getClassSubject() {
        this.selectClassId = this.selectClassId;
46db0a3b5   Neeraj Sharma   add sunbject and ...
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
        http()
          .get(
            "/getParticularClass",
            { params: { classId: this.selectClassId } },
            {
              headers: { Authorization: "Bearer " + this.token }
            }
          )
          .then(response => {
            this.subjectList = response.data.data;
          })
          .catch(err => {
            console.log("err====>", err);
          });
      },
      getClass() {
        http()
          .get("/getClassesList", {
            headers: { Authorization: "Bearer " + this.token }
          })
          .then(response => {
            this.classList = response.data.data;
          })
00e4bc4e1   Neeraj Sharma   fixed auntentication
478
          .catch(error => {
a17c68a03   Neeraj Sharma   implement two rou...
479
480
481
482
483
            if (error.response.status === 401) {
              this.$router.replace({ path: "/" });
              this.$store.dispatch("setToken", null);
              this.$store.dispatch("Id", null);
            }
46db0a3b5   Neeraj Sharma   add sunbject and ...
484
          });
beb598536   Neeraj Sharma   design and functi...
485
486
487
      }
    },
    mounted() {
46db0a3b5   Neeraj Sharma   add sunbject and ...
488
489
490
      this.token = this.$store.state.token;
      // this.getNoticeDataList();
      this.getClass();
beb598536   Neeraj Sharma   design and functi...
491
    },
a17c68a03   Neeraj Sharma   implement two rou...
492
493
494
495
496
497
498
499
    created() {
      this.$root.$on("app:search", search => {
        this.search = search;
      });
    },
    beforeDestroy() {
      // dont forget to remove the listener
      this.$root.$off("app:search");
beb598536   Neeraj Sharma   design and functi...
500
501
502
503
    }
  };
  </script>
  <style scoped>
beb598536   Neeraj Sharma   design and functi...
504
  .active {
687e0b929   Neeraj Sharma   add user,attenden...
505
    background-color: gray;
beb598536   Neeraj Sharma   design and functi...
506
507
508
509
510
    color: white !important;
  }
  .activebtn {
    color: black !important;
  }
beb598536   Neeraj Sharma   design and functi...
511
  </style>