From a66d448274b6903f8076208694992f70c2b794a6 Mon Sep 17 00:00:00 2001 From: Matthew Runyon Date: Thu, 17 Oct 2024 00:43:08 -0500 Subject: [PATCH 01/20] WIP table formatting --- .../src/deephaven/ui/components/__init__.py | 3 +- .../ui/src/deephaven/ui/components/table.py | 257 +++++++--- .../ui/src/deephaven/ui/elements/UITable.py | 478 ------------------ .../ui/src/deephaven/ui/elements/__init__.py | 2 - .../ui/src/deephaven/ui/renderer/Renderer.py | 9 +- plugins/ui/src/deephaven/ui/types/types.py | 68 --- .../js/src/elements/UITable/JsTableProxy.ts | 6 +- .../src/js/src/elements/UITable/UITable.tsx | 8 +- .../js/src/elements/UITable/UITableModel.ts | 124 ++++- .../js/src/elements/UITable/UITableUtils.tsx | 11 + 10 files changed, 327 insertions(+), 639 deletions(-) delete mode 100644 plugins/ui/src/deephaven/ui/elements/UITable.py diff --git a/plugins/ui/src/deephaven/ui/components/__init__.py b/plugins/ui/src/deephaven/ui/components/__init__.py index ad82036ef..b98e75e25 100644 --- a/plugins/ui/src/deephaven/ui/components/__init__.py +++ b/plugins/ui/src/deephaven/ui/components/__init__.py @@ -47,7 +47,7 @@ from .tab_list import tab_list from .tab_panels import tab_panels from .tab import tab -from .table import table +from .table import table, TableFormat from .tabs import tabs from .text import text from .text_area import text_area @@ -106,6 +106,7 @@ "stack", "switch", "table", + "TableFormat", "tab_list", "tab_panels", "tabs", diff --git a/plugins/ui/src/deephaven/ui/components/table.py b/plugins/ui/src/deephaven/ui/components/table.py index afced9696..512d687a9 100644 --- a/plugins/ui/src/deephaven/ui/components/table.py +++ b/plugins/ui/src/deephaven/ui/components/table.py @@ -1,100 +1,191 @@ from __future__ import annotations -from typing import Literal - +from dataclasses import dataclass +from typing import Literal, Any, Optional +import logging from deephaven.table import Table -from ..elements import UITable +from ..elements import Element from ..types import ( CellPressCallback, ColumnGroup, ColumnName, ColumnPressCallback, - DatabarConfig, QuickFilterExpression, RowPressCallback, ResolvableContextMenuItem, ) +from .._internal import dict_to_camel_case, RenderContext + +logger = logging.getLogger(__name__) + + +@dataclass(kw_only=True) +class TableFormat: + """ + A formatting rule for a table. + + Args: + cols: The columns to format. If None, the format will apply to the entire row. + where: Query string to filter which rows should be formatted. + color: The font color. + background_color: The cell background color. + alignment: The cell text alignment. + value: Format string for the cell value. + E.g. "0.00%" to format as a percentage with two decimal places. + mode: The cell rendering mode. + Currently only databar is supported as an alternate rendering mode. + """ + + cols: ColumnName | list[ColumnName] | None = None + where: str | None = None + color: str | None = None + background_color: str | None = None + alignment: Literal["left", "center", "right"] | None = None + value: str | None = None + mode: TableDatabar | None = None -def table( - table: Table, - *, - on_row_press: RowPressCallback | None = None, - on_row_double_press: RowPressCallback | None = None, - on_cell_press: CellPressCallback | None = None, - on_cell_double_press: CellPressCallback | None = None, - on_column_press: ColumnPressCallback | None = None, - on_column_double_press: ColumnPressCallback | None = None, - always_fetch_columns: ColumnName | list[ColumnName] | bool | None = None, - quick_filters: dict[ColumnName, QuickFilterExpression] | None = None, - show_quick_filters: bool = False, - show_grouping_column: bool = True, - show_search: bool = False, - reverse: bool = False, - front_columns: list[ColumnName] | None = None, - back_columns: list[ColumnName] | None = None, - frozen_columns: list[ColumnName] | None = None, - hidden_columns: list[ColumnName] | None = None, - column_groups: list[ColumnGroup] | None = None, - density: Literal["compact", "regular", "spacious"] | None = None, - context_menu: ( - ResolvableContextMenuItem | list[ResolvableContextMenuItem] | None - ) = None, - context_header_menu: ( - ResolvableContextMenuItem | list[ResolvableContextMenuItem] | None - ) = None, - databars: list[DatabarConfig] | None = None, - key: str | None = None, -) -> UITable: +@dataclass(kw_only=True) +class TableDatabar: """ - Customization to how a table is displayed, how it behaves, and listen to UI events. + A databar configuration for a table. Args: - table: The table to wrap - on_row_press: The callback function to run when a row is clicked. - The callback is invoked with the visible row data provided in a dictionary where the - column names are the keys. - on_row_double_press: The callback function to run when a row is double clicked. - The callback is invoked with the visible row data provided in a dictionary where the - column names are the keys. - on_cell_press: The callback function to run when a cell is clicked. - The callback is invoked with the cell data. - on_cell_double_press: The callback function to run when a cell is double clicked. - The callback is invoked with the cell data. - on_column_press: The callback function to run when a column is clicked. - The callback is invoked with the column name. - on_column_double_press: The callback function to run when a column is double clicked. - The callback is invoked with the column name. - always_fetch_columns: The columns to always fetch from the server regardless of if they are in the viewport. - If True, all columns will always be fetched. This may make tables with many columns slow. - quick_filters: The quick filters to apply to the table. Dictionary of column name to filter value. - show_quick_filters: Whether to show the quick filter bar by default. - show_grouping_column: Whether to show the grouping column by default for rollup tables. - show_search: Whether to show the search bar by default. - reverse: Whether to reverse the table rows. Applied after any sorts. - front_columns: The columns to pin to the front of the table. These will not be movable by the user. - back_columns: The columns to pin to the back of the table. These will not be movable by the user. - frozen_columns: The columns to freeze by default at the front of the table. - These will always be visible regardless of horizontal scrolling. - The user may unfreeze columns or freeze additional columns. - hidden_columns: The columns to hide by default. Users may show the columns by expanding them. - column_groups: Columns to group together by default. The groups will be shown in the table header. - Group names must be unique within the column and group names. - Groups may be nested by providing the group name as a child of another group. - density: The density of the data displayed in the table. - One of "compact", "regular", or "spacious". - If not provided, the app default will be used. - context_menu: The context menu items to show when a cell is right clicked. - May contain action items or submenu items. - May also be a function that receives the cell data and returns the context menu items or None. - context_header_menu: The context menu items to show when a column header is right clicked. - May contain action items or submenu items. - May also be a function that receives the column header data and returns the context menu items or None. - databars: Databars are experimental and will be moved to column_formatting in the future. - key: A unique identifier used by React to render elements in a list. - - Returns: - The rendered Table. + column: Name of the column to display as a databar. + value_column: Name of the column to use as the value for the databar. + If not provided, the databar will use the column value. + + This can be useful if you want to display a databar with + a log scale, but display the actual value in the cell. + In this case, the value_column would be the log of the actual value. + min: Minimum value for the databar. Defaults to the minimum value in the column. + + If a column name is provided, the minimum value will be the value in that column. + If a constant is providded, the minimum value will be that constant. + max: Maximum value for the databar. Defaults to the maximum value in the column. + + If a column name is provided, the maximum value will be the value in that column. + If a constant is providded, the maximum value will be that constant. + axis: Whether the databar 0 value should be proportional to the min and max values, + in the middle of the cell, or on one side of the databar based on direction. + direction: The direction of the databar. + value_placement: Placement of the value relative to the databar. + color: The color of the databar. + opacity: The opacity of the databar. """ - props = locals() - del props["table"] - return UITable(table, **props) + + column: ColumnName + value_column: ColumnName | None = None + min: ColumnName | float | None = None + max: ColumnName | float | None = None + axis: Literal["proportional", "middle", "directional"] | None = None + direction: Literal["LTR", "RTL"] | None = None + value_placement: Literal["beside", "overlap", "hide"] | None = None + color: str | None = None + opacity: float | None = None + + +class table(Element): + _props: dict[str, Any] + """ + The props that are passed to the frontend + """ + + def __init__( + self, + table: Table, + *, + formatting: list[TableFormat] | None = None, + on_row_press: RowPressCallback | None = None, + on_row_double_press: RowPressCallback | None = None, + on_cell_press: CellPressCallback | None = None, + on_cell_double_press: CellPressCallback | None = None, + on_column_press: ColumnPressCallback | None = None, + on_column_double_press: ColumnPressCallback | None = None, + always_fetch_columns: ColumnName | list[ColumnName] | bool | None = None, + quick_filters: dict[ColumnName, QuickFilterExpression] | None = None, + show_quick_filters: bool = False, + show_grouping_column: bool = True, + show_search: bool = False, + reverse: bool = False, + front_columns: list[ColumnName] | None = None, + back_columns: list[ColumnName] | None = None, + frozen_columns: list[ColumnName] | None = None, + hidden_columns: list[ColumnName] | None = None, + column_groups: list[ColumnGroup] | None = None, + density: Literal["compact", "regular", "spacious"] | None = None, + context_menu: ( + ResolvableContextMenuItem | list[ResolvableContextMenuItem] | None + ) = None, + context_header_menu: ( + ResolvableContextMenuItem | list[ResolvableContextMenuItem] | None + ) = None, + databars: list[TableDatabar] | None = None, + key: str | None = None, + ): + """ + Customization to how a table is displayed, how it behaves, and listen to UI events. + + Args: + table: The table to wrap + on_row_press: The callback function to run when a row is clicked. + The callback is invoked with the visible row data provided in a dictionary where the + column names are the keys. + on_row_double_press: The callback function to run when a row is double clicked. + The callback is invoked with the visible row data provided in a dictionary where the + column names are the keys. + on_cell_press: The callback function to run when a cell is clicked. + The callback is invoked with the cell data. + on_cell_double_press: The callback function to run when a cell is double clicked. + The callback is invoked with the cell data. + on_column_press: The callback function to run when a column is clicked. + The callback is invoked with the column name. + on_column_double_press: The callback function to run when a column is double clicked. + The callback is invoked with the column name. + always_fetch_columns: The columns to always fetch from the server regardless of if they are in the viewport. + If True, all columns will always be fetched. This may make tables with many columns slow. + quick_filters: The quick filters to apply to the table. Dictionary of column name to filter value. + show_quick_filters: Whether to show the quick filter bar by default. + show_grouping_column: Whether to show the grouping column by default for rollup tables. + show_search: Whether to show the search bar by default. + reverse: Whether to reverse the table rows. Applied after any sorts. + front_columns: The columns to pin to the front of the table. These will not be movable by the user. + back_columns: The columns to pin to the back of the table. These will not be movable by the user. + frozen_columns: The columns to freeze by default at the front of the table. + These will always be visible regardless of horizontal scrolling. + The user may unfreeze columns or freeze additional columns. + hidden_columns: The columns to hide by default. Users may show the columns by expanding them. + column_groups: Columns to group together by default. The groups will be shown in the table header. + Group names must be unique within the column and group names. + Groups may be nested by providing the group name as a child of another group. + density: The density of the data displayed in the table. + One of "compact", "regular", or "spacious". + If not provided, the app default will be used. + context_menu: The context menu items to show when a cell is right clicked. + May contain action items or submenu items. + May also be a function that receives the cell data and returns the context menu items or None. + context_header_menu: The context menu items to show when a column header is right clicked. + May contain action items or submenu items. + May also be a function that receives the column header data and returns the context menu items or None. + databars: Databars are experimental and will be moved to column_formatting in the future. + key: A unique identifier used by React to render elements in a list. + + Returns: + The rendered Table. + """ + + props = locals() + del props["self"] + self._props = props + self._key = props.get("key") + + @property + def name(self): + return "deephaven.ui.elements.UITable" + + @property + def key(self) -> str | None: + return self._key + + def render(self, context: RenderContext) -> dict[str, Any]: + logger.debug("Returning props %s", self._props) + return dict_to_camel_case(self._props) diff --git a/plugins/ui/src/deephaven/ui/elements/UITable.py b/plugins/ui/src/deephaven/ui/elements/UITable.py deleted file mode 100644 index 24e909984..000000000 --- a/plugins/ui/src/deephaven/ui/elements/UITable.py +++ /dev/null @@ -1,478 +0,0 @@ -from __future__ import annotations - -import logging -import sys -from typing import Callable, Literal, Sequence, Any, cast -from warnings import warn - -if sys.version_info < (3, 11): - from typing_extensions import TypedDict, NotRequired -else: - from typing import TypedDict, NotRequired - -from deephaven.table import Table -from deephaven import SortDirection -from .Element import Element -from ..types import ( - ColumnName, - AggregationOperation, - QuickFilterExpression, - Color, - CellPressCallback, - ColumnPressCallback, - DataBarAxis, - DataBarValuePlacement, - DataBarDirection, - SelectionMode, - TableSortDirection, - RowPressCallback, - StringSortDirection, -) -from .._internal import dict_to_camel_case, RenderContext - -logger = logging.getLogger(__name__) - - -def remap_sort_direction(direction: TableSortDirection | str) -> Literal["ASC", "DESC"]: - """ - Remap the sort direction to the grid sort direction - - Args: - direction: The deephaven sort direction or grid sort direction to remap - - Returns: - The grid sort direction - """ - if direction == SortDirection.ASCENDING: - return "ASC" - elif direction == SortDirection.DESCENDING: - return "DESC" - elif direction in {"ASC", "DESC"}: - return cast(StringSortDirection, direction) - raise ValueError(f"Invalid table sort direction: {direction}") - - -class UITableProps(TypedDict): - on_row_press: NotRequired[RowPressCallback] - """ - Callback function to run when a row is clicked. - The first parameter is the row index, and the second is the visible row data provided in a dictionary where the - column names are the keys. - """ - - on_row_double_press: NotRequired[RowPressCallback] - """ - The callback function to run when a row is double clicked. - The first parameter is the row index, and the second is the visible row data provided in a dictionary where the - column names are the keys. - """ - - on_cell_press: NotRequired[CellPressCallback] - """ - The callback function to run when a cell is clicked. - The first parameter is the cell index, and the second is the cell data provided in a dictionary where the - column names are the keys. - """ - - on_cell_double_press: NotRequired[CellPressCallback] - """ - The callback function to run when a cell is double clicked. - The first parameter is the cell index, and the second is the cell data provided in a dictionary where the - column names are the keys. - """ - - on_column_press: NotRequired[ColumnPressCallback] - """ - The callback function to run when a column is clicked. - The first parameter is the column name. - """ - - on_column_double_press: NotRequired[ColumnPressCallback] - """ - The callback function to run when a column is double clicked. - The first parameter is the column name. - """ - - table: Table - """ - The table to wrap - """ - - -class UITable(Element): - """ - Wrap a Table with some extra props for giving hints to displaying a table - """ - - _props: UITableProps - """ - The props that are passed to the frontend - """ - - def __init__( - self, - table: Table, - **props: Any, - ): - """ - Create a UITable from the passed in table. UITable provides an [immutable fluent interface](https://en.wikipedia.org/wiki/Fluent_interface#Immutability) for adding UI hints to a table. - - Args: - table: The table to wrap - props: UITableProps props to pass to the frontend. - """ - - # Store all the props that were passed in - self._props = UITableProps(**props, table=table) - self._key = props.get("key") - - @property - def name(self): - return "deephaven.ui.elements.UITable" - - @property - def key(self) -> str | None: - return self._key - - def _with_prop(self, key: str, value: Any) -> "UITable": - """ - Create a new UITable with the passed in prop added to the existing props - - Args: - key: The key to add to the props - value: The value to add with the associated key - - Returns: - A new UITable with the passed in prop added to the existing props - """ - logger.debug("_with_prop(%s, %s)", key, value) - return UITable(**{**self._props, key: value}) - - def _with_appendable_prop(self, key: str, value: Any) -> "UITable": - """ - Create a new UITable with the passed in prop added to the existing prop - list (if it exists) or a new list with the passed in value - - Args: - key: The key to add to the props - value: The value to add with the associated key - - Returns: - A new UITable with the passed in prop added to the existing props - """ - logger.debug("_with_appendable_prop(%s, %s)", key, value) - existing = self._props.get(key, []) - - if not isinstance(existing, list): - raise ValueError(f"Expected {key} to be a list") - - value = value if isinstance(value, list) else [value] - - return UITable(**{**self._props, key: existing + value}) - - def _with_dict_prop(self, key: str, value: dict[str, Any]) -> "UITable": - """ - Create a new UITable with the passed in prop in a dictionary. - This will override any existing prop with the same key within - the dict stored at prop_name. - - - Args: - prop_name: The key to add to the props - value: The value to add with the associated key - - Returns: - A new UITable with the passed in prop added to the existing props - """ - logger.debug("_with_dict_prop(%s, %s)", key, value) - existing = ( - self._props.get(key) or {} - ) # Turn missing or explicit None into empty dict - return UITable(**{**self._props, key: {**existing, **value}}) # type: ignore - - def render(self, context: RenderContext) -> dict[str, Any]: - logger.debug("Returning props %s", self._props) - return dict_to_camel_case({**self._props}) - - def aggregations( - self, - operations: dict[ColumnName, list[AggregationOperation]], - operation_order: list[AggregationOperation] | None = None, - default_operation: AggregationOperation | None = None, - group_by: list[ColumnName] | None = None, - show_on_top: bool = False, - ) -> "UITable": - """ - Set the totals table to display below the main table. - - Args: - operations: The operations to apply to the columns of the table. - operation_order: The order in which to display the operations. - default_operation: The default operation to apply to columns that do not have an operation specified. - group_by: The columns to group by. - show_on_top: Whether to show the totals table above the main table. - - Returns: - A new UITable - """ - raise NotImplementedError() - - def always_fetch_columns(self, columns: str | list[str]) -> "UITable": - """ - Set the columns to always fetch from the server. - These will not be affected by the users current viewport/horizontal scrolling. - Useful if you have a column with key value data that you want to always include - in the data sent for row click operations. - - Args: - columns: The columns to always fetch from the server. - May be a single column name. - - Returns: - A new UITable - """ - return self._with_appendable_prop("always_fetch_columns", columns) - - def back_columns(self, columns: str | list[str]) -> "UITable": - """ - Set the columns to show at the back of the table. - These will not be moveable in the UI. - - Args: - columns: The columns to show at the back of the table. - May be a single column name. - - Returns: - A new UITable - """ - raise NotImplementedError() - - def column_group( - self, name: str, children: list[str], color: str | None - ) -> "UITable": - """ - Create a group for columns in the table. - - Args: - name: The group name. Must be a valid column name and not a duplicate of another column or group. - children: The children in the group. May contain column names or other group names. - Each item may only be specified as a child once. - color: The hex color string or Deephaven color name. - - Returns: - A new UITable - """ - raise NotImplementedError() - - def color_column( - self, - column: ColumnName, - where: QuickFilterExpression | None = None, - color: Color | None = None, - background_color: Color | None = None, - ) -> "UITable": - """ - Applies color formatting to a column of the table. - - Args: - column: The column name - where: The filter to apply to the expression. - Uses quick filter format (e.g. `>10`). - color: The text color. Accepts hex color strings or Deephaven color names. - background_color: The background color. Accepts hex color strings or Deephaven color names. - - Returns: - A new UITable - """ - raise NotImplementedError() - - def color_row( - self, - column: ColumnName, - where: QuickFilterExpression | None = None, - color: Color | None = None, - background_color: Color | None = None, - ) -> "UITable": - """ - Applies color formatting to rows of the table conditionally based on the value of a column. - - Args: - column: The column name - where: The filter to apply to the expression. - Uses quick filter format (e.g. `>10`). - color: The text color. Accepts hex color strings or Deephaven color names. - background_color: The background color. Accepts hex color strings or Deephaven color names. - - Returns: - A new UITable - """ - raise NotImplementedError() - - def data_bar( - self, - col: str, - value_col: str | None = None, - min: float | str | None = None, - max: float | str | None = None, - axis: DataBarAxis | None = None, - positive_color: Color | list[Color] | None = None, - negative_color: Color | list[Color] | None = None, - value_placement: DataBarValuePlacement | None = None, - direction: DataBarDirection | None = None, - opacity: float | None = None, - marker_col: str | None = None, - marker_color: Color | None = None, - ) -> "UITable": - """ - Applies data bar formatting to the specified column. - - Args: - col: Column to generate data bars in - value_col: Column containing the values to generate data bars from - min: Minimum value for data bar scaling or column to get value from - max: Maximum value for data bar scaling or column to get value from - axis: Orientation of data bar relative to cell - positive_color: Color for positive bars. Use list of colors to form a gradient - negative_color: Color for negative bars. Use list of colors to form a gradient - value_placement: Orientation of values relative to data bar - direction: Orientation of data bar relative to horizontal axis - opacity: Opacity of data bar. Accepts values from 0 to 1 - marker_col: Column containing the values to generate markers from - marker_color: Color for markers - - Returns: - A new UITable - """ - raise NotImplementedError() - - def format(self, column: ColumnName, format: str) -> "UITable": - """ - Specify the formatting to display a column in. - - Args: - column: The column name - format: The format to display the column in. Valid format depends on column type - - Returns: - A new UITable - """ - raise NotImplementedError() - - def freeze_columns(self, columns: str | list[str]) -> "UITable": - """ - Set the columns to freeze to the front of the table. - These will always be visible and not affected by horizontal scrolling. - - Args: - columns: The columns to freeze to the front of the table. - - Returns: - A new UITable - """ - raise NotImplementedError() - - def front_columns(self, columns: str | list[str]) -> "UITable": - """ - Set the columns to show at the front of the table. These will not be moveable in the UI. - - Args: - columns: The columns to show at the front of the table. - - Returns: - A new UITable - """ - raise NotImplementedError() - - def hide_columns(self, columns: str | list[str]) -> "UITable": - """ - Set the columns to hide by default in the table. The user can still resize the columns to view them. - - Args: - columns: The columns to hide from the table. May be a single column name. - - Returns: - A new UITable - """ - raise NotImplementedError() - - def on_row_double_press(self, callback: RowPressCallback) -> "UITable": - """ - Add a callback for when a row is double clicked. - *Deprecated: Use the on_row_double_press keyword arg instead. - - Args: - callback: The callback function to run when a row is double clicked. - The first parameter is the row index, and the second is the row data provided in a dictionary where the - column names are the keys. - - Returns: - A new UITable - """ - warn( - "on_row_double_press function is deprecated. Use the on_row_double_press keyword arg instead.", - DeprecationWarning, - stacklevel=2, - ) - return self._with_prop("on_row_double_press", callback) - - def selection_mode(self, mode: SelectionMode) -> "UITable": - """ - Set the selection mode for the table. - - Args: - mode: The selection mode to use. Must be one of `"ROW"`, `"COLUMN"`, or `"CELL"` - `"ROW"` selects the entire row of the cell you click on. - `"COLUMN"` selects the entire column of the cell you click on. - `"CELL"` selects only the cells you click on. - - Returns: - A new UITable - """ - raise NotImplementedError() - - def sort( - self, - by: str | Sequence[str], - direction: TableSortDirection | Sequence[TableSortDirection] | None = None, - ) -> "UITable": - """ - Provide the default sort that will be used by the UI. - - Args: - by: The column(s) to sort by. May be a single column name, or a list of column names. - direction: The sort direction(s) to use. If provided, that must match up with the columns provided. - May be a single sort direction, or a list of sort directions. The possible sort directions are - `"ASC"` `"DESC"`, `SortDirection.ASCENDING`, and `SortDirection.DESCENDING`. - Defaults to "ASC". - - Returns: - A new UITable - """ - direction_list: Sequence[TableSortDirection] = [] - if direction: - direction_list_unmapped = ( - direction if isinstance(direction, Sequence) else [direction] - ) - - # map deephaven sort direction to frontend sort direction - direction_list = [ - remap_sort_direction(direction) for direction in direction_list_unmapped - ] - - by_list = [by] if isinstance(by, str) else by - - if direction and len(direction_list) != len(by_list): - raise ValueError("by and direction must be the same length") - - if direction: - sorts = [ - {"column": column, "direction": direction, "is_abs": False} - for column, direction in zip(by_list, direction_list) - ] - else: - sorts = [ - {"column": column, "direction": "ASC", "is_abs": False} - for column in by_list - ] - - return self._with_prop("sorts", sorts) diff --git a/plugins/ui/src/deephaven/ui/elements/__init__.py b/plugins/ui/src/deephaven/ui/elements/__init__.py index 01aa1c109..21143a2f9 100644 --- a/plugins/ui/src/deephaven/ui/elements/__init__.py +++ b/plugins/ui/src/deephaven/ui/elements/__init__.py @@ -2,7 +2,6 @@ from .BaseElement import BaseElement from .DashboardElement import DashboardElement from .FunctionElement import FunctionElement -from .UITable import UITable __all__ = [ "BaseElement", @@ -10,5 +9,4 @@ "Element", "FunctionElement", "PropsType", - "UITable", ] diff --git a/plugins/ui/src/deephaven/ui/renderer/Renderer.py b/plugins/ui/src/deephaven/ui/renderer/Renderer.py index ab834aa9b..bc5a6d458 100644 --- a/plugins/ui/src/deephaven/ui/renderer/Renderer.py +++ b/plugins/ui/src/deephaven/ui/renderer/Renderer.py @@ -2,7 +2,8 @@ from dataclasses import asdict as dataclass_asdict, is_dataclass import logging from typing import Any, Union -from .._internal import RenderContext + +from .._internal import RenderContext, dict_to_camel_case from ..elements import Element, PropsType from .RenderedNode import RenderedNode @@ -32,7 +33,11 @@ def _render_child_item(item: Any, parent_context: RenderContext, index_key: str) # If the item is an instance of a dataclass if is_dataclass(item) and not isinstance(item, type): return _render_dict( - dataclass_asdict(item), parent_context.get_child_context(index_key) + # Convert dataclass to dict and remove None values + dataclass_asdict( + item, dict_factory=lambda x: {k: v for (k, v) in x if v is not None} + ), + parent_context.get_child_context(index_key), ) if isinstance(item, Element): diff --git a/plugins/ui/src/deephaven/ui/types/types.py b/plugins/ui/src/deephaven/ui/types/types.py index d0fa28513..07d548ea1 100644 --- a/plugins/ui/src/deephaven/ui/types/types.py +++ b/plugins/ui/src/deephaven/ui/types/types.py @@ -543,71 +543,3 @@ class DateRange(TypedDict): """ End value for the date range. """ - - -DataBarAxis = Literal["PROPORTIONAL", "MIDDLE", "DIRECTIONAL"] -DataBarDirection = Literal["LTR", "RTL"] -DataBarValuePlacement = Literal["BESIDE", "OVERLAP", "HIDE"] - - -class DatabarConfig(TypedDict): - """ - Configuration for displaying a databar. - """ - - column: ColumnName - """ - Name of the column to display as a databar. - """ - - value_column: NotRequired[ColumnName] - """ - Name of the column to use as the value for the databar. - If not provided, the databar will use the column value. - - This can be useful if you want to display a databar with - a log scale, but display the actual value in the cell. - In this case, the value_column would be the log of the actual value. - """ - - min: NotRequired[Union[ColumnName, float]] - """ - Minimum value for the databar. Defaults to the minimum value in the column. - - If a column name is provided, the minimum value will be the value in that column. - If a constant is providded, the minimum value will be that constant. - """ - - max: NotRequired[Union[ColumnName, float]] - """ - Maximum value for the databar. Defaults to the maximum value in the column. - - If a column name is provided, the maximum value will be the value in that column. - If a constant is providded, the maximum value will be that constant. - """ - - axis: NotRequired[DataBarAxis] - """ - Whether the databar 0 value should be proportional to the min and max values, - in the middle of the cell, or on one side of the databar based on direction. - """ - - direction: NotRequired[DataBarDirection] - """ - Direction of the databar. - """ - - value_placement: NotRequired[DataBarValuePlacement] - """ - Placement of the value relative to the databar. - """ - - color: NotRequired[Color] - """ - Color of the databar. - """ - - opacity: NotRequired[float] - """ - Opacity of the databar fill. - """ diff --git a/plugins/ui/src/js/src/elements/UITable/JsTableProxy.ts b/plugins/ui/src/js/src/elements/UITable/JsTableProxy.ts index 8bc2c3126..ebae4cd5e 100644 --- a/plugins/ui/src/js/src/elements/UITable/JsTableProxy.ts +++ b/plugins/ui/src/js/src/elements/UITable/JsTableProxy.ts @@ -21,7 +21,11 @@ interface JsTableProxy extends dh.Table {} // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore class JsTableProxy implements dh.Table { - static HIDDEN_COLUMN_SUFFIXES = ['__DATABAR_Min', '__DATABAR_Max']; + static HIDDEN_COLUMN_SUFFIXES = [ + '__DATABAR_Min', + '__DATABAR_Max', + '__FORMAT', + ]; private table: dh.Table; diff --git a/plugins/ui/src/js/src/elements/UITable/UITable.tsx b/plugins/ui/src/js/src/elements/UITable/UITable.tsx index ab9347b3f..3be8a1f97 100644 --- a/plugins/ui/src/js/src/elements/UITable/UITable.tsx +++ b/plugins/ui/src/js/src/elements/UITable/UITable.tsx @@ -42,6 +42,7 @@ function useStableArray(array: T[]): T[] { } export function UITable({ + formatting, onCellPress, onCellDoublePress, onColumnPress, @@ -90,6 +91,8 @@ export function UITable({ hiddenColumns, columnGroups, }); + + const [format] = useState(formatting ?? []); const [databars] = useState(databarsProp ?? []); const databarColorMap = useMemo(() => { @@ -177,7 +180,8 @@ export function UITable({ dh, table, databars, - layoutHints + layoutHints, + format ); if (!isCancelled) { setError(null); @@ -198,7 +202,7 @@ export function UITable({ return () => { isCancelled = true; }; - }, [databars, dh, exportedTable, layoutHints]); + }, [databars, dh, exportedTable, layoutHints, format]); const modelColumns = model?.columns ?? EMPTY_ARRAY; diff --git a/plugins/ui/src/js/src/elements/UITable/UITableModel.ts b/plugins/ui/src/js/src/elements/UITable/UITableModel.ts index 1c5e2af5b..96d186770 100644 --- a/plugins/ui/src/js/src/elements/UITable/UITableModel.ts +++ b/plugins/ui/src/js/src/elements/UITable/UITableModel.ts @@ -3,24 +3,28 @@ import { DataBarOptions, CellRenderType, ModelIndex, + GridColor, + NullableGridColor, } from '@deephaven/grid'; import { ColumnName, IrisGridModel, IrisGridModelFactory, + type IrisGridThemeType, isIrisGridTableModelTemplate, UIRow, } from '@deephaven/iris-grid'; import { TableUtils } from '@deephaven/jsapi-utils'; import { type dh as DhType } from '@deephaven/jsapi-types'; -import { ColorGradient, DatabarConfig } from './UITableUtils'; +import { ColorGradient, DatabarConfig, FormattingRule } from './UITableUtils'; import JsTableProxy, { UITableLayoutHints } from './JsTableProxy'; export async function makeUiTableModel( dh: typeof DhType, table: DhType.Table, databars: DatabarConfig[], - layoutHints: UITableLayoutHints + layoutHints: UITableLayoutHints, + format: FormattingRule[] ): Promise { const joinColumns: string[] = []; const totalsOperationMap: Record = {}; @@ -56,6 +60,16 @@ export async function makeUiTableModel( let baseTable = table; + const customColumns: string[] = []; + format.forEach((rule, i) => { + const { where } = rule; + if (where != null) { + customColumns.push(`_${i}__FORMAT=${where}`); + } + }); + + baseTable.applyCustomColumns(customColumns); + if (joinColumns.length > 0) { const totalsTable = await table.getTotalsTable({ operationMap: totalsOperationMap, @@ -80,6 +94,7 @@ export async function makeUiTableModel( model: baseModel, table: uiTableProxy, databars, + format, }); } @@ -105,16 +120,20 @@ class UITableModel extends IrisGridModel { private databarColorMap: Map = new Map(); + private format: FormattingRule[]; + constructor({ dh, model, table, databars, + format, }: { dh: typeof DhType; model: IrisGridModel; table: DhType.Table; databars: DatabarConfig[]; + format: FormattingRule[]; }) { super(dh); @@ -126,6 +145,8 @@ class UITableModel extends IrisGridModel { this.databars.set(databar.column, databar); }); + this.format = format; + // eslint-disable-next-line no-constructor-return return new Proxy(this, { // We want to use any properties on the proxy model if defined @@ -330,6 +351,105 @@ class UITableModel extends IrisGridModel { value, }; } + + override colorForCell( + column: ModelIndex, + row: ModelIndex, + theme: IrisGridThemeType + ): GridColor { + if (!isIrisGridTableModelTemplate(this.model)) { + return this.model.colorForCell(column, row, theme); + } + const columnName = this.columns[column].name; + for (let i = 0; i < this.format.length; i += 1) { + const rule = this.format[i]; + const { cols, where, color } = rule; + if (color == null) { + continue; + } + if (cols == null || cols.includes(columnName)) { + if (where == null) { + return color; + } + const rowValues = this.model.row(row)?.data; + if (rowValues == null) { + return this.model.colorForCell(column, row, theme); + } + const whereValue = rowValues.get(`_${i}__FORMAT`)?.value; + if (whereValue === true) { + return color; + } + } + } + return this.model.colorForCell(column, row, theme); + } + + override textAlignForCell( + column: ModelIndex, + row: ModelIndex + ): CanvasTextAlign { + if (!isIrisGridTableModelTemplate(this.model)) { + return this.model.textAlignForCell(column, row); + } + const columnName = this.columns[column].name; + for (let i = 0; i < this.format.length; i += 1) { + const rule = this.format[i]; + const { cols, where, alignment } = rule; + if (alignment == null) { + continue; + } + if (cols == null || cols.includes(columnName)) { + if (where == null) { + return alignment; + } + const rowValues = this.model.row(row)?.data; + if (rowValues == null) { + return this.model.textAlignForCell(column); + } + const whereValue = rowValues.get(`_${i}__FORMAT`)?.value; + if (whereValue === true) { + return alignment; + } + } + } + return this.model.textAlignForCell(column); + } + + override backgroundColorForCell( + column: ModelIndex, + row: ModelIndex, + theme: IrisGridThemeType + ): NullableGridColor { + if (!isIrisGridTableModelTemplate(this.model)) { + return this.model.backgroundColorForCell(column, row, theme); + } + const columnName = this.columns[column].name; + for (let i = 0; i < this.format.length; i += 1) { + const rule = this.format[i]; + const { cols, where, background_color: backgroundColor } = rule; + if (backgroundColor == null) { + continue; + } + if (cols == null || cols.includes(columnName)) { + if (where == null) { + return backgroundColor; + } + const rowValues = this.model.row(row)?.data; + if (rowValues == null) { + return this.model.backgroundColorForCell(column, row, theme); + } + const whereValue = rowValues.get(`_${i}__FORMAT`)?.value; + if (whereValue === true) { + return backgroundColor; + } + } + } + return this.model.backgroundColorForCell(column, row, theme); + } + + override textForCell(column: ModelIndex, row: ModelIndex): string { + return this.model.textForCell(column, row); + } } export default UITableModel; diff --git a/plugins/ui/src/js/src/elements/UITable/UITableUtils.tsx b/plugins/ui/src/js/src/elements/UITable/UITableUtils.tsx index 876726a6b..57a44c14f 100644 --- a/plugins/ui/src/js/src/elements/UITable/UITableUtils.tsx +++ b/plugins/ui/src/js/src/elements/UITable/UITableUtils.tsx @@ -37,8 +37,19 @@ export type DatabarConfig = { markers?: { value: number | string; color?: string }[]; }; +export type FormattingRule = { + cols?: ColumnName | ColumnName[]; + where?: string; + color?: string; + background_color?: string; + alignment?: 'left' | 'center' | 'right'; + value?: string; + mode?: DatabarConfig; +}; + export type UITableProps = { table: dh.WidgetExportedObject; + formatting?: FormattingRule[]; onCellPress?: (data: CellData) => void; onCellDoublePress?: (data: CellData) => void; onRowPress?: (rowData: RowDataMap) => void; From 974187abc6d6aff917252348960c5058e27c9106 Mon Sep 17 00:00:00 2001 From: Matthew Runyon Date: Mon, 21 Oct 2024 18:17:25 -0500 Subject: [PATCH 02/20] Refactor and support value formatting --- package-lock.json | 14 ++ plugins/ui/src/js/package.json | 1 + .../js/src/elements/UITable/UITableModel.ts | 130 +++++++++--------- 3 files changed, 82 insertions(+), 63 deletions(-) diff --git a/package-lock.json b/package-lock.json index 322705379..43dda2e20 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11351,6 +11351,12 @@ "@types/unist": "^2" } }, + "node_modules/@types/memoizee": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/@types/memoizee/-/memoizee-0.4.11.tgz", + "integrity": "sha512-2gyorIBZu8GoDr9pYjROkxWWcFtHCquF7TVbN2I+/OvgZhnIGQS0vX5KJz4lXNKb8XOSfxFOSG5OLru1ESqLUg==", + "dev": true + }, "node_modules/@types/minimatch": { "version": "3.0.5", "dev": true, @@ -32209,6 +32215,7 @@ "react-redux": "^7.x" }, "devDependencies": { + "@types/memoizee": "^0.4.5", "@types/react": "^17.0.2", "react": "^17.0.2", "react-dom": "^17.0.2", @@ -35843,6 +35850,7 @@ "@deephaven/utils": "^0.95.0", "@fortawesome/react-fontawesome": "^0.2.0", "@internationalized/date": "^3.5.5", + "@types/memoizee": "^0.4.5", "@types/react": "^17.0.2", "classnames": "^2.5.1", "json-rpc-2.0": "^1.6.0", @@ -41736,6 +41744,12 @@ "@types/unist": "^2" } }, + "@types/memoizee": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/@types/memoizee/-/memoizee-0.4.11.tgz", + "integrity": "sha512-2gyorIBZu8GoDr9pYjROkxWWcFtHCquF7TVbN2I+/OvgZhnIGQS0vX5KJz4lXNKb8XOSfxFOSG5OLru1ESqLUg==", + "dev": true + }, "@types/minimatch": { "version": "3.0.5", "dev": true diff --git a/plugins/ui/src/js/package.json b/plugins/ui/src/js/package.json index b6983ac88..fc0cb8581 100644 --- a/plugins/ui/src/js/package.json +++ b/plugins/ui/src/js/package.json @@ -29,6 +29,7 @@ "update-dh-packages": "node ../../../../tools/update-dh-packages.mjs" }, "devDependencies": { + "@types/memoizee": "^0.4.5", "@types/react": "^17.0.2", "react": "^17.0.2", "react-dom": "^17.0.2", diff --git a/plugins/ui/src/js/src/elements/UITable/UITableModel.ts b/plugins/ui/src/js/src/elements/UITable/UITableModel.ts index 96d186770..630704199 100644 --- a/plugins/ui/src/js/src/elements/UITable/UITableModel.ts +++ b/plugins/ui/src/js/src/elements/UITable/UITableModel.ts @@ -5,6 +5,8 @@ import { ModelIndex, GridColor, NullableGridColor, + memoizeClear, + GridRenderer, } from '@deephaven/grid'; import { ColumnName, @@ -352,35 +354,83 @@ class UITableModel extends IrisGridModel { }; } - override colorForCell( + getFormatOptionForCell( column: ModelIndex, row: ModelIndex, - theme: IrisGridThemeType - ): GridColor { + formatKey: K + ): FormattingRule[K] | undefined { if (!isIrisGridTableModelTemplate(this.model)) { - return this.model.colorForCell(column, row, theme); + return undefined; } const columnName = this.columns[column].name; for (let i = 0; i < this.format.length; i += 1) { const rule = this.format[i]; - const { cols, where, color } = rule; - if (color == null) { + const { cols, where, [formatKey]: formatValue } = rule; + if (formatValue == null) { + // eslint-disable-next-line no-continue continue; } if (cols == null || cols.includes(columnName)) { if (where == null) { - return color; + return formatValue; } const rowValues = this.model.row(row)?.data; if (rowValues == null) { - return this.model.colorForCell(column, row, theme); + return undefined; } const whereValue = rowValues.get(`_${i}__FORMAT`)?.value; if (whereValue === true) { - return color; + return formatValue; } } } + return undefined; + } + + getCachedFormatForCell = memoizeClear( + ( + format: DhType.Format | undefined, + formatString: string | null | undefined + ): DhType.Format | undefined => ({ + ...format, + formatString, + }), + { max: 10000 } + ); + + override formatForCell( + column: ModelIndex, + row: ModelIndex + ): DhType.Format | undefined { + const format = this.model.formatForCell(column, row); + return this.getCachedFormatForCell( + format, + this.getFormatOptionForCell(column, row, 'value') ?? format?.formatString + ); + } + + override colorForCell( + column: ModelIndex, + row: ModelIndex, + theme: IrisGridThemeType + ): GridColor { + const color = this.getFormatOptionForCell(column, row, 'color'); + if (color != null) { + return color; + } + + const backgroundColor = this.getFormatOptionForCell( + column, + row, + 'background_color' + ); + + if (backgroundColor != null) { + const isDarkBackground = + GridRenderer.getCachedColorIsDark(backgroundColor); + return isDarkBackground ? theme.white : theme.black; + } + return this.model.colorForCell(column, row, theme); } @@ -388,31 +438,10 @@ class UITableModel extends IrisGridModel { column: ModelIndex, row: ModelIndex ): CanvasTextAlign { - if (!isIrisGridTableModelTemplate(this.model)) { - return this.model.textAlignForCell(column, row); - } - const columnName = this.columns[column].name; - for (let i = 0; i < this.format.length; i += 1) { - const rule = this.format[i]; - const { cols, where, alignment } = rule; - if (alignment == null) { - continue; - } - if (cols == null || cols.includes(columnName)) { - if (where == null) { - return alignment; - } - const rowValues = this.model.row(row)?.data; - if (rowValues == null) { - return this.model.textAlignForCell(column); - } - const whereValue = rowValues.get(`_${i}__FORMAT`)?.value; - if (whereValue === true) { - return alignment; - } - } - } - return this.model.textAlignForCell(column); + return ( + this.getFormatOptionForCell(column, row, 'alignment') ?? + this.model.textAlignForCell(column, row) + ); } override backgroundColorForCell( @@ -420,35 +449,10 @@ class UITableModel extends IrisGridModel { row: ModelIndex, theme: IrisGridThemeType ): NullableGridColor { - if (!isIrisGridTableModelTemplate(this.model)) { - return this.model.backgroundColorForCell(column, row, theme); - } - const columnName = this.columns[column].name; - for (let i = 0; i < this.format.length; i += 1) { - const rule = this.format[i]; - const { cols, where, background_color: backgroundColor } = rule; - if (backgroundColor == null) { - continue; - } - if (cols == null || cols.includes(columnName)) { - if (where == null) { - return backgroundColor; - } - const rowValues = this.model.row(row)?.data; - if (rowValues == null) { - return this.model.backgroundColorForCell(column, row, theme); - } - const whereValue = rowValues.get(`_${i}__FORMAT`)?.value; - if (whereValue === true) { - return backgroundColor; - } - } - } - return this.model.backgroundColorForCell(column, row, theme); - } - - override textForCell(column: ModelIndex, row: ModelIndex): string { - return this.model.textForCell(column, row); + return ( + this.getFormatOptionForCell(column, row, 'background_color') ?? + this.model.backgroundColorForCell(column, row, theme) + ); } } From eeb12de05021c0f95d35c67ed7aa171d9e9725fd Mon Sep 17 00:00:00 2001 From: Matthew Runyon Date: Tue, 22 Oct 2024 00:18:28 -0500 Subject: [PATCH 03/20] Support theme colors, wildcards, and regex --- .../src/js/src/elements/UITable/UITable.tsx | 22 ++++-- .../js/src/elements/UITable/UITableModel.ts | 69 +++++++++++++++---- 2 files changed, 70 insertions(+), 21 deletions(-) diff --git a/plugins/ui/src/js/src/elements/UITable/UITable.tsx b/plugins/ui/src/js/src/elements/UITable/UITable.tsx index 3be8a1f97..88642810b 100644 --- a/plugins/ui/src/js/src/elements/UITable/UITable.tsx +++ b/plugins/ui/src/js/src/elements/UITable/UITable.tsx @@ -95,7 +95,7 @@ export function UITable({ const [format] = useState(formatting ?? []); const [databars] = useState(databarsProp ?? []); - const databarColorMap = useMemo(() => { + const colorMap = useMemo(() => { log.debug('Theme changed, updating databar color map', theme); const colorSet = new Set(); databars?.forEach(databar => { @@ -121,21 +121,31 @@ export function UITable({ }); }); + format.forEach(rule => { + const { color, background_color: backgroundColor } = rule; + if (color != null) { + colorSet.add(color); + } + if (backgroundColor != null) { + colorSet.add(backgroundColor); + } + }); + const colorRecord: Record = {}; colorSet.forEach(c => { colorRecord[c] = colorValueStyle(c); }); const resolvedColors = resolveCssVariablesInRecord(colorRecord); - const colorMap = new Map(); + const newColorMap = new Map(); Object.entries(resolvedColors).forEach(([key, value]) => { - colorMap.set(key, value); + newColorMap.set(key, value); }); - return colorMap; - }, [databars, theme]); + return newColorMap; + }, [databars, format, theme]); if (model) { - model.setDatabarColorMap(databarColorMap); + model.setColorMap(colorMap); } const hydratedSorts = useMemo(() => { diff --git a/plugins/ui/src/js/src/elements/UITable/UITableModel.ts b/plugins/ui/src/js/src/elements/UITable/UITableModel.ts index 630704199..5848f693d 100644 --- a/plugins/ui/src/js/src/elements/UITable/UITableModel.ts +++ b/plugins/ui/src/js/src/elements/UITable/UITableModel.ts @@ -16,6 +16,7 @@ import { isIrisGridTableModelTemplate, UIRow, } from '@deephaven/iris-grid'; +import { ensureArray } from '@deephaven/utils'; import { TableUtils } from '@deephaven/jsapi-utils'; import { type dh as DhType } from '@deephaven/jsapi-types'; import { ColorGradient, DatabarConfig, FormattingRule } from './UITableUtils'; @@ -120,7 +121,7 @@ class UITableModel extends IrisGridModel { private databars: Map; - private databarColorMap: Map = new Map(); + private colorMap: Map = new Map(); private format: FormattingRule[]; @@ -192,8 +193,8 @@ class UITableModel extends IrisGridModel { }); } - setDatabarColorMap(colorMap: Map): void { - this.databarColorMap = colorMap; + setColorMap(colorMap: Map): void { + this.colorMap = colorMap; } // eslint-disable-next-line class-methods-use-this @@ -308,7 +309,7 @@ class UITableModel extends IrisGridModel { typeof markerValue === 'string' ? this.getDatabarValueFromRow(row, markerValue, 'marker') : markerValue, - color: this.databarColorMap.get(markerColor) ?? markerColor, + color: this.colorMap.get(markerColor) ?? markerColor, }; }); @@ -327,18 +328,18 @@ class UITableModel extends IrisGridModel { if (Array.isArray(positiveColor)) { positiveColor = positiveColor.map( - color => this.databarColorMap.get(color) ?? color + color => this.colorMap.get(color) ?? color ); } else { - positiveColor = this.databarColorMap.get(positiveColor) ?? positiveColor; + positiveColor = this.colorMap.get(positiveColor) ?? positiveColor; } if (Array.isArray(negativeColor)) { negativeColor = negativeColor.map( - color => this.databarColorMap.get(color) ?? color + color => this.colorMap.get(color) ?? color ); } else { - negativeColor = this.databarColorMap.get(negativeColor) ?? negativeColor; + negativeColor = this.colorMap.get(negativeColor) ?? negativeColor; } return { @@ -354,6 +355,34 @@ class UITableModel extends IrisGridModel { }; } + /** + * Escape a string and convert it to a case-insensitive regex. + * Memoizes the regex compilation for performance. + * @param pattern The regex pattern + * @returns The regex + */ + asRegex = memoizeClear( + (pattern: string): RegExp => new RegExp(pattern, 'i'), + { + max: 10000, + } + ); + + formatColumnMatch = memoizeClear( + (columns: string[], column: string): boolean => + columns.some(c => { + if (c.startsWith('/') && c.endsWith('/')) { + const regex = this.asRegex(c.slice(1, -1)); + return regex.test(column); + } + + // Replace wildcard with regex to match 1+ characters + // Pad with ^ and $ to match the whole string + return this.asRegex(`^${c.replace('*', '.+')}$`).test(column); + }), + { primitive: true, max: 10000 } + ); + getFormatOptionForCell( column: ModelIndex, row: ModelIndex, @@ -370,7 +399,10 @@ class UITableModel extends IrisGridModel { // eslint-disable-next-line no-continue continue; } - if (cols == null || cols.includes(columnName)) { + if ( + cols == null || + this.formatColumnMatch(ensureArray(cols), columnName) + ) { if (where == null) { return formatValue; } @@ -415,8 +447,9 @@ class UITableModel extends IrisGridModel { theme: IrisGridThemeType ): GridColor { const color = this.getFormatOptionForCell(column, row, 'color'); + const { colorMap } = this; if (color != null) { - return color; + return colorMap.get(color) ?? color; } const backgroundColor = this.getFormatOptionForCell( @@ -426,8 +459,9 @@ class UITableModel extends IrisGridModel { ); if (backgroundColor != null) { - const isDarkBackground = - GridRenderer.getCachedColorIsDark(backgroundColor); + const isDarkBackground = GridRenderer.getCachedColorIsDark( + colorMap.get(backgroundColor) ?? backgroundColor + ); return isDarkBackground ? theme.white : theme.black; } @@ -449,10 +483,15 @@ class UITableModel extends IrisGridModel { row: ModelIndex, theme: IrisGridThemeType ): NullableGridColor { - return ( - this.getFormatOptionForCell(column, row, 'background_color') ?? - this.model.backgroundColorForCell(column, row, theme) + const backgroundColor = this.getFormatOptionForCell( + column, + row, + 'background_color' ); + if (backgroundColor != null) { + return this.colorMap.get(backgroundColor) ?? backgroundColor; + } + return this.model.backgroundColorForCell(column, row, theme); } } From 34f95e09169172d64720848c8ac144f01f997241 Mon Sep 17 00:00:00 2001 From: Matthew Runyon Date: Tue, 22 Oct 2024 15:58:23 -0500 Subject: [PATCH 04/20] Remove regex and wildcard matching --- .../js/src/elements/UITable/UITableModel.ts | 24 +------------------ 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/plugins/ui/src/js/src/elements/UITable/UITableModel.ts b/plugins/ui/src/js/src/elements/UITable/UITableModel.ts index 5848f693d..0c168c77d 100644 --- a/plugins/ui/src/js/src/elements/UITable/UITableModel.ts +++ b/plugins/ui/src/js/src/elements/UITable/UITableModel.ts @@ -355,31 +355,9 @@ class UITableModel extends IrisGridModel { }; } - /** - * Escape a string and convert it to a case-insensitive regex. - * Memoizes the regex compilation for performance. - * @param pattern The regex pattern - * @returns The regex - */ - asRegex = memoizeClear( - (pattern: string): RegExp => new RegExp(pattern, 'i'), - { - max: 10000, - } - ); - formatColumnMatch = memoizeClear( (columns: string[], column: string): boolean => - columns.some(c => { - if (c.startsWith('/') && c.endsWith('/')) { - const regex = this.asRegex(c.slice(1, -1)); - return regex.test(column); - } - - // Replace wildcard with regex to match 1+ characters - // Pad with ^ and $ to match the whole string - return this.asRegex(`^${c.replace('*', '.+')}$`).test(column); - }), + columns.some(c => c === column), { primitive: true, max: 10000 } ); From 7301b7f04cec66a3ed0467ce07d6c78523911305 Mon Sep 17 00:00:00 2001 From: Matthew Runyon Date: Tue, 22 Oct 2024 16:03:20 -0500 Subject: [PATCH 05/20] Add comments --- .../ui/src/deephaven/ui/components/__init__.py | 3 ++- .../src/js/src/elements/UITable/UITableModel.ts | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/plugins/ui/src/deephaven/ui/components/__init__.py b/plugins/ui/src/deephaven/ui/components/__init__.py index b98e75e25..60e7ff751 100644 --- a/plugins/ui/src/deephaven/ui/components/__init__.py +++ b/plugins/ui/src/deephaven/ui/components/__init__.py @@ -47,7 +47,7 @@ from .tab_list import tab_list from .tab_panels import tab_panels from .tab import tab -from .table import table, TableFormat +from .table import table, TableDatabar, TableFormat from .tabs import tabs from .text import text from .text_area import text_area @@ -106,6 +106,7 @@ "stack", "switch", "table", + "TableDatabar", "TableFormat", "tab_list", "tab_panels", diff --git a/plugins/ui/src/js/src/elements/UITable/UITableModel.ts b/plugins/ui/src/js/src/elements/UITable/UITableModel.ts index 0c168c77d..a7f2f8732 100644 --- a/plugins/ui/src/js/src/elements/UITable/UITableModel.ts +++ b/plugins/ui/src/js/src/elements/UITable/UITableModel.ts @@ -121,6 +121,9 @@ class UITableModel extends IrisGridModel { private databars: Map; + /** + * Map of theme color keys to hex color values + */ private colorMap: Map = new Map(); private format: FormattingRule[]; @@ -361,6 +364,17 @@ class UITableModel extends IrisGridModel { { primitive: true, max: 10000 } ); + /** + * Gets the first matching format option for a cell. + * Checks if there is a column match and if there is a where clause match if needed. + * If there is no value for the key that matches in any rule, returns undefined. + * Stops on first match. + * + * @param column The model column index + * @param row The model row index + * @param formatKey The key to get the format option for + * @returns The format option if set or undefined + */ getFormatOptionForCell( column: ModelIndex, row: ModelIndex, @@ -426,10 +440,13 @@ class UITableModel extends IrisGridModel { ): GridColor { const color = this.getFormatOptionForCell(column, row, 'color'); const { colorMap } = this; + + // If a color is explicitly set, use it if (color != null) { return colorMap.get(color) ?? color; } + // If there is a background color, use white or black depending on the background color const backgroundColor = this.getFormatOptionForCell( column, row, From b6ce3ac2bf7dde966366df5e2cd43b82702cbe59 Mon Sep 17 00:00:00 2001 From: Matthew Runyon Date: Tue, 22 Oct 2024 16:14:17 -0500 Subject: [PATCH 06/20] Remove unused import --- plugins/ui/src/deephaven/ui/renderer/Renderer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/ui/src/deephaven/ui/renderer/Renderer.py b/plugins/ui/src/deephaven/ui/renderer/Renderer.py index bc5a6d458..0717b524e 100644 --- a/plugins/ui/src/deephaven/ui/renderer/Renderer.py +++ b/plugins/ui/src/deephaven/ui/renderer/Renderer.py @@ -3,7 +3,7 @@ import logging from typing import Any, Union -from .._internal import RenderContext, dict_to_camel_case +from .._internal import RenderContext from ..elements import Element, PropsType from .RenderedNode import RenderedNode From 4a9fe7af2529590557caf956612a20cd6bbd3a47 Mon Sep 17 00:00:00 2001 From: Matthew Runyon Date: Wed, 23 Oct 2024 15:17:39 -0500 Subject: [PATCH 07/20] Remove kw_only --- plugins/ui/src/deephaven/ui/components/table.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/ui/src/deephaven/ui/components/table.py b/plugins/ui/src/deephaven/ui/components/table.py index 512d687a9..bd886fa0f 100644 --- a/plugins/ui/src/deephaven/ui/components/table.py +++ b/plugins/ui/src/deephaven/ui/components/table.py @@ -18,7 +18,7 @@ logger = logging.getLogger(__name__) -@dataclass(kw_only=True) +@dataclass() class TableFormat: """ A formatting rule for a table. @@ -44,7 +44,7 @@ class TableFormat: mode: TableDatabar | None = None -@dataclass(kw_only=True) +@dataclass() class TableDatabar: """ A databar configuration for a table. From cf13643264aa79039f0a574e946ccbefc07a5bfc Mon Sep 17 00:00:00 2001 From: Matthew Runyon Date: Wed, 23 Oct 2024 15:58:13 -0500 Subject: [PATCH 08/20] Fix test failures --- .../ui/src/deephaven/ui/components/table.py | 100 +++++++++--------- plugins/ui/test/deephaven/ui/test_ui_table.py | 61 ----------- 2 files changed, 49 insertions(+), 112 deletions(-) diff --git a/plugins/ui/src/deephaven/ui/components/table.py b/plugins/ui/src/deephaven/ui/components/table.py index bd886fa0f..8c8857250 100644 --- a/plugins/ui/src/deephaven/ui/components/table.py +++ b/plugins/ui/src/deephaven/ui/components/table.py @@ -85,6 +85,55 @@ class TableDatabar: class table(Element): + """ + Customization to how a table is displayed, how it behaves, and listen to UI events. + + Args: + table: The table to wrap + formatting: A list of formatting rules for the table. + on_row_press: The callback function to run when a row is clicked. + The callback is invoked with the visible row data provided in a dictionary where the + column names are the keys. + on_row_double_press: The callback function to run when a row is double clicked. + The callback is invoked with the visible row data provided in a dictionary where the + column names are the keys. + on_cell_press: The callback function to run when a cell is clicked. + The callback is invoked with the cell data. + on_cell_double_press: The callback function to run when a cell is double clicked. + The callback is invoked with the cell data. + on_column_press: The callback function to run when a column is clicked. + The callback is invoked with the column name. + on_column_double_press: The callback function to run when a column is double clicked. + The callback is invoked with the column name. + always_fetch_columns: The columns to always fetch from the server regardless of if they are in the viewport. + If True, all columns will always be fetched. This may make tables with many columns slow. + quick_filters: The quick filters to apply to the table. Dictionary of column name to filter value. + show_quick_filters: Whether to show the quick filter bar by default. + show_grouping_column: Whether to show the grouping column by default for rollup tables. + show_search: Whether to show the search bar by default. + reverse: Whether to reverse the table rows. Applied after any sorts. + front_columns: The columns to pin to the front of the table. These will not be movable by the user. + back_columns: The columns to pin to the back of the table. These will not be movable by the user. + frozen_columns: The columns to freeze by default at the front of the table. + These will always be visible regardless of horizontal scrolling. + The user may unfreeze columns or freeze additional columns. + hidden_columns: The columns to hide by default. Users may show the columns by expanding them. + column_groups: Columns to group together by default. The groups will be shown in the table header. + Group names must be unique within the column and group names. + Groups may be nested by providing the group name as a child of another group. + density: The density of the data displayed in the table. + One of "compact", "regular", or "spacious". + If not provided, the app default will be used. + context_menu: The context menu items to show when a cell is right clicked. + May contain action items or submenu items. + May also be a function that receives the cell data and returns the context menu items or None. + context_header_menu: The context menu items to show when a column header is right clicked. + May contain action items or submenu items. + May also be a function that receives the column header data and returns the context menu items or None. + databars: Databars are experimental and will be moved to column_formatting in the future. + key: A unique identifier used by React to render elements in a list. + """ + _props: dict[str, Any] """ The props that are passed to the frontend @@ -122,57 +171,6 @@ def __init__( databars: list[TableDatabar] | None = None, key: str | None = None, ): - """ - Customization to how a table is displayed, how it behaves, and listen to UI events. - - Args: - table: The table to wrap - on_row_press: The callback function to run when a row is clicked. - The callback is invoked with the visible row data provided in a dictionary where the - column names are the keys. - on_row_double_press: The callback function to run when a row is double clicked. - The callback is invoked with the visible row data provided in a dictionary where the - column names are the keys. - on_cell_press: The callback function to run when a cell is clicked. - The callback is invoked with the cell data. - on_cell_double_press: The callback function to run when a cell is double clicked. - The callback is invoked with the cell data. - on_column_press: The callback function to run when a column is clicked. - The callback is invoked with the column name. - on_column_double_press: The callback function to run when a column is double clicked. - The callback is invoked with the column name. - always_fetch_columns: The columns to always fetch from the server regardless of if they are in the viewport. - If True, all columns will always be fetched. This may make tables with many columns slow. - quick_filters: The quick filters to apply to the table. Dictionary of column name to filter value. - show_quick_filters: Whether to show the quick filter bar by default. - show_grouping_column: Whether to show the grouping column by default for rollup tables. - show_search: Whether to show the search bar by default. - reverse: Whether to reverse the table rows. Applied after any sorts. - front_columns: The columns to pin to the front of the table. These will not be movable by the user. - back_columns: The columns to pin to the back of the table. These will not be movable by the user. - frozen_columns: The columns to freeze by default at the front of the table. - These will always be visible regardless of horizontal scrolling. - The user may unfreeze columns or freeze additional columns. - hidden_columns: The columns to hide by default. Users may show the columns by expanding them. - column_groups: Columns to group together by default. The groups will be shown in the table header. - Group names must be unique within the column and group names. - Groups may be nested by providing the group name as a child of another group. - density: The density of the data displayed in the table. - One of "compact", "regular", or "spacious". - If not provided, the app default will be used. - context_menu: The context menu items to show when a cell is right clicked. - May contain action items or submenu items. - May also be a function that receives the cell data and returns the context menu items or None. - context_header_menu: The context menu items to show when a column header is right clicked. - May contain action items or submenu items. - May also be a function that receives the column header data and returns the context menu items or None. - databars: Databars are experimental and will be moved to column_formatting in the future. - key: A unique identifier used by React to render elements in a list. - - Returns: - The rendered Table. - """ - props = locals() del props["self"] self._props = props diff --git a/plugins/ui/test/deephaven/ui/test_ui_table.py b/plugins/ui/test/deephaven/ui/test_ui_table.py index f744c72a6..d858b5acf 100644 --- a/plugins/ui/test/deephaven/ui/test_ui_table.py +++ b/plugins/ui/test/deephaven/ui/test_ui_table.py @@ -158,67 +158,6 @@ def test_show_search(self): }, ) - def test_sort(self): - import deephaven.ui as ui - from deephaven import SortDirection - - ui_table = ui.table(self.source) - - t = ui_table.sort("X") - self.expect_render( - t, - { - "sorts": [{"column": "X", "direction": "ASC", "is_abs": False}], - }, - ) - - t = ui_table.sort("X", SortDirection.DESCENDING) - self.expect_render( - t, - { - "sorts": [{"column": "X", "direction": "DESC", "is_abs": False}], - }, - ) - - self.assertRaises( - ValueError, ui_table.sort, ["X", "Y"], [SortDirection.ASCENDING] - ) - - self.assertRaises( - ValueError, - ui_table.sort, - ["X"], - [SortDirection.ASCENDING, SortDirection.DESCENDING], - ) - - t = ui_table.sort( - ["X", "Y"], [SortDirection.ASCENDING, SortDirection.DESCENDING] - ) - - self.expect_render( - t, - { - "sorts": [ - {"column": "X", "direction": "ASC", "is_abs": False}, - {"column": "Y", "direction": "DESC", "is_abs": False}, - ], - }, - ) - - t = ui_table.sort(["X", "Y"], ["DESC", "ASC"]) - - self.expect_render( - t, - { - "sorts": [ - {"column": "X", "direction": "DESC", "is_abs": False}, - {"column": "Y", "direction": "ASC", "is_abs": False}, - ], - }, - ) - - self.assertRaises(ValueError, ui_table.sort, ["X", "Y"], ["INVALID"]) - def test_front_columns(self): import deephaven.ui as ui From 6724d80c2ba5fbd90e9952fc9a576f33e1b14d02 Mon Sep 17 00:00:00 2001 From: Matthew Runyon Date: Thu, 24 Oct 2024 16:23:21 -0500 Subject: [PATCH 09/20] Add docs --- plugins/ui/docs/components/table.md | 57 +++++++++++++++++++ .../ui/src/deephaven/ui/components/table.py | 4 +- 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/plugins/ui/docs/components/table.md b/plugins/ui/docs/components/table.md index 42a298b99..2a99b3473 100644 --- a/plugins/ui/docs/components/table.md +++ b/plugins/ui/docs/components/table.md @@ -17,6 +17,55 @@ t = ui.table(_t) 2. Use a UI table to show properties like filters as if the user had created them in the UI. Users can change the default values provided by the UI table, such as filters. 3. UI tables handle ticking tables automatically, so you can pass any Deephaven table to a UI table. +## Formatting + +You can format the table using the `formatting` prop. This prop takes a list of `ui.TableFormat` objects. `ui.TableFormat` is a dataclass that encapsulates the formatting options for a table. The full list of formatting options can be found in the [API Reference](#tableformat). + +### Formatting Rows and Columns + +Every formatting rule may optionally specify `cols` and `where` properties. The `cols` property is a column name or list of column names to apply the formatting rule to. If `cols` is omitted, then the rule will be applied to the entire row. The `where` property is a Deephaven filter expression to apply the formatting rule to. The `where` property _must_ evaluate to a boolean. If `where` is omitted, then the rule will be applied to every row. These may be combined to apply formatting to specific columns only when a condition is met. + +> [!NOTE] +> The `where` property is a Deephaven query expression evaluated in the engine. You can think of it like adding a new boolean column using [`update_view`](https://deephaven.io/core/docs/reference/table-operations/select/update-view/) + +The following example shows how to format the `Sym` and `Exchange` columns with a red background and white text when the `Sym` is `DOG`. + +```python +from deephaven import ui +import deephaven.plot.express as dx + +t = ui.table( + dx.data.stocks(), + formatting=[ + ui.TableFormat( + cols=["Sym", "Exchange"], + where="Sym = `DOG`", + background_color="red", + color="white", + ) + ], +) +``` + +### Formatting Rule Priority + +Formatting rules are applied in order and stop when a rule is matched for a certain property. This means the highest priority rules should be first in the list with lower priority rules at the end. + +In the following example, the `Sym` column will have a red background with white text, and the rest of the table will have a blue background with white text. + +```python +from deephaven import ui +import deephaven.plot.express as dx + +t = ui.table( + dx.data.stocks(), + formatting=[ + ui.TableFormat(cols="Sym", background_color="red"), + ui.TableFormat(background_color="blue", color="white"), + ], +) +``` + ## Events You can listen for different user events on a `ui.table`. There is both a `press` and `double_press` event for `row`, `cell`, and `column`. These events typically correspond to a click or double click on the table. The event payloads include table data related to the event. For `row` and `column` events, the corresponding data within the viewport will be sent to the event handler. The viewport is typically the visible area ± a window equal to the visible area (e.g., if rows 5-10 are visible, rows 0-15 will be in the viewport). @@ -265,6 +314,14 @@ t = ui.table( ## API Reference +### Table + ```{eval-rst} .. dhautofunction:: deephaven.ui.table ``` + +### TableFormat + +```{eval-rst} +.. dhautofunction:: deephaven.ui.TableFormat +``` diff --git a/plugins/ui/src/deephaven/ui/components/table.py b/plugins/ui/src/deephaven/ui/components/table.py index a30509c47..e75ddcdfa 100644 --- a/plugins/ui/src/deephaven/ui/components/table.py +++ b/plugins/ui/src/deephaven/ui/components/table.py @@ -34,6 +34,8 @@ class TableFormat: E.g. "0.00%" to format as a percentage with two decimal places. mode: The cell rendering mode. Currently only databar is supported as an alternate rendering mode. + Returns: + The TableFormat. """ cols: ColumnName | list[ColumnName] | None = None @@ -243,7 +245,7 @@ def __init__( left: DimensionValue | None = None, right: DimensionValue | None = None, z_index: int | None = None, - ): + ) -> None: props = locals() del props["self"] self._props = props From 277dfd9ce1dbb8c155a0f4c722cd0c1c8972364b Mon Sep 17 00:00:00 2001 From: Matthew Runyon Date: Mon, 28 Oct 2024 14:38:38 -0500 Subject: [PATCH 10/20] Small refactor and reverse rule application order --- plugins/ui/docs/components/table.md | 8 ++++---- .../src/js/src/elements/UITable/UITableModel.ts | 17 ++++++++++++++--- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/plugins/ui/docs/components/table.md b/plugins/ui/docs/components/table.md index 2a99b3473..f073cef56 100644 --- a/plugins/ui/docs/components/table.md +++ b/plugins/ui/docs/components/table.md @@ -23,10 +23,10 @@ You can format the table using the `formatting` prop. This prop takes a list of ### Formatting Rows and Columns -Every formatting rule may optionally specify `cols` and `where` properties. The `cols` property is a column name or list of column names to apply the formatting rule to. If `cols` is omitted, then the rule will be applied to the entire row. The `where` property is a Deephaven filter expression to apply the formatting rule to. The `where` property _must_ evaluate to a boolean. If `where` is omitted, then the rule will be applied to every row. These may be combined to apply formatting to specific columns only when a condition is met. +Every formatting rule may optionally specify `cols` and `where` properties. The `cols` property is a column name or list of column names to apply the formatting rule to. If `cols` is omitted, then the rule will be applied to the entire row. The `where` property is a Deephaven formula to apply the formatting rule to. The `where` property _must_ evaluate to a boolean. If `where` is omitted, then the rule will be applied to every row. These may be combined to apply formatting to specific columns only when a condition is met. > [!NOTE] -> The `where` property is a Deephaven query expression evaluated in the engine. You can think of it like adding a new boolean column using [`update_view`](https://deephaven.io/core/docs/reference/table-operations/select/update-view/) +> The `where` property is a Deephaven formula evaluated in the engine. You can think of it like adding a new boolean column using [`update_view`](https://deephaven.io/core/docs/reference/table-operations/select/update-view/) The following example shows how to format the `Sym` and `Exchange` columns with a red background and white text when the `Sym` is `DOG`. @@ -49,7 +49,7 @@ t = ui.table( ### Formatting Rule Priority -Formatting rules are applied in order and stop when a rule is matched for a certain property. This means the highest priority rules should be first in the list with lower priority rules at the end. +The last matching formatting rule for each property will be applied. This means the lowest priority rules should be first in the list with higher priority rules at the end. In the following example, the `Sym` column will have a red background with white text, and the rest of the table will have a blue background with white text. @@ -60,8 +60,8 @@ import deephaven.plot.express as dx t = ui.table( dx.data.stocks(), formatting=[ - ui.TableFormat(cols="Sym", background_color="red"), ui.TableFormat(background_color="blue", color="white"), + ui.TableFormat(cols="Sym", background_color="red"), ], ) ``` diff --git a/plugins/ui/src/js/src/elements/UITable/UITableModel.ts b/plugins/ui/src/js/src/elements/UITable/UITableModel.ts index a7f2f8732..b3bf3db5c 100644 --- a/plugins/ui/src/js/src/elements/UITable/UITableModel.ts +++ b/plugins/ui/src/js/src/elements/UITable/UITableModel.ts @@ -67,7 +67,7 @@ export async function makeUiTableModel( format.forEach((rule, i) => { const { where } = rule; if (where != null) { - customColumns.push(`_${i}__FORMAT=${where}`); + customColumns.push(`${getFormatCustomColumnName(i)}=${where}`); } }); @@ -101,6 +101,15 @@ export async function makeUiTableModel( }); } +/** + * Gets the name of the custom column that stores the where clause for a formatting rule + * @param i The index of the formatting rule + * @returns The name of the custom column that stores the where clause for the formatting rule + */ +function getFormatCustomColumnName(i: number): string { + return `_${i}__FORMAT`; +} + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore // eslint-disable-next-line @typescript-eslint/no-empty-interface @@ -384,7 +393,9 @@ class UITableModel extends IrisGridModel { return undefined; } const columnName = this.columns[column].name; - for (let i = 0; i < this.format.length; i += 1) { + + // Iterate in reverse so that the last rule that matches is used + for (let i = this.format.length - 1; i >= 0; i -= 1) { const rule = this.format[i]; const { cols, where, [formatKey]: formatValue } = rule; if (formatValue == null) { @@ -402,7 +413,7 @@ class UITableModel extends IrisGridModel { if (rowValues == null) { return undefined; } - const whereValue = rowValues.get(`_${i}__FORMAT`)?.value; + const whereValue = rowValues.get(getFormatCustomColumnName(i))?.value; if (whereValue === true) { return formatValue; } From 2b82923461aaf5fa3b33363b3b2b44ca1e6c8fe5 Mon Sep 17 00:00:00 2001 From: Matthew Runyon Date: Wed, 30 Oct 2024 14:26:09 -0500 Subject: [PATCH 11/20] Add unit tests --- .../ui/src/deephaven/ui/components/table.py | 4 +- .../ui/src/deephaven/ui/renderer/Renderer.py | 7 +- .../src/elements/UITable/UITableModel.test.ts | 214 ++++++++++++++++++ 3 files changed, 218 insertions(+), 7 deletions(-) create mode 100644 plugins/ui/src/js/src/elements/UITable/UITableModel.test.ts diff --git a/plugins/ui/src/deephaven/ui/components/table.py b/plugins/ui/src/deephaven/ui/components/table.py index e75ddcdfa..4e8759e70 100644 --- a/plugins/ui/src/deephaven/ui/components/table.py +++ b/plugins/ui/src/deephaven/ui/components/table.py @@ -93,7 +93,7 @@ class table(Element): Args: table: The table to wrap - formatting: A list of formatting rules for the table. + format: A list of formatting rules for the table. on_row_press: The callback function to run when a row is clicked. The callback is invoked with the visible row data provided in a dictionary where the column names are the keys. @@ -183,7 +183,7 @@ def __init__( self, table: Table, *, - formatting: list[TableFormat] | None = None, + format: list[TableFormat] | None = None, on_row_press: RowPressCallback | None = None, on_row_double_press: RowPressCallback | None = None, on_cell_press: CellPressCallback | None = None, diff --git a/plugins/ui/src/deephaven/ui/renderer/Renderer.py b/plugins/ui/src/deephaven/ui/renderer/Renderer.py index 0717b524e..5f7161adb 100644 --- a/plugins/ui/src/deephaven/ui/renderer/Renderer.py +++ b/plugins/ui/src/deephaven/ui/renderer/Renderer.py @@ -3,7 +3,7 @@ import logging from typing import Any, Union -from .._internal import RenderContext +from .._internal import RenderContext, remove_empty_keys from ..elements import Element, PropsType from .RenderedNode import RenderedNode @@ -33,10 +33,7 @@ def _render_child_item(item: Any, parent_context: RenderContext, index_key: str) # If the item is an instance of a dataclass if is_dataclass(item) and not isinstance(item, type): return _render_dict( - # Convert dataclass to dict and remove None values - dataclass_asdict( - item, dict_factory=lambda x: {k: v for (k, v) in x if v is not None} - ), + remove_empty_keys(dataclass_asdict(item)), parent_context.get_child_context(index_key), ) diff --git a/plugins/ui/src/js/src/elements/UITable/UITableModel.test.ts b/plugins/ui/src/js/src/elements/UITable/UITableModel.test.ts new file mode 100644 index 000000000..8994f57c5 --- /dev/null +++ b/plugins/ui/src/js/src/elements/UITable/UITableModel.test.ts @@ -0,0 +1,214 @@ +import { + IrisGridThemeType, + type IrisGridTableModel, +} from '@deephaven/iris-grid'; +import { GridRenderer } from '@deephaven/grid'; +import { type dh } from '@deephaven/jsapi-types'; +import { TestUtils } from '@deephaven/test-utils'; +import UITableModel from './UITableModel'; + +const MOCK_DH = TestUtils.createMockProxy(); + +const MOCK_BASE_MODEL = TestUtils.createMockProxy({ + columns: [ + { + name: 'column0', + type: 'string', + }, + { + name: 'column1', + type: 'int', + }, + ] as dh.Column[], +}); + +const MOCK_TABLE = TestUtils.createMockProxy(); + +describe('Formatting', () => { + describe('getFormatOptionForCell', () => { + test('applies last rule for an option', () => { + const model = new UITableModel({ + dh: MOCK_DH, + model: MOCK_BASE_MODEL, + table: MOCK_TABLE, + databars: [], + format: [{ color: 'red' }, { color: 'blue' }], + }); + expect(model.getFormatOptionForCell(0, 0, 'color')).toBe('blue'); + expect(model.getFormatOptionForCell(1, 1, 'color')).toBe('blue'); + }); + + test('only applies rules matching the column', () => { + const model = new UITableModel({ + dh: MOCK_DH, + model: MOCK_BASE_MODEL, + table: MOCK_TABLE, + databars: [], + format: [ + { cols: 'column0', color: 'red' }, + { cols: 'column1', color: 'blue' }, + ], + }); + expect(model.getFormatOptionForCell(0, 0, 'color')).toBe('red'); + expect(model.getFormatOptionForCell(1, 1, 'color')).toBe('blue'); + }); + + test('only applies rules matching the condition', () => { + (MOCK_BASE_MODEL.row as jest.Mock).mockImplementation(r => ({ + data: { + get: () => ({ + value: r % 2 === 0, // Even rows are true + }), + }, + })); + + const model = new UITableModel({ + dh: MOCK_DH, + model: MOCK_BASE_MODEL, + table: MOCK_TABLE, + databars: [], + format: [ + { color: 'red', where: 'even' }, + { cols: 'column1', color: 'blue', where: 'even' }, + ], + }); + expect(model.getFormatOptionForCell(0, 0, 'color')).toBe('red'); + expect(model.getFormatOptionForCell(0, 1, 'color')).toBeUndefined(); + expect(model.getFormatOptionForCell(1, 0, 'color')).toBe('blue'); + expect(model.getFormatOptionForCell(1, 1, 'color')).toBeUndefined(); + (MOCK_BASE_MODEL.row as jest.Mock).mockClear(); + }); + + test('returns undefined if no matching rule', () => { + const model = new UITableModel({ + dh: MOCK_DH, + model: MOCK_BASE_MODEL, + table: MOCK_TABLE, + databars: [], + format: [{ cols: 'column0', color: 'red' }], + }); + expect(model.getFormatOptionForCell(1, 1, 'color')).toBeUndefined(); + expect( + model.getFormatOptionForCell(1, 1, 'background_color') + ).toBeUndefined(); + }); + + test('returns undefined if condition data has not been fetched', () => { + (MOCK_BASE_MODEL.row as jest.Mock).mockImplementation(r => ({ + data: null, + })); + + const model = new UITableModel({ + dh: MOCK_DH, + model: MOCK_BASE_MODEL, + table: MOCK_TABLE, + databars: [], + format: [{ color: 'red', where: 'even' }], + }); + expect(model.getFormatOptionForCell(0, 0, 'color')).toBeUndefined(); + expect(model.getFormatOptionForCell(0, 1, 'color')).toBeUndefined(); + (MOCK_BASE_MODEL.row as jest.Mock).mockClear(); + }); + }); + + describe('colorForCell', () => { + test('returns the color for a cell', () => { + const model = new UITableModel({ + dh: MOCK_DH, + model: MOCK_BASE_MODEL, + table: MOCK_TABLE, + databars: [], + format: [{ color: 'red' }], + }); + expect(model.colorForCell(0, 0, {} as IrisGridThemeType)).toBe('red'); + }); + + test('returns undefined if no color for a cell', () => { + const model = new UITableModel({ + dh: MOCK_DH, + model: MOCK_BASE_MODEL, + table: MOCK_TABLE, + databars: [], + format: [], + }); + expect(model.colorForCell(0, 0, {} as IrisGridThemeType)).toBeUndefined(); + expect(MOCK_BASE_MODEL.colorForCell).toHaveBeenCalledTimes(1); + }); + + test('returns grid theme white if no color and background color dark', () => { + jest + .spyOn(GridRenderer, 'getCachedColorIsDark') + .mockImplementation(() => true); + const model = new UITableModel({ + dh: MOCK_DH, + model: MOCK_BASE_MODEL, + table: MOCK_TABLE, + databars: [], + format: [{ background_color: 'black' }], + }); + expect( + model.colorForCell(0, 0, { white: 'white' } as IrisGridThemeType) + ).toBe('white'); + jest.restoreAllMocks(); + }); + + test('returns grid theme black if no color and background color light', () => { + jest + .spyOn(GridRenderer, 'getCachedColorIsDark') + .mockImplementation(() => false); + const model = new UITableModel({ + dh: MOCK_DH, + model: MOCK_BASE_MODEL, + table: MOCK_TABLE, + databars: [], + format: [{ background_color: 'white' }], + }); + expect( + model.colorForCell(0, 0, { black: 'black' } as IrisGridThemeType) + ).toBe('black'); + jest.restoreAllMocks(); + }); + + test('returns theme colors from color map', () => { + const model = new UITableModel({ + dh: MOCK_DH, + model: MOCK_BASE_MODEL, + table: MOCK_TABLE, + databars: [], + format: [{ color: 'foo' }], + }); + model.setColorMap(new Map([['foo', 'bar']])); + expect(model.colorForCell(0, 0, {} as IrisGridThemeType)).toBe('bar'); + }); + }); + + describe('backgroundColorForCell', () => { + test('returns undefined if no background_color for a cell', () => { + const model = new UITableModel({ + dh: MOCK_DH, + model: MOCK_BASE_MODEL, + table: MOCK_TABLE, + databars: [], + format: [], + }); + expect( + model.backgroundColorForCell(0, 0, {} as IrisGridThemeType) + ).toBeUndefined(); + expect(MOCK_BASE_MODEL.backgroundColorForCell).toHaveBeenCalledTimes(1); + }); + + test('returns theme colors from color map', () => { + const model = new UITableModel({ + dh: MOCK_DH, + model: MOCK_BASE_MODEL, + table: MOCK_TABLE, + databars: [], + format: [{ background_color: 'foo' }], + }); + model.setColorMap(new Map([['foo', 'bar']])); + expect(model.backgroundColorForCell(0, 0, {} as IrisGridThemeType)).toBe( + 'bar' + ); + }); + }); +}); From f47b271da4d71cf96eb588d951d5e19c949f551f Mon Sep 17 00:00:00 2001 From: Matthew Runyon Date: Wed, 30 Oct 2024 14:55:17 -0500 Subject: [PATCH 12/20] Change where to condition --- plugins/ui/docs/components/table.md | 6 +++--- plugins/ui/src/deephaven/ui/components/table.py | 4 ++-- .../src/js/src/elements/UITable/UITableModel.test.ts | 6 +++--- plugins/ui/src/js/src/elements/UITable/UITableModel.ts | 10 +++++----- .../ui/src/js/src/elements/UITable/UITableUtils.tsx | 2 +- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/plugins/ui/docs/components/table.md b/plugins/ui/docs/components/table.md index f073cef56..196b52938 100644 --- a/plugins/ui/docs/components/table.md +++ b/plugins/ui/docs/components/table.md @@ -23,10 +23,10 @@ You can format the table using the `formatting` prop. This prop takes a list of ### Formatting Rows and Columns -Every formatting rule may optionally specify `cols` and `where` properties. The `cols` property is a column name or list of column names to apply the formatting rule to. If `cols` is omitted, then the rule will be applied to the entire row. The `where` property is a Deephaven formula to apply the formatting rule to. The `where` property _must_ evaluate to a boolean. If `where` is omitted, then the rule will be applied to every row. These may be combined to apply formatting to specific columns only when a condition is met. +Every formatting rule may optionally specify `cols` and `condition` properties. The `cols` property is a column name or list of column names to apply the formatting rule to. If `cols` is omitted, then the rule will be applied to the entire row. The `condition` property is a Deephaven formula to apply the formatting rule to. The `condition` property _must_ evaluate to a boolean. If `condition` is omitted, then the rule will be applied to every row. These may be combined to apply formatting to specific columns only when a condition is met. > [!NOTE] -> The `where` property is a Deephaven formula evaluated in the engine. You can think of it like adding a new boolean column using [`update_view`](https://deephaven.io/core/docs/reference/table-operations/select/update-view/) +> The `condition` property is a Deephaven formula evaluated in the engine. You can think of it like adding a new boolean column using [`update_view`](https://deephaven.io/core/docs/reference/table-operations/select/update-view/) The following example shows how to format the `Sym` and `Exchange` columns with a red background and white text when the `Sym` is `DOG`. @@ -39,7 +39,7 @@ t = ui.table( formatting=[ ui.TableFormat( cols=["Sym", "Exchange"], - where="Sym = `DOG`", + condition="Sym = `DOG`", background_color="red", color="white", ) diff --git a/plugins/ui/src/deephaven/ui/components/table.py b/plugins/ui/src/deephaven/ui/components/table.py index 4e8759e70..70a9179f4 100644 --- a/plugins/ui/src/deephaven/ui/components/table.py +++ b/plugins/ui/src/deephaven/ui/components/table.py @@ -26,7 +26,7 @@ class TableFormat: Args: cols: The columns to format. If None, the format will apply to the entire row. - where: Query string to filter which rows should be formatted. + condition: Deephaven expression to filter which rows should be formatted. Must resolve to a boolean. color: The font color. background_color: The cell background color. alignment: The cell text alignment. @@ -39,7 +39,7 @@ class TableFormat: """ cols: ColumnName | list[ColumnName] | None = None - where: str | None = None + condition: str | None = None color: str | None = None background_color: str | None = None alignment: Literal["left", "center", "right"] | None = None diff --git a/plugins/ui/src/js/src/elements/UITable/UITableModel.test.ts b/plugins/ui/src/js/src/elements/UITable/UITableModel.test.ts index 8994f57c5..1364276fc 100644 --- a/plugins/ui/src/js/src/elements/UITable/UITableModel.test.ts +++ b/plugins/ui/src/js/src/elements/UITable/UITableModel.test.ts @@ -68,8 +68,8 @@ describe('Formatting', () => { table: MOCK_TABLE, databars: [], format: [ - { color: 'red', where: 'even' }, - { cols: 'column1', color: 'blue', where: 'even' }, + { color: 'red', condition: 'even' }, + { cols: 'column1', color: 'blue', condition: 'even' }, ], }); expect(model.getFormatOptionForCell(0, 0, 'color')).toBe('red'); @@ -103,7 +103,7 @@ describe('Formatting', () => { model: MOCK_BASE_MODEL, table: MOCK_TABLE, databars: [], - format: [{ color: 'red', where: 'even' }], + format: [{ color: 'red', condition: 'even' }], }); expect(model.getFormatOptionForCell(0, 0, 'color')).toBeUndefined(); expect(model.getFormatOptionForCell(0, 1, 'color')).toBeUndefined(); diff --git a/plugins/ui/src/js/src/elements/UITable/UITableModel.ts b/plugins/ui/src/js/src/elements/UITable/UITableModel.ts index b3bf3db5c..43b494668 100644 --- a/plugins/ui/src/js/src/elements/UITable/UITableModel.ts +++ b/plugins/ui/src/js/src/elements/UITable/UITableModel.ts @@ -65,9 +65,9 @@ export async function makeUiTableModel( const customColumns: string[] = []; format.forEach((rule, i) => { - const { where } = rule; - if (where != null) { - customColumns.push(`${getFormatCustomColumnName(i)}=${where}`); + const { condition } = rule; + if (condition != null) { + customColumns.push(`${getFormatCustomColumnName(i)}=${condition}`); } }); @@ -397,7 +397,7 @@ class UITableModel extends IrisGridModel { // Iterate in reverse so that the last rule that matches is used for (let i = this.format.length - 1; i >= 0; i -= 1) { const rule = this.format[i]; - const { cols, where, [formatKey]: formatValue } = rule; + const { cols, condition, [formatKey]: formatValue } = rule; if (formatValue == null) { // eslint-disable-next-line no-continue continue; @@ -406,7 +406,7 @@ class UITableModel extends IrisGridModel { cols == null || this.formatColumnMatch(ensureArray(cols), columnName) ) { - if (where == null) { + if (condition == null) { return formatValue; } const rowValues = this.model.row(row)?.data; diff --git a/plugins/ui/src/js/src/elements/UITable/UITableUtils.tsx b/plugins/ui/src/js/src/elements/UITable/UITableUtils.tsx index 912a49852..370726a5a 100644 --- a/plugins/ui/src/js/src/elements/UITable/UITableUtils.tsx +++ b/plugins/ui/src/js/src/elements/UITable/UITableUtils.tsx @@ -40,7 +40,7 @@ export type DatabarConfig = { export type FormattingRule = { cols?: ColumnName | ColumnName[]; - where?: string; + condition?: string; color?: string; background_color?: string; alignment?: 'left' | 'center' | 'right'; From 8c55e999471416be681699730fdac6d98de75aae Mon Sep 17 00:00:00 2001 From: Matthew Runyon Date: Wed, 30 Oct 2024 16:13:46 -0500 Subject: [PATCH 13/20] Change props to format_ and if_ --- plugins/ui/src/deephaven/ui/components/table.py | 15 ++++++++------- .../ui/src/js/src/elements/UITable/UITable.tsx | 4 ++-- .../js/src/elements/UITable/UITableModel.test.ts | 6 +++--- .../src/js/src/elements/UITable/UITableModel.ts | 10 +++++----- .../src/js/src/elements/UITable/UITableUtils.tsx | 4 ++-- 5 files changed, 20 insertions(+), 19 deletions(-) diff --git a/plugins/ui/src/deephaven/ui/components/table.py b/plugins/ui/src/deephaven/ui/components/table.py index 70a9179f4..bc937dd95 100644 --- a/plugins/ui/src/deephaven/ui/components/table.py +++ b/plugins/ui/src/deephaven/ui/components/table.py @@ -7,6 +7,7 @@ from .types import AlignSelf, DimensionValue, JustifySelf, LayoutFlex, Position from ..types import ( CellPressCallback, + Color, ColumnGroup, ColumnName, ColumnPressCallback, @@ -26,7 +27,7 @@ class TableFormat: Args: cols: The columns to format. If None, the format will apply to the entire row. - condition: Deephaven expression to filter which rows should be formatted. Must resolve to a boolean. + if_: Deephaven expression to filter which rows should be formatted. Must resolve to a boolean. color: The font color. background_color: The cell background color. alignment: The cell text alignment. @@ -39,9 +40,9 @@ class TableFormat: """ cols: ColumnName | list[ColumnName] | None = None - condition: str | None = None - color: str | None = None - background_color: str | None = None + if_: str | None = None + color: Color | None = None + background_color: Color | None = None alignment: Literal["left", "center", "right"] | None = None value: str | None = None mode: TableDatabar | None = None @@ -83,7 +84,7 @@ class TableDatabar: axis: Literal["proportional", "middle", "directional"] | None = None direction: Literal["LTR", "RTL"] | None = None value_placement: Literal["beside", "overlap", "hide"] | None = None - color: str | None = None + color: Color | None = None opacity: float | None = None @@ -93,7 +94,7 @@ class table(Element): Args: table: The table to wrap - format: A list of formatting rules for the table. + format_: A list of formatting rules for the table. on_row_press: The callback function to run when a row is clicked. The callback is invoked with the visible row data provided in a dictionary where the column names are the keys. @@ -183,7 +184,7 @@ def __init__( self, table: Table, *, - format: list[TableFormat] | None = None, + format_: list[TableFormat] | None = None, on_row_press: RowPressCallback | None = None, on_row_double_press: RowPressCallback | None = None, on_cell_press: CellPressCallback | None = None, diff --git a/plugins/ui/src/js/src/elements/UITable/UITable.tsx b/plugins/ui/src/js/src/elements/UITable/UITable.tsx index fbf264190..2cddd67c1 100644 --- a/plugins/ui/src/js/src/elements/UITable/UITable.tsx +++ b/plugins/ui/src/js/src/elements/UITable/UITable.tsx @@ -45,7 +45,7 @@ function useStableArray(array: T[]): T[] { } export function UITable({ - formatting, + format_: formatProp, onCellPress, onCellDoublePress, onColumnPress, @@ -129,7 +129,7 @@ export function UITable({ columnGroups, }); - const [format] = useState(formatting ?? []); + const [format] = useState(formatProp ?? []); const [databars] = useState(databarsProp ?? []); const colorMap = useMemo(() => { diff --git a/plugins/ui/src/js/src/elements/UITable/UITableModel.test.ts b/plugins/ui/src/js/src/elements/UITable/UITableModel.test.ts index 1364276fc..0c7df094e 100644 --- a/plugins/ui/src/js/src/elements/UITable/UITableModel.test.ts +++ b/plugins/ui/src/js/src/elements/UITable/UITableModel.test.ts @@ -68,8 +68,8 @@ describe('Formatting', () => { table: MOCK_TABLE, databars: [], format: [ - { color: 'red', condition: 'even' }, - { cols: 'column1', color: 'blue', condition: 'even' }, + { color: 'red', if_: 'even' }, + { cols: 'column1', color: 'blue', if_: 'even' }, ], }); expect(model.getFormatOptionForCell(0, 0, 'color')).toBe('red'); @@ -103,7 +103,7 @@ describe('Formatting', () => { model: MOCK_BASE_MODEL, table: MOCK_TABLE, databars: [], - format: [{ color: 'red', condition: 'even' }], + format: [{ color: 'red', if_: 'even' }], }); expect(model.getFormatOptionForCell(0, 0, 'color')).toBeUndefined(); expect(model.getFormatOptionForCell(0, 1, 'color')).toBeUndefined(); diff --git a/plugins/ui/src/js/src/elements/UITable/UITableModel.ts b/plugins/ui/src/js/src/elements/UITable/UITableModel.ts index 43b494668..fe16b7917 100644 --- a/plugins/ui/src/js/src/elements/UITable/UITableModel.ts +++ b/plugins/ui/src/js/src/elements/UITable/UITableModel.ts @@ -65,9 +65,9 @@ export async function makeUiTableModel( const customColumns: string[] = []; format.forEach((rule, i) => { - const { condition } = rule; - if (condition != null) { - customColumns.push(`${getFormatCustomColumnName(i)}=${condition}`); + const { if_ } = rule; + if (if_ != null) { + customColumns.push(`${getFormatCustomColumnName(i)}=${if_}`); } }); @@ -397,7 +397,7 @@ class UITableModel extends IrisGridModel { // Iterate in reverse so that the last rule that matches is used for (let i = this.format.length - 1; i >= 0; i -= 1) { const rule = this.format[i]; - const { cols, condition, [formatKey]: formatValue } = rule; + const { cols, if_, [formatKey]: formatValue } = rule; if (formatValue == null) { // eslint-disable-next-line no-continue continue; @@ -406,7 +406,7 @@ class UITableModel extends IrisGridModel { cols == null || this.formatColumnMatch(ensureArray(cols), columnName) ) { - if (condition == null) { + if (if_ == null) { return formatValue; } const rowValues = this.model.row(row)?.data; diff --git a/plugins/ui/src/js/src/elements/UITable/UITableUtils.tsx b/plugins/ui/src/js/src/elements/UITable/UITableUtils.tsx index 370726a5a..933f2a7dc 100644 --- a/plugins/ui/src/js/src/elements/UITable/UITableUtils.tsx +++ b/plugins/ui/src/js/src/elements/UITable/UITableUtils.tsx @@ -40,7 +40,7 @@ export type DatabarConfig = { export type FormattingRule = { cols?: ColumnName | ColumnName[]; - condition?: string; + if_?: string; color?: string; background_color?: string; alignment?: 'left' | 'center' | 'right'; @@ -50,7 +50,7 @@ export type FormattingRule = { export type UITableProps = StyleProps & { table: dh.WidgetExportedObject; - formatting?: FormattingRule[]; + format_?: FormattingRule[]; onCellPress?: (data: CellData) => void; onCellDoublePress?: (data: CellData) => void; onRowPress?: (rowData: RowDataMap) => void; From b4dc42b5274fa60a14f917ef25b5ee1ff04c7dee Mon Sep 17 00:00:00 2001 From: Matthew Runyon Date: Wed, 30 Oct 2024 21:55:38 -0500 Subject: [PATCH 14/20] Add e2e tests --- tests/app.d/tests.app | 3 +- tests/app.d/ui_table.py | 55 ++++++++++++++++++ tests/ui_table.spec.ts | 22 +++++++ ...omponents-t-alignment-1-chromium-linux.png | Bin 0 -> 14913 bytes ...components-t-alignment-1-firefox-linux.png | Bin 0 -> 26933 bytes ...-components-t-alignment-1-webkit-linux.png | Bin 0 -> 15489 bytes ...ts-t-background-color-1-chromium-linux.png | Bin 0 -> 15575 bytes ...nts-t-background-color-1-firefox-linux.png | Bin 0 -> 26902 bytes ...ents-t-background-color-1-webkit-linux.png | Bin 0 -> 16538 bytes ...ex-components-t-color-1-chromium-linux.png | Bin 0 -> 15154 bytes ...lex-components-t-color-1-firefox-linux.png | Bin 0 -> 25876 bytes ...flex-components-t-color-1-webkit-linux.png | Bin 0 -> 15840 bytes ...components-t-priority-1-chromium-linux.png | Bin 0 -> 14716 bytes ...-components-t-priority-1-firefox-linux.png | Bin 0 -> 26468 bytes ...x-components-t-priority-1-webkit-linux.png | Bin 0 -> 15517 bytes ...onents-t-value-format-1-chromium-linux.png | Bin 0 -> 68522 bytes ...ponents-t-value-format-1-firefox-linux.png | Bin 0 -> 111391 bytes ...mponents-t-value-format-1-webkit-linux.png | Bin 0 -> 73261 bytes 18 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 tests/app.d/ui_table.py create mode 100644 tests/ui_table.spec.ts create mode 100644 tests/ui_table.spec.ts-snapshots/UI-flex-components-t-alignment-1-chromium-linux.png create mode 100644 tests/ui_table.spec.ts-snapshots/UI-flex-components-t-alignment-1-firefox-linux.png create mode 100644 tests/ui_table.spec.ts-snapshots/UI-flex-components-t-alignment-1-webkit-linux.png create mode 100644 tests/ui_table.spec.ts-snapshots/UI-flex-components-t-background-color-1-chromium-linux.png create mode 100644 tests/ui_table.spec.ts-snapshots/UI-flex-components-t-background-color-1-firefox-linux.png create mode 100644 tests/ui_table.spec.ts-snapshots/UI-flex-components-t-background-color-1-webkit-linux.png create mode 100644 tests/ui_table.spec.ts-snapshots/UI-flex-components-t-color-1-chromium-linux.png create mode 100644 tests/ui_table.spec.ts-snapshots/UI-flex-components-t-color-1-firefox-linux.png create mode 100644 tests/ui_table.spec.ts-snapshots/UI-flex-components-t-color-1-webkit-linux.png create mode 100644 tests/ui_table.spec.ts-snapshots/UI-flex-components-t-priority-1-chromium-linux.png create mode 100644 tests/ui_table.spec.ts-snapshots/UI-flex-components-t-priority-1-firefox-linux.png create mode 100644 tests/ui_table.spec.ts-snapshots/UI-flex-components-t-priority-1-webkit-linux.png create mode 100644 tests/ui_table.spec.ts-snapshots/UI-flex-components-t-value-format-1-chromium-linux.png create mode 100644 tests/ui_table.spec.ts-snapshots/UI-flex-components-t-value-format-1-firefox-linux.png create mode 100644 tests/ui_table.spec.ts-snapshots/UI-flex-components-t-value-format-1-webkit-linux.png diff --git a/tests/app.d/tests.app b/tests/app.d/tests.app index b440c9fb0..d9c378984 100644 --- a/tests/app.d/tests.app +++ b/tests/app.d/tests.app @@ -7,4 +7,5 @@ file_0=express.py file_1=matplotlib.py file_2=ui.py file_3=ui_render_all.py -file_4=ui_flex.py \ No newline at end of file +file_4=ui_flex.py +file_5=ui_table.py \ No newline at end of file diff --git a/tests/app.d/ui_table.py b/tests/app.d/ui_table.py new file mode 100644 index 000000000..2b02b7385 --- /dev/null +++ b/tests/app.d/ui_table.py @@ -0,0 +1,55 @@ +from deephaven import ui +from deephaven import empty_table +import deephaven.plot.express as dx + +_t = empty_table(100).update(["x = i", "y = sin(i)"]) + +t_alignment = ui.table( + _t, + format_=[ + ui.TableFormat(alignment="left"), + ui.TableFormat(cols="x", alignment="center"), + ], +) + +t_background_color = ui.table( + _t, + format_=[ + ui.TableFormat(cols="x", if_="x > 5", background_color="salmon"), + ui.TableFormat(cols="y", if_="y < 0", background_color="negative"), + ui.TableFormat(cols="y", if_="y > 0", background_color="positive"), + ], +) + +t_color = ui.table( + _t, + format_=[ + ui.TableFormat(background_color="subdued-content-bg"), + ui.TableFormat( + cols="x", if_="x > 5", color="lemonchiffon", background_color="salmon" + ), + ui.TableFormat(cols="y", if_="y < 0", color="negative"), + ui.TableFormat(cols="y", if_="y > 0", color="positive"), + ], +) + +t_priority = ui.table( + _t, + format_=[ + ui.TableFormat(background_color="accent-100"), + ui.TableFormat(background_color="accent-200", if_="x > 0"), + ui.TableFormat(background_color="accent-300", if_="x > 1"), + ui.TableFormat(background_color="accent-400", if_="x > 2"), + ui.TableFormat(background_color="accent-500", if_="x > 3"), + ui.TableFormat(background_color="accent-600", if_="x > 4"), + ], +) + +t_value_format = ui.table( + dx.data.stocks(False), + format_=[ + ui.TableFormat(value="0.00"), + ui.TableFormat(cols="Timestamp", value="MM/dd/yyyy"), + ui.TableFormat(cols=["Price", "Dollars"], value="$0.00"), + ], +) diff --git a/tests/ui_table.spec.ts b/tests/ui_table.spec.ts new file mode 100644 index 000000000..d47dc11e2 --- /dev/null +++ b/tests/ui_table.spec.ts @@ -0,0 +1,22 @@ +import { expect, test } from '@playwright/test'; +import { openPanel, gotoPage } from './utils'; + +const REACT_PANEL_VISIBLE = '.dh-react-panel:visible'; + +// Tests flex components render as expected +test.describe('UI flex components', () => { + [ + 't_alignment', + 't_background_color', + 't_color', + 't_priority', + 't_value_format', + ].forEach(name => { + test(name, async ({ page }) => { + await gotoPage(page, ''); + await openPanel(page, name, REACT_PANEL_VISIBLE); + + await expect(page.locator(REACT_PANEL_VISIBLE)).toHaveScreenshot(); + }); + }); +}); diff --git a/tests/ui_table.spec.ts-snapshots/UI-flex-components-t-alignment-1-chromium-linux.png b/tests/ui_table.spec.ts-snapshots/UI-flex-components-t-alignment-1-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..52600623b931423685cd4ed12f7f01ad46c237b5 GIT binary patch literal 14913 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 A@&Et; literal 0 HcmV?d00001 diff --git a/tests/ui_table.spec.ts-snapshots/UI-flex-components-t-alignment-1-firefox-linux.png b/tests/ui_table.spec.ts-snapshots/UI-flex-components-t-alignment-1-firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..16c9ad7840d5cf3fa51b14129b55a473cee1c033 GIT binary patch literal 26933 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 literal 0 HcmV?d00001 diff --git a/tests/ui_table.spec.ts-snapshots/UI-flex-components-t-alignment-1-webkit-linux.png b/tests/ui_table.spec.ts-snapshots/UI-flex-components-t-alignment-1-webkit-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..46416046ceaedaefe2830548eba0244b8b475efb GIT binary patch literal 15489 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 YSpKUsty1d8aO``@XR=Roz`F1LA8M<~p8x;= literal 0 HcmV?d00001 diff --git a/tests/ui_table.spec.ts-snapshots/UI-flex-components-t-background-color-1-firefox-linux.png b/tests/ui_table.spec.ts-snapshots/UI-flex-components-t-background-color-1-firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..abf839d97f71bc6130a79a85f7498de3885ae7de GIT binary patch literal 26902 zcmbq*XFwC-mi8o6K|oYQKtM$lL5fuAC;}=<4Imvwdhb018;TSQP3a;n5Q_AgC<03F z9YXIATIl7Qcz5sJyUFhNWB-r|GnskIY0o*&nYS8hDs(igGynk5-M@EN3jipzR}rlZyswfUe`){Lw%z9)yvJ%p*Rtl%a^Xvc(?w!-|E#{(KP#~dDKs? zumRuebhvF_snkKzr*? zPsc>?10x#oZ)g8r40D4(F}6p*2_Soy?AgwLzr#fYB7uS$SUzcwn>hh2^FQ1tzCr~v9>b%qC#{5IkFspn27}<$PqmU z5MlrS_IvOvrWHz#@T4s9+8{@4ol6fOz9QKde2Ok^wm|}%%Z53rxl|M8!f!vjl?4=u z2(@ti`*IN$g#J|7eDvBeGG^Pd%5)x2jyMh}SrEJmsN01fQ(nPHJ#e(GAK=n(C%ORxSlX`$Ih7+!=d3WvwLdg*fTJ@ZpiP?A)?m>RU;A zZG~;R#~T7#_wU~iD_5z+QnUXz!6SSXxS_#S1KBxv*X6#(O;!v)q#W_>a-jE#52pce zHQNGV9B$RE^4oX#jYQSs#2tFSQE?zOx98r+rJNz&TL2PAd+QrCUuW@Nz)i1`qu~|S!=T<7slwSek%uncKh&3U?v|CB zvYaFT@3IL#3^N0zKLKD9cB2i7ZPSiTT*7LOJX7d7<-UIC3;Vv?0@DHJ=BKlmvZJp{ zUe^y}mFPs!3Ti%Z4H>~j0PUB4xj!eNSay&~D#T&yV#d5v4bltyIg6$K_(qdOLumEw z2ss%gEPNxucYGd5uuX=W$2>QzFQg?_I#pq$OvOifq zZ{laJ+5&p^p~b?1Bb~;d!qVy`T3VOsr+8+-CE#ibM`iRO+1~88g-!liF*SZ=UQ)~cef{K1?{$TWyP)6 zy5lYaG9G-bcS(#@69MFZk@xs(VOZpd#oEjY0#%SE8>;kyD)`ZMk+?#Gpt9N98)yDn zhm)MdGs`aoAjt_q%Of(7*puOTzjr@hbqDg)C3A*wj|0eQ(8f{yCS~KK2{w+Uf3)QcXzF6Oh^=7I0{_@K4ptL`YNwzMg6Zj{ zsFJCMJ%&*;{Bva##7>VL2WKlYyi2)^P$*_}UhGMgfS48g7%@?Oc^|70rqb39;RAJWdYA7}FT=HYU6{~)hP-YBOxCXyhxN zx3d-9z*&!9zo|^Dk{EHQ03$%TQ*P79Pv@>{D9;|k*Zm21b4Z*ui@%9z53M4uHJjmmWPV3I$gbI6QX;ZXdXW1zVZQRcZ^7U zO=5-_XPn;xt1BPyXN?*Z+p3Z>8Dn~MBDQKO%m+0qWkdC~xi(uuPV$?4PP1A$so7oQ zACNDEG71coNN>!QM^~a9%db8zRg?YtyI#(6NbiwM&eE_}LaXd)U~svkOX#2L|4+dm zb0^GBz`OVZN1(Lkkmqa@w(k+Py60}~ieyev^XWMG_w^}>d%vjx!OzYbb#;VP)uWPU>o&8&CVr7`MfsqA>XHW$d+Y|k_7{sZ=w9I07bjz z8MjI7s11d!KX4w_U~H=Hgluw@&TNi1X9{#PvHlig$vt1n?js&3bl67UK6g8aRb=`x zaGrH3#V1d+gJND~cWy^BYfwl4_({Ep@YIB)U-r9)ZJ)mBEl=u_9w-FAK^M6}bM z@vS4Xfh#+eH+#Sf_$o)WAh#Maw+t&AMzho$PeKJMo7g}XDd#$B1Pfct7l9&lK^I;Dm~)SK3AscZ znR%W8FJVJ%h(848s@h(EAaO|v7>E`XTZ>so0QsykS6;vQr#k=hcK!DdK)dq$o-7t9 zW?{4FJRh;@uj0sCd4Q$v8n=1$Vsv)4)6+ZTe4RF>o@;8g1tqkQXm)| zUWhJ@uY?RFepPC7$~`+At%~?${=LZFGE(@XYfqVZzCcw$f=qx+Bi=aDG>0i^31$!b zQbi`yGd)pnJCyfiKvHEpo$rb1YbgeMqbc+nlhUd_PNmZF^tEk54WRfjT7 zt>t@v5|KJ>r9T6{lb1ah6(cof$<3QJlvxIV6sE_}w7{Tu+7oR$!2w(~Mk zJY4NfqOmbik#6Tu>R#_DX02;zEMW80 zq!b^lI9M^2|Gbv$?5QPf@OH8e?;O2RIC-@zP)y*J33B3nNUoayXuTBefa9Q|Z|?K{gG=_(V9t%rcYKU1?gTeqD!2|yT#pkiH&-|DU;Qx`5_Vebi zovUWbcM{LZ72a38mXx;l$X2fmgbf*if-Dz_$6_Wz2<|8mmK0;m$`r{3{(Y`6T}aup zJ@HqibfSD)H!h9qwK?i0jel6b8BK9)dxN0_c4~%ACx8=MT+s=vP7UqMq@ip_tKsD# zKPG3v=xXUORJ%ZvJ+w(H;t8SeivW)e&sPErcDcoF+elAYPLHb0 z59iQ3mCr99c(jUrXuQwY-Y01P!J=;>T2`@9IVK@7@A#3Cp$$c{MY+pu#{z?dGsx7+ z&X$^7I5J~FbT!*K7zPX;$bKd5w!!&d0IssPc7Nag8u>XkqdwtzPoR;s&#v!WW#5s8 zv3YHHO|9YQCb*ve1=LP8%lZ}`7X0pV=txLhG~0kY1tP0HycP{FF)+EEpF>ZQ1aDiQ$de;Vl5~nl*!zoPqJK}TiLkIx z6U!(9u}ncQ_C2XySrO7(JjobvJMBEv6T$XJXvTzd#k*V9V91@~T5e+#Uw`=Na z+2KcUk7|66NL0!=0EnO7R=p$cq_|4|APR z>NvyHpfgfDIXcEnQ|D}Y6VMBLdVAK#(cd2ANsc-@>ITV``-Rn4_o$oHO!Lw66Aak@ zynF(Hef!sv*Ya3xCzI0VTrkeXI4#FlSF8+}%xJ5>YwC!JI8GbuZfu!7()HHRf>_LO#~+!zq9WK3 zJftJV;SZ~5L3R&|3NYs{c$tetj$w&=%oQ@$9$d*YeXm3}pejR4+Ykn<44lg2$8vP` zsBekx{}HW`z2(;_6_(_ZC?hk{g8dlrY<|(k(7i5oWNLmo#mRJEk?u>cF3!$iq06t& zdULa8oo-dQEkV`>)moVnb^xtLnYfMbc+U7Fji7bwlLS7xXLB8{VU9_+!0!w6RsImAQ$7g-d&9oT6zk zw(Fk44@n3RB~;)Hpj^bzJ$63JP_<0c6pEJS{T4Y3jC z1jyn0Bmngbcb~uuX4D3f-(7Quy|66C5Bw6Vn2X-B?U%|QmH-YHykm?#*Tt@tSY@4G zlKvX?#WTxv+ysP&t26E7#Fj+-c;D?)_~MXg0d)SrVSr=4jMz&Px^ zVyOgz7gfMx{!n8?uvp(bzh0hF`L*3?E;f&`?X%hHeYy~{&hdx*eu57^zxA;c>H|HKo8Blc)akH?4zG)tj{{a=X_5>iCUryzrxH`R$S}y*JLCwR6tyH`6RyxheF^{*LoLmzdc;x# zK!X3CmU{NJ;{@^05dY_2$7=%pSpl=1NEU(W!8;&WX*$=^PD$!XVy8fSwEjNVH^p4c z+ucg;t|vs!O*)r^(?!M+z=)YgTwy3P@vWNiU^@q?RGJH>3h<~#PPy_&91?bW>M#a ztLXYGx5gt+cc+TeTNarcn0gCz9Zt1R5U0XdWWkO{7bNUf7Gu?FG@}8%(!R(w5^&2( zVC*!+tSc9P_WVMgL(|jl@dIkQs^S+W<+g8AW-N7DO(4nK!*Ls{zH}An?1L9o#m)5y@$w;m2Q^R`dzc$nsi#CyC*=jR+rVl^ zSY`{A_UF(WZNXvsKx~YD=D?>uo1G$)_3TN9M7BaMr5}tCP-!wkUmA%3MO$p(ZuxPu z2ogWu%n-s%3#j(&BkvW{YH)@%_ca zk0(6SqG*9YQ`dXvg%zsVvRtE z(3ZgfZ(O|U)XH?aWQ2o8^VZp5Dnz#22)Bf~M1pix)WCLYk4uOFW5yE(uWV7^20y=8 zG@X+Mx&y^@PG666xI#+;9SDIWi=cHvNhBzpFGFHz0REK}k>eO`iG@W|3jw< z1709|D;*!UzHoG7~s^yfcH7C=`P-ZALbsVFdC>0}9H#bTum=3ji*qexCuRP7lD z!D{nJpfrPh&Wd7OmJs@J5?kegfhU<`M>Pb@Kl{Eqe}i}yW5a(Vsuiw$E5N(Lyr5xs z32M)vGf2Xq#A}0jmqxcsfP3qo#!M3MnOw~j0lWuRH?8RO{+0Fk*Aa}3fC4bKBKj;m z#3Mmq=E3y)X&~_^XPkz38Gs;LE(PEo@Yvxh9~r6S%dLPQ5gNb`KWFT_XYBH-kowA% ztGAjo&Qp0K-BD>v0) zxAMl>^;8`lrKHS*WEQ)H+e$CskNi>&21Rw6-3q64b4W&tmMjmZJG|B0r(#!59u5WW* z0uCCkwVoh0844{-prdQAZF*D+_ph;(FPoubg8U~J;I`aRBCi+?FzICl+k=6Thj`#F z2e+U>N@$c}bIs+e;aW#OZgIElm*2s92rgw+%qFENMzlqG)$ZBK9m1J@U1>~>PSQG; z2W#x(V`?u*D`?*4wQva48aa}Udkeie<|-7R+f8lONl z&91B7Vp63_#p$bRl7jD^`@!b!J_AiVEV_M3g8pU%o(VLI@B*LIk)TFWYr1hwfq~*iUQu%9&q(|ADSpd0kIn427==CGY+>uq?oRtu%3nxM~=4I&%$@ z99QYSUG)y8Wn_EfkUuJ;H28t)gW@Nn5Y*@DzJ=P7p3`Hiekz$`_r89dIeNBb4yL7! z1RIU^Rm$P~Y_A@BLgn^W{Ie$uUi!?V57Oh8_q&@j&klPWp53TIUiQ)V zJR^6ox!*YA^ZUTCwlYuK#kb_NC4X-FRYARHDoyJjOJf5ae9D3 zoQg#yAiwk4KQ5SW;z!4f04DLa2a{(Lla&2Zzu`x{WL?gOn$04dyk6S{tGQ}e0au1q zk(kr_rA}GO3=uayHv?|JI+10&R!=t5IT{)j$Mj_2*_BIm)VnpBT^ZMYYZ=F`jz9J3 z%}%|lj?H};f!3W_Sbvh5764UX4qPlJW^6cL2dyJt#E>qCcGDH>PwI}6e*HZ>*h(J0x80{w?L~TacQ1~M0kuT`A14BL9>WN=Ir7a>>nv9 zu}dr`N%#VN z>9bNcv6%#OT$c#ZxW-+?%7Hs#{X1<_JGR>8v+(Kl9654Ben@UtUiO`O`VW;6FduIjYh6Q=l5&8k+%H(kUig^>HtT z7`=P%Lq2v9bar}0$~y6kuw_1!DjqeFbD=J<=&}CdaglG}4TxumSH$gq1r`51qGtrX zn)C1`+;M`i)N1h-1$kKf1ExR4apHf%-dQC zHO4Kc+FW0TvRsjH60B=8dfaOcYL8B(*EM$dg6u{qWuNKQ2tb}azzd!RF?%P$(XN?F zr}}=biwE||v`o8FSq8cKHZ>A`{N^L`!PAnSrCsT$b^HU1oY4osV=faNM<}tp+!BGr zoB*!*JEwePuxczVDeY|=%J!%~=9RW*1Pr1leb1|UPmUgSE?r&yIEw7bC}gB=y|E}h zCqJ918?hyIut_!J^h2@rQ(*A9kk8^xCxLe&u2Y&43Im2;!!(?O9?-sn;Tn&SZnqh@ z;Z=`4_B^ylYtDHRod&D!k$KT^4*#&yE4qym+0;PW(#RMuv9Km9Q-eY8-27zj zo08ih10TL7zcFAv-rC)pYmExQ#y!DbN^}I~u-CQ1II2=|Pyt@m-}d_GVK$ltYhg8c z&Dg~)+>@7x*}1VPiN@9q8`kvnw$UuIZM5xczv$^|A3yW6`-8LVPFSPe`gLsQ#8Y!g z9C_MtRmaH<|1dk&QE9EZdF9vvnV+}3O1_KZVC@zGEf$#I^yWyXcg|vP`>ODo?I@QK zN+^bP4e5G@SY0rm2|>HJa0^}#ui4#r%i+Km{RpZcq0Zpby(MUu&BL#HDV2()$tR2k zQ>vB;$Ygw?mvyl($F0?B;q`E6W~7julG640dg0MBnz&cpXkUc?7ctoIqG{%|Uqr0K z+)&IG^UJ2Z=$I1L6w^kBCac(UwvIo+oTIQ36f%}euYOn6kTN>7U2n)kO z!nHb=xF497*DYKDX;EojFFp}l%OKXj*05T+*nL3OxEn0m3V(9NcZDv8m@w(hlNBie z);7ahkn>WGZ-xV^TEe7Gqjx%%y4C|~p7-Ca3(UWVS26l}(OhCIQi(6hegKnN1Y3d2 z(Nx;R+OkNKH-V&v#?tJl&Er0U8j15#@Yt%_1(p<39E-8|ZNu*{w@nZuu@IDPtz+S)@k64CRi%oV8B1t6ETJEHH;Ar1`J?89BKYE!EHIHh$S8Fua>FIR0qOI#{_R1g7&@|zVw|^!g z14p>mbJ&tMr{ml=M|NpgyVX-9j7&Te<4QB=WrU0=3f|g!Z#(aLS?50IIuR0ZNXzu= z0RITxUhpF7yLS}Lr%v94r5lhLG}(Vy@Bi2X#3I4WmdVR1>hT}wa~gXlN_8`6`K#sr zw4=Cn1+YKbJA80#Q{4$S%6Jo8&*QayiM!<}CC3SbVM;R2)u-k6Td9{jd#3)xMV0s$ zYBA^CkZ#B}F)sF=ge-IHN8WMbxEgiO1?QiYe7vbSax~In*6!*pk&|cHhRqt0P}8w_ z!U#!TtZEp(PGY^Y2)LmQb!bdc$Nk0Cu{1EArX&X_B6n>uP0CED<@^wOWar_O{l4Qx zF)o*xk6q=BCVp14!PLbGuJ5UKXh+$Yef#~y=$C9=&PSTfMG;Yzi^;>))!mk@qRXrs zFGIQtpJg2tURdMgKN{Nq23_UMfLtRXn_|iY^R#&GFh}4LzG!__lly#6V5x^)9-DM& z!QLqc7NB>bLoH?UwKdM6EiS-EsuGZk4N`5tlZ~PB%%VZXrko&A5vXKb9>2iZa6ixNtTO%y1jAa%0;|& z7N2mHrj|!Y zFFde}p0(KU%A*Vl@jt$)WV)OD;N3gE&E+8(qeqE}$<=2P^<0#rcfF2VQQfP(d`)+L zDKm^F|LlIq?Y~p}TmYBd&K7Lj*3#C9HWuk&Z&wZG2r#5mHb!qo@-`1MdRaS>HWcL|C@@V+-RuOgs=~dDx8LZmS?yAqk%4}4 zU;PN=Eb#XK?!WkL)%yEHSYyp(upc5xU#ARLG7F21H%WPy+_cA=Y-d*|BhhqlF1dV7 zB`a6^x?ro15KYM#Ct~Yq#lW6c+Vrk(44j|bQ;Ea&23yd^l0zDVcsp# zRP4Vqjhw~V^?}P*X2CpGl*SgCfCw{2TniHy#|e2tjt;0^g|g)Qe0eqvUOJd_x@c*W zZDS%s8KGw&o<4SamN(f@8jLurX(o%7j)u&-Eu;>19!@v>irM$;f0+$?M*jK+B-b&I zYm$Urw-+RUg13xF*|kMW{{C{)+x1#Q*Y-TSlv*z5*baV&ws!_O6~4Ch#`5?CQ}Fp| zM?N*(zr(#tVSCW;&GhRk@AxOD9?#K&M|Z+GB{iwso!8lDIEK|JT<$jxp4Zuuz^zhR zzJL7jGb&Z&9M7@y?rNLsWk~X}=~+@V17!B!648dUJv)%7hRtxztxU?RQhX7LgVrZB z&g-^4IkC#p<#LIHtyu<*x4Q4MRt{kB>1#${@XiNu5(2z%>2C&7){-}sM1J(tEiMpL zLNOv=ZW+BKhNc%aWdC}I?1qOHk;M88K&`G2?(VI8CiorkvmxZjV1koN81xcAag;Xj zpiVrqu!4}{IE-B;xHrcNONFp23vymrgj!KpRq3RJ*y5Il*xpf@ByqeA1fdBl@P&>X zQN=-OaANlfsongmEmkWO#IQnP>x6f(n)Q!C?^ zCT9kuVUjkxQdRtQ2isbcs-cc6j;zNkK8>Vk4>@Yy(ZB|l#NaR<`!SBL5ex zy<2_8BYg11wrGf131csTEk`+m)j7I7YH-V=a1Yz98#YK06ZfRaN{P)TvD@nz-?Y^^ z-i!Szj*gC&!1-QeF39Z4m*U#aiO}0@yhZ1moDEN?RxM|FRbggi=wR%6PsQ__?c9_j zIU;vMz%7G#H4!?H7+SzBj2B~)bffd5oq$dmBQ(*!Ul<5AV9c&YbF)Ism2H-5!>hC-`yRBaA8wNCjDU&|dpd{{4X+kk6@4pn2 za&Y}~Fx0`bm@n?R86$R+Iugz5%p;v9#V-O{XfWSi=v%S{jUQE*Jv8je#o3v}eTdBl zc^KVz!R>;x3=6eGx;EWSvpg5u8xHobZRhr4hNLr}JTrT>52hj#nB%2MSQR4ypvrb! zYoxs(>UEK=?Ka@tlTkS}GoS7jTq?XjST3ce$u|L#DACa~2GAdAID3hh;}S9CZZEt* z#Yg`YtFs+d+OKDSM#^eD$>dRc_A%u$J0GQ`K07!(&Q~w5M;rdEiw}hc_~KZ@5=ZrF zASN?dD|LhH4M*!#W%foviIRgb;5{>mHUwvOLdj}7-EuAjbPKg}DeL&nB0s=d7hsKZ zi+6&p=+oOVA%c$|c7O$Y_ZDrdxY=LJ4@7v6zltuTxiyC2=2qMfSGST_4{c4O&c>XF zV14Og+fAPEFE)OE`z8(QJf&K#!#DT%RdO11^=T?pD3nH_&nK>2n^lzEzygbR|`ZBkq;os^l7Z+y(`{?rUHzkhp z$)9Ii;d(vVwszlcq=xf7E@FWx9pdCE z`6-?=U`(5z`R#6XSd089x+tmQb*~p_!u*-Xnyz|k@=p%=((8bUQOMwONCyWX4VYUVU4{9$*%V-eJ@e?)~z?_GFtRgrr=Jq7u0tSUT^z%wez zOwElEzh21zQnB65na2u1h$?@fmvM6Fx#G113qq}4}GwZYng0p>(DIXXhr4?60Jdq$I69`5B zBmw!h*RE8P;Ad0!>k{m9dx=O$FY(VI5;UZwK3j^!{q;3UE!LWcuWJ-M2&nH89i*RgC2gt?C zH>FZ*U(Xrpll;MR9!l(=5eP!=OkL|L;Qp&9m4R3r0Eo&7Lh(?_Hn-zntvLU3!U{|T zpcAY2_}d>oc-I%MHRR+ZDz37qM{GGqaHH6QVyvRvkEvK#cNCtuAT6xbQX$T>{YF() zwRoi|U~tzi-v2$*CD5A|Aokzd`^i(u%C;ik;5iZWAml2)|tyS#1X?9y$L4~ZU5+fXj< z4WBL;EEYG>lN%hd7g@G0IVW4H#APa@l4!yKX2>_SI{1mVWb7fKa4c8in)=*7z#Th~ z@Nl1_@Z7>=lb}X0#kfnN} z{+W%^yu^W=a5Ap59pd+rMoX0^N9V05eTD)hzt#?EZ6;MpeMX!5t5AU^Ap7gV(*Wmv zUgP5joP|>DT8CDWt>xnDPP3pUw{Fr1pCgtEObua-j&B~dzvR?g3^GZGGQUA(;&tV= zh~To7PA^!r*Z@i1bzw{ceBDb{^P%iCj?c)S$4DIV0sei|KpYDsnen7SICod+^{>Y7 zrReOxIhl^|GN^lP93MFx!SNLpuUJdyyRU8M^aif1e0x9R(QGGI<&gGT#yuKZdw?G} zv=g&;l>oVg_Z@kqXQ$Y>fg+r$(jxKpBSZ+>ANwUHV+d}PYLIBMC$^QjvNC$RG_hwi z7cv&F(zm$8XBZjK<+K~zu}-_GD>zv?*^ngP5Uc7<^=RqqH%0xuBfNaKmp5PWa-W7@ zZ-d<;L$Hn(j90=-g5YCO6ZPh2t;dD*D8vR_8)Lve%Bsec z%INxdO+0C$!L*XGW$WO;E}%sg)#q)jn|c&xnokOJn+I(Ka1PyJ2Qgt? z=b$k#ReSqS5A1j~sERvznm8`a z2irlw!YJA#z4wR5=A5L}bvbGEKKNlF$HIuti_6P;5bG7_!L$h-NJv);|I@2p-)Rgo z0ux6$4E{wTX$g+a7gUVKU|fJ6R< zG__MKT0MrXDfq=tvc^ZRqrlb@h4&0h2yq`JYZAO{u;~(1AA{&axuT~p#MvKd@jD5Q zv}Z-F%=P|Q_*B?)+DvuQZgxcnWI*}s`z#D=qPlbJ0+?8(x8ZU=32Qi1SYTcTE-XwQ zED|+4?dc!E5Be={EEoHe3CU+@(1nKGX%&g4G~}fLnNoK1L()^)P1bJD?A$WOKQVx< zJ%?Jtz9e)y`Y&OHK9-*hqdhO-sQ%@SVRuwz!Lw}`eG@&J<$gI5Teg)I?})z;4J6%U zXC~oyd;X^KRA%OYd|u0w5Hp?3u4}|%t|12HK&@K;Cl`RgP}dRJm}4T|Nd?TMzvV#s z&(@^+h%bV7`oI0!>MY=Ci!Cp*eXW{Ta_VvtuQqM(1dw|^dK(2=*^0*2jN5Vp>K z8S=kY++r4x%u;kC?{(mc$p!s?X zW-@H-N^KoC<$CaIy|n=q3m<2~avlt3LkSz+H2O{pluwG+yNh4rhFFeIW(vLjdGHi< z-*@fpW4#ggSF0l`MK&E`E)R~jFRm!2ae+06$J%o=v|BX)AbrLwk zV6hOv9o(}&7~R;$+o{)P-}(N&)%-noWXIMMieM_9i~Yes`)907J&6MHt$TkHO)J_G-3t`t9NAI_Q=>hs z-hNbKp(k&!-I)k_c(^)~#Jc7$$S#Tm6b-tsOUpazedz((zhCG-Enwp7W%Y`6)-e3h zJBCw$)P`Y0KZyvHijd9RSt~I%$X`SpNtB^WuBF*Fd+}{P!>&}M8`B1pBP3ZU_BKbw zSY@m8{K=}C<^BcPo;TI!`|B3jQtTod+Aa4M23i(8bZEuw18!W*xd9w(%yJD@3z+E1 ztoOM-1s9^`w)-n06`;OVPFM(vx;o$07&-$ukJ_vleOLGtOxDdr9Z$pH0^*vgzW}WT z(dPP?7Z4QZ1!|AbP$BH&a|h`CzJ)ItzDQkJ(-yy{se9pX4u$|B$*Zc^swy2tjydGT z$;!Y62C!K>aPd3`v8@?XAh=ZZ&0&xPbKv<3&Mx+Nl!F6&qXB<{zqm`7Kt)o z#Y=cn$*sk1{H9Ehs3`8C!TfywG+=*1S80nzvjGyuJ4^*h{)F~8NrH3XoJ?5YI&N;( z?U4uU58FCZ1KK(fmW)xShxmYIFs0Kbl6tmOVCw!3;H;;B!xpgdXoP_ji_MH*TMlvlDFJ~bS8 zk_T$!%nt(4=yErb!$x`Q6)LE&el9-s|^J+RrRr~Ic6@yq~dkH%Oi6k{Um8>3t6XYu=3 z@csK(1O>57ArSAV<6VF`(T8+6Hf~(InT69^-KFfL>~G2WMls{t;Tp?sQdvd$Q~kH} z96LK$Xd7EkuuDI_{!TAT=sIfH1McwUcd3U+nt+M^R;3Ce?7G~f6AFXh?NP*efzf0ShX)x<#B+6>H~gSfb-ZR^`q-Le*IPT<_b>J zz#)EnIv?Um2gIS_=*~ccyduuN>k}zA8%F}}-7gHxJO#`sFY7IQEM}^o7|E~sA{&_D ziM`cBP5rLX)C+rWdO1w9@hiG!n%TEY$cM65cWE&x`-q9T5v|I{?!Uti1(Q25B$GQx zg)k89vFZd4C`TE?UEb=ic~wF4`x@SD_SOY-r#>OGUjQbyY)(Z7(Y@-lQ-_ap} z?K?X3F$k=a0aoHxxBy7>sKSJ~pn&838P`MH`mZsz?Na_c{^TFs}O8v6d>sp-+f z+c8_33)^;6D~l*`w{)9Q#vPEo6FXb{1z+|wasP372Nmxy`1*jwsxgu^#Yr;Ew_zE) z5EPAVFiBCsnm;i>AM^JX&f;O{`X@}5n0Z}*gLW}JviQt)tABaAP%iiAPS|vH9q+w+nze>`A63``>mJ6XRWQ5jjXJz%(~Nf z`FXTDhm)EY4QfR6U7P~4j8Z%EmSftkFEmn3X_iJC1g?Mc4EKg{50uaNfb~J$;h_zX z{hJG}J@ES-DK=#|ffN{_2jqej$y$&(;@_7EEIFpqD6}OHT8O0gQ;$KVO10*~6pOun zy3OD$!LHpaxAu_tqgrnqd$ydt=@aT10l)JoVrr^gpCeJ(ZO5^rm>7#Rj3fFdvn zEiF zu%LkMt`A`PG5TPoVui7AqHUcHLs>5YY$t7ke3B$(g}z=Iv{jjBgkPgktDWP4=E7Ak zPW7nhXkLpW;f>8PzP;?C-~D3!sBUV=AuK-1>c(M!5kEHIx6!%yLUVaABdPR1WF$c{ z?{`|~uV5wYs9JP#+ZrW#IT zkRA)>62S(n{vG}myrl9y@1O%|rG<7bCqs4)Rm83!ag=e9kb7qYET@>~R?_T>#l>&) zli9`fAo!t+U?be7L$AhPW0(&b!w{_{JJZZx=T#;f>a#D3Yp!wL(5mL!=ks=!FMKL! zXC4_|Bdb@Ztl=}^f`lYn+;=YPND9n|o_T#)#pD16n!o?001?E>0vyFzIe_h^fg+TC zrm7VG!;5#EIUrEXr$h=!^2S3oWl|P@75A6xczk%{D+LK}2FdvA&D;n7{K1fj`^b-~ z|N2UFl2XxsqLKgV^u~(*`bsrvNtW{@TpR|?d@B{m*WPbUJFc-a$m9*mS;|2!e1Q|o zCxraM4d;5uSh^kME$__m`P}{Cv@Zk6mF7~}Urm%RJl0f_?IMxqLLgGX`Kh122DopY z{U%RphJN4+B*4a6H+Y9Qi6JU5(RTL(&Z_<&uO3yISiS1$YGU3J|BO2H{EkNP0wYy2 zJ!VsBNQq7V$2c$A40HF6(khp0*?mR5Vu{T zY?sa$Ure8yoo@iQ1gw`O>{?5xf$D`Gozw;=-P_HYJ(3ykdH|u#^e5{lb5Q+#@_L7S z0+E3+x>7r1VcjGXMp#x-CnwU6BL8qU%qP! z_R=QyCl&+kBYlPrGY`8QxmNievaM%bx!yKiIId80>tse`yj>b zr%0x!zG|Ivrk;Vuv!i{iE)X8@0HiI>_<#+&Mf&TR%XtL4$iK5VnrSd+!P3^@OB##} z_=)$XNRHZa_2K{-h?BH;yGU$6A>qATJV4IUZM{7@3#|`bIfsA zz~0QC%o#n+hS&}l@;s>qBY55wkgd^rTzAlG_KbUZjZVQTkb;FoHy4=G1SOLaamk#L zEiULA55BUe!E;#*NjYhflsd*I@IEl(9=q?9gPUlyF`_HlQOFZ2?g>d0H7KtHJ9Opc zpD>S6Vc$D#I4jBAsyGn9L=}0hpM82FKfsjNfQ0_VgXQ%0Ac)z&OuMkxJ{{UAlJTGz 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 literal 0 HcmV?d00001 diff --git a/tests/ui_table.spec.ts-snapshots/UI-flex-components-t-color-1-chromium-linux.png b/tests/ui_table.spec.ts-snapshots/UI-flex-components-t-color-1-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..4e059cbe4e20ffbf6b20ec36a96d81ae744e6bdd GIT binary patch literal 15154 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 POz}`w1(JW?_{IMR?7K{S literal 0 HcmV?d00001 diff --git a/tests/ui_table.spec.ts-snapshots/UI-flex-components-t-color-1-firefox-linux.png b/tests/ui_table.spec.ts-snapshots/UI-flex-components-t-color-1-firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..a8c2aee1c26e7c0c600f0d93a3583008400eff5e GIT binary patch literal 25876 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

