Styling an RI Visual

Prev Next

Use Rainmaker Insights (RI) Chat to describe how you want a Visual to appear. You can also review or manually adjust its configuration in the ECharts Spec JSON field in the Style section.

Configure a Visual with RI Chat

RI Chat provides an easy way to configure your report using plain language. Describe the layout, formatting, or changes you want, and RI Chat generates the configuration.

  1. Navigate to Reports → RI Visuals.

  2. Create a new Visual or open an existing Visual for editing.

  3. Select the RI Chat tab in the Build section.

  4. Enter a prompt describing the changes you want. For example:

    • “Display the results as a pie chart showing account counts by status.”

    • “Group the table by agent and include subtotals and a grand total for the collected amount.”

    • “Rename the Amount column to Collected and display values with two decimal places.”

  5. Select Run Preview and review the results.

  6. Enter additional prompts to refine the Visual, then select Save.

For detailed instructions, see Creating an RI Visual.

The following sections explain the supported Style JSON settings for users who want to review or manually adjust the configuration.

Access the Style Section

  1. Navigate to Reports → RI Visuals.

  2. Open or create a visual.

  3. Expand Style.

  4. Enter the JSON configuration in the ECharts Spec JSON field.

  5. Select Run Preview to review the results.

  6. Select Apply or Save to save the visual.

Image displays the ECharts Spec JSON field in the Style section.

Note

The ECharts Spec JSON field uses RI-specific configuration options. It is not a general ECharts configuration object. Only options supported by RI are applied.

What You Can Style

The JSON configuration can control:

  • Visual types and data mappings.

  • Column labels and formatting.

  • Tables, groups, subtotals, and totals.

  • Charts, heatmaps, gauges, scorecards, and cross tabs.

  • Legends and cell visuals.

  • Delivery and export defaults.

This article covers JSON configuration for individual RI Visuals. Board-level styles, SQL, and Default Parameters are configured separately.

Understand the JSON Configuration

The JSON configuration tells RI how to display the data returned by the visual's SQL. Most configurations include three types of settings:

Component

Purpose

Example

Visual type

Determines how the data is displayed.

table, line, pie, scorecard

Data mapping

Identifies which SQL results are used in the visual.

labelColumn, valueColumn

Display options

Controls the appearance or behavior of the visual.

Labels, formatting, totals, legends

For example:

  • "type": "pie" tells RI to display the data as a pie chart.

  • "labelColumn": "status" tells RI to use the SQL alias status for the pie slice labels.

  • "valueColumn": "account_count" tells RI to use the SQL alias account_count to determine the value of each slice.

{
  "type": "pie",
  "labelColumn": "status",
  "valueColumn": "account_count"
}

JSON Syntax Guidelines

When entering JSON:

  • Use double quotation marks for text values.

  • Use true or false for Boolean values.

  • Use brackets [ ] for lists.

  • Enter numbers without quotation marks.

  • Do not include comments or trailing commas.

  • Omit optional settings when not needed.

  • When referencing data, use the SQL output alias returned by the visual.

General Settings

Setting

JSON Type

Description

type

string

Specifies the visual type.

title

string

Specifies the title displayed on the visual. If omitted, the visual label is used.

renderMode

string

Changes how supported visual types are displayed.

Supported Visual Types

Type

Description

table / break

Displays data in rows and columns.

bar / line / area

Displays data in a chart.

pie

Displays values as slices of a pie chart.

heatmap-cartesian

Displays values in a heatmap or comparison matrix.

progress-gauge

Displays progress toward a goal.

scorecard

Displays one or more key metrics.

crosstab

Summarizes data in a row-and-column grid.

Configure Columns and Drilldowns

Columns control which data appears in the visual and how it is presented.

Setting

JSON Type

Description

columns

array of strings

Places the specified columns first. Additional returned columns can still appear.

hiddenColumns

array of strings

Hides specified columns from the table. The fields remain available in the source data.

columnLabels

object

Changes the displayed labels for specified columns.

columnFormats

object

Applies supported display formats to specified columns.

columnOptions

object

Applies additional display options to specified columns.

tooltipColumns

array of strings

Adds specified fields to chart tooltips.

drilldownKeys

array of strings

Identifies columns used to pass row context to detail SQL. Detail SQL and matching placeholders are also required.

Column Configuration Example

