feat: Add date processed filter to Identify component and API
This commit introduces a new date processed filter in the Identify component, allowing users to filter faces based on the date they were processed. The API has been updated to support this new parameter, ensuring seamless integration with the frontend. Additionally, the date filters for date taken have been renamed for clarity. Documentation has been updated to reflect these changes.
This commit is contained in:
@@ -152,6 +152,7 @@ export const facesApi = {
|
||||
date_to?: string
|
||||
date_taken_from?: string
|
||||
date_taken_to?: string
|
||||
date_processed?: string
|
||||
date_processed_from?: string
|
||||
date_processed_to?: string
|
||||
sort_by?: 'quality' | 'date_taken' | 'date_added'
|
||||
|
||||
@@ -18,6 +18,7 @@ export default function Identify() {
|
||||
const [sortDir, setSortDir] = useState<SortDir>('desc')
|
||||
const [dateFrom, setDateFrom] = useState<string>('')
|
||||
const [dateTo, setDateTo] = useState<string>('')
|
||||
const [dateProcessed, setDateProcessed] = useState<string>('')
|
||||
|
||||
const [currentIdx, setCurrentIdx] = useState(0)
|
||||
const currentFace = faces[currentIdx]
|
||||
@@ -74,8 +75,9 @@ export default function Identify() {
|
||||
page: 1,
|
||||
page_size: pageSize,
|
||||
min_quality: minQuality,
|
||||
date_from: dateFrom || undefined,
|
||||
date_to: dateTo || undefined,
|
||||
date_taken_from: dateFrom || undefined,
|
||||
date_taken_to: dateTo || undefined,
|
||||
date_processed: dateProcessed || undefined,
|
||||
sort_by: sortBy,
|
||||
sort_dir: sortDir,
|
||||
tag_names: selectedTags.length > 0 ? selectedTags.join(', ') : undefined,
|
||||
@@ -248,6 +250,7 @@ export default function Identify() {
|
||||
if (settings.sortDir !== undefined) setSortDir(settings.sortDir)
|
||||
if (settings.dateFrom !== undefined) setDateFrom(settings.dateFrom)
|
||||
if (settings.dateTo !== undefined) setDateTo(settings.dateTo)
|
||||
if (settings.dateProcessed !== undefined) setDateProcessed(settings.dateProcessed)
|
||||
if (settings.uniqueFacesOnly !== undefined) setUniqueFacesOnly(settings.uniqueFacesOnly)
|
||||
if (settings.compareEnabled !== undefined) setCompareEnabled(settings.compareEnabled)
|
||||
if (settings.selectedTags !== undefined) setSelectedTags(settings.selectedTags)
|
||||
@@ -271,6 +274,7 @@ export default function Identify() {
|
||||
sortDir,
|
||||
dateFrom,
|
||||
dateTo,
|
||||
dateProcessed,
|
||||
uniqueFacesOnly,
|
||||
compareEnabled,
|
||||
selectedTags,
|
||||
@@ -279,7 +283,7 @@ export default function Identify() {
|
||||
} catch (error) {
|
||||
console.error('Error saving settings to localStorage:', error)
|
||||
}
|
||||
}, [pageSize, minQuality, sortBy, sortDir, dateFrom, dateTo, uniqueFacesOnly, compareEnabled, selectedTags, settingsLoaded])
|
||||
}, [pageSize, minQuality, sortBy, sortDir, dateFrom, dateTo, dateProcessed, uniqueFacesOnly, compareEnabled, selectedTags, settingsLoaded])
|
||||
|
||||
// Initial load on mount (after settings are loaded)
|
||||
useEffect(() => {
|
||||
@@ -521,18 +525,12 @@ export default function Identify() {
|
||||
<div className="p-4">
|
||||
<div className="grid grid-cols-2 gap-3">
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700">Min Quality</label>
|
||||
<input type="range" min={0} max={1} step={0.05} value={minQuality}
|
||||
onChange={(e) => setMinQuality(parseFloat(e.target.value))} className="w-full" />
|
||||
<div className="text-xs text-gray-500">{(minQuality * 100).toFixed(0)}%</div>
|
||||
</div>
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700">Date From</label>
|
||||
<label className="block text-sm font-medium text-gray-700">Date Taken From</label>
|
||||
<input type="date" value={dateFrom} onChange={(e) => setDateFrom(e.target.value)}
|
||||
className="mt-1 block w-full border rounded px-2 py-1" />
|
||||
</div>
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700">Date To</label>
|
||||
<label className="block text-sm font-medium text-gray-700">Date Taken To</label>
|
||||
<input type="date" value={dateTo} onChange={(e) => setDateTo(e.target.value)}
|
||||
className="mt-1 block w-full border rounded px-2 py-1" />
|
||||
</div>
|
||||
@@ -553,6 +551,17 @@ export default function Identify() {
|
||||
<option value="asc">Asc</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700">Date Processed On</label>
|
||||
<input type="date" value={dateProcessed} onChange={(e) => setDateProcessed(e.target.value)}
|
||||
className="mt-1 block w-full border rounded px-2 py-1" />
|
||||
</div>
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700">Min Quality</label>
|
||||
<input type="range" min={0} max={1} step={0.05} value={minQuality}
|
||||
onChange={(e) => setMinQuality(parseFloat(e.target.value))} className="w-full" />
|
||||
<div className="text-xs text-gray-500">{(minQuality * 100).toFixed(0)}%</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mt-4 pt-3 border-t">
|
||||
<div className="flex items-center gap-2 mb-2">
|
||||
|
||||
Reference in New Issue
Block a user