Ver Fonte

do away with partId, fix keying, fix printing bug

Adam Shaw há 4 anos atrás
pai
commit
bbaf8ddba2

+ 1 - 7
packages/common/src/event-placement.ts

@@ -14,7 +14,6 @@ export interface SegEntry {
 }
 
 export interface SegRect extends SegEntry {
-  partIndex: number // TODO: rename to sliceIndex?
   levelCoord: number
 }
 
@@ -179,18 +178,13 @@ export class SegHierarchy {
     let { entriesByLevel, levelCoords } = this
     let levelCnt = entriesByLevel.length
     let rects: SegRect[] = []
-    let partIndexHash: { [segId: string]: number } = {}
 
     for (let level = 0; level < levelCnt; level++) {
       let entries = entriesByLevel[level]
       let levelCoord = levelCoords[level]
 
       for (let entry of entries) {
-        let segIndex = entry.segInput.index
-        let partIndex = partIndexHash[segIndex] || 0
-        partIndexHash[segIndex] = partIndex + 1 // increment the store
-
-        rects.push({ ...entry, partIndex, levelCoord })
+        rects.push({ ...entry, levelCoord })
       }
     }
 

+ 4 - 2
packages/daygrid/src/TableRow.tsx

@@ -96,12 +96,14 @@ export class TableRow extends DateComponent<TableRowProps, TableRowState> {
         {props.renderIntro && props.renderIntro()}
         {props.cells.map((cell, col) => {
           let normalFgNodes = this.renderFgSegs(
+            col,
             props.forPrint ? singleColPlacements[col] : multiColPlacements[col],
             selectedInstanceHash,
             props.todayRange,
           )
 
           let mirrorFgNodes = this.renderFgSegs(
+            col,
             buildMirrorPlacements(mirrorSegsByCol[col], multiColPlacements),
             {},
             props.todayRange,
@@ -190,6 +192,7 @@ export class TableRow extends DateComponent<TableRowProps, TableRowState> {
   }
 
   renderFgSegs(
+    col: number,
     segPlacements: TableSegPlacement[],
     selectedInstanceHash: { [instanceId: string]: any }, // for hiding the original in event dnd/resize
     todayRange: DateRange,
@@ -207,7 +210,7 @@ export class TableRow extends DateComponent<TableRowProps, TableRowState> {
       for (let placement of segPlacements) {
         let seg = placement.seg
         let { instanceId } = seg.eventRange.instance
-        let key = instanceId + ':' + placement.partIndex
+        let key = instanceId + ':' + col
         let isSelected = selectedInstanceHash[instanceId]
         let isMirror = isDragging || isResizing || isDateSelecting
         let isVisible = placement.isVisible && !isSelected
@@ -380,7 +383,6 @@ function buildMirrorPlacements(mirrorSegs: TableSeg[], colPlacements: TableSegPl
   let topsByInstanceId = buildAbsoluteTopHash(colPlacements)
   return mirrorSegs.map((seg: TableSeg) => ({
     seg,
-    partIndex: 0,
     isVisible: true,
     isAbsolute: true,
     absoluteTop: topsByInstanceId[seg.eventRange.instance.instanceId],

+ 0 - 10
packages/daygrid/src/event-placement.ts

@@ -12,11 +12,8 @@ import {
 import { TableCellModel } from './TableCell'
 import { TableSeg } from './TableSeg'
 
-// TODO: print-mode where every placement is non-absolute?
-
 export interface TableSegPlacement {
   seg: TableSeg
-  partIndex: number
   isVisible: boolean
   isAbsolute: boolean
   absoluteTop: number // populated regardless of isAbsolute
@@ -76,7 +73,6 @@ export function computeFgSegPlacement(
   for (let seg of unknownHeightSegs) {
     multiColPlacements[seg.firstCol].push({
       seg,
-      partIndex: 0,
       isVisible: false,
       isAbsolute: true,
       absoluteTop: 0,
@@ -87,7 +83,6 @@ export function computeFgSegPlacement(
       moreCnts[col]++
       singleColPlacements[col].push({
         seg: resliceSeg(seg, col, col + 1, cells),
-        partIndex: 0,
         isVisible: false,
         isAbsolute: false,
         absoluteTop: 0,
@@ -105,7 +100,6 @@ export function computeFgSegPlacement(
 
     multiColPlacements[hiddenEntry.spanStart].push({
       seg,
-      partIndex: 0,
       isVisible: false,
       isAbsolute: true,
       absoluteTop: 0,
@@ -116,7 +110,6 @@ export function computeFgSegPlacement(
       moreCnts[col]++
       singleColPlacements[col].push({
         seg: resliceSeg(seg, col, col + 1, cells),
-        partIndex: 0,
         isVisible: false,
         isAbsolute: false,
         absoluteTop: 0,
@@ -157,7 +150,6 @@ function placeRects(rects: SegRect[], segs: TableSeg[], cells: TableCellModel[])
       let seg = segs[rect.segInput.index]
       singlePlacements.push({
         seg: resliceSeg(seg, col, col + 1, cells),
-        partIndex: rect.partIndex,
         isVisible: true,
         isAbsolute: false,
         absoluteTop: 0,
@@ -183,7 +175,6 @@ function placeRects(rects: SegRect[], segs: TableSeg[], cells: TableCellModel[])
         if (isFirstCol) {
           multiPlacements.push({
             seg: resliceSeg(seg, rect.spanStart, rect.spanEnd, cells),
-            partIndex: rect.partIndex,
             isVisible: true,
             isAbsolute: true,
             absoluteTop: rect.levelCoord,
@@ -194,7 +185,6 @@ function placeRects(rects: SegRect[], segs: TableSeg[], cells: TableCellModel[])
         if (isFirstCol) {
           multiPlacements.push({
             seg: resliceSeg(seg, rect.spanStart, rect.spanEnd, cells),
-            partIndex: rect.partIndex,
             isVisible: true,
             isAbsolute: false,
             absoluteTop: 0,

+ 1 - 1
packages/timegrid/src/TimeCol.tsx

@@ -169,7 +169,7 @@ export class TimeCol extends BaseComponent<TimeColProps> {
       return (
         <div
           className={'fc-timegrid-event-harness' + (segRect.stackForward > 0 ? ' fc-timegrid-event-harness-inset' : '')}
-          key={instanceId + ':' + segRect.partIndex}
+          key={instanceId}
           style={{
             visibility: segIsInvisible[instanceId] ? 'hidden' : ('' as any),
             ...positionCss,

+ 0 - 6
packages/timegrid/src/event-placement.ts

@@ -162,18 +162,12 @@ function stretchWeb(topLevelNodes: SegNode[], totalThickness: number): SegNode[]
 // not sorted in any particular order
 function webToRects(topLevelNodes: SegNode[]): TimeColSegRect[] {
   let rects: TimeColSegRect[] = []
-  let partIndexHash: { [segId: string]: number } = {}
 
   const processNode = cacheable(
     (node: SegNode, levelCoord: number, stackDepth: number) => buildEntryKey(node),
     (node: SegNode, levelCoord: number, stackDepth: number) => { // returns forwardPressure
-      let segIndex = node.segInput.index
-      let partIndex = partIndexHash[segIndex] || 0
-      partIndexHash[segIndex] = partIndex + 1 // increment in the store
-
       let rect: TimeColSegRect = {
         ...node,
-        partIndex,
         levelCoord,
         stackDepth,
         stackForward: 0 // will assign after recursing