Class TaskJuggler::ScoreboardInterval
In: lib/taskjuggler/Interval.rb
Parent: Interval

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.

Methods

duration   end   endDate   new   start=   startDate   to_s  

Attributes

sbStart  [R] 
slotDuration  [R] 

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 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)

[Source]

# 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

Public Instance methods

Return the duration of the ScoreboardInterval.

[Source]

# File lib/taskjuggler/Interval.rb, line 270
    def duration
      indexToDate(@end) - indexToDate(@start)
    end

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

[Source]

# 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

Return the interval end as TjTime object.

[Source]

# File lib/taskjuggler/Interval.rb, line 265
    def endDate
      indexToDate(@end)
    end

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

[Source]

# 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

Return the interval start as TjTime object.

[Source]

# File lib/taskjuggler/Interval.rb, line 260
    def startDate
      indexToDate(@start)
    end

Turn the ScoreboardInterval into a human readable form.

[Source]

# File lib/taskjuggler/Interval.rb, line 275
    def to_s
      indexToDate(@start).to_s + ' - ' + indexToDate(@end).to_s
    end

[Validate]