{
  "type": "table",
  "columns": ["agent", "amount"],
  "hiddenColumns": ["agent_id"],
  "columnLabels": {
    "agent": "Agent",
    "amount": "Collected"
  },
  "columnFormats": {
    "amount": "decimal"
  }
}

Image Displays an RI Table with Custom Column Labels and Two Decimal Places.

Note

columns controls column order, not visibility. Additional columns returned by the SQL remain visible unless included in hiddenColumns.

Configure Tables

Table settings control how rows and columns are presented and how users interact with the table.

Setting

JSON Type

Description

showHeader

boolean

Default true. Set to false to hide table headers.

sortable

boolean

Default true. Enables column sorting. Does not change the initial SQL sort order.

pageable

boolean

Default true. Set to false to display all loaded rows.

pageSize

integer

Default 25. Supports up to 500 rows per page for server-paged results.

refreshOnLinkClick

boolean

Default false. Refreshes the visual after a table cell link is opened.

rowClassColumn

string

Uses a specified column to control row presentation based on supported statuses.

rowColorColumn

string

Uses a specified column to set the row background color.

rowFontWeightColumn

string

Uses a specified column to control row font weight.

Row Formatting Example

{
  "rowColorColumn": "row_color",
  "hiddenColumns": ["row_color"]
}

Note

Setting pageable to false does not remove applicable data or memory limits. Grouping and totals can also affect how rows are loaded and displayed.

Format Column Values

Use columnFormats to control how values are displayed.

In this example, amount identifies the column to format and currency-decimal specifies how its values are displayed.

{
  "columnFormats": {
    "amount": "currency-decimal"
  }
}

Note

Formatting changes how a value is displayed. It does not change the value returned by the SQL.

Supported Formats

Format

Description

text, string, raw, none

Preserves the displayed text. Useful for codes, leading zeros, and text values.

number, numeric

Displays numbers with grouping. Non-integers display two decimal places in RI Visuals.

decimal, decimals, two-decimal, twodecimal

Displays numbers with grouping and two decimal places.

integer, whole-number, wholenumber

Displays a rounded whole number.

currency

Displays a rounded whole amount without a currency symbol in table cells.

currency-no-decimal, currency-nodecimal

Displays whole-number currency values. Export formatting can differ.

currency-decimal, currency-decimals, currency-with-decimal, currency-with-decimals, currency-cents

Displays currency values with two decimal places and no currency symbol in table cells.

currency-auto, legacy-currency

Supports legacy mixed-unit currency values. Use only when the underlying data follows that convention.

percent

Converts a fractional value to a percentage with two decimal places. For example, 0.125 displays as 12.50%.

date

Displays supported dates in MM/dd/yyyy format.

Use the lowercase values shown above. Unsupported values cannot be used to create custom formatting patterns.

Formatting Considerations

Formatting can vary by visual type and output format. For example, the same format may display differently in a table, gauge, scorecard, legend, or export.

  • For amounts that require two decimal places, use decimal.

  • For percentages, provide the value as a fraction. For example, 0.125 displays as 12.50%.

Note

When modifying an existing report, verify representative values in both the RI visual and the intended export format.

Configure Column Display Options

Use columnOptions to apply additional display options to individual columns.

Setting

JSON Type

Description

decrypt

boolean

Default false. Set to true to display the decrypted value of a supported ACE-encrypted field.

renderHtml

boolean

Default false. Set to true to display supported HTML formatting in table cells.

padDirection

string

Sets the padding direction after decryption. Use LEFT or RIGHT.

padLength

integer

Sets the minimum display length after decryption.

padCharacters

string

Specifies the characters used for padding.

Column Display Example

{
  "type": "table",
  "columnOptions": {
    "status_markup": {
      "renderHtml": true
    },
    "encrypted_reference": {
      "decrypt": true,
      "padDirection": "LEFT",
      "padLength": 8,
      "padCharacters": "0"
    }
  },
  "columnFormats": {
    "encrypted_reference": "text"
  }
}

Warning

Decrypted values can appear in reports and exported files. Only use decrypt for fields the report audience is authorized to access.

Supported HTML includes common inline formatting and links. Scripts and other unsupported content are not rendered. PDF output can display HTML-formatted values differently.

Configure Groups, Subtotals, and Totals

Use grouping to organize table rows by a shared value and display subtotals or a grand total.

