Skip to content

Commit 700eb51

Browse files
committed
Merge branch 'deployments/ood.antenna.insectai.org' of github.com:RolnickLab/antenna into feat/better-cluster-data
2 parents 2b27451 + 247e738 commit 700eb51

File tree

5 files changed

+56
-0
lines changed

5 files changed

+56
-0
lines changed

ami/main/api/views.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1188,6 +1188,24 @@ def filter_queryset(self, request, queryset, view):
11881188
return queryset
11891189

11901190

1191+
class TaxonUnknownSpeciesFilter(filters.BaseFilterBackend):
1192+
"""
1193+
Filter taxa that is or is not marked as "Unknown species".
1194+
"""
1195+
1196+
query_param = "unknown_species"
1197+
1198+
def filter_queryset(self, request: Request, queryset, view):
1199+
if self.query_param in request.query_params:
1200+
unknown_species = BooleanField(required=False).clean(request.query_params.get(self.query_param))
1201+
if unknown_species:
1202+
queryset = queryset.filter(unknown_species=True)
1203+
else:
1204+
queryset = queryset.exclude(unknown_species=True)
1205+
1206+
return queryset
1207+
1208+
11911209
class TaxonTagFilter(filters.BaseFilterBackend):
11921210
"""FilterBackend that allows OR-based filtering of taxa by tag ID."""
11931211

@@ -1222,6 +1240,7 @@ class TaxonViewSet(DefaultViewSet, ProjectMixin):
12221240
CustomTaxonFilter,
12231241
TaxonCollectionFilter,
12241242
TaxonTaxaListFilter,
1243+
TaxonUnknownSpeciesFilter,
12251244
TaxonTagFilter,
12261245
TagInverseFilter,
12271246
]

ui/src/components/filtering/filter-control.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { TaxaListFilter } from './filters/taxa-list-filter'
1616
import { TaxonFilter } from './filters/taxon-filter'
1717
import { TypeFilter } from './filters/type-filter'
1818
import { FilterProps } from './filters/types'
19+
import { UnknownSpeciesFilter } from './filters/unknown-species-filter'
1920
import { VerificationStatusFilter } from './filters/verification-status-filter'
2021
import { VerifiedByFilter } from './filters/verified-by-filter'
2122

@@ -43,6 +44,7 @@ const ComponentMap: {
4344
taxa_list_id: TaxaListFilter,
4445
verified_by_me: VerifiedByFilter,
4546
verified: VerificationStatusFilter,
47+
unknown_species: UnknownSpeciesFilter,
4648
}
4749

4850
interface FilterControlProps {
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { Select } from 'nova-ui-kit'
2+
import { booleanToString, stringToBoolean } from '../utils'
3+
import { FilterProps } from './types'
4+
5+
const OPTIONS = [
6+
{ value: true, label: 'Unknown species' },
7+
{ value: false, label: 'Known species' },
8+
]
9+
10+
export const UnknownSpeciesFilter = ({ value: string, onAdd }: FilterProps) => {
11+
const value = stringToBoolean(string)
12+
13+
return (
14+
<Select.Root value={booleanToString(value)} onValueChange={onAdd}>
15+
<Select.Trigger>
16+
<Select.Value placeholder="Select a value" />
17+
</Select.Trigger>
18+
<Select.Content className="max-h-72">
19+
{OPTIONS.map((option) => (
20+
<Select.Item
21+
key={booleanToString(option.value)}
22+
value={booleanToString(option.value)}
23+
>
24+
{option.label}
25+
</Select.Item>
26+
))}
27+
</Select.Content>
28+
</Select.Root>
29+
)
30+
}

ui/src/pages/species/species.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ export const Species = () => {
4747
<FilterControl field="event" readonly />
4848
<FilterControl field="deployment" />
4949
<FilterControl field="taxon" />
50+
<FilterControl field="unknown_species" />
5051
{taxaLists.length > 0 && (
5152
<FilterControl data={taxaLists} field="taxa_list_id" />
5253
)}

ui/src/utils/useFilters.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,10 @@ export const AVAILABLE_FILTERS: {
100100
label: 'Taxon',
101101
field: 'taxon',
102102
},
103+
{
104+
label: 'Known status',
105+
field: 'unknown_species',
106+
},
103107
{
104108
label: 'Taxa list',
105109
field: 'taxa_list_id',

0 commit comments

Comments
 (0)