浏览代码

undo eventRootDataTransform. use eventSourceSuccess instead

Adam Shaw 7 年之前
父节点
当前提交
e0a50907c8

+ 11 - 9
src/reducers/eventSources.ts

@@ -125,24 +125,26 @@ function fetchSource(eventSource: EventSource, fetchRange: DateRange | null, cal
       range: fetchRange
     },
     function(res) {
+      let { rawEvents } = res
       let calSuccess = calendar.opt('eventSourceSuccess')
+      let calSuccessRes
+      let sourceSuccessRes
 
-      // only call success callbacks if it was a network request (aka has a `response`)
-      if (res.response) {
-        if (eventSource.success) {
-          eventSource.success(res.rawEvents, res.response)
-        }
-        if (calSuccess) {
-          calSuccess(res.rawEvents, res.response)
-        }
+      if (eventSource.success) {
+        sourceSuccessRes = eventSource.success(rawEvents, res.response)
       }
+      if (calSuccess) {
+        calSuccessRes = calSuccess(rawEvents, res.response)
+      }
+
+      rawEvents = sourceSuccessRes || calSuccessRes || rawEvents
 
       calendar.dispatch({
         type: 'RECEIVE_EVENTS',
         sourceId: eventSource.sourceId,
         fetchId,
         fetchRange,
-        rawEvents: res.rawEvents
+        rawEvents
       })
     },
     function(error) {

+ 1 - 5
src/structs/event-source.ts

@@ -20,14 +20,12 @@ export type EventSourceError = {
 }
 
 export type EventInputTransformer = (eventInput: EventInput) => EventInput | null
-export type EventRootInputTransformer = (eventRootInput: any) => EventInput[]
-export type EventSourceSuccessResponseHandler = (rawEvents: EventInput[], response: any) => void
+export type EventSourceSuccessResponseHandler = (rawData: any, response: any) => EventInput[] | void
 export type EventSourceErrorResponseHandler = (error: EventSourceError) => void
 
 export interface ExtendedEventSourceInput {
   id?: string | number
   allDayDefault?: boolean
-  rootDataTransform?: EventRootInputTransformer
   eventDataTransform?: EventInputTransformer
   editable?: boolean
   startEditable?: boolean
@@ -74,7 +72,6 @@ export interface EventSource {
   latestFetchId: string
   fetchRange: DateRange | null
   allDayDefault: boolean | null
-  rootDataTransform?: EventRootInputTransformer
   eventDataTransform: EventInputTransformer
   startEditable: boolean | null
   durationEditable: boolean | null
@@ -111,7 +108,6 @@ export interface EventSourceDef {
 const SIMPLE_SOURCE_PROPS = {
   id: String,
   allDayDefault: Boolean,
-  rootDataTransform: Function,
   eventDataTransform: Function,
   editable: Boolean,
   startEditable: Boolean,

+ 0 - 8
src/structs/event-store.ts

@@ -118,17 +118,9 @@ export function isEventDefsGrouped(def0: EventDef, def1: EventDef): boolean {
 }
 
 export function transformRawEvents(rawEvents, eventSource: EventSource, calendar: Calendar) {
-  let calRootTransform = calendar.opt('eventRootDataTransform')
   let calEachTransform = calendar.opt('eventDataTransform')
-  let sourceRootTransform = eventSource ? eventSource.rootDataTransform : null
   let sourceEachTransform = eventSource ? eventSource.eventDataTransform : null
 
-  if (sourceRootTransform) {
-    rawEvents = sourceRootTransform(rawEvents) || []
-  } else if (calRootTransform) { // can't let more than one thing massage the root data
-    rawEvents = calRootTransform(rawEvents) || []
-  }
-
   if (sourceEachTransform) {
     rawEvents = transformEachRawEvent(rawEvents, sourceEachTransform)
   }

+ 1 - 2
src/types/input-types.ts

@@ -4,7 +4,7 @@ https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/fullcalenda
 */
 
 import View from '../View'
-import { EventSourceInput, EventRootInputTransformer, EventInputTransformer } from '../structs/event-source'
+import { EventSourceInput, EventInputTransformer } from '../structs/event-source'
 import { Duration, DurationInput } from '../datelib/duration'
 import { DateInput } from '../datelib/env'
 import { FormatterInput } from '../datelib/formatting'
@@ -177,7 +177,6 @@ export interface OptionsInputBase {
   eventMouseLeave?(arg: { el: HTMLElement, event: EventApi, jsEvent: MouseEvent, view: View }): void
   select?(arg: { start: Date, end: Date, allDay: boolean, resource: any, jsEvent: MouseEvent, view: View }): void // resource for Scheduler
   unselect?(arg: { view: View, jsEvent: Event }): void
-  eventRootDataTransform?: EventRootInputTransformer
   eventDataTransform?: EventInputTransformer
   loading?(isLoading: boolean, view: View): void
   eventRender?(arg: { event: EventApi, el: HTMLElement, view: View }): void

+ 3 - 3
tests/automated/event-data/eventRootDataTransform.js → tests/automated/event-source/eventSourceSuccess.js

@@ -1,4 +1,4 @@
-describe('eventRootDataTransform', function() {
+describe('eventSourceSuccess', function() {
 
   const FETCH_FUNC = function(info, successCallback) {
     successCallback({
@@ -19,7 +19,7 @@ describe('eventRootDataTransform', function() {
   it('massages event data with calendar-wide setting', function() {
     initCalendar({
       eventSources: [ FETCH_FUNC ],
-      eventRootDataTransform: TRANSFORM
+      eventSourceSuccess: TRANSFORM
     })
 
     expect(currentCalendar.getEvents().length).toBe(1)
@@ -30,7 +30,7 @@ describe('eventRootDataTransform', function() {
       eventSources: [
         {
           events: FETCH_FUNC,
-          rootDataTransform: TRANSFORM
+          success: TRANSFORM
         }
       ]
     })