Setting

JSON Type

Description

groupBy

array of objects

Defines how table rows are grouped.

showGroupSubtotals

boolean

Default false. Set to true to display a subtotal for each group.

showGrandTotal

boolean

Default false. Set to true to display a grand total.

showTotals

boolean

Default false. Enables table grand totals.

summaryColumns

object

Defines how values are summarized for specified columns.

subtotalColumns

array of strings

Legacy option for specifying columns to total for group subtotals.

totalColumns

array of strings

Legacy option for specifying columns to include in the grand total.

Summary Operations

Use the following values with summaryColumns:

  • sum or total

  • average, avg, or mean

  • min or minimum

  • max or maximum

  • none

groupBy Settings

Setting

Description

column

Required. Specifies the column used to group rows.

label

Specifies an optional group heading.

displayColumn

Specifies a different column to display as the group value.

sortColumn

Specifies a column used to sort groups in ascending order.

Grouped Table Example

{
  "type": "table",
  "groupBy": [
    {
      "column": "team",
      "label": "Team"
    }
  ],
  "showGroupSubtotals": true,
  "showGrandTotal": true,
  "summaryColumns": {
    "amount": "sum"
  }
}

Image Displays an RI Table Organized by Team with Group Subtotals and a Grand Total.

Note

When using nested groups, verify results when the same value appears in more than one parent group.

Configure Grouped Headers

Use grouped headers to place related columns under a shared heading.

Use headerGroups for a single row of grouped headings or headerGroupRows for multiple rows.

Setting

Description

label

Specifies the header text.

labelColumn

Uses the first displayed value from a specified column when label is blank.

colspan

Specifies the number of consecutive columns included under the heading.

labelFormat

Use MMMM to display supported month values as full month names.

Grouped Header Example

{
  "type": "table",
  "columns": ["agent", "amount", "rate"],
  "columnFormats": {
    "amount": "decimal",
    "rate": "percent"
  },
  "headerGroups": [
    {"label": "Team", "colspan": 1},
    {"label": "Performance", "colspan": 2}
  ],
  "groupBy": [
    {"column": "agent", "label": "Agent"}
  ],
  "showGroupSubtotals": true,
  "showGrandTotal": true,
  "summaryColumns": {
    "amount": "sum",
    "rate": "average"
  }
}

Note

Keep the column order and colspan values aligned so each grouped heading appears above the intended columns.

Configure Bar, Line, Area, and Pie Charts

Use chart settings to define categories, values, series, and display options.

Setting

Description

xAxisColumn

Specifies the category displayed on the X-axis.

yAxisColumn

Specifies a single value displayed on the Y-axis.

yAxisColumns

Specifies multiple values displayed on the Y-axis.

seriesColumn

Groups values into separate chart series.

labelColumn

Specifies the labels for pie chart slices.

valueColumn

Specifies the values used for pie chart slices or other supported charts.

stacked

Set to true to stack chart series.

smooth

Set to true to smooth line or area charts.

showTrendLine

Set to true to display a trend line.

showLegend / legend

Set to false to hide the chart legend.

animation

Set to false to disable chart animation.

Line Chart Example

{
  "type": "line",
  "title": "Monthly Collected",
  "xAxisColumn": "period",
  "yAxisColumn": "amount",
  "smooth": true,
  "showTrendLine": true,
  "columnFormats": {
    "amount": "currency-decimal"
  }
}

Image Displays an RI Line Chart with a Single Measure and a Trend Line.

Note

Trend lines may not appear in PDF output.

If duplicate category and series combinations are returned, RI does not automatically combine their values. Aggregate the values in the visual's SQL when needed.

Pie Chart Example

{
  "type": "pie",
  "title": "Accounts by Status",
  "labelColumn": "status",
  "valueColumn": "account_count",
  "columnLabels": {
    "account_count": "Accounts"
  }
}

Image displays RI pie chart using status for labels and count for values.

Configure Heatmaps and Comparison Matrices

A heatmap uses values to show differences across two categories.

A comparison matrix displays those values in a table-style grid and can show changes between current and prior values.

For a standard heatmap, configure:

  • xAxisColumn

  • yAxisColumn

  • valueColumn

To display a comparison matrix, also set "renderMode":"table".

Setting

Description

changeColumn

