diff options
Diffstat (limited to 'client/src/views')
-rw-r--r-- | client/src/views/Product.vue | 49 |
1 files changed, 23 insertions, 26 deletions
diff --git a/client/src/views/Product.vue b/client/src/views/Product.vue index 11643c1..ff43857 100644 --- a/client/src/views/Product.vue +++ b/client/src/views/Product.vue @@ -4,15 +4,19 @@ <div class="row g-0"> <div class="col-md-6"> - <img :src="productImg" class="img-fluid rounded-start"> + <img :src="curProductImg" class="img-fluid rounded-start"> </div> <div class="col-md-6"> <div class="card-body"> - <h3 class="card-title" v-text="productName"></h3> - <b><i>Price: ${{ productPrice }}</i></b><br/> - <p class="card-text" v-text="productDescription"></p> + <h3 class="card-title" v-text="curProduct.name"></h3> + <h6 class="card-subtitle mb-2 text-muted">Price: ${{ curProduct.price }}</h6> + <p class="card-text" v-text="curProduct.description"></p> + <p class="card-text"><small class="text-muted">Amount: {{curProductQuantity}}</small></p> + </div> + <div class="card-footer"> <div class="btn btn-dark" @click="buy">Add to cart</div> + <div class="btn btn-secondary ms-3" v-show="curProductQuantity" @click="remove">Remove from cart</div> </div> </div> @@ -22,35 +26,28 @@ </template> <script> -import axios from 'axios'; - export default { name: 'Product', async mounted() { - await axios.get(`${process.env.VUE_APP_ROOT_API}/products/${this.$route.params.id}`) - .then(response => { - this.productName = response.data.name; - this.productDescription = response.data.description; - this.productImg = `${process.env.VUE_APP_ROOT_API}/${response.data.imagePath}`; - this.productPrice = response.data.price; - }) - .catch(error => console.error(error)); + this.$store.dispatch('pullProduct', this.$route.params.id); }, - data() { - return { - productName: String, - productDescription: String, - productImg: String, - productPrice: Number - } + computed: { + curProduct() { + return this.$store.getters.getCurrentProduct; + }, + curProductImg() { + return this.$store.getters.getCurrentProductImgUrl; + }, + curProductQuantity() { + return this.$store.getters.getCurrentProductQuantity; + }, }, methods: { buy() { - this.$store.commit('addToCart', { - _id: this.$route.params.id, - name: this.productName, - price: this.productPrice - }); + this.$store.commit('addToCart'); + }, + remove() { + this.$store.commit('removeFromCart'); } } } |