Account for optional cache and remove timing code

f4ef9697e983a0bb0b3b0ab6388f5ecbfe37898e

Joe <joenunezb@gmail.com>

2 files changed, +21 -26Showing whitespace changes
public/script.js+0 -1
@@ -1750,7 +1750,6 @@ export async function getCharacters() {
1750 }1750 }
17511751
1752 await getGroups();1752 await getGroups();
1753 // clearFuzzySearchCaches();
1754 await printCharacters(true);1753 await printCharacters(true);
1755 }1754 }
1756}1755}
public/scripts/power-user.js+21 -25
@@ -1832,26 +1832,22 @@ async function loadContextSettings() {
18321832
18331833
1834/**1834/**
1835 * Common function to perform fuzzy search with caching1835 * Common function to perform fuzzy search with optional caching
1836 * @param {string} type - Type of search from fuzzySearchCategories1836 * @param {string} type - Type of search from fuzzySearchCategories
1837 * @param {any[]} data - Data array to search in1837 * @param {any[]} data - Data array to search in
1838 * @param {Array<{name: string, weight: number, getFn?: Function}>} keys - Fuse.js keys configuration1838 * @param {Array<{name: string, weight: number, getFn?: Function}>} keys - Fuse.js keys configuration
1839 * @param {string} searchValue - The search term1839 * @param {string} searchValue - The search term
1840 * @param {Object.<string, { resultMap: Map<string, any> }>} fuzzySearchCaches - Fuzzy search caches1840 * @param {Object.<string, { resultMap: Map<string, any> }>} [fuzzySearchCaches=null] - Optional fuzzy search caches
1841 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score1841 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score
1842 */1842 */
1843function performFuzzySearch(type, data, keys, searchValue, fuzzySearchCaches) {1843function performFuzzySearch(type, data, keys, searchValue, fuzzySearchCaches = null) {
1844 let startTime = performance.now();1844 // Check cache if provided
1845 if (fuzzySearchCaches) {
1845 const cache = fuzzySearchCaches[type];1846 const cache = fuzzySearchCaches[type];
18461847 if (cache?.resultMap.has(searchValue)) {
1847 // Check cache for existing results
1848 if (cache.resultMap.has(searchValue)) {
1849 let endTime = performance.now();
1850 if (endTime - startTime > 1.0) {
1851 console.log(`Fuzzy search for ${type} took ${endTime - startTime}ms (cached)`);
1852 }
1853 return cache.resultMap.get(searchValue);1848 return cache.resultMap.get(searchValue);
1854 }1849 }
1850 }
18551851
1856 // @ts-ignore1852 // @ts-ignore
1857 const fuse = new Fuse(data, {1853 const fuse = new Fuse(data, {
@@ -1863,10 +1859,10 @@ function performFuzzySearch(type, data, keys, searchValue, fuzzySearchCaches) {
1863 });1859 });
18641860
1865 const results = fuse.search(searchValue);1861 const results = fuse.search(searchValue);
1866 cache.resultMap.set(searchValue, results);1862
1867 let endTime = performance.now();1863 // Store in cache if provided
1868 if (endTime - startTime > 1.0) {1864 if (fuzzySearchCaches) {
1869 console.log(`Fuzzy search for ${type} took ${endTime - startTime}ms`);1865 fuzzySearchCaches[type].resultMap.set(searchValue, results);
1870 }1866 }
1871 return results;1867 return results;
1872}1868}
@@ -1874,10 +1870,10 @@ function performFuzzySearch(type, data, keys, searchValue, fuzzySearchCaches) {
1874/**1870/**
1875 * Fuzzy search characters by a search term1871 * Fuzzy search characters by a search term
1876 * @param {string} searchValue - The search term1872 * @param {string} searchValue - The search term
1877 * @param {Object.<string, { resultMap: Map<string, any> }>} fuzzySearchCaches - Fuzzy search caches1873 * @param {Object.<string, { resultMap: Map<string, any> }>} [fuzzySearchCaches=null] - Optional fuzzy search caches
1878 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score1874 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score
1879 */1875 */
1880export function fuzzySearchCharacters(searchValue, fuzzySearchCaches) {1876export function fuzzySearchCharacters(searchValue, fuzzySearchCaches = null) {
1881 const keys = [1877 const keys = [
1882 { name: 'data.name', weight: 20 },1878 { name: 'data.name', weight: 20 },
1883 { name: '#tags', weight: 10, getFn: (character) => getTagsList(character.avatar).map(x => x.name).join('||') },1879 { name: '#tags', weight: 10, getFn: (character) => getTagsList(character.avatar).map(x => x.name).join('||') },
@@ -1899,10 +1895,10 @@ export function fuzzySearchCharacters(searchValue, fuzzySearchCaches) {
1899 * Fuzzy search world info entries by a search term1895 * Fuzzy search world info entries by a search term
1900 * @param {*[]} data - WI items data array1896 * @param {*[]} data - WI items data array
1901 * @param {string} searchValue - The search term1897 * @param {string} searchValue - The search term
1902 * @param {Object.<string, { resultMap: Map<string, any> }>} fuzzySearchCaches - Fuzzy search caches1898 * @param {Object.<string, { resultMap: Map<string, any> }>} [fuzzySearchCaches=null] - Optional fuzzy search caches
1903 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score1899 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score
1904 */1900 */
1905export function fuzzySearchWorldInfo(data, searchValue, fuzzySearchCaches) {1901export function fuzzySearchWorldInfo(data, searchValue, fuzzySearchCaches = null) {
1906 const keys = [1902 const keys = [
1907 { name: 'key', weight: 20 },1903 { name: 'key', weight: 20 },
1908 { name: 'group', weight: 15 },1904 { name: 'group', weight: 15 },
@@ -1920,10 +1916,10 @@ export function fuzzySearchWorldInfo(data, searchValue, fuzzySearchCaches) {
1920 * Fuzzy search persona entries by a search term1916 * Fuzzy search persona entries by a search term
1921 * @param {*[]} data - persona data array1917 * @param {*[]} data - persona data array
1922 * @param {string} searchValue - The search term1918 * @param {string} searchValue - The search term
1923 * @param {Object.<string, { resultMap: Map<string, any> }>} fuzzySearchCaches - Fuzzy search caches1919 * @param {Object.<string, { resultMap: Map<string, any> }>} [fuzzySearchCaches=null] - Optional fuzzy search caches
1924 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score1920 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score
1925 */1921 */
1926export function fuzzySearchPersonas(data, searchValue, fuzzySearchCaches) {1922export function fuzzySearchPersonas(data, searchValue, fuzzySearchCaches = null) {
1927 const mappedData = data.map(x => ({1923 const mappedData = data.map(x => ({
1928 key: x,1924 key: x,
1929 name: power_user.personas[x] ?? '',1925 name: power_user.personas[x] ?? '',
@@ -1941,10 +1937,10 @@ export function fuzzySearchPersonas(data, searchValue, fuzzySearchCaches) {
1941/**1937/**
1942 * Fuzzy search tags by a search term1938 * Fuzzy search tags by a search term
1943 * @param {string} searchValue - The search term1939 * @param {string} searchValue - The search term
1944 * @param {Object.<string, { resultMap: Map<string, any> }>} fuzzySearchCaches - Fuzzy search caches1940 * @param {Object.<string, { resultMap: Map<string, any> }>} [fuzzySearchCaches=null] - Optional fuzzy search caches
1945 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score1941 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score
1946 */1942 */
1947export function fuzzySearchTags(searchValue, fuzzySearchCaches) {1943export function fuzzySearchTags(searchValue, fuzzySearchCaches = null) {
1948 const keys = [1944 const keys = [
1949 { name: 'name', weight: 1 },1945 { name: 'name', weight: 1 },
1950 ];1946 ];
@@ -1955,10 +1951,10 @@ export function fuzzySearchTags(searchValue, fuzzySearchCaches) {
1955/**1951/**
1956 * Fuzzy search groups by a search term1952 * Fuzzy search groups by a search term
1957 * @param {string} searchValue - The search term1953 * @param {string} searchValue - The search term
1958 * @param {Object.<string, { resultMap: Map<string, any> }>} fuzzySearchCaches - Fuzzy search caches1954 * @param {Object.<string, { resultMap: Map<string, any> }>} [fuzzySearchCaches=null] - Optional fuzzy search caches
1959 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score1955 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score
1960 */1956 */
1961export function fuzzySearchGroups(searchValue, fuzzySearchCaches) {1957export function fuzzySearchGroups(searchValue, fuzzySearchCaches = null) {
1962 const keys = [1958 const keys = [
1963 { name: 'name', weight: 20 },1959 { name: 'name', weight: 20 },
1964 { name: 'members', weight: 15 },1960 { name: 'members', weight: 15 },