b^E25kqkp6Ie(d6KqfnhPo1D=gh`~b9@=mfb# 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 gPNBH$R+^A0GO`oE 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 literal 0 HcmV?d00001 diff --git a/tests/ui_table.spec.ts-snapshots/UI-flex-components-t-priority-1-chromium-linux.png b/tests/ui_table.spec.ts-snapshots/UI-flex-components-t-priority-1-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..20507dd834b8dac6d037b71cd54b4281d062bee9 GIT binary patch literal 14716 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 bRh4)juS?^z$hd_d-q3wnWl+w&C(r*6Ab%)C literal 0 HcmV?d00001 diff --git a/tests/ui_table.spec.ts-snapshots/UI-flex-components-t-value-format-1-chromium-linux.png b/tests/ui_table.spec.ts-snapshots/UI-flex-components-t-value-format-1-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..35557704482ea5da3b55820f1d5c0680405cf442 GIT binary patch literal 68522 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 dL+CwU##c5X@7)wYtOEiu%Mja1iZMb_{ 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 literal 0 HcmV?d00001 diff --git a/tests/ui_table.spec.ts-snapshots/UI-flex-components-t-value-format-1-webkit-linux.png b/tests/ui_table.spec.ts-snapshots/UI-flex-components-t-value-format-1-webkit-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..68ae6e07031238271a47ab95f7fed7b09726fa8b GIT binary patch literal 73261 zcmdRVbx<5{)9pZj5HvW!6Wk?O&_F^6?yfbmQLg0AYs3e49vB9_6{(YPwIU$T8G#Et) z0~;Ras(|~Y+>aj2*$?mKUjCBOpeYy`gGsW7E>_N7HIvHgnOKft&;9s)_H>iB1R1Iu zR*Okoz({x3eeS#(6^Sj8+2O*{J(#F{e1)(2Cwy>Q(k}9Myv%s z{p;XdxD}q|U;mtj2g~Gz@vnoXm)0;r|GMmsZ>#HCA`zPL?~aq{lI715Qf9xsUYaTo zx7DKV&ZJq)b9xf-O3OuN>6;K>`p0JGo|d1wde)c@>u~+OzuMHd>1{5$hsz>f6fS`q z*jmxhBl;!JtNS`+`X%=#f8;#B_SIa){A@Z@jy?!|bSMe0=}zjZZQa6H8GFVSehs7f z<{dq(4{Uk{G%Gt(ohO=Vr1`@g|DDI3%Q!P{^@IAAl|=VN<=2MYp0W>FSy?5_&h6j4 z`C%U7;s%YJ4zSagnF_)eTb=+QR&pz~?OBpmqJFx5I<#x&a?G+ab(LJl!>aRiSnxr| zS@nCCzKd;<{onPG`sOG!ue!zLC6mIxyRo6@)PF}WaDQ81Wwq3JaV`V^LNC9lFfTUQ zIqil!#b>q}iM;Ii=6lu^LP{ScetLEqO8lS?O@5#dQ|BpG*Kxa<%^fY-dva=PoVHpH zFlC8JYD)S{@dhznOz)*chhdhXl>7u%#$k3(&%PA5WkO;z6dOrIUj8(CP=mZgt0ZPC zVRHGl^28%rrG<%U=qd3X3_uq}N6ou^(6a6LP%WA!tIAWnH8xdq7!U<@L^LUxG|jMF zR(l%ns+?e-vs^o^4GB&8oIrTUU~OwV;qX!{oRX3fk6BawY5bE5>L8cS#n6DBzw>+u zqk56DQ+6*epss>XF5L+6p3_!gFRIQg#1#DeGudS}GuB~C>;x4&e)uIt|8k{5q{%$AtxPJT|8tNo# z{W7pKk=0JwL27W-r{!7e%4?swN{h3r6ReD`M$>e|_{p3UH#tRBI6y?C6TD$;biCuy z!A-OK9UQ`Q5?jezzAtys7fqei*MdZ@lOF)2PaS(G?)V#{$~0l7>H&-%u}#=+Weql!t>sxQ>) zrEU9lF6&c|?$2E>_ik?2e7)PeC6?U?0ab=6iHAEESJ$o0Ev;H>p)7gAerXm&eQNJB zW9C{&?F+bX3Qvi}PE;m!dy{2Ghc!b(()%9QdD-he9q)6&v%o4fw5g(e{-^$Z{h zy*fSq0-Kh4MgxTpcZHfamFS%M?DI?rS$eEbeb|4hj$U z_Ts1UnDK8;X>^vW0W!>h`-cZ?aZ11T8=D7o_?sI}PR=2TWzC08F40h;3Y__P?qA|r z+TfKU^CAKQ13)LkWm0Ex`5jqUc(C=ABTo?)5JL}VN^Eg{9A(Rsm}W{_Ys^^oS=k)UlwX#tcwQ(KHNWS4J7d!O>jqv z^E>yX#@t>da6o=AWd&CaCNDw+pO%fubzXVgj76oUwyv#(*DSj}2X4;~AJ%0AJ32en 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�!rYxi?S9>rL>; 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

