Sped up character search by 93%

eb29f03ab01072eae8cd860608869f3756bcde9f

Joe <joenunezb@gmail.com>

1 files changed, +32 -0Showing whitespace changes
public/scripts/power-user.js+32 -0
@@ -330,6 +330,12 @@ const debug_functions = [];
330330
331const setHotswapsDebounced = debounce(favsToHotswap);331const setHotswapsDebounced = debounce(favsToHotswap);
332332
333const fuzzySearchCharactersCache = new Map();
334const fuzzySearchWorldInfoCache = new Map();
335const fuzzySearchPersonasCache = new Map();
336const fuzzySearchTagsCache = new Map();
337const fuzzySearchGroupsCache = new Map();
338
333function playMessageSound() {339function playMessageSound() {
334 if (!power_user.play_message_sound) {340 if (!power_user.play_message_sound) {
335 return;341 return;
@@ -1830,6 +1836,11 @@ async function loadContextSettings() {
1830 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score1836 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score
1831 */1837 */
1832export function fuzzySearchCharacters(searchValue) {1838export function fuzzySearchCharacters(searchValue) {
1839
1840 if (fuzzySearchCharactersCache.has(searchValue)) {
1841 return fuzzySearchCharactersCache.get(searchValue);
1842 }
1843
1833 // @ts-ignore1844 // @ts-ignore
1834 const fuse = new Fuse(characters, {1845 const fuse = new Fuse(characters, {
1835 keys: [1846 keys: [
@@ -1853,6 +1864,7 @@ export function fuzzySearchCharacters(searchValue) {
18531864
1854 const results = fuse.search(searchValue);1865 const results = fuse.search(searchValue);
1855 console.debug('Characters fuzzy search results for ' + searchValue, results);1866 console.debug('Characters fuzzy search results for ' + searchValue, results);
1867 fuzzySearchCharactersCache.set(searchValue, results);
1856 return results;1868 return results;
1857}1869}
18581870
@@ -1863,6 +1875,10 @@ export function fuzzySearchCharacters(searchValue) {
1863 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score1875 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score
1864 */1876 */
1865export function fuzzySearchWorldInfo(data, searchValue) {1877export function fuzzySearchWorldInfo(data, searchValue) {
1878 if (fuzzySearchWorldInfoCache.has(searchValue)) {
1879 return fuzzySearchWorldInfoCache.get(searchValue);
1880 }
1881
1866 // @ts-ignore1882 // @ts-ignore
1867 const fuse = new Fuse(data, {1883 const fuse = new Fuse(data, {
1868 keys: [1884 keys: [
@@ -1882,6 +1898,7 @@ export function fuzzySearchWorldInfo(data, searchValue) {
18821898
1883 const results = fuse.search(searchValue);1899 const results = fuse.search(searchValue);
1884 console.debug('World Info fuzzy search results for ' + searchValue, results);1900 console.debug('World Info fuzzy search results for ' + searchValue, results);
1901 fuzzySearchWorldInfoCache.set(searchValue, results);
1885 return results;1902 return results;
1886}1903}
18871904
@@ -1892,6 +1909,10 @@ export function fuzzySearchWorldInfo(data, searchValue) {
1892 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score1909 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score
1893 */1910 */
1894export function fuzzySearchPersonas(data, searchValue) {1911export function fuzzySearchPersonas(data, searchValue) {
1912 if (fuzzySearchPersonasCache.has(searchValue)) {
1913 return fuzzySearchPersonasCache.get(searchValue);
1914 }
1915
1895 data = data.map(x => ({ key: x, name: power_user.personas[x] ?? '', description: power_user.persona_descriptions[x]?.description ?? '' }));1916 data = data.map(x => ({ key: x, name: power_user.personas[x] ?? '', description: power_user.persona_descriptions[x]?.description ?? '' }));
1896 // @ts-ignore1917 // @ts-ignore
1897 const fuse = new Fuse(data, {1918 const fuse = new Fuse(data, {
@@ -1907,6 +1928,7 @@ export function fuzzySearchPersonas(data, searchValue) {
19071928
1908 const results = fuse.search(searchValue);1929 const results = fuse.search(searchValue);
1909 console.debug('Personas fuzzy search results for ' + searchValue, results);1930 console.debug('Personas fuzzy search results for ' + searchValue, results);
1931 fuzzySearchPersonasCache.set(searchValue, results);
1910 return results;1932 return results;
1911}1933}
19121934
@@ -1916,6 +1938,10 @@ export function fuzzySearchPersonas(data, searchValue) {
1916 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score1938 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score
1917 */1939 */
1918export function fuzzySearchTags(searchValue) {1940export function fuzzySearchTags(searchValue) {
1941 if (fuzzySearchTagsCache.has(searchValue)) {
1942 return fuzzySearchTagsCache.get(searchValue);
1943 }
1944
1919 // @ts-ignore1945 // @ts-ignore
1920 const fuse = new Fuse(tags, {1946 const fuse = new Fuse(tags, {
1921 keys: [1947 keys: [
@@ -1929,6 +1955,7 @@ export function fuzzySearchTags(searchValue) {
19291955
1930 const results = fuse.search(searchValue);1956 const results = fuse.search(searchValue);
1931 console.debug('Tags fuzzy search results for ' + searchValue, results);1957 console.debug('Tags fuzzy search results for ' + searchValue, results);
1958 fuzzySearchTagsCache.set(searchValue, results);
1932 return results;1959 return results;
1933}1960}
19341961
@@ -1938,6 +1965,10 @@ export function fuzzySearchTags(searchValue) {
1938 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score1965 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score
1939 */1966 */
1940export function fuzzySearchGroups(searchValue) {1967export function fuzzySearchGroups(searchValue) {
1968 if (fuzzySearchGroupsCache.has(searchValue)) {
1969 return fuzzySearchGroupsCache.get(searchValue);
1970 }
1971
1941 // @ts-ignore1972 // @ts-ignore
1942 const fuse = new Fuse(groups, {1973 const fuse = new Fuse(groups, {
1943 keys: [1974 keys: [
@@ -1954,6 +1985,7 @@ export function fuzzySearchGroups(searchValue) {
19541985
1955 const results = fuse.search(searchValue);1986 const results = fuse.search(searchValue);
1956 console.debug('Groups fuzzy search results for ' + searchValue, results);1987 console.debug('Groups fuzzy search results for ' + searchValue, results);
1988 fuzzySearchGroupsCache.set(searchValue, results);
1957 return results;1989 return results;
1958}1990}
19591991