From 8b324993ad3cf2f4a9d3da664045eeb943e02699 Mon Sep 17 00:00:00 2001 From: Igor <12849336+DoubleCookies@users.noreply.github.com> Date: Tue, 20 Jul 2021 19:15:52 +0300 Subject: [PATCH] Weapon aliases (#594) * init aliases search * split filter check; filter aliases by substring (not complete match) * remove console.log * move import * Update weaponsAliases.ts Co-authored-by: Kalle <38327916+Sendouc@users.noreply.github.com> --- components/common/WeaponSelector.tsx | 29 +++++- utils/lists/weaponsAliases.ts | 141 +++++++++++++++++++++++++++ 2 files changed, 165 insertions(+), 5 deletions(-) create mode 100644 utils/lists/weaponsAliases.ts diff --git a/components/common/WeaponSelector.tsx b/components/common/WeaponSelector.tsx index 75f8be01d..f71c3a044 100644 --- a/components/common/WeaponSelector.tsx +++ b/components/common/WeaponSelector.tsx @@ -6,9 +6,10 @@ import { salmonRunWeapons, weaponsWithHeroCategorized, } from "utils/lists/weaponsWithHero"; +import { weaponsAliases } from "utils/lists/weaponsAliases"; +import weaponJson from "utils/data/weaponData.json"; import MySelect from "./MySelect"; import WeaponImage from "./WeaponImage"; -import weaponJson from "utils/data/weaponData.json"; interface SelectorProps { autoFocus?: boolean; @@ -63,17 +64,32 @@ const customFilterOption = (option: any, rawInput: string) => { return words.reduce( (acc, cur) => acc && - (option.label.toLowerCase().includes(cur.toLowerCase()) || - option.data?.data?.sub.toLowerCase() === rawInput.toLowerCase() || - option.data?.data?.special.toLowerCase() === rawInput.toLowerCase()), + (option.label.toLowerCase().includes(cur.toLowerCase()) || filterWeaponsByString(rawInput, option.data?.data)), true ); }; +function filterWeaponsByString(rawInput: string, weaponData: WeaponData): boolean { + if (!weaponData) + return false; + if (weaponData?.sub.toLowerCase() === rawInput.toLowerCase()) + return true; + if (weaponData?.special.toLowerCase() === rawInput.toLowerCase()) + return true; + if (weaponData?.aliases) { + for (const alias of weaponData.aliases) { + if (alias?.toLowerCase().includes(rawInput)) + return true; + } + } + return false; +} + type WeaponData = { name: string; sub: string; special: string; + aliases: typeof weaponsAliases[keyof typeof weaponsAliases]; }; function initWeaponData() { @@ -82,7 +98,10 @@ function initWeaponData() { for (const [key, value] of Object.entries(weaponData)) { if (value.Special && value.Sub) { - weaponsArray.push({ name: key, special: value.Special, sub: value.Sub }); + const typedKey = key as keyof typeof weaponsAliases; + const aliases = weaponsAliases[typedKey]; + + weaponsArray.push({ name: key, special: value.Special, sub: value.Sub, aliases }); } } return weaponsArray; diff --git a/utils/lists/weaponsAliases.ts b/utils/lists/weaponsAliases.ts new file mode 100644 index 000000000..e7653f065 --- /dev/null +++ b/utils/lists/weaponsAliases.ts @@ -0,0 +1,141 @@ +export const weaponsAliases = { + ".52 Gal": ["gal", "52", "v52", "52g"], + ".52 Gal Deco": ["galdeco", "52deco", "52galdeco", "52gd"], + ".96 Gal": ["96", "v96", "96g"], + ".96 Gal Deco": ["96deco", "96galdeco", "96gd"], + "Aerospray MG": ["mg", "aeromg", "silveraero", "silveraerospray", "aero", "aerospray"], + "Aerospray PG": ["pg", "aeropg", "bronzeaero", "bronzeaerospray"], + "Aerospray RG": ["rg", "aerorg", "goldaero", "goldaerospray"], + "Ballpoint Splatling": ["ballpoint", "bp", "pen"], + "Ballpoint Splatling Nouveau": ["ballpointnouveau", "bpn", "bpsn", "bsn"], + "Bamboozler 14 Mk I": ["bambooi", "bamboo1", "bamboo14mki", "bamboomki", "bamboomk1"], + "Bamboozler 14 Mk II": ["bambooii", "bamboo2", "bamboo14mkii", "bamboomkii", "bamboomk2"], + "Bamboozler 14 Mk III": ["bambooiii", "bamboo3", "bamboo14mkiii", "bamboomkiii", "bamboomk3"], + "Blaster": ["vblaster"], + "Bloblobber": ["blob", "vblob"], + "Bloblobber Deco": ["blobdeco"], + "Carbon Roller": ["carbon", "vcarbon"], + "Carbon Roller Deco": ["carbondeco", "crd"], + "Cherry H-3 Nozzlenose": ["cherry", "ch3", "ch3n", "cherrynozzle"], + "Clash Blaster": ["clash", "vclash", "clashter"], + "Clash Blaster Neo": ["clashneo", "clashterneo", "cbn"], + "Classic Squiffer": ["csquif", "csquiff", "bluesquif", "bluesquiff", "squif", "squiff", "squiffer"], + "Clear Dapple Dualies": ["cdapple", "cdapples", "cleardualies", "clapples", "clappies", "cdd"], + "Custom Blaster": ["cblaster"], + "Custom Dualie Squelchers": ["cds", "customdualies", "cdualies"], + "Custom E-liter 4K": ["c4k", "ce4k", "celiter", "celitre", "celiter4k", "celitre4k", "custom4k"], + "Custom E-liter 4K Scope": ["c4ks", "ce4ks", "celiterscope", "celitrescope", "celiter4kscope", "celitre4kscope", "custom4kscope"], + "Custom Explosher": ["cex", "cexplo", "cexplosher"], + "Custom Goo Tuber": ["customgoo", "cgoo", "cgootube", "cgootuber", "cgt"], + "Custom Hydra Splatling": ["customhydra", "chydra", "chydrasplatling", "chs"], + "Custom Jet Squelcher": ["customjet", "cjet", "cjets", "cjs", "cjsquelcher", "cjetsquelcher"], + "Custom Range Blaster": ["customrange", "crange", "crblaster", "crb"], + "Custom Splattershot Jr.": ["customjunior", "cjr", "cjnr", "cjunior", "csj"], + "Dapple Dualies": ["dapples", "vdapples", "vdd", "dd", "ddualies"], + "Dapple Dualies Nouveau": ["dapplesnouveau", "ddn", "ddualiesn"], + "Dark Tetra Dualies": ["tetra", "tetras", "tetradualies", "dark", "darks", "darktetra", "darktetras", "darkdualies", "dtd"], + "Dualie Squelchers": ["ds", "vds"], + "Dynamo Roller": ["dynamo", "vdynamo", "silverdynamo"], + "E-liter 4K": ["4k", "e4k", "eliter", "elitre", "eliter4k", "elitre4k"], + "E-liter 4K Scope": ["4ks", "e4ks", "eliterscope", "elitrescope", "eliter4kscope", "elitre4kscope"], + "Enperry Splat Dualies": ["edualies", "enperries", "enperrydualies", "esd"], + "Explosher": ["vex", "explo"], + "Firefin Splat Charger": ["firefin", "firefincharger", "fsc"], + "Firefin Splatterscope": ["firefinscope"], + "Flingza Roller": ["fling", "flingza", "vfling", "vflingza"], + "Foil Flingza Roller": ["foilfling", "foilflingza", "ffling", "fflingza", "ffr"], + "Foil Squeezer": ["fsqueezer"], + "Forge Splattershot Pro": ["forge", "forgepro", "fpro", "fsp"], + "Fresh Squiffer": ["fsquif", "fsquiff", "redsquif", "redsquiff"], + "Glooga Dualies": ["glooga", "gloogas", "glues", "vglues", "vgloogas", "gd", "vgd"], + "Glooga Dualies Deco": ["gloogadeco", "gloogasdeco", "gluesdeco", "dglues", "dgloogas", "gdd", "dgd"], + "Gold Dynamo Roller": ["golddynamo", "gdr"], + "Goo Tuber": ["goo", "vgoo", "gootube", "vgootube", "vgootuber"], + "Grim Range Blaster": ["grim", "grange", "grblaster", "grb"], + "H-3 Nozzlenose": ["h3", "vh3", "h3nozzle", "h3n"], + "H-3 Nozzlenose D": ["h3d", "h3dnozzle", "h3nd", "h3dn"], + "Heavy Splatling": ["heavy", "vheavy"], + "Heavy Splatling Deco": ["heavyd", "heavydeco", "hsd"], + "Heavy Splatling Remix": ["remix", "heavyremix", "hsr"], + "Hero Blaster Replica": ["heroblaster"], + "Hero Brella Replica": ["herobrella"], + "Hero Charger Replica": ["herocharger"], + "Hero Dualie Replicas": ["herodualie", "herodualies"], + "Hero Roller Replica": ["heroroller"], + "Hero Shot Replica": ["heroshot"], + "Hero Slosher Replica": ["heroslosh", "heroslosher"], + "Hero Splatling Replica": ["herosplatling", "heroheavy"], + "Herobrush Replica": ["herobrush"], + "Hydra Splatling": ["hydra", "vhydra", "vhydrasplatling"], + "Inkbrush": ["brush", "vbrush", "vinkbrush"], + "Inkbrush Nouveau": ["brushn", "brushnouveau", "nbrush", "inkbrushn"], + "Jet Squelcher": ["jet", "vjet", "jets", "vjets", "js", "vjs", "jsquelcher", "vjsquelcher", "vjetsquelcher"], + "Kensa .52 Gal": ["kgal", "k52", "k52gal"], + "Kensa Charger": ["kcharger"], + "Kensa Dynamo Roller": ["kdynamo", "kensadynamo", "kdr"], + "Kensa Glooga Dualies": ["kensaglooga", "kensagloogas", "kensaglues", "klues", "kglues", "klooga", "kloogas", "kgloogas", "kgd"], + "Kensa L-3 Nozzlenose": ["knozzle", "kl3", "kl3n", "kl3nozzle"], + "Kensa Luna Blaster": ["kensaluna", "kluna", "kuna", "kunablaster", "klb"], + "Kensa Mini Splatling": ["kensamini", "kmini", "kimi", "kimisplatling", "kminisplatling", "kms"], + "Kensa Octobrush": ["kensabrush", "kbrush", "krush", "kocto", "koctobrush", "kob"], + "Kensa Rapid Blaster": ["kensarapid", "krapid", "krapidblaster", "kraster", "krb"], + "Kensa Sloshing Machine": ["kensasloshmachine", "ksloshmachine", "kensamachine", "kmachine", "kachine", "kachin", "ksm"], + "Kensa Splat Dualies": ["kensadualie", "kensadualies", "kdaulies", "kdaulie", "kaulies", "kaulie", "ksd"], + "Kensa Splat Roller": ["kensaroller", "kroller", "kroll", "ksr"], + "Kensa Splatterscope": ["kensascope", "ksscope", "kscope", "kss"], + "Kensa Splattershot": ["kensashot", "ksshot", "kshot"], + "Kensa Splattershot Jr.": ["kensajunior", "kjr", "kjnr", "kjunior", "ksj"], + "Kensa Splattershot Pro": ["kensapro", "kpro", "ksp"], + "Kensa Undercover Brella": ["kensaundercover", "kunder", "kensabrella", "kub"], + "Krak-On Splat Roller": ["krakon", "krakonroller", "krack", "krackonroller", "krak", "krakenroller", "koroller", "koro", "kosr"], + "L-3 Nozzlenose": ["l3", "vl3", "l3nozzle", "l3n"], + "L-3 Nozzlenose D": ["l3d", "l3dnozzle", "l3nd", "l3dn"], + "Light Tetra Dualies": ["light", "lights", "lightdualies", "lighttetra", "lighttetras"], + "Luna Blaster": ["luna", "vluna", "vuna", "vlunablaster"], + "Luna Blaster Neo": ["lunaneo", "lbn"], + "Mini Splatling": ["mini", "vmini", "vimi", "vimisplatling", "vminisplatling", "vms"], + "N-ZAP '83": ["zap83", "83", "bronzenzap", "bronzezap", "brownnzap", "brownzap", "rednzap", "redzap"], + "N-ZAP '85": ["zap85", "85", "greynzap", "greyzap", "graynzap", "grayzap", "zap", "nzap"], + "N-ZAP '89": ["zap89", "89", "orangenzap", "orangezap"], + "Nautilus 47": ["naut47", "47", "naut"], + "Nautilus 79": ["naut79", "79"], + "Neo Splash-o-matic": ["neosplash", "nsplash", "nsplashomatic"], + "Neo Sploosh-o-matic": ["neosploosh", "nsploosh", "nsplooshomatic"], + "New Squiffer": ["nsquif", "nsquiff", "newsquif", "newsquiff"], + "Octobrush": ["obrush", "voctobrush", "vobrush"], + "Octobrush Nouveau": ["obrushn", "octobrushn"], + "Octo Shot Replica": ["oshot", "osr"], + "Permanent Inkbrush": ["pbrush", "permabrush", "permanentbrush", "pinkbrush", "permainkbrush"], + "Range Blaster": ["range", "vrange", "vrangeblaster"], + "Rapid Blaster": ["rapid", "vrapid", "vrapidblaster"], + "Rapid Blaster Deco": ["rapiddeco", "rapidd", "rapidblasterd", "rbd"], + "Rapid Blaster Pro": ["rapidpro", "prorapid", "rbp"], + "Rapid Blaster Pro Deco": ["rapidprodeco", "prodecorapid", "rbpd"], + "Slosher": ["slosh", "vslosh"], + "Slosher Deco": ["sloshd", "sloshdeco"], + "Sloshing Machine": ["sloshmachine", "vsloshmachine", "vmachine", "machine", "vachine", "vsm"], + "Sloshing Machine Neo": ["sloshmachineneo", "neosloshmachine", "neomachine", "machineneo", "smn"], + "Soda Slosher": ["soda", "sodaslosh"], + "Sorella Brella": ["sorella", "sbrella", "srella"], + "Splash-o-matic": ["splash", "vsplash", "vsplashomatic"], + "Splat Brella": ["brella", "vbrella", "vsplatbrella"], + "Splat Charger": ["charger", "vcharger", "vsplatcharger"], + "Splat Dualies": ["dualies", "vdualies", "vsplatdualies"], + "Splat Roller": ["roller", "vroller", "vsplatroller"], + "Splatterscope": ["scope", "vscope", "vsplatscope", "vsplatterscope"], + "Splattershot": ["shot", "vshot", "vsplatshot", "vsplattershot"], + "Splattershot Jr.": ["junior", "jr", "vjr", "jnr", "vjnr", "vjunior", "vsj"], + "Splattershot Pro": ["pro", "vpro", "vsplatshotpro", "vsplatterpro"], + "Sploosh-o-matic": ["sploosh", "vsploosh", "vsplooshomatic"], + "Sploosh-o-matic 7": ["7", "sploosh7", "7sploosh", "7splooshomatic"], + "Squeezer": ["vsqueezer"], + "Tenta Brella": ["tent", "vent", "vtent", "tentbrella", "vtentbrella"], + "Tenta Camo Brella": ["tentcamo", "camo", "camotent", "camobrella", "tentcamobrella", "tcb"], + "Tenta Sorella Brella": ["tentsorella", "tsorella", "sorellatent", "tsorellabrella", "tentsorellabrella", "tsb"], + "Tentatek Splattershot": ["ttek", "ttekshot", "tshot", "ttshot", "ttsplatshot", "ttsplattershot", "ttss", "ttk"], + "Tri-Slosher": ["tri", "trislosh", "vtri", "vtrislosh", "vtrislosher"], + "Tri-Slosher Nouveau": ["trin", "trisloshn", "trinouveau", "trisloshnouveau", "tsn"], + "Undercover Brella": ["undercover", "ubrella", "vundercover", "vundercoverbrella"], + "Undercover Sorella Brella": ["sunder", "sundercover", "undercoversorella", "sundercoverbrella", "usb"], + "Zink Mini Splatling": ["zinkmini", "zmini", "zimi", "zimisplatling", "zminisplatling", "zms"], +} as const;