Blame view

src/pages/Class/addclass.vue 11.9 KB
1ed542553   Neeraj Sharma   all api implement...
1
  <template>
a17c68a03   Neeraj Sharma   implement two rou...
2
    <div>
687e0b929   Neeraj Sharma   add user,attenden...
3
      <v-tabs grow slider-color="gary">
1ed542553   Neeraj Sharma   all api implement...
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        <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>
f4df757fe   Neeraj Sharma   responsive vie in...
19
        <!-- ****** EDIT  ClASS  ****** -->
1ed542553   Neeraj Sharma   all api implement...
20
21
22
23
24
25
26
27
28
29
        <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">
aa8fc5033   Neeraj Sharma   implenment all pa...
30
31
32
33
34
35
36
37
38
            <v-flex xs12 sm12 class>
              <v-toolbar color="grey lighten-2">
                <v-spacer></v-spacer>
                <v-toolbar-title>
                  <h3>Edit Class</h3>
                </v-toolbar-title>
                <v-spacer></v-spacer>
              </v-toolbar>
              <v-card>
495e4037c   Neeraj Sharma   update
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
                <v-container fluid>
                  <v-layout justify-center>
                    <v-flex xs12 sm9>
                      <v-layout style="position:relative;">
                        <v-flex xs3 lg2 class="pt-4 subheading">
                          <label class="right">Class:</label>
                        </v-flex>
                        <v-flex xs9 class="ml-2">
                          <v-autocomplete
                            v-model="editedItem.classNum"
                            :label="editedItem.classNum"
                            :items="classList"
                            :rules="nameRules"
                          ></v-autocomplete>
                        </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-flex>
                  </v-layout>
                </v-container>
aa8fc5033   Neeraj Sharma   implenment all pa...
63
64
              </v-card>
            </v-flex>
1ed542553   Neeraj Sharma   all api implement...
65
66
67
68
          </v-dialog>
  
          <!-- ****** PROFILE VIEW STUDENTS ******  -->
          <v-dialog v-model="dialog1" max-width="600px">
506be6fd7   Neeraj Sharma   implemet dyamic i...
69
            <v-toolbar color="grey lighten-2">
1ed542553   Neeraj Sharma   all api implement...
70
              <v-spacer></v-spacer>
a17c68a03   Neeraj Sharma   implement two rou...
71
              <v-toolbar-title>
60e13c8f2   Neeraj Sharma   solve bugs
72
                <h3>Class</h3>
a17c68a03   Neeraj Sharma   implement two rou...
73
              </v-toolbar-title>
1ed542553   Neeraj Sharma   all api implement...
74
75
76
77
              <v-spacer></v-spacer>
              <v-icon @click="close1">close</v-icon>
            </v-toolbar>
            <v-card>
1ed542553   Neeraj Sharma   all api implement...
78
79
80
81
              <v-card-text>
                <v-container grid-list-md>
                  <v-layout wrap>
                    <v-flex>
1ed542553   Neeraj Sharma   all api implement...
82
                      <v-layout>
a17c68a03   Neeraj Sharma   implement two rou...
83
                        <v-flex xs6 sm6>
aa8fc5033   Neeraj Sharma   implenment all pa...
84
85
86
                          <h5 class="right my-1">
                            <b>Class Name:</b>
                          </h5>
1ed542553   Neeraj Sharma   all api implement...
87
                        </v-flex>
a17c68a03   Neeraj Sharma   implement two rou...
88
                        <v-flex sm6 xs6>
1ed542553   Neeraj Sharma   all api implement...
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
                          <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">
687e0b929   Neeraj Sharma   add user,attenden...
116
              <td>{{ props.index + 1 }}</td>
506be6fd7   Neeraj Sharma   implemet dyamic i...
117
              <td class="text-xs-center">{{ props.item.classNum}}</td>
1ed542553   Neeraj Sharma   all api implement...
118
119
              <td class="text-xs-center">
                <span>
495e4037c   Neeraj Sharma   update
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
149
                  <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>
