Table Information Design Usage Guideline Bookmark this Guideline Printable Page


RCUX Document Version 5.0.4 for Oracle® Fusion Middleware 11g Release 1 Patch Set 1 (11.1.1.2.0)
Last Updated 17-Nov-2010

Guideline Contents

Note: Images in this guideline are provided as a general reference, and may not be exact representations of FusionFX pages.

Related Guidelines

Guideline Section For Information About
Table Overview All Introduction to table design and interaction.
Table Elements All Range of possible controls and other components in each area of a table, such as menus, toolbars, rows, columns, and status bar.
Table Display Manipulation All Describes range of options for users to modify the display of a table, including sorting, filtering, resizing columns, and other configuration options.
Common Table Actions All Describes common data-specific actions, such as Create, Delete, and Duplicate.
Table Interaction Methods All Provides heuristics for use of different interaction methods within a table, such as use of select and act methods, editing within tables, functional icons, and drill-down.
PivotTable All Pivot Tables share much of the same design and behaviors as tables.
Graph All Tabular data display is a common alternative to graphical data display.
Gauge   Displaying gauges in table cells.

Related ADF Elements

Refer to the ADF Faces Rich Client demos page to find demos and tag documentation for the ADF elements related to this component:

ADF element Notes
af:column  
af:panelCollection  
af:table  

General Principles Bookmark this Heading Return to Top

Note: For an introduction to tables, see the Table Overview guideline. For further details on the different aspects of table design and interaction, see the links in the Related Guidelines section above.

Table Size Bookmark this Heading Return to Top

Table Width Bookmark this Heading Return to Top

Description:

  • By default, the width of the table matches the width of its container. If the width of the container changes, the table resizes to fit within or fill the container.
  • Tables may have between one and an unlimited number of columns. Developers determine the number of columns by choosing which attributes to display.
  • If a column contains web widgets, the column width adjusts automatically to accommodate the widest cell in that column.
  • Developers may affect the width of columns by specifying the content of the cell, such as text input fields, status icons, and functional icons. See Table Cells in the Table Elements guideline for details.
  • If the number of columns in the table exceeds the defined width, a horizontal scroll bar appears. See Scroll Bars in the Table Elements guideline for more details.

Usage:

  • Product teams may set the width of the table using any CSS measurement unit, including pixels, percentages, inches, metric units (cm and mm), and typographic units (em, ex, pc, pt).
  • If the width of the table is longer than cumulative column widths, there will be dead space at the end of the last column by default. Product teams may optionally eliminate this dead space by stretching the last column to fill the available space.
  • Horizontal scrolling should usually be avoided, because users may not realize that additional columns are hidden from view.
    • To avoid horizontal scrolling, a table should include no more than 6-8 columns—six for tables with wide columns and eight for tables with narrower columns, such as actions columns of functional icons. For more information on column content, see Columns in the Table Elements guideline.
    • When objects have too many attributes to be displayed within the table, it may be necessary to provide a drill down link to display the full set of attributes.
  • A limited amount of horizontal scrolling may be appropriate to optimize data entry and reduce task completion times. However, limit horizontal scrolling to less than three screen widths of columns. Consider allowing scrolling when production users need to:
    • Quickly review or compare information across multiple objects in a table.
    • See the context of other records while viewing a specific object.
    • Quickly review and act upon multiple objects in succession.

Table Height Bookmark this Heading Return to Top

Description:

  • By default, the height of the table is 300 pixels.
  • Each row's height adjusts independently to accommodate the tallest cell in that row.
  • If the number of rows of data in the table exceeds the defined height, a vertical scroll bar appears. See Scroll Bars in the Table Elements guideline for more details.
  • If the number of rows of data in the table is less than the defined height, there will be vertical white space beneath the last visible row of data unless autoHeightRows is enabled.
