Merge pull request 'trackerTask' (#18) from trackerTask into main
Reviewed-on: #18
This commit is contained in:
commit
2e0f6d24a0
@ -8,7 +8,7 @@ export const Loader = ({ width = 50, height = 50, style }) => {
|
|||||||
<div className="loader">
|
<div className="loader">
|
||||||
<SVGLoader
|
<SVGLoader
|
||||||
type="Circles"
|
type="Circles"
|
||||||
color={style ? style : `#fff`}
|
color={style ? style : `green`}
|
||||||
height={height}
|
height={height}
|
||||||
width={width}
|
width={width}
|
||||||
/>
|
/>
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
//&:hover {
|
//&:hover {
|
||||||
// path {
|
// path {
|
||||||
// fill: #6aaf5c;
|
// fill: #6aaf5c;
|
||||||
|
@ -30,6 +30,7 @@ import { useNotification } from "@hooks/useNotification";
|
|||||||
|
|
||||||
import { getCorrectDate } from "@components/Calendar/calendarHelper";
|
import { getCorrectDate } from "@components/Calendar/calendarHelper";
|
||||||
import BaseButton from "@components/Common/BaseButton/BaseButton";
|
import BaseButton from "@components/Common/BaseButton/BaseButton";
|
||||||
|
import { Loader } from "@components/Common/Loader/Loader";
|
||||||
import ModalLayout from "@components/Common/ModalLayout/ModalLayout";
|
import ModalLayout from "@components/Common/ModalLayout/ModalLayout";
|
||||||
|
|
||||||
import arrowRight from "assets/icons/arrows/arrowRightCreateTask.svg";
|
import arrowRight from "assets/icons/arrows/arrowRightCreateTask.svg";
|
||||||
@ -90,6 +91,7 @@ export const TrackerModal = ({
|
|||||||
const [deadLineDate, setDeadLineDate] = useState("");
|
const [deadLineDate, setDeadLineDate] = useState("");
|
||||||
const [datePickerOpen, setDatePickerOpen] = useState(false);
|
const [datePickerOpen, setDatePickerOpen] = useState(false);
|
||||||
const [startDate, setStartDate] = useState(new Date());
|
const [startDate, setStartDate] = useState(new Date());
|
||||||
|
const [loader, setLoader] = useState(false);
|
||||||
|
|
||||||
const priority = [
|
const priority = [
|
||||||
{
|
{
|
||||||
@ -138,6 +140,8 @@ export const TrackerModal = ({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setLoader(true);
|
||||||
|
|
||||||
apiRequest("/task/create-task", {
|
apiRequest("/task/create-task", {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
data: {
|
data: {
|
||||||
@ -158,6 +162,7 @@ export const TrackerModal = ({
|
|||||||
text: "Задача с таким именем уже существует",
|
text: "Задача с таким именем уже существует",
|
||||||
type: "error"
|
type: "error"
|
||||||
});
|
});
|
||||||
|
setLoader(false);
|
||||||
} else {
|
} else {
|
||||||
for (let i = 0; i < taskTags.length; i++) {
|
for (let i = 0; i < taskTags.length; i++) {
|
||||||
apiRequest("/mark/attach", {
|
apiRequest("/mark/attach", {
|
||||||
@ -185,9 +190,11 @@ export const TrackerModal = ({
|
|||||||
setDescriptionTicket("");
|
setDescriptionTicket("");
|
||||||
setSelectedExecutorTask("Выберите исполнителя");
|
setSelectedExecutorTask("Выберите исполнителя");
|
||||||
setSelectedPriority(null);
|
setSelectedPriority(null);
|
||||||
|
setLoader(false);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
setActive(false);
|
setActive(false);
|
||||||
|
setLoader(false);
|
||||||
setValueTicket("");
|
setValueTicket("");
|
||||||
setDescriptionTicket("");
|
setDescriptionTicket("");
|
||||||
dispatch(setProjectBoardFetch(projectBoard.id));
|
dispatch(setProjectBoardFetch(projectBoard.id));
|
||||||
@ -703,9 +710,13 @@ export const TrackerModal = ({
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<BaseButton styles={"button-add"} onClick={createTicket}>
|
{loader ? (
|
||||||
Создать
|
<Loader style={"green"} />
|
||||||
</BaseButton>
|
) : (
|
||||||
|
<BaseButton styles={"button-add"} onClick={createTicket}>
|
||||||
|
Создать
|
||||||
|
</BaseButton>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: 25px;
|
bottom: 25px;
|
||||||
right: 25px;
|
right: 25px;
|
||||||
z-index: 20;
|
z-index: 10000;
|
||||||
|
|
||||||
&__info {
|
&__info {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -286,15 +286,15 @@ export const ProfileCalendarComponent = React.memo(
|
|||||||
? `${getCorrectDate(startDate)} - ${getCorrectDate(endDate)}`
|
? `${getCorrectDate(startDate)} - ${getCorrectDate(endDate)}`
|
||||||
: `${getCorrectDate(endDate)} - ${getCorrectDate(startDate)}`
|
: `${getCorrectDate(endDate)} - ${getCorrectDate(startDate)}`
|
||||||
: activePeriod
|
: activePeriod
|
||||||
? "Выберите диапазон на календаре"
|
? "Выберите диапазон на календаре"
|
||||||
: "Выбрать диапазон"}
|
: "Выбрать диапазон"}
|
||||||
</span>
|
</span>
|
||||||
<span>
|
<span>
|
||||||
{totalRangeHours
|
{totalRangeHours
|
||||||
? `${totalRangeHours} ${hourOfNum(totalRangeHours)}`
|
? `${totalRangeHours} ${hourOfNum(totalRangeHours)}`
|
||||||
: endDate
|
: endDate
|
||||||
? "0 часов"
|
? "0 часов"
|
||||||
: ""}
|
: ""}
|
||||||
</span>
|
</span>
|
||||||
{endDate && (
|
{endDate && (
|
||||||
<BaseButton
|
<BaseButton
|
||||||
|
@ -56,6 +56,7 @@ export const PartnerAddRequest = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
initListeners();
|
||||||
apiRequest(`/profile/positions-list`).then((el) =>
|
apiRequest(`/profile/positions-list`).then((el) =>
|
||||||
setSpecializationList(el)
|
setSpecializationList(el)
|
||||||
);
|
);
|
||||||
@ -141,6 +142,31 @@ export const PartnerAddRequest = () => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const initListeners = () => {
|
||||||
|
document.addEventListener("click", closeByClickingOut);
|
||||||
|
};
|
||||||
|
|
||||||
|
const closeByClickingOut = (event) => {
|
||||||
|
const path = event.path || (event.composedPath && event.composedPath());
|
||||||
|
|
||||||
|
if (
|
||||||
|
event &&
|
||||||
|
!path.find(
|
||||||
|
(div) =>
|
||||||
|
div.classList &&
|
||||||
|
(div.classList.contains("form__block__section__selects") ||
|
||||||
|
div.classList.contains("form__block__dropDown") ||
|
||||||
|
div.classList.contains("form__block__skills") ||
|
||||||
|
div.classList.contains("form__block__section__select"))
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
setOpenSkillsSelect(false);
|
||||||
|
setOpenSpecializationListOpen(false);
|
||||||
|
setOpenLevelList(false);
|
||||||
|
setOpenCountList(false);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="partner-add-request">
|
<div className="partner-add-request">
|
||||||
<ProfileHeader />
|
<ProfileHeader />
|
||||||
|
@ -7,6 +7,7 @@ import { apiRequest } from "@api/request";
|
|||||||
|
|
||||||
import CategoriesItem from "@components/CategoriesItem/CategoriesItem";
|
import CategoriesItem from "@components/CategoriesItem/CategoriesItem";
|
||||||
import { Footer } from "@components/Common/Footer/Footer";
|
import { Footer } from "@components/Common/Footer/Footer";
|
||||||
|
import { Loader } from "@components/Common/Loader/Loader";
|
||||||
import { Navigation } from "@components/Navigation/Navigation";
|
import { Navigation } from "@components/Navigation/Navigation";
|
||||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||||
@ -27,7 +28,8 @@ import BackEndImg from "assets/images/partnerProfile/personalBackEnd.svg";
|
|||||||
import "./quiz-page.scss";
|
import "./quiz-page.scss";
|
||||||
|
|
||||||
export const QuizPage = () => {
|
export const QuizPage = () => {
|
||||||
const [questionnaires, setQuestionnaires] = useState(null);
|
const [questionnaires, setQuestionnaires] = useState([]);
|
||||||
|
const [loader, setLoader] = useState(false);
|
||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
const [personalInfoItems] = useState([
|
const [personalInfoItems] = useState([
|
||||||
{
|
{
|
||||||
@ -102,8 +104,12 @@ export const QuizPage = () => {
|
|||||||
const [selectedCategory, setSetSelectedCategory] = useState(false);
|
const [selectedCategory, setSetSelectedCategory] = useState(false);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
setLoader(true);
|
||||||
apiRequest(`/user-questionnaire/questionnaires-list?user_id=${userId}`)
|
apiRequest(`/user-questionnaire/questionnaires-list?user_id=${userId}`)
|
||||||
.then((res) => setQuestionnaires(res))
|
.then((res) => {
|
||||||
|
setQuestionnaires(res);
|
||||||
|
setLoader(false);
|
||||||
|
})
|
||||||
.catch((e) => console.log(e));
|
.catch((e) => console.log(e));
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
@ -122,7 +128,9 @@ export const QuizPage = () => {
|
|||||||
<div className="quiz-page__title main-title">
|
<div className="quiz-page__title main-title">
|
||||||
{!selectedCategory ? "Тестирование" : "Замена специализации"}
|
{!selectedCategory ? "Тестирование" : "Замена специализации"}
|
||||||
</div>
|
</div>
|
||||||
{!selectedCategory && (
|
{loader ? (
|
||||||
|
<Loader />
|
||||||
|
) : (
|
||||||
<>
|
<>
|
||||||
{/*<div className="quiz-page__specialization">*/}
|
{/*<div className="quiz-page__specialization">*/}
|
||||||
{/* <SelectedCategory setSelectedCategory={setSetSelectedCategory} />*/}
|
{/* <SelectedCategory setSelectedCategory={setSetSelectedCategory} />*/}
|
||||||
|
@ -7,6 +7,7 @@ import { selectedTest } from "@redux/quizSlice";
|
|||||||
import { apiRequest } from "@api/request";
|
import { apiRequest } from "@api/request";
|
||||||
|
|
||||||
import { Footer } from "@components/Common/Footer/Footer";
|
import { Footer } from "@components/Common/Footer/Footer";
|
||||||
|
import { Loader } from "@components/Common/Loader/Loader";
|
||||||
import { Navigation } from "@components/Navigation/Navigation";
|
import { Navigation } from "@components/Navigation/Navigation";
|
||||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||||
@ -23,16 +24,19 @@ export const QuizReportPage = () => {
|
|||||||
navigate("/Quiz");
|
navigate("/Quiz");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const [testInfo, setTestInfo] = useState({});
|
||||||
|
const [loader, setLoader] = useState(false);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
setLoader(true);
|
||||||
apiRequest(
|
apiRequest(
|
||||||
`/user-questionnaire/questionnaire-completed?user_questionnaire_uuid=${params.uuid}`
|
`/user-questionnaire/questionnaire-completed?user_questionnaire_uuid=${params.uuid}`
|
||||||
).then((res) => {
|
).then((res) => {
|
||||||
setTestInfo(res);
|
setTestInfo(res);
|
||||||
|
setLoader(false);
|
||||||
});
|
});
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const [testInfo, setTestInfo] = useState({});
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="quiz-report-page">
|
<div className="quiz-report-page">
|
||||||
<ProfileHeader />
|
<ProfileHeader />
|
||||||
@ -46,13 +50,19 @@ export const QuizReportPage = () => {
|
|||||||
{ name: "Отчет по тестированию", link: "/profile/quiz" }
|
{ name: "Отчет по тестированию", link: "/profile/quiz" }
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
<div className="quiz-report-page__title main-title">
|
{loader ? (
|
||||||
Отчет по тестированию позиции {testInfo.questionnaire_title}
|
<Loader />
|
||||||
</div>
|
) : (
|
||||||
<div className="quiz-report-page__report-quiz">
|
<>
|
||||||
<QuizReport info={testInfo} />
|
<div className="quiz-report-page__title main-title">
|
||||||
</div>
|
Отчет по тестированию позиции {testInfo.questionnaire_title}
|
||||||
<AlertResult info={testInfo} />
|
</div>
|
||||||
|
<div className="quiz-report-page__report-quiz">
|
||||||
|
<QuizReport info={testInfo} />
|
||||||
|
</div>
|
||||||
|
<AlertResult info={testInfo} />
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
<Footer />
|
<Footer />
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user