The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

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

DESCRIPTION

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'

AUTHOR

Henry Van Styn <vanstyn@intellitree.com>