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>
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>
ceb43037a   Neeraj Sharma   fix bugs
94
                          <h5 class="right my-1"><b>Class Name:</b></h5>
1ed542553   Neeraj Sharma   all api implement...
95
                        </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">
1571e40b5   Neeraj Sharma   gallery and socia...
124
              <td>{{ props.index }}</td>
506be6fd7   Neeraj Sharma   implemet dyamic i...
125
              <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;
1ed542553   Neeraj Sharma   all api implement...
269
270
          })
          .catch(err => {
2b0e316ee   Neeraj Sharma   upload mytiple im...
271
            console.log("err====>", err);
4b169b574   Neeraj Sharma   add loader in all...
272
            this.showLoader = false;
a17c68a03   Neeraj Sharma   implement two rou...
273
274
275
276
277
            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...
278
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
          });
      },
      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...
304
              this.text = "Successfully delete Existing Class";
1ed542553   Neeraj Sharma   all api implement...
305
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
            }
            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...
341
          this.loading = true;
1ed542553   Neeraj Sharma   all api implement...
342
343
344
345
346
          http()
            .post("/createClass", addClass)
            .then(response => {
              this.getClassList();
              if ((this.snackbar = true)) {
5f1d4b444   Neeraj Sharma   fix design and fi...
347
                this.text = "New class added successfully";
1ed542553   Neeraj Sharma   all api implement...
348
              }
1ed542553   Neeraj Sharma   all api implement...
349
              this.clear();
5f1d4b444   Neeraj Sharma   fix design and fi...
350
              this.loading = false;
1ed542553   Neeraj Sharma   all api implement...
351
352
353
            })
            .catch(error => {
              // console.log(error);
5f1d4b444   Neeraj Sharma   fix design and fi...
354
              this.loading = false;
1ed542553   Neeraj Sharma   all api implement...
355
356
357
358
359
360
              if ((this.snackbar = true)) {
                this.text = error.response.data.message;
              }
            });
        }
      },
1ed542553   Neeraj Sharma   all api implement...
361
362
363
364
365
366
367
368
369
370
371
      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...
372
            if ((this.snackbar = true)) {
5f1d4b444   Neeraj Sharma   fix design and fi...
373
              this.text = "Successfully Edit Existing Class";
1ed542553   Neeraj Sharma   all api implement...
374
375
376
377
378
379
380
            }
            this.getClassList();
          })
          .catch(error => {
            // console.log(error);
          });
        this.close();
1ed542553   Neeraj Sharma   all api implement...
381
382
383
384
      }
    },
    mounted() {
      this.getClassList();
a17c68a03   Neeraj Sharma   implement two rou...
385
      // console.log("this.search",this.search)
1ed542553   Neeraj Sharma   all api implement...
386
    },
a17c68a03   Neeraj Sharma   implement two rou...
387
388
389
390
391
392
393
394
    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...
395
396
397
    }
  };
  </script>
506be6fd7   Neeraj Sharma   implemet dyamic i...
398
  <style>
1ed542553   Neeraj Sharma   all api implement...
399
400
401
402
403
404
405
  .active {
    background-color: black;
    color: white !important;
  }
  .activebtn {
    color: black !important;
  }
1ed542553   Neeraj Sharma   all api implement...
406
  </style>