Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <template>
  2. <div>
  3.   <div class="page">
  4.       <p class="content">{{ product.description }}</p>
  5.       <p style="text-align: left;">{{ product.description }}</p>
  6.       <p class="content">{{ product.price }} EUR</p>
  7.       <div class="select size">
  8.        
  9.         <select  class="br2" id="sizes" v-model="sizeSelect">
  10.           <option  value="">Choose size</option>
  11.           <option v-for="size in product.size" :value="size">{{ size }}</option>
  12.         </select>
  13.       </div>
  14.       <div>  
  15.         <span v-if="btn === 'Add to bag'" type="button" class="btn br1 br2" v-on:click="addToCart()">{{ btn }}</span>
  16.         <router-link v-else to="/"><span class="btn br1 br2">{{ btn }}</span></router-link>
  17.         <p v-if="msg != ''"  class="alert alert-danger">{{ msg }}</p>
  18.       </div>
  19.       <div class="counter">
  20.         <router-link to="/">
  21.         <img src="static/imgs/cart.png" alt="" />
  22.         <span v-if="count > 0">{{ count }}</span>
  23.         </router-link>
  24.       </div>
  25.   </div>
  26. </div>
  27. </template>
  28.  
  29. <script>
  30. export default {
  31.   name: 'page',
  32.   data () {
  33.     return {
  34.       id: '',
  35.       sizeSelect: '',
  36.       images: '',
  37.       btn: 'Add to bag',
  38.       msg: '',
  39.       count: '',
  40.       product: {},
  41.       products: []
  42.     }
  43.   },
  44.   components: {
  45.    
  46.   },
  47.   methods: {
  48.     getProdById: function(products, id){
  49.       let self = this
  50.       products.forEach(function(val){
  51.         if(val.id == id){
  52.           return self.product = val
  53.         }
  54.       })
  55.     },
  56.     getCount: function(){
  57.       let self = this
  58.       if (localStorage['cart']){
  59.         var data = JSON.parse(localStorage['cart'])
  60.         var i = 0
  61.         self.count = 0
  62.         for(var key in data){
  63.           i += data[key].count
  64.         }
  65.         self.count = i
  66.         return self.count
  67.       }
  68.     },
  69.     copyObj: function(obj){
  70.       var copy = {}
  71.       for(var key in obj){
  72.         copy[key] = obj[key]
  73.       }
  74.       return copy
  75.     },
  76.     addToCart: function(){
  77.       if (this.sizeSelect == ''){
  78.         this.msg = 'Select size!'
  79.         return false
  80.       }
  81.       var self = this
  82.       this.msg = ''
  83.     if (localStorage['cart']){
  84.       var cart = JSON.parse(localStorage['cart'])
  85.       if(cart.hasOwnProperty(self.product.id)){
  86.         if (cart[self.product.id].size.indexOf(self.sizeSelect) == -1){
  87.           cart[self.product.id].size.push(self.sizeSelect)
  88.           cart[self.product.id].count++
  89.           localStorage['cart'] = JSON.stringify(cart)
  90.           this.btn = 'Proceed to chekout'
  91.           self.getCount()
  92.         }else{
  93.           self.msg = 'This size is already added to the cart!'
  94.         }
  95.       }else{
  96.         var data = self.copyObj(self.product)
  97.         data.size = []
  98.         data.size.push(self.sizeSelect)
  99.         data.count = 1
  100.         cart[data.id] = data
  101.         localStorage['cart'] = JSON.stringify(cart)
  102.         this.btn = 'Proceed to chekout'
  103.         self.getCount()
  104.       }
  105.     }else{
  106.       var data = self.copyObj(self.product)
  107.       var cart = {}
  108.       data.size = []
  109.       data.size.push(self.sizeSelect)
  110.       data.count = 1
  111.       cart[data.id] = data
  112.       localStorage['cart'] = JSON.stringify(cart)
  113.       this.btn = 'Proceed to chekout'
  114.       self.getCount()
  115.     }
  116.     }
  117.     ////// TOLKO ID SIZE & COUNT - copy////
  118.     // addToCart: function(){
  119.     //   if (this.sizeSelect == ''){
  120.     //     this.msg = 'Select size!'
  121.     //     return false
  122.     //   }
  123.     //   var self = this
  124.     //   this.msg = ''
  125.     // if (localStorage['cart']){
  126.     //   var cart = JSON.parse(localStorage['cart'])
  127.     //   if(cart.hasOwnProperty(self.product.id)){
  128.     //     if (cart[self.product.id].size.indexOf(self.sizeSelect) == -1){
  129.     //       cart[self.product.id].size.push(self.sizeSelect)
  130.     //       cart[self.product.id].count++
  131.     //       localStorage['cart'] = JSON.stringify(cart)
  132.     //       this.btn = 'Proceed to chekout'
  133.     //       self.getCount()
  134.     //     }else{
  135.     //       self.msg = 'This size is already added to the cart!'
  136.     //     }
  137.     //   }else{
  138.     //     var data = {}
  139.     //     data.id = self.product.id
  140.     //     data.size = []
  141.     //     data.size.push(self.sizeSelect)
  142.     //     data.count = 1
  143.     //     cart[data.id] = data
  144.     //     localStorage['cart'] = JSON.stringify(cart)
  145.     //     this.btn = 'Proceed to chekout'
  146.     //     self.getCount()
  147.     //   }
  148.     // }else{
  149.     //   var data = {}
  150.     //   var cart = {}
  151.     //   data.id = self.product.id
  152.     //   data.size = []
  153.     //   data.size.push(self.sizeSelect)
  154.     //   data.count = 1
  155.     //   cart[data.id] = data
  156.     //   localStorage['cart'] = JSON.stringify(cart)
  157.     //   this.btn = 'Proceed to chekout'
  158.     //   self.getCount()
  159.     // }
  160.     // }
  161.  
  162.  
  163.  
  164.  
  165.   },
  166.   created(){
  167.     this.products = Products,
  168.     this.id = this.$route.params.id
  169.     this.getProdById(this.products, this.id)
  170.     this.getCount()
  171.   }
  172. }
  173. </script>
  174. <<style>
  175. div.page{
  176.   width: 300px;
  177.   float: right;
  178. }
  179. .br2{
  180.   width: 300px;
  181.   height: 30px;
  182.   margin-bottom: 10px;
  183.   text-align-last: center;
  184. }
  185.  
  186. .content{
  187.  font-weight: bold;
  188.  margin-top: 30px;
  189.  margin-bottom: 30px;
  190.  text-align: left;
  191. }
  192.  
  193. .counter{
  194.   margin-top: 40px;
  195.   width: 50px;
  196.   height: 50px;
  197.   display:inline-block;  
  198.   position:relative;
  199. }
  200.  
  201. .counter img{
  202.   width: 100%;
  203. }
  204. .counter span{
  205.   display: inline-block;
  206.   position:absolute;
  207.   bottom: 15px;
  208. }
  209. </style>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement