Fixed Error

This commit is contained in:
2025-09-10 23:29:08 +04:00
parent 2db4cdbff9
commit 394063ff0f
13 changed files with 48 additions and 54 deletions

View File

@@ -4,12 +4,10 @@
"version": "0.0.0", "version": "0.0.0",
"type": "module", "type": "module",
"scripts": { "scripts": {
"start": "npm-run-all --parallel backend vite", "start": "npm-run-all --parallel vite",
"vite": "vite", "vite": "vite",
"build": "vite build", "build": "vite build",
"serve": "http-server -p 3000 ./dist/", "prod": "npm-run-all build --parallel",
"backend": "json-server database/data.json -p 5174",
"prod": "npm-run-all build --parallel backend serve",
"lint": "eslint ." "lint": "eslint ."
}, },
"dependencies": { "dependencies": {

View File

@@ -39,7 +39,7 @@
color: #000000; color: #000000;
} }
.pteg { .ptag {
color: #ff0000; color: #ff0000;
} }

View File

@@ -1,4 +1,4 @@
const URL = "http://localhost:5174/"; const URL = "http://localhost:8080/api/1.0/";
const makeRequest = async (path, params, vars, method = "GET", data = null) => { const makeRequest = async (path, params, vars, method = "GET", data = null) => {
try { try {

View File

@@ -3,12 +3,12 @@ import "./Header.modul.css"
export default function Header() { export default function Header() {
return ( return (
<header class="header"> <header className="header">
<div class="div"> <div className="div">
<img src="logo.png" alt="Логотип УлЧУ" class="logo"/> <img src="logo.png" alt="Логотип УлЧУ" className="logo"/>
<label class="nameBuild">Ульяновский Частный Университет</label> <label className="nameBuild">Ульяновский Частный Университет</label>
</div> </div>
<div class="navBar"> <div className="navBar">
<NavLink className="nav-link" to="/">Главная</NavLink> <NavLink className="nav-link" to="/">Главная</NavLink>
<NavLink className="nav-link" to="/info">Об университете</NavLink> <NavLink className="nav-link" to="/info">Об университете</NavLink>
<NavLink className="nav-link" to="/education">Образование</NavLink> <NavLink className="nav-link" to="/education">Образование</NavLink>

View File

@@ -21,8 +21,7 @@ export const useNews = (id) => {
} else { } else {
await updateItem(PATH, newsId, news); await updateItem(PATH, newsId, news);
} }
const result = await getNews(newsId); getNews(newsId).then((value) => setNews(value))
setNews(result);
}; };
const updateNews = (key, value) => { const updateNews = (key, value) => {

View File

@@ -0,0 +1,12 @@
import { useEffect, useState } from "react";
import { getAllItems } from "../../Api/client";
export default function NewsTagHook() {
const [tags, setTags] = useState(null);
useEffect(() => {
getAllItems("tags").then((value) => setTags(value))
}, [])
return tags;
};

View File

@@ -1,12 +0,0 @@
import { useEffect, useState } from "react";
import { getAllItems } from "../../Api/client";
export default function NewsTegHook() {
const [tegs, setTegs] = useState(null);
useEffect(() => {
getAllItems("tegs").then((value) => setTegs(value))
}, [])
return tegs;
};

View File

@@ -19,8 +19,7 @@ export default function useNewss() {
throw new Error("News id is not defined"); throw new Error("News id is not defined");
} }
await deleteItem(PATH, id) await deleteItem(PATH, id)
const newNewss = getNews() getNews().then((value) => setNews(value))
setNews(newNewss)
} }
return { news, deleteNews } return { news, deleteNews }

View File

@@ -1,12 +1,12 @@
import { Link, useNavigate } from "react-router-dom" import { Link, useNavigate } from "react-router-dom"
import NewsBoard from "./NewsBoard/NewsBoard" import NewsBoard from "./NewsBoard/NewsBoard"
import useNewsTeg from "./Hooks/NewsTegHook" import useNewsTag from "./Hooks/NewsTagHook"
import useNewss from "./Hooks/NewssHook" import useNewss from "./Hooks/NewssHook"
export default function News() { export default function News() {
const navigate = useNavigate() const navigate = useNavigate()
const { news, deleteNews } = useNewss() const { news, deleteNews } = useNewss()
const tegs = useNewsTeg() const tags = useNewsTag()
function handleUpdate(id) { navigate(`/news/edit/${id}`) } function handleUpdate(id) { navigate(`/news/edit/${id}`) }
function handleDelete(id) { deleteNews(id) } function handleDelete(id) { deleteNews(id) }
@@ -14,7 +14,7 @@ export default function News() {
return ( return (
<div> <div>
<Link to="/news/edit"><button>Добавить новость</button></Link> <Link to="/news/edit"><button>Добавить новость</button></Link>
<NewsBoard data={news} tegs={tegs} onUpdate={handleUpdate} onDelete={handleDelete} /> <NewsBoard data={news} tags={tags} onUpdate={handleUpdate} onDelete={handleDelete} />
</div> </div>
) )
} }

View File

@@ -1,9 +1,9 @@
export default function NewsBoard({ data, tegs, onUpdate, onDelete}) { export default function NewsBoard({ data, tags, onUpdate, onDelete}) {
const body = data?.map((news) => { const body = data?.map((news) => {
return ( return (
<div className="newsItem"> <div className="newsItem" key={news.id}>
<p className="pname">{news.name}</p> <p className="pname">{news.name}</p>
<p className="pteg">{tegs?.find((teg) => teg.id === news.tegId).name}</p> <p className="ptag">{tags?.find((tag) => tag.id === news.tagId).name}</p>
<p>{news.bdate}</p> <p>{news.bdate}</p>
<p>{news.description}</p> <p>{news.description}</p>
<div className="buttonsDiv"> <div className="buttonsDiv">

View File

@@ -1,17 +1,17 @@
import { useParams } from "react-router-dom" import { useParams } from "react-router-dom"
import useNewsTeg from "../Hooks/NewsTegHook" import useNewsTag from "../Hooks/NewsTagHook"
import { useNews } from "../Hooks/NewsHook" import { useNews } from "../Hooks/NewsHook"
const newsModel = { const newsModel = {
name: ["Название", "text"], name: ["Название", "text"],
tegId: ["Тег", "text"], tagId: ["Тег", "text"],
bdate: ["Дата", "date"], bdate: ["Дата", "date"],
description: ["Описание", "text"] description: ["Описание", "text"]
} }
export default function NewsForm() { export default function NewsForm() {
const params = useParams() const params = useParams()
const tegs = useNewsTeg() const tags = useNewsTag()
const { news, updateNews, saveNews, clearNews } = useNews(params.newsId) const { news, updateNews, saveNews, clearNews } = useNews(params.newsId)
async function handleSave(event) { async function handleSave(event) {
@@ -19,20 +19,18 @@ export default function NewsForm() {
event.stopPropagation() event.stopPropagation()
try { try {
await saveNews() await saveNews()
setError(false)
} }
catch (err) { catch (err) {
setError(err) console.log(err)
} }
} }
function handleChange(event) { function handleChange(event) {
console.log(event.target.name, event.target.value)
updateNews(event.target.name, event.target.value) updateNews(event.target.name, event.target.value)
} }
const inputs = Object.keys(newsModel).map((field) => { const inputs = Object.keys(newsModel).map((field) => {
if (field === "tegId") return if (field === "tagId") return
return ( return (
<div key={field} className="input"> <div key={field} className="input">
@@ -48,10 +46,10 @@ export default function NewsForm() {
); );
}); });
const tegOptions = tegs?.map((teg) => { const tagOptions = tags?.map((tag) => {
return ( return (
<option key={teg.id} value={teg.id}> <option key={tag.id} value={tag.id}>
{teg.name} {tag.name}
</option> </option>
); );
}); });
@@ -60,15 +58,15 @@ export default function NewsForm() {
<form className="card" onSubmit={handleSave}> <form className="card" onSubmit={handleSave}>
{inputs} {inputs}
<div className="input"> <div className="input">
<label htmlFor="tegId">Тег:</label> <label htmlFor="tagId">Тег:</label>
<select <select
id="tegId" id="tagId"
name="tegId" name="tagId"
value={news === null ? 0 : news.tegId} value={news === null ? 0 : news.tagId}
onChange={handleChange} onChange={handleChange}
> >
<option value="">Выберите тег</option> <option value="">Выберите тег</option>
{tegOptions} {tagOptions}
</select> </select>
</div> </div>
<div> <div>

View File

@@ -3,7 +3,7 @@ export default function ContactsPage() {
<> <>
<h1>Список контактов:</h1> <h1>Список контактов:</h1>
<ul> <ul>
<li>Телефон: <strong class="numb">8-800-476-92-84</strong></li> <li>Телефон: <strong className="numb">8-800-476-92-84</strong></li>
<li>E-mail: <strong>info@ulchu.ru</strong></li> <li>E-mail: <strong>info@ulchu.ru</strong></li>
<li>Адрес: 432027, г. Ульяновск, ул. Северный Венец, д. 32</li> <li>Адрес: 432027, г. Ульяновск, ул. Северный Венец, д. 32</li>
<li>Официальный телеграмм канал: <strong>https://t.me/UlCHU</strong></li> <li>Официальный телеграмм канал: <strong>https://t.me/UlCHU</strong></li>

View File

@@ -2,7 +2,7 @@ export default function EducationPage() {
return ( return (
<> <>
<h1>Доступные направления обучения: </h1> <h1>Доступные направления обучения: </h1>
<div class="educItem"> <div className="educItem">
<p>Экономика и управление:</p> <p>Экономика и управление:</p>
<ul> <ul>
<li>Управление предприятиями</li> <li>Управление предприятиями</li>
@@ -11,7 +11,7 @@ export default function EducationPage() {
<li>Предпринемательская деятельность</li> <li>Предпринемательская деятельность</li>
</ul> </ul>
</div> </div>
<div class="educItem"> <div className="educItem">
<p>Информационные технологии:</p> <p>Информационные технологии:</p>
<ul> <ul>
<li>Программная инженерия</li> <li>Программная инженерия</li>
@@ -21,7 +21,7 @@ export default function EducationPage() {
<li>Веб-дизайнер</li> <li>Веб-дизайнер</li>
</ul> </ul>
</div> </div>
<div class="educItem"> <div className="educItem">
<p>Гуманитарные науки:</p> <p>Гуманитарные науки:</p>
<ul> <ul>
<li>Психология</li> <li>Психология</li>
@@ -31,7 +31,7 @@ export default function EducationPage() {
<li>Журналист</li> <li>Журналист</li>
</ul> </ul>
</div> </div>
<div class="educItem"> <div className="educItem">
<p>Международные отношения и право:</p> <p>Международные отношения и право:</p>
<ul> <ul>
<li>Правоведение</li> <li>Правоведение</li>
@@ -39,7 +39,7 @@ export default function EducationPage() {
<li>Международный бизнес</li> <li>Международный бизнес</li>
</ul> </ul>
</div> </div>
<div class="educItem"> <div className="educItem">
<p>Экология и устойчивое развитие:</p> <p>Экология и устойчивое развитие:</p>
<ul> <ul>
<li>Специалист по охране окружающей среды</li> <li>Специалист по охране окружающей среды</li>