mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-05-06 06:46:04 +02:00
84 lines
2.4 KiB
JavaScript
84 lines
2.4 KiB
JavaScript
import { computed, ref } from 'vue';
|
|
|
|
import dayjs from 'dayjs';
|
|
|
|
export function useDateNavigation(allDateOfActivity, reloadData) {
|
|
const selectedDate = ref(dayjs().toDate());
|
|
|
|
const allDateOfActivityArray = computed(() => {
|
|
return allDateOfActivity.value
|
|
? Array.from(allDateOfActivity.value)
|
|
.map((item) => dayjs(item))
|
|
.sort((a, b) => b.valueOf() - a.valueOf())
|
|
: [];
|
|
});
|
|
|
|
const isNextDayBtnDisabled = computed(() => {
|
|
return dayjs(selectedDate.value).isSameOrAfter(
|
|
allDateOfActivityArray.value[0],
|
|
'day'
|
|
);
|
|
});
|
|
|
|
const isPrevDayBtnDisabled = computed(() => {
|
|
return dayjs(selectedDate.value).isSame(
|
|
allDateOfActivityArray.value[
|
|
allDateOfActivityArray.value.length - 1
|
|
],
|
|
'day'
|
|
);
|
|
});
|
|
|
|
function changeSelectedDateFromBtn(isNext = false) {
|
|
if (
|
|
!allDateOfActivityArray.value ||
|
|
allDateOfActivityArray.value.length === 0
|
|
) {
|
|
return;
|
|
}
|
|
|
|
const idx = allDateOfActivityArray.value.findIndex((date) =>
|
|
date.isSame(selectedDate.value, 'day')
|
|
);
|
|
if (idx !== -1) {
|
|
const newIdx = isNext ? idx - 1 : idx + 1;
|
|
|
|
if (newIdx >= 0 && newIdx < allDateOfActivityArray.value.length) {
|
|
selectedDate.value =
|
|
allDateOfActivityArray.value[newIdx].toDate();
|
|
reloadData();
|
|
return;
|
|
}
|
|
}
|
|
selectedDate.value = isNext
|
|
? allDateOfActivityArray.value[0].toDate()
|
|
: allDateOfActivityArray.value[
|
|
allDateOfActivityArray.value.length - 1
|
|
].toDate();
|
|
reloadData();
|
|
}
|
|
|
|
function getDatePickerDisabledDate(time) {
|
|
if (
|
|
time > Date.now() ||
|
|
allDateOfActivityArray.value[
|
|
allDateOfActivityArray.value.length - 1
|
|
]
|
|
?.add(-1, 'day')
|
|
.isAfter(time, 'day') ||
|
|
!allDateOfActivity.value
|
|
) {
|
|
return true;
|
|
}
|
|
return !allDateOfActivity.value.has(dayjs(time).format('YYYY-MM-DD'));
|
|
}
|
|
|
|
return {
|
|
selectedDate,
|
|
isNextDayBtnDisabled,
|
|
isPrevDayBtnDisabled,
|
|
changeSelectedDateFromBtn,
|
|
getDatePickerDisabledDate
|
|
};
|
|
}
|