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",
"type": "module",
"scripts": {
"start": "npm-run-all --parallel backend vite",
"start": "npm-run-all --parallel vite",
"vite": "vite",
"build": "vite build",
"serve": "http-server -p 3000 ./dist/",
"backend": "json-server database/data.json -p 5174",
"prod": "npm-run-all build --parallel backend serve",
"prod": "npm-run-all build --parallel",
"lint": "eslint ."
},
"dependencies": {

View File

@@ -39,7 +39,7 @@
color: #000000;
}
.pteg {
.ptag {
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) => {
try {

View File

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

View File

@@ -21,8 +21,7 @@ export const useNews = (id) => {
} else {
await updateItem(PATH, newsId, news);
}
const result = await getNews(newsId);
setNews(result);
getNews(newsId).then((value) => setNews(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");
}
await deleteItem(PATH, id)
const newNewss = getNews()
setNews(newNewss)
getNews().then((value) => setNews(value))
}
return { news, deleteNews }

View File

@@ -1,12 +1,12 @@
import { Link, useNavigate } from "react-router-dom"
import NewsBoard from "./NewsBoard/NewsBoard"
import useNewsTeg from "./Hooks/NewsTegHook"
import useNewsTag from "./Hooks/NewsTagHook"
import useNewss from "./Hooks/NewssHook"
export default function News() {
const navigate = useNavigate()
const { news, deleteNews } = useNewss()
const tegs = useNewsTeg()
const tags = useNewsTag()
function handleUpdate(id) { navigate(`/news/edit/${id}`) }
function handleDelete(id) { deleteNews(id) }
@@ -14,7 +14,7 @@ export default function News() {
return (
<div>
<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>
)
}

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) => {
return (
<div className="newsItem">
<div className="newsItem" key={news.id}>
<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.description}</p>
<div className="buttonsDiv">

View File

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

View File

@@ -3,7 +3,7 @@ export default function ContactsPage() {
<>
<h1>Список контактов:</h1>
<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>Адрес: 432027, г. Ульяновск, ул. Северный Венец, д. 32</li>
<li>Официальный телеграмм канал: <strong>https://t.me/UlCHU</strong></li>

View File

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