Added prettier format imports
This commit is contained in:
@ -1,16 +1,17 @@
|
||||
import React, { useEffect, useRef, useState } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { auth, selectAuth, setUserInfo } from "@redux/outstaffingSlice";
|
||||
import { loading, selectIsLoading } from "@redux/loaderSlice";
|
||||
import { auth, selectAuth, setUserInfo } from "@redux/outstaffingSlice";
|
||||
import { setRole } from "@redux/roleSlice";
|
||||
|
||||
import ModalRegistration from "@components/Modal/ModalRegistration/ModalRegistration";
|
||||
import ModalErrorLogin from "@components/Modal/ModalErrorLogin/ModalErrorLogin";
|
||||
import { Loader } from "@components/Common/Loader/Loader";
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import { Loader } from "@components/Common/Loader/Loader";
|
||||
import ModalErrorLogin from "@components/Modal/ModalErrorLogin/ModalErrorLogin";
|
||||
import ModalRegistration from "@components/Modal/ModalRegistration/ModalRegistration";
|
||||
|
||||
import ellipse from "assets/icons/ellipse.png";
|
||||
|
||||
import "./authBox.scss";
|
||||
|
@ -2,16 +2,18 @@ import React, { useEffect, useState } from "react";
|
||||
import { useSelector } from "react-redux";
|
||||
import { Link, Navigate, useNavigate } from "react-router-dom";
|
||||
|
||||
import CalendarComponent from "./CalendarComponent";
|
||||
import { currentMonth } from "./calendarHelper";
|
||||
import { selectCurrentCandidate } from "@redux/outstaffingSlice";
|
||||
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { LogoutButton } from "@components/LogoutButton/LogoutButton";
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
import { selectCurrentCandidate } from "@redux/outstaffingSlice";
|
||||
|
||||
import rectangle from "assets/images/rectangle_secondPage.png";
|
||||
|
||||
import CalendarComponent from "./CalendarComponent";
|
||||
import "./calendar.scss";
|
||||
import { currentMonth } from "./calendarHelper";
|
||||
|
||||
const Calendar = () => {
|
||||
if (localStorage.getItem("role_status") !== "18") {
|
||||
|
@ -1,15 +1,13 @@
|
||||
import React, { useState, useEffect } from "react";
|
||||
import { calendarHelper, currentMonthAndDay } from "./calendarHelper";
|
||||
import moment from "moment";
|
||||
import "moment/locale/ru";
|
||||
import React, { useEffect, useState } from "react";
|
||||
|
||||
import calendarIcon from "assets/icons/calendar.svg";
|
||||
import ellipse from "assets/icons/ellipse.png";
|
||||
import rectangle from "assets/images/rectangle__calendar.png";
|
||||
import calendarIcon from "assets/icons/calendar.svg";
|
||||
|
||||
import moment from "moment";
|
||||
|
||||
import "moment/locale/ru";
|
||||
|
||||
import "./calendarComponent.scss";
|
||||
import { calendarHelper, currentMonthAndDay } from "./calendarHelper";
|
||||
|
||||
const CalendarComponent = ({ onSelect }) => {
|
||||
const [value, setValue] = useState(moment());
|
||||
|
@ -1,29 +1,30 @@
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { useParams, Link, useNavigate, Navigate } from "react-router-dom";
|
||||
import { useSelector, useDispatch } from "react-redux";
|
||||
|
||||
import SkillSection from "@components/SkillSection/SkillSection";
|
||||
import Sidebar from "@components/CandidateSidebar/CandidateSidebar";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { Navigation } from "@components/Navigation/Navigation";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
import { Link, Navigate, useNavigate, useParams } from "react-router-dom";
|
||||
|
||||
import {
|
||||
currentCandidate,
|
||||
selectCurrentCandidate,
|
||||
} from "@redux/outstaffingSlice";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
import { createMarkup } from "@utils/helper";
|
||||
import { LEVELS, SKILLS } from "@utils/constants";
|
||||
import { createMarkup } from "@utils/helper";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import Sidebar from "@components/CandidateSidebar/CandidateSidebar";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { Navigation } from "@components/Navigation/Navigation";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
import SkillSection from "@components/SkillSection/SkillSection";
|
||||
|
||||
import rightArrow from "assets/icons/arrows/arrowRight.svg";
|
||||
import gitImgItem from "assets/icons/gitItemImg.svg";
|
||||
import rectangle from "assets/images/rectangle_secondPage.png";
|
||||
import front from "assets/images/partnerProfile/front-end.webp";
|
||||
import back from "assets/images/partnerProfile/back-end.webp";
|
||||
import design from "assets/images/partnerProfile/design.webp";
|
||||
import rightArrow from "assets/icons/arrows/arrowRight.svg";
|
||||
import front from "assets/images/partnerProfile/front-end.webp";
|
||||
import rectangle from "assets/images/rectangle_secondPage.png";
|
||||
|
||||
import "./candidate.scss";
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
import React, { useState } from "react";
|
||||
|
||||
import { LEVELS, SKILLS } from "@utils/constants";
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
|
||||
import { Achievement } from "@components/Achievement/Achievement";
|
||||
import ModalAspirant from "@components/Modal/ModalAspirant/ModalAspirant";
|
||||
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
import { LEVELS, SKILLS } from "@utils/constants";
|
||||
|
||||
import "./candidateSidebar.scss";
|
||||
|
||||
const getYearsString = (years) => {
|
||||
|
@ -1,23 +1,23 @@
|
||||
import React from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import rightArrow from "assets/icons/arrows/arrowRight.svg";
|
||||
|
||||
import "./CardControl.scss";
|
||||
|
||||
export const CardControl = ({ title, path, description, img }) => {
|
||||
return (
|
||||
<Link to={`/${path}`} className="control-card">
|
||||
<div className="control-card__about">
|
||||
<img src={img} alt="itemImg" />
|
||||
<h3>{title}</h3>
|
||||
</div>
|
||||
<div className="control-card__info">
|
||||
<p dangerouslySetInnerHTML={{ __html: description }}></p>
|
||||
<div className="control-card__infoLink">
|
||||
<img src={rightArrow} alt="arrow" />
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
);
|
||||
};
|
||||
import React from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import rightArrow from "assets/icons/arrows/arrowRight.svg";
|
||||
|
||||
import "./CardControl.scss";
|
||||
|
||||
export const CardControl = ({ title, path, description, img }) => {
|
||||
return (
|
||||
<Link to={`/${path}`} className="control-card">
|
||||
<div className="control-card__about">
|
||||
<img src={img} alt="itemImg" />
|
||||
<h3>{title}</h3>
|
||||
</div>
|
||||
<div className="control-card__info">
|
||||
<p dangerouslySetInnerHTML={{ __html: description }}></p>
|
||||
<div className="control-card__infoLink">
|
||||
<img src={rightArrow} alt="arrow" />
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
);
|
||||
};
|
||||
|
@ -1,9 +1,9 @@
|
||||
import React from "react";
|
||||
|
||||
import logo from "assets/images/logo/LogoITguild.svg";
|
||||
import vk from "assets/icons/vkLogo.svg";
|
||||
import tg from "assets/icons/tgFooter.svg";
|
||||
import email from "assets/icons/emailLogo.svg";
|
||||
import tg from "assets/icons/tgFooter.svg";
|
||||
import vk from "assets/icons/vkLogo.svg";
|
||||
import logo from "assets/images/logo/LogoITguild.svg";
|
||||
|
||||
import "./footer.scss";
|
||||
|
||||
|
@ -2,15 +2,15 @@ import React from "react";
|
||||
import { useSelector } from "react-redux";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import ErrorBoundary from "../../hoc/ErrorBoundary";
|
||||
import { selectProfiles } from "@redux/outstaffingSlice";
|
||||
|
||||
import { LEVELS, SKILLS } from "@utils/constants";
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
import { selectProfiles } from "@redux/outstaffingSlice";
|
||||
|
||||
import rectangle from "assets/images/rectangle_secondPage.png";
|
||||
import cursorImg from "assets/icons/cursorImg.svg";
|
||||
import rectangle from "assets/images/rectangle_secondPage.png";
|
||||
|
||||
import ErrorBoundary from "../../hoc/ErrorBoundary";
|
||||
import "./description.scss";
|
||||
|
||||
const Description = ({ onLoadMore, isLoadingMore }) => {
|
||||
|
@ -1,13 +1,14 @@
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { useParams, useNavigate } from "react-router-dom";
|
||||
import PhoneInput from "react-phone-input-2";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
import { Loader } from "@components/Common/Loader/Loader";
|
||||
import "react-phone-input-2/lib/style.css";
|
||||
import { useNavigate, useParams } from "react-router-dom";
|
||||
import Swal from "sweetalert2";
|
||||
import withReactContent from "sweetalert2-react-content";
|
||||
|
||||
import "react-phone-input-2/lib/style.css";
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import { Loader } from "@components/Common/Loader/Loader";
|
||||
|
||||
import "./form.scss";
|
||||
|
||||
const SweetAlert = withReactContent(Swal);
|
||||
|
@ -4,13 +4,13 @@ import { Link } from "react-router-dom";
|
||||
import { scrollToForm } from "@utils/helper";
|
||||
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
import BaseButton from "@components/Common/BaseButton/BaseButton";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import BaseButton from "@components/Common/BaseButton/BaseButton";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
|
||||
import mockWorker from "assets/images/mock/mokPerson.png";
|
||||
import arrow from "assets/icons/arrows/arrow_left.png";
|
||||
import mockWorker from "assets/images/mock/mokPerson.png";
|
||||
|
||||
import "./freeDevelopers.scss";
|
||||
|
||||
|
@ -1,30 +1,30 @@
|
||||
import React from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import questionIcon from "assets/images/faq/question.svg";
|
||||
|
||||
import "./FrequentlyAskedQuestionsItem.scss";
|
||||
|
||||
export const FrequentlyAskedQuestionsItem = ({ rubric }) => {
|
||||
return (
|
||||
<div className="frequently-asked-questions-item">
|
||||
<div className="frequently-asked-questions-item__head">
|
||||
<div className="frequently-asked-questions-item__icon-question">
|
||||
<img src={questionIcon} alt="" />
|
||||
</div>
|
||||
<div className="frequently-asked-questions-item__title">
|
||||
{rubric?.title}
|
||||
</div>
|
||||
</div>
|
||||
{rubric?.questions?.map((question) => (
|
||||
<Link
|
||||
key={question.id}
|
||||
to={`/frequently-asked-question/${question.id}`}
|
||||
className="frequently-asked-questions-item__body"
|
||||
>
|
||||
<p>{question.title}</p>
|
||||
</Link>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
import React from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import questionIcon from "assets/images/faq/question.svg";
|
||||
|
||||
import "./FrequentlyAskedQuestionsItem.scss";
|
||||
|
||||
export const FrequentlyAskedQuestionsItem = ({ rubric }) => {
|
||||
return (
|
||||
<div className="frequently-asked-questions-item">
|
||||
<div className="frequently-asked-questions-item__head">
|
||||
<div className="frequently-asked-questions-item__icon-question">
|
||||
<img src={questionIcon} alt="" />
|
||||
</div>
|
||||
<div className="frequently-asked-questions-item__title">
|
||||
{rubric?.title}
|
||||
</div>
|
||||
</div>
|
||||
{rubric?.questions?.map((question) => (
|
||||
<Link
|
||||
key={question.id}
|
||||
to={`/frequently-asked-question/${question.id}`}
|
||||
className="frequently-asked-questions-item__body"
|
||||
>
|
||||
<p>{question.title}</p>
|
||||
</Link>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
@ -1,10 +1,12 @@
|
||||
import React, { useState } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
import { useSelector } from "react-redux";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { getRole } from "@redux/roleSlice";
|
||||
|
||||
import { useLogout } from "@hooks/useLogout";
|
||||
|
||||
import { Loader } from "@components/Common/Loader/Loader";
|
||||
import { getRole } from "@redux/roleSlice";
|
||||
|
||||
import "./logoutButton.scss";
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
import React, { useState } from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import ModalLayout from "@components/Common/ModalLayout/ModalLayout";
|
||||
import BaseButton from "@components/Common/BaseButton/BaseButton";
|
||||
import ModalLayout from "@components/Common/ModalLayout/ModalLayout";
|
||||
|
||||
import avatar from "assets/images/mock/mokPerson.png";
|
||||
import logoTg from "assets/icons/tgLogo.svg";
|
||||
import arrow from "assets/icons/arrows/left-arrow.png";
|
||||
import logoTg from "assets/icons/tgLogo.svg";
|
||||
import interview from "assets/images/logo/interviewLogo.svg";
|
||||
import avatar from "assets/images/mock/mokPerson.png";
|
||||
|
||||
import "./modalAspirant.scss";
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
import React from "react";
|
||||
|
||||
import ModalLayout from "@components/Common/ModalLayout/ModalLayout";
|
||||
import BaseButton from "@components/Common/BaseButton/BaseButton";
|
||||
import ModalLayout from "@components/Common/ModalLayout/ModalLayout";
|
||||
|
||||
import "./modalErrorLogin.scss";
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
import React from "react";
|
||||
|
||||
import ModalLayout from "@components/Common/ModalLayout/ModalLayout";
|
||||
import BaseButton from "@components/Common/BaseButton/BaseButton";
|
||||
import ModalLayout from "@components/Common/ModalLayout/ModalLayout";
|
||||
|
||||
import telegramLogo from "assets/icons/tgLogo.svg";
|
||||
import doc from "assets/icons/doc.svg";
|
||||
import anyMoment from "assets/icons/anyMoment.svg";
|
||||
import doc from "assets/icons/doc.svg";
|
||||
import telegramLogo from "assets/icons/tgLogo.svg";
|
||||
|
||||
import "./modalRegistration.scss";
|
||||
|
||||
|
@ -1,28 +1,30 @@
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
import { useDispatch } from "react-redux";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import { modalToggle, setProjectBoardFetch } from "@redux/projectsTrackerSlice";
|
||||
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
import { modalToggle, setProjectBoardFetch } from "@redux/projectsTrackerSlice";
|
||||
|
||||
import { getCorrectDate } from "@components/Calendar/calendarHelper";
|
||||
|
||||
import TrackerModal from "@components/Modal/TrackerModal/TrackerModal";
|
||||
import ModalLayout from "@components/Common/ModalLayout/ModalLayout";
|
||||
import BaseButton from "@components/Common/BaseButton/BaseButton";
|
||||
import ModalLayout from "@components/Common/ModalLayout/ModalLayout";
|
||||
import TrackerModal from "@components/Modal/TrackerModal/TrackerModal";
|
||||
|
||||
import category from "assets/icons/category.svg";
|
||||
import watch from "assets/icons/watch.svg";
|
||||
import file from "assets/icons/fileModal.svg";
|
||||
import arrow from "assets/icons/arrows/arrowStart.png";
|
||||
import link from "assets/icons/link.svg";
|
||||
import archive from "assets/icons/archive.svg";
|
||||
import arrow from "assets/icons/arrows/arrowStart.png";
|
||||
import fullScreen from "assets/icons/arrows/inFullScreen.svg";
|
||||
import category from "assets/icons/category.svg";
|
||||
import close from "assets/icons/closeProjectPersons.svg";
|
||||
import del from "assets/icons/delete.svg";
|
||||
import edit from "assets/icons/edit.svg";
|
||||
import send from "assets/icons/send.svg";
|
||||
import file from "assets/icons/fileModal.svg";
|
||||
import link from "assets/icons/link.svg";
|
||||
import plus from "assets/icons/plus.svg";
|
||||
import fullScreen from "assets/icons/arrows/inFullScreen.svg";
|
||||
import close from "assets/icons/closeProjectPersons.svg";
|
||||
import send from "assets/icons/send.svg";
|
||||
import watch from "assets/icons/watch.svg";
|
||||
|
||||
import "./ModalTicket.scss";
|
||||
|
||||
|
@ -1,42 +1,44 @@
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { Link, useParams, useNavigate } from "react-router-dom";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { getCorrectDate } from "@components/Calendar/calendarHelper";
|
||||
import BaseButton from "@components/Common/BaseButton/BaseButton";
|
||||
import TrackerModal from "@components/Modal/TrackerModal/TrackerModal";
|
||||
import { Navigation } from "@components/Navigation/Navigation";
|
||||
import { Loader } from "@components/Common/Loader/Loader";
|
||||
import { Link, useNavigate, useParams } from "react-router-dom";
|
||||
|
||||
import {
|
||||
deletePersonOnProject,
|
||||
getBoarderLoader,
|
||||
getProjectBoard,
|
||||
modalToggle,
|
||||
setProjectBoardFetch,
|
||||
setToggleTab,
|
||||
getProjectBoard,
|
||||
getBoarderLoader,
|
||||
} from "@redux/projectsTrackerSlice";
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
|
||||
import project from "assets/icons/trackerProject.svg";
|
||||
import watch from "assets/icons/watch.svg";
|
||||
import file from "assets/icons/fileModal.svg";
|
||||
import send from "assets/icons/send.svg";
|
||||
import arrow2 from "assets/icons/arrows/arrowStart.png";
|
||||
import plus from "assets/icons/plus.svg";
|
||||
import tasks from "assets/icons/trackerTasks.svg";
|
||||
import archive from "assets/icons/archiveTracker.svg";
|
||||
import selectArrow from "assets/icons/arrows/select.svg";
|
||||
import arrow from "assets/icons/arrows/arrowCalendar.png";
|
||||
import link from "assets/icons/link.svg";
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import { getCorrectDate } from "@components/Calendar/calendarHelper";
|
||||
import BaseButton from "@components/Common/BaseButton/BaseButton";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { Loader } from "@components/Common/Loader/Loader";
|
||||
import TrackerModal from "@components/Modal/TrackerModal/TrackerModal";
|
||||
import { Navigation } from "@components/Navigation/Navigation";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
|
||||
import archive2 from "assets/icons/archive.svg";
|
||||
import archive from "assets/icons/archiveTracker.svg";
|
||||
import arrow from "assets/icons/arrows/arrowCalendar.png";
|
||||
import arrow2 from "assets/icons/arrows/arrowStart.png";
|
||||
import selectArrow from "assets/icons/arrows/select.svg";
|
||||
import close from "assets/icons/closeProjectPersons.svg";
|
||||
import del from "assets/icons/delete.svg";
|
||||
import edit from "assets/icons/edit.svg";
|
||||
import close from "assets/icons/closeProjectPersons.svg";
|
||||
import file from "assets/icons/fileModal.svg";
|
||||
import link from "assets/icons/link.svg";
|
||||
import plus from "assets/icons/plus.svg";
|
||||
import send from "assets/icons/send.svg";
|
||||
import project from "assets/icons/trackerProject.svg";
|
||||
import tasks from "assets/icons/trackerTasks.svg";
|
||||
import watch from "assets/icons/watch.svg";
|
||||
|
||||
import "./ticketFullScreen.scss";
|
||||
|
||||
|
@ -1,21 +1,23 @@
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
import {
|
||||
setColumnName,
|
||||
addPersonToProject,
|
||||
editColumnName,
|
||||
editProjectName,
|
||||
getColumnId,
|
||||
getColumnName,
|
||||
getProjectBoard,
|
||||
getValueModalType,
|
||||
setColumnName,
|
||||
setProject,
|
||||
setProjectBoardFetch,
|
||||
editProjectName,
|
||||
editColumnName,
|
||||
getColumnName,
|
||||
getColumnId,
|
||||
addPersonToProject,
|
||||
} from "@redux/projectsTrackerSlice";
|
||||
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import arrowDown from "assets/icons/arrows/selectArrow.png";
|
||||
|
||||
import "./trackerModal.scss";
|
||||
|
@ -1,108 +1,110 @@
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { NavLink } from "react-router-dom";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
import { apiRequest } from "@api/request";
|
||||
import { getProfileInfo, setProfileInfo } from "@redux/outstaffingSlice";
|
||||
|
||||
import avatarMok from "assets/images/avatarMok.png";
|
||||
|
||||
export const Navigation = () => {
|
||||
const dispatch = useDispatch();
|
||||
|
||||
const profileInfo = useSelector(getProfileInfo);
|
||||
const [user] = useState(
|
||||
localStorage.getItem("role_status") === "18" ? "partner" : "developer"
|
||||
);
|
||||
const [navInfo] = useState({
|
||||
developer: [
|
||||
{
|
||||
path: "/summary",
|
||||
name: "Резюме",
|
||||
},
|
||||
{
|
||||
path: "/calendar",
|
||||
name: "Отчетность",
|
||||
},
|
||||
{
|
||||
path: "/tracker",
|
||||
name: "Трекер",
|
||||
},
|
||||
{
|
||||
path: "/payouts",
|
||||
name: "Выплаты",
|
||||
},
|
||||
{
|
||||
path: "/settings",
|
||||
name: "Настройки",
|
||||
},
|
||||
],
|
||||
partner: [
|
||||
{
|
||||
path: "/catalog",
|
||||
name: "Каталог",
|
||||
},
|
||||
{
|
||||
path: "/requests",
|
||||
name: "Запросы",
|
||||
},
|
||||
{
|
||||
path: "/categories",
|
||||
name: "Персонал",
|
||||
},
|
||||
{
|
||||
path: "/tracker",
|
||||
name: "Трекер",
|
||||
},
|
||||
{
|
||||
path: "/treaties",
|
||||
name: "Договора",
|
||||
},
|
||||
{
|
||||
path: "/settings",
|
||||
name: "Настройки",
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
if (localStorage.getItem("role_status") === "18") {
|
||||
return;
|
||||
}
|
||||
apiRequest(`/profile/${localStorage.getItem("cardId")}`).then(
|
||||
(profileInfo) => dispatch(setProfileInfo(profileInfo))
|
||||
);
|
||||
}, [dispatch]);
|
||||
|
||||
return (
|
||||
<div className="profileHeader__info">
|
||||
<div className="profileHeader__container">
|
||||
<nav className="profileHeader__nav">
|
||||
{navInfo[user].map((link, index) => {
|
||||
return (
|
||||
<NavLink key={index} end to={`/profile${link.path}`}>
|
||||
{link.name}
|
||||
</NavLink>
|
||||
);
|
||||
})}
|
||||
</nav>
|
||||
|
||||
<div className="profileHeader__personalInfo">
|
||||
<h3 className="profileHeader__personalInfoName">
|
||||
{user === "developer" ? profileInfo?.fio : ""}
|
||||
</h3>
|
||||
<NavLink end to={"/profile"}>
|
||||
<img
|
||||
src={
|
||||
profileInfo.photo ? urlForLocal(profileInfo.photo) : avatarMok
|
||||
}
|
||||
className="profileHeader__personalInfoAvatar"
|
||||
alt="avatar"
|
||||
/>
|
||||
</NavLink>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
import { NavLink } from "react-router-dom";
|
||||
|
||||
import { getProfileInfo, setProfileInfo } from "@redux/outstaffingSlice";
|
||||
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import avatarMok from "assets/images/avatarMok.png";
|
||||
|
||||
export const Navigation = () => {
|
||||
const dispatch = useDispatch();
|
||||
|
||||
const profileInfo = useSelector(getProfileInfo);
|
||||
const [user] = useState(
|
||||
localStorage.getItem("role_status") === "18" ? "partner" : "developer"
|
||||
);
|
||||
const [navInfo] = useState({
|
||||
developer: [
|
||||
{
|
||||
path: "/summary",
|
||||
name: "Резюме",
|
||||
},
|
||||
{
|
||||
path: "/calendar",
|
||||
name: "Отчетность",
|
||||
},
|
||||
{
|
||||
path: "/tracker",
|
||||
name: "Трекер",
|
||||
},
|
||||
{
|
||||
path: "/payouts",
|
||||
name: "Выплаты",
|
||||
},
|
||||
{
|
||||
path: "/settings",
|
||||
name: "Настройки",
|
||||
},
|
||||
],
|
||||
partner: [
|
||||
{
|
||||
path: "/catalog",
|
||||
name: "Каталог",
|
||||
},
|
||||
{
|
||||
path: "/requests",
|
||||
name: "Запросы",
|
||||
},
|
||||
{
|
||||
path: "/categories",
|
||||
name: "Персонал",
|
||||
},
|
||||
{
|
||||
path: "/tracker",
|
||||
name: "Трекер",
|
||||
},
|
||||
{
|
||||
path: "/treaties",
|
||||
name: "Договора",
|
||||
},
|
||||
{
|
||||
path: "/settings",
|
||||
name: "Настройки",
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
if (localStorage.getItem("role_status") === "18") {
|
||||
return;
|
||||
}
|
||||
apiRequest(`/profile/${localStorage.getItem("cardId")}`).then(
|
||||
(profileInfo) => dispatch(setProfileInfo(profileInfo))
|
||||
);
|
||||
}, [dispatch]);
|
||||
|
||||
return (
|
||||
<div className="profileHeader__info">
|
||||
<div className="profileHeader__container">
|
||||
<nav className="profileHeader__nav">
|
||||
{navInfo[user].map((link, index) => {
|
||||
return (
|
||||
<NavLink key={index} end to={`/profile${link.path}`}>
|
||||
{link.name}
|
||||
</NavLink>
|
||||
);
|
||||
})}
|
||||
</nav>
|
||||
|
||||
<div className="profileHeader__personalInfo">
|
||||
<h3 className="profileHeader__personalInfoName">
|
||||
{user === "developer" ? profileInfo?.fio : ""}
|
||||
</h3>
|
||||
<NavLink end to={"/profile"}>
|
||||
<img
|
||||
src={
|
||||
profileInfo.photo ? urlForLocal(profileInfo.photo) : avatarMok
|
||||
}
|
||||
className="profileHeader__personalInfoAvatar"
|
||||
alt="avatar"
|
||||
/>
|
||||
</NavLink>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
@ -1,18 +1,18 @@
|
||||
import React from "react";
|
||||
import { useSelector, useDispatch } from "react-redux";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
|
||||
import {
|
||||
getPositionId,
|
||||
selectTags,
|
||||
setPositionId,
|
||||
} from "@redux/outstaffingSlice";
|
||||
|
||||
import OutstaffingBlock from "@components/OutstaffingBlock/OutstaffingBlock";
|
||||
import TagSelect from "@components/Select/TagSelect";
|
||||
|
||||
import {
|
||||
selectTags,
|
||||
getPositionId,
|
||||
setPositionId,
|
||||
} from "@redux/outstaffingSlice";
|
||||
|
||||
import front from "assets/images/partnerProfile/front-end.webp";
|
||||
import back from "assets/images/partnerProfile/back-end.webp";
|
||||
import design from "assets/images/partnerProfile/design.webp";
|
||||
import front from "assets/images/partnerProfile/front-end.webp";
|
||||
|
||||
import "./outstaffing.scss";
|
||||
|
||||
|
@ -2,7 +2,8 @@ import React from "react";
|
||||
import OutsideClickHandler from "react-outside-click-handler";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
|
||||
import { selectItems, selectedItems, profiles } from "@redux/outstaffingSlice";
|
||||
import { profiles, selectItems, selectedItems } from "@redux/outstaffingSlice";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import "./outstaffingBlock.scss";
|
||||
|
@ -1,26 +1,28 @@
|
||||
import moment from "moment";
|
||||
import "moment/locale/ru";
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
import { Link, Navigate } from "react-router-dom";
|
||||
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
import { apiRequest } from "@api/request";
|
||||
import { getProfileInfo } from "@redux/outstaffingSlice";
|
||||
import {
|
||||
getRequestDates,
|
||||
setReportDate,
|
||||
setRequestDate,
|
||||
} from "@redux/reportSlice";
|
||||
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import { getReports } from "@components/Calendar/calendarHelper";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { Loader } from "@components/Common/Loader/Loader";
|
||||
import { Navigation } from "@components/Navigation/Navigation";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
|
||||
import { ProfileCalendarComponent } from "./ProfileCalendarComponent";
|
||||
import { Loader } from "@components/Common/Loader/Loader";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { Navigation } from "@components/Navigation/Navigation";
|
||||
|
||||
import moment from "moment";
|
||||
import "moment/locale/ru";
|
||||
import "./profileCalendar.scss";
|
||||
|
||||
export const ProfileCalendar = () => {
|
||||
|
@ -1,4 +1,6 @@
|
||||
import React, { useState, useEffect } from "react";
|
||||
import moment from "moment";
|
||||
import "moment/locale/ru";
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { useDispatch } from "react-redux";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
@ -7,6 +9,8 @@ import {
|
||||
setRequestDate,
|
||||
setSendRequest,
|
||||
} from "@redux/reportSlice";
|
||||
|
||||
import "@components/Calendar/calendarComponent.scss";
|
||||
import {
|
||||
calendarHelper,
|
||||
currentMonthAndDay,
|
||||
@ -16,13 +20,8 @@ import {
|
||||
import ShortReport from "@components/ShortReport/ShortReport";
|
||||
|
||||
import arrow from "assets/icons/arrows/arrowCalendar.png";
|
||||
import rectangle from "assets/images/rectangle__calendar.png";
|
||||
import calendarIcon from "assets/icons/calendar.svg";
|
||||
|
||||
import moment from "moment";
|
||||
|
||||
import "moment/locale/ru";
|
||||
import "@components/Calendar/calendarComponent.scss";
|
||||
import rectangle from "assets/images/rectangle__calendar.png";
|
||||
|
||||
export const ProfileCalendarComponent = React.memo(
|
||||
({ value, setValueHandler, reports, totalHours }) => {
|
||||
|
@ -1,12 +1,14 @@
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { useNavigate, NavLink } from "react-router-dom";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
import { NavLink, useNavigate } from "react-router-dom";
|
||||
|
||||
import { Loader } from "@components/Common/Loader/Loader";
|
||||
import { apiRequest } from "@api/request";
|
||||
import { auth, setProfileInfo } from "@redux/outstaffingSlice";
|
||||
import { getRole } from "@redux/roleSlice";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import { Loader } from "@components/Common/Loader/Loader";
|
||||
|
||||
import "./profileHeader.scss";
|
||||
|
||||
export const ProfileHeader = () => {
|
||||
|
@ -2,16 +2,17 @@ import React, { useEffect, useState } from "react";
|
||||
import { useDispatch } from "react-redux";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
import { deleteProject, modalToggle } from "@redux/projectsTrackerSlice";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import { ModalSelect } from "@components/Modal/ModalSelect/ModalSelect";
|
||||
import TrackerModal from "@components/Modal/TrackerModal/TrackerModal";
|
||||
|
||||
import link from "assets/icons/link.svg";
|
||||
import archiveSet from "assets/icons/archive.svg";
|
||||
import del from "assets/icons/delete.svg";
|
||||
import edit from "assets/icons/edit.svg";
|
||||
import link from "assets/icons/link.svg";
|
||||
|
||||
import "./projectTiket.scss";
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import React from "react";
|
||||
import { useSelector } from "react-redux";
|
||||
import { Route, Redirect } from "react-router-dom";
|
||||
import { Redirect, Route } from "react-router-dom";
|
||||
|
||||
import { selectAuth } from "@redux/outstaffingSlice";
|
||||
|
||||
|
@ -1,31 +1,33 @@
|
||||
import React, { useState, useEffect } from "react";
|
||||
import ru from "date-fns/locale/ru";
|
||||
import React, { useEffect, useState } from "react";
|
||||
import DatePicker, { registerLocale } from "react-datepicker";
|
||||
import "react-datepicker/dist/react-datepicker.css";
|
||||
import { useSelector } from "react-redux";
|
||||
import { Link, Navigate, useNavigate } from "react-router-dom";
|
||||
import DatePicker, { registerLocale } from "react-datepicker";
|
||||
|
||||
import { getReportDate } from "@redux/reportSlice";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { Loader } from "@components/Common/Loader/Loader";
|
||||
import { Navigation } from "@components/Navigation/Navigation";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
|
||||
import arrow from "assets/icons/arrows/left-arrow.png";
|
||||
import calendarIcon from "assets/icons/calendar.svg";
|
||||
import ellipse from "assets/icons/ellipse.png";
|
||||
import remove from "assets/icons/remove.svg";
|
||||
|
||||
import {
|
||||
getCorrectDate,
|
||||
getCreatedDate,
|
||||
hourOfNum,
|
||||
} from "../Calendar/calendarHelper";
|
||||
import ru from "date-fns/locale/ru";
|
||||
registerLocale("ru", ru);
|
||||
|
||||
import { Loader } from "@components/Common/Loader/Loader";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
import { Navigation } from "@components/Navigation/Navigation";
|
||||
import { getReportDate } from "@redux/reportSlice";
|
||||
|
||||
import calendarIcon from "assets/icons/calendar.svg";
|
||||
import ellipse from "assets/icons/ellipse.png";
|
||||
import remove from "assets/icons/remove.svg";
|
||||
import arrow from "assets/icons/arrows/left-arrow.png";
|
||||
|
||||
import "./reportForm.scss";
|
||||
import "react-datepicker/dist/react-datepicker.css";
|
||||
|
||||
registerLocale("ru", ru);
|
||||
|
||||
const ReportForm = () => {
|
||||
if (localStorage.getItem("role_status") === "18") {
|
||||
|
@ -1,17 +1,19 @@
|
||||
import React, { useState } from "react";
|
||||
import { useSelector, useDispatch } from "react-redux";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
import Select from "react-select";
|
||||
|
||||
import { Loader } from "@components/Common/Loader/Loader";
|
||||
import { apiRequest } from "@api/request";
|
||||
import {
|
||||
selectedItems,
|
||||
profiles,
|
||||
selectItems,
|
||||
selectTags,
|
||||
profiles,
|
||||
selectedItems,
|
||||
setPositionId,
|
||||
} from "@redux/outstaffingSlice";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import { Loader } from "@components/Common/Loader/Loader";
|
||||
|
||||
import "./tagSelect.scss";
|
||||
|
||||
const TagSelect = () => {
|
||||
|
@ -2,17 +2,19 @@ import React, { useState } from "react";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
import {
|
||||
getCorrectDate,
|
||||
getCreatedDate,
|
||||
hourOfNum,
|
||||
} from "@components/Calendar/calendarHelper";
|
||||
import {
|
||||
getReportDate,
|
||||
getSendRequest,
|
||||
setSendRequest,
|
||||
} from "@redux/reportSlice";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import {
|
||||
getCorrectDate,
|
||||
getCreatedDate,
|
||||
hourOfNum,
|
||||
} from "@components/Calendar/calendarHelper";
|
||||
import { Loader } from "@components/Common/Loader/Loader";
|
||||
|
||||
import "./shortReport.scss";
|
||||
|
@ -1,14 +1,14 @@
|
||||
import React, { useState } from "react";
|
||||
import Slider from "react-slick";
|
||||
import { Link } from "react-router-dom";
|
||||
import Slider from "react-slick";
|
||||
import "slick-carousel/slick/slick-theme.css";
|
||||
import "slick-carousel/slick/slick.css";
|
||||
|
||||
import BaseButton from "@components/Common/BaseButton/BaseButton";
|
||||
|
||||
import mockWorker from "assets/images/mock/mokPerson.png";
|
||||
|
||||
import "./sliderWorkers.scss";
|
||||
import "slick-carousel/slick/slick.css";
|
||||
import "slick-carousel/slick/slick-theme.css";
|
||||
|
||||
export const SliderWorkers = ({ title, titleInfo, subTitle }) => {
|
||||
const [workers] = useState([
|
||||
|
@ -1,86 +1,86 @@
|
||||
import React, { useEffect, useState } from "react";
|
||||
|
||||
import "./StarRating.scss";
|
||||
|
||||
const StarRating = ({
|
||||
countStars = 1,
|
||||
countActiveStars = 1,
|
||||
color = "#52B709",
|
||||
size = 61,
|
||||
}) => {
|
||||
const [shadedStars, setShadedStars] = useState([]);
|
||||
const [noShadedStars, setNoShadedStars] = useState([]);
|
||||
const percent =
|
||||
Math.abs(countActiveStars) >= countStars
|
||||
? 100
|
||||
: (countActiveStars * 100) / countStars;
|
||||
useEffect(() => {
|
||||
for (let index = 0; index < countStars; index++) {
|
||||
setShadedStars((prev) => [...prev, "★"]);
|
||||
setNoShadedStars((prev) => [...prev, "☆"]);
|
||||
}
|
||||
}, []);
|
||||
|
||||
const ratingStyle = {
|
||||
"--size": size + "px",
|
||||
};
|
||||
const activeStyle = {
|
||||
"--width": percent + "%",
|
||||
"--color": color,
|
||||
"--content": shadedStars.join(""),
|
||||
};
|
||||
const bodyStyle = {
|
||||
"--content": noShadedStars.join(""),
|
||||
"--color": color,
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="rating" style={ratingStyle}>
|
||||
<div
|
||||
className="rating__body"
|
||||
style={bodyStyle}
|
||||
data-content={noShadedStars.join("")}
|
||||
>
|
||||
<div
|
||||
className="rating__active"
|
||||
style={activeStyle}
|
||||
data-content={shadedStars.join("")}
|
||||
></div>
|
||||
<div className="rating__items">
|
||||
<input
|
||||
type="radio"
|
||||
className="rating__item"
|
||||
value={1}
|
||||
name="star"
|
||||
></input>
|
||||
<input
|
||||
type="radio"
|
||||
className="rating__item"
|
||||
value={2}
|
||||
name="star"
|
||||
></input>
|
||||
<input
|
||||
type="radio"
|
||||
className="rating__item"
|
||||
value={3}
|
||||
name="star"
|
||||
></input>
|
||||
<input
|
||||
type="radio"
|
||||
className="rating__item"
|
||||
value={4}
|
||||
name="star"
|
||||
></input>
|
||||
<input
|
||||
type="radio"
|
||||
className="rating__item"
|
||||
value={5}
|
||||
name="star"
|
||||
></input>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default React.memo(StarRating);
|
||||
import React, { useEffect, useState } from "react";
|
||||
|
||||
import "./StarRating.scss";
|
||||
|
||||
const StarRating = ({
|
||||
countStars = 1,
|
||||
countActiveStars = 1,
|
||||
color = "#52B709",
|
||||
size = 61,
|
||||
}) => {
|
||||
const [shadedStars, setShadedStars] = useState([]);
|
||||
const [noShadedStars, setNoShadedStars] = useState([]);
|
||||
const percent =
|
||||
Math.abs(countActiveStars) >= countStars
|
||||
? 100
|
||||
: (countActiveStars * 100) / countStars;
|
||||
useEffect(() => {
|
||||
for (let index = 0; index < countStars; index++) {
|
||||
setShadedStars((prev) => [...prev, "★"]);
|
||||
setNoShadedStars((prev) => [...prev, "☆"]);
|
||||
}
|
||||
}, []);
|
||||
|
||||
const ratingStyle = {
|
||||
"--size": size + "px",
|
||||
};
|
||||
const activeStyle = {
|
||||
"--width": percent + "%",
|
||||
"--color": color,
|
||||
"--content": shadedStars.join(""),
|
||||
};
|
||||
const bodyStyle = {
|
||||
"--content": noShadedStars.join(""),
|
||||
"--color": color,
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="rating" style={ratingStyle}>
|
||||
<div
|
||||
className="rating__body"
|
||||
style={bodyStyle}
|
||||
data-content={noShadedStars.join("")}
|
||||
>
|
||||
<div
|
||||
className="rating__active"
|
||||
style={activeStyle}
|
||||
data-content={shadedStars.join("")}
|
||||
></div>
|
||||
<div className="rating__items">
|
||||
<input
|
||||
type="radio"
|
||||
className="rating__item"
|
||||
value={1}
|
||||
name="star"
|
||||
></input>
|
||||
<input
|
||||
type="radio"
|
||||
className="rating__item"
|
||||
value={2}
|
||||
name="star"
|
||||
></input>
|
||||
<input
|
||||
type="radio"
|
||||
className="rating__item"
|
||||
value={3}
|
||||
name="star"
|
||||
></input>
|
||||
<input
|
||||
type="radio"
|
||||
className="rating__item"
|
||||
value={4}
|
||||
name="star"
|
||||
></input>
|
||||
<input
|
||||
type="radio"
|
||||
className="rating__item"
|
||||
value={5}
|
||||
name="star"
|
||||
></input>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default React.memo(StarRating);
|
||||
|
@ -1,16 +1,16 @@
|
||||
import React from "react";
|
||||
|
||||
import medium_male from "assets/images/medium_male.png";
|
||||
|
||||
export const HeadBottom = () => {
|
||||
return (
|
||||
<div className="bottom-head">
|
||||
<div className="bottom-head__container">
|
||||
<div className="bottom-head__title">Мои тесты</div>
|
||||
<div className="bottom-head__img">
|
||||
<img src={medium_male} alt="" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
import React from "react";
|
||||
|
||||
import medium_male from "assets/images/medium_male.png";
|
||||
|
||||
export const HeadBottom = () => {
|
||||
return (
|
||||
<div className="bottom-head">
|
||||
<div className="bottom-head__container">
|
||||
<div className="bottom-head__title">Мои тесты</div>
|
||||
<div className="bottom-head__img">
|
||||
<img src={medium_male} alt="" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
@ -1,33 +1,33 @@
|
||||
import React from "react";
|
||||
|
||||
import suucessIcon from "assets/images/quiz/success.png";
|
||||
|
||||
export const AlertResult = () => {
|
||||
const successTest = false;
|
||||
|
||||
return (
|
||||
<div className="alert-result">
|
||||
<div className="alert-result__column">
|
||||
<img
|
||||
src={suucessIcon}
|
||||
alt="suucessIcon"
|
||||
className="alert-result__icon"
|
||||
/>
|
||||
<div
|
||||
className="alert-result__text"
|
||||
style={{ color: successTest ? "#52B709" : "#5B6871" }}
|
||||
>
|
||||
Благодарим Вас за прохождение теста "Junior разработчик". Ваши
|
||||
результаты проверены, готовы пригласить Вас в команду
|
||||
</div>
|
||||
</div>
|
||||
{!successTest && (
|
||||
<div className="alert-result__column">
|
||||
<button className="alert-result__button quiz-btn">
|
||||
Запросить еще попытку
|
||||
</button>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
import React from "react";
|
||||
|
||||
import suucessIcon from "assets/images/quiz/success.png";
|
||||
|
||||
export const AlertResult = () => {
|
||||
const successTest = false;
|
||||
|
||||
return (
|
||||
<div className="alert-result">
|
||||
<div className="alert-result__column">
|
||||
<img
|
||||
src={suucessIcon}
|
||||
alt="suucessIcon"
|
||||
className="alert-result__icon"
|
||||
/>
|
||||
<div
|
||||
className="alert-result__text"
|
||||
style={{ color: successTest ? "#52B709" : "#5B6871" }}
|
||||
>
|
||||
Благодарим Вас за прохождение теста "Junior разработчик". Ваши
|
||||
результаты проверены, готовы пригласить Вас в команду
|
||||
</div>
|
||||
</div>
|
||||
{!successTest && (
|
||||
<div className="alert-result__column">
|
||||
<button className="alert-result__button quiz-btn">
|
||||
Запросить еще попытку
|
||||
</button>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
@ -1,31 +1,31 @@
|
||||
import React from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import compltedImage from "assets/images/quiz/compltedImage.png";
|
||||
|
||||
export const BlockCompletedTest = () => {
|
||||
const id = localStorage.getItem("id");
|
||||
return (
|
||||
<div className="block-completed-test">
|
||||
<div className="block-completed-test__container">
|
||||
<div className="block-completed-test__img">
|
||||
<img src={compltedImage} alt="" />
|
||||
</div>
|
||||
<div className="block-completed-test__title">
|
||||
Спасибо! <br />
|
||||
Ваши ответы получены
|
||||
</div>
|
||||
<div className="block-completed-test__text">
|
||||
В течении дня в вашем кабинете будет отображены данные о прохождении
|
||||
тестирования
|
||||
</div>
|
||||
<Link
|
||||
to={"/profile-candidate/" + id}
|
||||
className="block-completed-test__button quiz-btn"
|
||||
>
|
||||
В кабинет
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
import React from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import compltedImage from "assets/images/quiz/compltedImage.png";
|
||||
|
||||
export const BlockCompletedTest = () => {
|
||||
const id = localStorage.getItem("id");
|
||||
return (
|
||||
<div className="block-completed-test">
|
||||
<div className="block-completed-test__container">
|
||||
<div className="block-completed-test__img">
|
||||
<img src={compltedImage} alt="" />
|
||||
</div>
|
||||
<div className="block-completed-test__title">
|
||||
Спасибо! <br />
|
||||
Ваши ответы получены
|
||||
</div>
|
||||
<div className="block-completed-test__text">
|
||||
В течении дня в вашем кабинете будет отображены данные о прохождении
|
||||
тестирования
|
||||
</div>
|
||||
<Link
|
||||
to={"/profile-candidate/" + id}
|
||||
className="block-completed-test__button quiz-btn"
|
||||
>
|
||||
В кабинет
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
@ -1,19 +1,19 @@
|
||||
import React from "react";
|
||||
|
||||
import questionIcon from "assets/images/question.png";
|
||||
|
||||
import "./quiz.scss";
|
||||
|
||||
export const CardIntroduction = ({ title, description }) => {
|
||||
return (
|
||||
<div className="card-introduction">
|
||||
<div className="card-introduction__title">{title}</div>
|
||||
<div className="card-introduction__body">
|
||||
<div className="card-introduction__icon">
|
||||
<img src={questionIcon} alt="" />
|
||||
</div>
|
||||
<div className="card-introduction__text">{description}</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
import React from "react";
|
||||
|
||||
import questionIcon from "assets/images/question.png";
|
||||
|
||||
import "./quiz.scss";
|
||||
|
||||
export const CardIntroduction = ({ title, description }) => {
|
||||
return (
|
||||
<div className="card-introduction">
|
||||
<div className="card-introduction__title">{title}</div>
|
||||
<div className="card-introduction__body">
|
||||
<div className="card-introduction__icon">
|
||||
<img src={questionIcon} alt="" />
|
||||
</div>
|
||||
<div className="card-introduction__text">{description}</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
@ -1,39 +1,39 @@
|
||||
import React from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import StarRating from "@components/StarRating/StarRating";
|
||||
|
||||
import rightArrow from "assets/icons/arrows/arrowRight.svg";
|
||||
|
||||
export const CardAvailableTest = ({ title, description, path, passedTest }) => {
|
||||
return (
|
||||
<div className="card-available-test">
|
||||
<Link
|
||||
to={`/${path}`}
|
||||
className="card-available-test__container"
|
||||
style={{
|
||||
opacity: passedTest ? 0.3 : 1,
|
||||
pointerEvents: passedTest ? "none" : "all",
|
||||
}}
|
||||
>
|
||||
<div className="card-available-test__top-head">
|
||||
<StarRating />
|
||||
<h3 className="card-available-test__title">{title}</h3>
|
||||
</div>
|
||||
<div className="card-available-test__info">
|
||||
<p dangerouslySetInnerHTML={{ __html: description }}></p>
|
||||
<div className="card-available-test__infoLink">
|
||||
<img src={rightArrow} alt="arrow" />
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
|
||||
{passedTest && (
|
||||
<div className="card-available-test__finished">
|
||||
<p>Получить отчет по тестированию</p>
|
||||
<Link to={"/quiz/report"}>Отчет по тесту</Link>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
import React from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import StarRating from "@components/StarRating/StarRating";
|
||||
|
||||
import rightArrow from "assets/icons/arrows/arrowRight.svg";
|
||||
|
||||
export const CardAvailableTest = ({ title, description, path, passedTest }) => {
|
||||
return (
|
||||
<div className="card-available-test">
|
||||
<Link
|
||||
to={`/${path}`}
|
||||
className="card-available-test__container"
|
||||
style={{
|
||||
opacity: passedTest ? 0.3 : 1,
|
||||
pointerEvents: passedTest ? "none" : "all",
|
||||
}}
|
||||
>
|
||||
<div className="card-available-test__top-head">
|
||||
<StarRating />
|
||||
<h3 className="card-available-test__title">{title}</h3>
|
||||
</div>
|
||||
<div className="card-available-test__info">
|
||||
<p dangerouslySetInnerHTML={{ __html: description }}></p>
|
||||
<div className="card-available-test__infoLink">
|
||||
<img src={rightArrow} alt="arrow" />
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
|
||||
{passedTest && (
|
||||
<div className="card-available-test__finished">
|
||||
<p>Получить отчет по тестированию</p>
|
||||
<Link to={"/quiz/report"}>Отчет по тесту</Link>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
@ -1,7 +1,8 @@
|
||||
import { Link } from "react-router-dom";
|
||||
import { useSelector } from "react-redux";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import { selectUserInfo, selectedTest } from "@redux/quizSlice";
|
||||
|
||||
import { selectedTest, selectUserInfo } from "@redux/quizSlice";
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
|
||||
import "./quiz.scss";
|
||||
|
@ -2,9 +2,11 @@ import React, { useEffect } from "react";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
|
||||
import { selectUserInfo, setUserInfo } from "@redux/quizSlice";
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import "./quiz.scss";
|
||||
|
||||
export const HeaderQuiz = ({ header }) => {
|
||||
|
@ -1,9 +1,10 @@
|
||||
import { Link } from "react-router-dom";
|
||||
import { useEffect, useState } from "react";
|
||||
import { useSelector } from "react-redux";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import { selectedTest } from "@redux/quizSlice";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
import { selectedTest } from "@redux/quizSlice";
|
||||
|
||||
import comment from "assets/icons/comment.jpg";
|
||||
|
||||
|
@ -1,7 +1,8 @@
|
||||
import { Link } from "react-router-dom";
|
||||
import { useDispatch } from "react-redux";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import { setSelectedTest } from "@redux/quizSlice";
|
||||
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
|
||||
import calendarImage from "assets/icons/calendar.svg";
|
||||
|
@ -1,91 +1,92 @@
|
||||
import React, { useEffect } from "react";
|
||||
import { useSelector } from "react-redux";
|
||||
import { useTimer } from "react-timer-hook";
|
||||
|
||||
import StarRating from "@components/StarRating/StarRating";
|
||||
import { completedTestSelector } from "@redux/quizSlice";
|
||||
|
||||
import timer from "assets/images/quiz/timer.png";
|
||||
import accempt from "assets/images/quiz/accempt.png";
|
||||
|
||||
export const QuizPassingInformation = ({ expiryTimestamp, setStartTest }) => {
|
||||
const { seconds, minutes, isRunning, start, pause, resume, restart } =
|
||||
useTimer({
|
||||
expiryTimestamp,
|
||||
autoStart: false,
|
||||
onExpire: () => {
|
||||
console.warn("onExpire called");
|
||||
},
|
||||
});
|
||||
const completedTest = useSelector(completedTestSelector);
|
||||
|
||||
const startTesting = () => {
|
||||
setStartTest(true);
|
||||
start();
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
if (completedTest) {
|
||||
const time = new Date();
|
||||
time.setSeconds(time.getSeconds() + 0); //600 - кол-во секунд для прохождения теста
|
||||
restart(time, false);
|
||||
}
|
||||
}, [completedTest]);
|
||||
|
||||
return (
|
||||
<div className="quiz-passing-information">
|
||||
<div className="quiz-passing-information__container">
|
||||
<div className="quiz-passing-information__main">
|
||||
<div className="quiz-passing-information__specialization">
|
||||
<StarRating
|
||||
color={"#52B709"}
|
||||
countStars={1}
|
||||
countActiveStars={0.5}
|
||||
size={61}
|
||||
/>
|
||||
<div className="quiz-passing-information__specialization-title">
|
||||
Junior <br />
|
||||
разработчик
|
||||
</div>
|
||||
</div>
|
||||
<div className="quiz-passing-information__timer timer-quiz">
|
||||
<div className="quiz-passing-information__icon">
|
||||
<img src={timer} alt="" />
|
||||
</div>
|
||||
<div className="quiz-passing-information__text">
|
||||
{completedTest ? "Время вышло" : "Время на прохождение теста:"}{" "}
|
||||
<br />
|
||||
<span>
|
||||
{minutes.toString().padStart(2, "0") +
|
||||
":" +
|
||||
seconds.toString().padStart(2, "0")}{" "}
|
||||
секунд
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div className="quiz-passing-information__attempt">
|
||||
<div className="quiz-passing-information__icon">
|
||||
<img src={accempt} alt="" />
|
||||
</div>
|
||||
<div className="quiz-passing-information__text">
|
||||
Попыток прохождения: <br />
|
||||
<span>1 попытка</span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
{!completedTest && !isRunning && (
|
||||
<button
|
||||
className="quiz-passing-information__button btn-green"
|
||||
onClick={startTesting}
|
||||
>
|
||||
Начать
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* {isRunning && <button className="quiz-passing-information__button quiz-btn" onClick={pause}>Завершить</button>} */}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
import React, { useEffect } from "react";
|
||||
import { useSelector } from "react-redux";
|
||||
import { useTimer } from "react-timer-hook";
|
||||
|
||||
import { completedTestSelector } from "@redux/quizSlice";
|
||||
|
||||
import StarRating from "@components/StarRating/StarRating";
|
||||
|
||||
import accempt from "assets/images/quiz/accempt.png";
|
||||
import timer from "assets/images/quiz/timer.png";
|
||||
|
||||
export const QuizPassingInformation = ({ expiryTimestamp, setStartTest }) => {
|
||||
const { seconds, minutes, isRunning, start, pause, resume, restart } =
|
||||
useTimer({
|
||||
expiryTimestamp,
|
||||
autoStart: false,
|
||||
onExpire: () => {
|
||||
console.warn("onExpire called");
|
||||
},
|
||||
});
|
||||
const completedTest = useSelector(completedTestSelector);
|
||||
|
||||
const startTesting = () => {
|
||||
setStartTest(true);
|
||||
start();
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
if (completedTest) {
|
||||
const time = new Date();
|
||||
time.setSeconds(time.getSeconds() + 0); //600 - кол-во секунд для прохождения теста
|
||||
restart(time, false);
|
||||
}
|
||||
}, [completedTest]);
|
||||
|
||||
return (
|
||||
<div className="quiz-passing-information">
|
||||
<div className="quiz-passing-information__container">
|
||||
<div className="quiz-passing-information__main">
|
||||
<div className="quiz-passing-information__specialization">
|
||||
<StarRating
|
||||
color={"#52B709"}
|
||||
countStars={1}
|
||||
countActiveStars={0.5}
|
||||
size={61}
|
||||
/>
|
||||
<div className="quiz-passing-information__specialization-title">
|
||||
Junior <br />
|
||||
разработчик
|
||||
</div>
|
||||
</div>
|
||||
<div className="quiz-passing-information__timer timer-quiz">
|
||||
<div className="quiz-passing-information__icon">
|
||||
<img src={timer} alt="" />
|
||||
</div>
|
||||
<div className="quiz-passing-information__text">
|
||||
{completedTest ? "Время вышло" : "Время на прохождение теста:"}{" "}
|
||||
<br />
|
||||
<span>
|
||||
{minutes.toString().padStart(2, "0") +
|
||||
":" +
|
||||
seconds.toString().padStart(2, "0")}{" "}
|
||||
секунд
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div className="quiz-passing-information__attempt">
|
||||
<div className="quiz-passing-information__icon">
|
||||
<img src={accempt} alt="" />
|
||||
</div>
|
||||
<div className="quiz-passing-information__text">
|
||||
Попыток прохождения: <br />
|
||||
<span>1 попытка</span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
{!completedTest && !isRunning && (
|
||||
<button
|
||||
className="quiz-passing-information__button btn-green"
|
||||
onClick={startTesting}
|
||||
>
|
||||
Начать
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* {isRunning && <button className="quiz-passing-information__button quiz-btn" onClick={pause}>Завершить</button>} */}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
@ -1,35 +1,35 @@
|
||||
import React from "react";
|
||||
|
||||
import StarRating from "@components/StarRating/StarRating";
|
||||
|
||||
export const QuizReport = () => {
|
||||
return (
|
||||
<div className="report">
|
||||
<div className="report__row">
|
||||
<div className="report__column">
|
||||
<StarRating
|
||||
color={"#52B709"}
|
||||
countStars={1}
|
||||
countActiveStars={0.5}
|
||||
size={61}
|
||||
/>
|
||||
<div className="report__job-title">
|
||||
Junior <br /> разработчик
|
||||
</div>
|
||||
</div>
|
||||
<div className="report__column">
|
||||
<div className="report__value">22</div>
|
||||
<div className="report__text">Правильных ответов</div>
|
||||
</div>
|
||||
<div className="report__column">
|
||||
<div className="report__value report__value_false">02</div>
|
||||
<div className="report__text">Не правильных ответов</div>
|
||||
</div>
|
||||
<div className="report__column">
|
||||
<div className="report__status-text">Статус:</div>
|
||||
<div className="report__status">Пройдено!</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
import React from "react";
|
||||
|
||||
import StarRating from "@components/StarRating/StarRating";
|
||||
|
||||
export const QuizReport = () => {
|
||||
return (
|
||||
<div className="report">
|
||||
<div className="report__row">
|
||||
<div className="report__column">
|
||||
<StarRating
|
||||
color={"#52B709"}
|
||||
countStars={1}
|
||||
countActiveStars={0.5}
|
||||
size={61}
|
||||
/>
|
||||
<div className="report__job-title">
|
||||
Junior <br /> разработчик
|
||||
</div>
|
||||
</div>
|
||||
<div className="report__column">
|
||||
<div className="report__value">22</div>
|
||||
<div className="report__text">Правильных ответов</div>
|
||||
</div>
|
||||
<div className="report__column">
|
||||
<div className="report__value report__value_false">02</div>
|
||||
<div className="report__text">Не правильных ответов</div>
|
||||
</div>
|
||||
<div className="report__column">
|
||||
<div className="report__status-text">Статус:</div>
|
||||
<div className="report__status">Пройдено!</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
@ -1,35 +1,36 @@
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
|
||||
import { fetchResultTest, selectedTest, selectResult } from "@redux/quizSlice";
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
export const Results = () => {
|
||||
const result = useSelector(selectResult);
|
||||
const test = useSelector(selectedTest);
|
||||
const [maxScore, setMaxScore] = useState("");
|
||||
const dispatch = useDispatch();
|
||||
|
||||
useEffect(() => {
|
||||
dispatch(fetchResultTest(test.uuid));
|
||||
apiRequest(
|
||||
`/user-questionnaire/get-points-number?user_questionnaire_uuid=${test.uuid}`
|
||||
).then((res) => setMaxScore(res.sum_point));
|
||||
}, [apiRequest, dispatch, test]);
|
||||
|
||||
return (
|
||||
<div className={"result _container"}>
|
||||
{!result ? (
|
||||
<h1 style={{ display: "block" }}>Ожидайте результата...</h1>
|
||||
) : (
|
||||
<div className="result__body">
|
||||
<div className="result__text">Благодарим за прохождение теста</div>
|
||||
<div className="result__text">
|
||||
Ваш Результат: <span className="result__score">{result.score}</span>{" "}
|
||||
из {maxScore}{" "}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
|
||||
import { fetchResultTest, selectResult, selectedTest } from "@redux/quizSlice";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
export const Results = () => {
|
||||
const result = useSelector(selectResult);
|
||||
const test = useSelector(selectedTest);
|
||||
const [maxScore, setMaxScore] = useState("");
|
||||
const dispatch = useDispatch();
|
||||
|
||||
useEffect(() => {
|
||||
dispatch(fetchResultTest(test.uuid));
|
||||
apiRequest(
|
||||
`/user-questionnaire/get-points-number?user_questionnaire_uuid=${test.uuid}`
|
||||
).then((res) => setMaxScore(res.sum_point));
|
||||
}, [apiRequest, dispatch, test]);
|
||||
|
||||
return (
|
||||
<div className={"result _container"}>
|
||||
{!result ? (
|
||||
<h1 style={{ display: "block" }}>Ожидайте результата...</h1>
|
||||
) : (
|
||||
<div className="result__body">
|
||||
<div className="result__text">Благодарим за прохождение теста</div>
|
||||
<div className="result__text">
|
||||
Ваш Результат: <span className="result__score">{result.score}</span>{" "}
|
||||
из {maxScore}{" "}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
@ -1,29 +1,29 @@
|
||||
import React from "react";
|
||||
|
||||
import iconSpecialization from "assets/images/partnerProfile/personalBackEnd.svg";
|
||||
|
||||
export const SelectedCategory = ({ setSelectedCategory }) => {
|
||||
return (
|
||||
<div className="selected-category">
|
||||
<div className="selected-category__container">
|
||||
<div className="selected-category__title">
|
||||
Ваша выбранная <br /> категория
|
||||
</div>
|
||||
<div className="selected-category__category">
|
||||
<div className="selected-category__image">
|
||||
<img src={iconSpecialization} alt="" />
|
||||
</div>
|
||||
<div className="selected-category__title-category">
|
||||
Backend <br /> разработчики
|
||||
</div>
|
||||
</div>
|
||||
<button
|
||||
onClick={() => setSelectedCategory(true)}
|
||||
className="selected-category__button"
|
||||
>
|
||||
Заменить специализацию{" "}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
import React from "react";
|
||||
|
||||
import iconSpecialization from "assets/images/partnerProfile/personalBackEnd.svg";
|
||||
|
||||
export const SelectedCategory = ({ setSelectedCategory }) => {
|
||||
return (
|
||||
<div className="selected-category">
|
||||
<div className="selected-category__container">
|
||||
<div className="selected-category__title">
|
||||
Ваша выбранная <br /> категория
|
||||
</div>
|
||||
<div className="selected-category__category">
|
||||
<div className="selected-category__image">
|
||||
<img src={iconSpecialization} alt="" />
|
||||
</div>
|
||||
<div className="selected-category__title-category">
|
||||
Backend <br /> разработчики
|
||||
</div>
|
||||
</div>
|
||||
<button
|
||||
onClick={() => setSelectedCategory(true)}
|
||||
className="selected-category__button"
|
||||
>
|
||||
Заменить специализацию{" "}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
@ -1,25 +1,25 @@
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
import { useSelector, useDispatch } from "react-redux";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
import { HeaderQuiz } from "./HeaderQuiz";
|
||||
|
||||
import { Progressbar } from "./ProgressbarQuiz";
|
||||
import { GetOptionTask } from "./GetOptionTask";
|
||||
import {
|
||||
fetchUserAnswersMany,
|
||||
fetchUserAnswerOne,
|
||||
fetchGetAnswers,
|
||||
answersSelector,
|
||||
selectedTest,
|
||||
fetchGetAnswers,
|
||||
fetchUserAnswerOne,
|
||||
fetchUserAnswersMany,
|
||||
questionsSelector,
|
||||
selectedTest,
|
||||
setAnswers,
|
||||
setCompleteTest,
|
||||
} from "@redux/quizSlice";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import questionIcon from "assets/images/question.png";
|
||||
|
||||
import { GetOptionTask } from "./GetOptionTask";
|
||||
import { HeaderQuiz } from "./HeaderQuiz";
|
||||
import { Progressbar } from "./ProgressbarQuiz";
|
||||
import "./quiz.scss";
|
||||
|
||||
export const TaskQuiz = () => {
|
||||
|
Reference in New Issue
Block a user