mirror of
https://github.com/Lissy93/dashy.git
synced 2025-12-24 01:15:08 +01:00
feat(search): add field-specific advanced tile filtering
Adds searchTilesWithFields(allTiles, searchTerm, fieldSelection) to enable advanced search constrained to selected fields.
This commit is contained in:
parent
58fe2d0aa6
commit
559f5d9897
1 changed files with 31 additions and 0 deletions
|
|
@ -51,6 +51,37 @@ export const searchTiles = (allTiles, searchTerm) => {
|
|||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Advanced search: filter only within selected fields
|
||||
* @param {array} allTiles tiles
|
||||
* @param {string} searchTerm user query
|
||||
* @param {object} fieldSelection map of fieldName -> boolean
|
||||
* Supported keys: title, description, provider, url, tags, domain
|
||||
* @returns filtered tiles
|
||||
*/
|
||||
export const searchTilesWithFields = (allTiles, searchTerm, fieldSelection = {}) => {
|
||||
if (!searchTerm) return allTiles;
|
||||
if (!allTiles) return [];
|
||||
// If no fields explicitly selected (all false), fall back to original behavior
|
||||
const anySelected = Object.values(fieldSelection).some(Boolean);
|
||||
if (!anySelected) return searchTiles(allTiles, searchTerm);
|
||||
|
||||
return allTiles.filter((tile) => {
|
||||
const {
|
||||
title, description, provider, url, tags,
|
||||
} = tile;
|
||||
const domain = getDomainFromUrl(url);
|
||||
return (
|
||||
(fieldSelection.title && filterHelper(title, searchTerm))
|
||||
|| (fieldSelection.description && filterHelper(description, searchTerm))
|
||||
|| (fieldSelection.provider && filterHelper(provider, searchTerm))
|
||||
|| (fieldSelection.url && filterHelper(url, searchTerm))
|
||||
|| (fieldSelection.tags && filterHelper(tags, searchTerm))
|
||||
|| (fieldSelection.domain && filterHelper(domain, searchTerm))
|
||||
);
|
||||
});
|
||||
};
|
||||
|
||||
/* From a list of search bangs, return the URL associated with it */
|
||||
export const getSearchEngineFromBang = (searchQuery, bangList) => {
|
||||
const bangNames = Object.keys(bangList);
|
||||
|
|
|
|||
Loading…
Reference in a new issue