UNPKG

igniteui-angular-charts

Version:

Ignite UI Angular charting components for building rich data visualizations for modern web apps.

562 lines (561 loc) 20.4 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 { ScatterTriangulationSeries } from "./ScatterTriangulationSeries"; import { ColorScale } from "./ColorScale"; import { runOn, delegateRemove, delegateCombine, typeCast, Point_$type, markType, markDep } from "igniteui-angular-core"; import { DependencyProperty } from "igniteui-angular-core"; import { FastItemIntColumn } from "igniteui-angular-core"; import { IFastItemsSource_$type } from "igniteui-angular-core"; import { Rect } from "igniteui-angular-core"; import { SeriesView } from "./SeriesView"; import { TriangleRasterizer } from "./TriangleRasterizer"; import { ScalerParams } from "./ScalerParams"; import { ObservableColorCollection } from "igniteui-angular-core"; import { Color } from "igniteui-angular-core"; import { ColorUtil } from "igniteui-angular-core"; import { List$1 } from "igniteui-angular-core"; import { CustomPaletteColorScale } from "./CustomPaletteColorScale"; import { DataLegendSeriesValueInfo } from "igniteui-angular-core"; import { DataLegendSeriesContext } from "igniteui-angular-core"; import { PropertyMetadata } from "igniteui-angular-core"; import { truncate, intDivide } from "igniteui-angular-core"; import { boxArray$1 } from "igniteui-angular-core"; import { RenderingContext } from "igniteui-angular-core"; import { CanvasViewRenderer } from "igniteui-angular-core"; import { Rectangle } from "igniteui-angular-core"; import { stringIsNullOrEmpty } from "igniteui-angular-core"; /** * @hidden */ export let ScatterAreaSeries = /*@__PURE__*/ (() => { class ScatterAreaSeries extends ScatterTriangulationSeries { constructor() { super(); this.yt = null; this.yy = null; this.yr = null; this.ys = null; FastItemIntColumn.m(); this.ab = ScatterAreaSeries.$; } bj() { return new ScatterAreaSeries(); } get_eu() { return true; } get yv() { return this.yt; } set yv(a) { let b = this.yt != a; if (b) { let c = this.yt; if (this.yt != null) { let d = this.yt; d.propertyChanged = delegateRemove(d.propertyChanged, runOn(this, this.zc)); } this.yt = a; if (this.yt != null) { let e = this.yt; e.propertyChanged = delegateCombine(e.propertyChanged, runOn(this, this.zc)); } this.raisePropertyChanged("ColorScale", c, this.yt); } } zc(a, b) { this.ze(); this.rr(false); } kq(a, b) { let c = this.nd(b); if (c == ScatterAreaSeries.$$p[3]) { return this.kr(a, b, this.y7); } return super.kq(a, b); } md(a) { let b = this.nd(a); if (b == ScatterAreaSeries.$$p[3]) { return this.y7; } return super.md(a); } get yz() { return this.yy; } set yz(a) { let b = this.yz != a; if (b) { let c = this.yz; this.yy = a; this.raisePropertyChanged("ColorColumn", c, this.yz); } } get_g7() { return true; } set_g7(a) { super.set_g7(a); } q9(a, b, c, d) { super.q9(a, b, c, d); switch (b) { case ScatterAreaSeries.$$p[1]: case ScatterAreaSeries.$$p[2]: this.qf(); break; case "FastItemsSource": let e = typeCast(IFastItemsSource_$type, c); if (e != null) { e.deregisterColumn(this.yz); this.yz = null; } let f = typeCast(IFastItemsSource_$type, d); if (f != null) { this.yz = this.dk(this.y7); } this.rr(this.gg && c != null); break; case ScatterAreaSeries.$$p[3]: if (this.dn != null) { this.dn.deregisterColumn(this.yz); this.yz = this.dk(this.y7); } this.rr(false); this.ql(); break; case "ColorScale": this.ze(); this.rr(false); this.ql(); break; } } rs(a) { super.rs(a); this.zd(this.cv); } rq(a, b, c, d, e) { super.rq(a, b, c, d, e); let f = this.ba.a$j.item(d); f.a3(c); if (this.d5(f)) { return; } this.zd(f); } zd(a) { if (this.d5(a)) { return; } let b; let c; let d = a.getViewInfo(c, b); c = d.p0; b = d.p1; let e = a; let f = null; let g = null; let h = this.wy; let i = this.wz; let j = this.getEffectiveViewport1(a); let k = new ScalerParams(1, b, c, h.ch); k.c = j; let l = new ScalerParams(1, b, c, i.ch); l.c = j; g = this.yx(a, k, l); if (g != null) { e.cb(g); } else { e.ce(f); } } za(a) { let b; let c; let d = a.getViewInfo(b, c); b = d.p0; c = d.p1; let e = truncate(Math.round(b.width)) * truncate(Math.round(b.height)); let f = a.b3; if (f == null || f.length != e) { f = new Array(e); for (let g = 0; g < e; g++) { f[g] = 0; } } else { for (let h = 0; h < e; h++) { f[h] = 0; } } a.b3 = f; } kn(a) { let b = truncate(Math.round(this.ws.width)); let c = truncate(Math.round(this.ws.height)); let d = this.cv.b3; if (d == null || d.length != (b * c) || this.w8 == null || this.w8.count < 1 || this.w9 == null || this.w9.count < 1 || this.xa == null || this.xa.count < 1) { return null; } let e = this.db.wl; let f = (a.x - e.left) / e.width; let g = (a.y - e.top) / e.height; let h = truncate(Math.round(b * f)); let i = truncate(Math.round(c * g)); let j = (b * i) + h; if (j < 0 || j > d.length - 1) { return null; } let k = d[j] - 1; if (k < 0 || k > this.w8.count) { return null; } let l = this.yr.length; let m = this.w8.item(k); let n = this.w9.item(k); let o = this.xa.item(k); if ((m >= l) || (n >= l) || (o >= l)) { return null; } let p = (this.yr[m] - this.ws.left) / this.ws.width; let q = (this.ys[m] - this.ws.top) / this.ws.height; let r = (this.yr[n] - this.ws.left) / this.ws.width; let s = (this.ys[n] - this.ws.top) / this.ws.height; let t = (this.yr[o] - this.ws.left) / this.ws.width; let u = (this.ys[o] - this.ws.top) / this.ws.height; let v = Math.pow(p - f, 2) + Math.pow(q - g, 2); let w = Math.pow(r - f, 2) + Math.pow(s - g, 2); let x = Math.pow(t - f, 2) + Math.pow(u - g, 2); if (v < w && v < x) { return this.dn.item(m); } if (w < v && w < x) { return this.dn.item(n); } if (x < v && x < w) { return this.dn.item(o); } return this.dn.item(m); } yx(a, b, c) { let d; let e; let f = a.getViewInfo(e, d); e = f.p0; d = f.p1; e = new Rect(0, 0, 0, e.width, e.height); b = new ScalerParams(0, b.e, e, b.a, b.c); c = new ScalerParams(0, c.e, e, c.a, c.c); c.b = this.iy(); let g = a; let h = this.wy; let i = this.wz; let j = this.w8.count; let k; let xArr_ = this.xb.asArray(); k = (xArr_.slice(0)); let l; let yArr_ = this.xc.asArray(); l = (yArr_.slice(0)); let m = this.yz.asArray(); let n = this.w8.asArray(); let o = this.w9.asArray(); let p = this.xa.asArray(); this.yr = k; this.ys = l; h.hq(boxArray$1(k), 0, k.length, b); i.hq(boxArray$1(l), 0, l.length, c); let q = this.yu; let r = g.b5(b.d, q, this.yz); let s = e.top; let t = e.left; let u = e.right; let v = e.bottom; let w; let x; let y; let z; this.za(g); let aa = g.b3; let ab = k.length; for (let ac = 0; ac < j; ac++) { let ad = n[ac]; let ae = o[ac]; let af = p[ac]; if ((ad >= ab) || (ae >= ab) || (af >= ab) || (ad < 0) || (ae < 0) || (af < 0)) { continue; } let ag = k[ad]; let ah = l[ad]; let ai = { $type: Point_$type, x: ag, y: ah }; let aj = k[ae]; let ak = l[ae]; let al = { $type: Point_$type, x: aj, y: ak }; let am = k[af]; let an = l[af]; let ao = { $type: Point_$type, x: am, y: an }; w = al.y < ao.y ? al.y : ao.y; w = ai.y < w ? ai.y : w; x = al.y > ao.y ? al.y : ao.y; x = ai.y > x ? ai.y : x; y = al.x < ao.x ? al.x : ao.x; y = ai.x < y ? ai.x : y; z = al.x > ao.x ? al.x : ao.x; z = ai.x > z ? ai.x : z; if (w < v && x > s && y < u && z > t) { let ap = m[ad]; let aq = m[ae]; let ar = m[af]; r.p(ac, aa, ai, al, ao, ap, aq, ar); } } return r; } y0() { let a = new Color(); let b = this.u9; if (b == null) { a = ColorUtil.u("#000000"); } else { a = ColorUtil.t(b); } let c = new ObservableColorCollection(); c.add(ColorUtil.y(a, -0.5)); c.add(a); return c; } ze() { let a = this.yv; if (a == null) { a = ((() => { let $ret = new CustomPaletteColorScale(); $ret.palette = this.y0(); $ret.interpolationMode = 2; return $ret; })()); } else if (typeCast(CustomPaletteColorScale.$, a) !== null) { let b = a; if (b.palette == null || b.palette.count == 0) { b.palette = this.y0(); } a = b; } let c = new ObservableColorCollection(); if (typeCast(CustomPaletteColorScale.$, a) !== null) { c = a.palette; } else { c = this.y0(); } this.yu = a; } sh() { super.sh(); this.ze(); } o5(a, b) { super.o5(a, b); let c = b; c.ca(); } cs() { return new ScatterAreaSeriesView(this); } q1(a) { super.q1(a); this.yw = typeCast(ScatterAreaSeriesView.$, a); } zb(a) { if (this.yw != null) { this.yw.b9(a); } } getDataLegendSeriesContextAt(a, b) { let c = { $type: Point_$type, x: a, y: b }; let d = this.kn(c); let e = d == null ? NaN : this.ix(d, "XMemberPath"); let f = d == null ? NaN : this.ix(d, "YMemberPath"); let g = d == null ? NaN : this.ix(d, "ColorMemberPath"); let h = new DataLegendSeriesValueInfo(); h.l = e; h.a = 13; h.q = "X"; h.r = this.x0 != null ? this.x0 : "X"; h.s = this.xw != null ? this.xw : "X:"; h.t = this.xy != null ? this.xy : ""; let i = new DataLegendSeriesValueInfo(); i.l = f; i.a = 14; i.q = "Y"; i.r = this.x8 != null ? this.x8 : "Y"; i.s = this.x4 != null ? this.x4 : "Y:"; i.t = this.x6 != null ? this.x6 : ""; let j = new DataLegendSeriesValueInfo(); j.l = g; j.a = 0; j.q = "Value"; j.r = this.y7 != null ? this.y7 : "Value"; j.s = this.y3 != null ? this.y3 : "V:"; j.t = this.y5 != null ? this.y5 : ""; let k = new DataLegendSeriesContext(); k.e = ((() => { let $ret = new List$1(DataLegendSeriesValueInfo.$, 0); $ret.add(h); $ret.add(i); $ret.add(j); return $ret; })()); k.h = this.mc(); return k; } } ScatterAreaSeries.$t = markType(ScatterAreaSeries, 'ScatterAreaSeries', ScatterTriangulationSeries.$); ScatterAreaSeries.$$p = markDep(DependencyProperty, PropertyMetadata, ScatterAreaSeries, 'raisePropertyChanged', ['ActualColorScale:yu:zf', [ColorScale.$, null], 'ColorMemberAsLegendLabel:y3:zg', [2, null], 'ColorMemberAsLegendUnit:y5:zh', [2, null], 'ColorMemberPath:y7:zi', [2, null]]); return ScatterAreaSeries; })(); /** * @hidden */ export let ScatterAreaSeriesView = /*@__PURE__*/ (() => { class ScatterAreaSeriesView extends SeriesView { constructor(a) { super(a); this.b4 = null; this.b0 = null; this.b8 = null; this.b7 = null; this.b6 = null; this.b4 = a; } get b3() { return this.b0; } set b3(a) { this.b0 = a; } cd(a, b) { } b9(a) { } b1() { return this.b2(true); } b2(a) { this.cc(); let b = truncate(Math.round(this.bx.left)); let c = truncate(Math.round(this.bx.left)); let d = truncate(Math.round(this.bx.width)); let e = truncate(Math.round(this.bx.height)); let f = d.toString(); let g = e.toString(); if (this.b7.getAttribute("width") != f) { this.b7.setAttribute("width", d.toString()); } if (this.b7.getAttribute("height") != g) { this.b7.setAttribute("height", e.toString()); } let h = this.b6.h(); if (a) { h.clearRect(0, 0, d, e); } this.b8 = h.getImageData(0, 0, d, e); let imageDataArray_ = this.b8.data; return imageDataArray_; } cc() { if (this.b7 == null) { this.b7 = this.e.jz.createElement("canvas"); let a = this.e.jz.get2DCanvasContext(this.b7); this.b6 = new RenderingContext(new CanvasViewRenderer(), a); } } b5(a, b, c) { let d = truncate(Math.round(this.bx.left)); let e = truncate(Math.round(this.bx.left)); let f = truncate(Math.round(this.bx.width)); let g = truncate(Math.round(this.bx.height)); return new TriangleRasterizer(this.b1(), b, c.minimum, c.maximum, c, f, g); } cb(a) { this.ce(null); } ca() { if (this.b6 != null) { this.b6.l(this.bx.left, this.bx.top, this.bx.width, this.bx.height); } this.as(); } a8(a, b) { super.a8(a, b); if (this.b7 == null) { return; } if (b) { let c = new Rectangle(); c.n = this.bx.left; c.o = this.bx.top; c.width = this.bx.width; c.height = this.bx.height; c._fill = this.br(); a.w(c); } else { let d = truncate(Math.round(this.bx.left)); let e = truncate(Math.round(this.bx.top)); let f = truncate(Math.round(this.bx.width)); let g = truncate(Math.round(this.bx.height)); a.n(this.b7.getNativeElement(), 1, d, e, f, g); } } ce(a) { let b = truncate(Math.round(this.bx.left)); let c = truncate(Math.round(this.bx.left)); let d = truncate(Math.round(this.bx.width)); let e = truncate(Math.round(this.bx.height)); this.cc(); this.b6.h().putImageData(this.b8, 0, 0); this.as(); } an(a) { super.an(a); let b = truncate(Math.round(this.bx.width)); let c = truncate(Math.round(this.bx.height)); let d = this.b2(false); if (d == null || d.length == 0) { this.e.bc.exportSeriesPixelsData(a, null, b, c); return; } let e = new Array(intDivide(d.length, 4)); let f; for (let g = 0; g < intDivide(d.length, 4); g++) { f = g * 4; e[g] = d[f + 3] << 24 | d[f] << 16 | d[f + 1] << 8 | d[f + 2]; } this.e.bc.exportSeriesPixelsData(a, e, b, c); } getDefaultTooltipTemplate() { let a = "<div class='ui-chart-default-tooltip-content'><span"; let b = this.e.ba.a$u(this.e); if (!stringIsNullOrEmpty(b)) { a += " style='color:" + b + "'"; } a += ">" + this.b4.title + "</span><br/><span>" + "(${item." + this.b4.x0 + "}, ${item." + this.b4.x8 + "})</span>"; if (!stringIsNullOrEmpty(this.b4.y7)) { a += "<span>, Value: ${item." + this.b4.y7 + "}</span>"; } a += "</div>"; return a; } } ScatterAreaSeriesView.$t = markType(ScatterAreaSeriesView, 'ScatterAreaSeriesView', SeriesView.$); return ScatterAreaSeriesView; })();