Explorar el Código

fixes to slicing

Adam Shaw hace 7 años
padre
commit
e6476ff6c0

+ 2 - 2
src/agenda/SimpleTimeGrid.ts

@@ -52,8 +52,8 @@ export default class SimpleTimeGrid extends Component<SimpleTimeGridProps> {
       eventSegs: slicer.eventStoreToSegs(props.eventStore, props.eventUis, dateProfile, null, dayRanges),
       dateSelectionSegs: slicer.selectionToSegs(props.dateSelection, dayRanges),
       eventSelection: props.eventSelection,
-      eventDrag: slicer.buildEventDrag(props.eventDrag, dateProfile, dayRanges),
-      eventResize: slicer.buildEventResize(props.eventResize, dateProfile, dayRanges)
+      eventDrag: slicer.buildEventDrag(props.eventDrag, dateProfile, null, dayRanges),
+      eventResize: slicer.buildEventResize(props.eventResize, dateProfile, null, dayRanges)
     })
   }
 

+ 3 - 3
src/basic/SimpleDayGrid.ts

@@ -48,15 +48,15 @@ export default class SimpleDayGrid extends Component<SimpleDayGridProps> {
       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),
+      eventDrag: slicer.buildEventDrag(props.eventDrag, dateProfile, null, dayTable, isRtl),
+      eventResize: slicer.buildEventResize(props.eventResize, dateProfile, null, dayTable, isRtl),
       isRigid: props.isRigid
     })
   }
 
 }
 
-function sliceSegs(range: DateRange, dayTable: DayTable, isRtl: boolean): DayGridSeg[] {
+export function sliceSegs(range: DateRange, dayTable: DayTable, isRtl: boolean): DayGridSeg[] {
   return dayTable.sliceRange(range).map(function(seg) {
     return {
       isStart: seg.isStart,

+ 2 - 3
src/common/DayTable.ts

@@ -1,13 +1,12 @@
 import DaySeries from './DaySeries'
 import { DateRange } from '../datelib/date-range'
 import { DateMarker } from '../datelib/marker'
+import { Seg } from '../component/DateComponent'
 
-export interface DayTableSeg {
+export interface DayTableSeg extends Seg {
   row: number
   firstCol: number
   lastCol: number
-  isStart: boolean
-  isEnd: boolean
 }
 
 export interface DayTableCell {

+ 5 - 5
src/common/slicing-utils.ts

@@ -2,7 +2,7 @@ import { DateRange } from '../datelib/date-range'
 import { EventStore } from '../structs/event-store'
 import { EventUiHash, sliceEventStore, EventRenderRange } from '../component/event-rendering'
 import { DateProfile } from '../DateProfileGenerator'
-import { Seg } from '../component/DateComponent'
+import { Seg, EventSegUiInteractionState } from '../component/DateComponent'
 import { DateSpan, fabricateEventRange } from '../structs/date-span'
 import { EventInteractionUiState } from '../interactions/event-interaction-state'
 import { sliceBusinessHours } from '../structs/business-hours'
@@ -52,7 +52,7 @@ export class Slicer<OtherArgsType extends any[], SegType extends Seg> {
     }
 
     let eventRange = fabricateEventRange(dateSpan)
-    let segs = this.dateSpanToSegs(dateSpan, ...otherArgs)
+    let segs = this.dateSpanToSegs(dateSpan, otherArgs)
 
     for (let seg of segs) {
       seg.component = this.component
@@ -62,7 +62,7 @@ export class Slicer<OtherArgsType extends any[], SegType extends Seg> {
     return segs
   }
 
-  private massageInteraction(interaction: EventInteractionUiState, dateProfile: DateProfile, ...otherArgs: OtherArgsType) {
+  private massageInteraction(interaction: EventInteractionUiState, dateProfile: DateProfile, nextDayThreshold: Duration, ...otherArgs: OtherArgsType): EventSegUiInteractionState {
 
     if (!interaction) {
       return null
@@ -70,7 +70,7 @@ export class Slicer<OtherArgsType extends any[], SegType extends Seg> {
 
     return {
       segs: this.eventRangesToSegs(
-        sliceEventStore(interaction.mutatedEvents, interaction.eventUis, dateProfile.activeRange),
+        sliceEventStore(interaction.mutatedEvents, interaction.eventUis, dateProfile.activeRange, nextDayThreshold),
         otherArgs
       ),
       affectedInstances: interaction.affectedEvents.instances,
@@ -102,7 +102,7 @@ export class Slicer<OtherArgsType extends any[], SegType extends Seg> {
     return segs
   }
 
-  protected dateSpanToSegs(dateSpan: DateSpan, ...otherArgs: OtherArgsType): SegType[] {
+  protected dateSpanToSegs(dateSpan: DateSpan, otherArgs: OtherArgsType): SegType[] {
     return this.slice(dateSpan.range, ...otherArgs)
   }
 

+ 1 - 1
src/component/DateComponent.ts

@@ -22,7 +22,7 @@ export interface Seg {
   isEnd: boolean
   eventRange?: EventRenderRange
   el?: HTMLElement
-  [otherProp: string]: any
+  [otherProp: string]: any // TODO: remove this. extending Seg will handle this
 }
 
 export interface EventSegUiInteractionState {

+ 1 - 0
src/exports.ts

@@ -98,6 +98,7 @@ export { default as AgendaView } from './agenda/AgendaView'
 export { default as AbstractAgendaView} from './agenda/AbstractAgendaView'
 export { default as TimeGrid, TimeGridSeg } from './agenda/TimeGrid'
 export { buildDayRanges, sliceSegs as sliceTimeGridSegs } from './agenda/SimpleTimeGrid'
+export { sliceSegs as sliceDayGridSegs } from './basic/SimpleDayGrid'
 export { default as DayGrid, DayGridSeg } from './basic/DayGrid'
 export { default as BasicView } from './basic/BasicView'
 export { default as MonthView } from './basic/MonthView'