Note: The af:table autoHeightRows attribute should generally be used in tables, to help reduce vertical white space in rows. The exception is cases where table height could change dramatically during display, such as a table with hide/show details regions—the table's height could change significantly when a row's details region expands or collapses.

Usage:

  • Product teams may set the height of the table to any height using any CSS measurement unit, including pixels, percentages, inches, metric units (cm and mm), and typographic units (em, ex, pc, pt).
  • Row height may be affected by wrapping in cells or the presence of long strings or tall images in cells. If the table is likely to have abnormally large row heights (as in a procurement application), product teams should set the height to accommodate an average of 20 rows or more, depending on the anticipated row height.
  • Vertical scrolling within a table is not problematic. However, it is recommended to avoid having both table and browser scroll bars displayed at the same time, because users may click the other scroll bar by accident.
  • When working with smaller sets of data, it is recommended to set the table height to be able to display all records without vertical scrolling.
  • Variable table height is preferred when the table is the primary component on the page, allowing the table to increase its height if needed when the user resizes the browser window.
  • Fixed table heights are preferred in complex layouts where dynamic resizing of components could break the layout. When using fixed table heights, all tables should be able to display a minimum of three rows in addition to column headers, toolbars, and status bars, if present. This equates to the following minimum heights in pixels:
    • Tables without toolbar or status bar: 80 px
    • Tables with toolbar and status bar: 125 px
Note: The pixel measurements provided for minimum table height assume standard size data in cells, no wrapping, no images, and no horizontal scroll bars. It is recommended to provide larger tables unless working with a constrained page layout.

Displaying an Empty Table Bookmark this Heading Return to Top

A table may be displayed without data. This is commonly used for tasks where the user performs an action that returns results data in a table, or where users frequently populate the table with their own data.

  • An empty table is displayed to set user expectations for the type of results that will be returned once the action is performed.
  • An empty table includes specific column headers and no rows. A pre-defined text string may be displayed by itself in the view region where rows normally display.
  • When the action is performed, the resulting data fills the table.
  • The default text in an empty table is "No data to display." Product developers may customize this text based on the table's usage context. The following matrix shows examples of such customizations:
Context Text String Comments
No search conducted "No search conducted." This occurs when the user navigates to a search page and has not yet conducted a search.
No objects match search criteria "No results found." Search criteria fields should remain unchanged, allowing review and correction before running the search again.
No objects of specified type exist If user has the option to create an object:
"To add {a | an} [objectType] to the list, click Create."
This occurs when the user navigates to an object list page for which there is no data, such as an "Open Purchase Orders" page when all POs are closed.
Note: When customizing text for empty tables, the text string should be in parentheses in situations where the text may be confused with actual table data.

Am empty table featuring the default  "No data to display" text

Empty Table with "No data to display." Text

Grid Lines and Banding Bookmark this Heading Return to Top

Purpose:

Grid lines and banding emphasize different aspects of the information in a table.

Description:

A grid is made from thin horizontal and vertical rules between rows and/or columns in a table. Bands are formed when the background colors of rows or columns alternate between white and light gray.

Usage:

Grids are often sufficient for simple tables. Bands provide stronger emphasis for complex tables, including wide tables. Grids are also often used to provide another level of structure to a banded table.

Grid Lines Bookmark this Heading Return to Top

A grid is made from thin horizontal and vertical rules between rows and/or columns in a table. The following grid line combinations are supported:

  • Horizontal grid lines
  • Vertical grid lines
  • Horizontal and vertical grid lines
  • No grid lines

A table showing only horizontal grid lines between table rows.

Grid Lines: Horizontal

A table showing only vertical grid lines between the columns.

Grid Lines: Vertical

 A table displaying both horizontal and vertical grid lines

Grid Lines: Horizontal and Vertical

A table displaying no grid lines at all between rows or columns.

Grid Lines: None

See Common Grid Line and Banding Combinations below for usage recommendations.

Banding Bookmark this Heading Return to Top

