igniteui-react-charts
Version:
Ignite UI React charting components for building rich data visualizations using TypeScript APIs.
734 lines (728 loc) • 25.2 kB
JavaScript
import { delegateCombine, delegateRemove } from "igniteui-react-core";
import { IgrSeries } from "./igr-series";
import { IgrCalloutPlacementPositionsCollection } from "./igr-callout-placement-positions-collection";
import { HighlightedValueLabelMode_$type } from "igniteui-react-core";
import { AutoCalloutVisibilityMode_$type } from "./AutoCalloutVisibilityMode";
import { CalloutCollisionMode_$type } from "igniteui-react-core";
import { IgrCalloutStyleUpdatingEventArgs } from "./igr-callout-style-updating-event-args";
import { IgrCalloutRenderStyleUpdatingEventArgs } from "./igr-callout-render-style-updating-event-args";
import { IgrCalloutContentUpdatingEventArgs } from "./igr-callout-content-updating-event-args";
import { IgrCalloutLabelUpdatingEventArgs } from "./igr-callout-label-updating-event-args";
import { IgrCalloutSeriesSelectingEventArgs } from "./igr-callout-series-selecting-event-args";
import { IgrAnnotationLayer } from "./igr-annotation-layer";
import { CalloutLayer } from "./CalloutLayer";
import { ensureBool, ensureEnum, brushToString, stringToBrush, arrayFindByName } from "igniteui-react-core";
import { CalloutPlacementPositionsCollection as CalloutPlacementPositionsCollection_internal } from "./CalloutPlacementPositionsCollection";
import { CalloutPlacementPositions_$type } from "./CalloutPlacementPositions";
import { SyncableObservableCollection$1 } from "igniteui-react-core";
/**
* Represents an annotation layer that displays crosshair lines that cross through the closest value of the target series under the cursor.
*/
export class IgrCalloutLayer extends IgrAnnotationLayer {
createImplementation() {
return new CalloutLayer();
}
/**
* @hidden
*/
get i() {
return this._implementation;
}
constructor(props) {
super(props);
this._allowedPositions = null;
this._calloutStyleUpdating = null;
this._calloutStyleUpdating_wrapped = null;
this._calloutRenderStyleUpdating = null;
this._calloutRenderStyleUpdating_wrapped = null;
this._calloutContentUpdating = null;
this._calloutContentUpdating_wrapped = null;
this._calloutLabelUpdating = null;
this._calloutLabelUpdating_wrapped = null;
this._calloutSeriesSelecting = null;
this._calloutSeriesSelecting_wrapped = null;
}
/**
* Gets whether the series is an callout annotation layer.
*/
get isAnnotationCalloutLayer() {
return this.i.eq;
}
/**
* Gets or sets whether or not callouts expand axis buffer for extra space for their render around data points.
*/
get calloutExpandsAxisBufferEnabled() {
return this.i.abt;
}
set calloutExpandsAxisBufferEnabled(v) {
this.i.abt = ensureBool(v);
}
/**
* Gets or sets whether or not callouts expand axis buffer only when callouts are visible in the chart.
* This property is not used when the CalloutExpandsAxisBufferEnabled property is false or AutoCalloutVisibilityMode is not Dedicated.
*/
get calloutExpandsAxisBufferOnlyWhenVisible() {
return this.i.abv;
}
set calloutExpandsAxisBufferOnlyWhenVisible(v) {
this.i.abv = ensureBool(v);
}
/**
* Gets or sets whether or not recalculate callouts expand axis buffer on rendering frame.
* This property is not used when the CalloutExpandsAxisBufferEnabled property is false or AutoCalloutVisibilityMode is not Dedicated.
*/
get calloutExpandsAxisBufferOnInitialVisibility() {
return this.i.abu;
}
set calloutExpandsAxisBufferOnInitialVisibility(v) {
this.i.abu = ensureBool(v);
}
/**
* Gets or sets whether or not suspend refresh of callouts while they shift from hidden to visible
*/
get calloutSuspendedWhenShiftingToVisible() {
return this.i.abw;
}
set calloutSuspendedWhenShiftingToVisible(v) {
this.i.abw = ensureBool(v);
}
/**
* Gets or sets the minimum vertical axis buffer for positioning callouts.
* This property does not take precedence over the CalloutExpandsAxisBufferMaxHeight property.
*/
get calloutExpandsAxisBufferMinHeight() {
return this.i.aco;
}
set calloutExpandsAxisBufferMinHeight(v) {
this.i.aco = +v;
}
/**
* Gets or sets the maximum vertical axis buffer for positioning callouts.
* This property takes precedence over the CalloutExpandsAxisBufferMinHeight property.
*/
get calloutExpandsAxisBufferMaxHeight() {
return this.i.acm;
}
set calloutExpandsAxisBufferMaxHeight(v) {
this.i.acm = +v;
}
/**
* Gets or sets the minimum horizontal axis buffer for positioning callouts.
* This property does not take precedence over the CalloutExpandsAxisBufferMaxWidth property.
*/
get calloutExpandsAxisBufferMinWidth() {
return this.i.acp;
}
set calloutExpandsAxisBufferMinWidth(v) {
this.i.acp = +v;
}
/**
* Gets or sets the maximum horizontal axis buffer for positioning callouts.
* This property takes precedence over the CalloutExpandsAxisBufferMinWidth property.
*/
get calloutExpandsAxisBufferMaxWidth() {
return this.i.acn;
}
set calloutExpandsAxisBufferMaxWidth(v) {
this.i.acn = +v;
}
/**
* Gets or sets the label mapping property for the callouts.
*/
get labelMemberPath() {
return this.i.aeb;
}
set labelMemberPath(v) {
this.i.aeb = v;
}
/**
* Gets or sets the label mapping property for the callouts.
*/
get xMemberPath() {
return this.i.aer;
}
set xMemberPath(v) {
this.i.aer = v;
}
/**
* Gets or sets the label mapping property for the callouts.
*/
get yMemberPath() {
return this.i.aeu;
}
set yMemberPath(v) {
this.i.aeu = v;
}
/**
* Gets or sets the key mapping property for the callouts.
*/
get keyMemberPath() {
return this.i.ad5;
}
set keyMemberPath(v) {
this.i.ad5 = v;
}
/**
* Gets or sets whether to allow the callouts to be variable distances from the target points, for supporting collision modes.
*/
get isCalloutOffsettingEnabled() {
return this.i.aby;
}
set isCalloutOffsettingEnabled(v) {
this.i.aby = ensureBool(v);
}
/**
* Gets or sets the label format string to use for the label.
*/
get labelFormat() {
return this.i.ad8;
}
set labelFormat(v) {
this.i.ad8 = v;
}
/**
* Gets or sets the format specifiers to use with the LabelFormat string.
*/
get labelFormatSpecifiers() {
return this.i.aah;
}
set labelFormatSpecifiers(v) {
if (v && !Array.isArray(v) && typeof (v) == "string") {
const re = /\s*(?:,|\s|$)\s*/gm;
v = v.split(re);
}
this.i.aah = v;
}
/**
* Gets or sets the content mapping property for the callouts.
*/
get contentMemberPath() {
return this.i.adx;
}
set contentMemberPath(v) {
this.i.adx = v;
}
/**
* Gets or sets the name of the series series to target this annotation to. If null, this annotation targets all series simultaneously.
*/
get targetSeriesName() {
return this.i.aee;
}
set targetSeriesName(v) {
this.i.aee = v;
}
/**
* Gets or sets the series to target this annotation to. If null, this annotation targets all series simultaneously.
*/
get targetSeries() {
const r = this.i.aay;
if (r == null) {
return null;
}
if (!r.externalObject) {
let e = IgrSeries._createFromInternal(r);
if (e) {
e._implementation = r;
}
r.externalObject = e;
}
return r.externalObject;
}
set targetSeries(v) {
if (v != null && this._stylingContainer && v._styling)
v._styling(this._stylingContainer, this, this);
v == null ? this.i.aay = null : this.i.aay = v.i;
}
/**
* Gets or sets a channel name to identify other callout layers within the chart to share collision information with.
*/
get collisionChannel() {
return this.i.adu;
}
set collisionChannel(v) {
this.i.adu = v;
}
/**
* Gets or sets the allowed positions that the callout layer is allowed to use.
*/
get allowedPositions() {
if (this._allowedPositions === null) {
let coll = new IgrCalloutPlacementPositionsCollection();
let innerColl = this.i.aat;
if (!innerColl) {
innerColl = new CalloutPlacementPositionsCollection_internal();
}
this._allowedPositions = coll._fromInner(innerColl);
this.i.aat = innerColl;
}
return this._allowedPositions;
}
set allowedPositions(v) {
if (this._allowedPositions !== null) {
this._allowedPositions._setSyncTarget(null);
this._allowedPositions = null;
}
let coll = new IgrCalloutPlacementPositionsCollection();
this._allowedPositions = coll._fromOuter(v);
let syncColl = new SyncableObservableCollection$1(CalloutPlacementPositions_$type);
let innerColl = this.i.aat;
if (!innerColl) {
innerColl = new CalloutPlacementPositionsCollection_internal();
}
syncColl._inner = innerColl;
syncColl.clear();
this._allowedPositions._setSyncTarget(syncColl);
this.i.aat = innerColl;
}
/**
* Gets or sets how to select the final value to annotate.
*/
get isAutoCalloutBehaviorEnabled() {
return this.i.abx;
}
set isAutoCalloutBehaviorEnabled(v) {
this.i.abx = ensureBool(v);
}
/**
* Gets or sets whether to use values, rather than labels for auto callout labels.
*/
get useInterpolatedValueForAutoCalloutLabels() {
return this.i.ab3;
}
set useInterpolatedValueForAutoCalloutLabels(v) {
this.i.ab3 = ensureBool(v);
}
/**
* Gets or sets whether to the series color as the outline of the callout.
*/
get useSeriesColorForOutline() {
return this.i.ab6;
}
set useSeriesColorForOutline(v) {
this.i.ab6 = ensureBool(v);
}
/**
* Gets or sets whether to the label color is automatically decided between a light and dark option for contrast.
*/
get useAutoContrastingLabelColors() {
return this.i.ab2;
}
set useAutoContrastingLabelColors(v) {
this.i.ab2 = ensureBool(v);
}
/**
* Gets or sets whether to the series color as the outline of the callout.
*/
get useItemColorForFill() {
return this.i.ab4;
}
set useItemColorForFill(v) {
this.i.ab4 = ensureBool(v);
}
/**
* Gets or sets whether to the series item color as the outline of the callout.
*/
get useItemColorForOutline() {
return this.i.ab5;
}
set useItemColorForOutline(v) {
this.i.ab5 = ensureBool(v);
}
/**
* Gets or sets whether to use values, rather than labels for auto callout labels.
*/
get useValueForAutoCalloutLabels() {
return this.i.ab7;
}
set useValueForAutoCalloutLabels(v) {
this.i.ab7 = ensureBool(v);
}
/**
* Gets or sets whether to use values, rather than labels for auto callout labels.
*/
get highlightedValueLabelMode() {
return this.i.aax;
}
set highlightedValueLabelMode(v) {
this.i.aax = ensureEnum(HighlightedValueLabelMode_$type, v);
}
/**
* Gets or sets the rules for when the callouts should be visible.
*/
get autoCalloutVisibilityMode() {
return this.i.aam;
}
set autoCalloutVisibilityMode(v) {
this.i.aam = ensureEnum(AutoCalloutVisibilityMode_$type, v);
}
/**
* Gets or sets the corner radius to use for the callout borders.
*/
get calloutCornerRadius() {
return this.i.acl;
}
set calloutCornerRadius(v) {
this.i.acl = +v;
}
/**
* Gets or sets whether to allow for custom callout styles.
*/
get isCustomCalloutStyleEnabled() {
return this.i.ab0;
}
set isCustomCalloutStyleEnabled(v) {
this.i.ab0 = ensureBool(v);
}
/**
* Gets or sets whether to allow for custom callout styles.
*/
get isCustomCalloutRenderStyleEnabled() {
return this.i.abz;
}
set isCustomCalloutRenderStyleEnabled(v) {
this.i.abz = ensureBool(v);
}
/**
* Gets or sets the precision to use when values are used for the auto callout labels.
*/
get autoCalloutLabelPrecision() {
return this.i.acz;
}
set autoCalloutLabelPrecision(v) {
this.i.acz = +v;
}
/**
* Gets or sets the color to use for the callout text. Leave unset for an automatic value.
*/
get calloutTextColor() {
return brushToString(this.i.agw);
}
set calloutTextColor(v) {
this.i.agw = stringToBrush(v);
}
/**
* Gets or sets the light color to use for the callout text. Leave unset for an automatic value.
*/
get calloutLightTextColor() {
return brushToString(this.i.agu);
}
set calloutLightTextColor(v) {
this.i.agu = stringToBrush(v);
}
/**
* Gets or sets the dark color to use for the callout text. Leave unset for an automatic value.
*/
get calloutDarkTextColor() {
return brushToString(this.i.ags);
}
set calloutDarkTextColor(v) {
this.i.ags = stringToBrush(v);
}
/**
* Gets or sets the brush that specifies how the backgrounds for the callouts of the layer are painted. Leave unset for an automatic value.
*/
get calloutBackground() {
return brushToString(this.i.agr);
}
set calloutBackground(v) {
this.i.agr = stringToBrush(v);
}
/**
* Gets or sets whether the callouts that collide with the boundary should be truncated.
*/
get shouldTruncateOnBoundaryCollisions() {
return this.i.ab1;
}
set shouldTruncateOnBoundaryCollisions(v) {
this.i.ab1 = ensureBool(v);
}
/**
* Gets or sets the precision to use displaying values for interpolated crosshair positions.
*/
get calloutInterpolatedValuePrecision() {
return this.i.ac0;
}
set calloutInterpolatedValuePrecision(v) {
this.i.ac0 = +v;
}
/**
* Gets or sets the brush that specifies how the outlines for the callouts of the layer are painted.
*/
get calloutOutline() {
return brushToString(this.i.agv);
}
set calloutOutline(v) {
this.i.agv = stringToBrush(v);
}
/**
* Gets or sets the brush that specifies how the leader lines for the callouts of the layer are painted.
*/
get calloutLeaderBrush() {
return brushToString(this.i.agt);
}
set calloutLeaderBrush(v) {
this.i.agt = stringToBrush(v);
}
/**
* Gets or sets the left padding to use withing the callout. Leaving this NaN will use an automatic value related to the axis label margins.
*/
get calloutPaddingLeft() {
return this.i.acr;
}
set calloutPaddingLeft(v) {
this.i.acr = +v;
}
/**
* Gets or sets the top padding to use within the callout. Leaving this NaN will use an automatic value related to the axis label margins.
*/
get calloutPaddingTop() {
return this.i.act;
}
set calloutPaddingTop(v) {
this.i.act = +v;
}
/**
* Gets or sets the right padding to use within the callout. Leaving this NaN will use an automatic value related to the axis label margins.
*/
get calloutPaddingRight() {
return this.i.acs;
}
set calloutPaddingRight(v) {
this.i.acs = +v;
}
/**
* Gets or sets the bottom padding to use within the callout. Leaving this NaN will use an automatic value related to the axis label margins.
*/
get calloutPaddingBottom() {
return this.i.acq;
}
set calloutPaddingBottom(v) {
this.i.acq = +v;
}
/**
* Gets or sets the strategy to use for avoiding collisions between the callouts in this layer. Leave unset for an automatic value.
*/
get calloutCollisionMode() {
return this.i.aao;
}
set calloutCollisionMode(v) {
this.i.aao = ensureEnum(CalloutCollisionMode_$type, v);
}
/**
* Gets or sets the padding to add to the callout positioning. Leave unset for an automatic value.
*/
get calloutPositionPadding() {
return this.i.acu;
}
set calloutPositionPadding(v) {
this.i.acu = +v;
}
/**
* Gets or sets the stroke thickness for the callout backing. Leave unset for an automatic value.
*/
get calloutStrokeThickness() {
return this.i.acv;
}
set calloutStrokeThickness(v) {
this.i.acv = +v;
}
/**
* Gets or sets the stroke thickness for the axis annotation backing. Leave unset for an automatic value.
*/
get textStyle() {
return this.i.aeh;
}
set textStyle(v) {
this.i.aeh = v;
}
findByName(name) {
var baseResult = super.findByName(name);
if (baseResult) {
return baseResult;
}
if (this.labelFormatSpecifiers != null && arrayFindByName(this.labelFormatSpecifiers, name)) {
return arrayFindByName(this.labelFormatSpecifiers, name);
}
if (this.targetSeries && this.targetSeries.name && this.targetSeries.name == name) {
return this.targetSeries;
}
if (this.allowedPositions != null && this.allowedPositions.findByName && this.allowedPositions.findByName(name)) {
return this.allowedPositions.findByName(name);
}
return null;
}
_styling(container, component, parent) {
super._styling(container, component, parent);
this._inStyling = true;
if (this.targetSeries && this.targetSeries._styling) {
this.targetSeries._styling(container, component, this);
}
this._inStyling = false;
}
getItemValue(item, memberPathName) {
let iv = this.i.ku(item, memberPathName);
return (iv);
}
/**
* Gets the value of a requested member path from the series.
* @param memberPathName * The property name of a valid member path for the series
*/
getMemberPathValue(memberPathName) {
let iv = this.i.mi(memberPathName);
return (iv);
}
/**
* Invalidates content of callout layer
*/
invalidateCalloutContent() {
this.i.ae4();
}
/**
* Resets actual visiable range margin
*/
recalculateAxisRangeBuffer() {
this.i.ae8();
}
/**
* Refresh axis buffer and callouts rendering
*/
refreshAxisBufferAndCalloutPositions() {
this.i.ae9();
}
/**
* Force the callout labels to reevaluate their positions.
*/
refreshLabelPositions() {
this.i.afa();
}
/**
* Event raised when updating style of callout layer
*/
get calloutStyleUpdating() {
return this._calloutStyleUpdating;
}
set calloutStyleUpdating(ev) {
if (this._calloutStyleUpdating_wrapped !== null) {
this.i.calloutStyleUpdating = delegateRemove(this.i.calloutStyleUpdating, this._calloutStyleUpdating_wrapped);
this._calloutStyleUpdating_wrapped = null;
this._calloutStyleUpdating = null;
}
this._calloutStyleUpdating = ev;
this._calloutStyleUpdating_wrapped = (o, e) => {
let outerArgs = new IgrCalloutStyleUpdatingEventArgs();
outerArgs._provideImplementation(e);
if (this.beforeCalloutStyleUpdating) {
this.beforeCalloutStyleUpdating(this, outerArgs);
}
if (this._calloutStyleUpdating) {
this._calloutStyleUpdating(this, outerArgs);
}
};
this.i.calloutStyleUpdating = delegateCombine(this.i.calloutStyleUpdating, this._calloutStyleUpdating_wrapped);
;
}
/**
* Event raised when updating style of callout layer
*/
get calloutRenderStyleUpdating() {
return this._calloutRenderStyleUpdating;
}
set calloutRenderStyleUpdating(ev) {
if (this._calloutRenderStyleUpdating_wrapped !== null) {
this.i.calloutRenderStyleUpdating = delegateRemove(this.i.calloutRenderStyleUpdating, this._calloutRenderStyleUpdating_wrapped);
this._calloutRenderStyleUpdating_wrapped = null;
this._calloutRenderStyleUpdating = null;
}
this._calloutRenderStyleUpdating = ev;
this._calloutRenderStyleUpdating_wrapped = (o, e) => {
let outerArgs = new IgrCalloutRenderStyleUpdatingEventArgs();
outerArgs._provideImplementation(e);
if (this.beforeCalloutRenderStyleUpdating) {
this.beforeCalloutRenderStyleUpdating(this, outerArgs);
}
if (this._calloutRenderStyleUpdating) {
this._calloutRenderStyleUpdating(this, outerArgs);
}
};
this.i.calloutRenderStyleUpdating = delegateCombine(this.i.calloutRenderStyleUpdating, this._calloutRenderStyleUpdating_wrapped);
;
}
/**
* Raised to allow you to decide on the content for an automatically created callout.
*/
get calloutContentUpdating() {
return this._calloutContentUpdating;
}
set calloutContentUpdating(ev) {
if (this._calloutContentUpdating_wrapped !== null) {
this.i.calloutContentUpdating = delegateRemove(this.i.calloutContentUpdating, this._calloutContentUpdating_wrapped);
this._calloutContentUpdating_wrapped = null;
this._calloutContentUpdating = null;
}
this._calloutContentUpdating = ev;
this._calloutContentUpdating_wrapped = (o, e) => {
let outerArgs = new IgrCalloutContentUpdatingEventArgs();
outerArgs._provideImplementation(e);
if (this.beforeCalloutContentUpdating) {
this.beforeCalloutContentUpdating(this, outerArgs);
}
if (this._calloutContentUpdating) {
this._calloutContentUpdating(this, outerArgs);
}
};
this.i.calloutContentUpdating = delegateCombine(this.i.calloutContentUpdating, this._calloutContentUpdating_wrapped);
;
}
/**
* Raised to allow you to decide on the label for an automatically created callout.
*/
get calloutLabelUpdating() {
return this._calloutLabelUpdating;
}
set calloutLabelUpdating(ev) {
if (this._calloutLabelUpdating_wrapped !== null) {
this.i.calloutLabelUpdating = delegateRemove(this.i.calloutLabelUpdating, this._calloutLabelUpdating_wrapped);
this._calloutLabelUpdating_wrapped = null;
this._calloutLabelUpdating = null;
}
this._calloutLabelUpdating = ev;
this._calloutLabelUpdating_wrapped = (o, e) => {
let outerArgs = new IgrCalloutLabelUpdatingEventArgs();
outerArgs._provideImplementation(e);
if (this.beforeCalloutLabelUpdating) {
this.beforeCalloutLabelUpdating(this, outerArgs);
}
if (this._calloutLabelUpdating) {
this._calloutLabelUpdating(this, outerArgs);
}
};
this.i.calloutLabelUpdating = delegateCombine(this.i.calloutLabelUpdating, this._calloutLabelUpdating_wrapped);
;
}
/**
* Raised to allow you to select a target series for a data bound callout.
*/
get calloutSeriesSelecting() {
return this._calloutSeriesSelecting;
}
set calloutSeriesSelecting(ev) {
if (this._calloutSeriesSelecting_wrapped !== null) {
this.i.calloutSeriesSelecting = delegateRemove(this.i.calloutSeriesSelecting, this._calloutSeriesSelecting_wrapped);
this._calloutSeriesSelecting_wrapped = null;
this._calloutSeriesSelecting = null;
}
this._calloutSeriesSelecting = ev;
this._calloutSeriesSelecting_wrapped = (o, e) => {
let outerArgs = new IgrCalloutSeriesSelectingEventArgs();
outerArgs._provideImplementation(e);
if (this.beforeCalloutSeriesSelecting) {
this.beforeCalloutSeriesSelecting(this, outerArgs);
}
if (this._calloutSeriesSelecting) {
this._calloutSeriesSelecting(this, outerArgs);
}
};
this.i.calloutSeriesSelecting = delegateCombine(this.i.calloutSeriesSelecting, this._calloutSeriesSelecting_wrapped);
;
}
}