6.3.0 • Published 3 months ago

@visa/parallel-plot v6.3.0

Weekly downloads
36
License
SEE LICENCE IN LI...
Repository
github
Last release
3 months ago

@visa/parallel-plot

An image depicting an example of the default parallel-plot component

<parallel-plot
  accessibility = {...}
  data = {[{"peer":"peers","filter":"all","spend":0.69},{data}]}
  valueAccessor = {"spend"}
  ordinalAccessor = {"peer"}
  seriesAccessor = {"filter"}
/>

# Installation Steps


  • Using npm

    $ npm i @visa/parallel-plot
  • Using yarn

    $ yarn add @visa/parallel-plot

# Props Documentation


# Base Props <>

NameTypeDefault Value(s)Description
heightnumber300Height in px of the chart container
widthnumber500Width in px of the chart container
mainTitlestring'Parallel Plot Title'The dynamic tag of title for the chart (or you can create your own separately). See highestHeadingLevel prop for how tags get assigned.
subTitlestring/ISubTitleType'This is a subtitle'The dynamic tag for a sub title for the chart (or you can create your own separately). See highestHeadingLevel prop for how tags get assigned.
highestHeadingLevelstring/number'h2'Sets the heading level (which also sets sublevels) for the chart. "p", "span", and "div" are also valid.

ISubTitleType Definition

NameTypeDefault Value(s)Description
textstring‘’Text of the subtitle.
keywordsHighlightobject[]‘’Data used to create highlighted words in the subtitle, an array of objects which includes text, color and index keys. text correspond to one more multiple words/numbers as a single string in the subtitle text. color takes a HEX color string. index takes a number, if not specified all occurrences of the text will be highlighted.

# Data Props <>

NameTypeDefault Value(s)Description
ordinalAccessorstring'label'Key used to determine line's categorical property.
valueAccessorstring'value'Key used to determine line's numeric property.
seriesAccessorstring'series'Key used to determine series.
uniqueIDstringundefinedID used to identify chart (must be unique per chart), helpful for validation messages. Defaults to UUID v4 standard.
dataobject[]undefinedData used to create chart, an array of objects which includes keys that map to above accessors.
secondaryLinesobject (custom type)ISecondaryTypeArray of values used to classify series as secondary

ISecondaryType Definition

Name (secondaryLines.)TypeDefault Value(s)Description
keysstring[][]Assign keys of secondary lines.
showDataLabelbooleantrueSets the visibility of data labels on secondary lines.
showSeriesLabelbooleantrueSets the visibility of series labels on secondary lines.
opacitynumber1Sets the opacity of secondary lines.

# Accessibility Props <>

NameTypeDefault Value(s)Description
accessibilityobject (custom type)IAccessibilityTypeManages messages and settings for chart accessibility, see object definition below.

IAccessibilityType Definition

Name (accessibility.)TypeDefault Value(s)Description
longDescriptionstring''Use this to add a helpful description of the chart.
executiveSummarystring''Use this to describe the biggest takeaway of the chart.
purposestring''Use this to describe the purpose of this particular chart.
contextExplanationstring''Use this to explain any controls or content on your page that affect or are affected by this chart.
titlestring''Gives the chart an alternate title to be used by screen readers.
elementDescriptionAccessorstring''Optional key used to add an additional description to any element, from your data.
statisticalNotesstring''Use this to provide any statistical explanations, such as trends, clusters, patterns, or outliers.
structureNotesstring''Use this to describe special visual features of the chart, such as sorting, color grouping, etc.
includeDataKeyNamesbooleanfalseIf true, includes data key names in voice over description of each element. EG "Year over year growth: 5.6%" instead of just "5.6%"
hideDataTableButtonbooleanfalseIf true, hides the data table button (but it is still available to screen reader users).
disableValidationbooleanfalseIf true, disables validations of accessibility props for this chart. Validation is intended to be used during development; upon completion, validation should be disabled.
elementsAreInterfaceany/booleannullDefaults to null. Set to true if interacting with the elements in this chart affects your application. Otherwise, must be set to false.
onChangeFuncfunctionundefinedCustom event listener (changeFunc) that enables dev to control accessibility page experience when chart data updates.
showSmallLabelsbooleanfalseDefaults to false. Set to true if you would like to display labels on small elements that are likely to overlap. Note, this could impact accessibility of your graphic.
hideStrokesbooleanfalseDefaults to false. Set to true if you would like to remove automated stroke outlines from the chart, note, this could impact accessibility of your graphic.
hideTexturesbooleanfalseDefaults to false. Set to true if you would like to remove textures from the chart, note, this could impact accessibility of your graphic.
keyboardNavConfigIKeyConfig{ disabled: false }Defaults disabled to false. May be set to true if accessibility.elementsAreInterface = false and suppressEvents = true. This will disable keyboard navigation and simplify chart instructions for screen reader users.
showExperimentalTexturesbooleanfalseDefaults to false. Set to true if you would like leverage our textures which are still undergoing research and development.
// accessibility = { ...accessibility, onChangeFunc: d => changeHandler(d)}
// example of setting updates on page based on changeFunc custom events
const changeHandler = d => {
  if (d.updated && (d.removed || d.added)) {
    let updates = 'The parallel plot has ';
    if (d.removed) {
      updates += 'removed ' + d.removed + ' data point' + (d.removed > 1 ? 's ' : ' ');
    }
    if (d.added) {
      updates +=
        (d.removed ? 'and ' : '') +
        'added ' +
        d.added +
        (d.removed ? '' : d.added > 1 ? ' data points' : ' data point');
    }
    setChartUpdates(updates);
  } else if (d.updated) {
    const newUpdate = "The chart's data has changed, but no data points were removed or added.";
    setChartUpdates(
      newUpdate !== chartUpdates
        ? newUpdate
        : "The chart's data has changed again, but no data points were removed or added."
    );
  }
};

