Просмотр исходного кода

listview can sort events in any order

Adam Shaw 7 лет назад
Родитель
Сommit
4592e195ae

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

@@ -332,7 +332,8 @@ export default class EventRenderer {
   }
 
 
-  sortEventSegs(segs, specs = this.view.eventOrderSpecs): Seg[] {
+  sortEventSegs(segs): Seg[] {
+    let specs = this.view.eventOrderSpecs
     let objs = segs.map(buildSegCompareObj)
 
     objs.sort(function(obj0, obj1) {

+ 1 - 6
src/list/ListView.ts

@@ -173,12 +173,7 @@ export default class ListView extends View {
         // append a day header
         tbodyEl.appendChild(this.buildDayHeaderRow(this.dayDates[dayIndex]))
 
-        daySegs = this.eventRenderer.sortEventSegs(
-          daySegs,
-          [
-            { field: 'start', order: 1 } // always put earlier events first, regardless of eventOrder
-          ].concat(this.view.eventOrderSpecs)
-        )
+        daySegs = this.eventRenderer.sortEventSegs(daySegs)
 
         for (i = 0; i < daySegs.length; i++) {
           tbodyEl.appendChild(daySegs[i].el) // append event row

+ 33 - 0
tests/automated/legacy/ListView.js

@@ -404,6 +404,39 @@ describe('ListView rendering', function() {
       expect(events[12].timeText).toBe('all-day')
     })
 
+    it('can sort events with non-date property first', function() {
+      initCalendar({
+        now: '2016-08-29',
+        eventOrder: 'title',
+        events: [
+          {
+            title: 'Sup',
+            start: '2016-08-29T00:00:00'
+          },
+          {
+            title: 'Dude',
+            start: '2016-08-29T10:30:00'
+          },
+          {
+            title: 'Hello',
+            start: '2016-08-30'
+          }
+        ]
+      })
+
+      var days = getDayInfo()
+      var events = getEventInfo()
+
+      expect(days.length).toBe(2)
+      expect(days[0].date).toEqualDate('2016-08-29')
+      expect(days[1].date).toEqualDate('2016-08-30')
+
+      expect(events.length).toBe(3)
+      expect(events[0].title).toBe('Dude')
+      expect(events[1].title).toBe('Sup')
+      expect(events[2].title).toBe('Hello')
+    })
+
     it('makes scrollbars', function() {
       let $el = $('<div style="width:300px" />').appendTo('body')
       initCalendar({