From 7f0dc9612bb4e03a370691d741bf1751af04d84d Mon Sep 17 00:00:00 2001 From: M1kola Date: Fri, 7 Jul 2023 00:46:40 +0300 Subject: [PATCH 1/6] tracker fixes --- src/assets/images/archiveIcon.png | Bin 0 -> 1475 bytes src/components/AuthBox/authBox.scss | 11 +- src/components/Common/Loader/loader.scss | 10 +- .../Common/ModalLayout/modalLayout.scss | 51 ++++++- .../Modal/Tracker/ModalTicket/ModalTicket.jsx | 6 +- .../Tracker/ModalTicket/modalTicket.scss | 27 +++- .../TicketFullScreen/TicketFullScreen.jsx | 9 +- .../Tracker/TrackerModal/TrackerModal.jsx | 128 ++++++++++-------- .../Tracker/TrackerModal/trackerModal.scss | 28 +++- .../Modal/TrackerModal/trackerModal.scss | 6 +- src/pages/ProjectTracker/ProjectTracker.js | 6 +- src/pages/Tracker/Tracker.js | 2 +- src/pages/Tracker/tracker.scss | 28 +++- src/utils/helper.js | 11 +- 14 files changed, 226 insertions(+), 97 deletions(-) create mode 100644 src/assets/images/archiveIcon.png diff --git a/src/assets/images/archiveIcon.png b/src/assets/images/archiveIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..ad94e2b4e3e68073193898b36a9e05dbc3049d1f GIT binary patch literal 1475 zcmV;!1w8tRP)6KiYwHNUREW`BBhIAuxM8A>C&Z?_TF>OJ?EA!e3GU~(|bAJ z^84NI?+*u5=G5qEPxAT=cSU6dfA?-C(%ID(FdAEq0~O(bN+c3VN9g>8fw|ZJeZDAfR|B-#$NX=<^Jb8>cxIwS zvDzQbPI@j(UUILlu4z%PtFPZK?CrMuScW_k(a~tkb>{mC@6z8X9uQ*LwNnU3rkqEQ z`UOB4s-j`u{ycfv8=a0h00m&kHyQN7-o75H`A$VN4CUdWQQseP3Aa?<62k%EI78G>nkXKO1(ZmeRiE)GefY(6Bgc(Wn-bkFK@`wAosH-TU_Riw8{? zyXUd~pm*i=Z5OI|B^HM)n#6*tHC3RgsUf6$T=&+215QEi``!7oPK;^}zQYj7-1QZ$JL!MuHD=hK1b_ILV$0$|9G zeRJ9ykI!R;Jc`9}CH^3`1;J3(>+6DtT(7=YEN@A9-}3=)>oAR8z8JM2UnFC38$^>@ zP)|>nudbmEJCsq0hGVWPSE61T7I$AX4GUroEsNvejlLfFZs6)nyqA^*v4+&*y7zVX zZFZ}V`)cspz;DyDZj=jgEr>O^76JG#cI05y-O09=EW4djurEqQl|1WqK;= zuB?2N7e9%-_C{~NR9MoqIF{WVy!XWUUk?}R;?AA>$uV^?I=;M|cX-6GRA_M_(Sp1* z2aI{=Dw-zEEscWf$U!Uj$+5xkLLyl-Pf;r`5{s*@t^zoDi`w1ErHRdE@^PPjJd{by zUoUwRoXU&D;^aW>?oiXjXflL2F+3B=tx&@I`YVetmx_Pr9`}Ag6dErOW(ts6kQ7pBQnDgrRe3?6c=2tA_?nh09a&UroXp|MHe6s?sUg+g zY7Q4ztbz-{YB*R97t~k<=UDgj7T@42BKK?2wm6on;9|NqtaVscUWFFNa#&E9CP-@? zrj?gyaqYXG6~wW#gZ8jMDot{09qyyRm&=P1cEF99Zw=4%~Xi=#O#D2A$Q9TbbBJuJwlY-^oT7RPE>kUiUGS?fTHYu{t> zuB@!`n(C@h-@zC9Im*L=t+h@Ow$?gQY^`-3hP4hZ56W7n6hxwPY}U1o9EwEe*i363 z6sU;KQO>mv4pc=$)L!e5KwWeW)@vOlFcY1F#ac%x%tb?Jt#xRjis&4qYn_JzC|-PZ d!3Y3l;D6m|zvi+m8QK5<002ovPDHLkV1fru&l>;$ literal 0 HcmV?d00001 diff --git a/src/components/AuthBox/authBox.scss b/src/components/AuthBox/authBox.scss index 739ca575..73c2f1d3 100644 --- a/src/components/AuthBox/authBox.scss +++ b/src/components/AuthBox/authBox.scss @@ -133,13 +133,14 @@ text-align: center; border: 2px solid #6aaf5c; margin-right: 1.5rem; + transition: 0.3s; &:hover { - background-image: none; - background-color: #ffffff; - border: 2px solid #6aaf5c; - color: #6aaf5c !important; - transition: 0.3s; + transform: scale(1.03); + //background-image: none; + //background-color: #ffffff; + //border: 2px solid #6aaf5c; + //color: #6aaf5c !important; .loader * { fill: #6aaf5c; diff --git a/src/components/Common/Loader/loader.scss b/src/components/Common/Loader/loader.scss index bfb8b104..980447e7 100644 --- a/src/components/Common/Loader/loader.scss +++ b/src/components/Common/Loader/loader.scss @@ -6,9 +6,9 @@ align-items: center; position: relative; - &:hover { - path { - fill: #6aaf5c; - } - } + //&:hover { + // path { + // fill: #6aaf5c; + // } + //} } diff --git a/src/components/Common/ModalLayout/modalLayout.scss b/src/components/Common/ModalLayout/modalLayout.scss index 0f9639c2..f64ff98f 100644 --- a/src/components/Common/ModalLayout/modalLayout.scss +++ b/src/components/Common/ModalLayout/modalLayout.scss @@ -15,11 +15,60 @@ position: relative; background: linear-gradient(180deg, #ffffff 0%, #ebebeb 100%); border-radius: 24px; - padding: 60px 60px 30px 60px; + padding: 20px 40px 30px 40px; display: flex; flex-direction: column; align-items: center; justify-content: center; + + .selectPerson { + align-items: start; + + &__info { + font-size: 15px; + font-weight: 300; + margin: 12px 0 20px; + } + } + + .invite__blocks { + display: flex; + column-gap: 20px; + + span { + margin-top: 8px; + font-size: 15px; + font-weight: 300; + } + + .invitePersonBlock { + display: flex; + flex-direction: column; + row-gap: 20px; + &__input { + margin: 0; + min-width: 320px; + height: 42px; + + input { + height: 42px; + } + } + + &__btn { + margin: 0 auto 0 0; + max-width: 242px; + width: 100%; + } + } + } + + .select__person { + display: flex; + flex-direction: column; + row-gap: 10px; + padding: 39px 10px 29px 10px; + } } } diff --git a/src/components/Modal/Tracker/ModalTicket/ModalTicket.jsx b/src/components/Modal/Tracker/ModalTicket/ModalTicket.jsx index 640f6d46..a711a0ab 100644 --- a/src/components/Modal/Tracker/ModalTicket/ModalTicket.jsx +++ b/src/components/Modal/Tracker/ModalTicket/ModalTicket.jsx @@ -363,9 +363,9 @@ export const ModalTiсket = ({
- Задача {editOpen ? ( { setInputsValue((prevValue) => ({ @@ -463,8 +463,8 @@ export const ModalTiсket = ({
- setActive(false)}> - {task.title} + setActive(false)}> +

Создатель : {task.user?.fio}

{executor ? ( diff --git a/src/components/Modal/Tracker/ModalTicket/modalTicket.scss b/src/components/Modal/Tracker/ModalTicket/modalTicket.scss index a5f8c70b..8baa91cf 100644 --- a/src/components/Modal/Tracker/ModalTicket/modalTicket.scss +++ b/src/components/Modal/Tracker/ModalTicket/modalTicket.scss @@ -33,6 +33,9 @@ display: flex; align-items: center; flex-direction: row; + color: #1458DD; + font-weight: 700; + font-size: 22px; &__category { margin-right: 17px; @@ -104,9 +107,9 @@ h5 { font-family: "Inter", sans-serif; - font-weight: 500; + font-weight: 600; font-style: normal; - font-size: 16px; + font-size: 19px; line-height: 24px; color: #1a1919; margin-bottom: 0; @@ -280,7 +283,7 @@ &__description { display: flex; flex-direction: column; - margin-top: 10px; + margin-top: 12px; textarea { min-height: 120px; @@ -405,6 +408,7 @@ display: flex; flex-direction: column; font-size: 14px; + margin-top: 8px; &__list { display: flex; @@ -420,13 +424,17 @@ .exit { cursor: pointer; position: absolute; - top: 35px; - right: 40px; + top: 25px; + right: 30px; + width: 13px; + height: 13px; + display: flex; + align-items: center; + justify-content: center; &:before, &:after { content: ""; - position: absolute; width: 16px; height: 2px; background: #263238; @@ -459,6 +467,7 @@ align-items: center; position: relative; margin-bottom: 5px; + margin-top: 12px; span { color: #000000; @@ -552,6 +561,7 @@ overflow: hidden; white-space: nowrap; text-overflow: ellipsis; + margin-bottom: 8px; span { margin-left: 5px; @@ -585,7 +595,6 @@ .task__info { display: flex; flex-direction: column; - row-gap: 5px; .delete { cursor: pointer; @@ -669,6 +678,10 @@ align-items: center; padding-left: 10px; + img { + width: 11px; + } + p { margin: 0 0 0 12px; } diff --git a/src/components/Modal/Tracker/TicketFullScreen/TicketFullScreen.jsx b/src/components/Modal/Tracker/TicketFullScreen/TicketFullScreen.jsx index b6acf4fb..a8451048 100644 --- a/src/components/Modal/Tracker/TicketFullScreen/TicketFullScreen.jsx +++ b/src/components/Modal/Tracker/TicketFullScreen/TicketFullScreen.jsx @@ -24,8 +24,7 @@ import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadc import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader"; import TrackerTaskComment from "@components/TrackerTaskComment/TrackerTaskComment"; -import archive from "assets/icons/archive.svg"; -import archive2 from "assets/icons/archive.svg"; +import archive from "assets/images/archiveIcon.png"; import arrow from "assets/icons/arrows/arrowCalendar.png"; import arrowStart from "assets/icons/arrows/arrowStart.png"; import close from "assets/icons/close.png"; @@ -412,7 +411,7 @@ export const TicketFullScreen = () => { <>
-
+
Проект : {projectInfo.name}
{
- Задача {editOpen ? ( { setInputsValue((prevValue) => ({ @@ -810,7 +809,7 @@ export const TicketFullScreen = () => {

ссылка на задачу

- arch + arch

в архив

diff --git a/src/components/Modal/Tracker/TrackerModal/TrackerModal.jsx b/src/components/Modal/Tracker/TrackerModal/TrackerModal.jsx index 8a9db262..7b38a024 100644 --- a/src/components/Modal/Tracker/TrackerModal/TrackerModal.jsx +++ b/src/components/Modal/Tracker/TrackerModal/TrackerModal.jsx @@ -53,7 +53,7 @@ export const TrackerModal = ({ const [valueColumn, setValueColumn] = useState(""); const [nameProject, setNameProject] = useState(""); const [valueTiket, setValueTiket] = useState(""); - const [descriptionTicket, setDescriptionTicket] = useState("Описание задачи"); + const [descriptionTicket, setDescriptionTicket] = useState(""); const [workers, setWorkers] = useState([]); const [selectWorkersOpen, setSelectWorkersOpen] = useState(false); const [selectedWorker, setSelectedWorker] = useState(null); @@ -271,62 +271,78 @@ export const TrackerModal = ({ // }} > {modalType === "addWorker" && ( -
-
-

Добавьте участника

- {/*
*/} - {/* setEmailWorker(e.target.value)}*/} - {/* />*/} - {/*
*/} -
setSelectWorkersOpen(!selectWorkersOpen)} - > -

- {selectedWorker - ? selectedWorker.employee.fio - : "Выберите пользователя"} -

- arrow - {Boolean(selectWorkersOpen) && ( -
- {Boolean(workers.length) ? ( - workers.map((worker) => { - if (worker === selectedWorker) { - return; - } - return ( -
{ - setSelectedWorker(worker); - }} - > -

{worker.employee.fio}

- avatar -
- ); - }) - ) : ( -
Нет пользователей
- )} + <> +
+
+

Добавьте участника

+ {/*
*/} + {/* setEmailWorker(e.target.value)}*/} + {/* />*/} + {/*
*/} +

Выберите пользователя в проекте или добавьте по e- mail

+
+
+
setSelectWorkersOpen(!selectWorkersOpen)} + > +

+ {selectedWorker + ? selectedWorker.employee.fio + : "Выберите пользователя"} +

+ arrow + {Boolean(selectWorkersOpen) && ( +
+ {Boolean(workers.length) ? ( + workers.map((worker) => { + if (worker === selectedWorker) { + return; + } + return ( +
{ + setSelectedWorker(worker); + }} + > +

{worker.employee.fio}

+ avatar +
+ ); + }) + ) : ( +
Нет пользователей
+ )} +
+ )} +
+ + Добавить +
- )} + или +
+
+ +
+ + Отправить приглашение + +
+
- - Добавить - -
+ )} {modalType === "createTiketProject" && ( <> @@ -334,6 +350,7 @@ export const TrackerModal = ({

Введите название и описание задачи

setValueTiket(e.target.value)} @@ -355,6 +372,7 @@ export const TrackerModal = ({ "blockQuote", ], removePlugins: ["BlockQuote"], + placeholder: "Описание задачи" }} onChange={(event, editor) => { const data = editor.getData(); @@ -443,6 +461,7 @@ export const TrackerModal = ({

{titleProject}

setNameProject(e.target.value)} @@ -477,6 +496,7 @@ export const TrackerModal = ({

Введите название колонки

setValueColumn(e.target.value)} diff --git a/src/components/Modal/Tracker/TrackerModal/trackerModal.scss b/src/components/Modal/Tracker/TrackerModal/trackerModal.scss index fc4253af..8cea178d 100644 --- a/src/components/Modal/Tracker/TrackerModal/trackerModal.scss +++ b/src/components/Modal/Tracker/TrackerModal/trackerModal.scss @@ -30,7 +30,6 @@ display: flex; align-items: center; flex-direction: column; - margin: 0 0 15px 0; row-gap: 5px; .select-priority { @@ -79,7 +78,7 @@ } .input-container { - width: 320px; + width: 100%; height: 35px; background: #ffffff; border-radius: 8px; @@ -91,7 +90,7 @@ } .ck-editor { - max-width: 320px; + width: 100%; } .ck-editor__editable.ck-rounded-corners { @@ -104,6 +103,10 @@ border-radius: 8px 8px 0 0 !important; } + .ck-placeholder { + display: block !important; + } + .ck-content { border: none !important; border-radius: 0 0 8px 8px !important; @@ -111,7 +114,7 @@ } .select__executor { - width: 320px; + width: 100%; background: white; border-radius: 8px; margin: 5px 0; @@ -215,6 +218,7 @@ cursor: pointer; position: relative; min-width: 320px; + height: 42px; width: 100%; p { @@ -237,7 +241,7 @@ position: absolute; width: 100%; padding: 9.5px 12px; - top: 35px; + top: 48px; left: 0; background: white; border-radius: 5px; @@ -286,6 +290,11 @@ margin: 0 auto; } +.addPersonBtn { + margin: 0 auto 0 0; + margin-top: 20px; +} + .modal-add.active { transform: scale(1); } @@ -293,8 +302,13 @@ .exit { cursor: pointer; position: absolute; - top: 35px; - right: 40px; + top: 15px; + right: 20px; + width: 13px; + height: 13px; + display: flex; + align-items: center; + justify-content: center; &:before, &:after { diff --git a/src/components/Modal/TrackerModal/trackerModal.scss b/src/components/Modal/TrackerModal/trackerModal.scss index 5bba0676..6917c1b2 100644 --- a/src/components/Modal/TrackerModal/trackerModal.scss +++ b/src/components/Modal/TrackerModal/trackerModal.scss @@ -153,11 +153,15 @@ position: absolute; top: 35px; right: 40px; + width: 13px; + height: 13px; + display: flex; + align-items: center; + justify-content: center; &:before, &:after { content: ""; - position: absolute; width: 16px; height: 2px; background: #263238; diff --git a/src/pages/ProjectTracker/ProjectTracker.js b/src/pages/ProjectTracker/ProjectTracker.js index 812905f4..86a8f0c9 100644 --- a/src/pages/ProjectTracker/ProjectTracker.js +++ b/src/pages/ProjectTracker/ProjectTracker.js @@ -34,7 +34,7 @@ import { Navigation } from "@components/Navigation/Navigation"; import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs"; import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader"; -import archive from "assets/icons/archiveTracker.svg"; +import archive from "assets/images/archiveIcon.png"; import arrow from "assets/icons/arrows/arrowCalendar.png"; import arrowDown from "assets/icons/arrows/selectArrow.png"; import close from "assets/icons/close.png"; @@ -390,7 +390,7 @@ export const ProjectTracker = () => { />
{projectBoard.projectUsers?.length} - участник + {caseOfNum(projectBoard.projectUsers?.length, "persons")}
В проекте - @@ -480,7 +480,7 @@ export const ProjectTracker = () => { setSelectedExecutorOpen(!selectExecutorOpen) } > -

Выберите исполнитель

+

Выберите исполнителя

4 && number % 100 < 20 + ? 2 + : cases[number % 10 < 5 ? number % 10 : 5] + ]; + } } From c3ef01ee3568b7186d46a172277ba7bb9305e035 Mon Sep 17 00:00:00 2001 From: M1kola Date: Fri, 7 Jul 2023 00:46:58 +0300 Subject: [PATCH 2/6] tracker fixes --- .../Modal/Tracker/ModalTicket/ModalTicket.jsx | 3 +- .../TicketFullScreen/TicketFullScreen.jsx | 2 +- .../Tracker/TrackerModal/TrackerModal.jsx | 31 +++++++++++++------ src/pages/ProjectTracker/ProjectTracker.js | 7 +++-- src/pages/Tracker/Tracker.js | 2 +- src/utils/helper.js | 10 +++--- 6 files changed, 34 insertions(+), 21 deletions(-) diff --git a/src/components/Modal/Tracker/ModalTicket/ModalTicket.jsx b/src/components/Modal/Tracker/ModalTicket/ModalTicket.jsx index a711a0ab..08fd0281 100644 --- a/src/components/Modal/Tracker/ModalTicket/ModalTicket.jsx +++ b/src/components/Modal/Tracker/ModalTicket/ModalTicket.jsx @@ -463,8 +463,7 @@ export const ModalTiсket = ({
- setActive(false)}> - + setActive(false)}>

Создатель : {task.user?.fio}

{executor ? ( diff --git a/src/components/Modal/Tracker/TicketFullScreen/TicketFullScreen.jsx b/src/components/Modal/Tracker/TicketFullScreen/TicketFullScreen.jsx index a8451048..3b163d5d 100644 --- a/src/components/Modal/Tracker/TicketFullScreen/TicketFullScreen.jsx +++ b/src/components/Modal/Tracker/TicketFullScreen/TicketFullScreen.jsx @@ -24,7 +24,6 @@ import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadc import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader"; import TrackerTaskComment from "@components/TrackerTaskComment/TrackerTaskComment"; -import archive from "assets/images/archiveIcon.png"; import arrow from "assets/icons/arrows/arrowCalendar.png"; import arrowStart from "assets/icons/arrows/arrowStart.png"; import close from "assets/icons/close.png"; @@ -36,6 +35,7 @@ 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 archive from "assets/images/archiveIcon.png"; import avatarMok from "assets/images/avatarMok.png"; import "./ticketFullScreen.scss"; diff --git a/src/components/Modal/Tracker/TrackerModal/TrackerModal.jsx b/src/components/Modal/Tracker/TrackerModal/TrackerModal.jsx index 7b38a024..a640dc53 100644 --- a/src/components/Modal/Tracker/TrackerModal/TrackerModal.jsx +++ b/src/components/Modal/Tracker/TrackerModal/TrackerModal.jsx @@ -272,7 +272,7 @@ export const TrackerModal = ({ > {modalType === "addWorker" && ( <> -
+

Добавьте участника

{/*
*/} @@ -282,12 +282,16 @@ export const TrackerModal = ({ {/* onChange={(e) => setEmailWorker(e.target.value)}*/} {/* />*/} {/*
*/} -

Выберите пользователя в проекте или добавьте по e- mail

-
-
+

+ Выберите пользователя в проекте или добавьте по e- mail +

+
+
setSelectWorkersOpen(!selectWorkersOpen)} > @@ -326,14 +330,21 @@ export const TrackerModal = ({
)}
- + Добавить
или -
-
- +
+
+
Отправить приглашение @@ -372,7 +383,7 @@ export const TrackerModal = ({ "blockQuote", ], removePlugins: ["BlockQuote"], - placeholder: "Описание задачи" + placeholder: "Описание задачи", }} onChange={(event, editor) => { const data = editor.getData(); diff --git a/src/pages/ProjectTracker/ProjectTracker.js b/src/pages/ProjectTracker/ProjectTracker.js index 86a8f0c9..d34ab06d 100644 --- a/src/pages/ProjectTracker/ProjectTracker.js +++ b/src/pages/ProjectTracker/ProjectTracker.js @@ -34,7 +34,6 @@ import { Navigation } from "@components/Navigation/Navigation"; import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs"; import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader"; -import archive from "assets/images/archiveIcon.png"; import arrow from "assets/icons/arrows/arrowCalendar.png"; import arrowDown from "assets/icons/arrows/selectArrow.png"; import close from "assets/icons/close.png"; @@ -46,6 +45,7 @@ import trackerNoTasks from "assets/icons/trackerNoTasks.svg"; import project from "assets/icons/trackerProject.svg"; import tasks from "assets/icons/trackerTasks.svg"; import accept from "assets/images/accept.png"; +import archive from "assets/images/archiveIcon.png"; import avatarMok from "assets/images/avatarMok.png"; export const ProjectTracker = () => { @@ -390,7 +390,10 @@ export const ProjectTracker = () => { />
{projectBoard.projectUsers?.length} - {caseOfNum(projectBoard.projectUsers?.length, "persons")} + {caseOfNum( + projectBoard.projectUsers?.length, + "persons" + )}
В проекте - diff --git a/src/pages/Tracker/Tracker.js b/src/pages/Tracker/Tracker.js index 564700d0..7e3f3c05 100644 --- a/src/pages/Tracker/Tracker.js +++ b/src/pages/Tracker/Tracker.js @@ -23,10 +23,10 @@ import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadc import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader"; import ProjectTiket from "@components/ProjectTiket/ProjectTiket"; -import archive from "assets/images/archiveIcon.png"; import search from "assets/icons/serchIcon.png"; import project from "assets/icons/trackerProject.svg"; import tasks from "assets/icons/trackerTasks.svg"; +import archive from "assets/images/archiveIcon.png"; import avatarMok from "assets/images/avatarMok.png"; import noProjects from "assets/images/noProjects.png"; diff --git a/src/utils/helper.js b/src/utils/helper.js index b3e8ebb5..22659289 100644 --- a/src/utils/helper.js +++ b/src/utils/helper.js @@ -65,7 +65,7 @@ export function getCorrectRequestDate(date) { export function caseOfNum(number, type) { const comments = ["коментарий", "комментария", " коментариев"]; const files = ["файл", "файла", "файлов"]; - const persons = ["участник", "участника", "участников"] + const persons = ["участник", "участника", "участников"]; const cases = [2, 0, 1, 1, 1, 2]; if (type === "comments") { return comments[ @@ -84,9 +84,9 @@ export function caseOfNum(number, type) { if (type === "persons") { return persons[ - number % 100 > 4 && number % 100 < 20 - ? 2 - : cases[number % 10 < 5 ? number % 10 : 5] - ]; + number % 100 > 4 && number % 100 < 20 + ? 2 + : cases[number % 10 < 5 ? number % 10 : 5] + ]; } } From 49729ddd6beeec0ca3336b49e5b5775dc1c26156 Mon Sep 17 00:00:00 2001 From: M1kola Date: Fri, 7 Jul 2023 01:20:57 +0300 Subject: [PATCH 3/6] Tracker Auth --- src/App.js | 2 + src/assets/images/trackerAuthImg.png | Bin 0 -> 20637 bytes src/components/AuthBlock/AuthBlock.js | 45 ++++++++ src/components/AuthBlock/authBlock.scss | 109 ++++++++++++++++++ .../AuthForCandidate/AuthForCandidate.jsx | 89 +++++--------- .../AuthForCandidate/authForCandidate.scss | 89 -------------- src/pages/TrackerAuth/TrackerAuth.js | 27 +++++ src/pages/TrackerAuth/trackerAuth.scss | 35 ++++++ 8 files changed, 250 insertions(+), 146 deletions(-) create mode 100644 src/assets/images/trackerAuthImg.png create mode 100644 src/components/AuthBlock/AuthBlock.js create mode 100644 src/components/AuthBlock/authBlock.scss create mode 100644 src/pages/TrackerAuth/TrackerAuth.js create mode 100644 src/pages/TrackerAuth/trackerAuth.scss diff --git a/src/App.js b/src/App.js index 0dfef9e3..67b53b2e 100644 --- a/src/App.js +++ b/src/App.js @@ -9,6 +9,7 @@ import { import AuthForPartners from "./pages/AuthForPartners/AuthForPartners"; import AuthForDevelopers from "./pages/AuthForDevelopers/AuthForDevelopers"; import { TrackerIntro } from "./pages/TrackerIntro/TrackerIntro" +import { TrackerAuth } from "@pages/TrackerAuth/TrackerAuth"; import Home from "./pages/Home/Home"; import Candidate from "./components/Candidate/Candidate"; import Calendar from "./components/Calendar/Calendar"; @@ -54,6 +55,7 @@ const App = () => { } /> } /> } /> + } /> } /> 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 { + return ( +
+
+ {title &&

{title}

} + img +

+ {description} +

+
+
+ + + + + +
+ + + Вспомнить пароль + +
+
+ {img && authImg} +
+ ); +}; + +export default AuthBlock; diff --git a/src/components/AuthBlock/authBlock.scss b/src/components/AuthBlock/authBlock.scss new file mode 100644 index 00000000..6bf6ea1e --- /dev/null +++ b/src/components/AuthBlock/authBlock.scss @@ -0,0 +1,109 @@ +.auth { + &__wrapper { + background: #ffffff; + border-radius: 12px; + padding: 50px 0 35px 56px; + margin-top: 40px; + display: flex; + position: relative; + + @media (max-width: 1024px) { + margin-top: 100px; + } + + @media (max-width: 870px) { + flex-direction: column; + padding: 25px; + } + } + + &__info { + margin-right: 115px; + h3 { + font-weight: 500; + font-size: 30px; + line-height: 32px; + margin-bottom: 20px; + } + + p { + max-width: 310px; + margin-top: 17px; + font-weight: 400; + font-size: 16px; + line-height: 30px; + + @media (max-width: 870px) { + max-width: none; + margin-bottom: 15px; + } + } + + @media (max-width: 870px) { + margin-right: 0; + } + } + + &__form { + display: flex; + flex-direction: column; + + input { + margin-bottom: 30px; + background: #eff2f7; + border-radius: 8px; + min-width: 300px; + width: 100%; + padding: 8px 12px; + border: none; + outline: none; + font-weight: 400; + font-size: 15px; + line-height: 18px; + + @media (max-width: 870px) { + max-width: 350px; + } + } + + label { + margin-bottom: 15px; + font-weight: 400; + font-size: 15px; + line-height: 18px; + color: #000000; + } + + button { + background: #52b709; + border-radius: 44px; + max-width: 130px; + width: 100%; + border: none; + font-weight: 500; + font-size: 18px; + line-height: 32px; + color: white; + height: 45px; + } + + &__buttons { + display: flex; + column-gap: 20px; + align-items: center; + + span { + cursor: pointer; + text-decoration-line: underline; + font-size: 13px; + font-weight: 500; + } + } + } + + &__img { + position: absolute; + right: 10px; + top: -90px; + } +} diff --git a/src/pages/AuthForCandidate/AuthForCandidate.jsx b/src/pages/AuthForCandidate/AuthForCandidate.jsx index 1e05d497..14c3b939 100644 --- a/src/pages/AuthForCandidate/AuthForCandidate.jsx +++ b/src/pages/AuthForCandidate/AuthForCandidate.jsx @@ -13,6 +13,7 @@ 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 AuthBlock from "@components/AuthBlock/AuthBlock"; import arrowBtn from "assets/icons/arrows/arrowRight.svg"; import AdminImg from "assets/images/partnerProfile/PersonalAdmin.svg"; @@ -112,68 +113,42 @@ export const AuthForCandidate = () => { } }, [getToken]); - const submitHandler = () => { - let formData = new FormData(ref.current); - if (!isLoading) { - dispatch(loading(true)); - apiRequest("/user/login", { - method: "POST", - data: formData, - }).then((res) => { - if (!res.access_token) { - dispatch(loading(false)); - } else { - localStorage.setItem("auth_token", res.access_token); - localStorage.setItem("id", res.id); - localStorage.setItem("cardId", res.card_id); - localStorage.setItem("role_status", res.status); - localStorage.setItem( - "access_token_expired_at", - res.access_token_expired_at - ); - dispatch(auth(true)); - dispatch(setUserInfo(res)); - dispatch(loading(false)); - dispatch(setRole("ROLE_PARTNER")); - } - }); - } - }; + // const submitHandler = () => { + // let formData = new FormData(ref.current); + // if (!isLoading) { + // dispatch(loading(true)); + // apiRequest("/user/login", { + // method: "POST", + // data: formData, + // }).then((res) => { + // if (!res.access_token) { + // dispatch(loading(false)); + // } else { + // localStorage.setItem("auth_token", res.access_token); + // localStorage.setItem("id", res.id); + // localStorage.setItem("cardId", res.card_id); + // localStorage.setItem("role_status", res.status); + // localStorage.setItem( + // "access_token_expired_at", + // res.access_token_expired_at + // ); + // dispatch(auth(true)); + // dispatch(setUserInfo(res)); + // dispatch(loading(false)); + // dispatch(setRole("ROLE_PARTNER")); + // } + // }); + // } + // }; return (
-
-
-

Войти, уже есть доступ

- img -

- если вы получили доступ пройдя 2 шага для входа или хотите узнать - свои результаты в кабинете -

-
-
- - - - - - -
-
+

Хочу в команду Айти специалистов diff --git a/src/pages/AuthForCandidate/authForCandidate.scss b/src/pages/AuthForCandidate/authForCandidate.scss index e4df779a..0e204dec 100644 --- a/src/pages/AuthForCandidate/authForCandidate.scss +++ b/src/pages/AuthForCandidate/authForCandidate.scss @@ -4,95 +4,6 @@ position: relative; background-color: #f1f1f1; - .auth { - &__wrapper { - background: #ffffff; - border-radius: 12px; - padding: 50px 0 35px 56px; - margin-top: 40px; - display: flex; - - @media (max-width: 1024px) { - margin-top: 100px; - } - - @media (max-width: 870px) { - flex-direction: column; - padding: 25px; - } - } - - &__info { - margin-right: 115px; - h3 { - font-weight: 500; - font-size: 30px; - line-height: 32px; - margin-bottom: 20px; - } - - p { - max-width: 310px; - margin-top: 17px; - font-weight: 400; - font-size: 16px; - line-height: 30px; - - @media (max-width: 870px) { - max-width: none; - margin-bottom: 15px; - } - } - - @media (max-width: 870px) { - margin-right: 0; - } - } - - &__form { - display: flex; - flex-direction: column; - - input { - margin-bottom: 30px; - background: #eff2f7; - border-radius: 8px; - min-width: 300px; - width: 100%; - padding: 8px 12px; - border: none; - outline: none; - font-weight: 400; - font-size: 15px; - line-height: 18px; - - @media (max-width: 870px) { - max-width: 350px; - } - } - - label { - margin-bottom: 15px; - font-weight: 400; - font-size: 15px; - line-height: 18px; - color: #000000; - } - - button { - background: #52b709; - border-radius: 44px; - max-width: 130px; - border: none; - font-weight: 500; - font-size: 18px; - line-height: 32px; - color: white; - height: 45px; - } - } - } - &__start { margin-top: 60px; display: flex; diff --git a/src/pages/TrackerAuth/TrackerAuth.js b/src/pages/TrackerAuth/TrackerAuth.js new file mode 100644 index 00000000..fc09252c --- /dev/null +++ b/src/pages/TrackerAuth/TrackerAuth.js @@ -0,0 +1,27 @@ +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 AuthBlock from "@components/AuthBlock/AuthBlock"; + +import arrowInfo from "assets/icons/trackerIntroInfo.svg"; +import trackerAuthImg from "assets/images/trackerAuthImg.png" + +import "./trackerAuth.scss"; + +export const TrackerAuth = () => { + return ( +
+ + +
+
+

Войдите в свое рабочее пространствоarrow

+ +
+
+
+
+ ); +}; diff --git a/src/pages/TrackerAuth/trackerAuth.scss b/src/pages/TrackerAuth/trackerAuth.scss new file mode 100644 index 00000000..45dec641 --- /dev/null +++ b/src/pages/TrackerAuth/trackerAuth.scss @@ -0,0 +1,35 @@ +.trackerAuth { + &__content { + font-family: "LabGrotesque", sans-serif; + background-color: #f1f1f1; + color: #000000; + padding: 50px 0 0; + min-height: 100vh; + + @media (max-width: 1375px) { + padding-top: 100px; + } + + .container { + padding-bottom: 30px; + } + } + + &__title { + font-size: 30px; + font-weight: 500; + margin-bottom: 46px; + color: #000000; + span { + color: #52B709; + position: relative; + img { + position: absolute; + bottom: -15px; + right: 10px; + max-width: 300px; + + } + } + } +} From d0a29e7ee844b84f886c6c60fb294a40a44af5c3 Mon Sep 17 00:00:00 2001 From: M1kola Date: Fri, 7 Jul 2023 01:21:07 +0300 Subject: [PATCH 4/6] Tracker Auth --- src/components/AuthBlock/AuthBlock.js | 67 +++++++++---------- .../AuthForCandidate/AuthForCandidate.jsx | 10 +-- src/pages/TrackerAuth/TrackerAuth.js | 37 ++++++---- 3 files changed, 61 insertions(+), 53 deletions(-) diff --git a/src/components/AuthBlock/AuthBlock.js b/src/components/AuthBlock/AuthBlock.js index 74fbb252..04a22a68 100644 --- a/src/components/AuthBlock/AuthBlock.js +++ b/src/components/AuthBlock/AuthBlock.js @@ -1,45 +1,42 @@ import React from "react"; + import authImg from "assets/images/partnerProfile/authCandidateFormImg.png"; -import './authBlock.scss' +import "./authBlock.scss"; export const AuthBlock = ({ title, description, img }) => { - return ( -
-
- {title &&

{title}

} - img -

- {description} -

-
-
- - + return ( +
+
+ {title &&

{title}

} + img +

{description}

+
+ + + - - -
- - - Вспомнить пароль - -
- - {img && authImg} + + +
+ + Вспомнить пароль
- ); + + {img && authImg} +
+ ); }; export default AuthBlock; diff --git a/src/pages/AuthForCandidate/AuthForCandidate.jsx b/src/pages/AuthForCandidate/AuthForCandidate.jsx index 14c3b939..644d2b2c 100644 --- a/src/pages/AuthForCandidate/AuthForCandidate.jsx +++ b/src/pages/AuthForCandidate/AuthForCandidate.jsx @@ -8,12 +8,12 @@ import { setRole } from "@redux/roleSlice"; import { apiRequest } from "@api/request"; +import AuthBlock from "@components/AuthBlock/AuthBlock"; 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 AuthBlock from "@components/AuthBlock/AuthBlock"; import arrowBtn from "assets/icons/arrows/arrowRight.svg"; import AdminImg from "assets/images/partnerProfile/PersonalAdmin.svg"; @@ -145,10 +145,12 @@ export const AuthForCandidate = () => {
- + свои результаты в кабинете" + />

Хочу в команду Айти специалистов diff --git a/src/pages/TrackerAuth/TrackerAuth.js b/src/pages/TrackerAuth/TrackerAuth.js index fc09252c..1950ef78 100644 --- a/src/pages/TrackerAuth/TrackerAuth.js +++ b/src/pages/TrackerAuth/TrackerAuth.js @@ -1,27 +1,36 @@ import React from "react"; +import AuthBlock from "@components/AuthBlock/AuthBlock"; import AuthHeader from "@components/Common/AuthHeader/AuthHeader"; import { Footer } from "@components/Common/Footer/Footer"; import SideBar from "@components/SideBar/SideBar"; -import AuthBlock from "@components/AuthBlock/AuthBlock"; import arrowInfo from "assets/icons/trackerIntroInfo.svg"; -import trackerAuthImg from "assets/images/trackerAuthImg.png" +import trackerAuthImg from "assets/images/trackerAuthImg.png"; import "./trackerAuth.scss"; export const TrackerAuth = () => { - return ( -
- - -
-
-

Войдите в свое рабочее пространствоarrow

- -
-
-
+ return ( +
+ + +
+
+

+ Войдите в свое{" "} + + рабочее пространство + arrow + +

+
- ); +
+
+
+ ); }; From b8ef0119d0c991b02fb9e28bd34ce7e86fe42f88 Mon Sep 17 00:00:00 2001 From: M1kola Date: Fri, 7 Jul 2023 17:38:19 +0300 Subject: [PATCH 5/6] task deadLine --- .../Modal/Tracker/ModalTicket/ModalTicket.jsx | 45 ++++++++++ .../Tracker/ModalTicket/modalTicket.scss | 83 ++++++++++++++++++- .../TicketFullScreen/TicketFullScreen.jsx | 41 ++++++++- src/pages/ProjectTracker/ProjectTracker.js | 10 ++- src/pages/Tracker/tracker.scss | 23 +++++ 5 files changed, 197 insertions(+), 5 deletions(-) diff --git a/src/components/Modal/Tracker/ModalTicket/ModalTicket.jsx b/src/components/Modal/Tracker/ModalTicket/ModalTicket.jsx index 08fd0281..ab07c8a5 100644 --- a/src/components/Modal/Tracker/ModalTicket/ModalTicket.jsx +++ b/src/components/Modal/Tracker/ModalTicket/ModalTicket.jsx @@ -3,6 +3,13 @@ import { CKEditor } from "@ckeditor/ckeditor5-react"; import React, { useEffect, useState } from "react"; import { useDispatch, useSelector } from "react-redux"; import { Link } from "react-router-dom"; +import ru from "date-fns/locale/ru"; +import DatePicker, { registerLocale } from "react-datepicker"; +import "react-datepicker/dist/react-datepicker.css"; + +import { + getCorrectDate +} from "../../../Calendar/calendarHelper"; import { getProfileInfo } from "@redux/outstaffingSlice"; import { setProjectBoardFetch } from "@redux/projectsTrackerSlice"; @@ -26,9 +33,12 @@ import link from "assets/icons/link.svg"; import send from "assets/icons/send.svg"; import watch from "assets/icons/watch.svg"; import avatarMok from "assets/images/avatarMok.png"; +import calendarIcon from "assets/icons/calendar.svg"; import "./modalTicket.scss"; +registerLocale("ru", ru); + export const ModalTiсket = ({ active, setActive, @@ -46,6 +56,11 @@ export const ModalTiсket = ({ comment: "", }); const [comments, setComments] = useState([]); + const [deadLine, setDeadLine] = useState(task.dead_line); + const [datePickerOpen, setDatePickerOpen] = useState(false); + const [startDate, setStartDate] = useState( + task.dead_line ? new Date(task.dead_line) : new Date() + ); const [dropListOpen, setDropListOpen] = useState(false); const [dropListMembersOpen, setDropListMembersOpen] = useState(false); const [executor, setExecutor] = useState(task.executor); @@ -341,6 +356,18 @@ export const ModalTiсket = ({ ); } + function selectDeadLine(date) { + apiRequest("/task/update-task", { + method: "PUT", + data: { + task_id: task.id, + dead_line: getCorrectRequestDate(date) + }, + }).then(() => { + dispatch(setProjectBoardFetch(projectId)); + }); + } + return (
+
+
setDatePickerOpen(!datePickerOpen)}> + calendar + {deadLine ? getCorrectDate(deadLine) : 'Срок исполнения:'} +
+ { + setDatePickerOpen(false); + setStartDate(date); + setDeadLine(date) + selectDeadLine(date) + }} + /> +
Длительность : diff --git a/src/components/Modal/Tracker/ModalTicket/modalTicket.scss b/src/components/Modal/Tracker/ModalTicket/modalTicket.scss index 8baa91cf..a6835bfb 100644 --- a/src/components/Modal/Tracker/ModalTicket/modalTicket.scss +++ b/src/components/Modal/Tracker/ModalTicket/modalTicket.scss @@ -539,12 +539,89 @@ } } + .deadLine { + position: relative; + &__container { + padding: 5px 10px 5px; + margin-top: 10px; + border-radius: 5px; + border: 1px solid gray; + cursor: pointer; + display: flex; + position: relative; + align-items: center; + justify-content: center; + max-width: 185px; + img { + width: 16px; + height: 16px; + } + span { + font-size: 12px; + color: #000000; + margin-left: 10px; + font-weight: 500; + } + } + .datePicker { + visibility: hidden; + height: 0; + padding: 0; + width: 0; + position: absolute; + } + + .react-datepicker-wrapper { + position: absolute; + } + + .react-datepicker { + border: 1px solid #398208; + } + + .react-datepicker-popper { + top: 10px !important; + left: -110px !important; + } + + .react-datepicker__current-month { + font-size: 14px; + font-family: "LabGrotesque", sans-serif; + text-transform: capitalize; + } + + .react-datepicker__header { + padding: 5px 0 10px; + border-bottom: 1px solid #398208; + } + + .react-datepicker__day { + font-size: 14px; + width: 35px; + font-family: "LabGrotesque", sans-serif; + } + + .react-datepicker__day-name { + font-size: 14px; + width: 35px; + font-family: "LabGrotesque", sans-serif; + } + + .react-datepicker__triangle { + left: 85px !important; + + &:before { + border-bottom-color: #398208 !important; + } + } + } + .time { display: flex; align-items: center; justify-content: space-between; font-size: 12px; - margin-top: 20px; + margin-top: 10px; width: 160px; p { @@ -658,7 +735,7 @@ } &_box { - padding: 25px 85px 40px 40px; + padding: 25px 85px 25px 40px; border-bottom: 1px solid #f1f1f1; &-middle { @@ -667,7 +744,7 @@ } &-bottom { - padding: 40px 110px 75px 56px; + padding: 20px 110px 35px 56px; font-weight: 400; font-size: 14px; line-height: 38px; diff --git a/src/components/Modal/Tracker/TicketFullScreen/TicketFullScreen.jsx b/src/components/Modal/Tracker/TicketFullScreen/TicketFullScreen.jsx index 3b163d5d..70b989f2 100644 --- a/src/components/Modal/Tracker/TicketFullScreen/TicketFullScreen.jsx +++ b/src/components/Modal/Tracker/TicketFullScreen/TicketFullScreen.jsx @@ -7,11 +7,16 @@ import { Link, useNavigate, useParams } from "react-router-dom"; import { deletePersonOnProject, getBoarderLoader, - modalToggle, + modalToggle, setProjectBoardFetch, setToggleTab, } from "@redux/projectsTrackerSlice"; import { caseOfNum, getCorrectRequestDate, urlForLocal } from "@utils/helper"; +import calendarIcon from "assets/icons/calendar.svg"; +import {getCorrectDate} from "@components/Calendar/calendarHelper"; +import DatePicker, { registerLocale } from "react-datepicker"; +import ru from "date-fns/locale/ru"; +registerLocale("ru", ru); import { apiRequest } from "@api/request"; @@ -65,10 +70,15 @@ export const TicketFullScreen = () => { const [correctProjectUsers, setCorrectProjectUsers] = useState([]); const [dropListMembersOpen, setDropListMembersOpen] = useState(false); const [users, setUsers] = useState([]); + const [deadLine, setDeadLine] = useState(''); + const [datePickerOpen, setDatePickerOpen] = useState(false); + const [startDate, setStartDate] = useState(null); useEffect(() => { apiRequest(`/task/get-task?task_id=${ticketId.id}`).then((taskInfo) => { setTaskInfo(taskInfo); + setDeadLine(taskInfo.dead_line) + setStartDate(taskInfo.dead_line ? new Date(taskInfo.dead_line) : new Date()) setInputsValue({ title: taskInfo.title, description: taskInfo.description, @@ -363,6 +373,17 @@ export const TicketFullScreen = () => { }); } + function selectDeadLine(date) { + apiRequest("/task/update-task", { + method: "PUT", + data: { + task_id: taskInfo.id, + dead_line: getCorrectRequestDate(date) + }, + }).then(() => { + }); + } + return (
@@ -751,6 +772,24 @@ export const TicketFullScreen = () => {
+
+
setDatePickerOpen(!datePickerOpen)}> + calendar + {deadLine ? getCorrectDate(deadLine) : 'Срок исполнения:'} +
+ { + setDatePickerOpen(false); + setStartDate(date); + setDeadLine(date) + selectDeadLine(date) + }} + /> +
Длительность : diff --git a/src/pages/ProjectTracker/ProjectTracker.js b/src/pages/ProjectTracker/ProjectTracker.js index d34ab06d..3159d697 100644 --- a/src/pages/ProjectTracker/ProjectTracker.js +++ b/src/pages/ProjectTracker/ProjectTracker.js @@ -33,6 +33,9 @@ import TrackerModal from "@components/Modal/Tracker/TrackerModal/TrackerModal"; import { Navigation } from "@components/Navigation/Navigation"; import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs"; import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader"; +import { + getCorrectDate +} from "../../components/Calendar/calendarHelper"; import arrow from "assets/icons/arrows/arrowCalendar.png"; import arrowDown from "assets/icons/arrows/selectArrow.png"; @@ -549,7 +552,7 @@ export const ProjectTracker = () => { >
{column.title} -
+
@@ -652,6 +655,11 @@ export const ProjectTracker = () => { /> )}
+
+

Срок исполнения:

+ {task.dead_line ? getCorrectDate(task.dead_line) : 'Не выбран'} + +
commentsImg diff --git a/src/pages/Tracker/tracker.scss b/src/pages/Tracker/tracker.scss index 14ea2948..407e985b 100644 --- a/src/pages/Tracker/tracker.scss +++ b/src/pages/Tracker/tracker.scss @@ -790,6 +790,23 @@ } } + &__deadLine { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 10px; + + p { + font-weight: 500; + font-size: 14px; + } + + span { + font-weight: 500; + font-size: 14px; + } + } + &__executor { display: flex; justify-content: space-between; @@ -908,6 +925,11 @@ justify-content: space-between; min-width: 300px; + &__more { + display: flex; + align-items: center; + } + span { color: #6f6f6f; font-weight: 500; @@ -935,6 +957,7 @@ bottom: 4px; font-size: 20px; cursor: pointer; + width: 15px; &:hover { font-weight: 600; From 8b9351e3f7c24ff2a3b8cd7216a8e2c3bf6cde1a Mon Sep 17 00:00:00 2001 From: M1kola Date: Fri, 7 Jul 2023 17:38:31 +0300 Subject: [PATCH 6/6] task deadLine --- .../Modal/Tracker/ModalTicket/ModalTicket.jsx | 50 ++++++++------- .../TicketFullScreen/TicketFullScreen.jsx | 62 +++++++++++-------- src/pages/ProjectTracker/ProjectTracker.js | 12 ++-- 3 files changed, 69 insertions(+), 55 deletions(-) diff --git a/src/components/Modal/Tracker/ModalTicket/ModalTicket.jsx b/src/components/Modal/Tracker/ModalTicket/ModalTicket.jsx index ab07c8a5..fda057ab 100644 --- a/src/components/Modal/Tracker/ModalTicket/ModalTicket.jsx +++ b/src/components/Modal/Tracker/ModalTicket/ModalTicket.jsx @@ -1,15 +1,11 @@ import ClassicEditor from "@ckeditor/ckeditor5-build-classic"; import { CKEditor } from "@ckeditor/ckeditor5-react"; -import React, { useEffect, useState } from "react"; -import { useDispatch, useSelector } from "react-redux"; -import { Link } from "react-router-dom"; 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 { - getCorrectDate -} from "../../../Calendar/calendarHelper"; +import { useDispatch, useSelector } from "react-redux"; +import { Link } from "react-router-dom"; import { getProfileInfo } from "@redux/outstaffingSlice"; import { setProjectBoardFetch } from "@redux/projectsTrackerSlice"; @@ -24,6 +20,7 @@ import TrackerTaskComment from "@components/TrackerTaskComment/TrackerTaskCommen import archive from "assets/icons/archive.svg"; import arrow from "assets/icons/arrows/arrowStart.png"; import fullScreen from "assets/icons/arrows/inFullScreen.svg"; +import calendarIcon from "assets/icons/calendar.svg"; import category from "assets/icons/category.svg"; import close from "assets/icons/closeProjectPersons.svg"; import del from "assets/icons/delete.svg"; @@ -33,8 +30,8 @@ import link from "assets/icons/link.svg"; import send from "assets/icons/send.svg"; import watch from "assets/icons/watch.svg"; import avatarMok from "assets/images/avatarMok.png"; -import calendarIcon from "assets/icons/calendar.svg"; +import { getCorrectDate } from "../../../Calendar/calendarHelper"; import "./modalTicket.scss"; registerLocale("ru", ru); @@ -59,7 +56,7 @@ export const ModalTiсket = ({ const [deadLine, setDeadLine] = useState(task.dead_line); const [datePickerOpen, setDatePickerOpen] = useState(false); const [startDate, setStartDate] = useState( - task.dead_line ? new Date(task.dead_line) : new Date() + task.dead_line ? new Date(task.dead_line) : new Date() ); const [dropListOpen, setDropListOpen] = useState(false); const [dropListMembersOpen, setDropListMembersOpen] = useState(false); @@ -361,7 +358,7 @@ export const ModalTiсket = ({ method: "PUT", data: { task_id: task.id, - dead_line: getCorrectRequestDate(date) + dead_line: getCorrectRequestDate(date), }, }).then(() => { dispatch(setProjectBoardFetch(projectId)); @@ -620,22 +617,27 @@ export const ModalTiсket = ({
-
-
setDatePickerOpen(!datePickerOpen)}> - calendar - {deadLine ? getCorrectDate(deadLine) : 'Срок исполнения:'} +
+
setDatePickerOpen(!datePickerOpen)} + > + calendar + + {deadLine ? getCorrectDate(deadLine) : "Срок исполнения:"} +
{ - setDatePickerOpen(false); - setStartDate(date); - setDeadLine(date) - selectDeadLine(date) - }} + className="datePicker" + open={datePickerOpen} + locale="ru" + selected={startDate} + onChange={(date) => { + setDatePickerOpen(false); + setStartDate(date); + setDeadLine(date); + selectDeadLine(date); + }} />
diff --git a/src/components/Modal/Tracker/TicketFullScreen/TicketFullScreen.jsx b/src/components/Modal/Tracker/TicketFullScreen/TicketFullScreen.jsx index 70b989f2..38e0af38 100644 --- a/src/components/Modal/Tracker/TicketFullScreen/TicketFullScreen.jsx +++ b/src/components/Modal/Tracker/TicketFullScreen/TicketFullScreen.jsx @@ -1,25 +1,24 @@ import ClassicEditor from "@ckeditor/ckeditor5-build-classic"; import { CKEditor } from "@ckeditor/ckeditor5-react"; +import ru from "date-fns/locale/ru"; import React, { useEffect, useState } from "react"; +import DatePicker, { registerLocale } from "react-datepicker"; import { useDispatch, useSelector } from "react-redux"; import { Link, useNavigate, useParams } from "react-router-dom"; import { deletePersonOnProject, getBoarderLoader, - modalToggle, setProjectBoardFetch, + modalToggle, + setProjectBoardFetch, setToggleTab, } from "@redux/projectsTrackerSlice"; import { caseOfNum, getCorrectRequestDate, urlForLocal } from "@utils/helper"; -import calendarIcon from "assets/icons/calendar.svg"; -import {getCorrectDate} from "@components/Calendar/calendarHelper"; -import DatePicker, { registerLocale } from "react-datepicker"; -import ru from "date-fns/locale/ru"; -registerLocale("ru", ru); 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"; @@ -31,6 +30,7 @@ import TrackerTaskComment from "@components/TrackerTaskComment/TrackerTaskCommen import arrow from "assets/icons/arrows/arrowCalendar.png"; import arrowStart from "assets/icons/arrows/arrowStart.png"; +import calendarIcon from "assets/icons/calendar.svg"; import close from "assets/icons/close.png"; import del from "assets/icons/delete.svg"; import edit from "assets/icons/edit.svg"; @@ -45,6 +45,8 @@ import avatarMok from "assets/images/avatarMok.png"; import "./ticketFullScreen.scss"; +registerLocale("ru", ru); + export const TicketFullScreen = () => { const [modalAddWorker, setModalAddWorker] = useState(false); const ticketId = useParams(); @@ -70,15 +72,17 @@ export const TicketFullScreen = () => { const [correctProjectUsers, setCorrectProjectUsers] = useState([]); const [dropListMembersOpen, setDropListMembersOpen] = useState(false); const [users, setUsers] = useState([]); - const [deadLine, setDeadLine] = useState(''); + const [deadLine, setDeadLine] = useState(""); const [datePickerOpen, setDatePickerOpen] = useState(false); const [startDate, setStartDate] = useState(null); useEffect(() => { apiRequest(`/task/get-task?task_id=${ticketId.id}`).then((taskInfo) => { setTaskInfo(taskInfo); - setDeadLine(taskInfo.dead_line) - setStartDate(taskInfo.dead_line ? new Date(taskInfo.dead_line) : new Date()) + setDeadLine(taskInfo.dead_line); + setStartDate( + taskInfo.dead_line ? new Date(taskInfo.dead_line) : new Date() + ); setInputsValue({ title: taskInfo.title, description: taskInfo.description, @@ -378,10 +382,9 @@ export const TicketFullScreen = () => { method: "PUT", data: { task_id: taskInfo.id, - dead_line: getCorrectRequestDate(date) + dead_line: getCorrectRequestDate(date), }, - }).then(() => { - }); + }).then(() => {}); } return ( @@ -772,22 +775,29 @@ export const TicketFullScreen = () => {
-
-
setDatePickerOpen(!datePickerOpen)}> - calendar - {deadLine ? getCorrectDate(deadLine) : 'Срок исполнения:'} +
+
setDatePickerOpen(!datePickerOpen)} + > + calendar + + {deadLine + ? getCorrectDate(deadLine) + : "Срок исполнения:"} +
{ - setDatePickerOpen(false); - setStartDate(date); - setDeadLine(date) - selectDeadLine(date) - }} + className="datePicker" + open={datePickerOpen} + locale="ru" + selected={startDate} + onChange={(date) => { + setDatePickerOpen(false); + setStartDate(date); + setDeadLine(date); + selectDeadLine(date); + }} />
diff --git a/src/pages/ProjectTracker/ProjectTracker.js b/src/pages/ProjectTracker/ProjectTracker.js index 3159d697..f9094701 100644 --- a/src/pages/ProjectTracker/ProjectTracker.js +++ b/src/pages/ProjectTracker/ProjectTracker.js @@ -33,9 +33,6 @@ import TrackerModal from "@components/Modal/Tracker/TrackerModal/TrackerModal"; import { Navigation } from "@components/Navigation/Navigation"; import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs"; import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader"; -import { - getCorrectDate -} from "../../components/Calendar/calendarHelper"; import arrow from "assets/icons/arrows/arrowCalendar.png"; import arrowDown from "assets/icons/arrows/selectArrow.png"; @@ -51,6 +48,8 @@ import accept from "assets/images/accept.png"; import archive from "assets/images/archiveIcon.png"; import avatarMok from "assets/images/avatarMok.png"; +import { getCorrectDate } from "../../components/Calendar/calendarHelper"; + export const ProjectTracker = () => { const dispatch = useDispatch(); const projectId = useParams(); @@ -552,7 +551,7 @@ export const ProjectTracker = () => { >
{column.title} -
+
@@ -657,7 +656,10 @@ export const ProjectTracker = () => {

Срок исполнения:

- {task.dead_line ? getCorrectDate(task.dead_line) : 'Не выбран'} + + {task.dead_line + ? getCorrectDate(task.dead_line) + : "Не выбран"}