Merge branch 'main' of https://git.zetcraft.ru/CyberBloom/OgeetoCaseCyberGarden
This commit is contained in:
commit
e756a3ab23
12
package-lock.json
generated
12
package-lock.json
generated
@ -16,7 +16,11 @@
|
||||
"@mui/styled-engine-sc": "^6.0.0-alpha.9",
|
||||
"@mui/x-date-pickers": "^6.18.6",
|
||||
"axios": "^1.6.2",
|
||||
<<<<<<< Updated upstream
|
||||
"dayjs": "^1.11.10",
|
||||
=======
|
||||
"js-cookie": "^3.0.5",
|
||||
>>>>>>> Stashed changes
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-router-dom": "^6.21.1",
|
||||
@ -3657,6 +3661,14 @@
|
||||
"set-function-name": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/js-cookie": {
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz",
|
||||
"integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==",
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
}
|
||||
},
|
||||
"node_modules/js-tokens": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
|
||||
|
@ -18,7 +18,11 @@
|
||||
"@mui/styled-engine-sc": "^6.0.0-alpha.9",
|
||||
"@mui/x-date-pickers": "^6.18.6",
|
||||
"axios": "^1.6.2",
|
||||
<<<<<<< Updated upstream
|
||||
"dayjs": "^1.11.10",
|
||||
=======
|
||||
"js-cookie": "^3.0.5",
|
||||
>>>>>>> Stashed changes
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-router-dom": "^6.21.1",
|
||||
|
@ -1,10 +1,13 @@
|
||||
import Header from "../Header";
|
||||
import styles from "./style.module.scss";
|
||||
import TableMeets from '../TableMeets/TableMeets'
|
||||
import Home from "../Home/Home";
|
||||
// import FetchUtils from "../utils/FetchUtils";
|
||||
import EditForm from "../edit/EditForm";
|
||||
import PostForm from "../post/PostForm";
|
||||
// import EditForm from "../edit/EditMeetsForm";
|
||||
import PostForm from "../post/Meets";
|
||||
import Users from "../post/Users";
|
||||
// import User from "../get/User";
|
||||
import Questions from "../post/Questions";
|
||||
import { GetQuestions } from "../get/Questions";
|
||||
|
||||
|
||||
import muza from '../../img/homePage/muza.png';
|
||||
const APIURL = ''
|
||||
@ -69,10 +72,16 @@ const HomePage = () => {
|
||||
<div className={styles.cards__container}>
|
||||
<div className={styles.card}></div>
|
||||
</div>
|
||||
<Home></Home>
|
||||
{/* <Questions></Questions> */}
|
||||
{/* <Home></Home> */}
|
||||
{/* <FetchUtils></FetchUtils> */}
|
||||
{/* <PostForm /> */}
|
||||
{/* <EditForm /> */}
|
||||
{/* <Users></Users> */}
|
||||
{/* <User></User> */}
|
||||
{/* <GetQuestions></GetQuestions> */}
|
||||
<Users></Users>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
|
@ -3,10 +3,9 @@ import styles from './style.module.scss';
|
||||
import clock from '../../img/MeetPage/Clock.png';
|
||||
import globe from '../../img/MeetPage/Globe.png';
|
||||
import avatar from '../../img/MeetPage/avatar.png';
|
||||
// import { HttpApiMethods } from '../utils/FetchUtils.jsx';
|
||||
import {useState} from 'react'
|
||||
import { style } from "@mui/system";
|
||||
import Card from "../Card";
|
||||
// import Card from "../Card";
|
||||
import Grid from '@mui/material/Grid';
|
||||
import Box from '@mui/material/Box';
|
||||
|
||||
|
@ -1,71 +1,71 @@
|
||||
import React from 'react';
|
||||
import './style.css'
|
||||
import styled from 'styled-components';
|
||||
import { HttpApiMethods } from '../utils/FetchUtils';
|
||||
import {useState} from 'react'
|
||||
import EditForm from '../post/PostForm';
|
||||
import Grid from '@mui/material/Grid';
|
||||
import Card from '../Card';
|
||||
import Box from '@mui/material/Box';
|
||||
// import React from 'react';
|
||||
// import './style.css'
|
||||
// import styled from 'styled-components';
|
||||
// // import { HttpApiMethods } from '../utils/FetchUtils';
|
||||
// import {useState} from 'react'
|
||||
// import EditForm from '../post/Meets';
|
||||
// import Grid from '@mui/material/Grid';
|
||||
// import Card from '../Card';
|
||||
// import Box from '@mui/material/Box';
|
||||
|
||||
function extractDateTime(dateString) {
|
||||
const dateTime = new Date(dateString);
|
||||
const date = dateTime.toLocaleDateString();
|
||||
const time = dateTime.toLocaleTimeString();
|
||||
// function extractDateTime(dateString) {
|
||||
// const dateTime = new Date(dateString);
|
||||
// const date = dateTime.toLocaleDateString();
|
||||
// const time = dateTime.toLocaleTimeString();
|
||||
|
||||
return { date, time };
|
||||
}
|
||||
// return { date, time };
|
||||
// }
|
||||
|
||||
const httpApiMethods = new HttpApiMethods()
|
||||
// const httpApiMethods = new HttpApiMethods()
|
||||
|
||||
const meets = await httpApiMethods.GetMeetings()
|
||||
// const meets = await httpApiMethods.GetMeetings()
|
||||
|
||||
|
||||
const Home = () => {
|
||||
const [count, setCount] = useState(7)
|
||||
// const Home = () => {
|
||||
// const [count, setCount] = useState(7)
|
||||
|
||||
const filterMeet = meets.filter( (item, index) => index <= count )
|
||||
const allMeets = () => {
|
||||
setCount(meets.length)
|
||||
}
|
||||
return (
|
||||
<>
|
||||
<Box sx={{ flexGrow: 1, display: 'flex', justifyContent: 'flex-end', alignItems:'center'}}>
|
||||
<Grid container sx={{width: '96%'}}>
|
||||
// const filterMeet = meets.filter( (item, index) => index <= count )
|
||||
// const allMeets = () => {
|
||||
// setCount(meets.length)
|
||||
// }
|
||||
// return (
|
||||
// <>
|
||||
// <Box sx={{ flexGrow: 1, display: 'flex', justifyContent: 'flex-end', alignItems:'center'}}>
|
||||
// <Grid container sx={{width: '96%'}}>
|
||||
|
||||
|
||||
{Array.isArray(meets) ? (
|
||||
filterMeet.map((item, index) => (
|
||||
// {Array.isArray(meets) ? (
|
||||
// filterMeet.map((item, index) => (
|
||||
|
||||
|
||||
<Grid item sm={6} xl={3} md={6} lg={4} key={index}>
|
||||
<div className='event_card' >
|
||||
<div className="event-card__photo"><img className='img' src={httpApiMethods.APIURL_FILES + item.speackerImage} alt="{item.speackerImage}" /></div>
|
||||
<div className="taggs">
|
||||
<div className='tagged'>{item.tags}</div>
|
||||
<div className="feautures">{item.type}</div>
|
||||
</div>
|
||||
<h4 className="event-card__title">{item.title}</h4>
|
||||
<p className="event-card__date">{extractDateTime(item.time).date}, в {extractDateTime(item.time).time} по Московскому времени</p>
|
||||
</div>
|
||||
</Grid>
|
||||
// <Grid item sm={6} xl={3} md={6} lg={4} key={index}>
|
||||
// <div className='event_card' >
|
||||
// <div className="event-card__photo"><img className='img' src={httpApiMethods.APIURL_FILES + item.speackerImage} alt="{item.speackerImage}" /></div>
|
||||
// <div className="taggs">
|
||||
// <div className='tagged'>{item.tags}</div>
|
||||
// <div className="feautures">{item.type}</div>
|
||||
// </div>
|
||||
// <h4 className="event-card__title">{item.title}</h4>
|
||||
// <p className="event-card__date">{extractDateTime(item.time).date}, в {extractDateTime(item.time).time} по Московскому времени</p>
|
||||
// </div>
|
||||
// </Grid>
|
||||
|
||||
|
||||
|
||||
))
|
||||
) : (
|
||||
<p>Неверный тип данных с сервера!</p>
|
||||
)}
|
||||
{/* <EditForm></EditForm> */}
|
||||
</Grid>
|
||||
</Box>
|
||||
<div className='allButton__container'>
|
||||
<button onClick={allMeets} className='allButton'>Все мероприятия</button>
|
||||
</div>
|
||||
</>
|
||||
// ))
|
||||
// ) : (
|
||||
// <p>Неверный тип данных с сервера!</p>
|
||||
// )}
|
||||
// {/* <EditForm></EditForm> */}
|
||||
// </Grid>
|
||||
// </Box>
|
||||
// <div className='allButton__container'>
|
||||
// <button onClick={allMeets} className='allButton'>Все мероприятия</button>
|
||||
// </div>
|
||||
// </>
|
||||
|
||||
|
||||
);
|
||||
}
|
||||
// );
|
||||
// }
|
||||
|
||||
export default Home;
|
||||
// export default Home;
|
||||
|
11
src/components/delete/Reactions.jsx
Normal file
11
src/components/delete/Reactions.jsx
Normal file
@ -0,0 +1,11 @@
|
||||
import React from 'react';
|
||||
|
||||
const DeleteReactions = () => {
|
||||
return (
|
||||
<div>
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default DeleteReactions;
|
@ -1,7 +1,7 @@
|
||||
import React, { useRef, useState, useEffect } from 'react';
|
||||
import { HttpApiMethods } from '../utils/FetchUtils';
|
||||
|
||||
const EditForm = () => {
|
||||
const EditMeetsForm = () => {
|
||||
const formRef = useRef(null);
|
||||
const [dataIsLoad, setDataIsLoad] = useState(false);
|
||||
const httpApiMethods = new HttpApiMethods();
|
||||
@ -13,14 +13,14 @@ const EditForm = () => {
|
||||
const updatedMeets = await httpApiMethods.EditMeetings(formData);
|
||||
};
|
||||
|
||||
// const handleData = (data) => {
|
||||
// if (Array.isArray(data) && data.length > 0) {
|
||||
// setData(data);
|
||||
// } else {
|
||||
// setData([]);
|
||||
// console.error('Неверный тип данных с сервера!');
|
||||
// }
|
||||
// };
|
||||
const handleData = (data) => {
|
||||
if (Array.isArray(data) && data.length > 0) {
|
||||
setData(data);
|
||||
} else {
|
||||
setData([]);
|
||||
console.error('Неверный тип данных с сервера!');
|
||||
}
|
||||
};
|
||||
|
||||
const fetchData = async () => {
|
||||
try {
|
||||
@ -41,10 +41,9 @@ const EditForm = () => {
|
||||
};
|
||||
|
||||
const handleChange = (event) => {
|
||||
setSelectedData({
|
||||
...selectedData,
|
||||
[event.target.name]: event.target.value
|
||||
});
|
||||
setSelectedId(event.target.value);
|
||||
const selected = data.find((item) => item.id === event.target.value);
|
||||
setSelectedData(selected);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
@ -60,23 +59,30 @@ const EditForm = () => {
|
||||
<h2>Edit</h2>
|
||||
<div>{dataIsLoad ? "Данные успешно загружены" : ""}</div>
|
||||
|
||||
<ul>
|
||||
{Array.isArray(data) && data.length > 0 ? (
|
||||
data.map((item, index) => (
|
||||
<button style={{border: '1px solid black'}} onClick={() => handleDataClick(item.id)} key={index}>
|
||||
{/* {item.id} */}
|
||||
<div>{item.title}</div>
|
||||
</button>
|
||||
))
|
||||
) : (
|
||||
<p>Неверный тип данных с сервера!</p>
|
||||
)}
|
||||
</ul>
|
||||
{/* автозаполнение инпутов */}
|
||||
{selectedData && (
|
||||
<>
|
||||
<ul>
|
||||
{Array.isArray(data) && data.length > 0 ? (
|
||||
data.map((item, index) => (
|
||||
<button style={{ border: '1px solid black' }} onClick={() => handleDataClick(item.id)} key={index}>
|
||||
{/* {item.id} */}
|
||||
<div>{item.title}</div>
|
||||
</button>
|
||||
))
|
||||
) : (
|
||||
<p>Неверный тип данных с сервера!</p>
|
||||
)}
|
||||
</ul>
|
||||
{/* автозаполнение инпутов */}
|
||||
{selectedData && (
|
||||
<>
|
||||
<form ref={formRef}>
|
||||
<input type="text" placeholder='id' name='id' value={selectedData.id} onChange={handleChange} />
|
||||
<select name="id" value={selectedData.id} onChange={handleChange}>
|
||||
{data.map((item) => (
|
||||
<option key={item.id} value={item.id}>
|
||||
{item.id}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
{/* <input type="text" placeholder='id' name='id' value={selectedData.id} onChange={handleChange} /> */}
|
||||
<input type="text" placeholder='name' name='title' value={selectedData.title} onChange={handleChange} />
|
||||
<input type="text" placeholder='time' name='time' value={selectedData.time} onChange={handleChange} />
|
||||
<input type="text" placeholder='theme' name='theme' value={selectedData.theme} onChange={handleChange} />
|
||||
@ -92,12 +98,12 @@ const EditForm = () => {
|
||||
<input type="text" placeholder='placeAdress' name='placeAdress' value={selectedData.placeAdress} onChange={handleChange} />
|
||||
<input type="text" placeholder='duration' name='duration' value={selectedData.duration} onChange={handleChange} />
|
||||
<button onClick={post}>Edit</button>
|
||||
</form>
|
||||
</>
|
||||
)}
|
||||
</form>
|
||||
</>
|
||||
)}
|
||||
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default EditForm;
|
||||
export default EditMeetsForm;
|
11
src/components/edit/EditQuestions.jsx
Normal file
11
src/components/edit/EditQuestions.jsx
Normal file
@ -0,0 +1,11 @@
|
||||
import React from 'react';
|
||||
|
||||
const EditQuestions = () => {
|
||||
return (
|
||||
<div>
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default EditQuestions;
|
11
src/components/edit/EditReviews.jsx
Normal file
11
src/components/edit/EditReviews.jsx
Normal file
@ -0,0 +1,11 @@
|
||||
import React from 'react';
|
||||
|
||||
const EditReviews = () => {
|
||||
return (
|
||||
<div>
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default EditReviews;
|
11
src/components/edit/EditUsers.jsx
Normal file
11
src/components/edit/EditUsers.jsx
Normal file
@ -0,0 +1,11 @@
|
||||
import React from 'react';
|
||||
|
||||
const EditUsers = () => {
|
||||
return (
|
||||
<div>
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default EditUsers;
|
82
src/components/get/Meets.jsx
Normal file
82
src/components/get/Meets.jsx
Normal file
@ -0,0 +1,82 @@
|
||||
import React from 'react';
|
||||
import './style.css'
|
||||
import styled from 'styled-components';
|
||||
// import { HttpApiMethods } from '../utils/FetchUtils';
|
||||
import {useState} from 'react'
|
||||
import EditMeetsForm from '../edit/EditMeetsForm';
|
||||
import Grid from '@mui/material/Grid';
|
||||
// import Card from '../Card';
|
||||
import Box from '@mui/material/Box';
|
||||
|
||||
|
||||
|
||||
function extractDateTime(dateString) {
|
||||
const dateTime = new Date(dateString);
|
||||
const date = dateTime.toLocaleDateString();
|
||||
const time = dateTime.toLocaleTimeString();
|
||||
|
||||
return { date, time };
|
||||
}
|
||||
|
||||
const httpApiMethods = new HttpApiMethods()
|
||||
|
||||
const meets = await httpApiMethods.GetMeetings()
|
||||
|
||||
|
||||
|
||||
export const MeetsGetByID = () => {
|
||||
return (
|
||||
<div>
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
const GetMeets = () => {
|
||||
const [count, setCount] = useState(7)
|
||||
|
||||
const filterMeet = meets.filter( (item, index) => index <= count )
|
||||
const allMeets = () => {
|
||||
setCount(meets.length)
|
||||
}
|
||||
return (
|
||||
<>
|
||||
<Box sx={{ flexGrow: 1, display: 'flex', justifyContent: 'flex-end', alignItems:'center'}}>
|
||||
<Grid container sx={{width: '96%'}}>
|
||||
|
||||
|
||||
{Array.isArray(meets) ? (
|
||||
filterMeet.map((item, index) => (
|
||||
|
||||
|
||||
<Grid item sm={6} xl={3} md={6} lg={4} key={index}>
|
||||
<div className='event_card' >
|
||||
<div className="event-card__photo"><img className='img' src={httpApiMethods.APIURL_FILES + item.speackerImage} alt="{item.speackerImage}" /></div>
|
||||
<div className="taggs">
|
||||
<div className='tagged'>{item.tags}</div>
|
||||
<div className="feautures">{item.type}</div>
|
||||
</div>
|
||||
<h4 className="event-card__title">{item.title}</h4>
|
||||
<p className="event-card__date">{extractDateTime(item.time).date}, в {extractDateTime(item.time).time} по Московскому времени</p>
|
||||
</div>
|
||||
</Grid>
|
||||
|
||||
|
||||
|
||||
))
|
||||
) : (
|
||||
<p>Неверный тип данных с сервера!</p>
|
||||
)}
|
||||
{/* <EditForm></EditForm> */}
|
||||
</Grid>
|
||||
</Box>
|
||||
<div className='allButton__container'>
|
||||
<button onClick={allMeets} className='allButton'>Все мероприятия</button>
|
||||
</div>
|
||||
</>
|
||||
|
||||
|
||||
);
|
||||
}
|
||||
|
||||
export default GetMeets;
|
53
src/components/get/Questions.jsx
Normal file
53
src/components/get/Questions.jsx
Normal file
@ -0,0 +1,53 @@
|
||||
import React from 'react';
|
||||
import { HttpApiMethods } from '../utils/FetchUtils';
|
||||
|
||||
const httpApiMethods = new HttpApiMethods
|
||||
|
||||
|
||||
|
||||
|
||||
export const GetQuestions = async () => {
|
||||
const questions = await httpApiMethods.GetQuestions()
|
||||
|
||||
return (
|
||||
<div>
|
||||
<div>
|
||||
{Array.isArray(questions) ? (
|
||||
questions.map((item, index) => (
|
||||
<div key={index}>
|
||||
<div>{item.id}</div>
|
||||
<div>{item.text}</div>
|
||||
<div>{item.meetingId}</div>
|
||||
<div>{item.userId}</div>
|
||||
</div>
|
||||
))
|
||||
) : (
|
||||
<p>Неверный тип данных с сервера!</p>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
const GetQuestionsByID = async (id) => {
|
||||
const question = await httpApiMethods.GetByIDQuestions(id)
|
||||
|
||||
return (
|
||||
<div>
|
||||
{Array.isArray(question) ? (
|
||||
question.map((item, index) => (
|
||||
<div key={index}>
|
||||
<div>{item.id}</div>
|
||||
<div>{item.text}</div>
|
||||
<div>{item.meetingId}</div>
|
||||
<div>{item.userId}</div>
|
||||
</div>
|
||||
))
|
||||
) : (
|
||||
<p>Неверный тип данных с сервера!</p>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default GetQuestionsByID;
|
19
src/components/get/Reactions.jsx
Normal file
19
src/components/get/Reactions.jsx
Normal file
@ -0,0 +1,19 @@
|
||||
import React from 'react';
|
||||
|
||||
export const GetByIDReactions = () => {
|
||||
return (
|
||||
<div>
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
const getReactions = () => {
|
||||
return (
|
||||
<div>
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Reactions;
|
19
src/components/get/Reviews.jsx
Normal file
19
src/components/get/Reviews.jsx
Normal file
@ -0,0 +1,19 @@
|
||||
import React from 'react';
|
||||
|
||||
export const GetReviews = () => {
|
||||
return (
|
||||
<div>
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
const GetReviewsByID = () => {
|
||||
return (
|
||||
<div>
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default GetReviewsByID;
|
36
src/components/get/User.jsx
Normal file
36
src/components/get/User.jsx
Normal file
@ -0,0 +1,36 @@
|
||||
import React from 'react';
|
||||
import { HttpApiMethods } from '../utils/FetchUtils';
|
||||
import Cookies from 'js-cookie';
|
||||
|
||||
const User = () => {
|
||||
let id = '9c69d5e7-74ec-4f92-af3a-fef7d30c55bb'
|
||||
// Cookies.set('userId')
|
||||
const user = new HttpApiMethods().GetUsers(id)
|
||||
|
||||
if (!Array.isArray(user)) {
|
||||
return <p>Неверный тип данных с сервера!</p>
|
||||
}
|
||||
|
||||
return (
|
||||
<div>
|
||||
{user.map((item, index) => (
|
||||
|
||||
<div key={index}>
|
||||
<p>{item.id}</p>
|
||||
<img src={item.avatarUrl} alt={item.avatarUrl}/>
|
||||
<p>{item.fio}</p>
|
||||
<p>{item.specialities}</p>
|
||||
<a>{item.telegramBotUrl}</a>
|
||||
<p>{item.level}</p>
|
||||
<p>{item.userName}</p>
|
||||
<p>{item.normalizedUserName}</p>
|
||||
<p>{item.email}</p>
|
||||
<p>{item.phoneNumber}</p>
|
||||
<p>{item.id}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default User;
|
13
src/components/post/PostReviews.jsx
Normal file
13
src/components/post/PostReviews.jsx
Normal file
@ -0,0 +1,13 @@
|
||||
import React from 'react';
|
||||
|
||||
const PostReviews = () => {
|
||||
|
||||
|
||||
return (
|
||||
<div>
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default PostReviews;
|
51
src/components/post/Questions.jsx
Normal file
51
src/components/post/Questions.jsx
Normal file
@ -0,0 +1,51 @@
|
||||
import React, { useRef, useState } from 'react';
|
||||
import { HttpApiMethods } from '../utils/FetchUtils';
|
||||
import Cookies from 'js-cookie';
|
||||
|
||||
const Questions = () => {
|
||||
const formRef = useRef(null);
|
||||
const [dataIsLoad, setDataIsLoad] = useState(false);
|
||||
const [curentUser, setCurentUser] = useState(null);
|
||||
|
||||
let post = async (event) => {
|
||||
event.preventDefault();
|
||||
const httpApiMethods = new HttpApiMethods();
|
||||
const user_id = Cookies.get('userData')
|
||||
let formData = new FormData(formRef.current);
|
||||
|
||||
|
||||
|
||||
if (!formData.get('fio') || !formData.get('avatar') || !formData.get('userId') || !formData.get('text') || !formData.get('meetingId')) {
|
||||
console.error('Ошибка: Не все поля формы заполнены');
|
||||
return;
|
||||
}
|
||||
|
||||
setDataIsLoad(false);
|
||||
httpApiMethods.PostQuestions(formData).then(response => {
|
||||
console.log(response)
|
||||
setDataIsLoad(true);
|
||||
meets_id = '9c69d5e7-74ec-4f92-af3a-fef7d30c55bb'
|
||||
// let user_id = response.data.id;
|
||||
// console.log(response)
|
||||
// console.log(user_id)
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
return (
|
||||
<div>
|
||||
<h2>Создание Questions, получение ID в Cookies</h2>
|
||||
<div>{dataIsLoad ? "Данные успешно загружены" : ""}</div>
|
||||
<form ref={formRef} action=''>
|
||||
|
||||
{/* <input type="text" placeholder='userId' name={Cookies.get('userData')} /> */}
|
||||
<input type="text" placeholder='userId' name='userId' value={Cookies.get('userId')} />
|
||||
<input type="text" placeholder='text' name='text' />
|
||||
<input type="text" placeholder='meetingId' name='meetingId' value={'9c69d5e7-74ec-4f92-af3a-fef7d30c55bb'} />
|
||||
<button onClick={post}>Create</button>
|
||||
</form>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Questions;
|
13
src/components/post/UserAuth.jsx
Normal file
13
src/components/post/UserAuth.jsx
Normal file
@ -0,0 +1,13 @@
|
||||
import React from 'react';
|
||||
|
||||
const UserAuth = () => {
|
||||
|
||||
|
||||
return (
|
||||
<div>
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default UserAuth;
|
58
src/components/post/Users.jsx
Normal file
58
src/components/post/Users.jsx
Normal file
@ -0,0 +1,58 @@
|
||||
import React, { useRef, useState } from 'react';
|
||||
import { HttpApiMethods } from '../utils/FetchUtils';
|
||||
import Cookies from 'js-cookie';
|
||||
|
||||
export const PostUserModerator = () => {
|
||||
return (
|
||||
<div>
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
const Users = () => {
|
||||
const formRef = useRef(null);
|
||||
const [dataIsLoad, setDataIsLoad] = useState(false);
|
||||
const [curentUser, setCurentUser] = useState(null);
|
||||
|
||||
let post = async (event) => {
|
||||
event.preventDefault();
|
||||
const httpApiMethods = new HttpApiMethods();
|
||||
let formData = new FormData(formRef.current);
|
||||
|
||||
if (!formData.get('fio') || !formData.get('avatar') || !formData.get('username') || !formData.get('specialities') || !formData.get('telegramBotUrl')) {
|
||||
console.error('Ошибка: Не все поля формы заполнены');
|
||||
return;
|
||||
}
|
||||
|
||||
setDataIsLoad(false);
|
||||
httpApiMethods.PostUsers(formData).then(response => {
|
||||
console.log(response)
|
||||
setDataIsLoad(true);
|
||||
// let user_id = response.data.id;
|
||||
// console.log(response)
|
||||
// console.log(user_id)
|
||||
Cookies.set('userId', response.id);
|
||||
Cookies.set('token', response.token)
|
||||
// return user_id
|
||||
});
|
||||
}
|
||||
|
||||
return (
|
||||
<div>
|
||||
<h2>Создание пользователя, получение ID в Cookies</h2>
|
||||
<div>{dataIsLoad ? "Данные успешно загружены" : ""}</div>
|
||||
<form ref={formRef} action=''>
|
||||
<input type="text" placeholder='fio' name='fio' />
|
||||
<input type="file" placeholder='avatar' name='avatar' />
|
||||
<input type="text" placeholder='username' name='username' />
|
||||
<input type="text" placeholder='specialities' name='specialities' />
|
||||
<input type="text" placeholder='telegramBotUrl' name='telegramBotUrl' />
|
||||
<button onClick={post}>Create</button>
|
||||
</form>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Users;
|
0
src/components/post/postReactions.jsx
Normal file
0
src/components/post/postReactions.jsx
Normal file
@ -2,14 +2,22 @@
|
||||
import axios from "axios"
|
||||
import { useState } from "react"
|
||||
import './style.css'
|
||||
import { Cookie } from "@mui/icons-material"
|
||||
|
||||
|
||||
|
||||
export class HttpApiMethods {
|
||||
|
||||
token;
|
||||
HttpApiMethods()
|
||||
{
|
||||
token = Cookie,get('token')
|
||||
}
|
||||
// URL`s
|
||||
user_id = '17e5fc7a-8f22-4c0b-8b33-5dc3a6937561'
|
||||
APIURL = "https://cyberbloom.zetcraft.ru/api"
|
||||
APIURL_FILES = "https://cyberbloom.zetcraft.ru/api/cyber-boom-files/"
|
||||
// получение мероприятий по ID
|
||||
// получение мероприятий по ID
|
||||
GetByID = async (id) => {
|
||||
|
||||
let innerUrl = this.APIURL + `/meetings?id=${id}`
|
||||
@ -18,7 +26,12 @@ export class HttpApiMethods {
|
||||
|
||||
return response.data;
|
||||
}
|
||||
// Получение всех мероприятий
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Получение всех мероприятий
|
||||
//
|
||||
GetMeetings = async () => {
|
||||
let innerUrl = this.APIURL + `/meetings/list?offset=0&limit=20`;
|
||||
|
||||
@ -26,79 +39,218 @@ export class HttpApiMethods {
|
||||
|
||||
return response.data;
|
||||
}
|
||||
// Создание мероприятия
|
||||
// Создание мероприятия
|
||||
AddMeetings = async (data) => {
|
||||
let innerUrl = this.APIURL + `/meetings`;
|
||||
|
||||
let response = await axios.postForm(innerUrl, data);
|
||||
let response = await axios.postForm(innerUrl, data); //
|
||||
return response.data;
|
||||
|
||||
}
|
||||
// Редактирование уже существующего мероприятия
|
||||
// Редактирование уже существующего мероприятия
|
||||
EditMeetings = async (data) => {
|
||||
let innerUrl = this.APIURL + `/meetings`;
|
||||
let response = await axios.putForm(innerUrl, data);
|
||||
let response = await axios.putForm(innerUrl, data); //
|
||||
return response.data;
|
||||
}
|
||||
|
||||
// Удалить мероприятие, пока что не реализовано
|
||||
// Удалить мероприятие, пока что не реализовано
|
||||
DeleteMeetings = async (id) => {
|
||||
let innerUrl = this.APIURL + `/meetings?id=${id}`
|
||||
|
||||
const response = await axios.get(innerUrl) //
|
||||
|
||||
return response.data;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Users
|
||||
//
|
||||
PostUsers = async (data) => {
|
||||
let innerUrl = this.APIURL + `/users`
|
||||
const responce = await axios.postForm(innerUrl, data)
|
||||
return responce.data
|
||||
}
|
||||
PostUsersModerator = async (data) => {
|
||||
let innerUrl = this.APIURL + `/users/moderator`
|
||||
const responce = await axios.postForm(innerUrl, data, { headers: {"Authorization" : `Bearer ${token}`} })
|
||||
return responce.data.id
|
||||
}
|
||||
EditUsers = async (data) => {
|
||||
let innerUrl = this.APIURL + `/users`
|
||||
const responce = await axios.putForm(innerUrl, data, { headers: {"Authorization" : `Bearer ${token}`} }) //
|
||||
return responce.data.id
|
||||
}
|
||||
GetUsers = async (id) => {
|
||||
let innerUrl = this.APIURL + `/users?id=${id}`
|
||||
|
||||
const responce = await axios.get(innerUrl) //
|
||||
|
||||
return responce.data
|
||||
}
|
||||
GetUsersStats = async (id) => {
|
||||
let innerUrl = this.APIURL + `/users/stats?id=${id}`
|
||||
|
||||
const responce = await axios.get(innerUrl) //
|
||||
|
||||
return responce.data
|
||||
}
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Questions
|
||||
//
|
||||
GetByIDQuestions = async (id) => {
|
||||
|
||||
let innerUrl = this.APIURL + `/questions?id=${id}`
|
||||
|
||||
const response = await axios.get(innerUrl)
|
||||
|
||||
return response.data;
|
||||
}
|
||||
// Получение всех мероприятий
|
||||
GetQuestions = async () => {
|
||||
let innerUrl = this.APIURL + `/questions/list?offset=0&limit=20`;
|
||||
|
||||
const response = await axios.get(innerUrl);
|
||||
|
||||
return response.data;
|
||||
}
|
||||
// Создание мероприятия
|
||||
PostQuestions = async (data) => {
|
||||
let innerUrl = this.APIURL + `/questions`;
|
||||
|
||||
let response = await axios.post(innerUrl, data, { headers: {"Authorization" : `Bearer ${token}`} }); //
|
||||
return response.data;
|
||||
|
||||
}
|
||||
// Редактирование уже существующего мероприятия
|
||||
EditQuestions = async (data) => {
|
||||
let innerUrl = this.APIURL + `/questions`;
|
||||
let response = await axios.put(innerUrl, data, { headers: {"Authorization" : `Bearer ${token}`} }); //
|
||||
return response.data;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Reactions
|
||||
//
|
||||
GetByIDReactions = async (id) => {
|
||||
|
||||
let innerUrl = this.APIURL + `/reactions?id=${id}`
|
||||
|
||||
const response = await axios.get(innerUrl)
|
||||
|
||||
return response.data;
|
||||
}
|
||||
// Получение всех мероприятий
|
||||
GetReactions = async () => {
|
||||
let innerUrl = this.APIURL + `/reactions/list?offset=0&limit=20`;
|
||||
|
||||
const response = await axios.get(innerUrl);
|
||||
|
||||
return response.data;
|
||||
}
|
||||
// Создание мероприятия
|
||||
PostReactions = async (data) => {
|
||||
let innerUrl = this.APIURL + `/reactions`;
|
||||
|
||||
let response = await axios.post(innerUrl, data, { headers: {"Authorization" : `Bearer ${token}`} }); //
|
||||
return response.data;
|
||||
|
||||
}
|
||||
// Редактирование уже существующего мероприятия
|
||||
DeleteReactions = async (id) => {
|
||||
let innerUrl = this.APIURL + `/reactions?id=${id}`;
|
||||
let response = await axios.delete(innerUrl, data, { headers: {"Authorization" : `Bearer ${token}`} }); //
|
||||
return response.data;
|
||||
}
|
||||
|
||||
//
|
||||
// Reviews
|
||||
//
|
||||
GetByIDReviews = async (id) => {
|
||||
|
||||
let innerUrl = this.APIURL + `/reviews?id=${id}`
|
||||
|
||||
const response = await axios.get(innerUrl)
|
||||
|
||||
return response.data;
|
||||
}
|
||||
GetReviews = async () => {
|
||||
let innerUrl = this.APIURL + `/reviews/list?offset=0&limit=20`;
|
||||
|
||||
const response = await axios.get(innerUrl);
|
||||
|
||||
return response.data;
|
||||
}
|
||||
// Создание мероприятия
|
||||
PostReviews = async (data) => {
|
||||
let innerUrl = this.APIURL + `/reviews`;
|
||||
|
||||
let response = await axios.post(innerUrl, data, { headers: {"Authorization" : `Bearer ${token}`} }); //
|
||||
return response.data;
|
||||
|
||||
}
|
||||
// Редактирование уже существующего мероприятия
|
||||
EditReviews = async (data) => {
|
||||
let innerUrl = this.APIURL + `/reviews`;
|
||||
let response = await axios.put(innerUrl, data, { headers: {"Authorization" : `Bearer ${token}`} }); //
|
||||
return response.data;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
const httpApiMethods = new HttpApiMethods() // Создание экземпляра класса HttpApiMethods
|
||||
|
||||
const meets = httpApiMethods.GetMeetings()
|
||||
|
||||
const FetchUtils = () => {
|
||||
const FetchUtils = async () => {
|
||||
const httpApiMethods = new HttpApiMethods() // Создание экземпляра класса HttpApiMethods
|
||||
|
||||
const meets = await httpApiMethods.GetMeetings()
|
||||
const [user, setUser] = useState([])
|
||||
|
||||
// async function getData() {
|
||||
// const response = await axios.get(APIURL)
|
||||
// console.log(response.data)
|
||||
// setUser(response.data)
|
||||
// }
|
||||
// async function getData() {
|
||||
// const response = await axios.get()
|
||||
// console.log(response.data)
|
||||
// setUser(response.data)
|
||||
// }
|
||||
|
||||
// const removeList = () => {
|
||||
// setUser([])
|
||||
const removeList = () => {
|
||||
setUser([])
|
||||
}
|
||||
|
||||
// return (
|
||||
// <>
|
||||
// <button onClick={getData}>Click to Get Data</button>
|
||||
// <button onClick={removeList}>Click to Remove Data Listing</button>
|
||||
// {/* Mapping of data */}
|
||||
// <div>
|
||||
// {/* {Array.isArray(meets) ? (
|
||||
// <ul>
|
||||
// {meets.map((item) => (
|
||||
// <ol key={item.id}>
|
||||
// <li>{item.title}</li>
|
||||
// <li>{item.time}</li>
|
||||
// <li>{item.speakerName}</li>
|
||||
// <li>{item.speackerImage}</li>
|
||||
// <li>{item.splecializations}</li>
|
||||
// <li>{item.type}</li>
|
||||
// <li>{item.speakerTelephone}</li>
|
||||
// <li>{item.speakerEmail}</li>
|
||||
// <li>{item.tags}</li>
|
||||
// <li>{item.videoUrl}</li>
|
||||
// </ol>
|
||||
// ))}
|
||||
// </ul>
|
||||
// ) : (
|
||||
// <p>Bad data type from server!</p>
|
||||
// )} */}
|
||||
// </div>
|
||||
// </>
|
||||
// );
|
||||
// }
|
||||
// export default FetchUtils;
|
||||
return (
|
||||
<>
|
||||
<button onClick={getData}>Click to Get Data</button>
|
||||
<button onClick={removeList}>Click to Remove Data Listing</button>
|
||||
{/* Mapping of data */}
|
||||
<div>
|
||||
{Array.isArray(meets) ? (
|
||||
<ul>
|
||||
{meets.map((item) => (
|
||||
<ol key={item.id}>
|
||||
<li>{item.title}</li>
|
||||
<li>{item.time}</li>
|
||||
<li>{item.speakerName}</li>
|
||||
<li>{item.speackerImage}</li>
|
||||
<li>{item.splecializations}</li>
|
||||
<li>{item.type}</li>
|
||||
<li>{item.speakerTelephone}</li>
|
||||
<li>{item.speakerEmail}</li>
|
||||
<li>{item.tags}</li>
|
||||
<li>{item.videoUrl}</li>
|
||||
</ol>
|
||||
))}
|
||||
</ul>
|
||||
) : (
|
||||
<p>Bad data type from server!</p>
|
||||
)}
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
export default FetchUtils;
|
Loading…
x
Reference in New Issue
Block a user