added table page
This commit is contained in:
51
site/src/chart/Chart.tsx
Normal file
51
site/src/chart/Chart.tsx
Normal file
@@ -0,0 +1,51 @@
|
||||
import Navbar from "../components/Navbar";
|
||||
import CustomFooter from "../components/CustomFooter";
|
||||
import Select from '@mui/material/Select';
|
||||
import type { SelectChangeEvent } from '@mui/material/Select';
|
||||
import Box from '@mui/material/Box';
|
||||
import InputLabel from '@mui/material/InputLabel';
|
||||
import MenuItem from '@mui/material/MenuItem';
|
||||
import FormControl from '@mui/material/FormControl';
|
||||
import * as React from 'react';
|
||||
import {years, countries, types } from "./groupdata";
|
||||
import GroupGrid from "./components/GroupGrid";
|
||||
import GroupChart from "./components/GroupChart";
|
||||
|
||||
type tSelect = "Страна" | "Год" | "Тип";
|
||||
|
||||
function Chart() {
|
||||
const [group, setGroup] = React.useState<tSelect>("Страна");
|
||||
const [groupData, setGroupData] = React.useState(countries);
|
||||
|
||||
|
||||
const handleChange = (event: SelectChangeEvent) => {
|
||||
setGroup(event.target.value as tSelect);
|
||||
setGroupData([countries, years, types][["Страна", "Год", "Тип"].indexOf(event.target.value)]);
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<Navbar active="3" />
|
||||
<Box sx={{ width: "200px", m: "auto" }}>
|
||||
<FormControl fullWidth>
|
||||
<InputLabel> Группировать по </InputLabel>
|
||||
<Select
|
||||
id="select-group"
|
||||
value={group}
|
||||
label="Группировать по"
|
||||
onChange={handleChange}
|
||||
>
|
||||
<MenuItem value="Страна"> Стране </MenuItem>
|
||||
<MenuItem value="Год"> Году </MenuItem>
|
||||
<MenuItem value="Тип"> Типу </MenuItem>
|
||||
</Select>
|
||||
</FormControl>
|
||||
</Box>
|
||||
<GroupChart data={groupData} />
|
||||
<GroupGrid data={groupData} />
|
||||
<CustomFooter />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
export default Chart;
|
||||
62
site/src/chart/components/GroupChart.tsx
Normal file
62
site/src/chart/components/GroupChart.tsx
Normal file
@@ -0,0 +1,62 @@
|
||||
import { BarChart } from '@mui/x-charts/BarChart';
|
||||
import { LineChart } from '@mui/x-charts/LineChart';
|
||||
import Container from '@mui/material/Container';
|
||||
import type { tGroup } from "../groupdata";
|
||||
import { useState } from 'react';
|
||||
import SettingChart from "./SettingChart";
|
||||
|
||||
type GroupProps = {
|
||||
data: tGroup;
|
||||
};
|
||||
|
||||
|
||||
function GroupChart({ data }: GroupProps) {
|
||||
const [isBar, setIsBar] = useState(true);
|
||||
const [series, setSeries] = useState({
|
||||
'Максимальная высота': true,
|
||||
'Средняя высота': false,
|
||||
'Минимальная высота': false,
|
||||
});
|
||||
const selectedSeries = Object.entries(series).filter(item => item[1] === true);
|
||||
let seriesY = selectedSeries.map(item => {
|
||||
return {
|
||||
dataKey: item[0],
|
||||
label: item[0],
|
||||
barLabel: selectedSeries.length === 1 ? ('value' as const) : undefined,
|
||||
}
|
||||
});
|
||||
const chartSetting = {
|
||||
yAxis: [{ label: 'Высота (м)' }],
|
||||
height: 400,
|
||||
};
|
||||
|
||||
return (
|
||||
<Container maxWidth="lg">
|
||||
{isBar && <BarChart
|
||||
dataset={data}
|
||||
xAxis={[{ scaleType: 'band', dataKey: 'Группа' }]}
|
||||
series={seriesY}
|
||||
slotProps={{
|
||||
legend: {
|
||||
position: { vertical: 'bottom', horizontal: 'center' },
|
||||
}
|
||||
}}
|
||||
{...chartSetting}
|
||||
/>}
|
||||
{!isBar &&<LineChart
|
||||
dataset={data}
|
||||
xAxis={[{ scaleType: 'band', dataKey: 'Группа' }]}
|
||||
series={seriesY}
|
||||
slotProps={{
|
||||
legend: {
|
||||
position: { vertical: 'bottom', horizontal: 'center' },
|
||||
},
|
||||
}}
|
||||
{...chartSetting}
|
||||
/>}
|
||||
<SettingChart series={series} setSeries={setSeries} isBar={isBar} setIsBar={setIsBar} />
|
||||
</Container>
|
||||
)
|
||||
};
|
||||
|
||||
export default GroupChart;
|
||||
30
site/src/chart/components/GroupGrid.tsx
Normal file
30
site/src/chart/components/GroupGrid.tsx
Normal file
@@ -0,0 +1,30 @@
|
||||
|
||||
import { DataGrid } from "@mui/x-data-grid";
|
||||
import type { GridRowsProp, GridColDef } from "@mui/x-data-grid";
|
||||
import Container from '@mui/material/Container';
|
||||
import { ruRU } from '@mui/x-data-grid/locales';
|
||||
import type { tGroup } from "../groupdata";
|
||||
type GroupProps = {
|
||||
data: tGroup;
|
||||
};
|
||||
|
||||
function GroupGrid({ data }: GroupProps) {
|
||||
const rows: GridRowsProp = data;
|
||||
const columns: GridColDef[] = [
|
||||
{ field: 'Группа', headerName: 'Группа', flex: 1},
|
||||
{ field: 'Минимальная высота', flex: 0.5},
|
||||
{ field: 'Максимальная высота', flex: 0.5},
|
||||
{ field: 'Средняя высота', flex: 0.5},
|
||||
]
|
||||
return (
|
||||
<Container maxWidth="lg" sx={{height: '700px', mt: '20px'}}>
|
||||
<DataGrid
|
||||
localeText={ruRU.components.MuiDataGrid.defaultProps.localeText}
|
||||
rows={rows}
|
||||
columns={columns}
|
||||
/>
|
||||
</Container>
|
||||
)
|
||||
}
|
||||
|
||||
export default GroupGrid;
|
||||
95
site/src/chart/components/SettingChart.tsx
Normal file
95
site/src/chart/components/SettingChart.tsx
Normal file
@@ -0,0 +1,95 @@
|
||||
import FormControl from '@mui/material/FormControl';
|
||||
import FormLabel from '@mui/material/FormLabel';
|
||||
import FormControlLabel from '@mui/material/FormControlLabel';
|
||||
import Checkbox from '@mui/material/Checkbox';
|
||||
|
||||
import Stack from '@mui/material/Stack';
|
||||
import Divider from '@mui/material/Divider';
|
||||
import RadioGroup from '@mui/material/RadioGroup';
|
||||
import Radio from '@mui/material/Radio';
|
||||
import Container from '@mui/material/Container';
|
||||
type tSeries = {
|
||||
'Максимальная высота': boolean,
|
||||
'Средняя высота': boolean,
|
||||
'Минимальная высота': boolean,
|
||||
}
|
||||
type CheckboxProps = {
|
||||
series: tSeries;
|
||||
setSeries: React.Dispatch<React.SetStateAction<tSeries>>;
|
||||
isBar: boolean;
|
||||
setIsBar: React.Dispatch<React.SetStateAction<boolean>>
|
||||
};
|
||||
|
||||
function SettingChart({ series, setSeries, isBar, setIsBar }: CheckboxProps) {
|
||||
const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
|
||||
setSeries({
|
||||
...series,
|
||||
[event.target.name]: event.target.checked,
|
||||
});
|
||||
};
|
||||
|
||||
const handleRadioButtonChange = (event: React.ChangeEvent<HTMLInputElement>) => {
|
||||
setIsBar(event.target.value === "bar");
|
||||
};
|
||||
return (
|
||||
<Stack
|
||||
direction="row"
|
||||
divider={<Divider orientation="vertical" flexItem />}
|
||||
spacing={2}
|
||||
sx={{ m: "20px 0", justifyContent: "center", }}
|
||||
>
|
||||
<FormControl>
|
||||
<FormLabel id="label-radio-group">
|
||||
Тип диаграммы:
|
||||
</FormLabel>
|
||||
<RadioGroup
|
||||
name="group-radio"
|
||||
value={(isBar) ? "bar" : "dot"}
|
||||
>
|
||||
<FormControlLabel value="bar"
|
||||
control={
|
||||
<Radio checked={isBar} onChange={handleRadioButtonChange} />
|
||||
}
|
||||
label="Гистограмма"
|
||||
/>
|
||||
<FormControlLabel value="dot"
|
||||
control={
|
||||
<Radio checked={!isBar} onChange={handleRadioButtonChange} />
|
||||
}
|
||||
label="Линейная"
|
||||
/>
|
||||
</RadioGroup>
|
||||
</FormControl>
|
||||
<FormControl>
|
||||
<FormLabel id="label-checkbox-group">
|
||||
На диаграмме показать:
|
||||
</FormLabel>
|
||||
<FormControlLabel
|
||||
control={
|
||||
<Checkbox checked={series["Максимальная высота"]}
|
||||
onChange={handleChange}
|
||||
name="Максимальная высота" />
|
||||
}
|
||||
label="максимальную высоту"
|
||||
/>
|
||||
<FormControlLabel
|
||||
control={
|
||||
<Checkbox checked={series["Средняя высота"]}
|
||||
onChange={handleChange}
|
||||
name="Средняя высота" />
|
||||
}
|
||||
label="среднюю высоту"
|
||||
/>
|
||||
<FormControlLabel
|
||||
control={
|
||||
<Checkbox checked={series["Минимальная высота"]}
|
||||
onChange={handleChange}
|
||||
name="Минимальная высота" />
|
||||
}
|
||||
label="минимальную высоту"
|
||||
/>
|
||||
</FormControl>
|
||||
</Stack>
|
||||
)
|
||||
}
|
||||
export default SettingChart;
|
||||
87
site/src/chart/groupdata.tsx
Normal file
87
site/src/chart/groupdata.tsx
Normal file
@@ -0,0 +1,87 @@
|
||||
export type tGroup = {
|
||||
"id": number,
|
||||
"Группа": string | number,
|
||||
"Минимальная высота": number ,
|
||||
"Максимальная высота": number ,
|
||||
"Средняя высота": number,
|
||||
}[];
|
||||
|
||||
export const countries: tGroup = [
|
||||
{ "id": 1, "Группа": "Вьетнам" , "Минимальная высота": 461 , "Максимальная высота": 461 , "Средняя высота": 461 },
|
||||
{ "id": 2, "Группа": "Германия" , "Минимальная высота": 368 , "Максимальная высота": 368 , "Средняя высота": 368 },
|
||||
{ "id": 3, "Группа": "Гонконг" , "Минимальная высота": 367 , "Максимальная высота": 484 , "Средняя высота": 410 },
|
||||
{ "id": 4, "Группа": "Испания" , "Минимальная высота": 356 , "Максимальная высота": 356 , "Средняя высота": 356 },
|
||||
{ "id": 5, "Группа": "Иран" , "Минимальная высота": 435 , "Максимальная высота": 435 , "Средняя высота": 435 },
|
||||
{ "id": 6, "Группа": "Казахстан" , "Минимальная высота": 372 , "Максимальная высота": 420 , "Средняя высота": 391 },
|
||||
{ "id": 7, "Группа": "Канада" , "Минимальная высота": 355 , "Максимальная высота": 553 , "Средняя высота": 429 },
|
||||
{ "id": 8, "Группа": "КНР" , "Минимальная высота": 356 , "Максимальная высота": 632 , "Средняя высота": 464 },
|
||||
{ "id": 9, "Группа": "Кувейт" , "Минимальная высота": 372 , "Максимальная высота": 412 , "Средняя высота": 392 },
|
||||
{ "id": 10, "Группа": "Латвия" , "Минимальная высота": 369 , "Максимальная высота": 369 , "Средняя высота": 369 },
|
||||
{ "id": 11, "Группа": "Малайзия" , "Минимальная высота": 421 , "Максимальная высота": 452 , "Средняя высота": 437 },
|
||||
{ "id": 12, "Группа": "ОАЭ" , "Минимальная высота": 355 , "Максимальная высота": 828 , "Средняя высота": 461 },
|
||||
{ "id": 13, "Группа": "Польша" , "Минимальная высота": 646 , "Максимальная высота": 646 , "Средняя высота": 646 },
|
||||
{ "id": 14, "Группа": "Россия" , "Минимальная высота": 354 , "Максимальная высота": 540 , "Средняя высота": 420 },
|
||||
{ "id": 15, "Группа": "Румыния" , "Минимальная высота": 352 , "Максимальная высота": 352 , "Средняя высота": 352 },
|
||||
{ "id": 16, "Группа": "Словения" , "Минимальная высота": 360 , "Максимальная высота": 360 , "Средняя высота": 360 },
|
||||
{ "id": 17, "Группа": "США" , "Минимальная высота": 350 , "Максимальная высота": 629 , "Средняя высота": 437 },
|
||||
{ "id": 18, "Группа": "Тайвань" , "Минимальная высота": 378 , "Максимальная высота": 509 , "Средняя высота": 444 },
|
||||
{ "id": 19, "Группа": "Узбекистан" , "Минимальная высота": 350 , "Максимальная высота": 375 , "Средняя высота": 363 },
|
||||
{ "id": 20, "Группа": "Украина" , "Минимальная высота": 354 , "Максимальная высота": 385 , "Средняя высота": 370 },
|
||||
{ "id": 21, "Группа": "Южная Корея" , "Минимальная высота": 555 , "Максимальная высота": 555 , "Средняя высота": 555 },
|
||||
{ "id": 22, "Группа": "Япония" , "Минимальная высота": 634 , "Максимальная высота": 634 , "Средняя высота": 634 },
|
||||
];
|
||||
|
||||
|
||||
export const years: tGroup = [
|
||||
{ "id": 1 , "Группа": 1931 , "Максимальная высота": 449 , "Минимальная высота": 449 , "Средняя высота": 449 },
|
||||
{ "id": 2 , "Группа": 1961 , "Максимальная высота": 354 , "Минимальная высота": 354 , "Средняя высота": 354 },
|
||||
{ "id": 3 , "Группа": 1963 , "Максимальная высота": 629 , "Минимальная высота": 629 , "Средняя высота": 629 },
|
||||
{ "id": 4 , "Группа": 1967 , "Максимальная высота": 540 , "Минимальная высота": 540 , "Средняя высота": 540 },
|
||||
{ "id": 5 , "Группа": 1968 , "Максимальная высота": 368 , "Минимальная высота": 368 , "Средняя высота": 368 },
|
||||
{ "id": 6 , "Группа": 1969 , "Максимальная высота": 457 , "Минимальная высота": 368 , "Средняя высота": 413 },
|
||||
{ "id": 7 , "Группа": 1971 , "Максимальная высота": 380 , "Минимальная высота": 380 , "Средняя высота": 380 },
|
||||
{ "id": 8 , "Группа": 1973 , "Максимальная высота": 385 , "Минимальная высота": 385 , "Средняя высота": 385 },
|
||||
{ "id": 9 , "Группа": 1974 , "Максимальная высота": 646 , "Минимальная высота": 356 , "Средняя высота": 510 },
|
||||
{ "id": 10 , "Группа": 1976 , "Максимальная высота": 553 , "Минимальная высота": 355 , "Средняя высота": 423 },
|
||||
{ "id": 11 , "Группа": 1977 , "Максимальная высота": 371 , "Минимальная высота": 371 , "Средняя высота": 371 },
|
||||
{ "id": 12 , "Группа": 1980 , "Максимальная высота": 350 , "Минимальная высота": 350 , "Средняя высота": 350 },
|
||||
{ "id": 13 , "Группа": 1983 , "Максимальная высота": 372 , "Минимальная высота": 372 , "Средняя высота": 372 },
|
||||
{ "id": 14 , "Группа": 1985 , "Максимальная высота": 375 , "Минимальная высота": 370 , "Средняя высота": 373 },
|
||||
{ "id": 15 , "Группа": 1987 , "Максимальная высота": 420 , "Минимальная высота": 369 , "Средняя высота": 395 },
|
||||
{ "id": 16 , "Группа": 1990 , "Максимальная высота": 367 , "Минимальная высота": 367 , "Средняя высота": 367 },
|
||||
{ "id": 17 , "Группа": 1991 , "Максимальная высота": 415 , "Минимальная высота": 415 , "Средняя высота": 415 },
|
||||
{ "id": 18 , "Группа": 1992 , "Максимальная высота": 405 , "Минимальная высота": 374 , "Средняя высота": 390 },
|
||||
{ "id": 19 , "Группа": 1994 , "Максимальная высота": 468 , "Минимальная высота": 468 , "Средняя высота": 468 },
|
||||
{ "id": 20 , "Группа": 1995 , "Максимальная высота": 421 , "Минимальная высота": 352 , "Средняя высота": 387 },
|
||||
{ "id": 21 , "Группа": 1996 , "Максимальная высота": 384 , "Минимальная высота": 350 , "Средняя высота": 369 },
|
||||
{ "id": 22 , "Группа": 1997 , "Максимальная высота": 391 , "Минимальная высота": 378 , "Средняя высота": 385 },
|
||||
{ "id": 23 , "Группа": 1998 , "Максимальная высота": 452 , "Минимальная высота": 452 , "Средняя высота": 452 },
|
||||
{ "id": 24 , "Группа": 1999 , "Максимальная высота": 421 , "Минимальная высота": 421 , "Средняя высота": 421 },
|
||||
{ "id": 25 , "Группа": 2000 , "Максимальная высота": 356 , "Минимальная высота": 355 , "Средняя высота": 356 },
|
||||
{ "id": 26 , "Группа": 2003 , "Максимальная высота": 435 , "Минимальная высота": 416 , "Средняя высота": 426 },
|
||||
{ "id": 27 , "Группа": 2004 , "Максимальная высота": 509 , "Минимальная высота": 509 , "Средняя высота": 509 },
|
||||
{ "id": 28 , "Группа": 2008 , "Максимальная высота": 492 , "Минимальная высота": 363 , "Средняя высота": 407 },
|
||||
{ "id": 29 , "Группа": 2009 , "Максимальная высота": 600 , "Минимальная высота": 423 , "Средняя высота": 489 },
|
||||
{ "id": 30 , "Группа": 2010 , "Максимальная высота": 828 , "Минимальная высота": 376 , "Средняя высота": 514 },
|
||||
{ "id": 31 , "Группа": 2011 , "Максимальная высота": 440 , "Минимальная высота": 440 , "Средняя высота": 440 },
|
||||
{ "id": 32 , "Группа": 2012 , "Максимальная высота": 634 , "Минимальная высота": 634 , "Средняя высота": 634 },
|
||||
{ "id": 33 , "Группа": 2013 , "Максимальная высота": 632 , "Минимальная высота": 632 , "Средняя высота": 632 },
|
||||
{ "id": 34 , "Группа": 2014 , "Максимальная высота": 381 , "Минимальная высота": 381 , "Средняя высота": 381 },
|
||||
{ "id": 35 , "Группа": 2015 , "Максимальная высота": 426 , "Минимальная высота": 354 , "Средняя высота": 387 },
|
||||
{ "id": 36 , "Группа": 2016 , "Максимальная высота": 374 , "Минимальная высота": 374 , "Средняя высота": 374 },
|
||||
{ "id": 37 , "Группа": 2017 , "Максимальная высота": 600 , "Минимальная высота": 555 , "Средняя высота": 578 },
|
||||
{ "id": 38 , "Группа": 2018 , "Максимальная высота": 462 , "Минимальная высота": 461 , "Средняя высота": 462 },
|
||||
|
||||
|
||||
];
|
||||
|
||||
export const types: tGroup = [
|
||||
{ "id": 1 , "Группа": "Антенная мачта" , "Максимальная высота": 646 , "Минимальная высота": 646 , "Средняя высота": 646 },
|
||||
{ "id": 2 , "Группа": "Башня" , "Максимальная высота": 375 , "Минимальная высота": 372 , "Средняя высота": 374 },
|
||||
{ "id": 3 , "Группа": "Бетонная башня" , "Максимальная высота": 634 , "Минимальная высота": 350 , "Средняя высота": 444 },
|
||||
{ "id": 4 , "Группа": "Гиперболоидная башня" , "Максимальная высота": 600 , "Минимальная высота": 600 , "Средняя высота": 600 },
|
||||
{ "id": 5 , "Группа": "Дымовая труба" , "Максимальная высота": 420 , "Минимальная высота": 350 , "Средняя высота": 370 },
|
||||
{ "id": 6 , "Группа": "Небоскрёб" , "Максимальная высота": 828 , "Минимальная высота": 354 , "Средняя высота": 441 },
|
||||
{ "id": 7 , "Группа": "Радиомачта" , "Максимальная высота": 629 , "Минимальная высота": 354 , "Средняя высота": 492 },
|
||||
{ "id": 8 , "Группа": "Решётчатая мачта" , "Максимальная высота": 385 , "Минимальная высота": 385 , "Средняя высота": 385 },
|
||||
];
|
||||
12
site/src/list/List.tsx
Normal file
12
site/src/list/List.tsx
Normal file
@@ -0,0 +1,12 @@
|
||||
import Navbar from "../components/Navbar";
|
||||
import RamGrid from "./components/RamGrid";
|
||||
|
||||
function List() {
|
||||
return (
|
||||
<div>
|
||||
<Navbar active="2"/>
|
||||
<RamGrid/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
export default List;
|
||||
28
site/src/list/components/RamGrid.tsx
Normal file
28
site/src/list/components/RamGrid.tsx
Normal file
@@ -0,0 +1,28 @@
|
||||
import { DataGrid } from "@mui/x-data-grid";
|
||||
import type { GridRowsProp, GridColDef } from "@mui/x-data-grid";
|
||||
import Container from '@mui/material/Container';
|
||||
import { ruRU } from '@mui/x-data-grid/locales';
|
||||
|
||||
import ram_prices from "../table";
|
||||
|
||||
function RamGrid() {
|
||||
const rows: GridRowsProp = ram_prices;
|
||||
const columns: GridColDef[] = [
|
||||
{ field: 'type', headerName: 'Type', flex: 0.5},
|
||||
{ field: 'name', headerName: 'Model', flex: 1},
|
||||
{ field: 'maker', headerName: 'Maker', flex: 0.5},
|
||||
{ field: 'size', headerName: 'Size (GB)',lex: 0.5},
|
||||
{ field: 'release', headerName: 'Release Year-month'},
|
||||
{ field: 'price' ,headerName: 'Price(USD)'},
|
||||
]
|
||||
return (
|
||||
<Container maxWidth="lg" sx={{height: '700px', mt: '20px'}}>
|
||||
<DataGrid
|
||||
localeText={ruRU.components.MuiDataGrid.defaultProps.localeText}
|
||||
rows={rows}
|
||||
columns={columns}
|
||||
/>
|
||||
</Container>
|
||||
)
|
||||
}
|
||||
export default RamGrid;
|
||||
75
site/src/list/table.tsx
Normal file
75
site/src/list/table.tsx
Normal file
@@ -0,0 +1,75 @@
|
||||
|
||||
const ram_prices = [
|
||||
{ "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, },
|
||||
{ "type": "DDR4", "name": "DDR4-2133-8GB-B1", "size": 8, "maker": "Crucial", "release": "2017-01", "price": 24, },
|
||||
{ "type": "DDR4", "name": "DDR4-2400-8GB-B2", "size": 8, "maker": "Kingston", "release": "2017-09", "price": 27, },
|
||||
{ "type": "DDR4", "name": "DDR4-2666-16GB-B3", "size": 16, "maker": "Corsair", "release": "2018-04", "price": 48, },
|
||||
{ "type": "DDR4", "name": "DDR4-3000-16GB-B4", "size": 16, "maker": "G.Skill", "release": "2018-11", "price": 52, },
|
||||
{ "type": "DDR4", "name": "DDR4-3200-16GB-B5", "size": 16, "maker": "HyperX", "release": "2019-03", "price": 55, },
|
||||
{ "type": "DDR4", "name": "DDR4-3200-32GB-B6", "size": 32, "maker": "Crucial", "release": "2019-08", "price": 92, },
|
||||
{ "type": "DDR4", "name": "DDR4-3600-32GB-B7", "size": 32, "maker": "Corsair", "release": "2020-02", "price": 99, },
|
||||
{ "type": "DDR5", "name": "DDR5-4800-16GB-C1", "size": 16, "maker": "Kingston", "release": "2021-01", "price": 78, },
|
||||
{ "type": "DDR5", "name": "DDR5-5200-16GB-C2", "size": 16, "maker": "Corsair", "release": "2021-06", "price": 84, },
|
||||
{ "type": "DDR5", "name": "DDR5-5600-32GB-C3", "size": 32, "maker": "G.Skill", "release": "2022-02", "price": 145, },
|
||||
{ "type": "DDR5", "name": "DDR5-6000-32GB-C4", "size": 32, "maker": "Crucial", "release": "2022-07", "price": 158, },
|
||||
{ "type": "DDR5", "name": "DDR5-6400-32GB-C5", "size": 32, "maker": "Corsair", "release": "2023-01", "price": 172, },
|
||||
{ "type": "DDR5", "name": "DDR5-6600-64GB-C6", "size": 64, "maker": "Kingston", "release": "2023-05", "price": 310, },
|
||||
{ "type": "DDR5", "name": "DDR5-6800-64GB-C7", "size": 64, "maker": "G.Skill", "release": "2023-09", "price": 329, },
|
||||
{ "type": "DDR5", "name": "DDR5-7200-64GB-C8", "size": 64, "maker": "Corsair", "release": "2024-02", "price": 355, },
|
||||
{ "type": "DDR5", "name": "DDR5-7600-96GB-C9", "size": 96, "maker": "Crucial", "release": "2024-06", "price": 520, },
|
||||
{ "type": "DDR5", "name": "DDR5-8000-96GB-C10", "size": 96, "maker": "Kingston", "release": "2024-10", "price": 560, },
|
||||
{ "type": "LPDDR4", "name": "LP4-3200-8GB-D1", "size": 8, "maker": "Samsung", "release": "2019-01", "price": 34, },
|
||||
{ "type": "LPDDR4", "name": "LP4-4266-8GB-D2", "size": 8, "maker": "Micron", "release": "2019-07", "price": 39, },
|
||||
{ "type": "LPDDR5", "name": "LP5-5500-12GB-D3", "size": 12, "maker": "Samsung", "release": "2020-03", "price": 58, },
|
||||
{ "type": "LPDDR5", "name": "LP5-6400-16GB-D4", "size": 16, "maker": "SKHynix", "release": "2021-01", "price": 74, },
|
||||
{ "type": "LPDDR5X", "name": "LP5X-7500-24GB-D5", "size": 24, "maker": "Micron", "release": "2022-05", "price": 118, },
|
||||
{ "type": "DDR4", "name": "DDR4-2666-8GB-E1", "size": 8, "maker": "Patriot", "release": "2018-05", "price": 25, },
|
||||
{ "type": "DDR4", "name": "DDR4-3000-8GB-E2", "size": 8, "maker": "ADATA", "release": "2018-09", "price": 28, },
|
||||
{ "type": "DDR4", "name": "DDR4-3200-8GB-E3", "size": 8, "maker": "TeamGroup", "release": "2019-04", "price": 30, },
|
||||
{ "type": "DDR4", "name": "DDR4-3600-16GB-E4", "size": 16, "maker": "ADATA", "release": "2020-01", "price": 53, },
|
||||
{ "type": "DDR4", "name": "DDR4-4000-16GB-E5", "size": 16, "maker": "Patriot", "release": "2020-06", "price": 61, },
|
||||
{ "type": "DDR5", "name": "DDR5-5200-8GB-F1", "size": 8, "maker": "TeamGroup", "release": "2021-03", "price": 52, },
|
||||
{ "type": "DDR5", "name": "DDR5-5600-16GB-F2", "size": 16, "maker": "ADATA", "release": "2021-10", "price": 88, },
|
||||
{ "type": "DDR5", "name": "DDR5-6000-16GB-F3", "size": 16, "maker": "Patriot", "release": "2022-03", "price": 95, },
|
||||
{ "type": "DDR5", "name": "DDR5-6400-32GB-F4", "size": 32, "maker": "TeamGroup", "release": "2022-09", "price": 168, },
|
||||
{ "type": "DDR5", "name": "DDR5-7200-32GB-F5", "size": 32, "maker": "ADATA", "release": "2023-04", "price": 185, },
|
||||
{ "type": "DDR3", "name": "DDR3-1333-4GB-G1", "size": 4, "maker": "Samsung", "release": "2013-02", "price": 15, },
|
||||
{ "type": "DDR3", "name": "DDR3-1600-4GB-G2", "size": 4, "maker": "Micron", "release": "2014-08", "price": 17, },
|
||||
{ "type": "DDR3", "name": "DDR3-1866-8GB-G3", "size": 8, "maker": "Samsung", "release": "2015-11", "price": 28, },
|
||||
{ "type": "DDR5", "name": "DDR5-8400-128GB-H1", "size": 128, "maker": "Corsair", "release": "2025-01", "price": 890, },
|
||||
{ "type": "DDR5", "name": "DDR5-8800-128GB-H2", "size": 128, "maker": "G.Skill", "release": "2025-03", "price": 940, },
|
||||
{ "type": "DDR5", "name": "DDR5-9200-128GB-H3", "size": 128, "maker": "Kingston", "release": "2025-06", "price": 990, },
|
||||
{ "type": "DDR5", "name": "DDR5-6000-48GB-X1", "size": 48, "maker": "Corsair", "release": "2024-01", "price": 210, },
|
||||
{ "type": "DDR5", "name": "DDR5-6000-48GB-X2", "size": 48, "maker": "Kingston", "release": "2024-02", "price": 215, },
|
||||
{ "type": "DDR5", "name": "DDR5-6000-48GB-X3", "size": 48, "maker": "G.Skill", "release": "2024-03", "price": 218, },
|
||||
{ "type": "DDR5", "name": "DDR5-6000-48GB-X4", "size": 48, "maker": "ADATA", "release": "2024-04", "price": 222, },
|
||||
{ "type": "DDR5", "name": "DDR5-6000-48GB-X5", "size": 48, "maker": "Patriot", "release": "2024-05", "price": 225, },
|
||||
{ "type": "DDR5", "name": "DDR5-6000-48GB-X6", "size": 48, "maker": "TeamGroup", "release": "2024-06", "price": 228, },
|
||||
{ "type": "DDR5", "name": "DDR5-6000-48GB-X7", "size": 48, "maker": "Crucial", "release": "2024-07", "price": 230, },
|
||||
{ "type": "DDR5", "name": "DDR5-6000-48GB-X8", "size": 48, "maker": "Samsung", "release": "2024-08", "price": 235, },
|
||||
{ "type": "DDR5", "name": "DDR5-6000-48GB-X9", "size": 48, "maker": "Micron", "release": "2024-09", "price": 238, },
|
||||
{ "type": "DDR5", "name": "DDR5-6000-48GB-X10", "size": 48, "maker": "SKHynix", "release": "2024-10", "price": 240, },
|
||||
{ "type": "DDR4", "name": "DDR4-3200-64GB-Y1", "size": 64, "maker": "Corsair", "release": "2021-01", "price": 180, },
|
||||
{ "type": "DDR4", "name": "DDR4-3200-64GB-Y2", "size": 64, "maker": "Kingston", "release": "2021-02", "price": 182, },
|
||||
{ "type": "DDR4", "name": "DDR4-3200-64GB-Y3", "size": 64, "maker": "G.Skill", "release": "2021-03", "price": 185, },
|
||||
{ "type": "DDR4", "name": "DDR4-3200-64GB-Y4", "size": 64, "maker": "ADATA", "release": "2021-04", "price": 188, },
|
||||
{ "type": "DDR4", "name": "DDR4-3200-64GB-Y5", "size": 64, "maker": "Patriot", "release": "2021-05", "price": 190, },
|
||||
{ "type": "DDR4", "name": "DDR4-3200-64GB-Y6", "size": 64, "maker": "TeamGroup", "release": "2021-06", "price": 192, },
|
||||
{ "type": "DDR4", "name": "DDR4-3200-64GB-Y7", "size": 64, "maker": "Crucial", "release": "2021-07", "price": 195, },
|
||||
{ "type": "DDR4", "name": "DDR4-3200-64GB-Y8", "size": 64, "maker": "Samsung", "release": "2021-08", "price": 198, },
|
||||
{ "type": "DDR4", "name": "DDR4-3200-64GB-Y9", "size": 64, "maker": "Micron", "release": "2021-09", "price": 200, },
|
||||
{ "type": "DDR4", "name": "DDR4-3200-64GB-Y10", "size": 64, "maker": "SKHynix", "release": "2021-10", "price": 205, }
|
||||
|
||||
]
|
||||
const ram_sticks = ram_prices.map((x,index) => ({
|
||||
...x,
|
||||
id: index + 1,
|
||||
// release: Number(x.release.split("-")[0]),
|
||||
}))
|
||||
|
||||
|
||||
|
||||
|
||||
export default ram_sticks;
|
||||
@@ -6,8 +6,8 @@ import {
|
||||
RouterProvider,
|
||||
} from "react-router-dom";
|
||||
|
||||
// import List from "./list/List";
|
||||
// import Chart from "./chart/Chart";
|
||||
import List from "./list/List";
|
||||
import Chart from "./chart/Chart";
|
||||
import Main from "./main/Main";
|
||||
import ProjectDetails from "./projectDetails/ProjectDetails";
|
||||
|
||||
@@ -22,14 +22,14 @@ const router = createBrowserRouter([
|
||||
path: "/project-details/:id",
|
||||
element: <ProjectDetails />,
|
||||
},
|
||||
// {
|
||||
// path: "/chart",
|
||||
// element: <Chart />,
|
||||
// },
|
||||
// {
|
||||
// path: "/building/:id",
|
||||
// element: <Building />,
|
||||
// },
|
||||
{
|
||||
path: "/list",
|
||||
element: <List />,
|
||||
},
|
||||
{
|
||||
path: "/chart",
|
||||
element: <Chart />,
|
||||
},
|
||||
]);
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user