UNPKG

igniteui-react-charts

Version:

Ignite UI React charting components for building rich data visualizations using TypeScript APIs.

869 lines (868 loc) 30.6 kB
/* THIS INFRAGISTICS ULTIMATE SOFTWARE LICENSE AGREEMENT ("AGREEMENT") LOCATED HERE: https://www.infragistics.com/legal/license/igultimate-la https://www.infragistics.com/legal/license/igultimate-eula GOVERNS THE LICENSING, INSTALLATION AND USE OF INFRAGISTICS SOFTWARE. BY DOWNLOADING AND/OR INSTALLING AND USING INFRAGISTICS SOFTWARE: you are indicating that you have read and understand this Agreement, and agree to be legally bound by it on behalf of the yourself and your company. */ import { CategorySeries } from "./CategorySeries"; import { IIsCategoryBased_$type } from "./IIsCategoryBased"; import { IHasSingleValueCategory_$type } from "./IHasSingleValueCategory"; import { IHasCategoryTrendline_$type } from "./IHasCategoryTrendline"; import { ITrendLineSeries_$type } from "./ITrendLineSeries"; import { IAnchoredCategorySeriesInteractionManager_$type } from "./IAnchoredCategorySeriesInteractionManager"; import { DVContainer } from "igniteui-react-core"; import { Point_$type, enumGetBox, typeCast, runOn, delegateCombine, markType, markDep } from "igniteui-react-core"; import { DependencyProperty } from "igniteui-react-core"; import { Series } from "./Series"; import { TrendLineType_$type } from "igniteui-react-core"; import { Brush } from "igniteui-react-core"; import { PenLineCap_$type } from "igniteui-react-core"; import { DoubleCollection } from "igniteui-react-core"; import { CategoryFrame } from "./CategoryFrame"; import { ICategoryScaler_$type } from "./ICategoryScaler"; import { IScaler_$type } from "./IScaler"; import { CategorySeriesView } from "./CategorySeriesView"; import { CategorySeriesMarkerCollisionAvoidance_$type } from "./CategorySeriesMarkerCollisionAvoidance"; import { ConsolidatedItemHitTestBehavior_$type } from "./ConsolidatedItemHitTestBehavior"; import { CategoryFramePreparer } from "./CategoryFramePreparer"; import { DataLegendSeriesValueInfo } from "igniteui-react-core"; import { DataLegendSeriesContext } from "igniteui-react-core"; import { List$1 } from "igniteui-react-core"; import { Rect } from "igniteui-react-core"; import { ISortingAxis_$type } from "./ISortingAxis"; import { IFastItemsSource_$type } from "igniteui-react-core"; import { NumericAxisBase } from "./NumericAxisBase"; import { CategoryBucketCalculator } from "./CategoryBucketCalculator"; import { AxisRange } from "./AxisRange"; import { NumericYAxis } from "./NumericYAxis"; import { ScalerParams } from "./ScalerParams"; import { SeriesLayerPropertyOverlay } from "./SeriesLayerPropertyOverlay"; import { CategoryMarkerManager } from "./CategoryMarkerManager"; import { CollisionAvoider } from "./CollisionAvoider"; import { NonCollisionAvoider } from "./NonCollisionAvoider"; import { CategoryAxisBase } from "./CategoryAxisBase"; import { ChartSelection } from "./ChartSelection"; import { CategoryTrendLineManagerFactory } from "./CategoryTrendLineManagerFactory"; import { PropertyMetadata } from "igniteui-react-core"; import { truncate, isNaN_, isInfinity } from "igniteui-react-core"; /** * @hidden */ export let AnchoredCategorySeries = /*@__PURE__*/ (() => { class AnchoredCategorySeries extends CategorySeries { get abs() { if (this.abr == null) { this.abr = DVContainer.instance.createInstance(IAnchoredCategorySeriesInteractionManager_$type, () => this.ds.n); } return this.abr; } getHostReferenceValue() { return this.i7(); } mr() { return AnchoredCategorySeries.$$p[5]; } ct() { let a = new AnchoredCategorySeriesView(this); return a; } rj(a) { super.rj(a); this.abn = a; } constructor() { super(); this.abr = null; this.aby = false; this.abt = null; this.abo = null; this.ab5 = null; this.ab4 = null; this.abv = true; this.abz = 0; this.ab0 = 0; this.zp = new CategoryFramePreparer(1, this, this.zt, this, this, this.zt.c9); } k1(a, b) { let c = this.nq(b); if (c == AnchoredCategorySeries.$$p[5]) { return this.k2(a, b, this.acf); } if (c == AnchoredCategorySeries.$$p[1]) { return this.k2(a, b, this.ab7); } return super.k1(a, b); } mq(a) { let b = this.nq(a); if (b == AnchoredCategorySeries.$$p[5]) { return this.acf; } if (b == AnchoredCategorySeries.$$p[1]) { return this.ab7; } return super.mq(a); } get valueColumn() { return this.abt; } set valueColumn(a) { if (this.abt != a) { let b = this.abt; this.abt = a; if (!this.aby) { this.raisePropertyChanged("ValueColumn", b, this.abt); } } } getDataLegendSeriesContextAt(a, b) { let c = new DataLegendSeriesValueInfo(); c.a = 0; c.l = this.jf({ $type: Point_$type, x: a, y: b }, false, false); c.r = this.acf != null ? this.acf : "Value"; c.q = "Value"; c.s = this.acb != null ? this.acb : "V:"; c.t = this.acd != null ? this.acd : ""; let d = new DataLegendSeriesContext(); d.e = ((() => { let $ret = new List$1(DataLegendSeriesValueInfo.$, 0); $ret.add(c); return $ret; })()); d.h = this.mp(); return d; } get ac2() { return this.c(AnchoredCategorySeries.aco); } set ac2(a) { this.h(AnchoredCategorySeries.aco, a); } gl(a) { let b = new Rect(0, 0, 0, 1, 1); let c = this.fetchXAxis(); let d = this.fetchYAxis(); let e = this.w8(this.cw); let f = c != null ? this.zp.r(typeCast(ICategoryScaler_$type, c), b, b, e) : 0; return this.abs.c$a(this, this.valueColumn, c, d, f, a); } abk(a, b, c) { if (b < a || a < 0 || a > this.valueColumn.count || b < 0 || b > this.valueColumn.count || c == null) { return null; } let d = new Array((b - a) + 1); let e = c.dw; let f = null; if (e) { f = c.i$b; } for (let g = a; g <= b; g++) { let h = g; if (e) { h = f._inner[h]; } d[g - a] = this.dp.item(g); } return d; } rs(a, b, c, d) { super.rs(a, b, c, d); if (this.abn.dl && this.abn.dk.g$e(a, b, c, d)) { let e = false; if (b == "FastItemsSource") { e = this.go && c != null; } this.sa(e); this.q2(); } switch (b) { case AnchoredCategorySeries.$$p[3]: case AnchoredCategorySeries.$$p[4]: this.qw(); break; case "FastItemsSource": if (typeCast(IFastItemsSource_$type, c) != null) { c.deregisterColumn(this.valueColumn); this.valueColumn = null; } if (typeCast(IFastItemsSource_$type, d) != null) { this.valueColumn = this.dl(this.acf); } let f = typeCast(NumericAxisBase.$, this.fetchYAxis()); if (f != null && !f.ee()) { this.abn.c9.g(this.im); this.sa(this.go && c != null); } break; case AnchoredCategorySeries.$$p[5]: if (this.dp != null) { this.dp.deregisterColumn(this.valueColumn); this.valueColumn = this.dl(this.acf); } this.ab5 = this.acf; break; case AnchoredCategorySeries.$$p[1]: this.ab4 = this.ab7; this.sa(true); break; case "ValueColumn": if (this.abn.dl) { this.abn.dk.g$m(); } for (let g = 0; g < this.abn.aa.count; g++) { let h = this.abn.aa._inner[g]; h.g$m(); } let i = typeCast(NumericAxisBase.$, this.fetchYAxis()); if (i != null && !i.ee()) { this.abn.c9.g(this.im); this.sa(this.go && this.d9); } this.acn(); this.s7(); break; case "TrendLineBrush": this.ry(b); break; case "ErrorBarSettings": this.sa(false); break; case "TrendLineType": this.q2(); if (this.abn.dl) { this.abn.dk.g$b = this.trendLineType; } break; case "TrendLinePeriod": if (this.abn.dl) { this.abn.dk.g$f = this.trendLinePeriod; } break; case AnchoredCategorySeries.$$p[2]: this.sa(false); break; } } ay(a) { if (this.valueColumn == null || this.valueColumn.count == 0) { return null; } if (a == this.fetchXAxis()) { return new AxisRange(0, this.valueColumn.count - 1); } if (a == this.fetchYAxis()) { return new AxisRange(this.valueColumn.minimum, this.valueColumn.maximum); } return null; } pq(a, b, c, d) { switch (a) { case 4: case 1: case 0: this.abn.c9.g(this.im); break; } if (this.abn.dl) { this.abn.dk.g$i(a, b, c, d); } for (let e = 0; e < this.abn.aa.count; e++) { let f = this.abn.aa._inner[e]; f.g$i(a, b, c, d); } this.acn(); this.s7(); if (a == 0 || a == 2 || a == 3 || a == 4) { this.abv = true; } else if (a == 1) { for (let g = b; g < b + c; g++) { this.abz += this.valueColumn.item(g); } this.ab0 = this.abz / this.valueColumn.count; } } aak() { return this.ab1(this.zt); } ab1(a) { let b = 0; let c = a.ca; let d = a.b9; let e = this.getEffectiveViewport1(a); let f = typeCast(NumericYAxis.$, this.fetchYAxis()); if (!c.isEmpty && !d.isEmpty && f != null) { let g = new ScalerParams(0, c, d, f.dn, e); if (f.dz) { g.b = this.i7(); } b = f.f7(f.rd, g); } return b; } acl(a, b, c) { let d = this.ab1(c); if (a.count > 0) { let e = d; a.add({ $type: Point_$type, x: a._inner[a.count - 1].x, y: e }); a.add({ $type: Point_$type, x: a._inner[0].x, y: e }); } } abl(a, b, c, d) { return this.abm(a, b, c, d, false); } abm(a, b, c, d, e) { return CategorySeries.zd(a, b, c, d, e); } gj() { return this.highlightedItemsSource != null || this.ab7 != null; } h1() { let a = super.h1(); { let b = ((() => { let $ret = new SeriesLayerPropertyOverlay(); $ret.ad = "ValueMemberPath"; $ret.p = true; $ret.y = "HighlightedValueMemberPath"; $ret.q = true; return $ret; })()); b.valueResolving = delegateCombine(b.valueResolving, runOn(this, this.ach)); a.add(b); } return a; } ach(a, b) { if (this.ab7 != null) { b.value = this.ab7; return; } b.value = this.acf; } hm(a, b, c) { let d = super.hm(a, b, c); let e = c; if (this.valueColumn == null || this.valueColumn.count == 0 || e.c9.d < 1) { d = false; } return d; } pk(a, b) { super.pk(a, b); let c = b; c.df(); if (c.dl) { c.dk.g$h(); } for (let d = 0; d < b.aa.count; d++) { let e = c.aa._inner[d]; e.g$h(); } } aba(a, b) { super.aba(a, b); let c = this.zq(b); c.d(a, b); a.i.clear(); if (b.aa.count > 0) { let d = c.i(a); if (d == null || c.g == null) { return; } let e = c.j(d); let f = c.s(d); for (let g = 0; g < b.aa.count; g++) { a.i.add(new List$1(Point_$type, 0)); let h = b.aa._inner[g]; h.prepareLine1(this, a.i._inner[g], d, e, f); } } } abd(a, b) { super.abd(a, b); let c = typeCast(AnchoredCategorySeriesView.$, b); c.ck = true; if (c.dl) { c.dk.g$k(a.v); } for (let d = 0; d < b.aa.count; d++) { let e = b.aa._inner[d]; e.g$k(a.i._inner[d]); } if (this.x3()) { CategoryMarkerManager.e(this, a.s, b.dc, this.x5); this.aaz(b, a); b.c4(); } this.aci(a, b); } r9(a, b, c, d, e) { super.r9(a, b, c, d, e); let f = this.ba.a$k.item(d); let g = f; g.c9.g(this.im); f.bd(c); if (this.d7(g)) { return; } if (this.abo == null) { this.abo = new CategoryFrame(3); } this.abo.aa(); this.aba(this.abo, g); this.abd(this.abo, g); } aci(a, b) { } s1() { super.s1(); if (this.index < 0) { return; } this.abn.dq(); if (this.trendLineBrush != null) { this.abn.dn(); } else { this.abn.dm(); } } k8(a, b) { if (this.abn.dl && a == this.abn.dk.g$n) { return null; } return super.k8(a, b); } get currentCategoryMode() { return this.preferredCategoryMode(typeCast(CategoryAxisBase.$, this.zi())); } get scaler() { return typeCast(ICategoryScaler_$type, this.zi()); } get yScaler() { return typeCast(IScaler_$type, this.zz()); } get bucketizer() { return this.abn.c9; } get currentMode2Index() { return this.aao(); } provideCollisionDetector() { if (this.abp == 1) { return new CollisionAvoider(); } return NonCollisionAvoider.b; } get trendlinePreparer() { return this.abn.dl ? this.abn.dk : null; } qf(a) { super.qf(a); if (this.abn.dl) { this.bc.exportTrendlineData(this, a, this.abn.dk.g$n); } } ky(a) { let b = this.fetchXAxis(); let c = this.fetchYAxis(); return this.abs.c$b(this, a, this.aal(this.cw), this.valueColumn, b, c, this.abq == 1, (d) => super.ky(d)); } get mayContainUnknowns() { return this.valueColumn == null || this.valueColumn.mayContainUnknowns; } i7() { return Series.i8(this.valueColumn, typeCast(ISortingAxis_$type, this.fetchXAxis())); } get_ab3() { return 0; } get ab3() { return this.get_ab3(); } az(a) { if (a.isEmpty && this.dc != null) { a = this.dc.yv; } if (this.valueColumn == null) { return null; } let b = this.w6(this.cw); let c = this.zi(); let d = new ScalerParams(0, a, this.dc.zd, c.dn, this.getEffectiveViewport()); let e = (c.ga(b.left, d)); let f = (c.ga(b.right, d)); if (c.dn) { let g = e; e = f; f = g; } e -= this.ab3; f += this.ab3; let h = null; if (c.dw) { h = c; e = h.i$f(e); f = h.i$f(f); } else { e = Math.floor(e); f = Math.ceil(f); } if (isNaN_(e) || isNaN_(f)) { return null; } e = Math.max(0, Math.min(this.valueColumn.count - 1, e)); f = Math.max(0, Math.min(this.valueColumn.count - 1, f)); let i = 1.7976931348623157E+308; let j = -1.7976931348623157E+308; if (truncate(e) <= truncate(f)) { for (let k = truncate(e); k <= truncate(f); k++) { let l = k; if (h != null) { l = h.i$b._inner[k]; } let m = this.valueColumn.item(l); if (this.valueColumn.mayContainUnknowns) { if (isInfinity(m) || isNaN_(m)) { continue; } } i = Math.min(i, m); j = Math.max(j, m); } } let n = new AxisRange(i, j); n = this.ax(n, this.zz(), a); return n; } acn() { this.iv = this.valueColumn == null || this.valueColumn.count == 0 ? NaN : this.valueColumn.item(this.valueColumn.count - 1); } acm() { if (this.abv) { this.abz = 0; for (let a = 0; a < this.valueColumn.count; a++) { this.abz += this.valueColumn.item(a); } this.ab0 = this.abz / this.valueColumn.count; this.abv = false; } } ji(a, b) { if (b == null || !b.dq) { return NaN; } let c = this.zz(); if (b != c) { return NaN; } let d = this.aq(a); if (c.dz) { return d[1]; } else { return d[0]; } } aq(a) { let b = NaN; switch (a) { case 5: case 2: b = this.valueColumn.maximum; break; case 4: case 1: b = this.valueColumn.minimum; break; case 6: case 3: if (this.abv) { this.acm(); } b = this.ab0; break; } let c = this.zz(); if (c.dz) { return [NaN, b]; } else { return [b, NaN]; } } w1(a) { let b = NaN; switch (a) { case 5: case 2: b = this.valueColumn.maximum; break; case 4: case 1: b = this.valueColumn.minimum; break; case 6: case 3: if (this.abv) { this.acm(); } b = this.ab0; break; } if (isNaN_(b)) { return { $type: Point_$type, x: NaN, y: NaN }; } let c = this.zz(); let d = this.getEffectiveViewport1(this.cw); let e = new ScalerParams(0, this.cw.ca, this.cw.b9, c.dn, d); if (c.dz) { e.b = this.i7(); } e.c = d; if (c.dz) { return { $type: Point_$type, x: NaN, y: c.f7(b, e) }; } else { return { $type: Point_$type, x: c.f7(b, e), y: NaN }; } } w2(a) { let b = this.zz(); let c = this.getEffectiveViewport1(this.cw); let d = new ScalerParams(0, this.cw.ca, this.cw.b9, b.dn, c); if (b.dz) { d.b = this.i7(); } d.c = c; if (b.dz) { return { $type: Point_$type, x: NaN, y: b.f7(a[1], d) }; } else { return { $type: Point_$type, x: b.f7(a[0], d), y: NaN }; } } aa6(a, b, c, d, e, f, g) { if (c < 0 || d < 0) { return; } for (let h = c; h <= d; h++) { if (a == 1) { if (this.abw(e, f, h)) { if (g == 7 || g == 6) { b.add(((() => { let $ret = new ChartSelection(); $ret.series = this; return $ret; })())); return; } this.aax(b, h, g); } } else { if (this.abx(e, f, h)) { if (g == 7 || g == 6) { b.add(((() => { let $ret = new ChartSelection(); $ret.series = this; return $ret; })())); return; } this.aax(b, h, g); } } } } abx(a, b, c) { return this.valueColumn.item(c) < b && a < this.valueColumn.item(c); } abw(a, b, c) { return 0 < b && a < this.valueColumn.item(c); } aax(a, b, c) { if (c == 2 || c == 1) { a.add(((() => { let $ret = new ChartSelection(); $ret.item = this.dp.item(b); return $ret; })())); } else { a.add(((() => { let $ret = new ChartSelection(); $ret.item = this.dp.item(b); $ret.series = this; return $ret; })())); } } bd() { return CategoryTrendLineManagerFactory.a(null, this.a0(), null, this, this.ds); } qt() { super.qt(); if (this.abn.dl) { this.abn.dk.g$m(); } for (let a = 0; a < this.abn.aa.count; a++) { let b = this.abn.aa._inner[a]; b.g$m(); } } get useHighMarkerFidelity() { return this.aag; } } AnchoredCategorySeries.$t = /*@__PURE__*/ markType(AnchoredCategorySeries, 'AnchoredCategorySeries', CategorySeries.$, [IIsCategoryBased_$type, IHasSingleValueCategory_$type, IHasCategoryTrendline_$type, ITrendLineSeries_$type]); AnchoredCategorySeries.aco = /*@__PURE__*/ DependencyProperty.i("ActualTrendLineBrush", Brush.$, AnchoredCategorySeries.$, /*@__PURE__*/ new PropertyMetadata(2, null, (a, b) => a.raisePropertyChanged("ActualTrendLineBrush", b.oldValue, b.newValue))); AnchoredCategorySeries.$$p = /*@__PURE__*/ markDep(DependencyProperty, PropertyMetadata, AnchoredCategorySeries, 'raisePropertyChanged', ['ConsolidatedItemHitTestBehavior:abq:acp', [ConsolidatedItemHitTestBehavior_$type, /*@__PURE__*/ enumGetBox(ConsolidatedItemHitTestBehavior_$type, 0)], 'HighlightedValueMemberPath:ab7:acq', [2, null], 'MarkerCollisionAvoidance:abp:acr', [CategorySeriesMarkerCollisionAvoidance_$type, /*@__PURE__*/ enumGetBox(CategorySeriesMarkerCollisionAvoidance_$type, 1)], 'ValueMemberAsLegendLabel:acb:acz', [2, null], 'ValueMemberAsLegendUnit:acd:ac0', [2, null], 'ValueMemberPath:acf:ac1', [2, null], 'TrendLineType::acx', [TrendLineType_$type, /*@__PURE__*/ enumGetBox(TrendLineType_$type, 0)], 'TrendLineThickness::acw', [1, 1.5], 'TrendLinePeriod::acv', [1, 7], 'TrendLineBrush::acs', [Brush.$, null], 'TrendLineZIndex:ab2:acy', [1, 1001], 'TrendLineDashArray:ac3:act', [DoubleCollection.$], 'TrendLineDashCap:ac4:acu', [PenLineCap_$type, /*@__PURE__*/ enumGetBox(PenLineCap_$type, 0)]]); return AnchoredCategorySeries; })(); /** * @hidden */ export let AnchoredCategoryBucketCalculator = /*@__PURE__*/ (() => { class AnchoredCategoryBucketCalculator extends CategoryBucketCalculator { constructor(a) { super(a); this.i = null; this.h = null; this.j = 0; this.i = a; } getBucketWithoutUnknowns(a) { let b = this.h; let c = this.j; let d = a * this.d; let e = d + this.d - 1; let f = c - 1; d = d < f ? d : f; e = e < f ? e : f; let g = 1.7976931348623157E+308; let h = -1.7976931348623157E+308; let i = true; for (let j = d; j <= e; ++j) { let k = b[j]; g = g < k ? g : k; h = h > k ? h : k; i = false; } if (!i) { return [0.5 * (d + e), g, h]; } return [0.5 * (d + e), NaN, NaN]; } getBucket(a) { let b = this.h; let c = this.j; let d = a * this.d; let e = d + this.d - 1; let f = c - 1; d = d < f ? d : f; e = e < f ? e : f; let g = 0; let h = 0; let i = true; for (let j = d; j <= e; ++j) { let k = b[j]; if (!i) { if (!isNaN_(k)) { g = g < k ? g : k; h = h > k ? h : k; } } else { if (!isNaN_(k)) { g = k; h = k; i = false; } } } if (!i) { return [0.5 * (d + e), g, h]; } return [0.5 * (d + e), NaN, NaN]; } cacheValues() { this.j = this.i.di.valueColumn.count; this.h = this.i.di.valueColumn.asArray(); } unCacheValues() { this.h = null; } } AnchoredCategoryBucketCalculator.$t = /*@__PURE__*/ markType(AnchoredCategoryBucketCalculator, 'AnchoredCategoryBucketCalculator', CategoryBucketCalculator.$); return AnchoredCategoryBucketCalculator; })(); /** * @hidden */ export let AnchoredCategorySeriesView = /*@__PURE__*/ (() => { class AnchoredCategorySeriesView extends CategorySeriesView { constructor(a) { super(a); this.di = null; this.dj = null; this.di = a; } get dk() { if (this.dj == null) { this.dj = CategoryTrendLineManagerFactory.a(this.dj, this.f.a0(), this.f.tf, this.f, this.f.ds); this.dj.g$b = this.di.trendLineType; this.dj.g$f = this.di.trendLinePeriod; } return this.dj; } set dk(a) { this.dj = a; } get dl() { return this.dj != null; } dq() { this.di.ac2 = null; } dn() { this.di.ac2 = this.di.trendLineBrush; } dm() { this.di.ac2 = this.di.vv; } da() { return new AnchoredCategoryBucketCalculator(this); } dp() { this.c9.cacheValues(); } dr() { this.c9.unCacheValues(); } ds(a) { let b = this.dc.item(a); return this.c7(b); } bi(a, b) { if (a.d) { if (this.di.trendLineType != 0 && !b) { let c = this.dk.g$n; c.ad = this.di.trendLineThickness; c._stroke = this.di.ac2; c.ai = this.di.ac3; c.aj = this.di.ac4; a.v(c); } } super.bi(a, b); } getDefaultTooltipTemplate() { return this.di.abs.c$c(this.f, this.di.acf); } } AnchoredCategorySeriesView.$t = /*@__PURE__*/ markType(AnchoredCategorySeriesView, 'AnchoredCategorySeriesView', CategorySeriesView.$); return AnchoredCategorySeriesView; })();