%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
Server IP : 49.231.201.246 / Your IP : 216.73.216.110 Web Server : Apache/2.4.18 (Ubuntu) System : Linux 246 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : root ( 0) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/html/ppaobm/vendor/bower-asset/fullcalendar/src/core/structs/ |
Upload File : |
import { startOfDay, addDays, DateMarker } from '../datelib/marker' import { Duration, createDuration, subtractDurations } from '../datelib/duration' import { arrayToHash } from '../util/object' import { refineProps } from '../util/misc' import { RecurringType, ParsedRecurring } from './recurring-event' import { EventInput } from './event' import { DateRange, intersectRanges } from '../datelib/date-range' import { DateEnv } from '../datelib/env' import { createPlugin } from '../plugin-system' /* An implementation of recurring events that only supports every-day or weekly recurrences. */ interface SimpleRecurringData { daysOfWeek: number[] | null startTime: Duration | null endTime: Duration | null startRecur: DateMarker | null endRecur: DateMarker | null } interface SimpleParsedRecurring extends ParsedRecurring { typeData: SimpleRecurringData // the whole point is to make this more specific } let recurring: RecurringType = { parse(rawEvent: EventInput, leftoverProps: any, dateEnv: DateEnv): SimpleParsedRecurring | null { let createMarker = dateEnv.createMarker.bind(dateEnv) let processors = { daysOfWeek: null, startTime: createDuration, endTime: createDuration, startRecur: createMarker, endRecur: createMarker } let props = refineProps(rawEvent, processors, {}, leftoverProps) as SimpleRecurringData let anyValid = false for (let propName in props) { if (props[propName] != null) { anyValid = true break } } if (anyValid) { return { allDayGuess: Boolean(!props.startTime && !props.endTime), duration: (props.startTime && props.endTime) ? subtractDurations(props.endTime, props.startTime) : null, typeData: props // doesn't need endTime anymore but oh well } } return null }, expand(typeData: SimpleRecurringData, framingRange: DateRange, dateEnv: DateEnv): DateMarker[] { let clippedFramingRange = intersectRanges( framingRange, { start: typeData.startRecur, end: typeData.endRecur } ) if (clippedFramingRange) { return expandRanges( typeData.daysOfWeek, typeData.startTime, clippedFramingRange, dateEnv ) } else { return [] } } } export default createPlugin({ recurringTypes: [ recurring ] }) function expandRanges( daysOfWeek: number[] | null, startTime: Duration | null, framingRange: DateRange, dateEnv: DateEnv ): DateMarker[] { let dowHash: { [num: string]: true } | null = daysOfWeek ? arrayToHash(daysOfWeek) : null let dayMarker = startOfDay(framingRange.start) let endMarker = framingRange.end let instanceStarts: DateMarker[] = [] while (dayMarker < endMarker) { let instanceStart // if everyday, or this particular day-of-week if (!dowHash || dowHash[dayMarker.getUTCDay()]) { if (startTime) { instanceStart = dateEnv.add(dayMarker, startTime) } else { instanceStart = dayMarker } instanceStarts.push(instanceStart) } dayMarker = addDays(dayMarker, 1) } return instanceStarts }