Fixes to numeric and date intersection metadata. Adds logic for removing secondary metadatum metaquery from tag. #887.

This commit is contained in:
mateuswetah 2024-06-12 09:00:47 -03:00
parent 94a60a1a86
commit 710e3c50ed
7 changed files with 57 additions and 17 deletions

View File

@ -185,10 +185,15 @@
let dateInit = this.dateInit.getUTCFullYear() + '-' + let dateInit = this.dateInit.getUTCFullYear() + '-' +
('00' + (this.dateInit.getUTCMonth() + 1)).slice(-2) + '-' + ('00' + (this.dateInit.getUTCMonth() + 1)).slice(-2) + '-' +
('00' + this.dateInit.getUTCDate()).slice(-2); ('00' + this.dateInit.getUTCDate()).slice(-2);
let dateEnd = this.dateEnd.getUTCFullYear() + '-' +
('00' + (this.dateEnd.getUTCMonth() + 1)).slice(-2) + '-' + if ( this.dateEnd !== null ) {
('00' + this.dateEnd.getUTCDate()).slice(-2); let dateEnd = this.dateEnd.getUTCFullYear() + '-' +
values = [ dateInit, dateEnd ]; ('00' + (this.dateEnd.getUTCMonth() + 1)).slice(-2) + '-' +
('00' + this.dateEnd.getUTCDate()).slice(-2);
values = [ dateInit, dateEnd ];
} else {
values = [ dateInit ];
}
} }
if ( this.filterTypeOptions.accept_date_interval !== 'yes' ) { if ( this.filterTypeOptions.accept_date_interval !== 'yes' ) {

View File

@ -116,6 +116,13 @@ class Dates_Intersection_Interval_Helper {
) { ) {
$filter_arguments['label'] = $filter_arguments['label'][0] . ' - ' . $filter_arguments['label'][1]; $filter_arguments['label'] = $filter_arguments['label'][0] . ' - ' . $filter_arguments['label'][1];
} }
if (
isset( $filter_arguments['filter'] ) &&
isset( $filter_arguments['filter']['metadatum'] ) &&
isset( $filter_arguments['filter']['metadatum']['metadatum_name'] )
) {
$filter_arguments['filter']['name'] = $filter_arguments['filter']['metadatum']['metadatum_name'];
}
if ( if (
isset( $filter_arguments['filter'] ) && isset( $filter_arguments['filter'] ) &&
isset( $filter_arguments['filter']['filter_type_options'] ) && isset( $filter_arguments['filter']['filter_type_options'] ) &&

View File

@ -101,7 +101,7 @@
compare: this.filterTypeOptions.first_comparator, compare: this.filterTypeOptions.first_comparator,
metadatum_id: this.metadatumId, metadatum_id: this.metadatumId,
collection_id: this.collectionId, collection_id: this.collectionId,
value: this.filterTypeOptions.accept_numeric_interval === 'yes' ? values : values[0] value: values[0]
}); });
this.$emit('input', { this.$emit('input', {
filter: 'intersection', filter: 'intersection',
@ -109,7 +109,8 @@
compare: this.filterTypeOptions.second_comparator, compare: this.filterTypeOptions.second_comparator,
metadatum_id: this.filterTypeOptions.secondary_filter_metadatum_id, metadatum_id: this.filterTypeOptions.secondary_filter_metadatum_id,
collection_id: this.collectionId, collection_id: this.collectionId,
value: this.filterTypeOptions.accept_numeric_interval === 'yes' ? values : values[0] value: values[0],
secondary: true
}); });
} else { } else {
// Much more complicated logic to be implemented in the future. See #889 // Much more complicated logic to be implemented in the future. See #889

View File

@ -127,6 +127,13 @@ class Numerics_Intersection_Interval_Helper {
) { ) {
$filter_arguments['label'] = $filter_arguments['label'][0] . ' - ' . $filter_arguments['label'][1]; $filter_arguments['label'] = $filter_arguments['label'][0] . ' - ' . $filter_arguments['label'][1];
} }
if (
isset( $filter_arguments['filter'] ) &&
isset( $filter_arguments['filter']['metadatum'] ) &&
isset( $filter_arguments['filter']['metadatum']['metadatum_name'] )
) {
$filter_arguments['filter']['name'] = $filter_arguments['filter']['metadatum']['metadatum_name'];
}
if ( if (
isset( $filter_arguments['filter'] ) && isset( $filter_arguments['filter'] ) &&
isset( $filter_arguments['filter']['filter_type_options'] ) && isset( $filter_arguments['filter']['filter_type_options'] ) &&

View File

@ -113,7 +113,8 @@
taxonomy: tag.taxonomy, taxonomy: tag.taxonomy,
metadatumName: this.getMetadatumName(tag), metadatumName: this.getMetadatumName(tag),
metadatumId: tag.metadatumId, metadatumId: tag.metadatumId,
argType: tag.argType argType: tag.argType,
secondaryMetadatumId: tag.secondaryMetadatumId
}); });
} }
} else { } else {
@ -124,11 +125,12 @@
taxonomy: tag.taxonomy, taxonomy: tag.taxonomy,
metadatumName: this.getMetadatumName(tag), metadatumName: this.getMetadatumName(tag),
metadatumId: tag.metadatumId, metadatumId: tag.metadatumId,
argType: tag.argType argType: tag.argType,
secondaryMetadatumId: tag.secondaryMetadatumId
}); });
} }
}); });
return flattenTags; return flattenTags;
} }
}, },
@ -168,7 +170,7 @@
...mapGetters('search',[ ...mapGetters('search',[
'getFilterTags' 'getFilterTags'
]), ]),
removeMetaQuery({ filterId, value, singleLabel, label, taxonomy, metadatumId, metadatumName, argType }) { removeMetaQuery({ filterId, value, singleLabel, label, taxonomy, metadatumId, metadatumName, argType, secondaryMetadatumId }) {
this.$eventBusSearch.resetPageOnStore(); this.$eventBusSearch.resetPageOnStore();
this.$eventBusSearch.removeMetaFromFilterTag({ this.$eventBusSearch.removeMetaFromFilterTag({
filterId: filterId, filterId: filterId,
@ -178,7 +180,8 @@
taxonomy: taxonomy, taxonomy: taxonomy,
metadatumId: metadatumId, metadatumId: metadatumId,
metadatumName:metadatumName, metadatumName:metadatumName,
argType: argType argType: argType,
secondaryMetadatumId: secondaryMetadatumId
}); });
}, },
clearAllFilters() { clearAllFilters() {

View File

@ -29,7 +29,7 @@ export default {
this.updateURLQueries(); this.updateURLQueries();
}, },
removeMetaFromFilterTag(filterTag) { removeMetaFromFilterTag(filterTag) {
if (filterTag.singleLabel != undefined || filterTag.label != undefined) { if (filterTag.singleLabel != undefined || filterTag.label != undefined) {
if (filterTag.argType !== 'postin') { if (filterTag.argType !== 'postin') {
@ -39,7 +39,8 @@ export default {
label: filterTag.singleLabel ? filterTag.singleLabel : filterTag.label, label: filterTag.singleLabel ? filterTag.singleLabel : filterTag.label,
isMultiValue: filterTag.singleLabel ? false : true, isMultiValue: filterTag.singleLabel ? false : true,
taxonomy: filterTag.taxonomy, taxonomy: filterTag.taxonomy,
value: filterTag.value value: filterTag.value,
secondaryMetadatumId: filterTag.secondaryMetadatumId
}); });
} else { } else {
app.config.globalProperties.$store.dispatch('search/removeMetaQuery', { app.config.globalProperties.$store.dispatch('search/removeMetaQuery', {
@ -47,7 +48,8 @@ export default {
label: filterTag.singleLabel ? filterTag.singleLabel : filterTag.label, label: filterTag.singleLabel ? filterTag.singleLabel : filterTag.label,
isMultiValue: filterTag.singleLabel ? false : true, isMultiValue: filterTag.singleLabel ? false : true,
metadatum_id: filterTag.metadatumId, metadatum_id: filterTag.metadatumId,
value: filterTag.value value: filterTag.value,
secondaryMetadatumId: filterTag.secondaryMetadatumId
}); });
} }
} else { } else {

View File

@ -91,13 +91,27 @@ export const removeMetaQuery = ( state, filter ) => {
let index = state.postquery.metaquery.findIndex( item => item.key == filter.metadatum_id); let index = state.postquery.metaquery.findIndex( item => item.key == filter.metadatum_id);
if (index >= 0) { if ( index >= 0 ) {
if (!filter.isMultiValue && Array.isArray(state.postquery.metaquery[index].value) && state.postquery.metaquery[index].value.length > 1) { if (!filter.isMultiValue && Array.isArray(state.postquery.metaquery[index].value) && state.postquery.metaquery[index].value.length > 1) {
let otherIndex = state.postquery.metaquery[index].value.findIndex(item => item == filter.value); let otherIndex = state.postquery.metaquery[index].value.findIndex(item => item == filter.value);
if (otherIndex >= 0) if ( otherIndex >= 0 )
state.postquery.metaquery[index].value.splice(otherIndex, 1) state.postquery.metaquery[index].value.splice(otherIndex, 1)
} else } else
state.postquery.metaquery.splice(index, 1); state.postquery.metaquery.splice(index, 1);
console.log(filter)
// Handles removing metaqueries from secondary filter metadata
if ( filter.secondaryMetadatumId ) {
let secondaryIndex = state.postquery.metaquery.findIndex( item => item.key == filter.secondaryMetadatumId);
if ( secondaryIndex >= 0 ) {
if ( !filter.isMultiValue && Array.isArray(state.postquery.metaquery[secondaryIndex].value) && state.postquery.metaquery[secondaryIndex].value.length > 1 ) {
let otherSecondaryIndex = state.postquery.metaquery[secondaryIndex].value.findIndex(item => item == filter.value);
if ( otherSecondaryIndex >= 0 )
state.postquery.metaquery[secondaryIndex].value.splice(otherSecondaryIndex, 1)
} else
state.postquery.metaquery.splice(secondaryIndex, 1);
}
}
} }
}; };
@ -188,7 +202,8 @@ export const setFilterTags = ( state, filterArguments ) => {
) ? aFilterArgument.metadatum.metadata_type_object.options.taxonomy : '', ) ? aFilterArgument.metadatum.metadata_type_object.options.taxonomy : '',
argType: aFilterArgument.arg_type ? aFilterArgument.arg_type : '', argType: aFilterArgument.arg_type ? aFilterArgument.arg_type : '',
metadatumId: (aFilterArgument.filter && aFilterArgument.metadatum.metadatum_id) ? aFilterArgument.metadatum.metadatum_id : (aFilterArgument.metadatum.id || ''), metadatumId: (aFilterArgument.filter && aFilterArgument.metadatum.metadatum_id) ? aFilterArgument.metadatum.metadatum_id : (aFilterArgument.metadatum.id || ''),
metadatumName: (aFilterArgument.filter && aFilterArgument.filter.name) ? aFilterArgument.filter.name : (aFilterArgument.metadatum.name || '') metadatumName: (aFilterArgument.filter && aFilterArgument.filter.name) ? aFilterArgument.filter.name : (aFilterArgument.metadatum.name || ''),
secondaryMetadatumId: (aFilterArgument.filter && aFilterArgument.filter.filter_type_options && aFilterArgument.filter.filter_type_options.secondary_filter_metadatum_id) ? aFilterArgument.filter.filter_type_options.secondary_filter_metadatum_id : '',
} }
}); });
state.filter_tags = filterTags; state.filter_tags = filterTags;