Selaa lähdekoodia

fix event rendering problems. remove isStart/isEnd from unzonedrange

Adam Shaw 7 vuotta sitten
vanhempi
sitoutus
40b6e790e3

+ 2 - 2
src/agenda/TimeGrid.ts

@@ -117,8 +117,8 @@ export default class TimeGrid extends InteractiveDateComponent {
         segs.push({
           start: segRange.start,
           end: segRange.end,
-          isStart: segRange.isStart,
-          isEnd: segRange.isEnd,
+          isStart: segRange.start.valueOf() === unzonedRange.start.valueOf(),
+          isEnd: segRange.end.valueOf() === unzonedRange.end.valueOf(),
           dayIndex: dayIndex
         })
       }

+ 8 - 10
src/basic/DayGrid.ts

@@ -681,24 +681,22 @@ export default class DayGrid extends InteractiveDateComponent {
     let dayEnd = addDays(dayStart, 1)
     let dayRange = new UnzonedRange(dayStart, dayEnd)
     let newSegs = []
-    let i
-    let seg
-    let slicedRange
 
-    for (i = 0; i < segs.length; i++) {
-      seg = segs[i]
-      slicedRange = seg.eventRange.intersect(dayRange)
+    for (let seg of segs) {
+      let eventRange = seg.eventRange
+      let origRange = eventRange.range
+      let slicedRange = origRange.intersect(dayRange)
 
       if (slicedRange) {
         newSegs.push(
           assignTo({}, seg, {
             eventRange: {
-              eventDef: seg.eventRange.eventDef,
-              eventInstance: seg.eventRange.eventInstance,
+              eventDef: eventRange.eventDef,
+              eventInstance: eventRange.eventInstance,
               range: slicedRange
             },
-            isStart: seg.isStart && slicedRange.isStart,
-            isEnd: seg.isEnd && slicedRange.isEnd
+            isStart: seg.isStart && slicedRange.start.valueOf() === origRange.start.valueOf(),
+            isEnd: seg.isEnd && slicedRange.end.valueOf() === origRange.end.valueOf()
           })
         )
       }

+ 2 - 2
src/basic/DayGridEventRenderer.ts

@@ -20,13 +20,13 @@ export default class DayGridEventRenderer extends EventRenderer {
   }
 
 
-  renderSegs(segs: Seg[]) {
+  renderBgSegs(segs: Seg[]) {
     // don't render timed background events
     segs = segs.filter(function(seg) {
       return seg.eventRange.eventDef.isAllDay
     })
 
-    super.renderSegs(segs)
+    return super.renderBgSegs(segs)
   }
 
 

+ 1 - 1
src/component/renderers/EventRenderer.ts

@@ -117,7 +117,7 @@ export default class EventRenderer {
   }
 
 
-  renderBgSegs(segs: Seg[]) {
+  renderBgSegs(segs: Seg[]): false | void {
     if (this.fillRenderer) {
       this.fillRenderer.renderSegs('bgEvent', segs, {
         getClasses: (seg) => {

+ 2 - 2
src/list/ListView.ts

@@ -115,8 +115,8 @@ export default class ListView extends View {
         seg = {
           start: segRange.start,
           end: segRange.end,
-          isStart: segRange.isStart,
-          isEnd: segRange.isEnd,
+          isStart: segRange.start.valueOf() === range.start.valueOf(),
+          isEnd: segRange.end.valueOf() === range.end.valueOf(),
           dayIndex: dayIndex
         }
 

+ 1 - 12
src/models/UnzonedRange.ts

@@ -5,10 +5,6 @@ export default class UnzonedRange {
   start: DateMarker // if null, no start constraint
   end: DateMarker // if null, no end constraint
 
-  // TODO: move these into some other objects.
-  // Especially, doesn't make sense for null start/end
-  isStart: boolean = true
-  isEnd: boolean = true
 
   constructor(start?: DateMarker, end?: DateMarker) {
 
@@ -85,8 +81,6 @@ export default class UnzonedRange {
 
     if (start == null || end == null || start < end) {
       newRange = new UnzonedRange(start, end)
-      newRange.isStart = this.isStart && start.valueOf() === this.start.valueOf()
-      newRange.isEnd = this.isEnd && end.valueOf() === this.end.valueOf()
     }
 
     return newRange
@@ -135,12 +129,7 @@ export default class UnzonedRange {
 
 
   clone() {
-    let range = new UnzonedRange(this.start, this.end)
-
-    range.isStart = this.isStart
-    range.isEnd = this.isEnd
-
-    return range
+    return new UnzonedRange(this.start, this.end)
   }
 
 }