diff --git a/src/components/global/SearchTable.tsx b/src/components/global/SearchTable.tsx index e578344..24fad9a 100644 --- a/src/components/global/SearchTable.tsx +++ b/src/components/global/SearchTable.tsx @@ -1,6 +1,6 @@ // Modules import { v4 as uuidv4 } from "uuid"; -import { useMemo, useState, useRef, useEffect } from "react"; +import React, { useState, useEffect } from "react"; // Icons import search from "../../icons/search.svg"; @@ -9,98 +9,52 @@ import search from "../../icons/search.svg"; import { PlayersData } from "../../types/players"; // Helpers -import { searchFull, assembleData } from "../../helpers/searchTable"; - -const playersData: PlayersData[] = [ - { - id: "204308", - title: "Гроссмейстер", - surname: "Аманов", - name: "Аман", - birth: "1990", - classical: "2847", - rapid: "2846", - blitz: "2847", - }, - { - id: "204308", - title: "Мастер", - surname: "Какаджанов", - name: "Керим", - birth: "2000", - classical: "2847", - rapid: "2846", - blitz: "2847", - }, - { - id: "204308", - title: "Гроссмейстер", - surname: "Аманов", - name: "Аман", - birth: "1990", - classical: "2847", - rapid: "2846", - blitz: "2847", - }, - { - id: "204308", - title: "Мастер", - surname: "Какаджанов", - name: "Керим", - birth: "2000", - classical: "2847", - rapid: "2846", - blitz: "2847", - }, -]; +import { getTeam } from "../../helpers/apiRequests"; const SearchTable = () => { // Inner Types type searchItemType = [string, React.Dispatch>]; - // State - const [searchItem, setSearchItem]: searchItemType = useState("$#@"); + const [playerData, setPlayerData]: [ + PlayersData[], + React.Dispatch + ] = useState([ + { + id: -1, + title: "", + national: 0, + img: "", + name: "", + birthday: -1, + classic: -1, + rapid: -1, + blitz: -1, + }, + ]); - // Memo - const data: string[][] = useMemo(() => assembleData(playersData), []); - - const priority: number[] = useMemo( - () => searchFull(data, searchItem), - [searchItem, data] - ); - - // Ref - const input = useRef(null); - - // Effect useEffect(() => { - const items = Array.from( - document.querySelectorAll(".search-tr") - ); - items.forEach((el, i) => { - el.style.order = `${priority[i]}`; - }); - }, [priority]); + getTeam(setPlayerData); + }, []); + + const [searchItem, setSearchItem]: searchItemType = useState("$#@"); return (
e.preventDefault()}> - - + type="text" + placeholder="Введите имя ID игрока" + /> + {/* */}
@@ -112,29 +66,47 @@ const SearchTable = () => { № ID Титул игрока - Фамилия Имя Год рождения Классика Рапид Блиц - {playersData.map((player, i) => { - return ( - - {/* N_o */} - {i + 1} - {player.id} - {player.title} - {player.surname} - {player.name} - {player.birth} - {player.classical} - {player.rapid} - {player.blitz} - - ); - })} + {playerData + ? playerData.map((player, i) => { + if (searchItem === "$#@") { + return ( + + {/* N_o */} + {i + 1} + {player.id} + {player.title} + {player.name} + {player.birthday} + {player.classic} + {player.rapid} + {player.blitz} + + ); + } else { + if (Object.values(player).toString().includes(searchItem)) { + return ( + + {/* N_o */} + {i + 1} + {player.id} + {player.title} + {player.name} + {player.birthday} + {player.classic} + {player.rapid} + {player.blitz} + + ); + } + } + }) + : ""}
diff --git a/src/helpers/counter.ts b/src/helpers/counter.ts deleted file mode 100644 index 309f154..0000000 --- a/src/helpers/counter.ts +++ /dev/null @@ -1,9 +0,0 @@ -export const counter = (array: string[], searchItem: string): number => { - return array.filter( - (el) => el.toLocaleLowerCase() === searchItem.toLocaleLowerCase() - ).length; -}; - -export const countChar = (str: string, searchItem: string): number => { - return str.split(searchItem).length - 1; -}; diff --git a/src/helpers/searchTable.ts b/src/helpers/searchTable.ts deleted file mode 100644 index 5109fd0..0000000 --- a/src/helpers/searchTable.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { counter, countChar } from "./counter"; - -export const assembleData = (array: Object[]): string[][] => { - const out: string[][] = []; - array.forEach((el) => { - const pushed = Object.keys(el).map((method) => { - return (el as any)[method]; - }); - - out.push(pushed); - }); - return out; -}; - -export const exactSearch = ( - assembled: string[][], - searchItem: string -): number[] => { - const priority: number[] = []; - - assembled.forEach((arr) => { - let count = 0; - const result = counter(arr, searchItem); - count = count - result; - priority.push(count); - }); - - return priority; -}; - -export const charSearch = (assembled: string[][], searchItem: string) => { - const priority: number[] = []; - - assembled.forEach((arr) => { - let count = 0; - const conCat: string = arr.join("").toLocaleLowerCase(); - const result = countChar(conCat, searchItem); - count = count - result; - priority.push(count); - }); - - return priority; -}; - -export const searchFull = (assembled: string[][], searchItem: string) => { - const exact = exactSearch(assembled, searchItem); - const char = charSearch(assembled, searchItem); - const temp: number[] = []; - - exact.forEach((el, i) => { - temp.push(el + char[i]); - }); - - return temp; -};