++ed by:

11 PAUSE users
16 non-PAUSE users.

Author image Henry Van Styn
and 14 contributors


RapidApp::Module::AppDV::HtmlTable - Table generator for RapidApp/AppDV


This module generates a nicely laid out "Property" (name/value pairs) HTML table according to the data structure in 'tt_table_data' which should look like this:

     { name => "Some Label/Heading", value => "Some value" },
     { name => "foo", value => "BLAH" },
     { name => "abc", value => "xyc" },
     { name => "Some Label, top of second column group", value => "Some value" },
     { name => "aaa", value => "123" }

The data should be an array of arrays, each sequential sub array defines a column set and contains name/value pairs

While you can manually define tt_table_data, if you don't it will be automatically populated according to the configured DataStore2 columns.

By default 2 even column sets will be setup, but you can define 'column_layout' which is an intermediary for generating tt_table_data like this:

  has '+column_layout', => default => sub {[
    [ 'column_name1', 'col_foo', 'another_column' ],
    [ 'col_a', 'col_b' ],
    [ 'col_z', 'col_y', 'col_x', 'col_w' ]

The above would define 3 column groups. The headers and AppDV 'autofield' values are populated automatically according to the DataStore2/TableSpec column configs

You can also apply extra css styles like this:

  has '+tt_css_styles', default => sub {{
    'table.property-table table.column td.name' => {
      'text-align' => 'right'

The above would cause the labels to the right-justified instead of left-justified. This is based on the css and class names that are used when the table is generated. See the tt file (rapidapp/misc/property_table.tt) for direction on what css styles to apply

You can also override the method 'get_tt_column_data' for fine-grained control when tt_table_data is being automatically generated from DataStore2 columns

Besides 'name' and 'value', other column_data parameters are available:

 * name_cls: if supplied, this css class name is applied to the name cell div
 * value_cls: if supplied, this css class name is applied to the value cell div
 * name_style: if supplied, this style is applied to the name cell div
 * value_style: if supplied, this style is applied to the value cell div
 * whole_col: if set to true, 'name' is ignored and colspan="2" is set on the 'value' cell/td

The column data hash can be returned from get_tt_column_data, and arbitrary also column_data hashed can be supplied instead of a column name within 'column_layout'


Henry Van Styn <vanstyn@intellitree.com>