diff --git a/src/components/Calendar/calendarComponent.scss b/src/components/Calendar/calendarComponent.scss index 0fd023ca..f3c14dd8 100644 --- a/src/components/Calendar/calendarComponent.scss +++ b/src/components/Calendar/calendarComponent.scss @@ -1,12 +1,8 @@ .calendar-component { position: relative; - margin-top: 30px; - margin-bottom: 60px; + margin: 30px 0; background-color: #f9f9f9; - padding-left: 68px; - padding-right: 54px; - padding-top: 48px; - padding-bottom: 40px; + padding: 20px 30px; font-family: "LabGrotesque", sans-serif; &__header { @@ -98,7 +94,7 @@ } &__rectangle { - margin: 36px 0; + margin: 20px 0; img { width: 100%; @@ -122,7 +118,7 @@ } } - margin-bottom: 60px; + margin: 20px 0 20px; } &__form { @@ -203,8 +199,7 @@ } @media (max-width: 968px) { .calendar-component { - margin-bottom: 40px; - padding: 28px 10px 48px 10px; + padding: 28px 10px; &__header { &-box { @@ -300,3 +295,15 @@ height: 14px; } } + +@media (max-width: 575.98px) { + .selectDateRange { + font-size: 14px; + text-align: center; + column-gap: 8px; + + .select { + padding: 4px; + } + } +} diff --git a/src/components/Calendar/calendarHelper.js b/src/components/Calendar/calendarHelper.js index 7d92a9cf..8f0ac0b8 100644 --- a/src/components/Calendar/calendarHelper.js +++ b/src/components/Calendar/calendarHelper.js @@ -25,6 +25,7 @@ export function calendarHelper(value) { } export function getReports(value) { + // получение отчетов с видимой области const startDay = value .clone() .startOf("month") @@ -56,12 +57,7 @@ export function getCreatedDate(day) { } } -export function correctDay(day) { - if (day < 10) { - return `0${day}`; - } - return day; -} +export const correctDay = (day) => (day < 10 ? `0${day}` : day); export function currentMonth() { const currentMonth = moment().format("MMMM"); diff --git a/src/components/ProfileCalendar/ProfileCalendar.jsx b/src/components/ProfileCalendar/ProfileCalendar.jsx index 15a58a2f..ba1a175a 100644 --- a/src/components/ProfileCalendar/ProfileCalendar.jsx +++ b/src/components/ProfileCalendar/ProfileCalendar.jsx @@ -41,18 +41,6 @@ export const ProfileCalendar = () => { const [startRangeDays, setStartRangeDays] = useState(false); const [startDate, setStartDate] = useState(null); - function setValueHandler(value) { - setValue(value); - } - - function setStartDateRange(date) { - setStartDate(date); - } - - function toggleStartRangeDays() { - setStartRangeDays(!startRangeDays); - } - useEffect(() => { dispatch(setRequestDate(getReports(moment()))); }, []); @@ -68,14 +56,19 @@ export const ProfileCalendar = () => { )}` ).then((reports) => { let spendTime = 0; - for (const report of reports) { - report.task.map((task) => { - if (task.hours_spent) { - spendTime += Number(task.hours_spent); - } + + reports + .filter( + (item) => new Date(item.created_at).getMonth() === value.month() + ) + .map((report) => { + spendTime += report.task.reduce( + (acc, task) => acc + task.hours_spent, + 0 + ); }); - } - setTotalHours(spendTime); + + setTotalHours(Math.floor(spendTime)); setReports(reports); setLoader(false); }); @@ -124,14 +117,14 @@ export const ProfileCalendar = () => {
setValue(value)} value={value} reports={reports} totalHours={totalHours} startRangeDays={startRangeDays} - toggleRangeDays={toggleStartRangeDays} + toggleRangeDays={() => setStartRangeDays(!startRangeDays)} startDate={startDate} - setStartDateRange={setStartDateRange} + setStartDateRange={(date) => setStartDate(date)} />
diff --git a/src/components/ProfileCalendar/ProfileCalendarComponent.jsx b/src/components/ProfileCalendar/ProfileCalendarComponent.jsx index 95bdcb0a..1b97711c 100644 --- a/src/components/ProfileCalendar/ProfileCalendarComponent.jsx +++ b/src/components/ProfileCalendar/ProfileCalendarComponent.jsx @@ -20,7 +20,8 @@ import { currentMonthAndDay, getCorrectDate, getReports, - hourOfNum + hourOfNum, + correctDay } from "@components/Calendar/calendarHelper"; import BaseButton from "@components/Common/BaseButton/BaseButton"; import ShortReport from "@components/ShortReport/ShortReport"; @@ -30,7 +31,6 @@ import calendarIcon from "assets/icons/calendar.svg"; // import close from "assets/icons/closeProjectPersons.svg"; import rectangle from "assets/images/rectangle__calendar.png"; -// eslint-disable-next-line react/display-name export const ProfileCalendarComponent = React.memo( ({ value, @@ -44,7 +44,6 @@ export const ProfileCalendarComponent = React.memo( }) => { const dispatch = useDispatch(); - const [currentDay] = useState(moment()); const [calendar, setCalendar] = useState([]); const [month, setMonth] = useState(""); const [shortReport, setShortReport] = useState(false); @@ -74,15 +73,8 @@ export const ProfileCalendarComponent = React.memo( return day.isSame(new Date(), "day"); } - function correctDay(day) { - if (day < 10) { - return `0${day}`; - } - return day; - } - function dayStyles(day) { - if (currentDay < day) return `block`; + if (moment() < day) return `block`; for (const date of reports) { if ( `${new Date(day).getFullYear()}-${correctDay( @@ -110,13 +102,9 @@ export const ProfileCalendarComponent = React.memo( return "../../report"; } - function prevMonth() { - return value.clone().subtract(1, "month"); - } + const prevMonth = () => value.clone().subtract(1, "month"); - function nextMonth() { - return value.clone().add(1, "month"); - } + const nextMonth = () => value.clone().add(1, "month"); function reportsByDate(endDay) { const requestDates = @@ -133,25 +121,16 @@ export const ProfileCalendarComponent = React.memo( )}` ).then((reports) => { let spendTime = 0; - for (const report of reports) { - report.task.map((task) => { - if (task.hours_spent) { - spendTime += Number(task.hours_spent); - } - }); - } - setTotalRangeHours(spendTime); + reports.map((report) => { + spendTime += report.task.reduce( + (acc, task) => acc + task.hours_spent, + 0 + ); + }); + setTotalRangeHours(Math.floor(spendTime)); }); } - function toggleActivePeriod() { - if (!activePeriod) { - setActivePeriod(true); - } else { - setActivePeriod(false); - } - } - function rangeDays(day) { if (!startDate) { setStartDateRange(day); @@ -308,7 +287,7 @@ export const ProfileCalendarComponent = React.memo( onClick={() => { if (startRangeDays) resetRangeDays(); toggleRangeDays(); - toggleActivePeriod(); + setActivePeriod(!activePeriod); }} > {endDate @@ -331,7 +310,7 @@ export const ProfileCalendarComponent = React.memo( styles={"clear-days"} onClick={() => { resetRangeDays(); - toggleActivePeriod(); + setActivePeriod(false); toggleRangeDays(); }} > diff --git a/src/components/ReportForm/reportForm.scss b/src/components/ReportForm/reportForm.scss index 0b54ce75..db534bc4 100644 --- a/src/components/ReportForm/reportForm.scss +++ b/src/components/ReportForm/reportForm.scss @@ -16,8 +16,8 @@ &__content { background: #ffffff; border-radius: 12px; - margin: 25px 0 80px; - padding: 50px 40px; + margin: 20px 0 30px; + padding: 20px 30px; @media (max-width: 555px) { padding: 25px 20px; @@ -69,8 +69,8 @@ letter-spacing: normal; line-height: 30px; text-align: left; - margin-top: 30px; - margin-bottom: 10px; + margin-top: 20px; + margin-bottom: 5px; @media (max-width: 555px) { margin-top: 25px; @@ -302,7 +302,7 @@ &__input-box { input { margin-left: 10px; - margin-top: 30px; + margin-top: 10px; margin-bottom: 20px; width: 460px; height: 42px;