Преглед на файлове

change constructor of DayTable

Adam Shaw преди 7 години
родител
ревизия
83a50ccdc9
променени са 4 файла, в които са добавени 41 реда и са изтрити 39 реда
  1. 7 4
      src/agenda/AgendaView.ts
  2. 10 4
      src/basic/BasicView.ts
  3. 10 4
      src/basic/DayGrid.ts
  4. 14 27
      src/basic/DayGridSlicer.ts

+ 7 - 4
src/agenda/AgendaView.ts

@@ -10,6 +10,8 @@ import { assignTo } from '../util/object'
 import reselector from '../util/reselector'
 import DayGridSlicer from '../basic/DayGridSlicer'
 import TimeGridSlicer from './TimeGridSlicer'
+import DayTable from '../common/DayTable'
+import DaySeries from '../common/DaySeries'
 
 
 export default class AgendaView extends AbstractAgendaView {
@@ -90,10 +92,11 @@ export default class AgendaView extends AbstractAgendaView {
 
   buildDayGridSlicer = reselector(function(this: AgendaView, dateProfile: DateProfile) {
     return new DayGridSlicer(
-      dateProfile,
-      this.dateProfileGenerator,
-      this.isRtl,
-      false
+      new DayTable(
+        new DaySeries(this.props.dateProfile.renderRange, this.dateProfileGenerator), // TODO: reuse!!!
+        false // breakOnWeeks
+      ),
+      this.isRtl
     )
   })
 

+ 10 - 4
src/basic/BasicView.ts

@@ -22,6 +22,8 @@ import DateProfileGenerator, { DateProfile } from '../DateProfileGenerator'
 import reselector from '../util/reselector'
 import DayHeader from '../common/DayHeader'
 import DayGridSlicer from './DayGridSlicer'
+import DayTable from '../common/DayTable'
+import DaySeries from '../common/DaySeries'
 
 const WEEK_NUM_FORMAT = createFormatter({ week: 'numeric' })
 
@@ -129,10 +131,14 @@ export default class BasicView extends View {
 
   buildSlicer = reselector(function(this: BasicView, dateProfile: DateProfile) {
     return new DayGridSlicer(
-      dateProfile,
-      this.dateProfileGenerator,
-      this.isRtl,
-      /year|month|week/.test(dateProfile.currentRangeUnit)
+      new DayTable(
+        new DaySeries(
+          this.props.dateProfile.renderRange,
+          this.dateProfileGenerator
+        ),
+        /year|month|week/.test(dateProfile.currentRangeUnit)
+      ),
+      this.isRtl
     )
   })
 

+ 10 - 4
src/basic/DayGrid.ts

@@ -84,10 +84,16 @@ export default class DayGrid extends StandardDateComponent {
   rangeToSegs(range: DateRange): Seg[] {
     let slicer = (this.props as any).slicer as DayGridSlicer
 
-    return slicer.rangeToSegs(range).map((seg) => {
-      seg.component = this
-      return seg
-    })
+    range = intersectRanges(range, this.props.dateProfile.validRange)
+
+    if (range) {
+      return slicer.rangeToSegs(range).map((seg) => {
+        seg.component = this
+        return seg
+      })
+    } else {
+      return []
+    }
   }
 
 

+ 14 - 27
src/basic/DayGridSlicer.ts

@@ -1,27 +1,21 @@
-import { DateRange, intersectRanges } from '../datelib/date-range'
-import DateProfileGenerator, { DateProfile } from '../DateProfileGenerator'
+import { DateRange } from '../datelib/date-range'
 import { Seg } from '../component/DateComponent'
 import { addDays, DateMarker } from '../datelib/marker'
-import DaySeries from '../common/DaySeries'
 import DayTable from '../common/DayTable'
 
 export default class DayGridSlicer {
 
-  private dayTable: DayTable
-  dateProfile: DateProfile
-  isRtl: boolean
   rowCnt: number
   colCnt: number
 
+  private dayTable: DayTable
+  private isRtl: boolean
 
-  constructor(dateProfile: DateProfile, dateProfileGenerator: DateProfileGenerator, isRtl: boolean, breakOnWeeks: boolean) {
-    let daySeries = new DaySeries(dateProfile.renderRange, dateProfileGenerator)
-    let dayTable = new DayTable(daySeries, breakOnWeeks)
 
+  constructor(dayTable: DayTable, isRtl: boolean) {
     this.dayTable = dayTable
     this.rowCnt = dayTable.rowCnt
     this.colCnt = dayTable.colCnt
-    this.dateProfile = dateProfile
     this.isRtl = isRtl
   }
 
@@ -30,22 +24,16 @@ export default class DayGridSlicer {
   rangeToSegs(range: DateRange): Seg[] {
     let colCnt = this.dayTable.colCnt
 
-    range = intersectRanges(range, this.dateProfile.validRange)
-
-    if (range) {
-      return this.dayTable.sliceRange(range)
-        .map((dayTableSeg) => {
-          return {
-            isStart: dayTableSeg.isStart,
-            isEnd: dayTableSeg.isEnd,
-            row: dayTableSeg.row,
-            leftCol: this.isRtl ? (colCnt - 1 - dayTableSeg.lastCol) : dayTableSeg.firstCol,
-            rightCol: this.isRtl ? (colCnt - 1 - dayTableSeg.firstCol) : dayTableSeg.lastCol
-          }
-        })
-    }
-
-    return []
+    return this.dayTable.sliceRange(range)
+      .map((dayTableSeg) => {
+        return {
+          isStart: dayTableSeg.isStart,
+          isEnd: dayTableSeg.isEnd,
+          row: dayTableSeg.row,
+          leftCol: this.isRtl ? (colCnt - 1 - dayTableSeg.lastCol) : dayTableSeg.firstCol,
+          rightCol: this.isRtl ? (colCnt - 1 - dayTableSeg.firstCol) : dayTableSeg.lastCol
+        }
+      })
   }
 
 
@@ -63,5 +51,4 @@ export default class DayGridSlicer {
     return { start, end }
   }
 
-
 }