/*
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 { __extends, __values } from "tslib";
import { Base, BaseError, fromEnum, typeCast, runOn, delegateCombine, delegateRemove, markType, TypeRegistrar } from "igniteui-angular-core";
import { IDataChartToolbarProvider_$type } from "./IDataChartToolbarProvider";
import { ToolActionIconButtonInfo } from "igniteui-angular-core";
import { ToolActionIconMenuInfo } from "igniteui-angular-core";
import { ToolActionGroupHeaderInfo } from "igniteui-angular-core";
import { ToolActionSeparatorInfo } from "igniteui-angular-core";
import { ToolActionLabelInfo } from "igniteui-angular-core";
import { ToolActionCheckboxInfo } from "igniteui-angular-core";
import { DeviceUtils } from "igniteui-angular-core";
import { ToolActionRadioInfo } from "igniteui-angular-core";
import { XamDataChart } from "./XamDataChart";
import { Axis } from "./Axis";
import { BrushUtilCore } from "igniteui-angular-core";
import { ToolCommandArgument } from "igniteui-angular-core";
import { AutomaticSeriesRequest } from "./AutomaticSeriesRequest";
import { AxisStrokeSettings } from "./AxisStrokeSettings";
import { FastIterationDictionary$2 } from "igniteui-angular-core";
import { CaptureImageSettings } from "igniteui-angular-core";
import { BrushUtil } from "igniteui-angular-core";
import { isNaN_ } from "igniteui-angular-core";
/**
 * @hidden
 */