Required in table mode. Specifies percentage change in percentage points.

priorValueColumn

Required in table mode. Specifies the prior-period amount.

secondaryRowColumn

Optional secondary label displayed below the primary row label.

columnSortColumn

Optional column used to control matrix column order.

minValue / maxValue

Sets the negative and positive percentage-change saturation limits in matrix mode.

Comparison Matrix Example

{
  "type": "heatmap-cartesian",
  "renderMode": "table",
  "title": "Monthly Activity",
  "xAxisColumn": "period",
  "yAxisColumn": "team",
  "valueColumn": "amount",
  "priorValueColumn": "prior",
  "changeColumn": "change_pct",
  "minValue": -25,
  "maxValue": 25
}

Image displays RI heatmap comparison matrix showing values and percent change by team and period.

Return one row for each row/period combination. Duplicate cells can replace previously returned values instead of aggregating them.

Comparison matrices include built-in totals, sorting, status colors, and amount formatting. CSV and Excel exports retain the source long-form heatmap rows rather than reproducing the displayed matrix.

Configure Progress Gauges

A progress gauge shows how a current value compares with a goal or target.

Use "type":"progress-gauge" to create a progress gauge. The gauge uses the first returned row, so the SQL should return the intended aggregate in that row.

Setting

Description

valueColumn

Specifies the current value.

goalColumn

Specifies the goal value.

targetColumn

Alternative to goalColumn.

format

Specifies the supported value format.

minValue

Sets the minimum gauge value. Default 0.

maxValue

Sets the maximum gauge value. When omitted, the goal is used.

Progress Gauge Example

{
  "type": "progress-gauge",
  "title": "Collected vs Goal",
  "valueColumn": "collected",
  "goalColumn": "goal",
  "minValue": 0,
  "maxValue": 100000,
  "format": "currency-decimal"
}

Image Displays an RI Progress Gauge.

How Progress Is Calculated

RI calculates progress by comparing the current value to the configured minimum and maximum values:

(value - minValue) / (maxValue - minValue)

For the example above, $62,500 of $100,000 displays as 62.5% progress.

The result is limited to a range of 0–100%. If maxValue is omitted, RI uses the goal as the maximum value.

Configure Scorecards

Scorecards display important metrics in individual cards, making them useful for showing summary values such as collected amounts, account counts, or rates.

Use "type":"scorecard" and metricCards to configure scorecard metrics.

Setting

Description

label

Specifies the card label.

valueColumn

Specifies the SQL alias containing the main metric.

secondaryColumn

Adds an optional secondary line.

trendColumn

Adds optional trend text. It does not calculate a trend.

format

Specifies supported metric formatting.

tone

Sets a supported card tone: good, risk, or watch.

Scorecard Example

{
  "type": "scorecard",
  "metricCards": [
    {
      "label": "Collected",
      "valueColumn": "amount",
      "format": "currency-decimal",
      "tone": "good"
    },
    {
      "label": "Recovery Rate",
      "valueColumn": "rate",
      "format": "percent",
      "tone": "watch"
    }
  ]
}

Image Displays RI Scorecards with Key Metrics.

A scorecard uses the first returned row. It does not automatically sum multiple rows; perform the required aggregation in SQL.

Configure Cross Tabs

A cross tab summarizes data in a grid. One SQL result becomes the rows, another becomes the columns, and a value appears at their intersection.

For example, a cross tab could display teams as rows, months as columns, and collected amounts as values.

Use "type":"crosstab" to pivot long-form results into row and column categories.

Setting

Description

rowColumn

Required row identity.

rowLabelColumn

Optional displayed row label.

rowSortColumn

Optional ascending row sort.

columnColumn

Required pivot-column identity.

columnLabelColumn

Optional displayed pivot-column label.

columnSortColumn

Optional ascending pivot-column sort.

valueColumns

Creates multiple measures under each pivot column.

aggregation

Use sum to add repeated row/column combinations.

showRowTotals

Adds totals across pivot columns.

showColumnTotals

Adds a total row across pivot rows.

Cross Tab Example

{
  "type": "crosstab",
  "rowColumn": "team",
  "columnColumn": "period",
  "valueColumn": "amount",
  "aggregation": "sum",
  "showRowTotals": true,
  "showColumnTotals": true
}

Image displays cross tab showing values by team and period with totals.

Note