1ed542553   Neeraj Sharma   all api implement...
150
151
152
                </span>
              </td>
            </template>
a17c68a03   Neeraj Sharma   implement two rou...
153
            <v-alert
1ed542553   Neeraj Sharma   all api implement...
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
              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...
177
                    <v-flex xs12 class="mt-4">
1ed542553   Neeraj Sharma   all api implement...
178
179
180
                      <v-form ref="form" v-model="valid" lazy-validation>
                        <v-layout>
                          <v-flex xs4 class="pt-4 subheading">
506be6fd7   Neeraj Sharma   implemet dyamic i...
181
                            <label class="right">Class :</label>
1ed542553   Neeraj Sharma   all api implement...
182
183
                          </v-flex>
                          <v-flex xs6 class="ml-3">
506be6fd7   Neeraj Sharma   implemet dyamic i...
184
                            <v-autocomplete
1ed542553   Neeraj Sharma   all api implement...
185
186
                              v-model="addclasses.classNum"
                              placeholder="fill your class Name"
1ed542553   Neeraj Sharma   all api implement...
187
                              type="text"
506be6fd7   Neeraj Sharma   implemet dyamic i...
188
                              :items="classList"
1ed542553   Neeraj Sharma   all api implement...
189
190
                              :rules="nameRules"
                              required
506be6fd7   Neeraj Sharma   implemet dyamic i...
191
                            ></v-autocomplete>
1ed542553   Neeraj Sharma   all api implement...
192
193
194
195
196
                          </v-flex>
                        </v-layout>
                        <v-layout>
                          <v-flex xs12 sm9 offset-sm2>
                            <v-card-actions>
1ed542553   Neeraj Sharma   all api implement...
197
198
                              <v-spacer></v-spacer>
                              <v-btn @click="submit" round dark :loading="loading">Add</v-btn>
79006bdcb   Neeraj Sharma   uplaod images all...
199
                              <v-spacer></v-spacer>
1ed542553   Neeraj Sharma   all api implement...
200
201
202
203
204
205
206
207
208
209
210
211
                            </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...
212
213
214
      <div class="loader" v-if="showLoader">
        <v-progress-circular indeterminate color="white"></v-progress-circular>
      </div>
a17c68a03   Neeraj Sharma   implement two rou...
215
    </div>
1ed542553   Neeraj Sharma   all api implement...
216
217
218
219
220
221
222
223
224
225
226
227
228
229
  </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...
230
      showLoader: false,
1ed542553   Neeraj Sharma   all api implement...
231
232
233
      loading: false,
      date: null,
      search: "",
1ed542553   Neeraj Sharma   all api implement...
234
235
236
237
238
239
240
241
242
      dialog: false,
      dialog1: false,
      valid: true,
      isActive: true,
      newActive: false,
      AddUsercredentials: {},
      pagination: {
        rowsPerPage: 15
      },
46db0a3b5   Neeraj Sharma   add sunbject and ...
243
      nameRules: [v => !!v || " Class Name is required"],
1ed542553   Neeraj Sharma   all api implement...
244
245
246
      headers: [
        {
          text: "No",
506be6fd7   Neeraj Sharma   implemet dyamic i...
247
          align: "left",
1ed542553   Neeraj Sharma   all api implement...
248
249
250
          sortable: false,
          value: "No"
        },
2b0e316ee   Neeraj Sharma   upload mytiple im...
251
        { text: "Class No", value: "classNum", sortable: false, align: "center" },
1ed542553   Neeraj Sharma   all api implement...
252
253
254
        { text: "Action", value: "", sortable: false, align: "center" }
      ],
      desserts: [],
a17c68a03   Neeraj Sharma   implement two rou...
255
      classList: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"],
1ed542553   Neeraj Sharma   all api implement...
256
257
258
259
      editedIndex: -1,
      editedItem: {
        classNum: ""
      },
a17c68a03   Neeraj Sharma   implement two rou...
260
      addclasses: {
1ed542553   Neeraj Sharma   all api implement...
261
        classNum: ""
a17c68a03   Neeraj Sharma   implement two rou...
262
      }
