38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
import { type DateValue, parseDate } from '@internationalized/date'
|
|
|
|
function _useOptions() {
|
|
const options = reactive({
|
|
castBeginDate: '',
|
|
castDayNo: -1,
|
|
renderMode: 'heatmap' as 'heatmap' | 'image',
|
|
isPlaying: false,
|
|
mapping: {} as Record<string, string>,
|
|
})
|
|
|
|
function setCastBeginDate(date: DateValue) {
|
|
const datestr = date.toString()
|
|
options.castBeginDate = datestr.replaceAll('-', '')
|
|
}
|
|
|
|
function setTargetDate(date: DateValue) {
|
|
const castBeginDateStr = options.castBeginDate.toString()
|
|
if (castBeginDateStr.length !== 8) {
|
|
console.error(castBeginDateStr)
|
|
throw new Error('castBeginDate is invalid')
|
|
}
|
|
const newDateStr = `${castBeginDateStr.slice(0, 4)}-${castBeginDateStr.slice(4, 6)}-${castBeginDateStr.slice(6, 8)}`
|
|
const castBeginDate = parseDate(newDateStr)
|
|
const dayNo = date.compare(castBeginDate)
|
|
options.castDayNo = dayNo
|
|
return dayNo
|
|
}
|
|
|
|
return {
|
|
options,
|
|
setCastBeginDate,
|
|
setTargetDate,
|
|
}
|
|
}
|
|
|
|
export const useOptions = createSharedComposable(() => _useOptions())
|