96 lines
2.7 KiB
JavaScript

import { defineStore } from 'pinia'
import { print } from 'graphql/language/printer'
import gql from 'graphql-tag'
// import REST from '@api/rest-axios'
import GQL from '@api/graphql-axios'
// import JSONAPI from '@api/json-axios'
import MA from '@api/ma-axios'
import qs from 'querystring-es3'
import ResultsConcernementFields from '@api/gql/results_concernement.fragment.gql'
import ResultsEntiteFields from '@api/gql/results_entite.fragment.gql'
export const SearchStore = defineStore({
id: 'search',
state: () => ({
keys: null,
contentTypeFilter: 'concernements',
results: [],
loaded_results: []
}),
getters: {
},
actions: {
setKeys (value) {
this.keys = value.split(' ');
},
setContentType (v) {
this.contentTypeFilter = v
},
newSearch () {
console.log('search store loadResults', this.keys);
// this.keys = keys;
const params = {
keys: this.keys.join(', '),
content_type: this.contentTypeFilter
}
const q = qs.stringify(params)
return MA.get('/ouatt_searchapi/getresults?' + q)
.then(({ data }) => {
console.log('search MA getresults data', data, data.nids)
this.results = data;
this.loadeResults();
})
.catch((error) => {
console.warn('Issue with getResults', error)
// window.location.reload()
Promise.reject(error)
})
},
loadeResults () {
return new Promise((resolve, reject) => {
let ast;
if (this.contentTypeFilter === 'entites') {
ast = gql`{
entites(ids: [${this.results.nids}]) {
...ResultsEntiteFields
}
}
${ResultsEntiteFields}
`
GQL.post('', { query: print(ast) })
.then(({ data : { data : { entites } } }) => {
console.log('entites all loaded', entites)
this.loaded_results = entites
})
.catch(error => {
console.warn('Issue with loadResults', error)
Promise.reject(error)
})
} else {
ast = gql`{
concernements(ids: [${this.results.nids}]) {
...ResultsConcernementFields
}
}
${ResultsConcernementFields}
`
GQL.post('', { query: print(ast) })
.then(({ data : { data : { concernements } } }) => {
console.log('concernements all loaded', concernements)
this.loaded_results = concernements
})
.catch(error => {
console.warn('Issue with loadResults', error)
Promise.reject(error)
})
}
// console.log('ast', ast);
})
}
}
})