From ded4dc468f43e4d5111d5091dbe2cd744e263473 Mon Sep 17 00:00:00 2001 From: cue Date: Tue, 2 Apr 2024 16:31:26 +0300 Subject: [PATCH] okey --- .gitignore | 1 + frontend/package-lock.json | 53 + frontend/package.json | 2 + frontend/src/App.tsx | 76 +- frontend/src/components/app/APIurl.ts | 4 +- .../app/Template/General/General.tsx | 6 +- .../VacancyCard/VacancyCard.module.less | 1 + .../entities/VacancyCard/VacancyCard.tsx | 2 +- frontend/src/components/pages/Admin/Admin.tsx | 4 +- .../pages/AdminEventPage/AdminEventAPI.ts | 65 + .../AdminEventPage/AdminEventPage.module.less | 37 + .../pages/AdminEventPage/AdminEventPage.tsx | 73 + .../pages/SkillTree/SkillTree.module.less | 0 .../components/pages/SkillTree/SkillTree.tsx | 9 + frontend/src/components/shared/ui/switch.tsx | 29 + frontend/src/i18n.ts | 7 +- frontend/src/orgchart.d.ts | 2704 +++++++++++++++++ frontend/src/orgchart.js | 2 + node_modules/.package-lock.json | 12 + .../@balkangraph/orgchart.js/README.md | 61 + .../@balkangraph/orgchart.js/orgchart.d.ts | 2704 +++++++++++++++++ .../@balkangraph/orgchart.js/orgchart.js | 1 + .../@balkangraph/orgchart.js/package.json | 1 + package-lock.json | 17 + package.json | 5 + 25 files changed, 5832 insertions(+), 44 deletions(-) create mode 100644 .gitignore create mode 100644 frontend/src/components/pages/AdminEventPage/AdminEventAPI.ts create mode 100644 frontend/src/components/pages/AdminEventPage/AdminEventPage.module.less create mode 100644 frontend/src/components/pages/AdminEventPage/AdminEventPage.tsx create mode 100644 frontend/src/components/pages/SkillTree/SkillTree.module.less create mode 100644 frontend/src/components/pages/SkillTree/SkillTree.tsx create mode 100644 frontend/src/components/shared/ui/switch.tsx create mode 100644 frontend/src/orgchart.d.ts create mode 100644 frontend/src/orgchart.js create mode 100644 node_modules/.package-lock.json create mode 100644 node_modules/@balkangraph/orgchart.js/README.md create mode 100644 node_modules/@balkangraph/orgchart.js/orgchart.d.ts create mode 100644 node_modules/@balkangraph/orgchart.js/orgchart.js create mode 100644 node_modules/@balkangraph/orgchart.js/package.json create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e43b0f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 5f8e88d..9cdee55 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,6 +8,7 @@ "name": "skill-hub", "version": "0.0.0", "dependencies": { + "@balkangraph/orgchart.js": "^8.14.19", "@hookform/resolvers": "^3.3.4", "@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-dropdown-menu": "^2.0.6", @@ -16,6 +17,7 @@ "@radix-ui/react-menubar": "^1.0.4", "@radix-ui/react-separator": "^1.0.3", "@radix-ui/react-slot": "^1.0.2", + "@radix-ui/react-switch": "^1.0.3", "@radix-ui/react-tabs": "^1.0.4", "@vitejs/plugin-react-swc": "^3.5.0", "autoprefixer": "^10.4.19", @@ -90,6 +92,11 @@ "node": ">=6.9.0" } }, + "node_modules/@balkangraph/orgchart.js": { + "version": "8.14.19", + "resolved": "https://registry.npmjs.org/@balkangraph/orgchart.js/-/orgchart.js-8.14.19.tgz", + "integrity": "sha512-pa4km/5mTWmMcVLBIsHcuC73s4y1La9BOx4AU9ilGetQwlAbWfrFcSU7hf8FO49otmk1AysfBhPrcBoRl2i46w==" + }, "node_modules/@esbuild/darwin-x64": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", @@ -954,6 +961,35 @@ } } }, + "node_modules/@radix-ui/react-switch": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.0.3.tgz", + "integrity": "sha512-mxm87F88HyHztsI7N+ZUmEoARGkC22YVW5CaC+Byc+HRpuvCrOBPTAnXgf+tZ/7i0Sg/eOePGdMhUKhPaQEqow==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-use-size": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-tabs": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.0.4.tgz", @@ -1054,6 +1090,23 @@ } } }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz", + "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-use-rect": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz", diff --git a/frontend/package.json b/frontend/package.json index cadf074..9b91926 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -10,6 +10,7 @@ "preview": "vite preview" }, "dependencies": { + "@balkangraph/orgchart.js": "^8.14.19", "@hookform/resolvers": "^3.3.4", "@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-dropdown-menu": "^2.0.6", @@ -18,6 +19,7 @@ "@radix-ui/react-menubar": "^1.0.4", "@radix-ui/react-separator": "^1.0.3", "@radix-ui/react-slot": "^1.0.2", + "@radix-ui/react-switch": "^1.0.3", "@radix-ui/react-tabs": "^1.0.4", "@vitejs/plugin-react-swc": "^3.5.0", "autoprefixer": "^10.4.19", diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 5195a52..1d0bc31 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -11,47 +11,53 @@ import Teams from "./components/pages/Teams/Teams"; import MyTeams from "./components/pages/MyTeams/MyTeams"; import Successful from "./components/pages/Successful/Successful"; import AdminPage from "./components/pages/Admin/Admin"; +import SkillTree from "./components/pages/SkillTree/SkillTree"; +import AdminEventPage from "./components/pages/AdminEventPage/AdminEventPage"; const router = createBrowserRouter([ - { - path: "", - element: , - children: [{ - path: "", - element: , - }] - }, - { - path: "*", - element: , - children: [{ - path: "login", - element:
, - }, - // { - // path: "teams", - // element: , - // }, - // { - // path: "my-teams", - // element: , - // }, { - path: "successful", - element: , - }] - }, + path: "", + element: , + children: [ + { + path: "", + element: + } + ] + }, + { + path: "*", + element: , + children: [ + { + path: "login", + element:
+ }, + { + path: "successful", + element: + } + ] + }, { path: "dash", element: , - children: [{ - path: "admin", - element: , - }, - ] - }, -]) - + children: [ + { + path: "eventlist", + element: + }, + { + path: "admin", + element: + }, + { + path: "skill-tree", + element: + } + ] + } + ]) function App() { return ( <> diff --git a/frontend/src/components/app/APIurl.ts b/frontend/src/components/app/APIurl.ts index 2e2eac2..0620fe9 100644 --- a/frontend/src/components/app/APIurl.ts +++ b/frontend/src/components/app/APIurl.ts @@ -1,6 +1,8 @@ -// export const API_BASE = "http://158.160.56.239/api/" +// export const API_BASE = "https://animulichki.ru/api/" // export const API_BASE = "http://212.22.79.188/api/" //2 сервер export const API_BASE = "http://localhost/api/" //3 сервер export const API_REG = "auth/signup/" export const API_CREATE_TOKEN = "auth/login/" +export const API_CREATE_EVENT = "events/" + diff --git a/frontend/src/components/app/Template/General/General.tsx b/frontend/src/components/app/Template/General/General.tsx index db56b8a..ad7132e 100644 --- a/frontend/src/components/app/Template/General/General.tsx +++ b/frontend/src/components/app/Template/General/General.tsx @@ -9,11 +9,9 @@ function General() { return (
-
-
+
-
-
+
) diff --git a/frontend/src/components/entities/VacancyCard/VacancyCard.module.less b/frontend/src/components/entities/VacancyCard/VacancyCard.module.less index 02f6726..7501813 100644 --- a/frontend/src/components/entities/VacancyCard/VacancyCard.module.less +++ b/frontend/src/components/entities/VacancyCard/VacancyCard.module.less @@ -2,4 +2,5 @@ max-width: 800px; padding: 20px; margin-bottom: 10px; + height: 200px; } \ No newline at end of file diff --git a/frontend/src/components/entities/VacancyCard/VacancyCard.tsx b/frontend/src/components/entities/VacancyCard/VacancyCard.tsx index 638f341..11caff0 100644 --- a/frontend/src/components/entities/VacancyCard/VacancyCard.tsx +++ b/frontend/src/components/entities/VacancyCard/VacancyCard.tsx @@ -17,7 +17,7 @@ const VacancyCard = () =>{

Lorem ipsum dolor sit amet consectetur. Lorem justo sit nunc commodo nam fames dui ac ullamcorper. Laoreet faucibus semper adipiscing lobortis.

- + diff --git a/frontend/src/components/pages/Admin/Admin.tsx b/frontend/src/components/pages/Admin/Admin.tsx index ccab961..7540916 100644 --- a/frontend/src/components/pages/Admin/Admin.tsx +++ b/frontend/src/components/pages/Admin/Admin.tsx @@ -4,6 +4,7 @@ import less from "./Admin.module.less" import PlayerCard from "../../entities/PlayerCard/PlayerCard" import { useTranslation } from "react-i18next" import CreateTeam from "../../widgets/CreateTeams/CreateTeams" +import { Link } from "react-router-dom" const AdminPage = () =>{ const { t } = useTranslation(); @@ -11,7 +12,8 @@ const AdminPage = () =>{
- + +
diff --git a/frontend/src/components/pages/AdminEventPage/AdminEventAPI.ts b/frontend/src/components/pages/AdminEventPage/AdminEventAPI.ts new file mode 100644 index 0000000..4fe28e0 --- /dev/null +++ b/frontend/src/components/pages/AdminEventPage/AdminEventAPI.ts @@ -0,0 +1,65 @@ +import { FormEvent } from "react"; +import { API_BASE, API_CREATE_EVENT } from "../../app/APIurl"; + +export const submitAddEvent = (e: FormEvent) => { + e.preventDefault(); + const formData = new FormData(e.currentTarget); + const formProps = Object.fromEntries(formData); + console.log(formProps) + + + fetch(`${API_BASE}${API_CREATE_EVENT}`, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(formProps) , + }) + .then(response => { + + console.log(response.status); + + if (response.ok) { + console.log('Создан:', response.headers.get('Location')); + return response.json(); + } else { + + throw new Error('Код ошибки: ' + response.status); + } + }) + .then(data => { + console.log('Успешно:', data); + }) + .catch(error => { + console.error('Возникла ошибка с созданием:', error); + }); +} + +export const eventList = () => { + + + fetch(`${API_BASE}${API_CREATE_EVENT}`, { + method: "GET", + headers: { + "Content-Type": "application/json", + }, + }) + .then(response => { + + console.log(response.status); + + if (response.ok) { + console.log('Получен:', response.headers.get('Location')); + return response.json(); + } else { + + throw new Error('Код ошибки: ' + response.status); + } + }) + .then(data => { + console.log('Успешно:', data); + }) + .catch(error => { + console.error('Возникла ошибка с получением:', error); + }); +} \ No newline at end of file diff --git a/frontend/src/components/pages/AdminEventPage/AdminEventPage.module.less b/frontend/src/components/pages/AdminEventPage/AdminEventPage.module.less new file mode 100644 index 0000000..03f64d1 --- /dev/null +++ b/frontend/src/components/pages/AdminEventPage/AdminEventPage.module.less @@ -0,0 +1,37 @@ +.main-admin{ + display: flex; + flex-direction: column; + width: 80%; + justify-content: center; + align-items: center; + gap: 50px; + margin-top: 40px; + height: 70vh; +} +.admin-event__page{ + display: flex; +} +.cont_1{ + width: 50%; + border-right-width: 1px; + height: 100vh; + padding: 20px; + +} +.cont_2{ + width: 50%; + padding: 20px; + + display: flex; + flex-direction: column; +} +.input-form{ + display: flex; + flex-direction: column; + gap: 5px; +} +.liner-block{ + display: flex; + + align-items: center; +} \ No newline at end of file diff --git a/frontend/src/components/pages/AdminEventPage/AdminEventPage.tsx b/frontend/src/components/pages/AdminEventPage/AdminEventPage.tsx new file mode 100644 index 0000000..048b45e --- /dev/null +++ b/frontend/src/components/pages/AdminEventPage/AdminEventPage.tsx @@ -0,0 +1,73 @@ +import { Input } from "../../shared/ui/input"; +import VacancyCard from "../../entities/VacancyCard/VacancyCard"; +import less from "./AdminEventPage.module.less" +import { useTranslation } from "react-i18next"; +import { Button } from "../../shared/ui/button"; +import { Textarea } from "../../shared/ui/textarea"; +import { eventList, submitAddEvent } from "./AdminEventAPI"; +import { Switch } from "../../shared/ui/switch"; +import { Label } from "../../shared/ui/label"; +import { useEffect, useState } from "react"; + + + +const AdminEventPage = () =>{ + const { t } = useTranslation(); + let wfew = JSON.stringify(eventList()); + console.log(typeof wfew); + console.log(wfew ); + + + const [events, setEvents] = useState([]); + + useEffect(() => { + fetchData(); + }, []); + + const fetchData = () => { + eventList() // Вызываем функцию eventList из файла api.ts + .then((data: Event[]) => { + setEvents(data); // Устанавливаем полученные данные в состояние + }) + .catch((error: any) => { + console.error('Произошла ошибка:', error); // Обрабатываем ошибку, если она возникла + }); + }; + + return( +
+
+
submitAddEvent(event)}> +

{t("createEvent")}

+ + + + +