var DataChartToolbarProvider = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(DataChartToolbarProvider, _super);
    function DataChartToolbarProvider() {
        var _this = _super !== null && _super.apply(this, arguments) || this;
        _this._container = null;
        _this.k = null;
        _this.i = null;
        _this.g = null;
        _this.q = null;
        _this.r = new FastIterationDictionary$2(Axis.$, AxisStrokeSettings.$, 0);
        return _this;
    }
    Object.defineProperty(DataChartToolbarProvider.prototype, "container", {
        get: function () {
            return this._container;
        },
        set: function (a) {
            this._container = a;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(DataChartToolbarProvider.prototype, "l", {
        get: function () {
            if (TypeRegistrar.isRegistered("HorizontalAnchoredCategorySeriesProxy")) {
                return TypeRegistrar.create("HorizontalAnchoredCategorySeriesProxy");
            }
            else {
                throw new BaseError(1, "category series module is not loaded, but is required.");
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(DataChartToolbarProvider.prototype, "v", {
        get: function () {
            return (TypeRegistrar.isRegistered("HorizontalAnchoredCategorySeriesProxy"));
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(DataChartToolbarProvider.prototype, "j", {
        get: function () {
            if (TypeRegistrar.isRegistered("FinancialPriceSeriesProxy")) {
                return TypeRegistrar.create("FinancialPriceSeriesProxy");
            }
            else {
                throw new BaseError(1, "category series module is not loaded, but is required.");
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(DataChartToolbarProvider.prototype, "u", {
        get: function () {
            return (TypeRegistrar.isRegistered("HorizontalAnchoredCategorySeriesProxy"));
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(DataChartToolbarProvider.prototype, "h", {
        get: function () {
            if (this.g == null) {
                if (TypeRegistrar.isRegistered("AnnotationLayerProxy")) {
                    this.g = TypeRegistrar.create("AnnotationLayerProxy");
                    this.g.container = this.container;
                }
                else {
                    throw new BaseError(1, "annotation layer module is not loaded, but is required.");
                }
            }
            return this.g;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(DataChartToolbarProvider.prototype, "t", {
        get: function () {
            return (TypeRegistrar.isRegistered("AnnotationLayerProxy"));
        },
        enumerable: false,
        configurable: true
    });
    DataChartToolbarProvider.prototype.getDesiredToolbarActions = function (a) {
        var b = new ToolActionIconButtonInfo();
        b.name = "ZoomReset";
        b.iconName = "reset";
        b.iconCollectionName = "ChartToolbarIcons";
        b.iconWidth = 24;
        b.iconHeight = 24;
        b.title = "Reset";
        var c = new ToolActionIconMenuInfo();
        c.name = "ZoomMenu";
        c.iconName = "zoomin";
        c.iconCollectionName = "ChartToolbarIcons";
        c.iconWidth = 24;
        c.iconHeight = 25;
        c.actions = this.e();
        var d = new ToolActionGroupHeaderInfo();
        d.name = "AnalyzeHeader";
        d.title = "Analyze";
        var e = new ToolActionSeparatorInfo();
        e.name = "AnalyzeHeaderSeparator";
        e.isGroupHeaderSeparator = true;
        var f = new ToolActionLabelInfo();
        f.name = "LinesMenu";
        f.title = "Lines";
        f.iconName = "analyze-lines";
        f.iconCollectionName = "ChartToolbarIcons";
        f.iconWidth = 24;
        f.iconHeight = 25;
        f.actions = this.a();
        var g = new ToolActionSeparatorInfo();
        g.name = "LinesMenuSeparator";
        var h = new ToolActionLabelInfo();
        h.name = "TrendsMenu";
        h.title = "Trends";
        h.iconName = "analyze-trends";
        h.iconCollectionName = "ChartToolbarIcons";
        h.iconWidth = 24;
        h.iconHeight = 25;
        h.actions = this.c();
        var i = new ToolActionGroupHeaderInfo();
        i.name = "HelpersHeader";
        i.title = "Helpers";
        var j = new ToolActionSeparatorInfo();
        j.name = "HelpersHeaderSeparator";
        j.isGroupHeaderSeparator = true;
        var k = new ToolActionCheckboxInfo();
        k.name = "SeriesAvg";
        k.title = "Series Average";
        k.iconName = "analyze-seriesavg";
        k.iconCollectionName = "ChartToolbarIcons";
        k.iconWidth = 24;
        k.iconHeight = 25;
        var l = new ToolActionSeparatorInfo();
        l.name = "SeriesAvgSeparator";
        var m = new ToolActionLabelInfo();
        m.name = "ValueLabelsMenu";
        m.title = "Value Labels";
        m.iconName = "analyze-valuelabels";
        m.iconCollectionName = "ChartToolbarIcons";
        m.actions = this.d(a);
        m.iconWidth = 24;
        m.iconHeight = 24;
        var n = new ToolActionSeparatorInfo();
        n.name = "HelpersSectionSeparator";
        n.size = DeviceUtils.g(10);
        var o = new ToolActionCheckboxInfo();
        o.name = "ShowGridlines";
        o.title = "Grid";
        o.iconName = "analyze-grid";
        o.iconCollectionName = "ChartToolbarIcons";
        o.iconWidth = 24;
        o.iconHeight = 25;
        var p = new ToolActionSeparatorInfo();
        p.name = "GridSeparator";
        var q = new ToolActionCheckboxInfo();
        q.name = "ShowCrosshairs";
        q.title = "Crosshairs";
        q.iconName = "analyze-crosshairs";
        q.iconCollectionName = "ChartToolbarIcons";
        q.iconWidth = 24;
        q.iconHeight = 25;
        var r = new ToolActionIconMenuInfo();
        r.name = "AnalyzeMenu";
        r.iconName = "analyze";
        r.iconCollectionName = "ChartToolbarIcons";
        r.iconWidth = 24;
        r.iconHeight = 25;
        r.actions = [d, e, f, g, h, i, j, k, l, m, n, o, p, q];
        var s = new ToolActionGroupHeaderInfo();
        s.name = "CopyHeader";
        s.title = "Copy...";
        var t = new ToolActionLabelInfo();
        t.name = "CopyAsImage";
        t.title = "As Image";
        t.iconName = "copy-image";
        t.iconCollectionName = "ChartToolbarIcons";
        t.closeOnExecute = true;
        var u = new ToolActionLabelInfo();
        u.name = "CopyAsTable";
        u.title = "Table Data";
        u.iconName = "copy-table";
        u.iconCollectionName = "ChartToolbarIcons";
        var v = new ToolActionIconMenuInfo();
        v.name = "CopyMenu";
        v.iconName = "copy";
        v.iconCollectionName = "ChartToolbarIcons";
        v.iconWidth = 24;
        v.iconHeight = 24;
        v.actions = [s, t];
        var w = [b, c, ((function () {
                var $ret = new ToolActionSeparatorInfo();
                $ret.name = "ZoomMenuSeparator";
                return $ret;
            })()), r, ((function () {
                var $ret = new ToolActionSeparatorInfo();
                $ret.name = "AnalyzeMenuSeparator";
                return $ret;
            })()), v];
        for (var x = 0; x < w.length; x++) {
            this.a9(a, w[x]);
        }
        return w;
    };
    DataChartToolbarProvider.prototype.a9 = function (a, b) {
        var e_1, _a, e_2, _b, e_3, _c, e_4, _d;
        if (b.actions != null && b.actions.length > 0) {
            for (var c = 0; c < b.actions.length; c++) {
                this.a9(a, b.actions[c]);
            }
        }
        switch (b.name) {
            case "ShowValueLabels":
                {
                    var d = b;
                    var e = this.m(a);
                    d.isChecked = e != null && e._visibility == 0;
                }
                break;
            case "ShowLastValueLabel":
                {
                    var f = b;
                    var g = this.o(a);
                    f.isChecked = g != null && g._visibility == 0;
                }
                break;
            case "Linear":
                {
                    var h = b;
                    try {
                        for (var _e = __values(fromEnum(a.series)), _f = _e.next(); !_f.done; _f = _e.next()) {
                            var i = _f.value;
                            if (i.ey) {
                                if (this.v && this.l.matchesType(i)) {
                                    h.isChecked = this.l.getTrendLineType(i) == 1;
                                }
                            }
                            else if (i.e9) {
                                if (this.u && this.j.matchesType(i)) {
                                    h.isChecked = this.j.getTrendLineType(i) == 1;
                                }
                            }
                        }
                    }
                    catch (e_1_1) {
                        e_1 = { error: e_1_1 };
                    }
                    finally {
                        try {
                            if (_f && !_f.done && (_a = _e.return))
                                _a.call(_e);
                        }
                        finally {
                            if (e_1)
                                throw e_1.error;
                        }
                    }
                }
                break;
            case "Exponential":
                {
                    var j = b;
                    try {
                        for (var _g = __values(fromEnum(a.series)), _h = _g.next(); !_h.done; _h = _g.next()) {
                            var k = _h.value;
                            if (k.ey) {
                                if (this.v && this.l.matchesType(k)) {
                                    j.isChecked = this.l.getTrendLineType(k) == 7;
                                }
                            }
                            else if (k.e9) {
                                if (this.u && this.j.matchesType(k)) {
                                    j.isChecked = this.j.getTrendLineType(k) == 7;
                                }
                            }
                        }
                    }
                    catch (e_2_1) {
                        e_2 = { error: e_2_1 };
                    }
                    finally {
                        try {
                            if (_h && !_h.done && (_b = _g.return))
                                _b.call(_g);
                        }
                        finally {
                            if (e_2)
                                throw e_2.error;
                        }
                    }
                }
                break;
            case "Logarithmic":
                {
                    var l = b;
                    try {
                        for (var _j = __values(fromEnum(a.series)), _k = _j.next(); !_k.done; _k = _j.next()) {
                            var m = _k.value;
                            if (m.ey) {
                                if (this.v && this.l.matchesType(m)) {
                                    l.isChecked = this.l.getTrendLineType(m) == 6;
                                }
                            }
                            else if (m.e9) {
                                if (this.u && this.j.matchesType(m)) {
                                    l.isChecked = this.j.getTrendLineType(m) == 6;
                                }
                            }
                        }
                    }
                    catch (e_3_1) {
                        e_3 = { error: e_3_1 };
                    }
                    finally {
                        try {
                            if (_k && !_k.done && (_c = _j.return))
                                _c.call(_j);
                        }
                        finally {
                            if (e_3)
                                throw e_3.error;
                        }
                    }
                }
                break;
            case "NoTrends":
                {
                    var n = b;
                    var o = 0;
                    var p = a.series.count;
                    try {
                        for (var _l = __values(fromEnum(a.series)), _m = _l.next(); !_m.done; _m = _l.next()) {
                            var q = _m.value;
                            if (q.ey) {
                                if (this.v && this.l.matchesType(q) && this.l.getTrendLineType(q) == 0) {
                                    o = o + 1;
                                }
                            }
                            else if (q.e9) {
                                if (this.u && this.j.matchesType(q) && this.j.getTrendLineType(q) == 0) {
                                    o = o + 1;
                                }
                            }
                            else if (q.es) {
                                p = p - 1;
                            }
                        }
                    }
                    catch (e_4_1) {
                        e_4 = { error: e_4_1 };
                    }
                    finally {
                        try {
                            if (_m && !_m.done && (_d = _l.return))
                                _d.call(_l);
                        }
                        finally {
                            if (e_4)
                                throw e_4.error;
                        }
                    }
                    n.isChecked = o == p;
                }
                break;
            case "MinValue":
                {
                    var r = b;
                    var s = this.p(a, 4);
                    r.isChecked = s != null && s._visibility == 0;
                }
                break;
            case "MaxValue":
                {
                    var t = b;
                    var u = this.p(a, 5);
                    t.isChecked = u != null && u._visibility == 0;
                }
                break;
            case "Average":
                {
                    var v = b;
                    var w = this.p(a, 6);
                    v.isChecked = w != null && w._visibility == 0;
                }
                break;
            case "ShowCrosshairs":
                {
                    var x = b;
                    var y = this.n(a);
                    x.isChecked = y != null && y._visibility == 0;
                }
                break;
            case "ShowGridlines":
                {
                    var z = b;
                    z.isChecked = this.s(a);
                }
                break;
            case "SeriesAvg":
                {
                    var aa = b;
                    var ab = this.p(a, 3);
                    aa.isChecked = ab != null && ab._visibility == 0;
                }
                break;
        }
    };
    DataChartToolbarProvider.prototype.e = function () {
        var a = new ToolActionGroupHeaderInfo();
        a.name = "ZoomHeader";
        a.title = "Zoom";
        var b = new ToolActionLabelInfo();
        b.name = "ZoomIn";
        b.iconName = "zoomin";
        b.iconCollectionName = "ChartToolbarIcons";
        b.iconWidth = 24;
        b.iconHeight = 25;
        b.title = "Zoom In";
        var c = new ToolActionLabelInfo();
        c.name = "ZoomOut";
        c.iconName = "zoomout";
        c.iconCollectionName = "ChartToolbarIcons";
        c.iconWidth = 24;
        c.iconHeight = 25;
        c.title = "Zoom Out";
        return [a, b, c];
    };
    DataChartToolbarProvider.prototype.a = function () {
        var a = new ToolActionGroupHeaderInfo();
        a.name = "LinesHeader";
        a.title = "Lines";
        var b = new ToolActionSeparatorInfo();
        b.isGroupHeaderSeparator = true;
        var c = new ToolActionCheckboxInfo();
        c.name = "MaxValue";
        c.title = "Max value";
        c.iconName = "analyze-lines-maxvalue";
        c.iconCollectionName = "ChartToolbarIcons";
        c.iconWidth = 24;
        c.iconHeight = 25;
        var d = new ToolActionCheckboxInfo();
        d.name = "MinValue";
        d.title = "Min value";
        d.iconName = "analyze-lines-minvalue";
        d.iconCollectionName = "ChartToolbarIcons";
        d.iconWidth = 24;
        d.iconHeight = 25;
        var e = new ToolActionCheckboxInfo();
        e.name = "Average";
        e.title = "Average";
        e.iconName = "analyze-seriesavg";
        e.iconCollectionName = "ChartToolbarIcons";
        e.iconWidth = 24;
        e.iconHeight = 25;
        return [a, b, c, d, e];
    };
    DataChartToolbarProvider.prototype.c = function () {
        var a = new ToolActionGroupHeaderInfo();
        a.name = "TrendsHeader";
        a.title = "Trends";
        var b = new ToolActionSeparatorInfo();
        b.name = "TrendsHeaderSeparator";
        b.isGroupHeaderSeparator = true;
        var c = new ToolActionRadioInfo();
        c.name = "Exponential";
        c.title = "Exponential";
        c.iconName = "analyze-trends-exp";
        c.iconCollectionName = "ChartToolbarIcons";
        c.channel = "trends";
        c.iconWidth = 24;
        c.iconHeight = 25;
        var d = new ToolActionRadioInfo();
        d.name = "Linear";
        d.title = "Linear";
        d.iconName = "analyze-trends-trendline";
        d.iconCollectionName = "ChartToolbarIcons";
        d.channel = "trends";
        d.iconWidth = 24;
        d.iconHeight = 25;
        var e = new ToolActionRadioInfo();
        e.name = "Logarithmic";
        e.title = "Logarithmic";
        e.iconName = "analyze-trends-log";
        e.iconCollectionName = "ChartToolbarIcons";
        e.channel = "trends";
        e.iconWidth = 24;
        e.iconHeight = 25;
        var f = new ToolActionRadioInfo();
        f.name = "NoTrends";
        f.title = "None";
        f.channel = "trends";
        f.iconName = "ig-NoIcon";
        return [a, b, c, d, e, f];
    };
    DataChartToolbarProvider.prototype.b = function () {
        var a = new ToolActionGroupHeaderInfo();
        a.name = "TimePeriodHighlightHeader";
        a.title = "TIME HIGHLIGHT";
        var b = new ToolActionSeparatorInfo();
        b.isGroupHeaderSeparator = true;
        var c = new ToolActionRadioInfo();
        c.name = "Quarters";
        c.title = "Quarters";
        c.channel = "time";
        var d = new ToolActionRadioInfo();
        d.name = "Seasons";
        d.title = "Seasons";
        d.channel = "time";
        var e = new ToolActionRadioInfo();
        e.name = "Weekends";
        e.title = "Weekends";
        e.channel = "time";
        var f = new ToolActionRadioInfo();
        f.name = "WorkDays";
        f.title = "Work days";
        f.channel = "time";
        return [a, b, c, d, e, f];
    };
    DataChartToolbarProvider.prototype.d = function (a) {
        var b = new ToolActionGroupHeaderInfo();
        b.name = "ValueLabelsHeader";
        b.title = "Value Labels";
        var c = new ToolActionSeparatorInfo();
        c.isGroupHeaderSeparator = true;
        var d = new ToolActionCheckboxInfo();
        d.name = "ShowValueLabels";
        d.title = "Show Value Labels";
        d.iconName = "analyze-valuelabels";
        d.iconCollectionName = "ChartToolbarIcons";
        d.iconWidth = 24;
        d.iconHeight = 24;
        var e = new ToolActionCheckboxInfo();
        e.name = "ShowLastValueLabel";
        e.title = "Show Last Value Label";
        e.iconName = "analyze-valuelabels-showlast";
        e.iconCollectionName = "ChartToolbarIcons";
        return [b, c, d, e];
    };
    DataChartToolbarProvider.prototype.m = function (a) {
        var e_5, _a;
        try {
            for (var _b = __values(fromEnum(a.series)), _c = _b.next(); !_c.done; _c = _b.next()) {
                var b = _c.value;
                if (this.h.isCalloutLayer(b) && this.h.getIsAutoCalloutBehaviorEnabled(b)) {
                    return b;
                }
            }
        }
        catch (e_5_1) {
            e_5 = { error: e_5_1 };
        }
        finally {
            try {
                if (_c && !_c.done && (_a = _b.return))
                    _a.call(_b);
            }
            finally {
                if (e_5)
                    throw e_5.error;
            }
        }
        return null;
    };
    DataChartToolbarProvider.prototype.o = function (a) {
        var e_6, _a;
        try {
            for (var _b = __values(fromEnum(a.series)), _c = _b.next(); !_c.done; _c = _b.next()) {
                var b = _c.value;
                if (this.h.isFinalValueLayer(b)) {
                    return b;
                }
            }
        }
        catch (e_6_1) {
            e_6 = { error: e_6_1 };
        }
        finally {
            try {
                if (_c && !_c.done && (_a = _b.return))
                    _a.call(_b);
            }
            finally {
                if (e_6)
                    throw e_6.error;
            }
        }
        return null;
    };
    DataChartToolbarProvider.prototype.p = function (a, b) {
        var e_7, _a;
        try {
            for (var _b = __values(fromEnum(a.series)), _c = _b.next(); !_c.done; _c = _b.next()) {
                var c = _c.value;
                if (this.h.isValueLayer(c) && this.h.getValueMode(c) == b) {
                    return c;
                }
            }
        }
        catch (e_7_1) {
            e_7 = { error: e_7_1 };
        }
        finally {
            try {
                if (_c && !_c.done && (_a = _b.return))
                    _a.call(_b);
            }
            finally {
                if (e_7)
                    throw e_7.error;
            }
        }
        return null;
    };
    DataChartToolbarProvider.prototype.n = function (a) {
        var e_8, _a;
        try {
            for (var _b = __values(fromEnum(a.series)), _c = _b.next(); !_c.done; _c = _b.next()) {
                var b = _c.value;
                if (this.h.isCrosshairLayer(b)) {
                    return b;
                }
            }
        }
        catch (e_8_1) {
            e_8 = { error: e_8_1 };
        }
        finally {
            try {
                if (_c && !_c.done && (_a = _b.return))
                    _a.call(_b);
            }
            finally {
                if (e_8)
                    throw e_8.error;
            }
        }
        return null;
    };
    DataChartToolbarProvider.prototype.s = function (a) {
        var b = typeCast(XamDataChart.$, a);
        if (b != null) {
            for (var c = 0; c < b.axes.count; c++) {
                var d = b.axes._inner[c];
                if (d.jw != null && !BrushUtilCore.a(d.jw) && d.et != 0) {
                    return true;
                }
            }
        }
        return false;
    };
    DataChartToolbarProvider.prototype.onToolCommandExecuting = function (a, b) {
        switch (b.commandId) {
            case "ZoomReset":
                this.bq(a, b);
                break;
            case "ZoomIn":
                this.bo(a, b);
                break;
            case "ZoomOut":
                this.bp(a, b);
                break;
            case "ShowCrosshairs":
                this.bc(a, b);
                break;
            case "ShowGridlines":
                this.be(a, b);
                break;
            case "MaxValue":
                this.bi(a, b);
                break;
            case "MinValue":
                this.bj(a, b);
                break;
            case "Average":
                this.ba(a, b);
                break;
            case "Exponential":
                this.bd(a, b);
                break;
            case "Linear":
                this.bg(a, b);
                break;
            case "Logarithmic":
                this.bh(a, b);
                break;
            case "NoTrends":
                this.bk(a, b);
                break;
            case "SeriesAvg":
                this.bl(a, b);
                break;
            case "ShowValueLabels":
                this.bn(a, b);
                break;
            case "ShowLastValueLabel":
                this.bm(a, b);
                break;
            case "CopyAsImage":
                this.bb(a, b);
                return 2;
        }
        return 0;
    };
    DataChartToolbarProvider.prototype.w = function (a, b) {
        if (a.commandId == b) {
            var e = a.argumentsList;
            for (var d = 0; d < e.length; d++) {
                var c = e[d];
                if (c.argumentName == "IsChecked") {
                    return c.value;
                }
            }
        }
        return false;
    };
    DataChartToolbarProvider.prototype.bc = function (a, b) {
        var _this = this;
        var c = this.n(a);
        if (this.x(a, c)) {
            return;
        }
        this.br(a, b, "ShowCrosshairs", 0, function () {
            var d = _this.h.createCrosshairLayer();
            _this.h.setCrosshairOnAxesEnabled(d, true);
            var e = new AutomaticSeriesRequest();
            e.a = 0;
            e.e = true;
            e.d = d;
            return e;
        });
    };
    DataChartToolbarProvider.prototype.f = function (a, b) {
        var c = new AxisStrokeSettings();
        c.b = a.jz == null || BrushUtilCore.a(a.jz) ? b : a.jz;
        c.a = isNaN_(a.et) || a.et == 0 ? DeviceUtils.g(1) : a.et;
        this.r.item(a, c);
        return c;
    };
    DataChartToolbarProvider.prototype.be = function (a, b) {
        var c = this.w(b, "ShowGridlines");
        if (!c) {
            var d = typeCast(XamDataChart.$, a);
            if (d != null) {
                for (var e = 0; e < d.axes.count; e++) {
                    var f = d.axes._inner[e];
                    if (!this.r.d(f)) {
                        this.f(f, d.aaq);
                    }
                    f.et = 0;
                }
            }
        }
        else {
            var g = typeCast(XamDataChart.$, a);
            if (g != null) {
                for (var h = 0; h < g.axes.count; h++) {
                    var i = g.axes._inner[h];
                    var j = true;
                    if (this.r.d(i)) {
                        if (this.r.item(i).b != i.jz || i.et != 0) {
                            j = true;
                        }
                        else {
                            i.jz = this.r.item(i).b;
                            i.et = this.r.item(i).a;
                            j = false;
                        }
                    }
                    if (j) {
                        var k = this.f(i, g.aaq);
                        i.jz = k.b;
                        i.et = k.a;
                    }
                }
            }
        }
    };
    DataChartToolbarProvider.prototype.bd = function (a, b) {
        var e_9, _a;
        if (!this.v) {
            return;
        }
        var c = this.w(b, "Exponential");
        if (c) {
            try {
                for (var _b = __values(fromEnum(a.series)), _c = _b.next(); !_c.done; _c = _b.next()) {
                    var d = _c.value;
                    if (d.ey) {
                        if (this.v && this.l.matchesType(d)) {
                            this.l.setTrendLineType(d, 7);
                        }
                    }
                    else if (d.e9) {
                        if (this.u && this.j.matchesType(d)) {
                            this.j.setTrendLineType(d, 7);
                        }
                    }
                }
            }
            catch (e_9_1) {
                e_9 = { error: e_9_1 };
            }
            finally {
                try {
                    if (_c && !_c.done && (_a = _b.return))
                        _a.call(_b);
                }
                finally {
                    if (e_9)
                        throw e_9.error;
                }
            }
        }
    };
    DataChartToolbarProvider.prototype.bg = function (a, b) {
        var e_10, _a;
        if (!this.v) {
            return;
        }
        var c = this.w(b, "Linear");
        if (c) {
            try {
                for (var _b = __values(fromEnum(a.series)), _c = _b.next(); !_c.done; _c = _b.next()) {
                    var d = _c.value;
                    if (d.ey) {
                        if (this.v && this.l.matchesType(d)) {
                            this.l.setTrendLineType(d, 1);
                        }
                    }
                    else if (d.e9) {
                        if (this.u && this.j.matchesType(d)) {
                            this.j.setTrendLineType(d, 1);
                        }
                    }
                }
            }
            catch (e_10_1) {
                e_10 = { error: e_10_1 };
            }
            finally {
                try {
                    if (_c && !_c.done && (_a = _b.return))
                        _a.call(_b);
                }
                finally {
                    if (e_10)
                        throw e_10.error;
                }
            }
        }
    };
    DataChartToolbarProvider.prototype.bh = function (a, b) {
        var e_11, _a;
        var c = this.w(b, "Logarithmic");
        if (c) {
            try {
                for (var _b = __values(fromEnum(a.series)), _c = _b.next(); !_c.done; _c = _b.next()) {
                    var d = _c.value;
                    if (d.ey) {
                        if (this.v && this.l.matchesType(d)) {
                            this.l.setTrendLineType(d, 6);
                        }
                    }
                    else if (d.e9) {
                        if (this.u && this.j.matchesType(d)) {
                            this.j.setTrendLineType(d, 6);
                        }
                    }
                }
            }
            catch (e_11_1) {
                e_11 = { error: e_11_1 };
            }
            finally {
                try {
                    if (_c && !_c.done && (_a = _b.return))
                        _a.call(_b);
                }
                finally {
                    if (e_11)
                        throw e_11.error;
                }
            }
        }
    };
    DataChartToolbarProvider.prototype.bk = function (a, b) {
        var e_12, _a;
        var c = this.w(b, "NoTrends");
        if (c) {
            try {
                for (var _b = __values(fromEnum(a.series)), _c = _b.next(); !_c.done; _c = _b.next()) {
                    var d = _c.value;
                    if (d.ey) {
                        if (this.v && this.l.matchesType(d)) {
                            this.l.setTrendLineType(d, 0);
                        }
                    }
                    else if (d.e9) {
                        if (this.u && this.j.matchesType(d)) {
                            this.j.setTrendLineType(d, 0);
                        }
                    }
                }
            }
            catch (e_12_1) {
                e_12 = { error: e_12_1 };
            }
            finally {
                try {
                    if (_c && !_c.done && (_a = _b.return))
                        _a.call(_b);
                }
                finally {
                    if (e_12)
                        throw e_12.error;
                }
            }
        }
    };
    DataChartToolbarProvider.prototype.br = function (a, b, c, d, e) {
        var f = this.w(b, c);
        var g = a.ao(a);
        if (f && !g.e(d)) {
            if (this.t && e != null) {
                g.b.add(e());
            }
        }
        if (!f && g.e(d)) {
            g.l(d);
        }
    };
    DataChartToolbarProvider.prototype.bi = function (a, b) {
        var _this = this;
        var c = this.p(a, 5);
        if (c != null && this.h.getValueMode(c) == 5 && this.x(a, c)) {
            return;
        }
        this.br(a, b, "MaxValue", 1, function () {
            var d = _this.h.createValueLayer();
            _this.h.setValueMode(d, 5);
            _this.h.setValueAxisAnnotationEnabled(d, true);
            _this.h.setBrush(d, BrushUtil.h(255, 99, 208, 0));
            _this.h.setUseLegend(d, true);
            _this.h.setTitle(d, "Maximum");
            _this.h.setLegendItemBadgeShape(d, 2);
            var e = new AutomaticSeriesRequest();
            e.a = 1;
            e.e = true;
            e.d = d;
            return e;
        });
    };
    DataChartToolbarProvider.prototype.bj = function (a, b) {
        var _this = this;
        var c = this.p(a, 4);
        if (c != null && this.x(a, c)) {
            return;
        }
        this.br(a, b, "MinValue", 2, function () {
            var d = _this.h.createValueLayer();
            _this.h.setValueMode(d, 4);
            _this.h.setValueAxisAnnotationEnabled(d, true);
            _this.h.setBrush(d, BrushUtil.h(255, 246, 93, 80));
            _this.h.setUseLegend(d, true);
            _this.h.setTitle(d, "Minimum");
            _this.h.setLegendItemBadgeShape(d, 2);
            var e = new AutomaticSeriesRequest();
            e.a = 2;
            e.e = true;
            e.d = d;
            return e;
        });
    };
    DataChartToolbarProvider.prototype.ba = function (a, b) {
        var _this = this;
        var c = this.p(a, 6);
        if (c != null && this.x(a, c)) {
            return;
        }
        this.br(a, b, "Average", 3, function () {
            var d = _this.h.createValueLayer();
            _this.h.setValueMode(d, 6);
            _this.h.setValueAxisAnnotationEnabled(d, true);
            _this.h.setBrush(d, BrushUtil.h(255, 248, 173, 118));
            _this.h.setUseLegend(d, true);
            _this.h.setTitle(d, "Average");
            _this.h.setLegendItemBadgeShape(d, 2);
            var e = new AutomaticSeriesRequest();
            e.a = 3;
            e.e = true;
            e.d = d;
            return e;
        });
    };
    DataChartToolbarProvider.prototype.bl = function (a, b) {
        var c = a.ao(a);
        var d = this.p(a, 3);
        if (d != null) {
            c.l(4);
            return;
        }
        if (!this.t) {
            return;
        }
        var e = a.series.count;
        for (var f = 0; f < e; f++) {
            var g = a.series._inner[f];
            if (g.es) {
                continue;
            }
            var h = this.h.createValueLayer();
            this.h.setValueMode(h, 3);
            this.h.setValueAxisAnnotationEnabled(h, true);
            this.h.setUseLegend(h, a.f2);
            if (g.title != null && typeof g.title === 'string') {
                var i = g.title;
                this.h.setTitle(h, i + " Avg");
            }
            this.h.setLegendItemBadgeShape(h, 2);
            this.h.setTargetSeries(h, g);
            this.h.setBrush(h, g.u9);
            var j = new AutomaticSeriesRequest();
            j.a = 4;
            j.e = true;
            j.d = h;
            c.b.add(j);
        }
    };
    DataChartToolbarProvider.prototype.x = function (a, b) {
        var e_13, _a;
        if (b != null) {
            var c = false;
            var d = a.ao(a);
            try {
                for (var _b = __values(fromEnum(d.b)), _c = _b.next(); !_c.done; _c = _b.next()) {
                    var e = _c.value;
                    if (e.d == b) {
                        c = true;
                        break;
                    }
                }
            }
            catch (e_13_1) {
                e_13 = { error: e_13_1 };
            }
            finally {
                try {
                    if (_c && !_c.done && (_a = _b.return))
                        _a.call(_b);
                }
                finally {
                    if (e_13)
                        throw e_13.error;
                }
            }
            if (!c) {
                if (b._visibility == 0) {
                    var cl_ = b;
                    var v_ = 1;
                    cl_.visibility = v_;
                    return true;
                }
                else if (b._visibility == 1) {
                    var cl_ = b;
                    var v_ = 0;
                    cl_.visibility = v_;
                    return true;
                }
            }
        }
        return false;
    };
    DataChartToolbarProvider.prototype.bn = function (a, b) {
        var _this = this;
        var c = this.m(a);
        if (this.x(a, c)) {
            return;
        }
        this.br(a, b, "ShowValueLabels", 5, function () {
            var e_14, _a;
            try {
                for (var _b = __values(fromEnum(a.series)), _c = _b.next(); !_c.done; _c = _b.next()) {
                    var d = _c.value;
                    if (d.ey) {
                        if (_this.v && _this.l.matchesType(d)) {
                            var e = _this.l.getMarkerType(d);
                            if (e == 1) {
                                _this.l.setMarkerType(d, 13);
                            }
                        }
                    }
                }
            }
            catch (e_14_1) {
                e_14 = { error: e_14_1 };
            }
            finally {
                try {
                    if (_c && !_c.done && (_a = _b.return))
                        _a.call(_b);
                }
                finally {
                    if (e_14)
                        throw e_14.error;
                }
            }
            var f = _this.h.createCalloutLayer();
            _this.h.setIsAutoCalloutBehaviorEnabled(f, true);
            var g = new AutomaticSeriesRequest();
            g.a = 5;
            g.e = true;
            g.d = f;
            return g;
        });
    };
    DataChartToolbarProvider.prototype.bm = function (a, b) {
        var _this = this;
        var c = this.o(a);
        if (this.x(a, c)) {
            return;
        }
        this.br(a, b, "ShowLastValueLabel", 6, function () {
            var e_15, _a;
            try {
                for (var _b = __values(fromEnum(a.series)), _c = _b.next(); !_c.done; _c = _b.next()) {
                    var d = _c.value;
                    var e = d.ai();
                    if (e != null) {
                        for (var g = 0; g < e.length; g++) {
                            var f = e[g];
                            if (f.cj) {
                                f.cu = true;
                            }
                        }
                    }
                }
            }
            catch (e_15_1) {
                e_15 = { error: e_15_1 };
            }
            finally {
                try {
                    if (_c && !_c.done && (_a = _b.return))
                        _a.call(_b);
                }
                finally {
                    if (e_15)
                        throw e_15.error;
                }
            }
            var h = _this.h.createFinalValueLayer();
            var i = new AutomaticSeriesRequest();
            i.a = 6;
            i.e = true;
            i.d = h;
            return i;
        });
    };
    DataChartToolbarProvider.prototype.bb = function (a, b) {
        this.q = b;
        var c = new CaptureImageSettings();
        c.b = true;
        c.a = 0;
        a.imageCaptured = delegateCombine(a.imageCaptured, runOn(this, this.bf));
        a.nb(c);
        a.al.q();
    };
    DataChartToolbarProvider.prototype.bf = function (a, b) {
        this.q.argumentsList = [((function () {
                var $ret = new ToolCommandArgument();
                $ret.argumentName = "Image";
                $ret.value = b.base64Data;
                return $ret;
            })())];
        var c = a;
        c.imageCaptured = delegateRemove(c.imageCaptured, runOn(this, this.bf));
        if (c.commandCompleted != null) {
            c.commandCompleted(this.q);
        }
    };
    DataChartToolbarProvider.prototype.bo = function (a, b) {
        a.rz(0.05);
    };
    DataChartToolbarProvider.prototype.bp = function (a, b) {
        a.r0(0.05);
    };
    DataChartToolbarProvider.prototype.bq = function (a, b) {
        a.q8();
    };
    DataChartToolbarProvider.$t = markType(DataChartToolbarProvider, 'DataChartToolbarProvider', Base.$, [IDataChartToolbarProvider_$type]);
    return DataChartToolbarProvider;
}(Base));
export { DataChartToolbarProvider };
