Behaves like a Table externally, but data, state, and viewports are managed by an entirely different mechanism, and so reimplemented here.

Any time a change is made, we build a new request and send it to the server, and wait for the updated state.

Semantics around getting updates from the server are slightly different - we don't "unset" the viewport here after operations are performed, but encourage the client code to re-set them to the desired position.

The table size will be -1 until a viewport has been fetched.

Similar to a table, a Tree Table provides access to subscribed viewport data on the current hierarchy. A different Row type is used within that viewport, showing the depth of that node within the tree and indicating details about whether it has children or is expanded. The Tree Table itself then provides the ability to change if a row is expanded or not. Methods used to control or check if a row should be expanded or not can be invoked on a TreeRow instance, or on the number of the row (thus allowing for expanding/collapsing rows which are not currently visible in the viewport).

Events and viewports are somewhat different from tables, due to the expense of computing the expanded/collapsed rows and count of children at each level of the hierarchy, and differences in the data that is available.

  • There is no totalSize property.
  • The viewport is not un-set when changes are made to filter or sort, but changes will continue to be streamed in. It is suggested that the viewport be changed to the desired position (usually the first N rows) after any filter/sort change is made. Likewise, getViewportData will always return the most recent data, and will not wait if a new operation is pending.
  • Custom columns are not directly supported. If the TreeTable was created client-side, the original Table can have custom columns applied, and the TreeTable can be recreated.
  • Whereas Table has a totalsTableConfig property, it is defined here as a method, getTotalsTableConfig. This returns a promise so the config can be fetched asynchronously.
  • Totals Tables for trees vary in behavior between tree tables and roll-up tables. This behavior is based on the original flat table used to produce the Tree Table - for a hierarchical table (i.e. Table.treeTable in the query config), the totals will include non-leaf nodes (since they are themselves actual rows in the table), but in a roll-up table, the totals only include leaf nodes (as non-leaf nodes are generated through grouping the contents of the original table). Roll-ups also have the dh.includeConstituents property, indicating that a Column in the tree may have a constituentType property reflecting that the type of cells where hasChildren is false will be different from usual.

Hierarchy

  • TreeTable

Implements

Constructors

Properties

description?: string
layoutHints?: LayoutHints
EVENT_DISCONNECT: string

event.detail is the currently visible viewport data based on the active viewport configuration.

EVENT_RECONNECT: string

event.detail is the currently visible viewport data based on the active viewport configuration.

EVENT_RECONNECTFAILED: string

event.detail is the currently visible viewport data based on the active viewport configuration.

EVENT_REQUEST_FAILED: string

event.detail is the currently visible viewport data based on the active viewport configuration.

EVENT_UPDATED: string

event.detail is the currently visible viewport data based on the active viewport configuration.

Accessors

  • get columns(): Column[]
  • The columns that can be shown in this Tree Table.

    Returns Column[]

    Column array

  • get includeConstituents(): boolean
  • True if this is a roll-up and will provide the original rows that make up each grouping.

    Returns boolean

    boolean

  • get isClosed(): boolean
  • True if this table has been closed.

    Returns boolean

    boolean

  • get isRefreshing(): boolean
  • True if this table may receive updates from the server, including size changed events, updated events after initial snapshot.

    Returns boolean

    boolean

  • get size(): number
  • The current number of rows given the table's contents and the various expand/collapse states of each node. (No totalSize is provided at this time; its definition becomes unclear between roll-up and tree tables, especially when considering collapse/expand states).

    Returns number

    double

  • get sort(): Sort[]
  • The current sort configuration of this Tree Table

    Returns Sort[]

    Sort array.

Methods

  • Listen for events on this object.

    Type Parameters

    • T

      the type of the data that the event will provide

    Parameters

    • name: string

      the name of the event to listen for

    • callback: ((e) => void)

      a function to call when the event occurs

        • (e): void
        • Parameters

          • e: CustomEvent<T>

          Returns void

    Returns (() => void)

    Returns a cleanup function.

      • (): void
      • Listen for events on this object.

        Returns void

        Returns a cleanup function.

  • Applies the given filter to the contents of the tree in such a way that if any node is visible, then any parent node will be visible as well even if that parent node would not normally be visible due to the filter's condition. Returns the previous sort in use.

    Parameters

    Returns FilterCondition[]

    FilterCondition array

  • Applies the given sort to all levels of the tree. Returns the previous sort in use.

    Parameters

    Returns Sort[]

    Sort array

  • Indicates that the table will no longer be used, and server resources can be freed.

    Returns void

  • Collapses the given node, so that its children and descendants are not visible in the size or the viewport. The parameter can be the row index, or the row object itself. Equivalent to setExpanded(row, false, false).

    Parameters

    Returns void

  • Returns void

  • a new copy of this treetable, so it can be sorted and filtered separately, and maintain a different viewport. Unlike Table, this will not copy the filter or sort, since tree table viewport semantics differ, and without a viewport set, the treetable doesn't evaluate these settings, and they aren't readable on the properties. Expanded state is also not copied.

    Returns Promise<TreeTable>

    Promise of dh.TreeTable

  • Expands the given node, so that its children are visible when they are in the viewport. The parameter can be the row index, or the row object itself. The second parameter is a boolean value, false by default, specifying if the row and all descendants should be fully expanded. Equivalent to setExpanded(row, true) with an optional third boolean parameter.

    Parameters

    • row: number | TreeRow
    • Optional expandDescendants: boolean

    Returns void

  • Returns void

  • a column with the given name, or throws an exception if it cannot be found

    Parameters

    • key: string

    Returns Column

    Column

  • an array with all of the named columns in order, or throws an exception if one cannot be found.

    Parameters

    • keys: string[]

    Returns Column[]

    Column array

  • Parameters

    • Optional config: object

    Returns Promise<TotalsTable>

  • Parameters

    • Optional config: object

    Returns Promise<TotalsTable>

  • true if the given row is expanded, false otherwise. Equivalent to TreeRow.isExpanded, if an instance of the row is available

    Parameters

    Returns boolean

    boolean

  • Type Parameters

    • T

    Parameters

    • eventName: string
    • Optional timeoutInMillis: number

    Returns Promise<CustomEvent<T>>

  • Removes an event listener added to this table.

    Type Parameters

    • T

    Parameters

    • name: string
    • callback: ((e) => void)
        • (e): void
        • Parameters

          • e: CustomEvent<T>

          Returns void

    Returns boolean

  • Provides Table-like selectDistinct functionality, but with a few quirks, since it is only fetching the distinct values for the given columns in the source table:

    • Rollups may make no sense, since values are aggregated.
    • Values found on orphaned (and removed) nodes will show up in the resulting table, even though they are not in the tree.
    • Values found on parent nodes which are only present in the tree since a child is visible will not be present in the resulting table.

    Parameters

    Returns Promise<Table>

  • Specifies if the given node should be expanded or collapsed. If this node has children, and the value is changed, the size of the table will change. If node is to be expanded and the third parameter, expandDescendants, is true, then its children will also be expanded.

    Parameters

    • row: number | TreeRow
    • isExpanded: boolean
    • Optional expandDescendants: boolean

    Returns void

  • Parameters

    • firstRow: number
    • lastRow: number
    • Optional columns: Column[]
    • Optional updateInterval: number

    Returns void

  • Returns TypedTicket