enhancement
major
major
major
#29815
TL Views table: no per-row CSS class (a row cannot be marked as changed, stale or own)
tl-layout-view / tl-layout-react 8.0.0-alpha10, <table>.
Problem
A <table> offers no way to give a row a CSS class from its row object (a row-class expression or a RowClassProvider), so a row cannot be highlighted by state: in the E-Home group monitor a row whose value changed in the last seconds, or a telegram the user sent themself, should stand out; the download plan would mark operations that failed. A column gets a cssClass (#29544), a row does not.
The per-cell class a column defines in Java (Column#cssClass(row), DefaultColumn.Builder#css) is not transported to the client either: the React table only ships the column-level class.
Expected
<table row-class="row -> …"> (a TL-Script expression over the row object yielding a class name or null), applied to the row element and re-evaluated with the row's data.
Workaround in E-Home
projects/monitor.view.xml: a column with a "●" for rows changed recently and "►" for own telegrams.
Solution
Table model (com.top_logic.table): TableView answers a CSS class per row (rowCssClass(Row)) and per cell (cellCssClass(Row, column)), both null by default. DefaultTableView takes a row class function (setRowCssClass) and applies it to data rows only; group header and aggregate rows get no class. The cell class is the column's Column#cssClass(row).
React table (TableViewControl / TLTableView): the row state carries the row class and a map of cell classes by column, rebuilt with every push of the rows, so the classes follow the row's data after a change of an observed object or of an input channel. The client puts the row class on the row element and the cell class on the cell element, next to the column-level class.
Standard highlight classes: the stylesheet defines tl-status-error, tl-status-warning, tl-status-success and tl-status-info for table rows and cells, tinting them (frozen and pinned cells included) from the design system's status tokens, so an application marks a row by its state without writing CSS of its own. A selected row shows its selection color instead of the tint. Any other class is the application's to style.
View layer: <table row-class="row -> …"> and <composition-table row-class="row -> …"> share one configuration property (RowClassConfig) and one evaluation (RowClassFunction): the expression is called with the element's input channel values as leading arguments (a <table> with <inputs>) and the row object last; null or an empty result gives no class, a list is joined with spaces. The plain table installs the function on its view, the row-editing table and the composition table on RowSetTableControl, which applies it to every table it builds on an edit-mode switch. In a row-editing table a value typed into a cell re-tints the row when the rows are built again (on save, or when a row is added or removed), not while typing.
Documented in the view-layer article view-layer/tables (section "Row classes"); the React demo tints the in-progress tickets of the Object list and the parts above 100 of the Attributes form.
Out of scope: <tree> nodes.