Horizontal and/or vertical banding should not be used (and should be set to "0") except when it is difficult to determine the horizontal and vertical relationships of the data, as in the following cases:

  • Tables with a large number of rows and columns. For example, there may be instances where the table contains a number of columns that extend beyond the width of the table, which the user must scroll to see. In this case, banding helps the user keep track of data from row to row when scrolling across the table.
  • Tables with dense numerical data. For example, when the table contains a large number of short columns of dollar amounts or numerical data, it is difficult for the user to scan the rows. In this case, banding helps to visually separate between rows of data.
Note: Individual row, column, or cell banding is not supported.

Horizontal banding on an number of rows in the center of a table

Banding: Horizontal

Vertical banding on every other column in a table

Banding: Vertical

A table displaying both horizontal and vertical banding in some rows and columns.

Banding: Horizontal and Vertical

Banding: Intervals

Banding: Intervals

Any combination of horizontal and vertical banding intervals is supported, for example: 'n' non-banded rows / 'nn' banded rows. See the following section for usage recommendations.

Common Grid Line and Banding Combinations Bookmark this Heading Return to Top

The following matrix lists some common combinations of grids and bands, and provides recommendations for when to use them. These recommendations are based on the following characteristics:

  • Emphasis: Tables may be banded based on horizontal or vertical relationships in the information, or both.
  • Information Density: Tables containing single names and numbers have light information density. Tables with extensive text, complex graphics, or complex controls have medium-to-heavy density.
  • Interactivity: Tables containing minimal, simple controls, such as a check box in each row, provide light interactivity. Tables with multiple complex controls in every row provide heavy interactivity.
Grid/Band Option Emphasis Density Interactivity Notes
Horizontal grid only Horizontal relationships (cells in a row) Medium Medium to heavy  
Vertical and horizontal grid (with column headers only) Equal relationships between rows and columns Medium to dense Light to medium Use for small data sets, where identification of row headers is not needed.
Vertical and horizontal grid (with both row and column headers) Equal relationships between rows and columns Medium to dense Light to medium  
Horizontal grid with partial vertical grid Horizontal relationships in all rows and vertical relationships in some columns Medium Light to medium  
Horizontal Bands with horizontal grid Horizontal relationships in wide tables Medium Medium to heavy  
Horizontal Bands with both vertical and horizontal grid Horizontal relationships in wide tables. The vertical grid is used here mainly to create a boundary for truncated data and not necessarily to emphasize vertical relationships. Medium Light to medium  
Vertical bands with horizontal grid Heavy emphasis on vertical relationships. The horizontal grid is used here mainly to separate rows visually and not necessarily to emphasize horizontal relationships. Medium Light to medium  
Vertical bands with both vertical and horizontal grid Heavy emphasis on vertical relationships. The vertical grid is also used to emphasize the vertical relationships in the information. The horizontal grid is used here mainly to separate rows visually and not necessarily to emphasize horizontal relationships. Medium Light to medium  
Vertical bands with both vertical and horizontal grid (and both row and column headers) Both horizontal and vertical relationships with some additional emphasis on vertical relationships. Medium to heavy Medium  
Horizontal interval banding with both vertical and horizontal grid Horizontal relationships in wide tables. Medium to heavy Medium to heavy Not recommended to exceed intervals of four rows, as visual effectiveness is lost in long tables.
Vertical interval banding with both vertical and horizontal grid Vertical relationships among banded columns Medium to heavy Medium to heavy Not recommended to exceed intervals of three columns, as visual effectiveness is lost in overly wide tables.
Both vertical and horizontal interval banding with both vertical and horizontal grid Emphasis on cells at intersection of bands Medium to heavy Medium to heavy Not recommended to exceed intervals of three columns and four rows, as visual effectiveness is lost in overly wide and long tables.
No banding and no grid Equal emphasis for all data Light Light Use only for small record sets with few attributes.

Column Groups Bookmark this Heading Return to Top

Purpose:

Allow a column to be divided into multiple child columns.

Example:

A column labeled "Column Group" may be divided into secondary columns labeled "ChildBA","ChildBB", and "ChildBC". In this case, the three secondary columns span the full width of the primary column.

A column group in which there are two levels, and the three columns in the column group span the full width of one column

Column Group: Two Levels

Usage:
  • Column groups are only used when an attribute is a container for a set of subordinate attributes.
  • Column groups consist of one parent column and at least two child columns.
  • It is recommended to show no more than two levels because additional levels are not accessible. If more levels need to be displayed, consider using a Crosstab/Pivot Table.
  • There is no limit to the number of child columns in a column group, but it is recommended to include no more than four to avoid having wide tables. If more child columns need to be displayed, consider drilling down to a separate table if comparison of parent columns is not required.
  • A column group context menu is the same as the context menu for multiple column selection; actions that are not supported for multiple column selection appear disabled.
  • The sorted column icon and sortable column indicator are not permitted in parent columns; however, advanced sort (using a context menu or menu bar) is permitted on column group selection.
  • Up and down arrow keys move keyboard focus between a parent column header and child column headers.
Note: Row groups are not supported by ADF.

Column Totals Bookmark this Heading Return to Top

Purpose:

Calculate totals for part or all of a set of objects with one or more numeric attributes.

Description:

  • Totaling is not included in the component, but may be coded by product teams.
  • There are three types of totals:
    • Subtotals: For totaling a subset of cells in a column. Subtotals may appear anywhere in the column.
    • Totals: For totaling all cells in a column, whether visible or not. When used, Totals always appear in the last row.
    • Grand Totals: For totaling across multiple tables or filtered set of objects. Grand Totals are placed above or below the table.
  • Subtotal and Total data need to be labeled when displayed in the table. The labels should be placed in the first data column. Additionally, the Total label should be placed in the column footer.
  • Subtotals and Totals may wrap. If columns or rows containing numbers have wrap turned off, and there is not enough horizontal space to display the entire number, the pound sign '#' will repeat in the cell as many times as the width of the cell permits.

Usage:

  • A single table may include subtotals, totals, and grand totals. See individual subsections below for detailed recommendations. The recommended combinations are:
    • Total only: For simple totals of one or more columns.
    • Subtotals and Total: For columns containing distinctive groups of objects.
    • Total and Grand Total: For totals across tables or filtered set of objects.
    • Subtotals, Total, and Grand Total: For totals across multiple tables or filtered set of objects that also contain distinctive subgroups of objects.

A table of numbers in which totals and subtotals are displayed in multiple columns within the table, and column totals also appear at the end of the table in the columns.

Totals and Subtotals in Multiple Columns

Note: Totals should only be provided when a table has 300 rows or less, and total amounts can be determined on page load.

Subtotals Bookmark this Heading Return to Top

Purpose:

Calculate subtotal values for a set of rows in a single column.

Description:

  • Subtotals can appear in any row in the table, and may be scrolled like other rows in the table.
  • When Totaling is available on the table, Subtotal rows may not be reordered, sorted, removed, duplicated, or deleted.
  • If a column has been frozen, the scrolling of the Subtotal rows behaves the same as all other rows.

Usage:

  • Subtotals should only be used in conjunction with column totals.
  • Teams are responsible for making certain that Subtotal rows will not be sorted, reordered, removed, duplicated or deleted.
  • It is recommended to use Subtotals in longer, scrolling tables containing distinctive subgroups of objects, and to use them in conjunction with a Total for the entire column.
  • Subtotals may be added to multiple columns in the same table.
  • Subtotal rows do not have sequential row header text.
  • Subtotal rows may only include the following content:
    • The optional label Subtotal (or an equivalent label). This is recommended unless an equivalent row header label is provided.
    • The subtotal value
    • Optional unit description, such as a currency symbol, or weight. See the Common Formats guideline for more details.
    • A Recalculate button, if refreshing the subtotal using PPR is disabled for performance reasons.

