|
@@ -14,7 +14,10 @@ export default {
|
|
|
offset: 0,
|
|
|
limit: 15,
|
|
|
infos: null,
|
|
|
- count: 0
|
|
|
+ count: 0,
|
|
|
+ // infinteState will come from vue-infinite-loading plugin
|
|
|
+ // implemented in vuejs/components/Content/Base.vue
|
|
|
+ infiniteState: null
|
|
|
},
|
|
|
|
|
|
// getters
|
|
@@ -23,13 +26,13 @@ export default {
|
|
|
// mutations
|
|
|
mutations : {
|
|
|
setUuids (state, uuids) {
|
|
|
- state.uuids = uuids
|
|
|
+ state.uuids = state.uuids.concat(uuids)
|
|
|
},
|
|
|
resetUuids (state) {
|
|
|
state.uuids = []
|
|
|
},
|
|
|
setItems (state, items) {
|
|
|
- state.items = items
|
|
|
+ state.items = state.items.concat(items)
|
|
|
},
|
|
|
resetItems (state) {
|
|
|
state.items = []
|
|
@@ -51,6 +54,9 @@ export default {
|
|
|
},
|
|
|
incrementOffset(state) {
|
|
|
state.offset += state.limit
|
|
|
+ },
|
|
|
+ setInfiniteState(state, s){
|
|
|
+ state.infiniteState = s
|
|
|
}
|
|
|
},
|
|
|
|
|
@@ -63,6 +69,12 @@ export default {
|
|
|
commit('resetOffset')
|
|
|
dispatch('getResults')
|
|
|
},
|
|
|
+ nextPage ({ dispatch, commit, state }, $state) {
|
|
|
+ console.log("Search nextPage", $state);
|
|
|
+ commit('incrementOffset')
|
|
|
+ commit('setInfiniteState', $state)
|
|
|
+ dispatch('getResults')
|
|
|
+ },
|
|
|
getResults ({ dispatch, commit, state }) {
|
|
|
let params = {
|
|
|
keys: state.keys,
|
|
@@ -98,7 +110,7 @@ export default {
|
|
|
params[`filter[${uuid}][condition][operator]`] = '='
|
|
|
params[`filter[${uuid}][condition][memberOf]`] = 'uuids-groupe'
|
|
|
}
|
|
|
- console.log('search JSONAPI params', params);
|
|
|
+ // console.log('search JSONAPI params', params);
|
|
|
let q = qs.stringify(params)
|
|
|
return JSONAPI.get('node/materiau?'+q)
|
|
|
.then(({ data }) => {
|
|
@@ -119,6 +131,7 @@ export default {
|
|
|
// for (var i = 0; i < data.length; i++) {
|
|
|
for (var i = 0; i < uuids.length; i++) {
|
|
|
let uuid = uuids[i]
|
|
|
+ // https://stackoverflow.com/questions/11258077/how-to-find-index-of-an-object-by-key-and-value-in-an-javascript-array
|
|
|
let item_index = data.findIndex(p => p.id == uuid)
|
|
|
let item_src = data[item_index]
|
|
|
let attrs = item_src.attributes
|
|
@@ -137,19 +150,28 @@ export default {
|
|
|
let img_src = relations.images.data
|
|
|
item.images = []
|
|
|
for (var j = 0; j < img_src.length; j++) {
|
|
|
- // // https://stackoverflow.com/questions/11258077/how-to-find-index-of-an-object-by-key-and-value-in-an-javascript-array
|
|
|
- // let index = included.findIndex(p => p.id == img_src[j].id)
|
|
|
- // let img = included[index]
|
|
|
item.images.push({
|
|
|
title: img_src[j].meta.title,
|
|
|
+ // meta.imageDerivatives.style.href link is provided by drupal consumers_image_styles module
|
|
|
url: img_src[j].meta.imageDerivatives.links.card_medium.href
|
|
|
})
|
|
|
}
|
|
|
|
|
|
items.push(item)
|
|
|
}
|
|
|
- console.log('items', items);
|
|
|
- commit('setItems', items);
|
|
|
+ console.log('items', items)
|
|
|
+ commit('setItems', items)
|
|
|
+ if(state.infiniteState){
|
|
|
+ if (state.offset + state.limit > state.count) {
|
|
|
+ console.log('Search infinite completed');
|
|
|
+ // tell to vue-infinite-loading plugin that there si no new page
|
|
|
+ state.infiniteState.complete()
|
|
|
+ }else{
|
|
|
+ console.log('Search infinite loaded');
|
|
|
+ // tell to vue-infinite-loading plugin that newpage is loaded
|
|
|
+ state.infiniteState.loaded()
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|