mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-14 23:25:25 +03:00
special case for similarity searches
This commit is contained in:
parent
303d5e6354
commit
6bc26cd59d
@ -101,6 +101,7 @@ export default function InputWithTags({
|
|||||||
const [currentFilterType, setCurrentFilterType] = useState<FilterType | null>(
|
const [currentFilterType, setCurrentFilterType] = useState<FilterType | null>(
|
||||||
null,
|
null,
|
||||||
);
|
);
|
||||||
|
const [isSimilaritySearch, setIsSimilaritySearch] = useState(false);
|
||||||
const inputRef = useRef<HTMLInputElement>(null);
|
const inputRef = useRef<HTMLInputElement>(null);
|
||||||
const containerRef = useRef<HTMLDivElement>(null);
|
const containerRef = useRef<HTMLDivElement>(null);
|
||||||
const suggestionRef = useRef<HTMLDivElement>(null);
|
const suggestionRef = useRef<HTMLDivElement>(null);
|
||||||
@ -331,7 +332,9 @@ export default function InputWithTags({
|
|||||||
updateSuggestions("", null);
|
updateSuggestions("", null);
|
||||||
setShowFilters(false);
|
setShowFilters(false);
|
||||||
setShowSuggestions(false);
|
setShowSuggestions(false);
|
||||||
}, [setFilters, updateSuggestions]);
|
setIsSimilaritySearch(false);
|
||||||
|
setSearch("");
|
||||||
|
}, [setFilters, updateSuggestions, setSearch]);
|
||||||
|
|
||||||
const handleInputBlur = useCallback(() => {
|
const handleInputBlur = useCallback(() => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
@ -410,6 +413,16 @@ export default function InputWithTags({
|
|||||||
setInputValue(search || "");
|
setInputValue(search || "");
|
||||||
}, [search]);
|
}, [search]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (search?.startsWith("similarity:")) {
|
||||||
|
setIsSimilaritySearch(true);
|
||||||
|
setInputValue("");
|
||||||
|
} else {
|
||||||
|
setIsSimilaritySearch(false);
|
||||||
|
setInputValue(search || "");
|
||||||
|
}
|
||||||
|
}, [search]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div ref={containerRef}>
|
<div ref={containerRef}>
|
||||||
<div className="relative my-2">
|
<div className="relative my-2">
|
||||||
@ -456,11 +469,24 @@ export default function InputWithTags({
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{((showFilters && Object.keys(filters).length > 0) ||
|
{((showFilters &&
|
||||||
|
(Object.keys(filters).length > 0 || isSimilaritySearch)) ||
|
||||||
showSuggestions) && (
|
showSuggestions) && (
|
||||||
<div className="absolute left-0 top-12 z-[100] w-full rounded-md border border-t-0 border-secondary-foreground bg-background p-2 text-primary shadow-md">
|
<div className="absolute left-0 top-12 z-[100] w-full rounded-md border border-t-0 border-secondary-foreground bg-background p-2 text-primary shadow-md">
|
||||||
{showFilters && Object.keys(filters).length > 0 && (
|
{showFilters && Object.keys(filters).length > 0 && (
|
||||||
<div ref={filterRef} className="my-2 flex flex-wrap gap-2">
|
<div ref={filterRef} className="my-2 flex flex-wrap gap-2">
|
||||||
|
{isSimilaritySearch && (
|
||||||
|
<span className="inline-flex items-center whitespace-nowrap rounded-full bg-blue-100 px-2 py-0.5 text-sm text-blue-800">
|
||||||
|
Similarity Search
|
||||||
|
<button
|
||||||
|
onClick={handleClearInput}
|
||||||
|
className="ml-1 focus:outline-none"
|
||||||
|
aria-label="Clear similarity search"
|
||||||
|
>
|
||||||
|
<LuX className="h-3 w-3" />
|
||||||
|
</button>
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
{Object.entries(filters).map(([filterType, filterValues]) =>
|
{Object.entries(filters).map(([filterType, filterValues]) =>
|
||||||
Array.isArray(filterValues) ? (
|
Array.isArray(filterValues) ? (
|
||||||
filterValues.map((value, index) => (
|
filterValues.map((value, index) => (
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user