element-plus
Version:
A Component Library for Vue3.0
64 lines (52 loc) • 1.64 kB
text/typescript
const makeList = (total, method, methodFunc) => {
const arr = []
const disabledArr = method && methodFunc()
for (let i = 0; i < total; i++) {
arr[i] = disabledArr ? disabledArr.includes(i) : false
}
return arr
}
const makeAvaliableArr = list => {
return list.map((_, index) => !_ ? index : _).filter(_ => _ !== true)
}
export const getTimeLists = (disabledHours, disabledMinutes, disabledSeconds) => {
const getHoursList = (role, compare?) => {
return makeList(24, disabledHours, () => disabledHours(role, compare))
}
const getMinutesList = (hour, role, compare?) => {
return makeList(60, disabledMinutes, () => disabledMinutes(hour, role, compare))
}
const getSecondsList = (hour, minute, role, compare?) => {
return makeList(60, disabledSeconds, () => disabledSeconds(hour, minute, role, compare))
}
return {
getHoursList,
getMinutesList,
getSecondsList,
}
}
export const getAvaliableArrs = (disabledHours, disabledMinutes, disabledSeconds) => {
const {
getHoursList,
getMinutesList,
getSecondsList,
} = getTimeLists(
disabledHours,
disabledMinutes,
disabledSeconds,
)
const getAvaliableHours = (role, compare?) => {
return makeAvaliableArr(getHoursList(role, compare))
}
const getAvaliableMinutes = (hour, role, compare?) => {
return makeAvaliableArr(getMinutesList(hour, role, compare))
}
const getAvaliableSeconds = (hour, minute, role, compare?) => {
return makeAvaliableArr(getSecondsList(hour, minute, role, compare))
}
return {
getAvaliableHours,
getAvaliableMinutes,
getAvaliableSeconds,
}
}