Class: AIXM::Component::Timesheet

Inherits:
AIXM::Component show all
Defined in:
lib/aixm/component/timesheet.rb

Overview

Timesheets define customized activity time windows.

AIXM supports only yearless dates whereas OFMX extends the model to accommodate years as well, therefore, the year part is ignored for AIXM.

Cheat Sheat in Pseudo Code:

timesheet = AIXM.timesheet(
  adjust_to_dst: Boolean
  dates: (AIXM.date..AIXM.date)
  days: (AIXM.day..AIXM..day)     # either: range of days
  day: AIXM.day (default: :any)   # or: single day
)
timesheet.times = (AIXM.time..AIXM_time)

Constant Summary collapse

DAYS =
{
  MON: :monday,
  TUE: :tuesday,
  WED: :wednesday,
  THU: :thursday,
  FRI: :friday,
  SAT: :saturday,
  SUN: :sunday,
  WD: :workday,
  PWD: :day_preceding_workday,
  AWD: :day_following_workday,
  LH: :holiday,
  PLH: :day_preceding_holiday,
  ALH: :day_following_holiday,
  ANY: :any
}
EVENTS =
{
  SR: :sunrise,
  SS: :sunset
}
PRECEDENCES =
{
  E: :first,
  L: :last
}

Instance Attribute Summary collapse

Attributes inherited from AIXM::Component

#meta

Instance Method Summary collapse

Methods included from AIXM::Concerns::HashEquality

#eql?, #hash

Methods included from AIXM::Concerns::XMLBuilder

#build_fragment, #to_uid, #to_xml

Methods included from AIXM::Concerns::Memoize

included, method

Constructor Details

#initialize(adjust_to_dst:, dates:, days: nil, day: AIXM::ANY_DAY) ⇒ Timesheet

See the cheat sheet for examples on how to create instances of this class.


87
88
89
90
91
92
93
94
# File 'lib/aixm/component/timesheet.rb', line 87

def initialize(adjust_to_dst:, dates:, days: nil, day: AIXM::ANY_DAY)
  self.adjust_to_dst, self.dates = adjust_to_dst, dates
  if days
    self.days = days
  else
    self.day = day
  end
end

Instance Attribute Details

#adjust_to_dst?Boolean #adjust_to_dst=(value) ⇒ Object

Note:

See the OFMX docs for how exactly this affects dates and times.

Whether to adjust to dayight savings time.

Overloads:

  • #adjust_to_dst?Boolean

    Returns:

    • (Boolean)
  • #adjust_to_dst=(value) ⇒ Object

    Parameters:

    • value (Boolean)

111
112
113
# File 'lib/aixm/component/timesheet.rb', line 111

def adjust_to_dst?
  @adjust_to_dst
end

#datesRange<AIXM::Schedule::Date> #dates=(value) ⇒ Object

Note:

Neither open beginning nor open ending is allowed.

Range of schedule dates for which this timesheet is active.

Overloads:


59
60
61
# File 'lib/aixm/component/timesheet.rb', line 59

def dates
  @dates
end

#dayAIXM::Schedule::Day #daysRange<AIXM::Schedule::Day> #day=(value) ⇒ Object #days=(value) ⇒ Object

Note:

Neither open beginning nor open ending is allowed.

Day or days for which this timesheet is active.

Overloads:


73
74
75
# File 'lib/aixm/component/timesheet.rb', line 73

def days
  @days
end

#timesRange<AIXM::Schedule::Time>? #times=(value) ⇒ Object

Note:

Either open beginning or open ending is allowed.

Range of schedule times for which this timesheet is active.

Overloads:


83
84
85
# File 'lib/aixm/component/timesheet.rb', line 83

def times
  @times
end

Instance Method Details

#adjust_to_dst?Boolean #adjust_to_dst=(value) ⇒ Object

Note:

See the OFMX docs for how exactly this affects dates and times.

Whether to adjust to dayight savings time.

Overloads:

  • #adjust_to_dst?Boolean

    Returns:

    • (Boolean)
  • #adjust_to_dst=(value) ⇒ Object

    Parameters:

    • value (Boolean)

111
112
113
# File 'lib/aixm/component/timesheet.rb', line 111

def adjust_to_dst?
  @adjust_to_dst
end

#dayObject


135
136
137
# File 'lib/aixm/component/timesheet.rb', line 135

def day
  @days unless @days.instance_of? Range
end

#day=(value) ⇒ Object


139
140
141
142
# File 'lib/aixm/component/timesheet.rb', line 139

def day=(value)
  fail(ArgumentError, 'invalid day') unless value.instance_of? AIXM::Schedule::Day
  @days = value
end

#inspectString

Returns:

  • (String)

97
98
99
# File 'lib/aixm/component/timesheet.rb', line 97

def inspect
  %Q(#<#{self.class} dates=#{dates.inspect}>)
end