Skip to content

Commit

Permalink
Merge pull request #6142 from specify/issue-6098
Browse files Browse the repository at this point in the history
Add default query mapping path to filter by COT tree def in QB search
  • Loading branch information
sharadsw authored Jan 24, 2025
2 parents e245b47 + 5d7e19f commit 7a67729
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -550,6 +550,10 @@ export function QueryComboBox({
: fieldName === 'taxonTreeDefId'
? {
field: 'definition',
queryBuilderFieldPath: [
'definition',
'id',
],
isRelationship: true,
operation: 'in',
isNot: false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,15 @@ import type { QueryFieldFilter } from '../QueryBuilder/FieldFilter';
import { queryFieldFilters } from '../QueryBuilder/FieldFilter';
import { QueryFieldSpec } from '../QueryBuilder/fieldSpec';
import { QueryBuilder } from '../QueryBuilder/Wrapped';
import type { MappingPath } from '../WbPlanView/Mapper';
import { queryCbxExtendedSearch } from './helpers';
import { SelectRecordSets } from './SelectRecordSet';

const resourceLimit = 100;

export type QueryComboBoxFilter<SCHEMA extends AnySchema> = {
readonly field: string & (keyof CommonFields | keyof SCHEMA['fields']);
readonly queryBuilderFieldPath?: MappingPath;
readonly isRelationship: boolean;
readonly isNot: boolean;
readonly operation: QueryFieldFilter & ('between' | 'in' | 'less');
Expand Down Expand Up @@ -156,7 +158,6 @@ function testFilter<SCHEMA extends AnySchema>(
? // Cast numbers to strings
values.some((value) => {
const fieldValue = resource.get(field);

return isRelationship
? value == strictIdFromUrl(fieldValue!).toString()
: value == fieldValue;
Expand Down Expand Up @@ -395,8 +396,8 @@ const toQueryFields = <SCHEMA extends AnySchema>(
table: SpecifyTable<SCHEMA>,
filters: RA<QueryComboBoxFilter<SCHEMA>>
): RA<SpecifyResource<SpQueryField>> =>
filters.map(({ field, operation, isNot, value }) =>
QueryFieldSpec.fromPath(table.name, [field])
filters.map(({ field, queryBuilderFieldPath, operation, isNot, value }) =>
QueryFieldSpec.fromPath(table.name, queryBuilderFieldPath ?? [field])
.toSpQueryField()
.set('operStart', queryFieldFilters[operation].id)
.set('isNot', isNot)
Expand Down

0 comments on commit 7a67729

Please sign in to comment.