commit
32d6bbc345
21
.eslintrc.json
Normal file
21
.eslintrc.json
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"env": {
|
||||
"browser": true,
|
||||
"es2021": true
|
||||
},
|
||||
"extends": ["eslint:recommended", "plugin:react/recommended"],
|
||||
"overrides": [],
|
||||
"parserOptions": {
|
||||
"ecmaVersion": "latest",
|
||||
"sourceType": "module"
|
||||
},
|
||||
"plugins": ["react"],
|
||||
"rules": {
|
||||
"no-console": "warn",
|
||||
"react/prop-types": 0,
|
||||
"no-undef": "warn",
|
||||
"react/no-unescaped-entities": 0,
|
||||
"no-extra-boolean-cast": "warn",
|
||||
"react/react-in-jsx-scope": 0
|
||||
}
|
||||
}
|
5
.husky/pre-commit
Executable file
5
.husky/pre-commit
Executable file
@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env sh
|
||||
. "$(dirname -- "$0")/_/husky.sh"
|
||||
|
||||
npm run format
|
||||
npm run lint
|
7
.prettierignore
Normal file
7
.prettierignore
Normal file
@ -0,0 +1,7 @@
|
||||
node_modules
|
||||
config
|
||||
public
|
||||
|
||||
*-lock.json
|
||||
|
||||
App.js
|
15
.prettierrc
15
.prettierrc
@ -2,5 +2,18 @@
|
||||
"tabWidth": 2,
|
||||
"semi": true,
|
||||
"printWidth": 80,
|
||||
"useTabs": false
|
||||
"useTabs": false,
|
||||
"importOrder": [
|
||||
"^@react/(.*)$",
|
||||
"^@redux/(.*)$",
|
||||
"^@utils/(.*)$",
|
||||
"^@api/(.*)$",
|
||||
"^@hooks/(.*)$",
|
||||
"^@pages/(.*)$",
|
||||
"^@components/(.*)$",
|
||||
"^assets/(.*)$",
|
||||
"^[./]"
|
||||
],
|
||||
"importOrderSeparation": true,
|
||||
"importOrderSortSpecifiers": true
|
||||
}
|
||||
|
709
package-lock.json
generated
709
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
11
package.json
11
package.json
@ -49,11 +49,14 @@
|
||||
"@babel/core": "^7.20.12",
|
||||
"@babel/preset-env": "^7.20.2",
|
||||
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.10",
|
||||
"@trivago/prettier-plugin-sort-imports": "^4.1.1",
|
||||
"babel-loader": "^9.1.2",
|
||||
"copy-webpack-plugin": "^10.2.0",
|
||||
"cross-env": "^7.0.3",
|
||||
"css-loader": "6.7.3",
|
||||
"dotenv-webpack": "^7.0.3",
|
||||
"eslint": "^8.41.0",
|
||||
"eslint-plugin-react": "^7.32.2",
|
||||
"html-webpack-plugin": "5.5.0",
|
||||
"mini-css-extract-plugin": "^2.7.2",
|
||||
"node-sass": "8.0.0",
|
||||
@ -71,12 +74,16 @@
|
||||
"webpack-bundle-analyzer": "4.7.0",
|
||||
"webpack-cli": "^5.0.1",
|
||||
"webpack-dev-server": "4.11.1",
|
||||
"webpack-merge": "5.8.0"
|
||||
"webpack-merge": "5.8.0",
|
||||
"husky": "^8.0.0"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "cross-env SERVE=true webpack -c config/webpack/prod.js",
|
||||
"start": "webpack serve -c config/webpack/dev.js",
|
||||
"analyze": "webpack --analyze -c config/webpack/analyze.js"
|
||||
"analyze": "webpack --analyze -c config/webpack/analyze.js",
|
||||
"format": "prettier --write \"./**/*.{js,jsx}\"",
|
||||
"lint": "npx eslint 'src/**/*.{js,jsx,ts,tsx}'",
|
||||
"prepare": "husky install"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"extends": [
|
||||
|
@ -1,6 +1,5 @@
|
||||
module.exports = {
|
||||
'postcss-preset-env': {
|
||||
browsers: 'last 2 versions',
|
||||
"postcss-preset-env": {
|
||||
browsers: "last 2 versions",
|
||||
},
|
||||
|
||||
};
|
@ -1,5 +1,5 @@
|
||||
import axios from 'axios';
|
||||
import axios from "axios";
|
||||
|
||||
export default axios.create({
|
||||
baseURL: process.env.REACT_APP_API_URL
|
||||
baseURL: process.env.REACT_APP_API_URL,
|
||||
});
|
@ -1,4 +1,5 @@
|
||||
import axios from "axios";
|
||||
|
||||
import { getToken, urlHasParams } from "@utils/helper";
|
||||
|
||||
const instance = axios.create({
|
||||
|
@ -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) => {
|
||||
|
@ -7,7 +7,7 @@ import userIcon from "assets/icons/userIcon.svg";
|
||||
|
||||
import "./authHeader.scss";
|
||||
|
||||
export const AuthHeader = ({}) => {
|
||||
export const AuthHeader = () => {
|
||||
return (
|
||||
<div className="auth-header">
|
||||
<div className="auth-header__logo">
|
||||
|
@ -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,18 +2,18 @@ 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 }) => {
|
||||
const Description = ({ onLoadMore }) => {
|
||||
const candidatesListArr = useSelector(selectProfiles);
|
||||
|
||||
return (
|
||||
|
@ -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);
|
||||
@ -28,8 +29,10 @@ const Form = () => {
|
||||
const handleModal = (status) => {
|
||||
SweetAlert.fire({
|
||||
text:
|
||||
// eslint-disable-next-line no-constant-condition
|
||||
status !== 200 || 201 ? "Какие-то неполадки =(" : "Форма отправлена",
|
||||
preConfirm: () =>
|
||||
// eslint-disable-next-line no-constant-condition
|
||||
status !== 200 || 201
|
||||
? () => {
|
||||
setStatus(null);
|
||||
|
@ -4,17 +4,17 @@ 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";
|
||||
|
||||
export const FreeDevelopers = ({}) => {
|
||||
export const FreeDevelopers = () => {
|
||||
return (
|
||||
<section className="free-dev">
|
||||
<AuthHeader />
|
||||
|
@ -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";
|
||||
|
||||
@ -58,7 +60,7 @@ export const ModalTiсket = ({
|
||||
task_id: task.id,
|
||||
status: 0,
|
||||
},
|
||||
}).then((res) => {
|
||||
}).then(() => {
|
||||
setActive(false);
|
||||
dispatch(setProjectBoardFetch(projectId));
|
||||
});
|
||||
@ -72,7 +74,7 @@ export const ModalTiсket = ({
|
||||
title: inputsValue.title,
|
||||
description: inputsValue.description,
|
||||
},
|
||||
}).then((res) => {
|
||||
}).then(() => {
|
||||
dispatch(setProjectBoardFetch(projectId));
|
||||
});
|
||||
}
|
||||
@ -104,7 +106,7 @@ export const ModalTiсket = ({
|
||||
comment_id: commentId,
|
||||
status: 0,
|
||||
},
|
||||
}).then((res) => {
|
||||
}).then(() => {
|
||||
setComments((prevValue) =>
|
||||
prevValue.filter((item) => item.id !== commentId)
|
||||
);
|
||||
@ -118,7 +120,7 @@ export const ModalTiсket = ({
|
||||
comment_id: commentId,
|
||||
text: commentsEditText[commentId],
|
||||
},
|
||||
}).then((res) => {});
|
||||
}).then(() => {});
|
||||
}
|
||||
|
||||
function taskExecutor(person) {
|
||||
@ -141,7 +143,7 @@ export const ModalTiсket = ({
|
||||
task_id: task.id,
|
||||
executor_id: 0,
|
||||
},
|
||||
}).then((res) => {
|
||||
}).then(() => {
|
||||
setExecutor(null);
|
||||
});
|
||||
}
|
||||
@ -166,7 +168,7 @@ export const ModalTiсket = ({
|
||||
task_id: task.id,
|
||||
user_id: person.user_id,
|
||||
},
|
||||
}).then((res) => {
|
||||
}).then(() => {
|
||||
setMembers(members.filter((item) => item.user_id !== person.user_id));
|
||||
});
|
||||
}
|
||||
|
@ -1,46 +1,48 @@
|
||||
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";
|
||||
|
||||
export const TicketFullScreen = ({}) => {
|
||||
export const TicketFullScreen = () => {
|
||||
const [modalAddWorker, setModalAddWorker] = useState(false);
|
||||
const ticketId = useParams();
|
||||
const dispatch = useDispatch();
|
||||
@ -91,7 +93,7 @@ export const TicketFullScreen = ({}) => {
|
||||
task_id: ticketId.id,
|
||||
status: 0,
|
||||
},
|
||||
}).then((res) => {
|
||||
}).then(() => {
|
||||
navigate(`/tracker/project/${taskInfo.project_id}`);
|
||||
});
|
||||
}
|
||||
@ -104,7 +106,7 @@ export const TicketFullScreen = ({}) => {
|
||||
title: inputsValue.title,
|
||||
description: inputsValue.description,
|
||||
},
|
||||
}).then((res) => {});
|
||||
}).then(() => {});
|
||||
}
|
||||
|
||||
function createComment() {
|
||||
@ -135,7 +137,7 @@ export const TicketFullScreen = ({}) => {
|
||||
comment_id: commentId,
|
||||
status: 0,
|
||||
},
|
||||
}).then((res) => {
|
||||
}).then(() => {
|
||||
setComments((prevValue) =>
|
||||
prevValue.filter((item) => item.id !== commentId)
|
||||
);
|
||||
@ -149,7 +151,7 @@ export const TicketFullScreen = ({}) => {
|
||||
comment_id: commentId,
|
||||
text: commentsEditText[commentId],
|
||||
},
|
||||
}).then((res) => {});
|
||||
}).then(() => {});
|
||||
}
|
||||
|
||||
function deletePerson(userId) {
|
||||
@ -159,7 +161,7 @@ export const TicketFullScreen = ({}) => {
|
||||
project_id: projectBoard.id,
|
||||
user_id: userId,
|
||||
},
|
||||
}).then((res) => {
|
||||
}).then(() => {
|
||||
dispatch(deletePersonOnProject(userId));
|
||||
});
|
||||
}
|
||||
|
@ -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";
|
||||
@ -55,7 +57,7 @@ export const TrackerModal = ({
|
||||
project_id: projectBoard.id,
|
||||
title: valueColumn,
|
||||
},
|
||||
}).then((res) => {
|
||||
}).then(() => {
|
||||
dispatch(setProjectBoardFetch(projectBoard.id));
|
||||
});
|
||||
setValueColumn("");
|
||||
@ -78,7 +80,7 @@ export const TrackerModal = ({
|
||||
column_id: selectedTab,
|
||||
priority: priorityTask,
|
||||
},
|
||||
}).then((res) => {
|
||||
}).then(() => {
|
||||
dispatch(setProjectBoardFetch(projectBoard.id));
|
||||
});
|
||||
|
||||
@ -94,7 +96,7 @@ export const TrackerModal = ({
|
||||
project_id: projectId,
|
||||
name: projectName,
|
||||
},
|
||||
}).then((res) => {
|
||||
}).then(() => {
|
||||
setActive(false);
|
||||
dispatch(editProjectName({ id: projectId, name: projectName }));
|
||||
});
|
||||
@ -107,7 +109,7 @@ export const TrackerModal = ({
|
||||
column_id: columnId,
|
||||
title: columnName,
|
||||
},
|
||||
}).then((res) => {
|
||||
}).then(() => {
|
||||
setActive(false);
|
||||
dispatch(editColumnName({ id: columnId, title: columnName }));
|
||||
});
|
||||
|
@ -1,10 +1,12 @@
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { NavLink } from "react-router-dom";
|
||||
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 { getProfileInfo, setProfileInfo } from "@redux/outstaffingSlice";
|
||||
|
||||
import avatarMok from "assets/images/avatarMok.png";
|
||||
|
||||
|
@ -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,14 +20,10 @@ 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 rectangle from "assets/images/rectangle__calendar.png";
|
||||
|
||||
import moment from "moment";
|
||||
|
||||
import "moment/locale/ru";
|
||||
import "@components/Calendar/calendarComponent.scss";
|
||||
|
||||
// eslint-disable-next-line react/display-name
|
||||
export const ProfileCalendarComponent = React.memo(
|
||||
({ value, setValueHandler, reports, totalHours }) => {
|
||||
const dispatch = useDispatch();
|
||||
|
@ -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";
|
||||
|
||||
@ -46,7 +47,7 @@ export const ProjectTiket = ({ project, index }) => {
|
||||
project_id: project.id,
|
||||
status: 10,
|
||||
},
|
||||
}).then((res) => {
|
||||
}).then(() => {
|
||||
dispatch(deleteProject(project));
|
||||
});
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
import React from "react";
|
||||
import { useSelector } from "react-redux";
|
||||
import { Route, Redirect } from "react-router-dom";
|
||||
import { Route } from "react-router-dom";
|
||||
|
||||
import { selectAuth } from "@redux/outstaffingSlice";
|
||||
|
||||
@ -9,6 +9,7 @@ export const ProtectedRoute = ({ component: Component, ...rest }) => {
|
||||
const existingToken = localStorage.getItem("auth_token");
|
||||
const expiresAt = localStorage.getItem("access_token_expired_at");
|
||||
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
const isTokenAlive =
|
||||
!isAuth &&
|
||||
existingToken &&
|
||||
|
@ -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") {
|
||||
@ -101,7 +103,7 @@ const ReportForm = () => {
|
||||
created_at: getCreatedDate(startDate),
|
||||
status: 1,
|
||||
},
|
||||
}).then((res) => {
|
||||
}).then(() => {
|
||||
setReportSuccess("Отчет отправлен");
|
||||
setTimeout(() => {
|
||||
setReportSuccess("");
|
||||
|
@ -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,22 +2,24 @@ 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";
|
||||
|
||||
export const ShortReport = ({}) => {
|
||||
export const ShortReport = () => {
|
||||
const reportDate = useSelector(getReportDate);
|
||||
|
||||
const sendReport = useSelector(getSendRequest);
|
||||
|
@ -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,12 +1,6 @@
|
||||
import React from "react";
|
||||
import { useSelector } from "react-redux";
|
||||
|
||||
import { selectedTest } from "@redux/quizSlice";
|
||||
|
||||
export const GetOptionTask = ({ type, answer, handleChange, inputValue }) => {
|
||||
const id = localStorage.getItem("id");
|
||||
const dataTest = useSelector(selectedTest);
|
||||
|
||||
switch (type) {
|
||||
case "1":
|
||||
return (
|
@ -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,10 @@ 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";
|
@ -2,21 +2,21 @@ 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 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 { seconds, minutes, isRunning, start, restart } = useTimer({
|
||||
expiryTimestamp,
|
||||
autoStart: false,
|
||||
onExpire: () => {
|
||||
console.warn("onExpire called");
|
||||
},
|
||||
});
|
||||
const completedTest = useSelector(completedTestSelector);
|
||||
|
||||
const startTesting = () => {
|
@ -1,7 +1,8 @@
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
|
||||
import { fetchResultTest, selectedTest, selectResult } from "@redux/quizSlice";
|
||||
import { fetchResultTest, selectResult, selectedTest } from "@redux/quizSlice";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
export const Results = () => {
|
@ -1,29 +1,25 @@
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
import { useSelector, useDispatch } from "react-redux";
|
||||
import { useDispatch, useSelector } 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,
|
||||
setAnswers,
|
||||
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 = () => {
|
||||
const navigate = useNavigate();
|
||||
const dispatch = useDispatch();
|
||||
|
||||
const answers = useSelector(answersSelector);
|
||||
@ -42,7 +38,6 @@ export const TaskQuiz = () => {
|
||||
// .then(json => console.log(json))
|
||||
apiRequest(`/question/get-questions?uuid=${dataTest.uuid}`).then(
|
||||
(response) => {
|
||||
console.log(response);
|
||||
dispatch(fetchGetAnswers(response[0].id));
|
||||
setStripValue(((+index + 1) * 100) / response.length);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
import React, {Component} from "react";
|
||||
import React, { Component } from "react";
|
||||
|
||||
class ErrorBoundary extends Component {
|
||||
state = {
|
||||
@ -6,7 +6,7 @@ class ErrorBoundary extends Component {
|
||||
};
|
||||
|
||||
static getDerivedStateFromError(error) {
|
||||
return {error};
|
||||
return { error };
|
||||
}
|
||||
|
||||
render() {
|
||||
@ -19,4 +19,4 @@ class ErrorBoundary extends Component {
|
||||
}
|
||||
}
|
||||
|
||||
export default ErrorBoundary
|
||||
export default ErrorBoundary;
|
||||
|
@ -1,7 +1,8 @@
|
||||
import {useDispatch, useSelector} from "react-redux";
|
||||
import {getRole} from "../redux/roleSlice";
|
||||
import {useNavigate} from "react-router-dom";
|
||||
import {auth} from "../redux/outstaffingSlice";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { auth } from "../redux/outstaffingSlice";
|
||||
import { getRole } from "../redux/roleSlice";
|
||||
|
||||
export const useLogout = () => {
|
||||
const dispatch = useDispatch();
|
||||
@ -11,8 +12,8 @@ export const useLogout = () => {
|
||||
const logout = () => {
|
||||
localStorage.clear();
|
||||
dispatch(auth(false));
|
||||
navigate(userRole === 'ROLE_DEV' ? '/authdev' : '/auth')
|
||||
navigate(userRole === "ROLE_DEV" ? "/authdev" : "/auth");
|
||||
};
|
||||
|
||||
return {logout}
|
||||
return { logout };
|
||||
};
|
23
src/index.js
23
src/index.js
@ -1,14 +1,13 @@
|
||||
import React from 'react'
|
||||
import ReactDOM from 'react-dom/client'
|
||||
import {store} from './store/store'
|
||||
import {Provider} from 'react-redux'
|
||||
import App from './App'
|
||||
import React from "react";
|
||||
import ReactDOM from "react-dom/client";
|
||||
import { Provider } from "react-redux";
|
||||
|
||||
import './index.css'
|
||||
import App from "./App";
|
||||
import "./index.css";
|
||||
import { store } from "./store/store";
|
||||
|
||||
ReactDOM.createRoot(document.getElementById("root"))
|
||||
.render(
|
||||
<Provider store={store}>
|
||||
<App/>
|
||||
</Provider>,
|
||||
);
|
||||
ReactDOM.createRoot(document.getElementById("root")).render(
|
||||
<Provider store={store}>
|
||||
<App />
|
||||
</Provider>
|
||||
);
|
||||
|
@ -1,23 +1,23 @@
|
||||
import React, { useState } from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import CardArticle from "@components/CardArticle/CardArticle";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import CardArticle from "@components/CardArticle/CardArticle";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
|
||||
import mockImgArticle from "assets/images/mock/mockImgArticle.png";
|
||||
import rightArrow from "assets/icons/arrows/left-arrow.png";
|
||||
import yandexZen from "assets/icons/yandexZen.svg";
|
||||
import cardCalendar from "assets/icons/cardCalendar.svg";
|
||||
import cardImg1 from "assets/images/mock/cardArticleItem.png";
|
||||
import yandexZen from "assets/icons/yandexZen.svg";
|
||||
import cardImg2 from "assets/images/mock/cardArticleItem2.png";
|
||||
import cardImg3 from "assets/images/mock/cardArticleItem3.png";
|
||||
import cardImg1 from "assets/images/mock/cardArticleItem.png";
|
||||
import mockImgArticle from "assets/images/mock/mockImgArticle.png";
|
||||
|
||||
import "./article.scss";
|
||||
|
||||
export const Article = ({}) => {
|
||||
export const Article = () => {
|
||||
const [article] = useState([
|
||||
{
|
||||
image: cardImg1,
|
||||
|
@ -3,27 +3,28 @@ import { useDispatch, useSelector } from "react-redux";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { loading, selectIsLoading } from "@redux/loaderSlice";
|
||||
import { apiRequest } from "@api/request";
|
||||
import { auth, selectAuth, setUserInfo } from "@redux/outstaffingSlice";
|
||||
import { setRole } from "@redux/roleSlice";
|
||||
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
import CategoriesItem from "@components/CategoriesItem/CategoriesItem";
|
||||
import StepsForCandidate from "@components/StepsForCandidate/StepsForCandidate";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import CategoriesItem from "@components/CategoriesItem/CategoriesItem";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
import StepsForCandidate from "@components/StepsForCandidate/StepsForCandidate";
|
||||
|
||||
import BackEndImg from "assets/images/partnerProfile/personalBackEnd.svg";
|
||||
import FrontendImg from "assets/images/partnerProfile/PersonalFrontend.svg";
|
||||
import ArchitectureImg from "assets/images/partnerProfile/PersonalArchitecture.svg";
|
||||
import DesignImg from "assets/images/partnerProfile/PersonalDesign.svg";
|
||||
import TestImg from "assets/images/partnerProfile/PersonalTesters.svg";
|
||||
import AdminImg from "assets/images/partnerProfile/PersonalAdmin.svg";
|
||||
import ManageImg from "assets/images/partnerProfile/PersonalMng.svg";
|
||||
import CopyImg from "assets/images/partnerProfile/PersonalCopy.svg";
|
||||
import SmmImg from "assets/images/partnerProfile/PersonalSMM.svg";
|
||||
import authImg from "assets/images/partnerProfile/authCandidateFormImg.png";
|
||||
import arrowBtn from "assets/icons/arrows/arrowRight.svg";
|
||||
import AdminImg from "assets/images/partnerProfile/PersonalAdmin.svg";
|
||||
import ArchitectureImg from "assets/images/partnerProfile/PersonalArchitecture.svg";
|
||||
import CopyImg from "assets/images/partnerProfile/PersonalCopy.svg";
|
||||
import DesignImg from "assets/images/partnerProfile/PersonalDesign.svg";
|
||||
import FrontendImg from "assets/images/partnerProfile/PersonalFrontend.svg";
|
||||
import ManageImg from "assets/images/partnerProfile/PersonalMng.svg";
|
||||
import SmmImg from "assets/images/partnerProfile/PersonalSMM.svg";
|
||||
import TestImg from "assets/images/partnerProfile/PersonalTesters.svg";
|
||||
import authImg from "assets/images/partnerProfile/authCandidateFormImg.png";
|
||||
import BackEndImg from "assets/images/partnerProfile/personalBackEnd.svg";
|
||||
|
||||
import "./authForCandidate.scss";
|
||||
|
||||
|
@ -3,21 +3,22 @@ import { useSelector } from "react-redux";
|
||||
import { Link, useNavigate } from "react-router-dom";
|
||||
|
||||
import { selectAuth } from "@redux/outstaffingSlice";
|
||||
|
||||
import { scrollToForm } from "@utils/helper";
|
||||
|
||||
import { AuthBox } from "@components/AuthBox/AuthBox";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import SliderWorkers from "@components/SliderWorkers/SliderWorkers";
|
||||
import { AuthBox } from "@components/AuthBox/AuthBox";
|
||||
|
||||
import arrow from "assets/icons/arrows/arrow__login_page.png";
|
||||
import medium from "assets/images/medium_male_big.png";
|
||||
import cross from "assets/images/cross.png";
|
||||
import text from "assets/images/Body_Text.png";
|
||||
import arrowBtn from "assets/icons/arrows/arrowRight.svg";
|
||||
import arrow from "assets/icons/arrows/arrow__login_page.png";
|
||||
import text from "assets/images/Body_Text.png";
|
||||
import vector from "assets/images/Vector_Smart_Object.png";
|
||||
import vectorBlack from "assets/images/Vector_Smart_Object_black.png";
|
||||
import cross from "assets/images/cross.png";
|
||||
import medium from "assets/images/medium_male_big.png";
|
||||
|
||||
import "./authForDevelopers.scss";
|
||||
|
||||
|
@ -3,21 +3,22 @@ import { useSelector } from "react-redux";
|
||||
import { Link, useNavigate } from "react-router-dom";
|
||||
|
||||
import { selectAuth } from "@redux/outstaffingSlice";
|
||||
|
||||
import { scrollToForm } from "@utils/helper";
|
||||
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { AuthBox } from "@components/AuthBox/AuthBox";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
import SliderWorkers from "@components/SliderWorkers/SliderWorkers";
|
||||
|
||||
import arrow from "assets/icons/arrows/arrow__login_page.png";
|
||||
import authImg from "assets/images/auth_img.png";
|
||||
import cross from "assets/images/cross.png";
|
||||
import text from "assets/images/Body_Text.png";
|
||||
import arrowBtn from "assets/icons/arrows/arrowRight.svg";
|
||||
import arrow from "assets/icons/arrows/arrow__login_page.png";
|
||||
import text from "assets/images/Body_Text.png";
|
||||
import vector from "assets/images/Vector_Smart_Object.png";
|
||||
import vectorBlack from "assets/images/Vector_Smart_Object_black.png";
|
||||
import authImg from "assets/images/auth_img.png";
|
||||
import cross from "assets/images/cross.png";
|
||||
|
||||
import "./authForPartners.scss";
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
import React, { useState } from "react";
|
||||
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import CardArticle from "@components/CardArticle/CardArticle";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
|
||||
import blogArrow from "assets/icons/arrows/blogArrow.svg";
|
||||
import cardImg1 from "assets/images/mock/cardArticleItem.png";
|
||||
import cardImg2 from "assets/images/mock/cardArticleItem2.png";
|
||||
import cardImg3 from "assets/images/mock/cardArticleItem3.png";
|
||||
import cardImg4 from "assets/images/mock/cardArticleItem4.png";
|
||||
import cardImg5 from "assets/images/mock/cardArticleItem5.png";
|
||||
import cardImg6 from "assets/images/mock/cardArticleItem6.png";
|
||||
import cardImg1 from "assets/images/mock/cardArticleItem.png";
|
||||
|
||||
import "./blog.scss";
|
||||
|
||||
export const Blog = ({}) => {
|
||||
export const Blog = () => {
|
||||
const [article] = useState([
|
||||
{
|
||||
image: cardImg1,
|
||||
|
@ -1,6 +1,7 @@
|
||||
import React from "react";
|
||||
import { BookkeepingTemplete } from "@components/features/bookkeeping/BookkeepingTemplete/BookkeepingTemplete";
|
||||
|
||||
import { BookkeepingContent } from "@components/features/bookkeeping/BookkeepingContent/BookkeepingContent";
|
||||
import { BookkeepingTemplete } from "@components/features/bookkeeping/BookkeepingTemplete/BookkeepingTemplete";
|
||||
|
||||
const Bookkeeping = () => {
|
||||
return (
|
||||
|
@ -1,23 +1,25 @@
|
||||
import React, { useEffect } from "react";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
import { useParams, useNavigate, Navigate } from "react-router-dom";
|
||||
import SVG from "react-inlinesvg";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
import { Navigate, useNavigate, useParams } from "react-router-dom";
|
||||
|
||||
import { LEVELS, SKILLS } from "@utils/constants";
|
||||
import {
|
||||
currentCandidate,
|
||||
selectCurrentCandidate,
|
||||
} from "@redux/outstaffingSlice";
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import { LEVELS, SKILLS } from "@utils/constants";
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
|
||||
import Form from "@components/Form/Form";
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import Form from "@components/Form/Form";
|
||||
import { LogoutButton } from "@components/LogoutButton/LogoutButton";
|
||||
|
||||
import arrow from "assets/icons/arrows/left-arrow.png";
|
||||
import rectangle from "assets/images/rectangle_secondPage.png";
|
||||
import telegramIcon from "assets/icons/telegram-icon.svg";
|
||||
import rectangle from "assets/images/rectangle_secondPage.png";
|
||||
|
||||
import "./formPage.scss";
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
import { useEffect, useState } from "react";
|
||||
import { useNavigate, useParams } from "react-router";
|
||||
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
|
||||
import arrowBtn from "assets/icons/arrows/arrowRight.svg";
|
||||
|
||||
@ -13,7 +13,7 @@ import "./FrequentlyAskedQuestion.scss";
|
||||
export const FrequentlyAskedQuestion = () => {
|
||||
const params = useParams();
|
||||
const navigate = useNavigate();
|
||||
const [question, setQuestion] = useState({
|
||||
const [question] = useState({
|
||||
id: params.id,
|
||||
title: "Это фриланс-платформа?",
|
||||
answer:
|
||||
|
@ -1,9 +1,9 @@
|
||||
import React from "react";
|
||||
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { FrequentlyAskedQuestionsItem } from "@components/FrequentlyAskedQuestionsItem/FrequentlyAskedQuestionsItem";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
|
||||
import arrow from "assets/images/faq/arrow.svg";
|
||||
|
@ -1,16 +1,17 @@
|
||||
import React, { useState, useEffect } from "react";
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { useDispatch } from "react-redux";
|
||||
import { Navigate } from "react-router-dom";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
import { profiles, tags } from "@redux/outstaffingSlice";
|
||||
|
||||
import Outstaffing from "@components/Outstaffing/Outstaffing";
|
||||
import Description from "@components/Description/Description";
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import Description from "@components/Description/Description";
|
||||
import { Navigation } from "@components/Navigation/Navigation";
|
||||
import Outstaffing from "@components/Outstaffing/Outstaffing";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
|
||||
const Home = () => {
|
||||
if (localStorage.getItem("role_status") !== "18") {
|
||||
|
@ -2,19 +2,20 @@ import React, { useEffect, useState } from "react";
|
||||
import { useSelector } from "react-redux";
|
||||
import { Link, Navigate, useNavigate } from "react-router-dom";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
import { getPartnerRequestInfo } from "@redux/outstaffingSlice";
|
||||
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
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 arrowDown from "assets/icons/arrows/selectArrow.png";
|
||||
import deleteIcon from "assets/icons/close.png";
|
||||
import processImg from "assets/images/partnerProfile/partnerAddRequestFirstImg.png";
|
||||
import reportImg from "assets/images/partnerProfile/partnerAddRequestSecondImg.png";
|
||||
import documentsImg from "assets/images/partnerProfile/partnerAddRequestThirdInfo.png";
|
||||
import deleteIcon from "assets/icons/close.png";
|
||||
|
||||
import "./partnerAddRequest.scss";
|
||||
|
||||
@ -116,7 +117,7 @@ export const PartnerAddRequest = () => {
|
||||
return skill.id;
|
||||
}),
|
||||
},
|
||||
}).then((res) => {
|
||||
}).then(() => {
|
||||
navigate("/profile/requests");
|
||||
});
|
||||
} else {
|
||||
@ -134,7 +135,7 @@ export const PartnerAddRequest = () => {
|
||||
return skill.id;
|
||||
}),
|
||||
},
|
||||
}).then((res) => {
|
||||
}).then(() => {
|
||||
navigate("/profile/requests");
|
||||
});
|
||||
}
|
||||
@ -205,7 +206,7 @@ export const PartnerAddRequest = () => {
|
||||
{openSpecializationList &&
|
||||
Boolean(specializationList.length) && (
|
||||
<div className="form__block__dropDown">
|
||||
{specializationList.map((specialization, index) => {
|
||||
{specializationList.map((specialization) => {
|
||||
return (
|
||||
<p
|
||||
key={specialization.id}
|
||||
|
@ -1,22 +1,25 @@
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
import { Link, Navigate, useNavigate } from "react-router-dom";
|
||||
import { useSelector, useDispatch } from "react-redux";
|
||||
|
||||
import {
|
||||
getPartnerRequestId,
|
||||
getPartnerRequests,
|
||||
setPartnerRequestId,
|
||||
setPartnerRequestInfo,
|
||||
} from "@redux/outstaffingSlice";
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import { getCorrectDate } from "@components/Calendar/calendarHelper";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { Navigation } from "@components/Navigation/Navigation";
|
||||
import { Loader } from "@components/Common/Loader/Loader";
|
||||
import ModalLayout from "@components/Common/ModalLayout/ModalLayout";
|
||||
import { getCorrectDate } from "@components/Calendar/calendarHelper";
|
||||
import { Navigation } from "@components/Navigation/Navigation";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
|
||||
import arrowSwitchDate from "assets/icons/arrows/arrowViewReport.png";
|
||||
import backEndImg from "assets/images/QualificationInfo.png";
|
||||
@ -56,7 +59,7 @@ export const PartnerBid = () => {
|
||||
request_id: requestId,
|
||||
status: 0,
|
||||
},
|
||||
}).then((res) => {
|
||||
}).then(() => {
|
||||
navigate("/profile/requests");
|
||||
});
|
||||
};
|
||||
|
@ -1,15 +1,16 @@
|
||||
import React from "react";
|
||||
import { Link, Navigate } from "react-router-dom";
|
||||
import { useSelector } from "react-redux";
|
||||
import { Link, Navigate } from "react-router-dom";
|
||||
|
||||
import { getPartnerEmployees } from "@redux/outstaffingSlice";
|
||||
|
||||
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 { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
|
||||
import imgInfo from "assets/images/emplInfo.png";
|
||||
import rightArrow from "assets/icons/arrows/arrowRight.svg";
|
||||
import imgInfo from "assets/images/emplInfo.png";
|
||||
|
||||
import "./partnerEmployees.scss";
|
||||
|
||||
|
@ -1,19 +1,21 @@
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { Link, Navigate } from "react-router-dom";
|
||||
import { useDispatch } from "react-redux";
|
||||
import { Link, Navigate } from "react-router-dom";
|
||||
|
||||
import {
|
||||
setPartnerRequestId,
|
||||
setPartnerRequests,
|
||||
} from "@redux/outstaffingSlice";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import { Navigation } from "@components/Navigation/Navigation";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { SliderWorkers } from "@components/SliderWorkers/SliderWorkers";
|
||||
import { Loader } from "@components/Common/Loader/Loader";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import BaseButton from "@components/Common/BaseButton/BaseButton";
|
||||
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 { SliderWorkers } from "@components/SliderWorkers/SliderWorkers";
|
||||
|
||||
import cursorImg from "assets/icons/cursorImg.svg";
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
import React from "react";
|
||||
|
||||
import BaseButton from "@components/Common/BaseButton/BaseButton";
|
||||
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 { Navigation } from "@components/Navigation/Navigation";
|
||||
import BaseButton from "@components/Common/BaseButton/BaseButton";
|
||||
|
||||
import kontur from "assets/images/logo/konturLogo.png";
|
||||
import astral from "assets/images/logo/astralLogo.png";
|
||||
import kontur from "assets/images/logo/konturLogo.png";
|
||||
|
||||
import "./partnerSettings.scss";
|
||||
|
||||
|
@ -1,19 +1,19 @@
|
||||
import React, { useState } from "react";
|
||||
|
||||
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 { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
|
||||
import mainTabImg from "assets/icons/mainTreaties.png";
|
||||
import actImg from "assets/icons/actTreaties.png";
|
||||
import checkImg from "assets/icons/checkTreaties.png";
|
||||
import arrowDown from "assets/icons/arrows/arrowDown.png";
|
||||
import logoAstral from "assets/images/logo/astralLogo.png";
|
||||
import arrowItem from "assets/icons/arrows/arrowCheck.png";
|
||||
import arrowDown from "assets/icons/arrows/arrowDown.png";
|
||||
import checkImg from "assets/icons/checkTreaties.png";
|
||||
import lock from "assets/icons/lock.svg";
|
||||
import lockDone from "assets/icons/lockDone.svg";
|
||||
import mainTabImg from "assets/icons/mainTreaties.png";
|
||||
import avatarMok from "assets/images/avatarMok.png";
|
||||
import logoAstral from "assets/images/logo/astralLogo.png";
|
||||
|
||||
import "./partnerTreaties.scss";
|
||||
|
||||
|
@ -1,28 +1,28 @@
|
||||
import React, { useState } from "react";
|
||||
import { useDispatch } from "react-redux";
|
||||
import { Link } from "react-router-dom";
|
||||
import { Navigate } from "react-router-dom";
|
||||
import { useDispatch } from "react-redux";
|
||||
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
|
||||
import { setPartnerEmployees } from "@redux/outstaffingSlice";
|
||||
|
||||
import BackEndImg from "assets/images/partnerProfile/personalBackEnd.svg";
|
||||
import FrontendImg from "assets/images/partnerProfile/PersonalFrontend.svg";
|
||||
import ArchitectureImg from "assets/images/partnerProfile/PersonalArchitecture.svg";
|
||||
import DesignImg from "assets/images/partnerProfile/PersonalDesign.svg";
|
||||
import TestImg from "assets/images/partnerProfile/PersonalTesters.svg";
|
||||
import AdminImg from "assets/images/partnerProfile/PersonalAdmin.svg";
|
||||
import ManageImg from "assets/images/partnerProfile/PersonalMng.svg";
|
||||
import CopyImg from "assets/images/partnerProfile/PersonalCopy.svg";
|
||||
import SmmImg from "assets/images/partnerProfile/PersonalSMM.svg";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
|
||||
import rightArrow from "assets/icons/arrows/arrowRight.svg";
|
||||
import avatarImg from "assets/images/avatarMok.png";
|
||||
import AdminImg from "assets/images/partnerProfile/PersonalAdmin.svg";
|
||||
import ArchitectureImg from "assets/images/partnerProfile/PersonalArchitecture.svg";
|
||||
import CopyImg from "assets/images/partnerProfile/PersonalCopy.svg";
|
||||
import DesignImg from "assets/images/partnerProfile/PersonalDesign.svg";
|
||||
import FrontendImg from "assets/images/partnerProfile/PersonalFrontend.svg";
|
||||
import ManageImg from "assets/images/partnerProfile/PersonalMng.svg";
|
||||
import SmmImg from "assets/images/partnerProfile/PersonalSMM.svg";
|
||||
import TestImg from "assets/images/partnerProfile/PersonalTesters.svg";
|
||||
import BackEndImg from "assets/images/partnerProfile/personalBackEnd.svg";
|
||||
|
||||
import "./partnerСategories.scss";
|
||||
import { Navigation } from "../../components/Navigation/Navigation";
|
||||
import "./partnerСategories.scss";
|
||||
|
||||
export const PartnerCategories = () => {
|
||||
const dispatch = useDispatch();
|
||||
|
@ -1,7 +1,7 @@
|
||||
import React from "react";
|
||||
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
import { Navigation } from "@components/Navigation/Navigation";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
|
||||
export const Payouts = () => {
|
||||
return (
|
||||
|
@ -2,20 +2,21 @@ import React, { useState } from "react";
|
||||
import { useSelector } from "react-redux";
|
||||
|
||||
import { getProfileInfo } from "@redux/outstaffingSlice";
|
||||
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { CardControl } from "@components/CardControl/CardControl";
|
||||
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 reportsIcon from "assets/images/reports.png";
|
||||
import summaryIcon from "assets/icons/summaryIcon.png";
|
||||
import timerIcon from "assets/icons/timerIcon.png";
|
||||
import paymentIcon from "assets/icons/paymentIcon.png";
|
||||
import settingIcon from "assets/icons/settingIcon.png";
|
||||
import summaryIcon from "assets/icons/summaryIcon.png";
|
||||
import timerIcon from "assets/icons/timerIcon.png";
|
||||
import avatarMok from "assets/images/avatarMok.png";
|
||||
import reportsIcon from "assets/images/reports.png";
|
||||
|
||||
import "./profile.scss";
|
||||
|
||||
|
@ -1,16 +1,16 @@
|
||||
import React, { useState } from "react";
|
||||
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { CardControl } from "@components/CardControl/CardControl";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
import { HeadBottom } from "@components/features/Candidate-lk/HeadBottom";
|
||||
|
||||
import settingIcon from "assets/icons/settingIcon.png";
|
||||
import reportsIcon from "assets/images/reports.png";
|
||||
import medium_male from "assets/images/medium_male.png";
|
||||
import noteIcon from "assets/images/note.png";
|
||||
import questionIcon from "assets/images/question.png";
|
||||
import medium_male from "assets/images/medium_male.png";
|
||||
import reportsIcon from "assets/images/reports.png";
|
||||
|
||||
import "./ProfileCandidate.scss";
|
||||
|
||||
|
@ -1,40 +1,42 @@
|
||||
import React, { useEffect, useRef, useState } from "react";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
import { Link, useParams } from "react-router-dom";
|
||||
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
import { apiRequest } from "@api/request";
|
||||
import {
|
||||
getProjectBoard,
|
||||
activeLoader,
|
||||
deletePersonOnProject,
|
||||
getBoarderLoader,
|
||||
getProjectBoard,
|
||||
modalToggle,
|
||||
moveProjectTask,
|
||||
setColumnId,
|
||||
setColumnName,
|
||||
setProjectBoardFetch,
|
||||
setToggleTab,
|
||||
activeLoader,
|
||||
setColumnName,
|
||||
setColumnId,
|
||||
deletePersonOnProject,
|
||||
} from "@redux/projectsTrackerSlice";
|
||||
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { Navigation } from "@components/Navigation/Navigation";
|
||||
import { Loader } from "@components/Common/Loader/Loader";
|
||||
import ModalTicket from "@components/Modal/Tracker/ModalTicket/ModalTicket";
|
||||
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 project from "assets/icons/trackerProject.svg";
|
||||
import tasks from "assets/icons/trackerTasks.svg";
|
||||
import archive from "assets/icons/archiveTracker.svg";
|
||||
import selectArrow from "assets/icons/arrows/select.svg";
|
||||
import commentsBoard from "assets/icons/commentsBoard.svg";
|
||||
import filesBoard from "assets/icons/filesBoard.svg";
|
||||
import arrow from "assets/icons/arrows/arrowCalendar.png";
|
||||
import selectArrow from "assets/icons/arrows/select.svg";
|
||||
import close from "assets/icons/closeProjectPersons.svg";
|
||||
import commentsBoard from "assets/icons/commentsBoard.svg";
|
||||
import del from "assets/icons/delete.svg";
|
||||
import edit from "assets/icons/edit.svg";
|
||||
import close from "assets/icons/closeProjectPersons.svg";
|
||||
import filesBoard from "assets/icons/filesBoard.svg";
|
||||
import project from "assets/icons/trackerProject.svg";
|
||||
import tasks from "assets/icons/trackerTasks.svg";
|
||||
|
||||
export const ProjectTracker = () => {
|
||||
const dispatch = useDispatch();
|
||||
@ -150,7 +152,7 @@ export const ProjectTracker = () => {
|
||||
project_id: projectBoard.id,
|
||||
status: 0,
|
||||
},
|
||||
}).then((res) => {
|
||||
}).then(() => {
|
||||
dispatch(setProjectBoardFetch(projectBoard.id));
|
||||
});
|
||||
}
|
||||
@ -162,7 +164,7 @@ export const ProjectTracker = () => {
|
||||
project_id: projectBoard.id,
|
||||
user_id: userId,
|
||||
},
|
||||
}).then((res) => {
|
||||
}).then(() => {
|
||||
dispatch(deletePersonOnProject(userId));
|
||||
});
|
||||
}
|
||||
@ -336,7 +338,7 @@ export const ProjectTracker = () => {
|
||||
<div
|
||||
key={column.id}
|
||||
onDragOver={(e) => dragOverHandler(e)}
|
||||
onDragEnter={(e) => dragEnterHandler(column.id)}
|
||||
onDragEnter={() => dragEnterHandler(column.id)}
|
||||
onDrop={(e) => dragDropHandler(e, column.id)}
|
||||
className={`tasks__board ${
|
||||
column.tasks.length >= 3 ? "tasks__board__more" : ""
|
||||
@ -396,7 +398,7 @@ export const ProjectTracker = () => {
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
{column.tasks.map((task, index) => {
|
||||
{column.tasks.map((task) => {
|
||||
// if (index > 2) {
|
||||
// if (!column.open) {
|
||||
// return;
|
||||
@ -452,7 +454,7 @@ export const ProjectTracker = () => {
|
||||
);
|
||||
})}
|
||||
{Boolean(projectBoard?.columns) &&
|
||||
!Boolean(projectBoard.columns.length) && (
|
||||
!projectBoard.columns.length && (
|
||||
<div className="tasks__board__noItems">
|
||||
В проекте нет задач.
|
||||
</div>
|
||||
|
@ -1,12 +1,12 @@
|
||||
import React from "react";
|
||||
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
import StepsForCandidate from "@components/StepsForCandidate/StepsForCandidate";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
|
||||
import BackEndImg from "assets/images/partnerProfile/personalBackEnd.svg";
|
||||
import arrowBtn from "assets/icons/arrows/arrowRight.svg";
|
||||
import BackEndImg from "assets/images/partnerProfile/personalBackEnd.svg";
|
||||
|
||||
import "./registationForCandidate.scss";
|
||||
|
||||
|
@ -1,12 +1,12 @@
|
||||
import React from "react";
|
||||
import { useNavigate } from "react-router";
|
||||
import SVG from "react-inlinesvg";
|
||||
import { useNavigate } from "react-router";
|
||||
|
||||
import { TaskItem } from "@components/TaskItem/TaskItem";
|
||||
import { LogoutButton } from "@components/LogoutButton/LogoutButton";
|
||||
import { TaskItem } from "@components/TaskItem/TaskItem";
|
||||
|
||||
import arrowLeft from "assets/icons/arrows/left-arrow.png";
|
||||
import dateArrowIcon from "assets/icons/arrows/dateArrow.svg";
|
||||
import arrowLeft from "assets/icons/arrows/left-arrow.png";
|
||||
import calendarIcon from "assets/icons/calendar.svg";
|
||||
|
||||
import "./singleReportPage.scss";
|
||||
@ -66,9 +66,9 @@ const SingleReportPage = () => {
|
||||
<div className="single-report-page__marker"></div>
|
||||
<h3>Какие задачи были выполнены?</h3>
|
||||
</div>
|
||||
{tasks.map((task) => {
|
||||
{tasks.map((task, index) => {
|
||||
return (
|
||||
<div className="single-report-page__tasks-item">
|
||||
<div className="single-report-page__tasks-item" key={index}>
|
||||
<TaskItem {...task} />
|
||||
</div>
|
||||
);
|
||||
|
@ -2,17 +2,19 @@ import React, { useEffect, useState } from "react";
|
||||
import { useSelector } from "react-redux";
|
||||
import { Navigate } from "react-router-dom";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
import { getProfileInfo } from "@redux/outstaffingSlice";
|
||||
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
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 arrow from "assets/icons/arrows/left-arrow.png";
|
||||
import rightArrow from "assets/icons/arrows/arrowRight.svg";
|
||||
import arrow from "assets/icons/arrows/left-arrow.png";
|
||||
import gitImgItem from "assets/icons/gitItemImg.svg";
|
||||
|
||||
import "./summary.scss";
|
||||
|
@ -2,28 +2,30 @@ import React, { useEffect, useState } from "react";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
|
||||
import {
|
||||
setAllProjects,
|
||||
getProjects,
|
||||
setToggleTab,
|
||||
getToggleTab,
|
||||
modalToggle,
|
||||
setAllProjects,
|
||||
setToggleTab,
|
||||
} from "@redux/projectsTrackerSlice";
|
||||
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
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 TrackerModal from "@components/Modal/TrackerModal/TrackerModal";
|
||||
import ProjectTiket from "@components/ProjectTiket/ProjectTiket";
|
||||
import { getCorrectDate } from "@components/Calendar/calendarHelper";
|
||||
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 ProjectTiket from "@components/ProjectTiket/ProjectTiket";
|
||||
|
||||
import project from "assets/icons/trackerProject.svg";
|
||||
import tasks from "assets/icons/trackerTasks.svg";
|
||||
import archive from "assets/icons/archiveTracker.svg";
|
||||
import search from "assets/icons/serchIcon.png";
|
||||
import project from "assets/icons/trackerProject.svg";
|
||||
import tasks from "assets/icons/trackerTasks.svg";
|
||||
import noProjects from "assets/images/noProjects.png";
|
||||
|
||||
import "./tracker.scss";
|
||||
|
@ -1,21 +1,21 @@
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { Link, Navigate, useParams } from "react-router-dom";
|
||||
|
||||
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 { apiRequest } from "@api/request";
|
||||
|
||||
import {
|
||||
getCorrectDate,
|
||||
getCreatedDate,
|
||||
hourOfNum,
|
||||
} 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 arrow from "assets/icons/arrows/left-arrow.png";
|
||||
import arrowSwitchDate from "assets/icons/arrows/arrowViewReport.png";
|
||||
import arrow from "assets/icons/arrows/left-arrow.png";
|
||||
|
||||
import "./viewReport.scss";
|
||||
|
||||
|
@ -1,23 +1,19 @@
|
||||
import React, { useState } from "react";
|
||||
import { useSelector } from "react-redux";
|
||||
import { Link } from "react-router-dom";
|
||||
import { completedTestSelector, selectedTest } from "@redux/quizSlice";
|
||||
|
||||
import { completedTestSelector } from "@redux/quizSlice";
|
||||
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
import { HeadBottom } from "@components/features/Candidate-lk/HeadBottom";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { QuizPassingInformation } from "@components/features/quiz/Quiz-passing-information";
|
||||
import { CardIntroduction } from "@components/features/quiz/Card-introduction";
|
||||
import { TaskQuiz } from "@components/features/quiz/Task";
|
||||
import { BlockCompletedTest } from "@components/features/quiz/BlockCompletedTest";
|
||||
import { CardIntroduction } from "@components/features/quiz/Card-introduction";
|
||||
import { QuizPassingInformation } from "@components/features/quiz/Quiz-passing-information";
|
||||
import { TaskQuiz } from "@components/features/quiz/Task";
|
||||
|
||||
export const PassingTests = () => {
|
||||
//const selectedTest = useSelector(selectedTest)
|
||||
|
||||
if ("") {
|
||||
}
|
||||
|
||||
const time = new Date();
|
||||
time.setSeconds(time.getSeconds() + 600); //600 - кол-во секунд для прохождения теста
|
||||
|
||||
|
@ -1,26 +1,28 @@
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import { questionnairesSelector, setQuestionnaires } from "@redux/quizSlice";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import CategoriesItem from "@components/CategoriesItem/CategoriesItem";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
import { HeadBottom } from "@components/features/Candidate-lk/HeadBottom";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { SelectedCategory } from "@components/features/quiz/SelectedCategory";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { CardAvailableTest } from "@components/features/quiz/CardAviableTest";
|
||||
import CategoriesItem from "@components/CategoriesItem/CategoriesItem";
|
||||
import { SelectedCategory } from "@components/features/quiz/SelectedCategory";
|
||||
|
||||
import BackEndImg from "assets/images/partnerProfile/personalBackEnd.svg";
|
||||
import FrontendImg from "assets/images/partnerProfile/PersonalFrontend.svg";
|
||||
import ArchitectureImg from "assets/images/partnerProfile/PersonalArchitecture.svg";
|
||||
import DesignImg from "assets/images/partnerProfile/PersonalDesign.svg";
|
||||
import TestImg from "assets/images/partnerProfile/PersonalTesters.svg";
|
||||
import AdminImg from "assets/images/partnerProfile/PersonalAdmin.svg";
|
||||
import ManageImg from "assets/images/partnerProfile/PersonalMng.svg";
|
||||
import ArchitectureImg from "assets/images/partnerProfile/PersonalArchitecture.svg";
|
||||
import CopyImg from "assets/images/partnerProfile/PersonalCopy.svg";
|
||||
import DesignImg from "assets/images/partnerProfile/PersonalDesign.svg";
|
||||
import FrontendImg from "assets/images/partnerProfile/PersonalFrontend.svg";
|
||||
import ManageImg from "assets/images/partnerProfile/PersonalMng.svg";
|
||||
import SmmImg from "assets/images/partnerProfile/PersonalSMM.svg";
|
||||
import TestImg from "assets/images/partnerProfile/PersonalTesters.svg";
|
||||
import BackEndImg from "assets/images/partnerProfile/personalBackEnd.svg";
|
||||
|
||||
import "./quiz-page.scss";
|
||||
|
||||
|
@ -1,15 +1,15 @@
|
||||
import React from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
import { useSelector } from "react-redux";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { selectedTest } from "@redux/quizSlice";
|
||||
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
import { HeadBottom } from "@components/features/Candidate-lk/HeadBottom";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { QuizReport } from "@components/features/quiz/QuizReport";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { AlertResult } from "@components/features/quiz/AlertResult";
|
||||
import { QuizReport } from "@components/features/quiz/QuizReport";
|
||||
|
||||
export const QuizReportPage = () => {
|
||||
const test = useSelector(selectedTest);
|
||||
|
@ -1,11 +1,11 @@
|
||||
import { createSlice } from '@reduxjs/toolkit';
|
||||
import { createSlice } from "@reduxjs/toolkit";
|
||||
|
||||
const initialState = {
|
||||
isLoading: false,
|
||||
};
|
||||
|
||||
export const loaderSlice = createSlice({
|
||||
name: 'loader',
|
||||
name: "loader",
|
||||
initialState,
|
||||
reducers: {
|
||||
loading: (state, action) => {
|
||||
|
@ -1,23 +1,23 @@
|
||||
import { createSlice } from '@reduxjs/toolkit';
|
||||
import { createSlice } from "@reduxjs/toolkit";
|
||||
|
||||
const initialState = {
|
||||
tags: [],
|
||||
profiles: [],
|
||||
filteredCandidates:null,
|
||||
filteredCandidates: null,
|
||||
selectedItems: [],
|
||||
currentCandidate: {},
|
||||
auth: false,
|
||||
positionId: null,
|
||||
profileInfo: {},
|
||||
reportsDates: '',
|
||||
reportsDates: "",
|
||||
partnerEmployees: [],
|
||||
partnerRequestId: null,
|
||||
partnerRequests: [],
|
||||
partnerRequestInfo: {}
|
||||
partnerRequestInfo: {},
|
||||
};
|
||||
|
||||
export const outstaffingSlice = createSlice({
|
||||
name: 'outstaffing',
|
||||
name: "outstaffing",
|
||||
initialState,
|
||||
reducers: {
|
||||
tags: (state, action) => {
|
||||
@ -51,35 +51,55 @@ export const outstaffingSlice = createSlice({
|
||||
state.reportsDates = action.payload;
|
||||
},
|
||||
setPartnerEmployees: (state, action) => {
|
||||
state.partnerEmployees = action.payload
|
||||
state.partnerEmployees = action.payload;
|
||||
},
|
||||
setPartnerRequestId: (state, action) => {
|
||||
state.partnerRequestId = action.payload
|
||||
state.partnerRequestId = action.payload;
|
||||
},
|
||||
setPartnerRequests: (state, action) => {
|
||||
state.partnerRequests = action.payload
|
||||
state.partnerRequests = action.payload;
|
||||
},
|
||||
setPartnerRequestInfo: (state, action) => {
|
||||
state.partnerRequestInfo = action.payload
|
||||
}
|
||||
state.partnerRequestInfo = action.payload;
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
export const { tags, profiles, selectedItems, auth, currentCandidate, filteredCandidates, setPositionId, setUserInfo, setProfileInfo, setReportsDates, setPartnerEmployees, setPartnerRequestId, setPartnerRequests, setPartnerRequestInfo } = outstaffingSlice.actions;
|
||||
export const {
|
||||
tags,
|
||||
profiles,
|
||||
selectedItems,
|
||||
auth,
|
||||
currentCandidate,
|
||||
filteredCandidates,
|
||||
setPositionId,
|
||||
setUserInfo,
|
||||
setProfileInfo,
|
||||
setReportsDates,
|
||||
setPartnerEmployees,
|
||||
setPartnerRequestId,
|
||||
setPartnerRequests,
|
||||
setPartnerRequestInfo,
|
||||
} = outstaffingSlice.actions;
|
||||
|
||||
export const selectProfiles = (state) => state.outstaffing.profiles;
|
||||
export const selectTags = (state) => state.outstaffing.tags;
|
||||
export const selectFilteredCandidates = (state) => state.outstaffing.filteredCandidates;
|
||||
export const selectFilteredCandidates = (state) =>
|
||||
state.outstaffing.filteredCandidates;
|
||||
export const selectItems = (state) => state.outstaffing.selectedItems;
|
||||
export const selectCurrentCandidate = (state) => state.outstaffing.currentCandidate;
|
||||
export const selectCurrentCandidate = (state) =>
|
||||
state.outstaffing.currentCandidate;
|
||||
export const selectAuth = (state) => state.outstaffing.auth;
|
||||
export const getPositionId = (state) => state.outstaffing.positionId;
|
||||
export const getProfileInfo = (state) => state.outstaffing.profileInfo;
|
||||
export const getPartnerRequestInfo = (state) => state.outstaffing.partnerRequestInfo;
|
||||
export const getPartnerRequestInfo = (state) =>
|
||||
state.outstaffing.partnerRequestInfo;
|
||||
export const selectUserInfo = (state) => state.outstaffing.userInfo;
|
||||
export const getReportsDates = (state) => state.outstaffing.reportsDates;
|
||||
export const getPartnerEmployees = (state) => state.outstaffing.partnerEmployees;
|
||||
export const getPartnerRequestId = (state) => state.outstaffing.partnerRequestId;
|
||||
export const getPartnerEmployees = (state) =>
|
||||
state.outstaffing.partnerEmployees;
|
||||
export const getPartnerRequestId = (state) =>
|
||||
state.outstaffing.partnerRequestId;
|
||||
export const getPartnerRequests = (state) => state.outstaffing.partnerRequests;
|
||||
|
||||
export default outstaffingSlice.reducer;
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { createAsyncThunk, createSlice } from "@reduxjs/toolkit";
|
||||
|
||||
import { apiRequest } from "../api/request";
|
||||
|
||||
const initialState = {
|
||||
@ -8,7 +9,7 @@ const initialState = {
|
||||
modalType: "",
|
||||
boardLoader: false,
|
||||
columnName: "",
|
||||
columnId: 0
|
||||
columnId: 0,
|
||||
};
|
||||
|
||||
export const setProjectBoardFetch = createAsyncThunk("userInfo", (id) =>
|
||||
@ -35,11 +36,13 @@ export const projectsTrackerSlice = createSlice({
|
||||
}
|
||||
});
|
||||
},
|
||||
deletePersonOnProject: (state,action) => {
|
||||
state.projectBoard.projectUsers = state.projectBoard.projectUsers.filter((person) => person.user_id !== action.payload)
|
||||
deletePersonOnProject: (state, action) => {
|
||||
state.projectBoard.projectUsers = state.projectBoard.projectUsers.filter(
|
||||
(person) => person.user_id !== action.payload
|
||||
);
|
||||
},
|
||||
addPersonToProject: (state, action) => {
|
||||
state.projectBoard.projectUsers.push(action.payload)
|
||||
state.projectBoard.projectUsers.push(action.payload);
|
||||
},
|
||||
activeLoader: (state) => {
|
||||
state.boardLoader = true;
|
||||
@ -54,7 +57,7 @@ export const projectsTrackerSlice = createSlice({
|
||||
task_id: action.payload.startWrapperIndex.task.id,
|
||||
column_id: column.id,
|
||||
},
|
||||
}).then((res) => {});
|
||||
}).then(() => {});
|
||||
}
|
||||
if (column.id === action.payload.startWrapperIndex.index) {
|
||||
state.projectBoard.columns[index].tasks = column.tasks.filter(
|
||||
@ -64,10 +67,10 @@ export const projectsTrackerSlice = createSlice({
|
||||
});
|
||||
},
|
||||
setColumnName: (state, action) => {
|
||||
state.columnName = action.payload
|
||||
state.columnName = action.payload;
|
||||
},
|
||||
setColumnId: (state, action) => {
|
||||
state.columnId = action.payload
|
||||
state.columnId = action.payload;
|
||||
},
|
||||
editProjectName: (state, action) => {
|
||||
state.projects.forEach((project) => {
|
||||
@ -79,9 +82,9 @@ export const projectsTrackerSlice = createSlice({
|
||||
editColumnName: (state, action) => {
|
||||
state.projectBoard.columns.forEach((column) => {
|
||||
if (column.id === action.payload.id) {
|
||||
column.title = action.payload.title
|
||||
column.title = action.payload.title;
|
||||
}
|
||||
})
|
||||
});
|
||||
},
|
||||
modalToggle: (state, action) => {
|
||||
state.modalType = action.payload;
|
||||
@ -108,7 +111,7 @@ export const {
|
||||
editColumnName,
|
||||
setColumnId,
|
||||
deletePersonOnProject,
|
||||
addPersonToProject
|
||||
addPersonToProject,
|
||||
} = projectsTrackerSlice.actions;
|
||||
|
||||
export const getProjects = (state) => state.tracker.projects;
|
||||
|
@ -1,71 +1,72 @@
|
||||
import {createAsyncThunk, createSlice} from '@reduxjs/toolkit';
|
||||
|
||||
import {apiRequest} from "../api/request";
|
||||
import { createAsyncThunk, createSlice } from "@reduxjs/toolkit";
|
||||
|
||||
import { apiRequest } from "../api/request";
|
||||
|
||||
const initialState = {
|
||||
answers: [
|
||||
{
|
||||
"id": "12",
|
||||
"question_id": "7",
|
||||
"answer_body": "Нsdf sfd fds sdf sf sfsdf sdfеск вsdffsdfsdf sf sdf sdfsdfsdfsdfdsjknsdkf dssdjf sdfbsdhf sd hjdsfv sdhjvар1 отв1 истина"
|
||||
id: "12",
|
||||
question_id: "7",
|
||||
answer_body:
|
||||
"Нsdf sfd fds sdf sf sfsdf sdfеск вsdffsdfsdf sf sdf sdfsdfsdfsdfdsjknsdkf dssdjf sdfbsdhf sd hjdsfv sdhjvар1 отв1 истина",
|
||||
},
|
||||
{
|
||||
"id": "23",
|
||||
"question_id": "7",
|
||||
"answer_body": "Неск вар1 отв1 истина"
|
||||
id: "23",
|
||||
question_id: "7",
|
||||
answer_body: "Неск вар1 отв1 истина",
|
||||
},
|
||||
{
|
||||
"id": "233",
|
||||
"question_id": "7",
|
||||
"answer_body": "lorem sdfdsf dfs sdf "
|
||||
id: "233",
|
||||
question_id: "7",
|
||||
answer_body: "lorem sdfdsf dfs sdf ",
|
||||
},
|
||||
],
|
||||
questionnaires: [],
|
||||
questions: [
|
||||
{
|
||||
"id": "4",
|
||||
"question_type_id": "3",
|
||||
"question_body": "Для чего в Python используется встроенная функция enumerate()?",
|
||||
"question_priority": null,
|
||||
"next_question": null,
|
||||
"time_limit": "00:22:00"
|
||||
id: "4",
|
||||
question_type_id: "3",
|
||||
question_body:
|
||||
"Для чего в Python используется встроенная функция enumerate()?",
|
||||
question_priority: null,
|
||||
next_question: null,
|
||||
time_limit: "00:22:00",
|
||||
},
|
||||
{
|
||||
"id": "24",
|
||||
"question_type_id": "3",
|
||||
"question_body": "Для чего в Python dfsf троенная функция enumerate()?",
|
||||
"question_priority": null,
|
||||
"next_question": null,
|
||||
"time_limit": "00:22:00"
|
||||
id: "24",
|
||||
question_type_id: "3",
|
||||
question_body: "Для чего в Python dfsf троенная функция enumerate()?",
|
||||
question_priority: null,
|
||||
next_question: null,
|
||||
time_limit: "00:22:00",
|
||||
},
|
||||
{
|
||||
"id": "41",
|
||||
"question_type_id": "3",
|
||||
"question_body": "Для чегоsdfsdfя функция enumerate()?",
|
||||
"question_priority": null,
|
||||
"next_question": null,
|
||||
"time_limit": "00:22:00"
|
||||
id: "41",
|
||||
question_type_id: "3",
|
||||
question_body: "Для чегоsdfsdfя функция enumerate()?",
|
||||
question_priority: null,
|
||||
next_question: null,
|
||||
time_limit: "00:22:00",
|
||||
},
|
||||
{
|
||||
"id": "5",
|
||||
"question_type_id": '2',
|
||||
"question_body": "Один ответ2",
|
||||
"question_priority": null,
|
||||
"next_question": null,
|
||||
"time_limit": "00:22:00"
|
||||
}
|
||||
id: "5",
|
||||
question_type_id: "2",
|
||||
question_body: "Один ответ2",
|
||||
question_priority: null,
|
||||
next_question: null,
|
||||
time_limit: "00:22:00",
|
||||
},
|
||||
],
|
||||
selectedTest: {
|
||||
"user_id": 1,
|
||||
"uuid": "d222f858-60fd-47fb-8731-dc9d5fc384c5",
|
||||
"score": 11,
|
||||
"status": 2,
|
||||
"percent_correct_answers": 0.25,
|
||||
"testing_date": "2022-03-17 11:14:22",
|
||||
"questionnaire_title": "Кат1 Анкета 1 активна"
|
||||
selectedTest: {
|
||||
user_id: 1,
|
||||
uuid: "d222f858-60fd-47fb-8731-dc9d5fc384c5",
|
||||
score: 11,
|
||||
status: 2,
|
||||
percent_correct_answers: 0.25,
|
||||
testing_date: "2022-03-17 11:14:22",
|
||||
questionnaire_title: "Кат1 Анкета 1 активна",
|
||||
},
|
||||
selectedAnswers:{},
|
||||
selectedAnswers: {},
|
||||
completedTest: false,
|
||||
result: null,
|
||||
isLoading: false,
|
||||
@ -73,51 +74,52 @@ const initialState = {
|
||||
passedTests: [],
|
||||
|
||||
userInfo: null,
|
||||
|
||||
};
|
||||
export const setUserInfo = createAsyncThunk(
|
||||
'userInfo',
|
||||
(id) =>
|
||||
apiRequest(`/profile/get-main-data?user_id=${id}`)
|
||||
export const setUserInfo = createAsyncThunk("userInfo", (id) =>
|
||||
apiRequest(`/profile/get-main-data?user_id=${id}`)
|
||||
);
|
||||
|
||||
export const fetchUserAnswersMany = createAsyncThunk(
|
||||
'answersUserMany',
|
||||
(checkedValues) =>
|
||||
apiRequest('/user-response/set-responses', {method: 'POST', data: {"userResponses": checkedValues}})
|
||||
"answersUserMany",
|
||||
(checkedValues) =>
|
||||
apiRequest("/user-response/set-responses", {
|
||||
method: "POST",
|
||||
data: { userResponses: checkedValues },
|
||||
})
|
||||
);
|
||||
|
||||
export const fetchUserAnswerOne = createAsyncThunk(
|
||||
'answersUserOne',
|
||||
(checkedValues) =>
|
||||
apiRequest('/user-response/set-response', {method: 'POST', data: checkedValues[0]})
|
||||
"answersUserOne",
|
||||
(checkedValues) =>
|
||||
apiRequest("/user-response/set-response", {
|
||||
method: "POST",
|
||||
data: checkedValues[0],
|
||||
})
|
||||
);
|
||||
|
||||
export const fetchGetAnswers = createAsyncThunk(
|
||||
'answers',
|
||||
(question_id) =>
|
||||
apiRequest(`/answer/get-answers?question_id=${question_id}`)
|
||||
export const fetchGetAnswers = createAsyncThunk("answers", (question_id) =>
|
||||
apiRequest(`/answer/get-answers?question_id=${question_id}`)
|
||||
);
|
||||
|
||||
export const fetchResultTest = createAsyncThunk(
|
||||
'result',
|
||||
(uuid) =>
|
||||
apiRequest(`/user-questionnaire/questionnaire-completed?user_questionnaire_uuid=${uuid}`)
|
||||
export const fetchResultTest = createAsyncThunk("result", (uuid) =>
|
||||
apiRequest(
|
||||
`/user-questionnaire/questionnaire-completed?user_questionnaire_uuid=${uuid}`
|
||||
)
|
||||
);
|
||||
|
||||
export const quizSlice = createSlice({
|
||||
name: 'quiz',
|
||||
name: "quiz",
|
||||
initialState,
|
||||
reducers: {
|
||||
setQuestionnaires: (state, action) => {
|
||||
state.questionnaires = action.payload;
|
||||
},
|
||||
setSelectedTest: (state, action) => {
|
||||
state.selectedTest = action.payload
|
||||
state.selectedTest = action.payload;
|
||||
},
|
||||
setCompleteTest: (state) => {
|
||||
state.completedTest = true;
|
||||
},
|
||||
setCompleteTest: (state, action) => {
|
||||
state.completedTest = true
|
||||
}
|
||||
},
|
||||
extraReducers: {
|
||||
[setUserInfo.fulfilled]: (state, action) => {
|
||||
@ -132,21 +134,18 @@ export const quizSlice = createSlice({
|
||||
},
|
||||
});
|
||||
|
||||
export const {setQuestionnaires, setSelectedTest, setCompleteTest} = quizSlice.actions;
|
||||
|
||||
export const { setQuestionnaires, setSelectedTest, setCompleteTest } =
|
||||
quizSlice.actions;
|
||||
|
||||
export const answersSelector = (state) => state.quiz.answers;
|
||||
export const questionnairesSelector = (state) => state.quiz.questionnaires;
|
||||
export const selectedAnswersSelector = (state) => state.quiz.selectedAnswers
|
||||
export const questionsSelector = (state) => state.quiz.questions
|
||||
export const completedTestSelector = (state) => state.quiz.completedTest
|
||||
export const selectedAnswersSelector = (state) => state.quiz.selectedAnswers;
|
||||
export const questionsSelector = (state) => state.quiz.questions;
|
||||
export const completedTestSelector = (state) => state.quiz.completedTest;
|
||||
|
||||
export const selectResult = (state) => state.quiz.result;
|
||||
export const selectedTest = (state) => state.quiz.selectedTest;
|
||||
export const selectPassedTests = (state) => state.quiz.passedTests;
|
||||
export const selectUserInfo = (state) => state.quiz.userInfo;
|
||||
|
||||
|
||||
|
||||
export default quizSlice.reducer;
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
import { createSlice } from '@reduxjs/toolkit';
|
||||
import { createSlice } from "@reduxjs/toolkit";
|
||||
|
||||
const initialState = {
|
||||
role: null,
|
||||
};
|
||||
|
||||
export const roleSlice = createSlice({
|
||||
name: 'role',
|
||||
name: "role",
|
||||
initialState,
|
||||
reducers: {
|
||||
setRole: (state, action) => {
|
||||
|
@ -1,10 +1,11 @@
|
||||
import { configureStore } from "@reduxjs/toolkit";
|
||||
import outstaffingReducer from "../redux/outstaffingSlice";
|
||||
|
||||
import loaderReducer from "../redux/loaderSlice";
|
||||
import roleReducer from "../redux/roleSlice";
|
||||
import reportReducer from "../redux/reportSlice";
|
||||
import quizSlice from "../redux/quizSlice";
|
||||
import outstaffingReducer from "../redux/outstaffingSlice";
|
||||
import projectsTrackerSlice from "../redux/projectsTrackerSlice";
|
||||
import quizSlice from "../redux/quizSlice";
|
||||
import reportReducer from "../redux/reportSlice";
|
||||
import roleReducer from "../redux/roleSlice";
|
||||
|
||||
export const store = configureStore({
|
||||
reducer: {
|
||||
|
@ -1,15 +1,15 @@
|
||||
export const LEVELS = {
|
||||
1: 'Junior',
|
||||
2: 'Middle',
|
||||
3: 'Middle+',
|
||||
4: 'Senior',
|
||||
1: "Junior",
|
||||
2: "Middle",
|
||||
3: "Middle+",
|
||||
4: "Senior",
|
||||
};
|
||||
|
||||
export const SKILLS = {
|
||||
1: 'Back end - разработчик',
|
||||
2: 'Front end - разработчик',
|
||||
3: 'Маркетолог',
|
||||
4: 'Smm - специалист',
|
||||
5: 'Дизайнер',
|
||||
6: 'Копирайтер',
|
||||
1: "Back end - разработчик",
|
||||
2: "Front end - разработчик",
|
||||
3: "Маркетолог",
|
||||
4: "Smm - специалист",
|
||||
5: "Дизайнер",
|
||||
6: "Копирайтер",
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user