diff --git a/Lab5/src/components/api/cards_api.js b/Lab5/src/components/api/cards_api.js
new file mode 100644
index 0000000..0b7075b
--- /dev/null
+++ b/Lab5/src/components/api/cards_api.js
@@ -0,0 +1,46 @@
+// cards_api.js
+
+// URL вашего JSON-сервера с данными о новостях
+const API_URL = 'http://localhost:8081/lines';
+
+// Функция для получения всех новостей
+export const getAllLines = async () => {
+ try {
+ const response = await fetch(API_URL);
+ const data = await response.json();
+ return data;
+ } catch (error) {
+ console.error('Ошибка при получении новостей:', error);
+ throw error;
+ }
+};
+
+// Функция для получения одной новости по id
+export const getLine = async (id) => {
+ try {
+ const response = await fetch(`${API_URL}/${id}`);
+ const data = await response.json();
+ return data;
+ } catch (error) {
+ console.error('Ошибка при получении новости:', error);
+ throw error;
+ }
+};
+
+// Функция для обновления новости
+export const updateLine = async (id, newData) => {
+ try {
+ const response = await fetch(`${API_URL}/${id}`, {
+ method: 'PUT',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify(newData),
+ });
+ const data = await response.json();
+ return data;
+ } catch (error) {
+ console.error('Ошибка при обновлении новости:', error);
+ throw error;
+ }
+};
diff --git a/Lab5/src/main.jsx b/Lab5/src/main.jsx
index 4fdc574..ef3bdd9 100644
--- a/Lab5/src/main.jsx
+++ b/Lab5/src/main.jsx
@@ -9,6 +9,7 @@ import Page1 from './pages/Page1.jsx';
import Page2 from './pages/Page2.jsx';
import Page3 from './pages/Page3.jsx';
import Page4 from './pages/Page4.jsx';
+import NewsPage from './pages/NewsPage.jsx';
import Page5 from './pages/Page5.jsx';
import Page6 from './pages/Page6.jsx';
@@ -34,6 +35,11 @@ const routes = [
element: ,
title: 'Мир спорта',
},
+ {
+ path: '/NewsPage',
+ element: ,
+ title: 'Новости',
+ },
{
path: '/page5',
element: ,
diff --git a/Lab5/src/pages/NewsPage.jsx b/Lab5/src/pages/NewsPage.jsx
new file mode 100644
index 0000000..bee1188
--- /dev/null
+++ b/Lab5/src/pages/NewsPage.jsx
@@ -0,0 +1,50 @@
+// NewsPage.jsx
+
+import React, { useState, useEffect } from 'react';
+import { getAllLines } from '../components/api/cards_api';
+
+
+const NewsPage = () => {
+ const [news, setNews] = useState([]);
+
+ useEffect(() => {
+ // Получаем все новости при загрузке компонента
+ getAllNews();
+ }, []);
+
+ const getAllNews = async () => {
+ try {
+ // Получаем данные с сервера
+ const data = await getAllLines();
+ setNews(data); // Обновляем состояние новостей
+ } catch (error) {
+ console.error('Ошибка получения новостей:', error);
+ }
+ };
+
+ // Функция для создания карточки на основе данных новости
+ const createNewsCard = (newsData) => {
+ return (
+
+
+
+
+
{newsData.price}
+
{newsData.count}
+
{newsData.sum}
+
+
+
+ );
+ };
+
+ return (
+
+
+ {news.map((newsItem) => createNewsCard(newsItem))}
+
+
+ );
+};
+
+export default NewsPage;
diff --git a/Lab5/src/pages/Page2.jsx b/Lab5/src/pages/Page2.jsx
index 0f251f7..cf7af3e 100644
--- a/Lab5/src/pages/Page2.jsx
+++ b/Lab5/src/pages/Page2.jsx
@@ -90,8 +90,8 @@ const Page2 = () => {
diff --git a/Lab5/src/pages/Page5.jsx b/Lab5/src/pages/Page5.jsx
index dca2842..39cfedb 100644
--- a/Lab5/src/pages/Page5.jsx
+++ b/Lab5/src/pages/Page5.jsx
@@ -2,6 +2,7 @@ import { useForm } from 'react-hook-form';
import { useState,useEffect } from 'react';
import axios from 'axios';
import { useDispatch } from 'react-redux';
+import './button.css';
const Page5 = () => {
const { register, handleSubmit } = useForm();
diff --git a/Lab5/src/pages/button.css b/Lab5/src/pages/button.css
new file mode 100644
index 0000000..c03a530
--- /dev/null
+++ b/Lab5/src/pages/button.css
@@ -0,0 +1,11 @@
+.btn-purple {
+ background-color: #570257; /* Цвет фона кнопки */
+ color: #ffffff; /* Цвет текста на кнопке */
+ /* Другие стили */
+ }
+
+ .btn-purple:hover {
+ background-color: #450045; /* Цвет фона кнопки при наведении */
+ color: #ffffff; /* Цвет текста на кнопке при наведении */
+ /* Другие стили при наведении */
+ }
\ No newline at end of file