2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-21 22:30:53 +00:00

User Setting To Search Notes ()

* add search notes and tie user search settings to checkboxes in search drawer

* add user setting to optionally search the notes of objects

* add search filter test

* add PR link

* add limit parameter

* typo, meant to check part result

* resolve api_version.py conflict

* don't use search_whole and search_regex together

---------

Co-authored-by: Matthias Mair <code@mjmair.com>
This commit is contained in:
Jacob Felknor
2025-04-03 16:22:39 -06:00
committed by GitHub
parent 2712f30382
commit 6021035e3f
8 changed files with 133 additions and 11 deletions
docs/docs/settings
src
backend
frontend
src
components
pages
Index

@ -189,12 +189,23 @@ export function SearchDrawer({
const [value, setValue] = useState<string>('');
const [searchText] = useDebouncedValue(value, 500);
const [searchRegex, setSearchRegex] = useState<boolean>(false);
const [searchWhole, setSearchWhole] = useState<boolean>(false);
const user = useUserState();
const userSettings = useUserSettingsState();
const [searchRegex, setSearchRegex] = useState<boolean>(false);
const [searchWhole, setSearchWhole] = useState<boolean>(false);
const [searchNotes, setSearchNotes] = useState<boolean>(false);
useEffect(() => {
setSearchRegex(userSettings.isSet('SEARCH_REGEX', false));
setSearchWhole(userSettings.isSet('SEARCH_WHOLE', false));
setSearchNotes(userSettings.isSet('SEARCH_NOTES', false));
}, [
userSettings.isSet('SEARCH_REGEX', false),
userSettings.isSet('SEARCH_WHOLE', false),
userSettings.isSet('SEARCH_NOTES', false)
]);
// Build out search queries based on user permissions and preferences
const searchQueryList: SearchQuery[] = useMemo(() => {
return [
@ -373,7 +384,8 @@ export function SearchDrawer({
limit: userSettings.getSetting('SEARCH_PREVIEW_RESULTS', '10'),
search: searchText,
search_regex: searchRegex,
search_whole: searchWhole
search_whole: searchWhole,
search_notes: searchNotes
};
// Add in custom query parameters
@ -393,7 +405,7 @@ export function SearchDrawer({
// Search query manager
const searchQuery = useQuery({
queryKey: ['search', searchText, searchRegex, searchWhole],
queryKey: ['search', searchText, searchRegex, searchWhole, searchNotes],
queryFn: performSearch
});
@ -495,6 +507,15 @@ export function SearchDrawer({
</Menu.Target>
<Menu.Dropdown>
<Menu.Label>{t`Search Options`}</Menu.Label>
<Menu.Item>
<Checkbox
label={t`Whole word search`}
checked={searchWhole}
onChange={(event) =>
setSearchWhole(event.currentTarget.checked)
}
/>
</Menu.Item>
<Menu.Item>
<Checkbox
label={t`Regex search`}
@ -506,10 +527,10 @@ export function SearchDrawer({
</Menu.Item>
<Menu.Item>
<Checkbox
label={t`Whole word search`}
checked={searchWhole}
label={t`Notes search`}
checked={searchNotes}
onChange={(event) =>
setSearchWhole(event.currentTarget.checked)
setSearchNotes(event.currentTarget.checked)
}
/>
</Menu.Item>

@ -71,6 +71,7 @@ export default function UserSettings() {
keys={[
'SEARCH_WHOLE',
'SEARCH_REGEX',
'SEARCH_NOTES',
'SEARCH_PREVIEW_RESULTS',
'SEARCH_PREVIEW_SHOW_PARTS',
'SEARCH_HIDE_INACTIVE_PARTS',