Blame view

src/pages/Class/addclass.vue 12 KB
1ed542553   Neeraj Sharma   all api implement...
1
  <template>
a17c68a03   Neeraj Sharma   implement two rou...
2
    <div>
1ed542553   Neeraj Sharma   all api implement...
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
      <v-tabs grow slider-color="black">
        <v-tab
          ripple
          @click="activeTab('existing')"
          v-bind:class="{ active: isActive }"
          id="tab"
          class="subheading"
        >Existing Class</v-tab>
        <v-tab
          ripple
          @click="activeTab('new')"
          v-bind:class="{ active: newActive }"
          id="tab1"
          User
          class="subheading"
        >Add New Class</v-tab>
  
        <!-- ****** EDITS  ADD ClASS  ****** -->
        <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="500px">
506be6fd7   Neeraj Sharma   implemet dyamic i...
31
            <v-toolbar color="grey lighten-2">
1ed542553   Neeraj Sharma   all api implement...
32
              <v-spacer></v-spacer>
a17c68a03   Neeraj Sharma   implement two rou...
33
34
35
              <v-toolbar-title>
                <h3>Edit Class</h3>
              </v-toolbar-title>
1ed542553   Neeraj Sharma   all api implement...
36
37
38
39
40
41
42
43
44
              <v-spacer></v-spacer>
            </v-toolbar>
            <v-card>
              <v-card-text>
                <v-container>
                  <v-layout wrap justify-center>
                    <v-flex xs12 sm9>
                      <v-form ref="form" v-model="valid" lazy-validation>
                        <v-layout style="position:relative;">
a17c68a03   Neeraj Sharma   implement two rou...
45
                          <v-flex xs4 lg2 class="pt-4 subheading">
506be6fd7   Neeraj Sharma   implemet dyamic i...
46
                            <label>Class:</label>
1ed542553   Neeraj Sharma   all api implement...
47
                          </v-flex>
a17c68a03   Neeraj Sharma   implement two rou...
48
                          <v-flex xs10>
506be6fd7   Neeraj Sharma   implemet dyamic i...
49
                            <v-autocomplete
1ed542553   Neeraj Sharma   all api implement...
50
                              v-model="editedItem.classNum"
a17c68a03   Neeraj Sharma   implement two rou...
51
52
                              :label="editedItem.classNum"
                              :items="classList"
1ed542553   Neeraj Sharma   all api implement...
53
                              :rules="nameRules"
506be6fd7   Neeraj Sharma   implemet dyamic i...
54
                            ></v-autocomplete>
1ed542553   Neeraj Sharma   all api implement...
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
                          </v-flex>
                        </v-layout>
                        <v-card-actions>
                          <v-btn round dark @click.native="close">Cancel</v-btn>
                          <v-spacer></v-spacer>
                          <v-btn round dark @click="save">Save</v-btn>
                        </v-card-actions>
                      </v-form>
                    </v-flex>
                  </v-layout>
                </v-container>
              </v-card-text>
            </v-card>
          </v-dialog>
  
          <!-- ****** PROFILE VIEW STUDENTS ******  -->
          <v-dialog v-model="dialog1" max-width="600px">
506be6fd7   Neeraj Sharma   implemet dyamic i...
72
            <v-toolbar color="grey lighten-2">
1ed542553   Neeraj Sharma   all api implement...
73
              <v-spacer></v-spacer>
a17c68a03   Neeraj Sharma   implement two rou...
74
75
76
              <v-toolbar-title>
                <h3>Class Profile</h3>
              </v-toolbar-title>
1ed542553   Neeraj Sharma   all api implement...
77
78
79
80
81
82
              <v-spacer></v-spacer>
              <v-icon @click="close1">close</v-icon>
            </v-toolbar>
            <v-card>
              <v-flex align-center justify-center layout text-xs-center>
                <v-avatar size="50px" style="position:absolute; top:20px;">
a17c68a03   Neeraj Sharma   implement two rou...
83
                  <img src="/static/icon/user.png" />
1ed542553   Neeraj Sharma   all api implement...
84
85
86
87
88
89
                </v-avatar>
              </v-flex>
              <v-card-text>
                <v-container grid-list-md>
                  <v-layout wrap>
                    <v-flex>