1ed542553   Neeraj Sharma   all api implement...
263
    }),
1ed542553   Neeraj Sharma   all api implement...
264
265
    methods: {
      getClassList() {
4b169b574   Neeraj Sharma   add loader in all...
266
        this.showLoader = true;
1ed542553   Neeraj Sharma   all api implement...
267
268
        var token = this.$store.state.token;
        http()
2b0e316ee   Neeraj Sharma   upload mytiple im...
269
          .get("/getClassesList")
1ed542553   Neeraj Sharma   all api implement...
270
271
          .then(response => {
            this.desserts = response.data.data;
4b169b574   Neeraj Sharma   add loader in all...
272
            this.showLoader = false;
1ed542553   Neeraj Sharma   all api implement...
273
274
          })
          .catch(err => {
2b0e316ee   Neeraj Sharma   upload mytiple im...
275
            console.log("err====>", err);
4b169b574   Neeraj Sharma   add loader in all...
276
            this.showLoader = false;
a17c68a03   Neeraj Sharma   implement two rou...
277
278
279
280
281
            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...
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
          });
      },
      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...
308
              this.text = "Successfully delete Existing Class";
1ed542553   Neeraj Sharma   all api implement...
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
342
343
344
            }
            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...
345
          this.loading = true;
1ed542553   Neeraj Sharma   all api implement...
346
347
348
349
350
          http()
            .post("/createClass", addClass)
            .then(response => {
              this.getClassList();
              if ((this.snackbar = true)) {
5f1d4b444   Neeraj Sharma   fix design and fi...
351
                this.text = "New class added successfully";
1ed542553   Neeraj Sharma   all api implement...
352
              }
1ed542553   Neeraj Sharma   all api implement...
353
              this.clear();
5f1d4b444   Neeraj Sharma   fix design and fi...
354
              this.loading = false;
1ed542553   Neeraj Sharma   all api implement...
355
356
357
            })
            .catch(error => {
              // console.log(error);
5f1d4b444   Neeraj Sharma   fix design and fi...
358
              this.loading = false;
1ed542553   Neeraj Sharma   all api implement...
359
360
361
362
363
364
              if ((this.snackbar = true)) {
                this.text = error.response.data.message;
              }
            });
        }
      },
1ed542553   Neeraj Sharma   all api implement...
365
366
367
368
369
370
371
372
373
374
375
      clear() {
        this.$refs.form.reset();
      },
      save() {
        let editClass = {
          classId: this.editedItem._id,
          classNum: this.editedItem.classNum
        };
        http()
          .put("/updateClass", editClass)
          .then(response => {
1ed542553   Neeraj Sharma   all api implement...
376
            if ((this.snackbar = true)) {
5f1d4b444   Neeraj Sharma   fix design and fi...
377
              this.text = "Successfully Edit Existing Class";
1ed542553   Neeraj Sharma   all api implement...
378
379
380
381
382
383
384
            }
            this.getClassList();
          })
          .catch(error => {
            // console.log(error);
          });
        this.close();
1ed542553   Neeraj Sharma   all api implement...
385
386
387
388
      }
    },
    mounted() {
      this.getClassList();
a17c68a03   Neeraj Sharma   implement two rou...
389
      // console.log("this.search",this.search)
1ed542553   Neeraj Sharma   all api implement...
390
    },
a17c68a03   Neeraj Sharma   implement two rou...
391
392
393
394
395
396
397
398
    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...
399
400
401
    }
  };
  </script>
506be6fd7   Neeraj Sharma   implemet dyamic i...
402
  <style>
1ed542553   Neeraj Sharma   all api implement...
403
  .active {
687e0b929   Neeraj Sharma   add user,attenden...
404
    background-color: gray;
1ed542553   Neeraj Sharma   all api implement...
405
406
407
408
409
    color: white !important;
  }
  .activebtn {
    color: black !important;
  }
1ed542553   Neeraj Sharma   all api implement...
410
  </style>