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

fix up event/event-source parsing

Adam Shaw 7 лет назад
Родитель
Сommit
505203d5bb
2 измененных файлов с 39 добавлено и 22 удалено
  1. 23 18
      src/structs/event-source.ts
  2. 16 4
      src/structs/event.ts

+ 23 - 18
src/structs/event-source.ts

@@ -106,8 +106,10 @@ export interface EventSourceDef {
 }
 
 const SIMPLE_SOURCE_PROPS = {
+  id: String,
   allDayDefault: Boolean,
   eventDataTransform: Function,
+  editable: Boolean,
   startEditable: Boolean,
   durationEditable: Boolean,
   constraint: normalizeConstraint,
@@ -115,6 +117,7 @@ const SIMPLE_SOURCE_PROPS = {
   allow: null,
   rendering: String,
   className: parseClassName,
+  color: String,
   backgroundColor: String,
   borderColor: String,
   textColor: String,
@@ -157,8 +160,11 @@ export function parseEventSource(raw: EventSourceInput): EventSource | null {
   return null
 }
 
+/*
+TODO: combine with pluckNonDateProps AND refineScopedUi
+*/
 function parseEventSourceProps(raw: ExtendedEventSourceInput, meta: object, sourceDefId: number): EventSource {
-  let props = refineProps(raw, SIMPLE_SOURCE_PROPS) as EventSource
+  let props = refineProps(raw, SIMPLE_SOURCE_PROPS) as (EventSource & { editable: boolean | null, color: string })
 
   props.isFetching = false
   props.latestFetchId = ''
@@ -168,25 +174,24 @@ function parseEventSourceProps(raw: ExtendedEventSourceInput, meta: object, sour
   props.sourceDefId = sourceDefId
   props.meta = meta
 
-  // TODO: consolidate with event struct
-  if ('editable' in raw) {
-    if (props.startEditable === null) {
-      props.startEditable = raw.editable
-    }
-    if (props.durationEditable === null) {
-      props.durationEditable = raw.editable
-    }
+  if (props.startEditable == null) {
+    props.startEditable = props.editable
   }
 
-  // TODO: consolidate with event struct
-  if ('color' in raw) {
-    if (!props.backgroundColor) {
-      props.backgroundColor = raw.color
-    }
-    if (!props.borderColor) {
-      props.borderColor = raw.color
-    }
+  if (props.durationEditable == null) {
+    props.durationEditable = props.editable
   }
 
-  return props
+  if (!props.backgroundColor) {
+    props.backgroundColor = props.color
+  }
+
+  if (!props.borderColor) {
+    props.borderColor = props.color
+  }
+
+  delete props.editable
+  delete props.color
+
+  return props as EventSource
 }

+ 16 - 4
src/structs/event.ts

@@ -187,10 +187,22 @@ function pluckNonDateProps(raw: EventInput, leftovers: any) {
 
   props.publicId = props.id
   props.classNames = props.classNames.concat(props.className)
-  props.startEditable = (props.startEditable !== null) ? props.startEditable : props.editable
-  props.durationEditable = (props.durationEditable !== null) ? props.durationEditable : props.editable
-  props.backgroundColor = props.backgroundColor || props.color
-  props.borderColor = props.borderColor || props.color
+
+  if (props.startEditable == null) {
+    props.startEditable = props.editable
+  }
+
+  if (props.durationEditable == null) {
+    props.durationEditable = props.editable
+  }
+
+  if (!props.backgroundColor) {
+    props.backgroundColor = props.color
+  }
+
+  if (!props.borderColor) {
+    props.borderColor = props.color
+  }
 
   delete props.id
   delete props.className