a17c68a03   Neeraj Sharma   implement two rou...
90
91
                      <br />
                      <br />
1ed542553   Neeraj Sharma   all api implement...
92
                      <v-layout>
a17c68a03   Neeraj Sharma   implement two rou...
93
                        <v-flex xs6 sm6>
1ed542553   Neeraj Sharma   all api implement...
94
95
                          <h5 class="right my-1">Class Name:</h5>
                        </v-flex>
a17c68a03   Neeraj Sharma   implement two rou...
96
                        <v-flex sm6 xs6>
1ed542553   Neeraj Sharma   all api implement...
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
                          <h5 class="my-1">{{ editedItem.classNum }}</h5>
                        </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>
  
          <!-- ****** EXISTING-USERS Classess Table ****** -->
          <v-data-table
            :headers="headers"
            :items="desserts"
            :pagination.sync="pagination"
            :search="search"
          >
            <template slot="items" slot-scope="props">
506be6fd7   Neeraj Sharma   implemet dyamic i...
124
125
              <td>{{ props.index}}</td>
              <td class="text-xs-center">{{ props.item.classNum}}</td>
1ed542553   Neeraj Sharma   all api implement...
126
127
128
129
130
131
132
              <td class="text-xs-center">
                <span>
                  <img
                    style="cursor:pointer; width:25px; height:18px; "
                    class="mr-5"
                    @click="profile(props.item)"
                    src="/static/icon/eye1.png"
a17c68a03   Neeraj Sharma   implement two rou...
133
                  />
1ed542553   Neeraj Sharma   all api implement...
134
135
136
137
138
                  <img
                    style="cursor:pointer; width:20px; height:18px; "
                    class="mr-5"
                    @click="editItem(props.item)"
                    src="/static/icon/edit1.png"
a17c68a03   Neeraj Sharma   implement two rou...
139
                  />
1ed542553   Neeraj Sharma   all api implement...
140
                  <img
b39d2afd2   Neeraj Sharma   responsive dashboard
141
                    style="cursor:pointer; width:20px; height:20px; "
1ed542553   Neeraj Sharma   all api implement...
142
143
144
                    class="mr-5"
                    @click="deleteItem(props.item)"
                    src="/static/icon/delete1.png"
a17c68a03   Neeraj Sharma   implement two rou...
145
                  />
1ed542553   Neeraj Sharma   all api implement...
146
147
148
                </span>
              </td>
            </template>
a17c68a03   Neeraj Sharma   implement two rou...
149
            <v-alert
1ed542553   Neeraj Sharma   all api implement...
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
              slot="no-results"
              :value="true"
              color="error"
              icon="warning"
            >Your search for "{{ search }}" found no results.</v-alert>
          </v-data-table>
        </v-tab-item>
  
        <!-- ****** ADD multiple Classess ****** -->
        <v-tab-item>
          <v-container>
            <v-snackbar
              :timeout="timeout"
              :top="y === 'top'"
              :right="x === 'right'"
              :vertical="mode === 'vertical'"
              v-model="snackbar"
              color="success"
            >{{ text }}</v-snackbar>
            <v-flex xs12 sm8 offset-sm2 class="top">
              <v-card flat>
                <v-container fluid fill-height>
                  <v-layout align-center>
79006bdcb   Neeraj Sharma   uplaod images all...
173
                    <v-flex xs12 class="mt-4">
1ed542553   Neeraj Sharma   all api implement...
174
175
176
                      <v-form ref="form" v-model="valid" lazy-validation>
                        <v-layout>
                          <v-flex xs4 class="pt-4 subheading">
506be6fd7   Neeraj Sharma   implemet dyamic i...
177
                            <label class="right">Class :</label>
1ed542553   Neeraj Sharma   all api implement...
178
179
                          </v-flex>
                          <v-flex xs6 class="ml-3">
506be6fd7   Neeraj Sharma   implemet dyamic i...
180
                            <v-autocomplete
1ed542553   Neeraj Sharma   all api implement...
181
182
                              v-model="addclasses.classNum"
                              placeholder="fill your class Name"
1ed542553   Neeraj Sharma   all api implement...
183
                              type="text"
506be6fd7   Neeraj Sharma   implemet dyamic i...
184
                              :items="classList"
