Class: TaskJuggler::ReportTableColumn

Inherits:
Object
  • Object
show all
Defined in:
lib/taskjuggler/reports/ReportTableColumn.rb

Overview

The ReportTableColumn class models the output format independend column of a ReportTable. It usually just contains the table header description. The table header comprises of one or two lines per column. So each column header consists of 2 cells. @cell1 is the top cell and must be present. @cell2 is the optional bottom cell. If @cell2 is hidden, @cell1 takes all the vertical space.

For some columns, the table does not contain the usual grid lines but another abstract object that responds to the usual generator methods such as to_html(). In such a case, @cell1 references the embedded object via its special variable. The embedded object then replaced the complete column content.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(table, definition, title) ⇒ ReportTableColumn

Create a new column. table is a reference to the ReportTable this column belongs to. definition is the TableColumnDefinition of the column from the project definition. title is the text that is used for the column header.



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/taskjuggler/reports/ReportTableColumn.rb', line 37

def initialize(table, definition, title)
  @table = table
  # Register this new column with the ReportTable.
  @table.addColumn(self)
  @definition = definition
  # Register this new column with the TableColumnDefinition.
  definition.column = self if definition

  # Create the 2 cells of the header.
  @cell1 = ReportTableCell.new(nil, nil, title, true)
  @cell1.padding = 5
  @cell2 = ReportTableCell.new(nil, nil, '', true)
  # Header text is always bold.
  @cell1.bold = @cell2.bold = true
  # This variable is set to true if the column requires a scrollbar later
  # on.
  @scrollbar = false
end

Instance Attribute Details

#cell1Object (readonly)

Returns the value of attribute cell1.



30
31
32
# File 'lib/taskjuggler/reports/ReportTableColumn.rb', line 30

def cell1
  @cell1
end

#cell2Object (readonly)

Returns the value of attribute cell2.



30
31
32
# File 'lib/taskjuggler/reports/ReportTableColumn.rb', line 30

def cell2
  @cell2
end

#definitionObject (readonly)

Returns the value of attribute definition.



30
31
32
# File 'lib/taskjuggler/reports/ReportTableColumn.rb', line 30

def definition
  @definition
end

#scrollbarObject

Returns the value of attribute scrollbar.



31
32
33
# File 'lib/taskjuggler/reports/ReportTableColumn.rb', line 31

def scrollbar
  @scrollbar
end

Instance Method Details

#minWidthObject

Return the mininum required width for the column.



57
58
59
60
61
# File 'lib/taskjuggler/reports/ReportTableColumn.rb', line 57

def minWidth
  width = @cell1.width
  width = @cell2.width if width.nil? || @cell2.width > width
  width
end

#to_csv(csv, startColumn) ⇒ Object

Put the abstract representation into an Array. csv is an Array of Arrays of Strings. We have an Array with Strings for every cell. The outer Array holds the Arrays representing the lines.



75
76
77
78
# File 'lib/taskjuggler/reports/ReportTableColumn.rb', line 75

def to_csv(csv, startColumn)
  # For CSV reports we can only include the first header line.
  @cell1.to_csv(csv, startColumn, 0)
end

#to_html(row) ⇒ Object

Convert the abstract representation into HTML elements.



64
65
66
67
68
69
70
# File 'lib/taskjuggler/reports/ReportTableColumn.rb', line 64

def to_html(row)
  if row == 1
    @cell1.to_html
  else
    @cell2.to_html
  end
end