Options
All
  • Public
  • Public/Protected
  • All
Menu

The calendar for project scheduling, it is used to mark certain time intervals as "non-working" and ignore them during scheduling.

The calendar consists from several intervals. The intervals can be either static or recurrent.

Hierarchy

Index

Properties

$project

The project instance, this entity belongs to.

graph

graph: Replica

A reference to the graph, this entity belongs to. Initially empty, and is populated when the entity instance is added to the replica (Replica.addEntity)

name

name: string

The calendar name

project

The project instance, this entity belongs to.

unspecifiedTimeIsWorking

unspecifiedTimeIsWorking: boolean

The flag, indicating, whether the "unspecified" time (time that does not belong to any interval) is working (true) or not (false). Default value is true

Accessors

$

  • get $(): {}
  • An object, which properties corresponds to the ChronoGraph Identifiers, created for every field.

    For example:

    class Author extends Entity.mix(Base) {
        @field()
        firstName       : string
        @field()
        lastName        : string
    }
    
    const author = Author.new()
    
    // identifier for the field `firstName`
    author.$.firstName
    
    const firstName = replica.read(author.$.firstName)

    Returns {}

$$

  • A graph identifier, that represents the whole entity.

    Returns EntityIdentifier

$entity

  • An EntityMeta instance, representing the "meta" information about the entity class. It is shared among all instances of the class.

    Returns EntityMeta

Static $entity

  • An EntityMeta instance, representing the "meta" information about the entity class. It is shared among all instances of the class.

    Returns EntityMeta

Methods

accumulateWorkingTime

addInterval

addIntervals

calculateDurationMs

  • calculateDurationMs(startDate: Date, endDate: Date): Duration

calculateEndDate

  • calculateEndDate(startDate: Date, durationMs: Duration): Date | null

calculateStartDate

  • calculateStartDate(endDate: Date, durationMs: Duration): Date | null

clearIntervals

  • clearIntervals(silent?: boolean): boolean

commit

  • This is a convenience method, that just delegates to the ChronoGraph.commit method of this entity's graph.

    If there's no graph (entity has not been added to any replica) a CommitZero constant will be returned.

    Parameters

    Returns CommitResult

commitAsync

  • This is a convenience method, that just delegates to the ChronoGraph.commitAsync method of this entity's graph.

    If there's no graph (entity has not been added to any replica) a resolved promise with CommitZero constant will be returned.

    Parameters

    Returns Promise<CommitResult>

enterGraph

  • enterGraph(replica: Replica): void
  • This method is called when entity is added to some replica.

    Parameters

    Returns void

forEachAvailabilityInterval

  • forEachAvailabilityInterval(options: { endDate?: Date; isForward?: boolean; startDate?: Date }, func: (startDate: Date, endDate: Date, calendarCacheInterval: CalendarCacheInterval) => any, scope?: object): CalendarIteratorResult
  • The core iterator method of the calendar.

    Parameters

    • options: { endDate?: Date; isForward?: boolean; startDate?: Date }

      The options for iterator. Should contain at least one of the startDate/endDate properties which indicates what timespan to examine for availability intervals. If one of boundaries is not provided iterator function should return false at some point, to avoid infinite loops.

      Another recognized option is isForward, which indicates the direction in which to iterate through the timespan.

      • Optional endDate?: Date
      • Optional isForward?: boolean
      • Optional startDate?: Date
    • func: (startDate: Date, endDate: Date, calendarCacheInterval: CalendarCacheInterval) => any

      The iterator function to call. It will be called for every distinct set of availability intervals, found in the given timespan. All the intervals, which are "active" for current interval are collected in the 3rd argument for this function - calendarCacheInterval. If iterator returns false (checked with ===) the iteration stops.

    • Optional scope: object

      The scope (this value) to execute the iterator in.

    Returns CalendarIteratorResult

getAssignmentById

  • getAssignmentById(id: ModelId): this["project"]["assignmentStore"]["modelInstanceT"]

getAssignmentStore

  • getAssignmentStore(): this["project"]["assignmentStore"]

getCalendarById

  • getCalendarById(id: ModelId): this["project"]["calendarManagerStore"]["modelInstanceT"]

getCalendarManagerStore

  • getCalendarManagerStore(): this["project"]["calendarManagerStore"]

getDependencyById

  • getDependencyById(id: ModelId): this["project"]["dependencyStore"]["modelInstanceT"]

getDependencyStore

  • getDependencyStore(): this["project"]["dependencyStore"]

getEventById

  • getEventById(id: ModelId): this["project"]["eventStore"]["modelInstanceT"]

getEventStore

  • getEventStore(): this["project"]["eventStore"]

getGraph

getProject

  • getProject(): this["project"]

getResourceById

  • getResourceById(id: ModelId): this["project"]["resourceStore"]["modelInstanceT"]

getResourceStore

  • getResourceStore(): this["project"]["resourceStore"]

isWorkingTime

  • isWorkingTime(startDate: Date, endDate: Date): boolean

joinProject

  • joinProject(): void

leaveGraph

  • This method is called when entity is removed from the replica it's been added to.

    Parameters

    Returns void

leaveProject

  • leaveProject(isReplacing?: boolean): void

setProject

  • setProject(project: this["project"]): this["project"]

skipNonWorkingTime

  • skipNonWorkingTime(date: Date, isForward?: boolean): Date | null | "empty_calendar"

Generated using TypeDoc