Skip to content

Commit e5e60a1

Browse files
DT-781: Use logical AND to combine filters in the DUOS UI (#2715)
1 parent 19c11fa commit e5e60a1

File tree

1 file changed

+32
-38
lines changed

1 file changed

+32
-38
lines changed

src/components/data_search/DatasetSearchTable.jsx

Lines changed: 32 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -104,60 +104,54 @@ export const DatasetSearchTable = (props) => {
104104
queryChunks.push(...searchModifier);
105105
}
106106

107-
var filterQuery = {};
107+
let filterQuery = {};
108108
if (numSelectedFilters(filters) > 0) {
109-
const shouldTerms = [];
109+
const filterTerms = [];
110110

111-
filters.accessManagement.forEach(term => {
112-
shouldTerms.push({
113-
'term': {
114-
'accessManagement': term
115-
}
116-
});
111+
filterTerms.push({
112+
'bool': {
113+
'should':
114+
filters.accessManagement.map(term => ({
115+
'term': {
116+
'accessManagement': term
117+
}
118+
}))
119+
}
117120
});
118121

119-
filters.dataUse.forEach(term => {
120-
shouldTerms.push({
121-
'match': {
122-
'dataUse.primary.code': term
123-
}
124-
});
122+
filterTerms.push({
123+
'bool': {
124+
'should':
125+
filters.dataUse.map(term => ({
126+
'match': {
127+
'dataUse.primary.code': term
128+
}
129+
}))
130+
}
125131
});
126132

127-
if (shouldTerms.length > 0) {
133+
if (filterTerms.length > 0) {
128134
filterQuery = [
129135
{
130136
'bool': {
131-
'should': shouldTerms
137+
'must': filterTerms
132138
}
133139
}
134140
];
135141
}
136142
}
137143

138-
// do not add filter subquery if no filters are applied
139-
if (numSelectedFilters(filters) > 0) {
140-
return {
141-
'from': 0,
142-
'size': 10000,
143-
'query': {
144-
'bool': {
145-
'must': queryChunks,
146-
'filter': filterQuery
147-
}
148-
}
149-
};
150-
} else {
151-
return {
152-
'from': 0,
153-
'size': 10000,
154-
'query': {
155-
'bool': {
156-
'must': queryChunks
157-
}
144+
return {
145+
'from': 0,
146+
'size': 10000,
147+
'query': {
148+
'bool': {
149+
'must': queryChunks,
150+
// Only add filter subquery when filters are applied.
151+
...(Object.keys(filterQuery).length > 0 && { 'filter': filterQuery })
158152
}
159-
};
160-
}
153+
}
154+
};
161155
};
162156

163157
const filterHandler = (event, data, category, filter) => {

0 commit comments

Comments
 (0)