1ed542553   Neeraj Sharma   all api implement...
185
186
                              :rules="nameRules"
                              required
506be6fd7   Neeraj Sharma   implemet dyamic i...
187
                            ></v-autocomplete>
1ed542553   Neeraj Sharma   all api implement...
188
189
190
191
192
                          </v-flex>
                        </v-layout>
                        <v-layout>
                          <v-flex xs12 sm9 offset-sm2>
                            <v-card-actions>
1ed542553   Neeraj Sharma   all api implement...
193
194
                              <v-spacer></v-spacer>
                              <v-btn @click="submit" round dark :loading="loading">Add</v-btn>
79006bdcb   Neeraj Sharma   uplaod images all...
195
                              <v-spacer></v-spacer>
1ed542553   Neeraj Sharma   all api implement...
196
197
198
199
200
201
202
203
204
205
206
207
                            </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>
4b169b574   Neeraj Sharma   add loader in all...
208
209
210
      <div class="loader" v-if="showLoader">
        <v-progress-circular indeterminate color="white"></v-progress-circular>
      </div>
a17c68a03   Neeraj Sharma   implement two rou...
211
    </div>
1ed542553   Neeraj Sharma   all api implement...
212
213
214
215
216
217
218
219
220
221
222
223
224
225
  </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: "",
a17c68a03   Neeraj Sharma   implement two rou...
226
      showLoader: false,
1ed542553   Neeraj Sharma   all api implement...
227
228
229
      loading: false,
      date: null,
      search: "",
1ed542553   Neeraj Sharma   all api implement...
230
231
232
233
234
235
236
237
238
      dialog: false,
      dialog1: false,
      valid: true,
      isActive: true,
      newActive: false,
      AddUsercredentials: {},
      pagination: {
        rowsPerPage: 15
      },
46db0a3b5   Neeraj Sharma   add sunbject and ...
239
      nameRules: [v => !!v || " Class Name is required"],
1ed542553   Neeraj Sharma   all api implement...
240
241
242
      headers: [
        {
          text: "No",
506be6fd7   Neeraj Sharma   implemet dyamic i...
243
          align: "left",
1ed542553   Neeraj Sharma   all api implement...
244
245
246
          sortable: false,
          value: "No"
        },
2b0e316ee   Neeraj Sharma   upload mytiple im...
247
        { text: "Class No", value: "classNum", sortable: false, align: "center" },
1ed542553   Neeraj Sharma   all api implement...
248
249
250
        { text: "Action", value: "", sortable: false, align: "center" }
      ],
      desserts: [],
a17c68a03   Neeraj Sharma   implement two rou...
251
      classList: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"],
1ed542553   Neeraj Sharma   all api implement...
252
253
254
255
      editedIndex: -1,
      editedItem: {
        classNum: ""
      },
a17c68a03   Neeraj Sharma   implement two rou...
256
      addclasses: {
1ed542553   Neeraj Sharma   all api implement...
257
        classNum: ""
a17c68a03   Neeraj Sharma   implement two rou...
258
      }
1ed542553   Neeraj Sharma   all api implement...
259
    }),
