Class: TaskJuggler::ScoreboardInterval

Inherits:
Interval show all
Defined in:
lib/taskjuggler/Interval.rb

Overview

This class describes an interval of a scoreboard. The start and end of the interval are stored as indexes but can always be converted back to TjTime objects if needed.

Instance Attribute Summary collapse

Attributes inherited from Interval

#end, #start

Instance Method Summary collapse

Methods inherited from Interval

#<=>, #==, #combine, #contains?, #intersection, #overlaps?

Constructor Details

#initialize(*args) ⇒ ScoreboardInterval

Create a new ScoreboardInterval. args can be three different kind of arguments.

sbStart must be a TjTime of the scoreboard start slotDuration must be the duration of the scoreboard slots in seconds a and b should be TjTime or Fixnum objects that describe the start and end time or index of the interval.

TimeInterval.new(iv) TimeInterval.new(sbStart, slotDuration, a) TimeInterval.new(sbStart, slotDuration, a, b)



176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
# File 'lib/taskjuggler/Interval.rb', line 176

def initialize(*args)
  case args.length
  when 1
    # If there is only one argument, it must be a ScoreboardInterval.
    if args[0].is_a?(ScoreboardInterval)
      @sbStart = args[0].sbStart
      @slotDuration = args[0].slotDuration
      # Just one argument, a TimeInterval
      super(args[0].start, args[0].end)
    else
      raise ArgumentError, "Illegal argument 1: #{args[0].class}"
    end
  when 3
    @sbStart = args[0]
    @slotDuration = args[1]
    # If the third argument is a date we convert it to a scoreboard index.
    args[2] = dateToIndex(args[2]) if args[2].is_a?(TjTime)

    if args[2].is_a?(Fixnum) || args[2].is_a?(Bignum)
      super(args[2], args[2])
    else
      raise ArgumentError, "Illegal argument 3: #{args[0].class}"
    end
  when 4
    @sbStart = args[0]
    @slotDuration = args[1]
    # If the third and forth arguments are a date we convert them to a
    # scoreboard index.
    args[2] = dateToIndex(args[2]) if args[2].is_a?(TjTime)
    args[3] = dateToIndex(args[3]) if args[3].is_a?(TjTime)

    if !(args[2].is_a?(Fixnum) || args[2].is_a?(Bignum))
      raise ArgumentError, "Interval start must be an index or TjTime, " +
            "not a #{args[2].class}"
    end
    if !(args[3].is_a?(Fixnum) || args[3].is_a?(Bignum))
      raise ArgumentError, "Interval end must be an index or TjTime, " +
            "not a #{args[3].class}"
    end
    super(args[2], args[3])
  else
    raise ArgumentError, "Wrong number of arguments: #{args.length}"
  end

  unless @sbStart.is_a?(TjTime)
    raise ArgumentError, "sbStart must be a TjTime object, not a" +
          "#{@sbStart.class}"
  end
  unless @slotDuration.is_a?(Fixnum)
    raise ArgumentError, "slotDuration must be a Fixnum, not a " +
          "#{@slotDuration.class}"
  end

end

Instance Attribute Details

#sbStartObject (readonly)

Returns the value of attribute sbStart.



162
163
164
# File 'lib/taskjuggler/Interval.rb', line 162

def sbStart
  @sbStart
end

#slotDurationObject (readonly)

Returns the value of attribute slotDuration.



162
163
164
# File 'lib/taskjuggler/Interval.rb', line 162

def slotDuration
  @slotDuration
end

Instance Method Details

#durationObject

Return the duration of the ScoreboardInterval.



270
271
272
# File 'lib/taskjuggler/Interval.rb', line 270

def duration
  indexToDate(@end) - indexToDate(@start)
end

#end=(arg) ⇒ Object

Assign the start of the interval. arg can be a Fixnum, Bignum or TjTime object.



247
248
249
250
251
252
253
254
255
256
257
# File 'lib/taskjuggler/Interval.rb', line 247

def end=(arg)
  case arg
  when Fixnum
  when Bignum
    @end = arg
  when TjTime
    @end = dateToIndex(arg)
  else
    raise ArgumentError, "Unsupported class #{arg.class}"
  end
end

#endDateObject

Return the interval end as TjTime object.



265
266
267
# File 'lib/taskjuggler/Interval.rb', line 265

def endDate
  indexToDate(@end)
end

#start=(arg) ⇒ Object

Assign the start of the interval. arg can be a Fixnum, Bignum or TjTime object.



233
234
235
236
237
238
239
240
241
242
243
# File 'lib/taskjuggler/Interval.rb', line 233

def start=(arg)
  case arg
  when Fixnum
  when Bignum
    @start = arg
  when TjTime
    @start = dateToIndex(arg)
  else
    raise ArgumentError, "Unsupported class #{arg.class}"
  end
end

#startDateObject

Return the interval start as TjTime object.



260
261
262
# File 'lib/taskjuggler/Interval.rb', line 260

def startDate
  indexToDate(@start)
end

#to_sObject

Turn the ScoreboardInterval into a human readable form.



275
276
277
# File 'lib/taskjuggler/Interval.rb', line 275

def to_s
  indexToDate(@start).to_s + ' - ' + indexToDate(@end).to_s
end