UI changes and bugfixes (#14669)

* Home/End buttons for search input and max 8 search columns

* Fix lifecycle label

* remove video tab if tracked object has no clip

* hide object lifecycle if there is no clip

* add test for filter value to ensure only fully numeric values are set as numbers
This commit is contained in:
Josh Hawkins 2024-10-30 06:54:06 -05:00 committed by GitHub
parent e4a6b29279
commit bb80a7b2ee
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 29 additions and 6 deletions

View File

@ -523,17 +523,29 @@ export default function InputWithTags({
const handleInputKeyDown = useCallback(
(e: React.KeyboardEvent<HTMLInputElement>) => {
const event = e.target as HTMLInputElement;
if (!currentFilterType && (e.key === "Home" || e.key === "End")) {
const position = e.key === "Home" ? 0 : event.value.length;
event.setSelectionRange(position, position);
}
if (
e.key === "Enter" &&
inputValue.trim() !== "" &&
filterSuggestions(suggestions).length == 0
) {
e.preventDefault();
handleSearch(inputValue);
}
},
[inputValue, handleSearch, filterSuggestions, suggestions],
[
inputValue,
handleSearch,
filterSuggestions,
suggestions,
currentFilterType,
],
);
// effects

View File

@ -641,7 +641,7 @@ function getLifecycleItemDescription(lifecycleItem: ObjectLifecycleSequence) {
)} detected for ${label}`;
} else {
title = `${
lifecycleItem.data.sub_label
lifecycleItem.data.label
} recognized as ${lifecycleItem.data.attribute.replaceAll("_", " ")}`;
}
return title;

View File

@ -141,7 +141,12 @@ export default function SearchDetailDialog({
views.splice(index, 1);
}
if (search.data.type != "object") {
if (!search.has_clip) {
const index = views.indexOf("video");
views.splice(index, 1);
}
if (search.data.type != "object" || !search.has_clip) {
const index = views.indexOf("object lifecycle");
views.splice(index, 1);
}

View File

@ -99,7 +99,7 @@ export default function SearchSettings({
<Slider
value={[columns]}
onValueChange={([value]) => setColumns(value)}
max={6}
max={8}
min={2}
step={1}
className="flex-grow"

View File

@ -65,7 +65,11 @@ export function useApiFilterArgs<
const filter: { [key: string]: unknown } = {};
rawParams.forEach((value, key) => {
if (value != "true" && value != "false" && isNaN(parseFloat(value))) {
if (
value != "true" &&
value != "false" &&
(/[^0-9,]/.test(value) || isNaN(parseFloat(value)))
) {
filter[key] = value.includes(",") ? value.split(",") : [value];
} else {
if (value != undefined) {

View File

@ -83,6 +83,8 @@ export default function SearchView({
"sm:grid-cols-4": columns === 4,
"sm:grid-cols-5": columns === 5,
"sm:grid-cols-6": columns === 6,
"sm:grid-cols-7": columns === 7,
"sm:grid-cols-8": columns === 8,
},
);