From 4a6659f26e497edb743fb8fd7cc15ff490832612 Mon Sep 17 00:00:00 2001 From: OkunElya Date: Fri, 3 Apr 2026 00:46:19 +1000 Subject: [PATCH] made it work for ram sticks data --- site/src/App.jsx | 6 ++-- site/src/components/Filter.jsx | 66 ++++++++++++++++++---------------- site/src/components/Table.jsx | 2 +- site/src/data.js | 2 +- 4 files changed, 39 insertions(+), 37 deletions(-) diff --git a/site/src/App.jsx b/site/src/App.jsx index cf97cd8..db11dec 100644 --- a/site/src/App.jsx +++ b/site/src/App.jsx @@ -1,14 +1,12 @@ import { useState } from 'react' import Table from './components/Table.jsx'; -import buildings from './data.js'; +import ram_sticks from './data.js'; import './CSS/App.css' function App() { - const [count, setCount] = useState(0) - return (

Самые высокие здания и сооружения

- +
) } diff --git a/site/src/components/Filter.jsx b/site/src/components/Filter.jsx index 3b03790..0f67deb 100644 --- a/site/src/components/Filter.jsx +++ b/site/src/components/Filter.jsx @@ -11,23 +11,25 @@ const Filter = (props) => { const handleSubmit = (event) => { event.preventDefault(); + const readNumConstrain = (name, event) => [event.target[name + "From"].value == "" ? null : Number(event.target[name + "From"].value), event.target[name + "To"].value == "" ? null : Number(event.target[name + "To"].value)] + // создаем словарь со значениями полей формы const filterField = { - "Название": event.target["structure"].value.toLowerCase(), - "Тип": event.target["type"].value.toLowerCase(), - "Страна": event.target["country"].value.toLowerCase(), - "Город": event.target["city"].value.toLowerCase(), - "Год":[event.target["yearFrom"].value==""?null:Number(event.target["yearFrom"].value),event.target["yearTo"].value==""?null:Number(event.target["yearTo"].value)], - "Высота":[event.target["heightFrom"].value==""?null:Number(event.target["heightFrom"].value),event.target["heightTo"].value==""?null:Number(event.target["heightTo"].value)] + "type": event.target["type"].value.toLowerCase(), + "name": event.target["name"].value.toLowerCase(), + "size": readNumConstrain("size", event), + "maker": event.target["maker"].value.toLowerCase(), + "release": readNumConstrain("release", event), + "price": readNumConstrain("price", event) }; //фильтруем данные по значениям всех полей формы let arr = props.fullData; for (const key in filterField) { arr = arr.filter(item => - typeof(filterField[key])=="object"? - (filterField[key][0]==null? true:item[key]>=filterField[key][0] )&&(filterField[key][1]==null? true:item[key]<=filterField[key][1] ) : - item[key].toLowerCase().includes(filterField[key]) + typeof (filterField[key]) == "object" ? + (filterField[key][0] == null ? true : item[key] >= filterField[key][0]) && (filterField[key][1] == null ? true : item[key] <= filterField[key][1]) : + item[key].toLowerCase().includes(filterField[key]) ) } @@ -37,40 +39,42 @@ const Filter = (props) => { return (

- - -

-

- +

- - + +

- - + + + +

-

- - - - +

+ +

-

- - - - +

+ + + +

- +

+ + + + +

+

- ) + ) } - export default Filter; \ No newline at end of file +export default Filter; \ No newline at end of file diff --git a/site/src/components/Table.jsx b/site/src/components/Table.jsx index 747b5e9..456163e 100644 --- a/site/src/components/Table.jsx +++ b/site/src/components/Table.jsx @@ -32,7 +32,7 @@ const Table = (props) => { return ( <> -

Фильтры

+

Filters

diff --git a/site/src/data.js b/site/src/data.js index ced74e6..0fbd171 100644 --- a/site/src/data.js +++ b/site/src/data.js @@ -1,5 +1,5 @@ -const ram_sticks = [ +let ram_sticks = [ { "type": "DDR3", "name": "DDR3-1600-4GB-A1", "size": 4, "maker": "Kingston", "release": "2014-03", "price": 18, }, { "type": "DDR3", "name": "DDR3-1600-8GB-A2", "size": 8, "maker": "Corsair", "release": "2015-06", "price": 26, }, { "type": "DDR3", "name": "DDR3-1866-8GB-A3", "size": 8, "maker": "G.Skill", "release": "2016-02", "price": 29, },