VYMmio{6UAcsJhs6m!}LDX&oAXZzk7*OA+4^{ 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 M#@bodVBBN>0uDFFCIA2c literal 0 HcmV?d00001 From beb1c1b6310ed05b4798bc4f6561fee8691bee76 Mon Sep 17 00:00:00 2001 From: Matthew Runyon Date: Thu, 31 Oct 2024 12:24:04 -0500 Subject: [PATCH 15/20] Change sphinx config for trailing underscore in param --- plugins/ui/conf.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/ui/conf.py b/plugins/ui/conf.py index e20cfdb4b..e111513dc 100644 --- a/plugins/ui/conf.py +++ b/plugins/ui/conf.py @@ -39,6 +39,8 @@ # options for sphinx_autodoc_typehints always_use_bars_union = True +strip_signature_backslash = True + from deephaven_server import Server # need a server instance to pull types from the autodocs From 02c1e6c4961f3b5a07542dcddddf171ed1b3c9d5 Mon Sep 17 00:00:00 2001 From: Matthew Runyon Date: Thu, 31 Oct 2024 12:25:24 -0500 Subject: [PATCH 16/20] Add error for if_ that is not a boolean --- .../src/js/src/elements/UITable/UITableModel.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/plugins/ui/src/js/src/elements/UITable/UITableModel.ts b/plugins/ui/src/js/src/elements/UITable/UITableModel.ts index fe16b7917..4fc494f47 100644 --- a/plugins/ui/src/js/src/elements/UITable/UITableModel.ts +++ b/plugins/ui/src/js/src/elements/UITable/UITableModel.ts @@ -71,7 +71,22 @@ export async function makeUiTableModel( } }); - baseTable.applyCustomColumns(customColumns); + if (customColumns.length > 0) { + await new TableUtils(dh).applyCustomColumns(baseTable, customColumns); + format.forEach((rule, i) => { + const { if_ } = rule; + if (if_ != null) { + const columnType = baseTable.findColumn( + getFormatCustomColumnName(i) + ).type; + if (!TableUtils.isBooleanType(columnType)) { + throw new Error( + `ui.TableFormat if_ must be a boolean column. "${if_}" is a ${columnType} column` + ); + } + } + }); + } if (joinColumns.length > 0) { const totalsTable = await table.getTotalsTable({ From e18beccb0fc52029b0acd3075c79405e44d7aa44 Mon Sep 17 00:00:00 2001 From: Matthew Runyon Date: Thu, 31 Oct 2024 16:19:35 -0500 Subject: [PATCH 17/20] Flesh out docs more --- plugins/ui/docs/components/table.md | 94 +++++++++++++++++-- .../src/js/src/elements/UITable/UITable.tsx | 2 + 2 files changed, 90 insertions(+), 6 deletions(-) diff --git a/plugins/ui/docs/components/table.md b/plugins/ui/docs/components/table.md index 196b52938..104707b8e 100644 --- a/plugins/ui/docs/components/table.md +++ b/plugins/ui/docs/components/table.md @@ -19,14 +19,14 @@ t = ui.table(_t) ## Formatting -You can format the table using the `formatting` prop. This prop takes a list of `ui.TableFormat` objects. `ui.TableFormat` is a dataclass that encapsulates the formatting options for a table. The full list of formatting options can be found in the [API Reference](#tableformat). +You can format the table using the `format_` prop. This prop takes a list of `ui.TableFormat` objects. `ui.TableFormat` is a dataclass that encapsulates the formatting options for a table. The full list of formatting options can be found in the [API Reference](#tableformat). ### Formatting Rows and Columns -Every formatting rule may optionally specify `cols` and `condition` properties. The `cols` property is a column name or list of column names to apply the formatting rule to. If `cols` is omitted, then the rule will be applied to the entire row. The `condition` property is a Deephaven formula to apply the formatting rule to. The `condition` property _must_ evaluate to a boolean. If `condition` is omitted, then the rule will be applied to every row. These may be combined to apply formatting to specific columns only when a condition is met. +Every formatting rule may optionally specify `cols` and `if_` properties. The `cols` property is a column name or list of column names to apply the formatting rule to. If `cols` is omitted, then the rule will be applied to the entire row. The `if_` property is a Deephaven formula to apply the formatting rule to. The `if_` property _must_ evaluate to a boolean. If `if_` is omitted, then the rule will be applied to every row. These may be combined to apply formatting to specific columns only when a condition is met. > [!NOTE] -> The `condition` property is a Deephaven formula evaluated in the engine. You can think of it like adding a new boolean column using [`update_view`](https://deephaven.io/core/docs/reference/table-operations/select/update-view/) +> The `if_` property is a Deephaven formula evaluated in the engine. You can think of it like adding a new boolean column using [`update_view`](https://deephaven.io/core/docs/reference/table-operations/select/update-view/) The following example shows how to format the `Sym` and `Exchange` columns with a red background and white text when the `Sym` is `DOG`. @@ -36,10 +36,10 @@ import deephaven.plot.express as dx t = ui.table( dx.data.stocks(), - formatting=[ + format_=[ ui.TableFormat( cols=["Sym", "Exchange"], - condition="Sym = `DOG`", + if_="Sym = `DOG`", background_color="red", color="white", ) @@ -59,13 +59,95 @@ import deephaven.plot.express as dx t = ui.table( dx.data.stocks(), - formatting=[ + format_=[ ui.TableFormat(background_color="blue", color="white"), ui.TableFormat(cols="Sym", background_color="red"), ], ) ``` +### Formatting Color + +Formatting rules for colors support Deephaven theme colors, hex colors, or any valid CSS color (e.g., `red`, `#ff0000`, `rgb(255, 0, 0)`). It is **recommended to use Deephaven theme colors** when possible to maintain a consistent look and feel across the UI. Theme colors will also automatically update if the user changes the theme. + +#### Formatting Text Color + +The `color` property sets the text color of the cell. If a cell has a `background_color`, but no `color` set, the text color will be set to black or white depending on which contrasts better with the background color. Setting the `color` property will override this behavior. + +The following example will make all text the foreground color except the `Sym` column, which will be white. In dark mode the foreground color is white, and in light mode the foreground color is black. In light mode, the `Sym` column will be nearly invisible because it is not a theme color + +```py +from deephaven import ui +import deephaven.plot.express as dx + +t = ui.table( + dx.data.stocks(), + format_=[ + ui.TableFormat(color="fg"), + ui.TableFormat(cols="Sym", color="white"), + ], +) +``` + +#### Formatting Background Color + +The `background_color` property sets the background color of the cell. Setting the `background_color` without setting `color` will result in the text color automatically being set to black or white based on the contrast with the `background_color`. + +The following example will make all the background color what is usually the foreground color. This means the table will have a white background with black text in dark theme and a black background with white text in light theme. The `Sym` column text will be the accent color in both themes. + +```py +from deephaven import ui +import deephaven.plot.express as dx + +t = ui.table( + dx.data.stocks(), + format_=[ + ui.TableFormat(background_color="fg"), + ui.TableFormat(cols="Sym", color="accent"), + ], +) +``` + +### Formatting Numeric Values + +> [!WARNING] +> Datetime values are considered numeric. If you provide a default format for numeric values, it will also apply to datetime values. It is recommended to specify `cols` when applying value formats. + +Numeric values can be formatted using the `value` property. The `value` property is a string that follows [the GWT Java NumberFormat syntax](https://www.gwtproject.org/javadoc/latest/com/google/gwt/i18n/client/NumberFormat.html). If a numeric format is applied to a non-numeric column, it will be ignored. + +This example will format the `Price` and `Dollars` columns with the dollar sign, a comma separator for every 3 digits, 2 decimal places, and a minimum of 1 digit to the left of the decimal point. The `Random` column will be formatted with 3 decimal places and will drop the leading zero if the absolute value is less than 1. + +```py +from deephaven import ui +import deephaven.plot.express as dx + +t = ui.table( + dx.data.stocks(), + format_=[ + ui.TableFormat(cols=["Price", "Dollars"], value="$#,##0.00"), + ui.TableFormat(cols="Random", value="#.000") + ], +) +``` + +### Formatting Datetime Values + +Datetime values can be formatted using the `value` property. The `value` property is a string that follows [the GWT Java DateTimeFormat syntax](https://www.gwtproject.org/javadoc/latest/com/google/gwt/i18n/client/DateTimeFormat.html) with additional support for nanoseconds. You may provide up to 9 `S` characters after the decimal to represent partial seconds down to nanoseconds. + +The following example formats the `Timestamp` column to show the short date of the week, day of the month, short month name, full year, hours, minutes, seconds, and microseconds with the user selected timezone. + +```py +from deephaven import ui +import deephaven.plot.express as dx + +t = ui.table( + dx.data.stocks(), + format_=[ + ui.TableFormat(cols="Timestamp", value="E, dd MMM yyyy HH:mm:ss.SSSSSS z"), + ], +) +``` + ## Events You can listen for different user events on a `ui.table`. There is both a `press` and `double_press` event for `row`, `cell`, and `column`. These events typically correspond to a click or double click on the table. The event payloads include table data related to the event. For `row` and `column` events, the corresponding data within the viewport will be sent to the event handler. The viewport is typically the visible area ± a window equal to the visible area (e.g., if rows 5-10 are visible, rows 0-15 will be in the viewport). diff --git a/plugins/ui/src/js/src/elements/UITable/UITable.tsx b/plugins/ui/src/js/src/elements/UITable/UITable.tsx index 2cddd67c1..b55653c99 100644 --- a/plugins/ui/src/js/src/elements/UITable/UITable.tsx +++ b/plugins/ui/src/js/src/elements/UITable/UITable.tsx @@ -129,7 +129,9 @@ export function UITable({ columnGroups, }); + // TODO: #982 respond to prop changes here const [format] = useState(formatProp ?? []); + // TODO: #981 move databars to format and rewire for databar support const [databars] = useState(databarsProp ?? []); const colorMap = useMemo(() => { From 778ee385bcb7d18f8a1e3bb24e426229696600da Mon Sep 17 00:00:00 2001 From: Matthew Runyon Date: Mon, 4 Nov 2024 10:50:08 -0600 Subject: [PATCH 18/20] Address docs comments --- plugins/ui/docs/components/table.md | 36 ++++++++++++++--------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/plugins/ui/docs/components/table.md b/plugins/ui/docs/components/table.md index 104707b8e..799629ca4 100644 --- a/plugins/ui/docs/components/table.md +++ b/plugins/ui/docs/components/table.md @@ -11,7 +11,7 @@ _t = empty_table(10).update("X=i") t = ui.table(_t) ``` -## UI Recommendations +## UI recommendations 1. It is not necessary to use a UI table if you do not need any of its properties. You can just use the Deephaven table directly. 2. Use a UI table to show properties like filters as if the user had created them in the UI. Users can change the default values provided by the UI table, such as filters. @@ -21,12 +21,12 @@ t = ui.table(_t) You can format the table using the `format_` prop. This prop takes a list of `ui.TableFormat` objects. `ui.TableFormat` is a dataclass that encapsulates the formatting options for a table. The full list of formatting options can be found in the [API Reference](#tableformat). -### Formatting Rows and Columns +### Formatting rows and columns -Every formatting rule may optionally specify `cols` and `if_` properties. The `cols` property is a column name or list of column names to apply the formatting rule to. If `cols` is omitted, then the rule will be applied to the entire row. The `if_` property is a Deephaven formula to apply the formatting rule to. The `if_` property _must_ evaluate to a boolean. If `if_` is omitted, then the rule will be applied to every row. These may be combined to apply formatting to specific columns only when a condition is met. +Every formatting rule may optionally specify `cols` and `if_` properties. The `cols` property is a column name or list of column names to which the formatting rule applies. If `cols` is omitted, then the rule will be applied to the entire row. The `if_` property is a Deephaven formula that indicates a formatting rule should be applied conditionally. The `if_` property _must_ evaluate to a boolean. If `if_` is omitted, then the rule will be applied to every row. These may be combined to apply formatting to specific columns only when a condition is met. > [!NOTE] -> The `if_` property is a Deephaven formula evaluated in the engine. You can think of it like adding a new boolean column using [`update_view`](https://deephaven.io/core/docs/reference/table-operations/select/update-view/) +> The `if_` property is a Deephaven formula evaluated in the engine. You can think of it like adding a new boolean column using [`update_view`](https://deephaven.io/core/docs/reference/table-operations/select/update-view/). The following example shows how to format the `Sym` and `Exchange` columns with a red background and white text when the `Sym` is `DOG`. @@ -47,7 +47,7 @@ t = ui.table( ) ``` -### Formatting Rule Priority +### Formatting rule priority The last matching formatting rule for each property will be applied. This means the lowest priority rules should be first in the list with higher priority rules at the end. @@ -66,15 +66,15 @@ t = ui.table( ) ``` -### Formatting Color +### Formatting color Formatting rules for colors support Deephaven theme colors, hex colors, or any valid CSS color (e.g., `red`, `#ff0000`, `rgb(255, 0, 0)`). It is **recommended to use Deephaven theme colors** when possible to maintain a consistent look and feel across the UI. Theme colors will also automatically update if the user changes the theme. -#### Formatting Text Color +#### Formatting text color The `color` property sets the text color of the cell. If a cell has a `background_color`, but no `color` set, the text color will be set to black or white depending on which contrasts better with the background color. Setting the `color` property will override this behavior. -The following example will make all text the foreground color except the `Sym` column, which will be white. In dark mode the foreground color is white, and in light mode the foreground color is black. In light mode, the `Sym` column will be nearly invisible because it is not a theme color +The following example will make all text the foreground color except the `Sym` column, which will be white. In dark mode, the foreground color is white, and in light mode, it is black. In light mode, the `Sym` column will be nearly invisible because it is not a theme color. ```py from deephaven import ui @@ -89,7 +89,7 @@ t = ui.table( ) ``` -#### Formatting Background Color +#### Formatting background color The `background_color` property sets the background color of the cell. Setting the `background_color` without setting `color` will result in the text color automatically being set to black or white based on the contrast with the `background_color`. @@ -108,7 +108,7 @@ t = ui.table( ) ``` -### Formatting Numeric Values +### Formatting numeric values > [!WARNING] > Datetime values are considered numeric. If you provide a default format for numeric values, it will also apply to datetime values. It is recommended to specify `cols` when applying value formats. @@ -130,9 +130,9 @@ t = ui.table( ) ``` -### Formatting Datetime Values +### Formatting datetime and timestamp values -Datetime values can be formatted using the `value` property. The `value` property is a string that follows [the GWT Java DateTimeFormat syntax](https://www.gwtproject.org/javadoc/latest/com/google/gwt/i18n/client/DateTimeFormat.html) with additional support for nanoseconds. You may provide up to 9 `S` characters after the decimal to represent partial seconds down to nanoseconds. +Datetime and timestamp values can be formatted using the `value` property. The `value` property is a string that follows [the GWT Java DateTimeFormat syntax](https://www.gwtproject.org/javadoc/latest/com/google/gwt/i18n/client/DateTimeFormat.html) with additional support for nanoseconds. You may provide up to 9 `S` characters after the decimal to represent partial seconds down to nanoseconds. The following example formats the `Timestamp` column to show the short date of the week, day of the month, short month name, full year, hours, minutes, seconds, and microseconds with the user selected timezone. @@ -173,7 +173,7 @@ t = ui.table( ) ``` -## Context Menu +## Context menu Items can be added to the bottom of the `ui.table` context menu (right-click menu) by using the `context_menu` or `context_header_menu` props. The `context_menu` prop adds items to the cell context menu, while the `context_header_menu` prop adds items to the column header context menu. You can pass either a single dictionary for a single item or a list of dictionaries for multiple items. @@ -237,7 +237,7 @@ t = ui.table( ) ``` -### Dynamic Menu Items +### Dynamic menu items Menu items can be dynamically created by passing a function as the context item. The function will be called with the data of the cell that was clicked when the menu was opened, and must return the menu items or None if you do not want to add context menu items based on the cell info. @@ -261,7 +261,7 @@ t = ui.table( ) ``` -## Column Order and Visibility +## Column order and visibility You can freeze columns to the front of the table using the `frozen_columns` prop. Frozen columns will always be visible on the left side of the table, even when the user scrolls horizontally. The `frozen_columns` prop takes a list of column names to freeze. @@ -284,7 +284,7 @@ t = ui.table( ![Example of column order and visibility](../_assets/table_column_order.png) -## Grouping Columns +## Grouping columns Columns can be grouped visually using the `column_groups` prop. Columns in a column group are moved so they are next to each other, and a header spanning all columns in the group is added. Columns can be rearranged within a group, but they cannot be moved outside of the group without using the table sidebar menu. @@ -326,7 +326,7 @@ t = ui.table( ![Example of column groups](../_assets/table_column_groups.png) -## Always Fetching Some Columns +## Always fetching some columns Deephaven only fetches data for visible rows and columns within a window around the viewport (typically the viewport plus 1 page in all directions). This reduces the amount of data transferred between the server and client and allows displaying tables with billions of rows. Sometimes you may need to always fetch columns, such as a key column for a row press event. You can use the `always_fetch_columns` prop to specify columns that should always be fetched regardless of their visibility. @@ -349,7 +349,7 @@ t = ui.table( ) ``` -## Quick Filters +## Quick filters Quick filters are an easy way to filter the table while also showing the user what filters are currently applied. These filters are applied on the server via request from the client, so users may change the filters without affecting other users. Unlike a `where` statement to filter a table on the server, quick filters can be easily changed by the user. From 39d25ad6853f5004f040421fa5fc3af54fc0ea11 Mon Sep 17 00:00:00 2001 From: Matthew Runyon Date: Mon, 4 Nov 2024 10:56:15 -0600 Subject: [PATCH 19/20] Add support for single rule without list --- plugins/ui/docs/components/table.md | 2 +- plugins/ui/src/deephaven/ui/components/table.py | 4 ++-- plugins/ui/src/js/src/elements/UITable/UITable.tsx | 2 +- plugins/ui/src/js/src/elements/UITable/UITableUtils.tsx | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/ui/docs/components/table.md b/plugins/ui/docs/components/table.md index 799629ca4..1d80c95e2 100644 --- a/plugins/ui/docs/components/table.md +++ b/plugins/ui/docs/components/table.md @@ -19,7 +19,7 @@ t = ui.table(_t) ## Formatting -You can format the table using the `format_` prop. This prop takes a list of `ui.TableFormat` objects. `ui.TableFormat` is a dataclass that encapsulates the formatting options for a table. The full list of formatting options can be found in the [API Reference](#tableformat). +You can format the table using the `format_` prop. This prop takes a `ui.TableFormmat` object or list of `ui.TableFormat` objects. `ui.TableFormat` is a dataclass that encapsulates the formatting options for a table. The full list of formatting options can be found in the [API Reference](#tableformat). ### Formatting rows and columns diff --git a/plugins/ui/src/deephaven/ui/components/table.py b/plugins/ui/src/deephaven/ui/components/table.py index 949c2ba01..6c51a3c17 100644 --- a/plugins/ui/src/deephaven/ui/components/table.py +++ b/plugins/ui/src/deephaven/ui/components/table.py @@ -94,7 +94,7 @@ class table(Element): Args: table: The table to wrap - format_: A list of formatting rules for the table. + format_: A formatting rule or list of formatting rules for the table. on_row_press: The callback function to run when a row is clicked. The callback is invoked with the visible row data provided in a dictionary where the column names are the keys. @@ -184,7 +184,7 @@ def __init__( self, table: Table, *, - format_: list[TableFormat] | None = None, + format_: TableFormat | list[TableFormat] | None = None, on_row_press: RowPressCallback | None = None, on_row_double_press: RowPressCallback | None = None, on_cell_press: CellPressCallback | None = None, diff --git a/plugins/ui/src/js/src/elements/UITable/UITable.tsx b/plugins/ui/src/js/src/elements/UITable/UITable.tsx index b55653c99..65e1f6834 100644 --- a/plugins/ui/src/js/src/elements/UITable/UITable.tsx +++ b/plugins/ui/src/js/src/elements/UITable/UITable.tsx @@ -130,7 +130,7 @@ export function UITable({ }); // TODO: #982 respond to prop changes here - const [format] = useState(formatProp ?? []); + const [format] = useState(formatProp != null ? ensureArray(formatProp) : []); // TODO: #981 move databars to format and rewire for databar support const [databars] = useState(databarsProp ?? []); diff --git a/plugins/ui/src/js/src/elements/UITable/UITableUtils.tsx b/plugins/ui/src/js/src/elements/UITable/UITableUtils.tsx index 933f2a7dc..597ec0cd5 100644 --- a/plugins/ui/src/js/src/elements/UITable/UITableUtils.tsx +++ b/plugins/ui/src/js/src/elements/UITable/UITableUtils.tsx @@ -50,7 +50,7 @@ export type FormattingRule = { export type UITableProps = StyleProps & { table: dh.WidgetExportedObject; - format_?: FormattingRule[]; + format_?: FormattingRule | FormattingRule[]; onCellPress?: (data: CellData) => void; onCellDoublePress?: (data: CellData) => void; onRowPress?: (rowData: RowDataMap) => void; From dd90946324aa6b5a1f334a96c38cb26805600d20 Mon Sep 17 00:00:00 2001 From: Matthew Runyon Date: Mon, 4 Nov 2024 16:18:32 -0600 Subject: [PATCH 20/20] Fix autocomplete of params --- plugins/ui/src/deephaven/ui/components/table.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/ui/src/deephaven/ui/components/table.py b/plugins/ui/src/deephaven/ui/components/table.py index 6c51a3c17..37f1a04a2 100644 --- a/plugins/ui/src/deephaven/ui/components/table.py +++ b/plugins/ui/src/deephaven/ui/components/table.py @@ -20,7 +20,7 @@ logger = logging.getLogger(__name__) -@dataclass() +@dataclass class TableFormat: """ A formatting rule for a table. @@ -48,7 +48,7 @@ class TableFormat: mode: TableDatabar | None = None -@dataclass() +@dataclass class TableDatabar: """ A databar configuration for a table.