Fixes queries for relationship value on frontend.

This commit is contained in:
Mateus Machado Luna 2019-02-27 14:34:03 -03:00
parent cd66f78e27
commit 2e8cd4fd86
5 changed files with 76 additions and 51 deletions

View File

@ -110,6 +110,8 @@ export const filter_type_mixin = {
}, },
getValuesRelationship(collectionTarget, search, isRepositoryLevel, valuesToIgnore, offset, number, isInCheckboxModal, getSelected = '0') { getValuesRelationship(collectionTarget, search, isRepositoryLevel, valuesToIgnore, offset, number, isInCheckboxModal, getSelected = '0') {
if (search || this.facetsFromItemSearch && this.facetsFromItemSearch.length > 0) {
const source = axios.CancelToken.source(); const source = axios.CancelToken.source();
let currentQuery = JSON.parse(JSON.stringify(this.query)); let currentQuery = JSON.parse(JSON.stringify(this.query));
@ -145,6 +147,10 @@ export const filter_type_mixin = {
axios.tainacan.get(url + '&fetch_only=thumbnail,title,id&' + qs.stringify(query_items)) axios.tainacan.get(url + '&fetch_only=thumbnail,title,id&' + qs.stringify(query_items))
.then(res => { .then(res => {
this.isLoadingOptions = false; this.isLoadingOptions = false;
if (res.data.values)
this.prepareOptionsForRelationship(res.data.values, search, valuesToIgnore, isInCheckboxModal);
else
this.prepareOptionsForRelationship(res.data, search, valuesToIgnore, isInCheckboxModal); this.prepareOptionsForRelationship(res.data, search, valuesToIgnore, isInCheckboxModal);
}) })
.catch((thrown) => { .catch((thrown) => {
@ -157,6 +163,18 @@ export const filter_type_mixin = {
}), }),
source: source source: source
}); });
} else {
let callback = new Promise((resolve) => {
for (const facet in this.facetsFromItemSearch) {
if (facet == this.filter.id) {
this.prepareOptionsForRelationship(this.facetsFromItemSearch[facet], search, valuesToIgnore, isInCheckboxModal);
}
}
});
return new Object ({
request: callback
});
}
}, },
prepareOptionsForPlainText(metadata, search, valuesToIgnore, isInCheckboxModal) { prepareOptionsForPlainText(metadata, search, valuesToIgnore, isInCheckboxModal) {
@ -224,7 +242,7 @@ export const filter_type_mixin = {
let sResults = []; let sResults = [];
let opts = []; let opts = [];
if (res.data.length > 0) { if (items.length > 0) {
for (let item of items) { for (let item of items) {
if (valuesToIgnore != undefined && valuesToIgnore.length > 0) { if (valuesToIgnore != undefined && valuesToIgnore.length > 0) {
let indexToIgnore = valuesToIgnore.findIndex(value => value == item.value); let indexToIgnore = valuesToIgnore.findIndex(value => value == item.value);

View File

@ -163,9 +163,11 @@
axios.get('/collection/' + collectionTarget + '/items?' + query) axios.get('/collection/' + collectionTarget + '/items?' + query)
.then( res => { .then( res => {
if (res.data.items) {
for (let item of res.data) { for (let item of res.data) {
instance.selected.push({ label: item.title, value: item.id, img: item.thumbnail.thumbnail[0] }); instance.selected.push({ label: item.title, value: item.id, img: item.thumbnail.thumbnail[0] });
} }
}
}) })
.catch(error => { .catch(error => {
this.$console.log(error); this.$console.log(error);

View File

@ -27,9 +27,11 @@
let query = qs.stringify({ postin: ( Array.isArray( this.metadatum.value ) ) ? this.metadatum.value : [ this.metadatum.value ] }); let query = qs.stringify({ postin: ( Array.isArray( this.metadatum.value ) ) ? this.metadatum.value : [ this.metadatum.value ] });
axios.get('/collection/'+collectionId+'/items?' + query + '&nopaging=1') axios.get('/collection/'+collectionId+'/items?' + query + '&nopaging=1')
.then( res => { .then( res => {
for (let item of res.data) { if (res.data.items) {
for (let item of res.data.items) {
this.selected.push({ label: item.title, value: item.id, img: '' }); this.selected.push({ label: item.title, value: item.id, img: '' });
} }
}
}) })
.catch(error => { .catch(error => {
this.$console.log(error); this.$console.log(error);
@ -115,9 +117,12 @@
this.loading = false; this.loading = false;
this.options = []; this.options = [];
let result = res.data; let result = res.data;
for (let item of result) {
if (result.items) {
for (let item of result.items) {
this.options.push({ label: item.title, value: item.id }) this.options.push({ label: item.title, value: item.id })
} }
}
}) })
.catch(error => { .catch(error => {
this.$console.log(error); this.$console.log(error);

View File

@ -123,7 +123,7 @@ registerBlockType('tainacan/collections-carousel', {
return tainacan.get(`/collection/${collectionID}/items?perpage=3&paged=1&orderby=date`) return tainacan.get(`/collection/${collectionID}/items?perpage=3&paged=1&orderby=date`)
.then(response => { .then(response => {
return response.data; return response.data.items;
}) })
.catch(error => { .catch(error => {
console.error(error); console.error(error);

View File

@ -137,7 +137,7 @@ registerBlockType('tainacan/items-grid', {
if(collectionID) { if(collectionID) {
return tainacan.get(`/collection/${collectionID}/items?${query}`) return tainacan.get(`/collection/${collectionID}/items?${query}`)
.then(response => { .then(response => {
return response.data; return response.data.items;
}) })
.catch(error => { .catch(error => {
console.error(error); console.error(error);
@ -145,7 +145,7 @@ registerBlockType('tainacan/items-grid', {
} else { } else {
return tainacan.get(`/items?${query}`) return tainacan.get(`/items?${query}`)
.then(response => { .then(response => {
return response.data; return response.data.items;
}) })
.catch(error => { .catch(error => {
console.error(error); console.error(error);