Compare commits

...

11 Commits

Author SHA1 Message Date
Mikola
c972df0656 statistics 2024-02-28 14:04:57 +03:00
Mikola
5dbf1421f0 statistics 2024-02-28 14:04:33 +03:00
9b01381af1 add alerts 2024-02-20 15:17:05 +03:00
Victor Batischev
deac5ec94d fix nav link 2024-02-15 22:22:02 +03:00
Victor Batischev
07574e98a6 loader 2024-02-15 20:28:21 +03:00
Victor Batischev
23b8c3ad8a finish layout rework 2024-02-15 18:38:10 +03:00
Victor Batischev
30c316a335 fix modal z-index 2024-02-15 17:04:30 +03:00
Victor Batischev
9a1ffb3c77 fix layout 2024-02-15 17:04:01 +03:00
Victor Batischev
1ddaf1d405 fix 2024-02-15 17:02:16 +03:00
Victor Batischev
35ad3086ba layout style fix 2024-02-15 17:01:50 +03:00
ee509a0754 Merge pull request 'trackerTask' (#21) from trackerTask into main
Reviewed-on: #21
2024-02-15 15:37:53 +03:00
34 changed files with 381 additions and 180 deletions

View File

@ -91,10 +91,10 @@ const Candidate = () => {
const { header, img, classes } = setStyles(); const { header, img, classes } = setStyles();
return ( return (
<div className="candidate__wrapper"> <div className="candidate">
<ProfileHeader /> <ProfileHeader />
<Navigation /> <Navigation />
<div className="container candidate"> <div className="container">
<ProfileBreadcrumbs <ProfileBreadcrumbs
links={[ links={[
{ name: "Главная", link: "/profile" }, { name: "Главная", link: "/profile" },

View File

@ -1,22 +1,24 @@
@use "sass:math"; @use "sass:math";
.candidate { .candidate {
padding-top: 23px; display: flex;
z-index: 0; flex-direction: column;
min-height: 100vh;
background: #f1f1f1;
&__wrapper { .container {
background: #f1f1f1; margin-top: 23px;
min-height: 100vh; display: flex;
flex-direction: column;
flex: 1;
} }
.profile-breadcrumbs { .profile-breadcrumbs {
position: relative; position: relative;
z-index: -1;
} }
.row { .row {
position: relative; position: relative;
z-index: -1;
} }
&__header { &__header {
@ -32,13 +34,11 @@
.col-xl-8 { .col-xl-8 {
position: relative; position: relative;
z-index: -1;
} }
&__main { &__main {
margin-top: 60px; margin-top: 60px;
position: relative; position: relative;
z-index: -1;
&-description { &-description {
padding-left: 16px; padding-left: 16px;

View File

@ -25,7 +25,7 @@ export const AuthHeader = () => {
</NavLink> </NavLink>
</li> </li>
<li> <li>
<NavLink to={"/auth"}>Кабинет разработчика</NavLink> <NavLink to={"/profile"}>Кабинет разработчика</NavLink>
</li> </li>
<li> <li>
<NavLink to={"/tracker-intro"}>Трекер</NavLink> <NavLink to={"/tracker-intro"}>Трекер</NavLink>

View File

@ -25,6 +25,7 @@
background: #ffffff; background: #ffffff;
.auth-nav { .auth-nav {
height: 35px;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
justify-content: space-between; justify-content: space-between;
@ -48,11 +49,13 @@
text-decoration: none; text-decoration: none;
} }
a:focus, a.active { a:focus,
a.active {
color: #000000; color: #000000;
} }
.candidate { .candidate {
background: transparent;
color: #1458dd; color: #1458dd;
} }
} }

View File

@ -1,6 +1,7 @@
.free-dev { .free-dev {
overflow: hidden; display: flex;
position: relative; flex-direction: column;
min-height: 100vh;
background-color: #f1f1f1; background-color: #f1f1f1;
.link { .link {
@ -28,7 +29,11 @@
} }
&_page { &_page {
margin: 24px 0 30px 0; display: flex;
flex-direction: column;
flex: 1;
color: #000000;
padding: 50px 0 0;
} }
&__title { &__title {

View File

@ -137,7 +137,7 @@ export const ModalRegistration = ({ active, setActive }) => {
<div className="button-box"> <div className="button-box">
{loader ? ( {loader ? (
<Loader style={"green"} /> <Loader />
) : ( ) : (
<BaseButton <BaseButton
onClick={async (e) => { onClick={async (e) => {

View File

@ -23,6 +23,7 @@
display: flex; display: flex;
flex-direction: column; flex-direction: column;
width: 65%; width: 65%;
align-items: center;
@media (max-width: 1106px) { @media (max-width: 1106px) {
width: 100%; width: 100%;
@ -115,6 +116,8 @@
.input-container { .input-container {
margin: 0 0 20px 0; margin: 0 0 20px 0;
width: 100%; width: 100%;
display: flex;
flex-direction: column;
} }
span { span {

View File

@ -35,8 +35,8 @@ import arrow from "assets/icons/arrows/arrowCalendar.png";
import arrowStart from "assets/icons/arrows/arrowStart.png"; import arrowStart from "assets/icons/arrows/arrowStart.png";
import arrowDown from "assets/icons/arrows/selectArrow.png"; import arrowDown from "assets/icons/arrows/selectArrow.png";
import calendarIcon from "assets/icons/calendar.svg"; import calendarIcon from "assets/icons/calendar.svg";
import close from "assets/icons/close.png";
import fileDelete from "assets/icons/closeProjectPersons.svg"; import fileDelete from "assets/icons/closeProjectPersons.svg";
import close from "assets/icons/crossWhite.svg";
import del from "assets/icons/delete.svg"; import del from "assets/icons/delete.svg";
import edit from "assets/icons/edit.svg"; import edit from "assets/icons/edit.svg";
import file from "assets/icons/fileModal.svg"; import file from "assets/icons/fileModal.svg";
@ -971,7 +971,7 @@ export const TicketFullScreen = () => {
/> />
</div> </div>
<div className="time"> <div className="time">
<img src={watch}></img> <p></p>
<p> <p>
{correctTimerTime(currentTimerCount.hours)}: {correctTimerTime(currentTimerCount.hours)}:
{correctTimerTime(currentTimerCount.minute)}: {correctTimerTime(currentTimerCount.minute)}:

View File

@ -49,8 +49,6 @@
.fullscreen-workers { .fullscreen-workers {
@media (max-width: 880px) { @media (max-width: 880px) {
background: #dff1ff;
.workers_box { .workers_box {
@media (max-width: 880px) { @media (max-width: 880px) {
flex-direction: inherit !important; flex-direction: inherit !important;

View File

@ -125,6 +125,11 @@ export const TrackerModal = ({
} }
}).then(() => { }).then(() => {
dispatch(setProjectBoardFetch(projectBoard.id)); dispatch(setProjectBoardFetch(projectBoard.id));
showNotification({
show: true,
text: "Колонка создана",
type: "success"
});
}); });
setValueColumn(""); setValueColumn("");
setActive(false); setActive(false);
@ -219,6 +224,11 @@ export const TrackerModal = ({
}).then(() => { }).then(() => {
setActive(false); setActive(false);
dispatch(editProjectName({ id: projectId, name: projectName })); dispatch(editProjectName({ id: projectId, name: projectName }));
showNotification({
show: true,
text: "Название проекта успешно изменено",
type: "success"
});
}); });
} }
@ -269,6 +279,11 @@ export const TrackerModal = ({
}).then(() => { }).then(() => {
setActive(false); setActive(false);
dispatch(editColumnName({ id: columnId, title: columnName })); dispatch(editColumnName({ id: columnId, title: columnName }));
showNotification({
show: true,
text: "Колонка создана",
type: "success"
});
}); });
} }
@ -323,6 +338,11 @@ export const TrackerModal = ({
}).then((el) => { }).then((el) => {
setActive(false); setActive(false);
setEmailWorker(""); setEmailWorker("");
showNotification({
show: true,
text: "Приглашение отправлено",
type: "success"
});
}); });
} }

View File

@ -1,6 +1,3 @@
.container {
max-width: 1160px !important;
}
.catalog { .catalog {
background: #f1f1f1; background: #f1f1f1;
height: 100%; height: 100%;
@ -14,6 +11,10 @@
} }
} }
.container {
max-width: 1160px !important;
}
.outstaffing-block__selected .outstaffing-block__img { .outstaffing-block__selected .outstaffing-block__img {
background-color: #52b70999; background-color: #52b70999;
color: #f9f9f9; color: #f9f9f9;

View File

@ -17,7 +17,7 @@
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
height: 100%; height: 100%;
z-index: 9999; z-index: 9;
max-width: 1160px; max-width: 1160px;
width: 100%; width: 100%;
margin: 0 auto; margin: 0 auto;

View File

@ -68,6 +68,11 @@ export const ProjectTicket = ({ project, index }) => {
}); });
}); });
} }
// showNotification({
// show: true,
// text: "Проект успешно удален",
// type: "success"
// });
function closeAcceptModal() { function closeAcceptModal() {
setAcceptModalOpen(false); setAcceptModalOpen(false);
@ -135,7 +140,16 @@ export const ProjectTicket = ({ project, index }) => {
<img src={edit}></img> <img src={edit}></img>
<p>редактировать</p> <p>редактировать</p>
</div> </div>
<div onClick={() => copyProjectLink(project.id)}> <div
onClick={() => {
copyProjectLink(project.id);
showNotification({
show: true,
text: "Ссылка скопирована в буфер обмена",
type: "copy"
});
}}
>
<img src={link}></img> <img src={link}></img>
<p>скопировать ссылку</p> <p>скопировать ссылку</p>
</div> </div>

View File

@ -50,7 +50,7 @@ export const SideBar = () => {
<Link to={"/auth"}>Вход для партнеров</Link> <Link to={"/auth"}>Вход для партнеров</Link>
</li> </li>
<li> <li>
<Link to={"/auth"}>Кабинет разработчика</Link> <Link to={"/profile"}>Кабинет разработчика</Link>
</li> </li>
<li> <li>
<Link to={"/tracker-intro"}>Трекер</Link> <Link to={"/tracker-intro"}>Трекер</Link>

View File

@ -5,6 +5,8 @@ import { selectUserInfo } from "@redux/quizSlice";
import { urlForLocal } from "@utils/helper"; import { urlForLocal } from "@utils/helper";
import { Loader } from "@components/common/Loader/Loader";
// import { apiRequest } from "@api/request"; // import { apiRequest } from "@api/request";
import "./quiz.scss"; import "./quiz.scss";
@ -21,7 +23,7 @@ export const HeaderQuiz = ({ header }) => {
<div className="header-quiz"> <div className="header-quiz">
<div className="header-quiz__container"> <div className="header-quiz__container">
{!userInfo ? ( {!userInfo ? (
<h2>Loading...</h2> <Loader />
) : ( ) : (
<> <>
{header && ( {header && (

View File

@ -6,6 +6,8 @@ import { selectedTest } from "@redux/quizSlice";
import { apiRequest } from "@api/request"; import { apiRequest } from "@api/request";
import { Loader } from "@components/common/Loader/Loader";
import comment from "assets/icons/comment.jpg"; import comment from "assets/icons/comment.jpg";
import "./quiz.scss"; import "./quiz.scss";
@ -24,7 +26,7 @@ export const Instruction = () => {
<div className="instruction"> <div className="instruction">
<div className="instruction__container"> <div className="instruction__container">
{!countQuestions ? ( {!countQuestions ? (
<h2>Loading...</h2> <Loader />
) : ( ) : (
<> <>
<h3 className="instruction__title quiz-title_h3"> <h3 className="instruction__title quiz-title_h3">

View File

@ -5,6 +5,8 @@ import { fetchResultTest, selectResult, selectedTest } from "@redux/quizSlice";
import { apiRequest } from "@api/request"; import { apiRequest } from "@api/request";
import { Loader } from "@components/common/Loader/Loader";
export const Results = () => { export const Results = () => {
const result = useSelector(selectResult); const result = useSelector(selectResult);
const test = useSelector(selectedTest); const test = useSelector(selectedTest);
@ -21,7 +23,7 @@ export const Results = () => {
return ( return (
<div className={"result _container"}> <div className={"result _container"}>
{!result ? ( {!result ? (
<h1 style={{ display: "block" }}>Ожидайте результата...</h1> <Loader />
) : ( ) : (
<div className="result__body"> <div className="result__body">
<div className="result__text">Благодарим за прохождение теста</div> <div className="result__text">Благодарим за прохождение теста</div>

View File

@ -566,7 +566,6 @@ $maxWidthContainer: 1123;
align-items: center; align-items: center;
width: 100%; width: 100%;
height: 100%; height: 100%;
flex-wrap: wrap;
@media (max-width: 600px) { @media (max-width: 600px) {
display: block; display: block;
} }

View File

@ -1,6 +1,16 @@
.article-blog { .article-blog {
display: flex;
flex-direction: column;
min-height: 100vh;
background: #f1f1f1; background: #f1f1f1;
.container {
max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
}
&__breadcrumbs { &__breadcrumbs {
margin-top: 30px; margin-top: 30px;

View File

@ -1,7 +1,15 @@
.auth-candidate { .auth-candidate {
overflow: hidden; display: flex;
position: relative; flex-direction: column;
background-color: #f1f1f1; min-height: 100vh;
background: #f1f1f1;
.container {
max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
}
&__start { &__start {
margin-top: 60px; margin-top: 60px;

View File

@ -1,6 +1,16 @@
.blog { .blog {
display: flex;
flex-direction: column;
min-height: 100vh;
background: #f1f1f1; background: #f1f1f1;
.container {
max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
}
&__breadcrumbs { &__breadcrumbs {
margin-top: 30px; margin-top: 30px;

View File

@ -145,9 +145,10 @@ const CatalogSpecialists = () => {
} }
]; ];
return ( return (
<section className="catalog-specialists"> <div className="catalog-specialists">
<AuthHeader /> <AuthHeader />
<div className="container catalog-specialists__wrapper"> <SideBar />
<div className="catalog-specialists__content container">
<ProfileBreadcrumbs <ProfileBreadcrumbs
links={[ links={[
{ name: "Главная", link: "/auth" }, { name: "Главная", link: "/auth" },
@ -201,9 +202,8 @@ const CatalogSpecialists = () => {
})} })}
</div> </div>
</div> </div>
<SideBar />
<Footer /> <Footer />
</section> </div>
); );
}; };

View File

@ -4,8 +4,20 @@
flex-direction: column; flex-direction: column;
min-height: 100vh; min-height: 100vh;
&__wrapper { &__content {
padding-top: 24px; display: flex;
flex-direction: column;
flex: 1;
color: #000000;
padding: 50px 0 0;
@media (max-width: 1375px) {
padding-top: 100px;
}
@media (max-width: 1000px) {
background-color: white;
}
} }
&__head { &__head {

View File

@ -1,7 +1,15 @@
.company-info { .company-info {
display: flex;
flex-direction: column;
min-height: 100vh;
background-color: #f1f1f1;
&__content { &__content {
background-color: #f1f1f1; display: flex;
padding-top: 60px; flex-direction: column;
flex: 1;
color: #000000;
padding: 50px 0 0;
@media (max-width: 1375px) { @media (max-width: 1375px) {
padding-top: 120px; padding-top: 120px;

View File

@ -83,8 +83,7 @@ export const FrequentlyAskedQuestions = () => {
<div className="frequently-asked-questions"> <div className="frequently-asked-questions">
<AuthHeader /> <AuthHeader />
<SideBar /> <SideBar />
<div className="container">
<div className="frequently-asked-questions__container container">
<ProfileBreadcrumbs <ProfileBreadcrumbs
links={[ links={[
{ name: "Главная", link: "/auth" }, { name: "Главная", link: "/auth" },

View File

@ -8,9 +8,12 @@
margin-top: 80px; margin-top: 80px;
} }
&__container { .container {
flex: 1 1 auto; display: flex;
margin: 30px 0; flex-direction: column;
flex: 1;
max-width: 1160px;
margin-top: 23px;
} }
&__about { &__about {

View File

@ -7,6 +7,9 @@
.container { .container {
max-width: 1160px; max-width: 1160px;
margin-top: 23px; margin-top: 23px;
display: flex;
flex-direction: column;
flex: 1;
@media (max-width: 570px) { @media (max-width: 570px) {
margin-top: 0; margin-top: 0;

View File

@ -225,7 +225,7 @@
&__report, &__report,
&__login { &__login {
width: 60%; width: 100%;
} }
&__report { &__report {

View File

@ -1,6 +1,15 @@
.registration-candidate { .registration-candidate {
position: relative; display: flex;
background-color: #f1f1f1; flex-direction: column;
min-height: 100vh;
background: #f1f1f1;
.container {
max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
}
&__start { &__start {
display: flex; display: flex;

View File

@ -1,9 +1,15 @@
.registration-setting { .registration-setting {
display: flex;
flex-direction: column;
min-height: 100vh;
background-color: #f1f1f1;
&__content { &__content {
background-color: #f1f1f1; display: flex;
flex-direction: column;
flex: 1;
color: #000000; color: #000000;
padding: 50px 0 0; padding: 50px 0 0;
min-height: 100vh;
@media (max-width: 1375px) { @media (max-width: 1375px) {
padding-top: 100px; padding-top: 100px;

View File

@ -1,12 +1,16 @@
import React from "react"; import React, { useEffect, useState } from "react";
import { useDispatch } from "react-redux"; import { useDispatch } from "react-redux";
import { Link } from "react-router-dom"; import { Link, useParams } from "react-router-dom";
import { setToggleTab } from "@redux/projectsTrackerSlice"; import { setToggleTab } from "@redux/projectsTrackerSlice";
import { copyProjectLink } from "@utils/helper"; import { copyProjectLink } from "@utils/helper";
import { urlForLocal } from "@utils/helper";
import { apiRequest } from "@api/request";
import { Footer } from "@components/Common/Footer/Footer"; import { Footer } from "@components/Common/Footer/Footer";
import { Loader } from "@components/Common/Loader/Loader";
import { Navigation } from "@components/Navigation/Navigation"; import { Navigation } from "@components/Navigation/Navigation";
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs"; import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader"; import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
@ -23,6 +27,21 @@ import "./statistics.scss";
const Statistics = () => { const Statistics = () => {
const dispatch = useDispatch(); const dispatch = useDispatch();
const params = useParams();
const [projectStatistic, setProjectStatistic] = useState(null);
const [projectInfo, setProjectInfo] = useState(null);
const [loader, setLoader] = useState(true);
useEffect(() => {
apiRequest(`/project/get-project?project_id=${params.id}`).then((res) => {
setProjectInfo(res);
});
apiRequest(`/project/statistic?project_id=${params.id}`).then((res) => {
setProjectStatistic(res);
setLoader(false);
});
}, []);
const teams = [ const teams = [
{ {
@ -72,135 +91,161 @@ const Statistics = () => {
/> />
<h2 className="tracker__title">Управление проектами с трекером</h2> <h2 className="tracker__title">Управление проектами с трекером</h2>
</div> </div>
<div className="tracker__tabs"> {loader ? (
<div className="tracker__tabs__head"> <Loader />
<Link ) : (
to="/profile/tracker" <div className="tracker__tabs">
className="tab active-tab" <div className="tracker__tabs__head">
onClick={() => toggleTabs(1)} <Link
> to="/profile/tracker"
<img src={project} alt="img" /> className="tab active-tab"
<p>Проекты </p> onClick={() => toggleTabs(1)}
</Link> >
<Link <img src={project} alt="img" />
to="/profile/tracker" <p>Проекты </p>
className="tab" </Link>
onClick={() => toggleTabs(2)} <Link
> to="/profile/tracker"
<img src={tasks} alt="img" /> className="tab"
<p>Все мои задачи</p> onClick={() => toggleTabs(2)}
</Link> >
<Link <img src={tasks} alt="img" />
to="/profile/tracker" <p>Все мои задачи</p>
className="tab" </Link>
onClick={() => toggleTabs(3)} <Link
> to="/profile/tracker"
<img src={archive} alt="img" /> className="tab"
<p>Архив</p> onClick={() => toggleTabs(3)}
</Link> >
</div> <img src={archive} alt="img" />
<div className="tracker__tabs__content"> <p>Архив</p>
<div className="tracker__tabs__content__wrapper statistics-body"> </Link>
<div className="statistics-header"> </div>
<div className="statistics-header__menu"> <div className="tracker__tabs__content">
<h1>Статистика проекта</h1> <div className="tracker__tabs__content__wrapper statistics-body">
<img src={link} alt="#" /> <div className="statistics-header">
<span <div className="statistics-header__menu">
className="return-text" <h1>Статистика проекта</h1>
onClick={() => copyProjectLink("62")} <img src={link} alt="#" />
> <span
ссылка на проект className="return-text"
</span> onClick={() => copyProjectLink("62")}
</div> >
ссылка на проект
<div className="statistics-header__return"> </span>
<img src={arrow} alt="#" />
<Link to={`/profile/tracker`} className="return-text">
К списку проектов
</Link>
</div>
</div>
<div className="statistics-info">
<div className="statistics-info__head">
<p>Проект: </p>
<h1>{"Разработка трекера"}</h1>
</div>
<div className="statistics-info__team">
<div className="project-info">
<div className="project-info__creator">
<span className="return-text">Создатель проекта:</span>
<div>
<p>{"Василий Тарасов"}</p>{" "}
<img src={mockAvatar} alt="#" />
</div>
</div>
<div className="project-info__tasks">
<div className="task-quantity">
<p>Открытые задачи</p>
<span className="task-quantity_open">{4}</span>
</div>
<div className="task-quantity">
<p>Задач в работе</p>
<span className="task-quantity_work">{5}</span>
</div>
<div className="task-quantity">
<p>Закрыто задач</p>
<span className="task-quantity_closed">{434}</span>
</div>
</div>
</div> </div>
<div className="list-team">
<div className="list-team__title">
<span className="return-text">Участники проекта:</span>
</div>
<div className="list-team__head">
<p>Имя</p>
<p>Почта</p>
<p>Роль</p>
<p>Статус</p>
</div>
<div className="list-team__body">
{teams.map((item) => {
return (
<>
<div className="list-team__item">
<div className="person-name">
<img src={item.avatar} alt="#" />
<p>{item.name}</p>
</div>
<div className="person-email">
<img src={emailImg} alt="#" />
<p>{item.email}</p>
</div>
<p className="person-type">{item.role}</p> <div className="statistics-header__return">
{/* <span className="status status-active"> */} <img src={arrow} alt="#" />
<span <Link to={`/profile/tracker`} className="return-text">
className={ К списку проектов
item.status </Link>
? "status status-active"
: "status status-none"
}
>
{item.status ? "Активно" : "Не активно"}
</span>
</div>
</>
);
})}
</div>
</div> </div>
<div className="add-person"> </div>
<span className="add-person__button">+</span> <div className="statistics-info">
<p>Добавить участника</p> <div className="statistics-info__head">
<p>Проект: </p>
<h1>{projectInfo?.name}</h1>
</div>
<div className="statistics-info__team">
<div className="project-info">
<div className="project-info__creator">
<span className="return-text">Создатель проекта:</span>
<div>
<p>{projectInfo?.owner_info?.fio}</p>{" "}
<img
src={
projectInfo?.owner_info?.avatar
? urlForLocal(projectInfo.owner_info.avatar)
: mockAvatar
}
alt="#"
/>
</div>
</div>
<div className="project-info__tasks">
<div className="task-quantity">
<p>Открытые задачи</p>
<span className="task-quantity_open">
{projectStatistic?.open_tasks_count}
</span>
</div>
<div className="task-quantity">
<p>Задач в работе</p>
<span className="task-quantity_work">
{projectStatistic?.task_on_work_count}
</span>
</div>
<div className="task-quantity">
<p>Закрыто задач</p>
<span className="task-quantity_closed">
{projectStatistic?.closed_task_count}
</span>
</div>
</div>
</div>
<div className="list-team">
<div className="list-team__title">
<span className="return-text">Участники проекта:</span>
</div>
<div className="list-team__head">
<p className="head__name">Имя</p>
<p className="head__email">Почта</p>
<p className="head__role">Роль</p>
<p className="head__status">Статус</p>
</div>
<div className="list-team__body">
{projectStatistic?.participants.map((person, index) => {
return (
<>
<div className="list-team__item" key={index}>
<div className="person-name">
<img
src={
person.avatar
? urlForLocal(person.avatar)
: mockAvatar
}
alt="avatar"
/>
<p>{person.username}</p>
</div>
<div className="person-email">
<img src={emailImg} alt="#" />
<p>{person.email}</p>
</div>
<p className="person-type">
{person.role ? person.role : "-"}
</p>
{/* <span className="status status-active"> */}
<span
className={
person.status
? "status status-active"
: "status status-none"
}
>
{person.status ? "Активно" : "Не активно"}
</span>
</div>
</>
);
})}
</div>
</div>
<div className="add-person">
<span className="add-person__button">+</span>
<p>Добавить участника</p>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> )}
</div> </div>
<Footer /> <Footer />
</div> </div>

View File

@ -144,6 +144,11 @@
line-height: 32px; line-height: 32px;
margin-right: 19px; margin-right: 19px;
} }
img {
max-width: 36px;
max-height: 36px;
}
} }
} }
@ -240,7 +245,7 @@
&__head { &__head {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
margin-right: 123px; margin-right: 55px;
p { p {
color: #5b6871; color: #5b6871;
@ -255,6 +260,30 @@
@media (max-width: 650px) { @media (max-width: 650px) {
display: none; display: none;
} }
.head {
&__name {
max-width: 270px;
width: 100%;
}
&__email {
max-width: 270px;
width: 100%;
}
&__role {
max-width: 168px;
width: 100%;
text-align: center;
}
&__status {
text-align: center;
max-width: 152px;
width: 100%;
}
}
} }
&__item { &__item {
@ -270,14 +299,18 @@
&-name { &-name {
display: flex; display: flex;
align-items: center; align-items: center;
width: 202px; max-width: 270px;
width: 100%;
img { img {
margin-right: 10px; margin-right: 10px;
max-width: 36px;
max-height: 36px;
} }
} }
&-email { &-email {
width: 235px; max-width: 270px;
width: 100%;
align-items: center; align-items: center;
display: flex; display: flex;
@ -292,6 +325,7 @@
&-type { &-type {
width: 168px; width: 168px;
text-align: center;
} }
@media (max-width: 850px) { @media (max-width: 850px) {

View File

@ -8,7 +8,6 @@
display: flex; display: flex;
flex-direction: column; flex-direction: column;
flex: 1; flex: 1;
color: #000000; color: #000000;
padding: 50px 0 0; padding: 50px 0 0;

View File

@ -1,9 +1,15 @@
.tracker-registration { .tracker-registration {
display: flex;
flex-direction: column;
min-height: 100vh;
background-color: #f1f1f1;
&__content { &__content {
background-color: #f1f1f1; display: flex;
flex-direction: column;
flex: 1;
color: #000000; color: #000000;
padding: 50px 0 0; padding: 50px 0 0;
min-height: 100vh;
@media (max-width: 1375px) { @media (max-width: 1375px) {
padding-top: 100px; padding-top: 100px;