Use "aggregation":"sum" when repeated row/column combinations should be added together. Otherwise, a later matching row can replace an earlier value.

Configure Legend and Summary Boxes

Legend and summary boxes display calculated or fixed values alongside a visual.

Use legendBox to configure one summary box or legendBoxes to configure multiple boxes.

Supported item operations include:

  • first

  • count

  • sum

  • average, avg, or mean

  • min or minimum

  • max or maximum

Example:

{
  "legendBox": {
    "title": "Summary",
    "items": [
      {
        "label": "Collected",
        "valueColumn": "amount",
        "operation": "sum",
        "format": "currency-decimal"
      },
      {
        "label": "Period",
        "value": "Current month"
      }
    ]
  }
}

Note

Legend calculations use the rows available to the visual. When the visual is paged, calculations may reflect only the loaded rows.

Configure Bullet Bars

Bullet bars add an inline visual indicator to a table cell.

Use tableCellVisuals to add supported inline visuals to ordinary table cells. cellVisuals is an alternate setting.

Currently supported cell visual type:

bullet-bar

Bullet Bar Example

{
  "type": "table",
  "columns": ["agent", "amount"],
  "tableCellVisuals": {
    "amount": {
      "type": "bullet-bar",
      "thresholdColumns": ["low_goal", "high_goal"]
    }
  }
}

Image displays RI table with a bullet bar in the Amount column.

Note

Some Style JSON options are supported only in the RI Visuals screen and may not produce the same result in exported or PDF output. Verify the delivery format used by the report.

Configure Delivery and Export Settings

Style JSON can define default delivery and CSV settings.

Setting

Description

defaultExportFormat

Sets the default delivery format.

csvDelimiter

Sets the delimiter used for CSV output.

csvQuoteCharacter

Sets the quote character used for CSV output.

Supported defaultExportFormat values are:

  • PDF

  • CSV

  • EXCEL

  • HTML

  • TSV

  • DELIMITED

  • FIXED_LENGTH

  • XML

  • JSON

Use EXCEL, not XLSX, for this setting.

Example:

{
  "type": "table",
  "defaultExportFormat": "CSV",
  "csvDelimiter": "|",
  "csvQuoteCharacter": "\"",
  "showHeader": true
}

The Default delivery format field in the Style section updates the applicable settings in the same configuration.

Note

Default Parameters, displayed below ECharts Spec JSON, are separate SQL-defined controls. Do not add Default Parameters to ECharts Spec JSON.

Troubleshoot Style JSON

Issue

What to Check

Chart customization has no effect

Use supported RI Style JSON options. General ECharts options, arbitrary CSS properties, unsupported format strings, and unsupported visual types are not automatically applied.

Extra columns appear

columns controls column order. Add unwanted or helper columns to hiddenColumns.

Amounts or percentages are incorrect

Verify the units returned by SQL and the configured format.

Totals differ from expectations

Define summaryColumns explicitly and verify the selected summary operation.

Duplicate chart values are missing

Aggregate duplicate category and series values in SQL.

Header groups do not align

Verify SQL output order, columns, hiddenColumns, and colspan.

PDF differs from the visual

Some interactive visual features and formatting are not reproduced in PDF output.

CSV or Excel differs from the visual

Exported output can use different formatting and projection behavior than the displayed visual.

A setting saves but has no effect

Confirm that the setting is supported for the selected visual type.

Verify the Configuration

When creating or changing Style JSON:

  1. Start with an explicit type and exact SQL aliases.

  2. Change one group of settings at a time.

  3. Select Run Preview and test representative values, including zero, negative, and missing values.

  4. Select Save or Apply.

  5. Verify the delivery or export format that the report will use.

Glossary

Term

Definition

Aggregate

A calculated value that combines multiple rows, such as a sum, average, minimum, or maximum.

Array

A JSON list containing one or more values enclosed in square brackets ([]).

Boolean

A JSON value that is either true or false.

Column

A field returned by the visual's SQL query.

Cross tab

A grid that summarizes values using one field for rows and another for columns.

ECharts Spec JSON

The Style field used to configure supported RI visual and display options.

Group

A set of table rows organized by a common value.

JSON

JavaScript Object Notation (JSON), a structured text format used to define RI Visual configuration settings.

Measure

A numeric value displayed or calculated by a visual, such as an amount, count, or percentage.

