Skip to content

Commit 90e3778

Browse files
committed
OpenConceptLab/ocl_issues#2244 | filters per row on candidates and reset | saving only auto match ones
1 parent 26ce4e4 commit 90e3778

5 files changed

Lines changed: 28 additions & 19 deletions

File tree

src/components/map-projects/Candidates.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ const CandidateList = ({candidates, header, rowIndex, orderBy, order, onOrderCha
129129
): null
130130
}
131131

132-
const Candidates = ({rowIndex, alert, setAlert, candidates, orderBy, order, onOrderChange, setShowItem, showItem, setShowHighlights, isSelectedForMap, onMap, onFetchMore, isLoading, candidatesScore, repoVersion, analysis, onFetchRecommendation, appliedFacets, setAppliedFacets, filters, facets, columns}) => {
132+
const Candidates = ({rowIndex, alert, setAlert, candidates, orderBy, order, onOrderChange, setShowItem, showItem, setShowHighlights, isSelectedForMap, onMap, onFetchMore, isLoading, candidatesScore, repoVersion, analysis, onFetchRecommendation, appliedFacets, setAppliedFacets, filters, facets, columns, defaultFilters}) => {
133133
const inAIAssistantGroup = hasAuthGroup(getCurrentUser(), 'mapper_ai_assistant')
134134
const [openFilters, setOpenFilters] = React.useState(false)
135135
const [display, setDisplay] = React.useState('card')
@@ -224,6 +224,7 @@ const Candidates = ({rowIndex, alert, setAlert, candidates, orderBy, order, onOr
224224
appliedFilters={appliedFacets || {}}
225225
onChange={setAppliedFacets}
226226
repoDefaultFilters={filters}
227+
defaultFilters={defaultFilters}
227228
properties={repoVersion?.meta?.display?.concept_summary_properties}
228229
propertyFilters={repoVersion?.filters}
229230
heightToSubtract={523}

src/components/map-projects/MapProject.jsx

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ const MapProject = () => {
135135
const [matchTypes, setMatchTypes] = React.useState({very_high: 0, high: 0, medium: 0, low: 0, no_match: 0})
136136
const [matchedConcepts, setMatchedConcepts] = React.useState([]);
137137
const [otherMatchedConcepts, setOtherMatchedConcepts] = React.useState([]);
138+
const [candidatesToSave, setCandidatesToSave] = React.useState([]);
138139
const [searchedConcepts, setSearchedConcepts] = React.useState({});
139140
const [facets, setFacets] = React.useState({});
140141
const [appliedFacets, setAppliedFacets] = React.useState({});
@@ -294,6 +295,7 @@ const MapProject = () => {
294295
setLoadingProject(false)
295296
}
296297
setOtherMatchedConcepts(response?.data?.candidates || [])
298+
setCandidatesToSave(response?.data?.candidates || [])
297299
setName(response.data?.name || '')
298300
setDescription(response.data?.description || '')
299301
setOwner(response.data?.owner_url)
@@ -583,7 +585,7 @@ const MapProject = () => {
583585
}
584586
})
585587
const candidates = []
586-
forEach(otherMatchedConcepts, _candidates => {
588+
forEach(candidatesToSave, _candidates => {
587589
if(_candidates?.results?.length) {
588590
candidates.push({..._candidates, results: _candidates.results.splice(0, 10)})
589591
}
@@ -702,7 +704,7 @@ const MapProject = () => {
702704
return includeDefaultFilter ? allFilters : omit(allFilters, Object.keys(defaultFilters))
703705
}
704706

705-
const getPayloadForMatching = (rows, _repo) => {
707+
const getPayloadForMatching = (rows, _repo, _filters) => {
706708
return {
707709
rows: map(rows, row => prepareRow(row)),
708710
target_repo_url: repoVersion?.version_url || _repo.version_url || _repo.url,
@@ -713,7 +715,7 @@ const MapProject = () => {
713715
'source': _repo.short_code || _repo.id
714716
},
715717
map_config: getMapConfigs(),
716-
filter: getFilters()
718+
filter: rows.length > 1 ? getFilters() : getFacetQueryParam(isEmpty(_filters) ? appliedFacets[rows[0].__index] : _filters)
717719
}
718720
}
719721

@@ -818,6 +820,9 @@ const MapProject = () => {
818820
setOtherMatchedConcepts(prev => {
819821
return [...reject(prev, c => c.row.__index === concept.row.__index), concept]
820822
})
823+
setCandidatesToSave(prev => {
824+
return [...reject(prev, c => c.row.__index === concept.row.__index), concept]
825+
})
821826
})
822827
setMatchedConcepts(prev => [...prev, ...data]);
823828
activeRequests.delete(promise); // Remove from active set after completion
@@ -1264,17 +1269,17 @@ const MapProject = () => {
12641269
log({action: newValue || 'decision_changed', description: 'Desicion Changed to None', extras: newValue ? {} : {decision: 'None'}})
12651270
}
12661271

1267-
const fetchOtherCandidates = (_row, offset=0, _retired, scrollToBottom) => {
1272+
const fetchOtherCandidates = (_row, offset=0, _retired, scrollToBottom, _filters, forceReload=false) => {
12681273
setAlert(false)
12691274
if(isAnyValidColumn()) {
12701275
let __row = isEmpty(_row) ? row : _row
12711276
const existingCandidates = find(otherMatchedConcepts, c => c.row.__index === __row.__index)?.results
1272-
if(offset === 0 && !_retired && existingCandidates?.length> 0) {
1277+
if(!forceReload && offset === 0 && !_retired && existingCandidates?.length> 0) {
12731278
setTimeout(() => highlightTexts(existingCandidates, null, false), 100)
12741279
return
12751280
}
12761281
setIsLoadingInDecisionView(true)
1277-
const payload = getPayloadForMatching([__row], repo)
1282+
const payload = getPayloadForMatching([__row], repo, _filters)
12781283
const service = getMatchAPIService()
12791284
service.post(
12801285
payload,
@@ -2031,10 +2036,11 @@ const MapProject = () => {
20312036
columns={getValidColumns()}
20322037
facets={facets[rowIndex]}
20332038
appliedFacets={appliedFacets[rowIndex]}
2039+
defaultFilters={getAppliedFacetFromQueryParam(getFilters())}
20342040
filters={getFilters(rowIndex)}
20352041
setAppliedFacets={(filters) => {
2036-
setAppliedFacets({...appliedFacets, [rowIndex]: filters})
2037-
search(null, null, null, null, filters)
2042+
setAppliedFacets(() => ({...appliedFacets, [rowIndex]: filters}))
2043+
fetchOtherCandidates(null, 0, false, false, filters, true)
20382044
}}
20392045
/>
20402046
}
@@ -2057,6 +2063,7 @@ const MapProject = () => {
20572063
columns={getValidColumns()}
20582064
facets={facets[rowIndex]}
20592065
appliedFacets={appliedFacets[rowIndex]}
2066+
defaultFilters={getAppliedFacetFromQueryParam(getFilters())}
20602067
filters={getFilters()}
20612068
setAppliedFacets={(filters) => {
20622069
setAppliedFacets({...appliedFacets, [rowIndex]: filters})

src/components/map-projects/Search.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import Mappings from './Mappings'
2222
import Concept from './Concept'
2323
import MapButton from './MapButton'
2424

25-
const Search = ({searchStr, setSearchStr, onSearch, repo, repoVersion, concepts, setShowItem, showItem, isSelectedForMap, onMap, response, facets, appliedFacets, setAppliedFacets, isLoading, filters, columns}) => {
25+
const Search = ({searchStr, setSearchStr, onSearch, repo, repoVersion, concepts, setShowItem, showItem, isSelectedForMap, onMap, response, facets, appliedFacets, setAppliedFacets, isLoading, filters, columns, defaultFilters}) => {
2626
const [openFilters, setOpenFilters] = React.useState(false)
2727
const [display, setDisplay] = React.useState('card')
2828
let total = parseInt(response?.headers?.num_found) || concepts?.length || 0
@@ -121,6 +121,7 @@ const Search = ({searchStr, setSearchStr, onSearch, repo, repoVersion, concepts,
121121
appliedFilters={appliedFacets || {}}
122122
onChange={setAppliedFacets}
123123
repoDefaultFilters={filters}
124+
defaultFilters={defaultFilters}
124125
properties={repoVersion?.meta?.display?.concept_summary_properties}
125126
propertyFilters={repoVersion?.filters}
126127
heightToSubtract={523}

src/components/search/SearchFilters.jsx

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import CircularProgress from '@mui/material/CircularProgress';
1919
import { URIToParentParams, currentUserHasAccess } from '../../common/utils'
2020
import { FACET_ORDER } from './ResultConstants';
2121

22-
const SearchFilters = ({filters, resource, onChange, kwargs, bgColor, appliedFilters, fieldOrder, noSubheader, disabledZero, filterDefinitions, nested, onSaveAsDefaultFilters, loading, repoDefaultFilters, propertyFilters, heightToSubtract, open, columns}) => {
22+
const SearchFilters = ({filters, resource, onChange, kwargs, bgColor, appliedFilters, fieldOrder, noSubheader, disabledZero, filterDefinitions, nested, onSaveAsDefaultFilters, loading, repoDefaultFilters, propertyFilters, heightToSubtract, open, columns, defaultFilters}) => {
2323
const { t } = useTranslation()
2424
const [applied, setApplied] = React.useState({});
2525
const [count, setCount] = React.useState(0);
@@ -134,12 +134,11 @@ const SearchFilters = ({filters, resource, onChange, kwargs, bgColor, appliedFil
134134
setApplied(newApplied)
135135
};
136136

137-
const onClear = () => {
138-
setApplied({})
139-
setCount(0)
140-
if(onSaveAsDefaultFilters)
141-
onSaveAsDefaultFilters({})
142-
onChange({})
137+
const onReset = () => {
138+
let __filters = defaultFilters || {}
139+
setApplied(__filters)
140+
onChange(__filters)
141+
setCount(flatten(values(__filters).map(v => values(v))).length)
143142
}
144143

145144
const onApply = () => {
@@ -285,8 +284,8 @@ const SearchFilters = ({filters, resource, onChange, kwargs, bgColor, appliedFil
285284
<Button variant='text' color='primary' style={{textTransform: 'none'}} onClick={onApply} disabled={!unapplied}>
286285
{t('common.apply')}
287286
</Button>
288-
<Button variant='text' style={{textTransform: 'none'}} onClick={onClear} disabled={!count} color='error'>
289-
{t('common.clear')}
287+
<Button variant='text' style={{textTransform: 'none'}} onClick={onReset} disabled={!count || isEqual(defaultFilters, appliedFilters)} color='error'>
288+
{t('common.reset')}
290289
</Button>
291290
</span>
292291
</div>

src/i18n/locales/en/translations.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@
9090
"properties": "Properties",
9191
"custom": "Custom",
9292
"apply": "Apply",
93+
"reset": "Reset",
9394
"checking_auth": "Checking auth..."
9495
},
9596
"errors": {

0 commit comments

Comments
 (0)