123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- const state = {
- products: [],
- filteredProducts: [],
- filteredVariants: [],
- selectedProduct: null
- }
- const getters = {
- getProducts(state) {
- return state.filteredProducts.length === 0 ? state.products : state.filteredProducts
- },
- getSelectedProduct(state) {
- return state.selectedProduct
- },
- getVariants(state) {
- if (!!state.selectedProduct) {
- return state.filteredVariants.length === 0 ? state.selectedProduct.variants : state.filteredVariants
- }
- return []
- }
- }
- const mutations = {
- pushProducts(state, payload) {
- state.products = [...payload.products]
- },
- setSelectedProduct(state, payload) {
- state.selectedProduct = payload.product
- },
- applyProductsFilter(state, payload) {
- state.filteredProducts = payload
- },
- applyVariantsFilter(state, payload) {
- state.filteredVariants = payload
- }
-
- }
- const actions = {
- fetchProducts ({ commit, dispatch }) {
- return new Promise((resolve, reject) => {
- let pos = new openerp.web.Model('product.template')
- ProductTemplate.call('get_products').then(response => {
- commit('pushProducts', {
- products: response
- })
- dispatch('loaded', {
- module: 'products'
- })
-
- resolve()
- }).fail(error => {
- console.log(error)
- reject(error)
- })
- })
- },
- selectProduct({ commit, dispatch }, payload) {
- if (payload.variant_count > 1) {
- commit('setSelectedProduct', {
- product: payload
- })
- } else {
- dispatch('addToCart', payload.variants[0])
- }
- },
- selectVariant({ commit, dispatch }, payload) {
- commit('setSelectedProduct', {
- product: null
- })
- if (!payload)
- return
-
- dispatch('addToCart', payload)
- },
- filterProducts({ commit }, payload) {
- commit('applyProductsFilter', payload)
- },
- filterVariants({ commit }, payload) {
- commit('applyVariantsFilter', payload)
- }
- }
- export default {
- state,
- getters,
- mutations,
- actions
- }
|