class TaskJuggler::ScoreboardInterval
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.
Attributes
Public Class Methods
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 Integer 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)
TaskJuggler::Interval::new
# 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?(Integer) 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?(Integer)) raise ArgumentError, "Interval start must be an index or TjTime, " + "not a #{args[2].class}" end if !(args[3].is_a?(Integer)) 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?(Integer) raise ArgumentError, "slotDuration must be an Integer, not a " + "#{@slotDuration.class}" end end
Public Instance Methods
Return the duration of the ScoreboardInterval
.
# File lib/taskjuggler/Interval.rb, line 268 def duration indexToDate(@end) - indexToDate(@start) end
Assign the start of the interval. arg
can be an Integer or TjTime
object.
# File lib/taskjuggler/Interval.rb, line 246 def end=(arg) case arg when Integer @end = arg when TjTime @end = dateToIndex(arg) else raise ArgumentError, "Unsupported class #{arg.class}" end end
Return the interval end as TjTime
object.
# File lib/taskjuggler/Interval.rb, line 263 def endDate indexToDate(@end) end
Assign the start of the interval. arg
can be an Integer or TjTime
object.
# File lib/taskjuggler/Interval.rb, line 233 def start=(arg) case arg when Integer @start = arg when TjTime @start = dateToIndex(arg) else raise ArgumentError, "Unsupported class #{arg.class}" end end
Return the interval start as TjTime
object.
# File lib/taskjuggler/Interval.rb, line 258 def startDate indexToDate(@start) end
Turn the ScoreboardInterval
into a human readable form.
# File lib/taskjuggler/Interval.rb, line 273 def to_s indexToDate(@start).to_s + ' - ' + indexToDate(@end).to_s end