Class TaskJuggler::ReportBase
In: lib/taskjuggler/reports/ReportBase.rb
Parent: Object

This is the abstract base class for all kinds of reports. The derived classes must implement the generateIntermediateFormat function as well as the to_* members.

Methods

Public Class methods

[Source]

# File lib/taskjuggler/reports/ReportBase.rb, line 21
    def initialize(report)
      @report = report
      @project = report.project
    end

Public Instance methods

Convenience function to access a report attribute

[Source]

# File lib/taskjuggler/reports/ReportBase.rb, line 27
    def a(attribute)
      @report.get(attribute)
    end

Take the complete account list and remove all accounts that are matching the hide expression, the rollup Expression or are not a descendent of accountroot.

[Source]

# File lib/taskjuggler/reports/ReportBase.rb, line 52
    def filterAccountList(list_, hideExpr, rollupExpr, openNodes)
      list = PropertyList.new(list_)
      if (accountroot = a('accountroot'))
        # Remove all accounts that are not descendents of the accountroot.
        list.delete_if { |account| !account.isChildOf?(accountroot) }
      end

      standardFilterOps(list, hideExpr, rollupExpr, openNodes, nil,
                        accountroot)
    end

Take the complete resource list and remove all resources that are matching the hide expression, the rollup Expression or are not a descendent of resourceroot. In case task is not nil, a resource is only included if it is assigned to the task in any of the reported scenarios.

[Source]

# File lib/taskjuggler/reports/ReportBase.rb, line 99
    def filterResourceList(list_, task, hideExpr, rollupExpr, openNodes)
      list = PropertyList.new(list_)
      if (resourceRoot = a('resourceroot'))
        # Remove all resources that are not descendents of the resourceRoot.
        list.delete_if { |resource| !resource.isChildOf?(resourceRoot) }
      end

      if task
        # If we have a task we need to check that the resources are assigned
        # to the task in any of the reported scenarios.
        iv = TimeInterval.new(a('start'), a('end'))
        list.delete_if do |resource|
          delete = true
          a('scenarios').each do |scenarioIdx|
            if task.hasResourceAllocated?(scenarioIdx, iv, resource)
              delete = false
              break;
            end
          end
          delete
        end
      end

      standardFilterOps(list, hideExpr, rollupExpr, openNodes, task,
                        resourceRoot)
    end

Take the complete task list and remove all tasks that are matching the hide expression, the rollup Expression or are not a descendent of taskroot. In case resource is not nil, a task is only included if the resource is allocated to it in any of the reported scenarios.

[Source]

# File lib/taskjuggler/reports/ReportBase.rb, line 67
    def filterTaskList(list_, resource, hideExpr, rollupExpr, openNodes)
      list = PropertyList.new(list_)
      if (taskRoot = a('taskroot'))
        # Remove all tasks that are not descendents of the taskRoot.
        list.delete_if { |task| !task.isChildOf?(taskRoot) }
      end

      if resource
        # If we have a resource we need to check that the resource is allocated
        # to the tasks in any of the reported scenarios within the report time
        # frame.
        list.delete_if do |task|
          delete = true
          a('scenarios').each do |scenarioIdx|
            iv = TimeInterval.new(a('start'), a('end'))
            if task.hasResourceAllocated?(scenarioIdx, iv, resource)
              delete = false
              break;
            end
          end
          delete
        end
      end

      standardFilterOps(list, hideExpr, rollupExpr, openNodes, resource,
                        taskRoot)
    end

[Source]

# File lib/taskjuggler/reports/ReportBase.rb, line 31
    def generateIntermediateFormat
      query = @report.project.reportContexts.last.query
      %w( header left center right footer
          prolog headline caption epilog ).each do |name|
        next unless (text = a(name))

        text.setQuery(query)
      end
    end

[Source]

# File lib/taskjuggler/reports/ReportBase.rb, line 45
    def to_csv
      raise 'This function must be overriden by derived classes.'
    end

[Source]

# File lib/taskjuggler/reports/ReportBase.rb, line 41
    def to_html
      raise 'This function must be overriden by derived classes.'
    end

[Validate]