# Localization Props <>

NameTypeDefault Value(s)Description
localizationobject (custom type)ILocalizationTypeManages messages and settings for chart localization, see object definition below.

ILocalizationType Definition

Name (localization.)TypeDefault Value(s)Description
languagestring/objectenUse this to add a language to a chart. This can be string value like en or valid translation object.
numeralLocalestring/objectUSUse this to add a numerical locale to a chart. This can be string value like US or valid numeralLocale object.
overwritebooleanfalseUse this to describe the purpose of this particular chart.
skipValidationbooleanfalseIf true, disables validations of localization props for this chart. Validation is intended to be used during development; upon completion, validation should be disabled.

# Annotation Props <>

NameTypeDefault Value(s)Description
annotationsarray{annotations}[]Adds annotations to the chart, see d3-svg-annotation by Susie Lu.

annotations object definition

annotations is an array of objects which needs to have the following properties within them. See the detailed api specifications from d3-svg-annotation, along with additional properties layered on top of that work, documented below.

NameTypeDefault Value(s)Description
accessibilityDescriptionstringundefinedSets the accessibility description for the annotation for screen reader users.

# Axis Props <>

NameTypeDefault Value(s)Description
xAxisobject (custom type)IAxisTypeManages settings for the chart's x axis, see object definition below.
yAxisobject (custom type)IAxisTypeManages settings for the chart's y axis, see object definition below.
minValueOverridenumberundefinedOverrides the calculated default min value.
maxValueOverridenumberundefinedOverrides the calculated default max value.
showBaselineXbooleanfalseWhen selected, shows the x baseline
wrapLabelbooleantrueWhen selected, wraps axis labels.

IAxisType Definition

Name (xAxis./yAxis.)TypeDefault Value(s)Description
visiblebooleantrueToggles the visibility of the axis.
gridVisiblebooleantrueToggles the visibility of the axis grid.
labelstring'X Axis'Sets the label for the axis.
unitstring'' or 'month'Sets the unit of padding for the axis when accessor is a date.
formatstring'' or '%b %y' or '0.0a'Sets the formatting for axis elements, EG %b, refer to d3-time-format and numeral.js.
tickIntervalnumber1Can be used to reduce the frequency of axis ticks. This number sets the interval of axis ticks that are shown.

# Event Props <>

Events in stencil.js dispatch Custom DOM events for other components to handle, we use Stencil's @Event() decorator to emit events (click, hover, mouseOut) from end user activity on our charts.

