Adam Shaw 7 éve
szülő
commit
9a90458b9f

+ 10 - 10
src/agenda/TimeGridEventRenderer.ts

@@ -56,7 +56,7 @@ export default class TimeGridEventRenderer extends FgEventRenderer {
         let segs = segsByCol[col]
 
         timeGrid.computeSegVerticals(segs) // horizontals relies on this
-        this.computeFgSegHorizontals(segs) // compute horizontal coordinates, z-index's, and reorder the array
+        this.computeSegHorizontals(segs) // compute horizontal coordinates, z-index's, and reorder the array
       }
     }
   }
@@ -71,7 +71,7 @@ export default class TimeGridEventRenderer extends FgEventRenderer {
         let segs = segsByCol[col]
 
         timeGrid.assignSegVerticals(segs)
-        this.assignFgSegHorizontals(segs)
+        this.assignSegCss(segs)
       }
     }
   }
@@ -173,7 +173,7 @@ export default class TimeGridEventRenderer extends FgEventRenderer {
 
   // Given an array of segments that are all in the same column, sets the backwardCoord and forwardCoord on each.
   // NOTE: Also reorders the given array by date!
-  computeFgSegHorizontals(segs: Seg[]) {
+  computeSegHorizontals(segs: Seg[]) {
     let levels
     let level0
     let i
@@ -189,7 +189,7 @@ export default class TimeGridEventRenderer extends FgEventRenderer {
       }
 
       for (i = 0; i < level0.length; i++) {
-        this.computeFgSegForwardBack(level0[i], 0, 0)
+        this.computeSegForwardBack(level0[i], 0, 0)
       }
     }
   }
@@ -203,7 +203,7 @@ export default class TimeGridEventRenderer extends FgEventRenderer {
   // who's width is unknown until an edge has been hit. `seriesBackwardPressure` is the number of
   // segments behind this one in the current series, and `seriesBackwardCoord` is the starting
   // coordinate of the first segment in the series.
-  computeFgSegForwardBack(seg: Seg, seriesBackwardPressure, seriesBackwardCoord) {
+  computeSegForwardBack(seg: Seg, seriesBackwardPressure, seriesBackwardCoord) {
     let forwardSegs = seg.forwardSegs
     let i
 
@@ -220,7 +220,7 @@ export default class TimeGridEventRenderer extends FgEventRenderer {
 
         // this segment's forwardCoord will be calculated from the backwardCoord of the
         // highest-pressure forward segment.
-        this.computeFgSegForwardBack(forwardSegs[0], seriesBackwardPressure + 1, seriesBackwardCoord)
+        this.computeSegForwardBack(forwardSegs[0], seriesBackwardPressure + 1, seriesBackwardCoord)
         seg.forwardCoord = forwardSegs[0].backwardCoord
       }
 
@@ -232,7 +232,7 @@ export default class TimeGridEventRenderer extends FgEventRenderer {
       // use this segment's coordinates to computed the coordinates of the less-pressurized
       // forward segments
       for (i = 0; i < forwardSegs.length; i++) {
-        this.computeFgSegForwardBack(forwardSegs[i], 0, seg.forwardCoord)
+        this.computeSegForwardBack(forwardSegs[i], 0, seg.forwardCoord)
       }
     }
   }
@@ -262,13 +262,13 @@ export default class TimeGridEventRenderer extends FgEventRenderer {
 
   // Given foreground event segments that have already had their position coordinates computed,
   // assigns position-related CSS values to their elements.
-  assignFgSegHorizontals(segs: Seg[]) {
+  assignSegCss(segs: Seg[]) {
     let i
     let seg
 
     for (i = 0; i < segs.length; i++) {
       seg = segs[i]
-      applyStyle(seg.el, this.generateFgSegHorizontalCss(seg))
+      applyStyle(seg.el, this.generateSegCss(seg))
 
       // if the height is short, add a className for alternate styling
       if (seg.bottom - seg.top < 30) {
@@ -280,7 +280,7 @@ export default class TimeGridEventRenderer extends FgEventRenderer {
 
   // Generates an object with CSS properties/values that should be applied to an event segment element.
   // Contains important positioning-related properties that should be applied to any event element, customized or not.
-  generateFgSegHorizontalCss(seg: Seg) {
+  generateSegCss(seg: Seg) {
     let shouldOverlap = this.context.options.slotEventOverlap
     let backwardCoord = seg.backwardCoord // the left side if LTR. the right side if RTL. floating-point
     let forwardCoord = seg.forwardCoord // the right side if LTR. the left side if RTL. floating-point

+ 17 - 22
src/agenda/TimeGridMirrorRenderer.ts

@@ -1,36 +1,31 @@
-import { applyStyle } from '../util/dom-manip'
 import { Seg } from '../component/DateComponent'
 import TimeGridEventRenderer from './TimeGridEventRenderer'
 
 
 export default class TimeGridMirrorRenderer extends TimeGridEventRenderer {
 
-  attachSegs(segs: Seg[], mirrorInfo) {
-    let { sourceSeg } = mirrorInfo
+  sourceSeg: Seg
 
+  attachSegs(segs: Seg[], mirrorInfo) {
     this.segsByCol = this.timeGrid.groupSegsByCol(segs)
     this.timeGrid.attachSegsByCol(this.segsByCol, this.timeGrid.mirrorContainerEls)
 
-    // Try to make the segment that is in the same row as sourceSeg look the same
-    for (let seg of segs) {
-
-      if (sourceSeg && sourceSeg.col === seg.col) {
-        let sourceEl = sourceSeg.el
-        let computedStyle = window.getComputedStyle(sourceEl)
-
-        applyStyle(seg.el, {
-          left: computedStyle.left,
-          right: computedStyle.right,
-          marginLeft: computedStyle.marginLeft,
-          marginRight: computedStyle.marginRight
-        })
-      } else {
-        applyStyle(seg.el, {
-          left: 0,
-          right: 0
-        })
-      }
+    this.sourceSeg = mirrorInfo.sourceSeg
+  }
+
+  generateSegCss(seg: Seg) {
+    let props = super.generateSegCss(seg)
+
+    if (seg.col === this.sourceSeg.col) {
+      let sourceSegProps = super.generateSegCss(this.sourceSeg)
+
+      props.left = sourceSegProps.left
+      props.right = sourceSegProps.right
+      props.marginLeft = sourceSegProps.marginLeft
+      props.marginRight = sourceSegProps.marginRight
     }
+
+    return props
   }
 
 }

+ 3 - 6
src/basic/AbstractBasicView.ts

@@ -17,7 +17,6 @@ import { ComponentContext } from '../component/Component'
 import { ViewSpec } from '../structs/view-spec'
 import DateProfileGenerator from '../DateProfileGenerator'
 import DayGrid from './DayGrid'
-import { DateMarker } from '../datelib/marker'
 
 const WEEK_NUM_FORMAT = createFormatter({ week: 'numeric' })
 
@@ -263,16 +262,16 @@ export default abstract class BasicView extends View {
 
 
   // Generates the HTML that will go before content-skeleton cells that display the day/week numbers
-  renderDayGridNumberIntroHtml = (row) => {
+  renderDayGridNumberIntroHtml = (row: number, dayGrid: DayGrid) => {
     let { dateEnv } = this
-    let weekStart = this.getRowDate(row)
+    let weekStart = dayGrid.props.cells[row][0].date
 
     if (this.colWeekNumbersVisible) {
       return '' +
         '<td class="fc-week-number">' +
           buildGotoAnchorHtml( // aside from link, important for matchCellWidths
             this,
-            { date: weekStart, type: 'week', forceOff: dayTable.colCnt === 1 },
+            { date: weekStart, type: 'week', forceOff: dayGrid.colCnt === 1 },
             dateEnv.format(weekStart, WEEK_NUM_FORMAT) // inner HTML
           ) +
         '</td>'
@@ -305,8 +304,6 @@ export default abstract class BasicView extends View {
     return ''
   }
 
-  abstract getRowDate(row: number): DateMarker
-
 }
 
 BasicView.prototype.dateProfileGeneratorClass = BasicViewDateProfileGenerator

+ 0 - 5
src/basic/BasicView.ts

@@ -8,7 +8,6 @@ import { ViewProps } from '../View'
 import reselector from '../util/reselector'
 import DaySeries from '../common/DaySeries'
 import DayTable from '../common/DayTable'
-import { DateMarker } from '../datelib/marker'
 
 export default class BasicView extends AbstractBasicView {
 
@@ -71,10 +70,6 @@ export default class BasicView extends AbstractBasicView {
     })
   }
 
-  getRowDate(row: number): DateMarker {
-    return this.dayTable.cells[row][0].date
-  }
-
 }
 
 function buildDayTable(dateProfile: DateProfile, dateProfileGenerator: DateProfileGenerator) {

+ 2 - 2
src/basic/DayGrid.ts

@@ -33,7 +33,7 @@ const WEEK_NUM_FORMAT = createFormatter({ week: 'numeric' })
 ----------------------------------------------------------------------------------------------------------------------*/
 
 export interface RenderProps { // TODO: combine with DayGridProps
-  renderNumberIntroHtml: (row: number) => string
+  renderNumberIntroHtml: (row: number, dayGrid: DayGrid) => string
   renderBgIntroHtml: () => string
   renderIntroHtml: () => string
   colWeekNumbersVisible: boolean // week numbers render in own column? (caller does HTML via intro)
@@ -249,7 +249,7 @@ export default class DayGrid extends DateComponentProps<DayGridProps> {
 
 
   renderNumberTrHtml(row: number) {
-    let intro = this.renderProps.renderNumberIntroHtml(row)
+    let intro = this.renderProps.renderNumberIntroHtml(row, this)
 
     return '' +
       '<tr>' +