123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- import Vue from 'vue'
- import Vuex from 'vuex'
- import { createStore } from 'vuex-extensions'
- // import JSONAPI from 'vuejs/api/json-axios'
- // import qs from 'querystring-es3'
- import MGQ from 'vuejs/api/graphql-axios'
- import { print } from 'graphql/language/printer'
- import gql from 'graphql-tag'
- // import materiauFields from 'vuejs/api/gql/materiau.fragment.gql'
- import Common from './modules/common'
- import User from './modules/user'
- import Search from './modules/search'
- import Blabla from './modules/blabla'
- import Showrooms from './modules/showrooms'
- import Pages from './modules/pages'
- // https://github.com/vuejs/vuex/tree/dev/examples/shopping-cart
- Vue.use(Vuex)
- // export default new Vuex.Store({
- export default createStore(Vuex.Store, {
- modules: {
- Common,
- User,
- Search,
- Blabla,
- Showrooms,
- Pages
- },
- // https://github.com/huybuidac/vuex-extensions
- mixins: {
- actions: {
- loadMaterialsGQL ({ dispatch }, { ids, gqlfragment, gqlFragmentfields, callBack, callBackArgs }) {
- console.log('loadMaterialsGQL ids', ids)
- const ast = gql`{
- materiaux(ids: [${ids}]) {
- ...${gqlFragmentfields}
- }
- }
- ${gqlfragment}
- `
- MGQ.post('', { query: print(ast) })
- .then((resp) => {
- console.log('loadMaterialsGQL resp', resp)
- // dispatch('parseMaterialsGQL', {
- // items: resp.data.data.materiaux,
- // callBack: callBack,
- // callBackArgs: callBackArgs
- // })
- dispatch(callBack, {
- items: resp.data.data.materiaux,
- callBackArgs: callBackArgs
- })
- })
- .catch(error => {
- console.warn('Issue with loadMaterials', error)
- Promise.reject(error)
- })
- }
- // parseMaterialsGQL ({ dispatch }, { items, callBack, callBackArgs }) {
- // dispatch(callBack, { items: items, callBackArgs: callBackArgs })
- // }
- // loadMaterials ({ dispatch }, { uuids, imgStyle, callBack, callBackArgs }) {
- // const params = {
- // // include: 'images', // no needs to include thanks to consumers_image_styles module
- // // include: 'drupal_internal__nid',
- // 'filter[uuids-groupe][group][conjunction]': 'OR'
- // }
- // for (let i = 0; i < uuids.length; i++) {
- // const uuid = uuids[i]
- // params[`filter[${uuid}][condition][path]`] = 'id'
- // params[`filter[${uuid}][condition][value]`] = uuid
- // params[`filter[${uuid}][condition][operator]`] = '='
- // params[`filter[${uuid}][condition][memberOf]`] = 'uuids-groupe'
- // }
- // // console.log('search JSONAPI params', params)
- // const q = qs.stringify(params)
- // return JSONAPI.get('node/materiau?' + q)
- // .then(({ data }) => {
- // console.log('mixin getMaterials data', data)
- // dispatch('parseMaterials', { data: data.data, uuids: uuids, imgStyle: imgStyle, callBack: callBack, callBackArgs: callBackArgs })
- // // commit('setItems', data.items)
- // })
- // .catch((error) => {
- // console.warn('Issue with getItems', error)
- // Promise.reject(error)
- // })
- // },
- // parseMaterials ({ dispatch }, { data, uuids, imgStyle, callBack, callBackArgs }) {
- // // data comes from jsonapi query
- // // uuids comes from original query (solr, FlagCollection, etc)
- // // so we loop from uuids to conserve the original order
- // console.log('mixin parseMaterials', data, uuids, callBack, callBackArgs)
- // const items = []
- // // for (let i = 0; i < data.length; i++) {
- // for (let i = 0; i < uuids.length; i++) {
- // const uuid = uuids[i]
- // // https://stackoverflow.com/questions/11258077/how-to-find-index-of-an-object-by-key-and-value-in-an-javascript-array
- // const item_index = data.findIndex(p => p.id === uuid)
- // // console.log('item_index', item_index)
- // if (item_index === -1) continue
- //
- // const item_src = data[item_index]
- // const attrs = item_src.attributes
- // const relations = item_src.relationships
- //
- // // get field values
- // const item = {
- // uuid: uuid,
- // title: attrs.title,
- // field_short_description: attrs.field_short_description,
- // body: attrs.body,
- // field_reference: attrs.field_reference
- // }
- //
- // // get images included values
- // const img_src = relations.images.data
- // // console.log('img_src', img_src)
- // // this is a temporary deactivation of images
- // // img_src = [];
- // item.images = []
- // for (let j = 0; j < img_src.length; j++) {
- // if (img_src[j].meta.imageDerivatives) {
- // let img_styles = {}
- // for (let k = 0; k < imgStyle.length; k++) {
- // img_styles[imgStyle[k]] = img_src[j].meta.imageDerivatives.links.[imgStyle[k]].href
- // }
- // item.images.push({
- // title: img_src[j].meta.title,
- // src: img_src[j].meta.imageDerivatives.links.hd.href,
- // // meta.imageDerivatives.style.href link is provided by drupal consumers_image_styles module
- // // BUG: missing all image derivative but first
- // img_styles: img_styles
- // })
- // } else {
- // console.warn('missing image derivative ' + j + '/' + img_src.length + ' for ' + attrs.title)
- // }
- // }
- //
- // items.push(item)
- // }
- // console.log('items', items)
- // dispatch(callBack, { items: items, callBackArgs: callBackArgs })
- // }
- }
- }
- })
|