Преглед на файлове

Adding cance functionality

Herton преди 7 години
родител
ревизия
a7e88bcf2f
променени са 3 файла, в които са добавени 35 реда и са изтрити 18 реда
  1. 25 12
      src/components/Distributor-form.vue
  2. 6 3
      src/store/modules/distributor/actions.js
  3. 4 3
      src/store/modules/distributor/getters.js

+ 25 - 12
src/components/Distributor-form.vue

@@ -5,7 +5,6 @@
       <b-form-group :label="labels.title"
       <b-form-group :label="labels.title"
                     label-for="distributor_title">
                     label-for="distributor_title">
         <b-form-input id="distributor_title"
         <b-form-input id="distributor_title"
-                      type="email"
                       v-model="distributor.title"
                       v-model="distributor.title"
                       required
                       required
                       :placeholder="labels.titlePlaceholder">
                       :placeholder="labels.titlePlaceholder">
@@ -39,13 +38,14 @@
 
 
           <b-input class="mb-3 mr-sm-3" 
           <b-input class="mb-3 mr-sm-3" 
               v-model="contact.email" 
               v-model="contact.email" 
+              type="email"
               :placeholder="labels.email" />
               :placeholder="labels.email" />
 
 
           <b-input class="mb-3 mr-sm-3" 
           <b-input class="mb-3 mr-sm-3" 
               v-model="contact.phone" 
               v-model="contact.phone" 
               :placeholder="labels.phone"/>
               :placeholder="labels.phone"/>
               
               
-          <b-button @click.stop="onDelete(key)" class="mb-3 mr-sm-3"  variant="primary">{{labels.delete}}</b-button>
+          <b-button @click.stop="onDelete(key)" class="mb-3 mr-sm-3" variant="danger">{{labels.delete}}</b-button>
         
         
         </b-form>
         </b-form>
 
 
@@ -55,7 +55,7 @@
     
     
         <b-form-group class="text-right">
         <b-form-group class="text-right">
           <b-button  type="submit" variant="primary">{{labels.submit}}</b-button>
           <b-button  type="submit" variant="primary">{{labels.submit}}</b-button>
-          <b-button @click.stop="onCancel()" type="reset" variant="danger">{{labels.cancel}}</b-button>
+          <b-button @click.stop="onCancel()" variant="danger">{{labels.cancel}}</b-button>
         </b-form-group>
         </b-form-group>
       </b-form-group>
       </b-form-group>
     </b-form>
     </b-form>
@@ -66,6 +66,7 @@
 import {mapGetters, mapActions} from 'vuex';
 import {mapGetters, mapActions} from 'vuex';
 import * as types from '../store/types';
 import * as types from '../store/types';
 import {store} from '../store/store';
 import {store} from '../store/store';
+import {cloneDeep, debounce} from 'lodash';
 
 
 export default {
 export default {
   props: {
   props: {
@@ -84,11 +85,12 @@ export default {
         cancel: 'Cancel',
         cancel: 'Cancel',
         titlePlaceholder: 'Enter title',
         titlePlaceholder: 'Enter title',
         notesPlaceholder: 'Enter something',
         notesPlaceholder: 'Enter something',
-        add: 'Add',
+        add: 'Add Contact',
         name: 'Name',
         name: 'Name',
         email: 'Email',
         email: 'Email',
         phone: 'Phone',
         phone: 'Phone',
-      }
+      },
+      backup: {},
     }
     }
   },
   },
   computed: {
   computed: {
@@ -103,17 +105,22 @@ export default {
         set(val) {
         set(val) {
           //Placeholder
           //Placeholder
         },
         },
-      }
+      },
   },
   },
   watch: {
   watch: {
     distributor: {
     distributor: {
       handler(val){
       handler(val){
-        this.saveDistributor({
-          id: val.id, 
-          distributor: val
-        });
+          this.saveDistributor({
+            id: val.id, 
+            distributor: val
+          });
       },
       },
       deep: true
       deep: true
+    },
+    id(newId, oldId) {
+      if (newId !== oldId) {
+        this.backup = cloneDeep(this.distributor);
+      }
     }
     }
   },
   },
   methods: {
   methods: {
@@ -121,7 +128,8 @@ export default {
           saveDistributor: types.SET_DISTRIBUTOR,
           saveDistributor: types.SET_DISTRIBUTOR,
       }),
       }),
     onSubmit (ev) {
     onSubmit (ev) {
-      console.log(ev);
+      // No need to save as all should already be saved
+      this.$root.$emit('bv::hide::modal', 'distributor_modal_form');
     },
     },
     onAddContact () {
     onAddContact () {
       console.log('add');
       console.log('add');
@@ -130,7 +138,12 @@ export default {
       console.log('delete', item);
       console.log('delete', item);
     },
     },
     onCancel() {
     onCancel() {
-      console.log('onCancel');
+      //Reset the changes
+      this.saveDistributor({
+          id: this.backup.id, 
+          distributor: this.backup
+        });
+      this.$root.$emit('bv::hide::modal', 'distributor_modal_form');
     }
     }
   },
   },
 }
 }

+ 6 - 3
src/store/modules/distributor/actions.js

@@ -13,13 +13,15 @@ export default {
                         "uuid": "44490103-92B7-4712-B494-E65878E6B0DC",
                         "uuid": "44490103-92B7-4712-B494-E65878E6B0DC",
                         "email": "abc@wisksolutions.com",
                         "email": "abc@wisksolutions.com",
                         "date": "2018-02-28T05:01:26Z",
                         "date": "2018-02-28T05:01:26Z",
-                        "name": "ABC"
+                        "name": "ABC",
+                        "phone": "",
                     },
                     },
                     {
                     {
                         "uuid": "E7AD1046-3293-4F41-910C-63A198C9D3B6",
                         "uuid": "E7AD1046-3293-4F41-910C-63A198C9D3B6",
                         "email": "efg@wisksolutions.com",
                         "email": "efg@wisksolutions.com",
                         "date": "2018-02-28T05:01:26Z",
                         "date": "2018-02-28T05:01:26Z",
-                        "name": "EFG"
+                        "name": "EFG",
+                        "phone": "",
                     }
                     }
                 ]
                 ]
             },
             },
@@ -32,7 +34,8 @@ export default {
                         "uuid": "44490103-92B7-4712-B494-E65878E6B0DC",
                         "uuid": "44490103-92B7-4712-B494-E65878E6B0DC",
                         "email": "abc@wisksolutions.com",
                         "email": "abc@wisksolutions.com",
                         "date": "2018-02-28T05:01:26Z",
                         "date": "2018-02-28T05:01:26Z",
-                        "name": "ABC"
+                        "name": "ABC",
+                        "phone": "",
                     }
                     }
                 ]
                 ]
             },
             },

+ 4 - 3
src/store/modules/distributor/getters.js

@@ -1,11 +1,12 @@
 import * as types from '../../types';
 import * as types from '../../types';
 
 
 const UUID = '44490103-92B7-4712-B494'; //A starting client side id
 const UUID = '44490103-92B7-4712-B494'; //A starting client side id
-
+let random = Math.floor(Math.random() * 9000);
+let count = 0;
 class DistributorClass {
 class DistributorClass {
     constructor() {
     constructor() {
-        //Setting a random client side contact id
-        let uuid = uuid || `${UUID}-${Math.floor(Math.random() * 9000)}`;
+        //Setting a random client side unique contact id
+        let uuid = uuid || `${UUID+count++}-${random}`;
         //Setting the basic properties
         //Setting the basic properties
         this.title = '';
         this.title = '';
         this.notes = '';
         this.notes = '';