Jelajahi Sumber

move getNow()

Adam Shaw 5 tahun lalu
induk
melakukan
2dbf20e5ef

+ 1 - 12
packages/core/src/Calendar.tsx

@@ -441,7 +441,7 @@ export class Calendar {
     this.unselect()
     this.unselect()
     this.dispatch({
     this.dispatch({
       type: 'CHANGE_DATE',
       type: 'CHANGE_DATE',
-      dateMarker: this.getNow()
+      dateMarker: getNow(this.state)
     })
     })
   }
   }
 
 
@@ -587,17 +587,6 @@ export class Calendar {
   }
   }
 
 
 
 
-  // Date Utils
-  // -----------------------------------------------------------------------------------------------------------------
-
-
-  // Returns a DateMarker for the current date, as defined by the client's computer or from the `now` option
-  // PRIVATE use only. doesn't zone the date.
-  getNow(): DateMarker {
-    return getNow(this.state.options, this.state.dateEnv)
-  }
-
-
   // Event-Date Utilities
   // Event-Date Utilities
   // -----------------------------------------------------------------------------------------------------------------
   // -----------------------------------------------------------------------------------------------------------------
 
 

+ 3 - 2
packages/core/src/CalendarComponent.tsx

@@ -21,6 +21,7 @@ import { Interaction, InteractionSettingsInput, InteractionClass, parseInteracti
 import { DateComponent } from './component/DateComponent'
 import { DateComponent } from './component/DateComponent'
 import { EventClicking } from './interactions/EventClicking'
 import { EventClicking } from './interactions/EventClicking'
 import { EventHovering } from './interactions/EventHovering'
 import { EventHovering } from './interactions/EventHovering'
+import { getNow } from './reducers/current-date'
 
 
 
 
 export interface CalendarComponentProps extends CalendarState {
 export interface CalendarComponentProps extends CalendarState {
@@ -57,14 +58,14 @@ export class CalendarComponent extends Component<CalendarComponentProps, Calenda
   renders INSIDE of an outer div
   renders INSIDE of an outer div
   */
   */
   render(props: CalendarComponentProps, state: CalendarComponentState) {
   render(props: CalendarComponentProps, state: CalendarComponentState) {
-    let { toolbarConfig, theme, options, calendar } = props
+    let { toolbarConfig, theme, options } = props
 
 
     let toolbarProps = this.buildToolbarProps(
     let toolbarProps = this.buildToolbarProps(
       props.viewSpec,
       props.viewSpec,
       props.dateProfile,
       props.dateProfile,
       props.dateProfileGenerator,
       props.dateProfileGenerator,
       props.currentDate,
       props.currentDate,
-      calendar.getNow(), // TODO: use NowTimer????
+      getNow(props), // TODO: use NowTimer????
       props.viewTitle
       props.viewTitle
     )
     )
 
 

+ 2 - 2
packages/core/src/DateProfileGenerator.ts

@@ -4,7 +4,7 @@ import { DateRange, OpenDateRange, constrainMarkerToRange, intersectRanges, rang
 import { ViewSpec } from './structs/view-spec'
 import { ViewSpec } from './structs/view-spec'
 import { DateEnv } from './datelib/env'
 import { DateEnv } from './datelib/env'
 import { computeVisibleDayRange } from './util/misc'
 import { computeVisibleDayRange } from './util/misc'
-import { getNow } from './reducers/current-date'
+import { _getNow } from './reducers/current-date'
 
 
 
 
 export interface DateProfile {
 export interface DateProfile {
@@ -36,7 +36,7 @@ export class DateProfileGenerator {
   ) {
   ) {
     this.slotMinTime = createDuration(options.slotMinTime)
     this.slotMinTime = createDuration(options.slotMinTime)
     this.slotMaxTime = createDuration(options.slotMaxTime)
     this.slotMaxTime = createDuration(options.slotMaxTime)
-    this.nowDate = getNow(options, dateEnv)
+    this.nowDate = _getNow(options, dateEnv)
     this.initHiddenDays()
     this.initHiddenDays()
   }
   }
 
 

+ 2 - 1
packages/core/src/NowTimer.ts

@@ -3,6 +3,7 @@ import { createDuration } from './datelib/duration'
 import { ComponentContext, ComponentContextType } from './component/ComponentContext'
 import { ComponentContext, ComponentContextType } from './component/ComponentContext'
 import { ComponentChildren, Component } from './vdom'
 import { ComponentChildren, Component } from './vdom'
 import { DateRange } from './datelib/date-range'
 import { DateRange } from './datelib/date-range'
+import { getNow } from './reducers/current-date'
 
 
 
 
 export interface NowTimerProps {
 export interface NowTimerProps {
@@ -29,7 +30,7 @@ export class NowTimer extends Component<NowTimerProps, NowTimerState> {
   constructor(props: NowTimerProps, context: ComponentContext) {
   constructor(props: NowTimerProps, context: ComponentContext) {
     super(props, context)
     super(props, context)
 
 
-    this.initialNowDate = context.calendar.getNow()
+    this.initialNowDate = getNow(context)
     this.initialNowQueriedMs = new Date().valueOf()
     this.initialNowQueriedMs = new Date().valueOf()
 
 
     this.state = this.computeTiming().currentState
     this.state = this.computeTiming().currentState

+ 1 - 1
packages/core/src/reducers/CalendarStateReducer.ts

@@ -148,7 +148,7 @@ export class CalendarStateReducer {
       calendar
       calendar
     }
     }
 
 
-    let currentDate = state.currentDate || getInitialDate(viewOptions, dateEnv) // weird how we do INIT
+    let currentDate = state.currentDate || getInitialDate(reducerContext) // weird how we do INIT
 
 
     let prevDateProfileGenerator = state.dateProfileGenerator
     let prevDateProfileGenerator = state.dateProfileGenerator
     let dateProfileGenerator = this.buildDateProfileGenerator(viewSpec, viewOptions, dateEnv)
     let dateProfileGenerator = this.buildDateProfileGenerator(viewSpec, viewOptions, dateEnv)

+ 11 - 5
packages/core/src/reducers/current-date.ts

@@ -2,6 +2,7 @@ import { DateMarker } from '../datelib/marker'
 import { Action } from './types'
 import { Action } from './types'
 import { DateProfile } from '../DateProfileGenerator'
 import { DateProfile } from '../DateProfileGenerator'
 import { rangeContainsMarker } from '../datelib/date-range'
 import { rangeContainsMarker } from '../datelib/date-range'
+import { ReducerContext, DateEnv } from 'fullcalendar'
 
 
 
 
 export function reduceCurrentDate(currentDate: DateMarker, action: Action, dateProfile: DateProfile): DateMarker {
 export function reduceCurrentDate(currentDate: DateMarker, action: Action, dateProfile: DateProfile): DateMarker {
@@ -36,19 +37,24 @@ export function reduceCurrentDate(currentDate: DateMarker, action: Action, dateP
 }
 }
 
 
 
 
-export function getInitialDate(options, dateEnv) { // NOT used in this reducer. TODO: do INIT in reducer
-  let initialDateInput = options.initialDate
+export function getInitialDate(context: ReducerContext) { // NOT used in this reducer. TODO: do INIT in reducer
+  let initialDateInput = context.options.initialDate
 
 
   // compute the initial ambig-timezone date
   // compute the initial ambig-timezone date
   if (initialDateInput != null) {
   if (initialDateInput != null) {
-    return dateEnv.createMarker(initialDateInput)
+    return context.dateEnv.createMarker(initialDateInput)
   } else {
   } else {
-    return getNow(options, dateEnv) // getNow already returns unzoned
+    return getNow(context) // getNow already returns unzoned
   }
   }
 }
 }
 
 
 
 
-export function getNow(options, dateEnv) {
+export function getNow(context: ReducerContext) {
+  return _getNow(context.options, context.dateEnv)
+}
+
+
+export function _getNow(options, dateEnv: DateEnv) {
   let now = options.now
   let now = options.now
 
 
   if (typeof now === 'function') {
   if (typeof now === 'function') {