diff --git a/src/timegrid/TimeGridEventRenderer.ts b/src/timegrid/TimeGridEventRenderer.ts index 54838c1d88..a6df61789f 100644 --- a/src/timegrid/TimeGridEventRenderer.ts +++ b/src/timegrid/TimeGridEventRenderer.ts @@ -14,7 +14,7 @@ Does not own rendering. Use for low-level util methods by TimeGrid. export default class TimeGridEventRenderer extends FgEventRenderer { timeGrid: TimeGrid - segsByCol: any + segsByCol: any // within each col, events are ordered fullTimeFormat: DateFormatter @@ -34,8 +34,16 @@ export default class TimeGridEventRenderer extends FgEventRenderer { // Given an array of foreground segments, render a DOM element for each, computes position, // and attaches to the column inner-container elements. attachSegs(segs: Seg[], mirrorInfo) { - this.segsByCol = this.timeGrid.groupSegsByCol(segs) - this.timeGrid.attachSegsByCol(this.segsByCol, this.timeGrid.fgContainerEls) + let segsByCol = this.timeGrid.groupSegsByCol(segs) + + // order the segs within each column + // TODO: have groupSegsByCol do this? + for (let col = 0; col < segsByCol.length; col++) { + segsByCol[col] = this.sortEventSegs(segsByCol[col]) + } + + this.segsByCol = segsByCol + this.timeGrid.attachSegsByCol(segsByCol, this.timeGrid.fgContainerEls) } @@ -171,13 +179,13 @@ 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. + // Assumed the segs are already ordered. // NOTE: Also reorders the given array by date! computeSegHorizontals(segs: Seg[]) { let levels let level0 let i - segs = this.sortEventSegs(segs) // order by certain criteria levels = buildSlotSegLevels(segs) computeForwardSlotSegs(levels) diff --git a/tests/automated/event-render/print-preview.js b/tests/automated/event-render/print-preview.js new file mode 100644 index 0000000000..6d6f86d2c2 --- /dev/null +++ b/tests/automated/event-render/print-preview.js @@ -0,0 +1,31 @@ + +describe('print preview', function() { + pushOptions({ + defaultDate: '2019-04-08', + scrollTime: '00:00', + events: [ + { id: '2', start: '2019-04-08T05:00:00' }, + { id: '1', start: '2019-04-08T01:00:00' } + ], + eventRender: function(arg) { + arg.el.setAttribute('data-id', arg.event.id) + } + }) + + describeOptions('defaultView', { + 'with timeGrid view': 'timeGridDay', + 'with dayGrid view': 'dayGridDay' + }, function() { + + it('orders events in DOM by start time', function() { + initCalendar() + + let ids = $('.fc-event').map(function(i, el) { + return el.getAttribute('data-id') + }).get() + + expect(ids).toEqual([ '1', '2' ]) + }) + }) + +})