| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- import DayGrid, { DayGridSeg } from './DayGrid'
- import { DateProfile } from '../DateProfileGenerator'
- import { EventStore } from '../structs/event-store'
- import { EventUiHash } from '../component/event-rendering'
- import { DateSpan } from '../structs/date-span'
- import { EventInteractionUiState } from '../interactions/event-interaction-state'
- import DayTable from '../common/DayTable'
- import { Duration } from '../datelib/duration'
- import Component from '../component/Component'
- import { DateRange } from '../datelib/date-range'
- import { Slicer } from '../common/slicing-utils'
- export interface SimpleDayGridProps {
- dateProfile: DateProfile | null
- dayTable: DayTable
- nextDayThreshold: Duration
- businessHours: EventStore
- eventStore: EventStore
- eventUis: EventUiHash
- dateSelection: DateSpan | null
- eventSelection: string
- eventDrag: EventInteractionUiState | null
- eventResize: EventInteractionUiState | null
- isRigid: boolean
- }
- export default class SimpleDayGrid extends Component<SimpleDayGridProps> {
- dayGrid: DayGrid
- private slicer = new Slicer(sliceSegs)
- constructor(context, dayGrid: DayGrid) {
- super(context)
- this.dayGrid = dayGrid
- this.slicer.component = dayGrid
- }
- render(props: SimpleDayGridProps) {
- let { dayGrid, slicer, isRtl } = this
- let { dateProfile, dayTable, nextDayThreshold } = props
- dayGrid.receiveProps({
- dateProfile,
- cells: dayTable.cells,
- businessHourSegs: slicer.businessHoursToSegs(props.businessHours, dateProfile, nextDayThreshold, dayTable, isRtl),
- eventSegs: slicer.eventStoreToSegs(props.eventStore, props.eventUis, dateProfile, nextDayThreshold, dayTable, isRtl),
- dateSelectionSegs: slicer.selectionToSegs(props.dateSelection, dayTable, isRtl),
- eventSelection: props.eventSelection,
- eventDrag: slicer.buildEventDrag(props.eventDrag, dateProfile, dayTable, isRtl),
- eventResize: slicer.buildEventResize(props.eventResize, dateProfile, dayTable, isRtl),
- isRigid: props.isRigid
- })
- }
- }
- function sliceSegs(range: DateRange, dayTable: DayTable, isRtl: boolean): DayGridSeg[] {
- return dayTable.sliceRange(range).map(function(seg) {
- return {
- isStart: seg.isStart,
- isEnd: seg.isEnd,
- row: seg.row,
- leftCol: isRtl ? (dayTable.colCnt - 1 - seg.lastCol) : seg.firstCol,
- rightCol: isRtl ? (dayTable.colCnt - 1 - seg.firstCol) : seg.lastCol
- }
- })
- }
|