calendar range days
This commit is contained in:
parent
ff2bd020e8
commit
8b49a3a7c2
@ -37,11 +37,16 @@ export const ProfileCalendar = () => {
|
|||||||
const [totalHours, setTotalHours] = useState(0);
|
const [totalHours, setTotalHours] = useState(0);
|
||||||
const [loader, setLoader] = useState(true);
|
const [loader, setLoader] = useState(true);
|
||||||
const [startRangeDays, setStartRangeDays] = useState(false);
|
const [startRangeDays, setStartRangeDays] = useState(false);
|
||||||
|
const [startDate, setStartDate] = useState(null);
|
||||||
|
|
||||||
function setValueHandler(value) {
|
function setValueHandler(value) {
|
||||||
setValue(value);
|
setValue(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setStartDateRange (date) {
|
||||||
|
setStartDate(date)
|
||||||
|
}
|
||||||
|
|
||||||
function toggleStartRangeDays() {
|
function toggleStartRangeDays() {
|
||||||
setStartRangeDays(!startRangeDays);
|
setStartRangeDays(!startRangeDays);
|
||||||
}
|
}
|
||||||
@ -122,6 +127,8 @@ export const ProfileCalendar = () => {
|
|||||||
totalHours={totalHours}
|
totalHours={totalHours}
|
||||||
startRangeDays={startRangeDays}
|
startRangeDays={startRangeDays}
|
||||||
toggleRangeDays={toggleStartRangeDays}
|
toggleRangeDays={toggleStartRangeDays}
|
||||||
|
startDate={startDate}
|
||||||
|
setStartDateRange={setStartDateRange}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -38,6 +38,8 @@ export const ProfileCalendarComponent = React.memo(
|
|||||||
totalHours,
|
totalHours,
|
||||||
startRangeDays,
|
startRangeDays,
|
||||||
toggleRangeDays,
|
toggleRangeDays,
|
||||||
|
startDate,
|
||||||
|
setStartDateRange
|
||||||
}) => {
|
}) => {
|
||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
|
|
||||||
@ -45,7 +47,6 @@ export const ProfileCalendarComponent = React.memo(
|
|||||||
const [calendar, setCalendar] = useState([]);
|
const [calendar, setCalendar] = useState([]);
|
||||||
const [month, setMonth] = useState("");
|
const [month, setMonth] = useState("");
|
||||||
const [shortReport, setShortReport] = useState(false);
|
const [shortReport, setShortReport] = useState(false);
|
||||||
const [startDate, setStartDate] = useState(null);
|
|
||||||
const [endDate, setEndDate] = useState(null);
|
const [endDate, setEndDate] = useState(null);
|
||||||
const [totalRangeHours, setTotalRangeHours] = useState(0);
|
const [totalRangeHours, setTotalRangeHours] = useState(0);
|
||||||
const [selectedRangeDays, setSelectedRangeDays] = useState({});
|
const [selectedRangeDays, setSelectedRangeDays] = useState({});
|
||||||
@ -58,6 +59,9 @@ export const ProfileCalendarComponent = React.memo(
|
|||||||
[array[0]]: false,
|
[array[0]]: false,
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
if (endDate) {
|
||||||
|
resetRangeDays()
|
||||||
|
}
|
||||||
}, [value]);
|
}, [value]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -113,9 +117,11 @@ export const ProfileCalendarComponent = React.memo(
|
|||||||
}
|
}
|
||||||
|
|
||||||
function reportsByDate(endDay) {
|
function reportsByDate(endDay) {
|
||||||
const requestDates = `fromDate=${getCorrectYYMMDD(
|
const requestDates = startDate < endDay ? `fromDate=${getCorrectYYMMDD(
|
||||||
startDate._d
|
startDate._d
|
||||||
)}&toDate=${getCorrectYYMMDD(endDay._d)}`;
|
)}&toDate=${getCorrectYYMMDD(endDay._d)}` : `fromDate=${getCorrectYYMMDD(
|
||||||
|
endDay._d
|
||||||
|
)}&toDate=${getCorrectYYMMDD(startDate._d)}`;
|
||||||
apiRequest(
|
apiRequest(
|
||||||
`/reports/reports-by-date?${requestDates}&user_card_id=${localStorage.getItem(
|
`/reports/reports-by-date?${requestDates}&user_card_id=${localStorage.getItem(
|
||||||
"cardId"
|
"cardId"
|
||||||
@ -135,7 +141,7 @@ export const ProfileCalendarComponent = React.memo(
|
|||||||
|
|
||||||
function rangeDays(day) {
|
function rangeDays(day) {
|
||||||
if (!startDate) {
|
if (!startDate) {
|
||||||
setStartDate(day);
|
setStartDateRange(day);
|
||||||
} else {
|
} else {
|
||||||
setEndDate(day);
|
setEndDate(day);
|
||||||
reportsByDate(day);
|
reportsByDate(day);
|
||||||
@ -145,21 +151,35 @@ export const ProfileCalendarComponent = React.memo(
|
|||||||
function onMouseRangeDays(day) {
|
function onMouseRangeDays(day) {
|
||||||
let selectRange = {};
|
let selectRange = {};
|
||||||
for (let curDay in selectedRangeDays) {
|
for (let curDay in selectedRangeDays) {
|
||||||
if (
|
if (day > startDate) {
|
||||||
day > startDate &&
|
if (
|
||||||
new Date(curDay) > startDate &&
|
day > startDate &&
|
||||||
new Date(curDay) < day
|
new Date(curDay) > startDate &&
|
||||||
) {
|
new Date(curDay) < day
|
||||||
selectRange[curDay] = true;
|
) {
|
||||||
|
selectRange[curDay] = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
selectRange[curDay] = false;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
selectRange[curDay] = false;
|
if (
|
||||||
|
day < startDate &&
|
||||||
|
new Date(curDay) < startDate &&
|
||||||
|
new Date(curDay) > day
|
||||||
|
) {
|
||||||
|
selectRange[curDay] = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
selectRange[curDay] = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setSelectedRangeDays(selectRange);
|
setSelectedRangeDays(selectRange);
|
||||||
}
|
}
|
||||||
|
|
||||||
function resetRangeDays() {
|
function resetRangeDays() {
|
||||||
setStartDate(null);
|
setStartDateRange(null);
|
||||||
setEndDate(null);
|
setEndDate(null);
|
||||||
setTotalRangeHours(0);
|
setTotalRangeHours(0);
|
||||||
calendarHelper(value).map((array) => {
|
calendarHelper(value).map((array) => {
|
||||||
@ -246,7 +266,7 @@ export const ProfileCalendarComponent = React.memo(
|
|||||||
className={
|
className={
|
||||||
startRangeDays
|
startRangeDays
|
||||||
? `selectDays ${
|
? `selectDays ${
|
||||||
startDate === day || endDate === day
|
String(startDate?._d) === String(day._d) || endDate === day
|
||||||
? "selectedDay"
|
? "selectedDay"
|
||||||
: ""
|
: ""
|
||||||
} ${endDate ? "disable" : ""} ${
|
} ${endDate ? "disable" : ""} ${
|
||||||
@ -279,7 +299,7 @@ export const ProfileCalendarComponent = React.memo(
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{endDate
|
{endDate
|
||||||
? `${getCorrectDate(startDate)} - ${getCorrectDate(endDate)}`
|
? startDate < endDate ? `${getCorrectDate(startDate)} - ${getCorrectDate(endDate)}` : `${getCorrectDate(endDate)} - ${getCorrectDate(startDate)}`
|
||||||
: "Выбрать диапазон"}
|
: "Выбрать диапазон"}
|
||||||
</span>
|
</span>
|
||||||
<span>
|
<span>
|
||||||
|
Loading…
Reference in New Issue
Block a user