Totals Bookmark this Heading Return to Top

Purpose:

Calculate total values for a single column.

Description:

  • The Total row is fixed and is always the footer row in the table.
  • The amount in the Total row is equal to the sum of all cells in the column being totaled, whether visible or not.
  • Total rows do not have row header text.
  • Total rows are read-only, and cannot be reordered, sorted, removed, duplicated, or deleted.
  • If a column has been frozen, the scrolling of the Total row behaves the same as all other rows.

Usage:

  • Total rows should only be included if a table has 300 rows or less, and total amounts can be determined at page load time.
  • Any column in the table may be totaled but it is recommended to display columns with Totals to the right of object names and other attributes. (in bi-directional layouts, the totals move to the left side.)
  • Totals may be added to multiple columns in the same table.
  • A Total row may only include the following read-only content:
    • The optional label Total (or an equivalent label). This is recommended in most cases.
    • The total value
    • Optional unit description, such as a currency symbol, or weight. See the Common Formats guideline for more details.

Grand Totals Bookmark this Heading Return to Top

Purpose:

Calculate total values across multiple tables or filtered set of objects.

Description:

  • Grand totals appear above or below the table, beneath a subheader or sub-subheader labeled "Grand Totals".
  • Multiple Grand Totals may be displayed concurrently, if the table contains multiple columns with totals.
  • Grand totals should be recalculated whenever totals in the table are recalculated.

Examples:

  • Across Multiple Tables: A financial planning Web site shows several tables itemizing different categories of projected expenses, with a total at the bottom of each category. A grand total could be shown above the tables.
  • Across a Filtered Set of Objects: A bank account Web site could display a table listing credits and debits for a specific period, along with a set of filter controls. If the user filters the data to show only the debits that are grocery related, the resulting total represents a subset of all debits for the period. In this case the overall total amount of debits could be displayed outside the table as a grand total.

A table of numbers in which there is a 'Totals' row in certain columns at the end of a filtered table.

Grand Totals Below a Filtered Table (less than 25 rows)

Usage:

  • Grand totals are recommended when:
    • Totals from a table need to be combined with totals from another table or form.
    • A table containing totals can be filtered to show a subset of objects.
  • Grand totals should be placed so that they do not scroll off the page:
    • If tables are set to display 25 rows or less of normal height, place Grand Totals below the table, so they are close to the Total within the table. If the rows are taller, the maximum number of rows may need to be as low as 10.
    • Otherwise, place Grand Totals above the table so they remain visible.
  • Grand totals may be combined with other prompt/data fields.
  • The Grand Totals heading should be a subheader if the table is placed beneath the page title, and should be a sub-subheader if the table is placed beneath a subheader.
  • If, for performance reasons, Grand Totals cannot be determined until the complete set of records has been retrieved, it is recommended to provide Help text to inform the user. For example: "Grand Totals cannot be calculated until all {objectTypes | items} in the current set have been displayed."

Grand totals appearing above multiple tables

Grand Totals Above Multiple Tables

Alignment Bookmark this Heading Return to Top

Horizontal Alignment Bookmark this Heading Return to Top

Column header alignment should match cell contents, except for parent column headers in column groups. The following table shows all permutations:

Alignment Data Type Component Type
Start (Left) Strings, Dates, Numbers used for identification (such as Driver's License) Select Choice List, List Box, Input/Output Text (Text Field and Text Area), LOV, Input/Choose Date
Center Parent column header (in column group) Radio Button, Checkbox, Icon
End (Right) Numbers that can be compared or totaled (such as Quantity and Cost), Parent Row Header, Row Header Spinbox, Input/Output Text (Text Field with numbers that can be compared or totaled).

Vertical Alignment Bookmark this Heading Return to Top

Vertical alignment is set as middle-aligned by the framework, and is not customizable by product teams.