NameTypeDefault Value(s)Description
suppressEventsbooleanfalseSuppresses and disables click, hover and mouseOut event emitters. Setting to true can increase performance for non-interactive charts.
cursorstring'default'Changes pointer type during mouse over on elements. Valid values are 'default' or 'pointer'.
onClickEventfunctionundefinedWhen clickEvent event occurs (e.g., mouse/keyboard click on chart geometry), this event handler will be called with the custom event object (e.g., e), containing data and target node at e.detail {data: d, target: n}. You will need to construct your own functionality of what actions to take within the callback.
clickHighlightobject[][]Data used to track chart selections, an array of objects which includes keys that map to above accessors.
clickStyleobject (custom type)IClickStyleTypeSets the styling of elements when they are selected, see object definition below.
onHoverEventfunctionundefinedWhen hoverEvent event occurs (e.g., mouse hover/keyboard focus on chart geometry), this event handler will be called with the custom event object (e.g., e), containing data and target node at e.detail {data: d, target: n}. You will need to construct your own functionality of what actions to take within the callback.
onMouseOutEventfunctionundefinedWhen mouseOutEvent event occurs (e.g., mouse/keyboard blur on chart geometry), this event handler will be called, and has no data object. You will need to construct your own functionality of what actions to take within the callback.
hoverHighlightobject{}Datum object used to track active chart element, the object should include keys that map to above accessors.
hoverStyleobject (custom type)IHoverStyleTypeSets the styling of elements when they are hovered/focused, see object definition below.
interactionKeysstring[][]Sets the column names of data to interact with.
hoverOpacitynumber1Sets opacity of inactive elements when hovering/focused on a chart geometry.
onInitialLoadEventfunctionundefinedWhen initalLoad event occurs (e.g., chart is mounted to window), this event handler will be called with the custom event object (e.g., e), containing the corresponding chartID at e.detail. You will need to construct your own functionality of what actions to take within the callback.
onInitialLoadEndEventfunctionundefinedWhen initalLoadEnd event occurs (e.g., chart has been mounted to window), this event handler will be called with the custom event object (e.g., e), containing the corresponding chartID at e.detail. You will need to construct your own functionality of what actions to take within the callback.
onDrawStartEventfunctionundefinedWhen drawStart event occurs (e.g., chart render function is called), this event handler will be called with the custom event object (e.g., e), containing the corresponding chartID at e.detail. You will need to construct your own functionality of what actions to take within the callback.
onDrawEndEventfunctionundefinedWhen drawEnd event occurs (e.g., chart's stencil lifecycle completes), this event handler will be called with the custom event object (e.g., e), containing the corresponding chartID at e.detail. You will need to construct your own functionality of what actions to take within the callback.
onTransitionEndEventfunctionundefinedWhen transitionEnd event occurs (e.g., chart geometry's transition lifecycle completes), this event handler will be called with the custom event object (e.g., e), containing the corresponding chartID at e.detail. You will need to construct your own functionality of what actions to take within the callback.

IClickStyleType Definition

NameTypeDefault Value(s)Description
colorstring''Sets the color of the clicked element (requires clickHighlight to be valid and sent).
strokeWidthnumber2Sets the stroke width of the clicked element (requires clickHighlight to be valid and sent).

IHoverStyleType Definition

NameTypeDefault Value(s)Description
colorstring''Sets the color of the hovered element (requires hoverHighlight to be valid and sent).
strokeWidthnumber2Sets the stroke width of the hovered element (requires hoverHighlight to be valid and sent).
// example of interactivity code
// note this only tracks a single click, you need your own logic to build the array of currnet selections made by user and then pass that result back to chart
//...
const clickHandler = evt => {
  const d = evt.detail.data; // data is located here
  const t = evt.detail.target; // chart mark/label clicked is located here

  this.currentClickedElement = [d]; // this is passed to clickHighlight prop
};

const hoverHandler = evt => {
  const d = evt.detail.data; // data is located here
  const t = evt.detail.target; // chart mark/label clicked is located here

  this.currentHoveredElement = d; // this is passed to hoverHighlight prop
};

const mouseOutHandler = evt => {
  this.currentHoveredElement = ''; // this is passed to hoverHighlight prop
};

// an example of calling these from within a stencil.js component
<parallel-plot
  data={[{ data }]}
  valueAccessor={'spend'}
  ordinalAccessor={'peer'}
  seriesAccessor={'filter'}
  interactionKeys={['filter']}
  onClickEvent={this.onClickEvent}
  clickHighlight={this.currentClickedElement}
  clickStyle={this.clickStyle}
  onHoverEvent={this.onHoverEvent}
  onMouseOutEvent={this.onMouseOut}
  hoverHighlight={this.currentHoveredElement}
  hoverStyle={this.hoverStyle}
/>;
//...

# Label Props <>

NameTypeDefault Value(s)Description
dataLabelobject (custom type)IDataLabelTypeControls visibility, styling and placement of data labels, see object definition below.
dataKeyNamesobjectundefinedObject that contains mapping of data keys (e.g., accessors) and user friendly names of the data fields. This prop can be used to enable translation of data keys between languages, or just provide a meaningful name for data elements within a chart. The key:value pairs in this object will effect tooltips, data table, aria labels, axes, etc. Anywhere in chart where data key may be exposed to consumers.
seriesLabelobject (custom type)IDataLabelTypeControls visibility, styling and placement of series labels, see object definition below.
legendobject (custom type)ILegendTypeControls visibility and label of the chart legend, see object definition below.
showTooltipbooleantrueToggles whether to display the tooltip on hover/focus on chart geometries.
tooltipLabelobject (custom type)ITooltipLabelTypeControls visibility, content and format of the chart tooltip, see object definition below.

IDataLabelType Definition

NameTypeDefault Value(s)Description
labelAccessorstring''Key used to determine label's property.
visiblebooleantrueToggles the visibility (opacity) of the data labels.
placementstring'bottom-right'Sets the placement of the data label, accepts 'top-right', 'bottom-right', 'top-left' or 'bottom-left'. Placement option 'auto' leverages the resolveLabelCollision algorithm and places labels without overlaps in available space on the chart.
formatstring'0.0a'Sets the formatting for the data labels, EG %b, refer to d3-time-format and numeral.js.
collisionHideOnlybooleanfalseToggles whether to run resolveLabelCollision algorithm and hide labels if collision is detected (vs hide and then place). This is overridden by placement being set to auto.
collisionPlacementstring'all'Sets the placement of the data label when resolveLabelCollision algorithm is run (dataLabel.placement must be 'auto'). Examples of values are 'all', 'top', 'middle', 'bottom', 'left' and 'right'.

ISeriesLabel Definition

NameTypeDefault Value(s)Description
labelstring[][]An array which determines the labels for each line, in order.
visiblebooleantrueToggles the visibility (opacity) of the series labels.
placementstring'right'Sets the placement of the series label, accepts 'top', 'left', 'bottom' or 'right'. Placement option 'auto' leverages the resolveLabelCollision algorithm and places series labels without overlaps in available space on the chart.
collisionHideOnlybooleanfalseToggles whether to run resolveLabelCollision algorithm and hide series labels if collision is detected (vs hide and then place). This is overridden by placement being set to auto.

ILegendType Definition

NameTypeDefault Value(s)Description
visiblebooleantrueToggles the visibility (opacity/display) of the legend.
interactivebooleanfalseToggles the interactivity of the legend.
labelsstring[]''An array that sets each label in the legend, in order. Passing empty string will populate legend labels directly from data values.

ITooltipLabelType Definition

NameTypeDefault Value(s)Description
labelAccessorstring[][]An array that determines which property of the data is displayed in the tooltip.
labelTitlestring[][]An array that sets the title for each data property in the tooltip.
formatstring''Sets the formatting for the data properties in the tooltip, EG %b, refer to d3-time-format and numeral.js.

# Margin & Padding Props <>

NameTypeDefault Value(s)Description
marginobject (custom type)IBoxModelTypeMargin between the subtitle and the chart area, or between the title and chart area if no subtitle is specified, see object definition below.
paddingobject (custom type)IBoxModelTypePadding between plot area and axes lines, see object definition below.

IBoxModelType Definition

NameTypeDefault Value(s)Description
topnumberheight * 0.01Sets the top margin/padding for the chart container.
bottomnumberheight * 0.01Sets the bottom margin/padding for the chart container.
leftnumberwidth * 0.01Sets the top margin/padding for the chart container.
rightnumberwidth * 0.01Sets the top margin/padding for the chart container.

# Style Props <>

NameTypeDefault Value(s)Description
colorPalettestring'single_blue'Included color palettes can be found in our color utility. Overridden by colors.
colorsstring[]undefinedAccepts array of color strings or color values to customize colors beyond our palettes. Colors assigned in order.
dotRadiusnumber4Sets the radius of data points, if visible.
lineCurvestring'linear'Sets the d3 curve of the line, accepts 'linear' or 'bumpX'. Refer to d3-shape curve docs for more details. Note: VCC enables only select curve options from D3.
showDotsbooleantrueWhen selected, makes data point dots visible.
strokeWidthstring'1'Changes stroke width of series lines.
6.3.0

3 months ago

6.2.1

3 months ago

6.2.0

7 months ago

6.1.0

11 months ago

6.0.0

1 year ago

5.2.0

1 year ago

5.1.2

2 years ago

5.1.1

2 years ago

5.1.0

2 years ago

5.0.1

2 years ago

5.0.0

2 years ago

4.3.1

3 years ago

4.3.0

3 years ago

4.2.3

3 years ago

4.2.2

3 years ago

4.2.1

3 years ago

4.2.0

3 years ago

4.1.1

3 years ago

4.1.0

3 years ago