/*
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 { FinancialSeries } from "./FinancialSeries";
import { ITrendLineSeries_$type } from "./ITrendLineSeries";
import { IndicatorDisplayType_$type } from "./IndicatorDisplayType";
import { DependencyProperty } from "igniteui-react-core/ES2015/DependencyProperty";
import { TrendLineType_$type } from "igniteui-react-core/ES2015/TrendLineType";
import { Brush } from "igniteui-react-core/ES2015/Brush";
import { PenLineCap_$type } from "igniteui-react-core/ES2015/PenLineCap";
import { DoubleCollection } from "igniteui-react-core/ES2015/DoubleCollection";
import { List$1 } from "igniteui-react-core/ES2015/List$1";
import { AxisRange } from "./AxisRange";
import { CategoryFrame } from "./CategoryFrame";
import { Type, Number_$type, typeCast, enumGetBox, EnumUtil, runOn, markType } from "igniteui-react-core/ES2015/type";
import { Rect } from "igniteui-react-core/ES2015/Rect";
import { ScalerParams } from "./ScalerParams";
import { ISortingAxis_$type } from "./ISortingAxis";
import { CategoryTrendLineManagerFactory } from "./CategoryTrendLineManagerFactory";
import { FinancialSeriesView } from "./FinancialSeriesView";
import { FinancialBucketCalculator } from "./FinancialBucketCalculator";
import { TrendResolutionParams } from "./TrendResolutionParams";
import { CategorySeries } from "./CategorySeries";
import { NotImplementedException } from "igniteui-react-core/ES2015/NotImplementedException";
import { Path } from "igniteui-react-core/ES2015/Path";
import { PropertyMetadata } from "igniteui-react-core/ES2015/PropertyMetadata";
import { isNaN_ } from "igniteui-react-core/ES2015/number";
import { PathGeometry } from "igniteui-react-core/ES2015/PathGeometry";
import { GeometryGroup } from "igniteui-react-core/ES2015/GeometryGroup";
import { Pool$1 } from "igniteui-react-core/ES2015/Pool$1";
import { LineGeometry } from "igniteui-react-core/ES2015/LineGeometry";
import { Extensions } from "igniteui-react-core/ES2015/Extensions";
import { IndicatorRenderer } from "./IndicatorRenderer";
export class FinancialIndicator extends FinancialSeries {
    constructor() {
        super();
        this._indicatorColumn = null;
        this.o6 = null;
        this.lz = new CategoryFrame(3);
        this.l1 = new CategoryFrame(3);
        this.ly = new CategoryFrame(3);
        this.indicatorColumn = new List$1(Number_$type, 0);
        this.o6 = new AxisRange(-100, 100);
    }
    bf() {
        return new FinancialIndicatorView(this);
    }
    ii(a) {
        super.ii(a);
        this.o7 = a;
    }
    pj(a) {
        if (this.mg != null && !this.mg.ck()) {
            this.i1(true);
        }
    }
    pb(a, b, c) {
        if (isNaN_(b.x) || isNaN_(b.y)) {
            return false;
        }
        let d = this.mg;
        let e = 0;
        if (d != null) {
            e = d.d8(d.j6);
        }
        if ((a.y >= e && a.y <= b.y) || (a.y <= e && a.y >= b.y)) {
            return true;
        }
        return false;
    }
    bd() {
        if (this.be == 0) {
            return 1;
        }
        else {
            return super.bd();
        }
    }
    li(a) {
        if (this.lw == null || this.mg == null) {
            return Rect.empty;
        }
        let b = this.k4(a);
        let c = this.bi.bq;
        let d = this.bi.bp;
        let e = this.getEffectiveViewport1(this.bi);
        let f = new ScalerParams(0, c, d, this.mg.b8, e);
        let g = this.aj(this.lw, this.ly.f, this.nr(this.bi), this.nt(this.bi), a, true);
        if (g == null) {
            return Rect.empty;
        }
        let h = g[0];
        let i = g[1];
        let j = Math.abs(b.x - h[0]);
        let k = Math.abs(b.x - i[0]);
        let l = this.mg.dt(this.mg.j6, f);
        let m = 1;
        if (j < k) {
            let n = h[0] - 0.5 * m;
            let o = h[1];
            let p = l;
            return new Rect(0, n, Math.min(o, p), m, Math.max(o, p) - Math.min(o, p));
        }
        else {
            let q = i[0] - 0.5 * m;
            let r = i[1];
            let s = l;
            return new Rect(0, q, Math.min(r, s), m, Math.max(r, s) - Math.min(r, s));
        }
    }
    de(a, b) {
        let c = this.k9(this.lc(a), true, false);
        if (this.o8 == 1) {
            if (this.pb(a, c, b)) {
                return true;
            }
        }
        if (this.o8 == 1 || this.o8 == 0) {
            if (this.dd(a, b)) {
                return true;
            }
        }
        if (this.o8 == 2) {
            if (this.dh(a, b)) {
                return true;
            }
        }
        return false;
    }
    ho(a, b, c, d) {
        super.ho(a, b, c, d);
        if (this.lw != null && typeCast(ISortingAxis_$type, this.lw) !== null) {
            this.lw.i$i();
        }
        if (this.o7.b2) {
            this.o7.b0.g$e(a, b, c, d);
        }
        if (d != null && this.m6.containsKey(d)) {
            let e = this.m6.tryGetValue(d, d);
            d = e.p1;
        }
        if (this.lw != null && typeCast(ISortingAxis_$type, this.lw) !== null) {
            a = 4;
            b = 0;
            c = this.bz.count;
        }
        switch (a) {
            case 3:
                if (this.pa(b, c, d)) {
                    this.pl(b, c, d);
                    this.pj(true);
                }
                break;
            case 2:
                if (this.pa(b, this.bz.count - b, d)) {
                    this.pl(b, this.bz.count - b, d);
                    this.pj(true);
                }
                break;
            case 1:
                if (this.pa(b, this.bz.count - b, d)) {
                    let f = new Array(c);
                    for (let g = 0; g < c; g++) {
                        f[g] = 0;
                    }
                    this.indicatorColumn.s(b, f);
                    this.pl(b, this.bz.count - b, d);
                    this.pj(true);
                }
                break;
            case 0:
                if (this.pa(b, this.bz.count - b, d)) {
                    this.indicatorColumn.v(b, c);
                    this.pl(b, this.bz.count - b, d);
                    this.pj(true);
                }
                break;
            case 4:
                if (this.pa(b, this.bz.count - b, d)) {
                    this.indicatorColumn = new List$1(Number_$type, 2, this.bz.count);
                    let h = new Array(c);
                    for (let i = 0; i < c; i++) {
                        h[i] = 0;
                    }
                    this.indicatorColumn.s(0, h);
                    this.pl(b, this.bz.count - b, d);
                    this.pj(true);
                }
                break;
        }
    }
    get pw() {
        return this.c(FinancialIndicator.pm);
    }
    set pw(a) {
        this.h(FinancialIndicator.pm, a);
    }
    pg() {
        return -1;
    }
    get indicatorColumn() {
        return this._indicatorColumn;
    }
    set indicatorColumn(a) {
        this._indicatorColumn = a;
    }
    io(a, b, c, d) {
        switch (b) {
            case "XAxis":
                this.o7.b8();
                break;
            case "TrendLineType":
                let e = EnumUtil.getEnumValue(TrendLineType_$type, d);
                if (e != 0) {
                    this.o7.b0 = CategoryTrendLineManagerFactory.a(this.o7.b0, this.lw, this.jl, this, this.b2);
                }
                break;
        }
        super.io(a, b, c, d);
        if (this.o7.b2 && this.o7.b0.g$b(a, b, c, d)) {
            this.i1(false);
            let f = typeCast(FinancialIndicatorView.$, this.bh);
            if (f != null && f.b2) {
                f.b0.g$b(a, b, c, d);
            }
            this.h8();
        }
        switch (b) {
            case "FastItemsSource":
                if (this.bz != null) {
                    this.indicatorColumn = new List$1(Number_$type, 2, this.bz.count);
                    let g = new Array(this.bz.count);
                    for (let h = 0; h < this.bz.count; h++) {
                        g[h] = 0;
                    }
                    this.indicatorColumn.s(0, g);
                    this.pl(0, this.bz.count, null);
                    if (this.mg != null && !this.mg.ck()) {
                        this.mc.bs.e(this.eo);
                        this.i1(false);
                    }
                }
                break;
            case "TrendLineBrush":
                this.jc();
                break;
            case FinancialIndicator.$$p[0]:
                this.hl(true, this.bi);
                this.i1(false);
                this.h8();
                break;
            case "OpenColumn":
            case "HighColumn":
            case "LowColumn":
            case "CloseColumn":
            case "VolumeColumn":
                if (this.bz != null) {
                    if (this.indicatorColumn.count != this.bz.count) {
                        this.indicatorColumn = new List$1(Number_$type, 2, this.bz.count);
                        let i = new Array(this.bz.count);
                        for (let j = 0; j < this.bz.count; j++) {
                            i[j] = 0;
                        }
                        this.indicatorColumn.s(0, i);
                    }
                    if (this.pa(0, this.bz.count - 1, b)) {
                        this.pk();
                    }
                }
                break;
            case "XAxis":
                if (this.lw != null && (typeCast(ISortingAxis_$type, this.lw) !== null || typeCast(ISortingAxis_$type, c) !== null)) {
                    this.pk();
                }
                break;
            case "YAxis":
            case FinancialIndicator.$$p[1]:
                this.pk();
                this.h8();
                break;
            case "TrendLineType":
                this.h8();
                break;
        }
    }
    eh(a, b, c) {
        if (this.indicatorColumn == null) {
            return super.eh(a, b, c);
        }
        let d = this.getEffectiveViewport1(this.bi);
        let e = this.nl(this.bi.bq, this.bi.bp, d);
        let f = new ScalerParams(0, this.bi.bq, this.bi.bp, this.lw.b8, d);
        f.c = this.bs.mx;
        return this.ej(this.indicatorColumn, a, this.lw, f, e, runOn(this, this.nk), b, c);
    }
    e8(a, b) {
        if (this.indicatorColumn == null) {
            return super.e8(a, b);
        }
        return this.e9(a, b, this.lw, runOn(this, this.nk), this.indicatorColumn);
    }
    e6(a, b) {
        if (this.indicatorColumn == null) {
            return super.e6(a, b);
        }
        return this.e7(a, b, this.lw, runOn(this, this.nk), this.indicatorColumn);
    }
    get_ds() {
        return true;
    }
    get ds() {
        return this.get_ds();
    }
    pa(a, b, c) {
        if (c == null) {
            return true;
        }
        if (this.pc(a, b).contains(c)) {
            return true;
        }
        return false;
    }
    pl(a, b, c) {
        this.o9(a, b);
    }
    an(a) {
        if (this.bz == null) {
            return null;
        }
        if (a != null && a == this.mg) {
            return this.o6;
        }
        return null;
    }
    c6(a) {
        let b = this.bz != null ? this.bz.indexOf(a) : -1;
        let c = this.bi.bq;
        c = c.copy();
        let d = this.bi.bp;
        let e = new Rect(0, 0, 0, 1, 1);
        let f = this.lg(this.bi);
        if (b >= 0 && Rect.l_op_Inequality(c, null) && Rect.l_op_Inequality(d, null)) {
            if (this.lw != null) {
                let g = new ScalerParams(0, e, e, this.lw.b8, f);
                let h = this.lw.dt(b, g);
                if (h < c.left + 0.1 * c.width) {
                    h = h + 0.4 * c.width;
                }
                if (h > c.right - 0.1 * c.width) {
                    h = h - 0.4 * c.width;
                }
                c.x = h - 0.5 * c.width;
            }
            if (this.mg != null && this.indicatorColumn != null && b < this.indicatorColumn.count) {
                let i = new ScalerParams(0, e, e, this.mg.b8, f);
                let j = this.mg.dt(this.indicatorColumn._inner[b], i);
                if (j < c.top + 0.1 * c.height) {
                    j = j + 0.4 * c.height;
                }
                if (j > c.bottom - 0.1 * c.height) {
                    j = j - 0.4 * c.height;
                }
                c.y = j - 0.5 * c.height;
            }
            this.bn.ap(this.bs, c, true);
        }
        return b >= 0;
    }
    dt(a, b, c) {
        let d = super.dt(a, b, c);
        if (this.indicatorColumn == null || this.indicatorColumn.count == 0) {
            d = false;
        }
        return d;
    }
    ol(a, b) {
        super.ol(a, b);
        let c = b.bq;
        let d = b.bp;
        let e = this.getEffectiveViewport1(b);
        let f = this.lw;
        let g = this.mg;
        let h = new ScalerParams(0, c, d, f.b8, e);
        let i = new ScalerParams(0, c, d, g.b8, e);
        a.f.clear();
        a.m.clear();
        a.p.clear();
        let j = 0;
        let k = typeCast(ISortingAxis_$type, this.lw);
        if (k != null && k.i$b.count != this.bz.count) {
            return;
        }
        j = this.nl(c, d, e);
        let l = this.pg();
        if (l == -1) {
            l = this.trendLinePeriod;
        }
        let m = typeCast(FinancialIndicatorView.$, b);
        if (m.b2) {
            m.b0.prepareLineCore(a.p, this.trendLineType, this.indicatorColumn, l, (n) => this.lw.dt(n, h), (n) => this.mg.dt(n, i), ((() => {
                let $ret = new TrendResolutionParams();
                $ret.c = b.bs.b;
                $ret.d = b.bs.c;
                $ret.e = b.bs.d;
                $ret.a = j;
                $ret.b = this.eo;
                $ret.f = d;
                $ret.g = c;
                return $ret;
            })()));
        }
        let n = this.lw.dw(2, h) - this.lw.dw(1, h);
        for (let o = b.bs.c; o <= b.bs.d; ++o) {
            let p;
            if (k == null) {
                p = b.bs.getBucket(o);
            }
            else {
                let q = k.i$b._inner[o];
                let r = k.i$d(q);
                let s = this.indicatorColumn._inner[o];
                let t = s;
                let u = r;
                while (o < b.bs.d) {
                    q = k.i$b._inner[o + 1];
                    u = k.i$d(q);
                    if (u - r > n) {
                        break;
                    }
                    o++;
                    let v = this.indicatorColumn._inner[o];
                    s = Math.min(s, v);
                    t = Math.max(t, v);
                }
                let w = NaN;
                if (!isNaN_(r)) {
                    w = this.lw.dt(r, h);
                }
                p = [w, s, t];
            }
            if (!isNaN_(p[0])) {
                if (this.lw != null && typeCast(ISortingAxis_$type, this.lw) !== null) {
                    p[0] = p[0] + j;
                }
                else {
                    p[0] = f.dt(p[0], h) + j;
                }
                p[1] = g.dt(p[1], i);
                if (b.bs.b > 1 || k != null) {
                    p[2] = g.dt(p[2], i);
                }
                else {
                    p[2] = p[1];
                }
                a.f.add(p);
            }
        }
        return;
    }
    hl(a, b) {
        super.hl(a, b);
        let c = b;
        c.b3(a);
        if (c.b2) {
            c.b0.g$d();
        }
    }
    l5() {
        switch (this.o8) {
            case 1: return 1;
            case 2: return 1;
            case 0: return 12;
        }
        return 1;
    }
    on(a, b) {
        super.on(a, b);
        let c = typeCast(FinancialIndicatorView.$, b);
        let d = (e) => a.f._inner[e][0];
        let e = (f) => a.f._inner[f][1];
        if (c.b2) {
            c.b0.g$d();
            c.b0.g$g(a.p);
        }
        let f = b.bp;
        let g = this.getEffectiveViewport1(b);
        let h = 0;
        let i = this.kr;
        let j = this.o0;
        if (b.bv(a)) {
            c.b3(false);
            if (a.f.count > 0) {
                switch (this.o8) {
                    case 0:
                        let k = CategorySeries.mp(a.f, a.f.count - 1, f, b.bq, false);
                        c.b7(a.f.count, d, e, true, k);
                        break;
                    case 1:
                        if (this.mg != null) {
                            h = this.np(b);
                        }
                        else {
                            h = 0.5 * (f.top + f.bottom);
                        }
                        let l = CategorySeries.mp(a.f, a.f.count - 1, f, b.bq, false);
                        c.b5(a.f.count, d, e, true, h, l);
                        break;
                    case 2:
                        h = this.np(b);
                        c.b6(a.f.count, d, e, true, h);
                        break;
                    default: throw new NotImplementedException(0);
                }
            }
            b.bx(a);
        }
        let m = a.f;
        let n = this.bz.count;
        this.l4.x(this, this.m2(), this.lw, runOn(this, this.lo), this.nr(b), this.nt(b));
        let o = false;
        let p = this.l4.c;
        if (p != null) {
            o = true;
        }
        this.l4.al = i;
        this.l4.ah = i;
        if (o) {
            let q = new ScalerParams(0, b.bq, b.bp, this.lw.b8, g);
            this.l4.f = false;
            this.ok(m, -1, n, this.lw, q, b.n);
        }
        this.l4.ae(c.cp, true, false, true, false);
        this.l4.ae(c.cr, true, false, true, false);
        this.l4.ae(c.cq, false, true, false, false);
        c.cq._opacity = 0.8 * this.l4.i * this.d1;
        this.l4.ae(c.co, true, false, false, false);
        this.l4.al = j;
        this.l4.ah = j;
        if (o) {
            let r = new ScalerParams(0, b.bq, b.bp, this.lw.b8, g);
            this.l4.f = true;
            this.ok(m, -1, n, this.lw, r, b.n);
        }
        this.l4.ae(c.cl, true, false, true, false);
        this.l4.ae(c.cn, true, false, true, false);
        this.l4.ae(c.cm, false, true, false, false);
        c.cm._opacity = 0.8 * this.l4.i * this.d1;
        this.l4.ae(c.ck, true, false, false, false);
        c.b9();
    }
    jc() {
        super.jc();
        if (this.fb < 0) {
            return;
        }
        if (this.o7.b2) {
            this.o7.ca();
        }
    }
    pk() {
        if (this.o7.b2) {
            this.o7.b0.g$i();
        }
        this.o9(0, this.indicatorColumn.count);
        if (this.mg != null && !this.mg.ck()) {
            this.i1(false);
        }
    }
    hu(a) {
        super.hu(a);
        this.a2.exportTrendlineData(this, a, this.o7.b0.g$j);
    }
}
FinancialIndicator.pm = DependencyProperty.i("ActualTrendLineBrush", Brush.$, FinancialIndicator.$, new PropertyMetadata(2, null, (a, b) => a.raisePropertyChanged("ActualTrendLineBrush", b.oldValue, b.newValue)));
FinancialIndicator.$t = markType(FinancialIndicator, 'FinancialIndicator', FinancialSeries.$, [ITrendLineSeries_$type]);
Type.dep(DependencyProperty, PropertyMetadata, FinancialIndicator, 'raisePropertyChanged', ['DisplayType:o8:pn', [IndicatorDisplayType_$type, enumGetBox(IndicatorDisplayType_$type, 0)], 'IgnoreFirst:pe:po', [1, 0], 'TrendLineType::pu', [TrendLineType_$type, enumGetBox(TrendLineType_$type, 0)], 'TrendLineThickness::pt', [1, 1.5], 'TrendLinePeriod::ps', [1, 7], 'TrendLineBrush::pp', [Brush.$, null], 'TrendLineZIndex:pf:pv', [1, 1001], 'TrendLineDashArray:px:pq', [DoubleCollection.$], 'TrendLineDashCap:py:pr', [PenLineCap_$type, enumGetBox(PenLineCap_$type, 0)]]);
export class FinancialIndicatorBucketCalculator extends FinancialBucketCalculator {
    constructor(a) {
        super(a);
        this.f = null;
        this.f = a;
    }
    getBucket(a) {
        let b = a * this.b;
        let c = Math.min(b + this.b - 1, this.f.by.indicatorColumn.count - 1);
        let d = NaN;
        let e = NaN;
        for (let f = b; f <= c; ++f) {
            let g = this.f.by.indicatorColumn._inner[f];
            if (!isNaN_(d)) {
                if (!isNaN_(g)) {
                    d = Math.min(d, g);
                    e = Math.max(e, g);
                }
            }
            else {
                d = g;
                e = g;
            }
        }
        if (!isNaN_(d)) {
            return [0.5 * (b + c), d, e];
        }
        return [NaN, NaN, NaN];
    }
}
FinancialIndicatorBucketCalculator.$t = markType(FinancialIndicatorBucketCalculator, 'FinancialIndicatorBucketCalculator', FinancialBucketCalculator.$);
export class FinancialIndicatorView extends FinancialSeriesView {
    constructor(a) {
        super(a);
        this.by = null;
        this.b1 = null;
        this.cp = ((() => {
            let $ret = new Path();
            $ret.aj = new PathGeometry();
            return $ret;
        })());
        this.cl = ((() => {
            let $ret = new Path();
            $ret.aj = new PathGeometry();
            return $ret;
        })());
        this.cq = ((() => {
            let $ret = new Path();
            $ret.aj = new PathGeometry();
            return $ret;
        })());
        this.cm = ((() => {
            let $ret = new Path();
            $ret.aj = new PathGeometry();
            return $ret;
        })());
        this.cr = ((() => {
            let $ret = new Path();
            $ret.aj = new PathGeometry();
            return $ret;
        })());
        this.cn = ((() => {
            let $ret = new Path();
            $ret.aj = new PathGeometry();
            return $ret;
        })());
        this.co = ((() => {
            let $ret = new Path();
            $ret.aj = new GeometryGroup();
            return $ret;
        })());
        this.ck = ((() => {
            let $ret = new Path();
            $ret.aj = new GeometryGroup();
            return $ret;
        })());
        this.bz = null;
        this.ch = new Path();
        this.cj = new Path();
        this.ci = new Path();
        this.cg = new Path();
        this.cd = new Path();
        this.cf = new Path();
        this.ce = new Path();
        this.cc = new Path();
        this.by = a;
        this.b1 = ((() => {
            let $ret = new Pool$1(LineGeometry.$);
            $ret.create = runOn(this, this.cb);
            $ret.destroy = runOn(this, this.b4);
            return $ret;
        })());
    }
    bt() {
        return new FinancialIndicatorBucketCalculator(this);
    }
    ap() {
        super.ap();
        if (!this.n) {
            this.bu.o0 = ((() => {
                let $ret = new Brush();
                $ret.fill = "#C62828";
                return $ret;
            })());
            this.bu.es = 2;
        }
    }
    cb() {
        return new LineGeometry();
    }
    b4(a) {
    }
    get b0() {
        if (this.bz == null) {
            this.bz = CategoryTrendLineManagerFactory.a(this.bz, this.e.ap(), this.e.jl, this.e, this.e.b2);
        }
        return this.bz;
    }
    set b0(a) {
        this.bz = a;
    }
    get b2() {
        return this.bz != null;
    }
    b3(a) {
        Extensions.e(this.cp.aj);
        Extensions.e(this.cq.aj);
        Extensions.e(this.cr.aj);
        Extensions.e(this.cl.aj);
        Extensions.e(this.cm.aj);
        Extensions.e(this.cn.aj);
        Extensions.d(this.co.aj);
        Extensions.d(this.ck.aj);
        if (a) {
            this.b1.count = 0;
        }
        this.an();
    }
    b9() {
    }
    b7(a, b, c, d, e) {
        IndicatorRenderer.g(a, b, c, d, this.bq, this.bp, this.cp, this.cl, this.bs.b, this.e.eo, e);
        this.an();
    }
    b5(a, b, c, d, e, f) {
        IndicatorRenderer.e(a, b, c, d, this.bq, this.bp, this.cp, this.cq, this.cl, this.cm, e, this.bs.b, this.e.eo, f);
        this.an();
    }
    b6(a, b, c, d, e) {
        IndicatorRenderer.f(a, b, c, d, this.bp, e, this.b1, this.co, this.ck);
        this.an();
    }
    ca() {
        this.by.pw = null;
        if (this.by.trendLineBrush != null) {
            this.by.pw = this.by.trendLineBrush;
        }
        else {
            this.by.pw = this.by.kr;
        }
    }
    a9() {
        super.a9();
        let a = this.bk();
        this.ch.aj = this.cp.aj;
        this.cj.aj = this.cr.aj;
        this.ci.aj = this.cq.aj;
        this.cg.aj = this.co.aj;
        this.cd.aj = this.cl.aj;
        this.cf.aj = this.cn.aj;
        this.ce.aj = this.cm.aj;
        this.cc.aj = this.ck.aj;
        this.ch._stroke = a;
        this.cj._stroke = a;
        this.ch.ac = this.e.es + 3;
        this.cj.ac = this.e.es + 3;
        this.ci._fill = a;
        this.ci._opacity = 1;
        this.cg._stroke = a;
        this.cg.ac = this.e.es + 3;
        this.cd._stroke = a;
        this.cf._stroke = a;
        this.cd.ac = this.e.es + 3;
        this.cf.ac = this.e.es + 3;
        this.ce._fill = a;
        this.ce._opacity = 1;
        this.cc._stroke = a;
        this.cc.ac = this.e.es + 3;
    }
    a3(a, b) {
        super.a3(a, b);
        if (a.d) {
            if (b) {
                if (this.by.o8 == 2) {
                    a.s(this.cg);
                    a.s(this.cc);
                }
                else {
                    a.s(this.ci);
                    a.s(this.ch);
                    a.s(this.cj);
                    a.s(this.ce);
                    a.s(this.cd);
                    a.s(this.cf);
                }
            }
            else {
                if (this.by.o8 == 2) {
                    a.s(this.co);
                    a.s(this.ck);
                }
                else {
                    a.s(this.cq);
                    a.s(this.cp);
                    a.s(this.cr);
                    a.s(this.cm);
                    a.s(this.cl);
                    a.s(this.cn);
                }
            }
        }
    }
    a2(a, b) {
        if (a.d) {
            if (this.by.trendLineType != 0 && !b) {
                let c = this.b0.g$j;
                c.ac = this.by.trendLineThickness;
                c._stroke = this.by.pw;
                c.ad = this.by.py;
                c.ai = this.by.px;
                a.u(c);
            }
        }
        super.a2(a, b);
    }
    ai(a) {
        super.ai(a);
        this.e.a2.exportPathData(a, this.co, "positiveColumnsShape", ["Positive", "Main"]);
        this.e.a2.exportPathData(a, this.ck, "negativeColumnsShape", ["Negative"]);
        this.e.a2.exportPathData(a, this.cp, "positive0", ["Positive", "Main"]);
        this.e.a2.exportPathData(a, this.cr, "positive1", ["Positive"]);
        this.e.a2.exportPathData(a, this.cq, "positive01", ["PositiveFill"]);
        this.e.a2.exportPathData(a, this.cl, "negative0", ["Negative", "Main"]);
        this.e.a2.exportPathData(a, this.cn, "negative1", ["Negative"]);
        this.e.a2.exportPathData(a, this.cm, "negative01", ["NegativeFill"]);
    }
    b8() {
        if (this.b2) {
            this.bz = CategoryTrendLineManagerFactory.a(this.bz, this.e.ap(), this.e.jl, this.e, this.e.b2);
        }
    }
}
FinancialIndicatorView.$t = markType(FinancialIndicatorView, 'FinancialIndicatorView', FinancialSeriesView.$);
/*<BeginStatics Name="Infragistics.Controls.Charts.FinancialIndicator" />*/
/*<EndStatics Name="Infragistics.Controls.Charts.FinancialIndicator" />*/