1ed542553   Neeraj Sharma   all api implement...
260
261
    methods: {
      getClassList() {
4b169b574   Neeraj Sharma   add loader in all...
262
        this.showLoader = true;
1ed542553   Neeraj Sharma   all api implement...
263
264
        var token = this.$store.state.token;
        http()
2b0e316ee   Neeraj Sharma   upload mytiple im...
265
          .get("/getClassesList")
1ed542553   Neeraj Sharma   all api implement...
266
267
          .then(response => {
            this.desserts = response.data.data;
4b169b574   Neeraj Sharma   add loader in all...
268
            this.showLoader = false;
2b0e316ee   Neeraj Sharma   upload mytiple im...
269
            // console.log("getClassList=====>", response);
1ed542553   Neeraj Sharma   all api implement...
270
271
          })
          .catch(err => {
2b0e316ee   Neeraj Sharma   upload mytiple im...
272
            console.log("err====>", err);
4b169b574   Neeraj Sharma   add loader in all...
273
            this.showLoader = false;
a17c68a03   Neeraj Sharma   implement two rou...
274
275
276
277
278
            if (error.response.status === 401) {
              this.$router.replace({ path: "/" });
              this.$store.dispatch("setToken", null);
              this.$store.dispatch("Id", null);
            }
1ed542553   Neeraj Sharma   all api implement...
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
          });
      },
      editItem(item) {
        this.editedIndex = this.desserts.indexOf(item);
        this.editedItem = Object.assign({}, item);
        this.dialog = true;
      },
      profile(item) {
        this.editedIndex = this.desserts.indexOf(item);
        this.editedItem = Object.assign({}, item);
        this.dialog1 = true;
      },
      deleteItem(item) {
        let deleteStudent = {
          classId: item._id
        };
        http()
          .delete(
            "/deleteClass",
            confirm("Are you sure you want to delete this?") && {
              params: deleteStudent
            }
          )
          .then(response => {
            // console.log("deleteUers",deleteStudent)
            if ((this.snackbar = true)) {
5f1d4b444   Neeraj Sharma   fix design and fi...
305
              this.text = "Successfully delete Existing Class";
1ed542553   Neeraj Sharma   all api implement...
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
            }
            this.getClassList();
          })
          .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;
        setTimeout(() => {
          this.editedItem = Object.assign({}, this.defaultItem);
          this.editedIndex = -1;
        }, 300);
      },
      close1() {
        this.dialog1 = false;
      },
      submit() {
        if (this.$refs.form.validate()) {
          let addClass = {
            classNum: this.addclasses.classNum
          };
          console.log(addClass);
5f1d4b444   Neeraj Sharma   fix design and fi...
342
          this.loading = true;
1ed542553   Neeraj Sharma   all api implement...
343
344
345
346
347
          http()
            .post("/createClass", addClass)
            .then(response => {
              this.getClassList();
              if ((this.snackbar = true)) {
5f1d4b444   Neeraj Sharma   fix design and fi...
348
                this.text = "New class added successfully";
1ed542553   Neeraj Sharma   all api implement...
349
              }
1ed542553   Neeraj Sharma   all api implement...
350
              this.clear();
5f1d4b444   Neeraj Sharma   fix design and fi...
351
              this.loading = false;
1ed542553   Neeraj Sharma   all api implement...
352
353
354
            })
            .catch(error => {
              // console.log(error);
5f1d4b444   Neeraj Sharma   fix design and fi...
355
              this.loading = false;
1ed542553   Neeraj Sharma   all api implement...
356
357
358
359
360
361
              if ((this.snackbar = true)) {
                this.text = error.response.data.message;
              }
            });
        }
      },
1ed542553   Neeraj Sharma   all api implement...
362
363
364
365
366
367
368
369
370
371
372
373
374
      clear() {
        this.$refs.form.reset();
      },
      save() {
        let editClass = {
          classId: this.editedItem._id,
          classNum: this.editedItem.classNum
        };
        http()
          .put("/updateClass", editClass)
          .then(response => {
            console.log("editClass", editClass);
            if ((this.snackbar = true)) {
5f1d4b444   Neeraj Sharma   fix design and fi...
375
              this.text = "Successfully Edit Existing Class";
1ed542553   Neeraj Sharma   all api implement...
376
377
378
379
380
381
382
            }
            this.getClassList();
          })
          .catch(error => {
            // console.log(error);
          });
        this.close();
1ed542553   Neeraj Sharma   all api implement...
383
384
385
386
      }
    },
    mounted() {
      this.getClassList();
a17c68a03   Neeraj Sharma   implement two rou...
387
      // console.log("this.search",this.search)
1ed542553   Neeraj Sharma   all api implement...
388
    },
a17c68a03   Neeraj Sharma   implement two rou...
389
390
391
392
393
394
395
396
    created() {
      this.$root.$on("app:search", search => {
        this.search = search;
      });
    },
    beforeDestroy() {
      // dont forget to remove the listener
      this.$root.$off("app:search");
1ed542553   Neeraj Sharma   all api implement...
397
398
399
    }
  };
  </script>
506be6fd7   Neeraj Sharma   implemet dyamic i...
400
  <style>
1ed542553   Neeraj Sharma   all api implement...
401
402
403
404
405
406
407
  .active {
    background-color: black;
    color: white !important;
  }
  .activebtn {
    color: black !important;
  }
1ed542553   Neeraj Sharma   all api implement...
408
  </style>