Object

A collection of JSON settings enclosed in braces ({}).

Series

A related set of values displayed together in a chart.

SQL alias

The name assigned to a value returned by the visual's SQL and used to reference that value in Style JSON.

Subtotal

A calculated summary for a group of rows.

Visual

An RI report configured to display SQL results as a table, chart, scorecard, gauge, or another supported format.

ECharts Spec JSON Option Index

Use this index to locate additional information about a JSON setting.

Setting

Section

aggregation

Configure Cross Tabs

animation

Configure Bar, Line, Area, and Pie Charts

cellVisuals

Configure Bullet Bars

changeColumn

Configure Heatmaps and Comparison Matrices

columnColumn

Configure Cross Tabs

columnFormats

Format Column Values

columnLabelColumn

Configure Cross Tabs

columnLabels

Configure Columns and Drilldowns

columnOptions

Configure Column Display Options

columns

Configure Columns and Drilldowns

columnSortColumn

Configure Heatmaps and Comparison Matrices / Configure Cross Tabs

csvDelimiter

Configure Delivery and Export Settings

csvQuoteCharacter

Configure Delivery and Export Settings

defaultExportFormat

Configure Delivery and Export Settings

drilldownKeys

Configure Columns and Drilldowns

format

Configure Progress Gauges

goalColumn

Configure Progress Gauges

groupBy

Configure Groups, Subtotals, and Totals

headerGroupRows

Configure Grouped Headers

headerGroups

Configure Grouped Headers

hiddenColumns

Configure Columns and Drilldowns

labelColumn

Configure Bar, Line, Area, and Pie Charts

legend

Configure Bar, Line, Area, and Pie Charts

legendBox

Configure Legend and Summary Boxes

legendBoxes

Configure Legend and Summary Boxes

maxValue

Configure Heatmaps and Comparison Matrices / Configure Progress Gauges

metricCards

Configure Scorecards

minValue

Configure Heatmaps and Comparison Matrices / Configure Progress Gauges

pageable

Configure Tables

pageSize

Configure Tables

priorValueColumn

Configure Heatmaps and Comparison Matrices

refreshOnLinkClick

Configure Tables

renderMode

General Settings

rowClassColumn

Configure Tables

rowColorColumn

Configure Tables

rowColumn

Configure Cross Tabs

rowFontWeightColumn

Configure Tables

rowLabelColumn

Configure Cross Tabs

rowSortColumn

Configure Cross Tabs

secondaryRowColumn

Configure Heatmaps and Comparison Matrices

seriesColumn

Configure Bar, Line, Area, and Pie Charts

showColumnTotals

Configure Cross Tabs

showGrandTotal

Configure Groups, Subtotals, and Totals

showGroupSubtotals

Configure Groups, Subtotals, and Totals

showHeader

Configure Tables

showLegend

Configure Bar, Line, Area, and Pie Charts

showRowTotals

Configure Cross Tabs

showTotals

Configure Groups, Subtotals, and Totals

showTrendLine

Configure Bar, Line, Area, and Pie Charts

showTrendLines

Configure Bar, Line, Area, and Pie Charts

smooth

Configure Bar, Line, Area, and Pie Charts

sortable

Configure Tables

stacked

Configure Bar, Line, Area, and Pie Charts

subtotalColumns

Configure Groups, Subtotals, and Totals

summaryColumns

Configure Groups, Subtotals, and Totals

tableCellVisuals

Configure Bullet Bars

targetColumn

Configure Progress Gauges

title

General Settings

tooltipColumns

Configure Columns and Drilldowns

totalColumns

Configure Groups, Subtotals, and Totals

trendLine / trendLines

Configure Bar, Line, Area, and Pie Charts

type

General Settings

valueColumn

Configure Bar, Line, Area, and Pie Charts / Configure Progress Gauges / Configure Scorecards / Configure Cross Tabs

valueColumns

Configure Cross Tabs

xAxisColumn

Configure Bar, Line, Area, and Pie Charts

yAxisColumn

Configure Bar, Line, Area, and Pie Charts

yAxisColumns

Configure Bar, Line, Area, and Pie Charts

Nested settings are documented with their parent configuration: columnOptions, groupBy, headerGroups/headerGroupRows, metricCards, legendBox/legendBoxes, and tableCellVisuals/cellVisuals.