UNPKG

132 kBSource Map (JSON)View Raw
1{"version":3,"file":"ValueAxis.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/axes/ValueAxis.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Value Axis module\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Axis, AxisDataItem, IAxisProperties, IAxisDataFields, IAxisAdapters, IAxisEvents } from \"./Axis\";\r\nimport { AxisRenderer } from \"./AxisRenderer\";\r\nimport { AxisRendererY } from \"./AxisRendererY\";\r\nimport { AxisTick } from \"./AxisTick\";\r\nimport { AxisLabel } from \"./AxisLabel\";\r\nimport { AxisFill } from \"./AxisFill\";\r\nimport { List } from \"../../core/utils/List\";\r\nimport { IPoint, IOrientationPoint } from \"../../core/defs/IPoint\";\r\nimport { Grid } from \"./Grid\";\r\nimport { IDisposer, MultiDisposer } from \"../../core/utils/Disposer\";\r\nimport { XYChart } from \"../types/XYChart\";\r\nimport { XYSeries, XYSeriesDataItem } from \"../series/XYSeries\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { ValueAxisBreak } from \"./ValueAxisBreak\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport { Animation } from \"../../core/utils/Animation\";\r\nimport { IRange } from \"../../core/defs/IRange\";\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a [[DataItem]] for [[ValueAxis]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class ValueAxisDataItem extends AxisDataItem {\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for.\r\n\t */\r\n\tpublic _component!: ValueAxis;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"ValueAxisDataItem\";\r\n\r\n\t\tthis.values.value = {};\r\n\t\tthis.values.endValue = {};\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * A data point's numeric value.\r\n\t *\r\n\t * @param value Value\r\n\t */\r\n\tpublic set value(value: number) {\r\n\t\tthis.setValue(\"value\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Value\r\n\t */\r\n\tpublic get value(): number {\r\n\t\treturn this.values[\"value\"].value;\r\n\t}\r\n\r\n\t/**\r\n\t * Data point's numeric end value.\r\n\t *\r\n\t * @param value End value\r\n\t */\r\n\tpublic set endValue(value: number) {\r\n\t\tthis.setValue(\"endValue\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Value\r\n\t */\r\n\tpublic get endValue(): number {\r\n\t\treturn this.values[\"endValue\"].value;\r\n\t}\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n */\r\nexport interface IMinMaxStep {\r\n\tmin: number;\r\n\tmax: number;\r\n\tstep: number;\r\n}\r\n\r\n/**\r\n * Defines data fields for [[ValueAxis]].\r\n */\r\nexport interface IValueAxisDataFields extends IAxisDataFields { }\r\n\r\n/**\r\n * Defines properties for [[ValueAxis]].\r\n */\r\nexport interface IValueAxisProperties extends IAxisProperties {\r\n\tstrictMinMax?: boolean;\r\n\tlogarithmic?: boolean;\r\n\tmaxPrecision?: number;\r\n\tadjustLabelPrecision?: boolean;\r\n\textraTooltipPrecision?: number;\r\n\textraMin?: number;\r\n\textraMax?: number;\r\n\tkeepSelection?: boolean;\r\n\tincludeRangesInMinMax?: boolean;\r\n\tsyncWithAxis?: ValueAxis;\r\n\ttreatZeroAs?: number;\r\n}\r\n\r\n/**\r\n * Defines events for [[ValueAxis]].\r\n */\r\nexport interface IValueAxisEvents extends IAxisEvents {\r\n\r\n\t/**\r\n\t * Invoked when selection/zoom on axis occurs and start/end coordinates\r\n\t * change.\r\n\t */\r\n\tselectionextremeschanged: {};\r\n\r\n\t/**\r\n\t * Invoked when start/end coordinates of the axis change.\r\n\t */\r\n\textremeschanged: {};\r\n\r\n}\r\n\r\n/**\r\n * Defines adapters for [[ValueAxis]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IValueAxisAdapters extends IAxisAdapters, IValueAxisProperties {\r\n\t/**\r\n\t * Applied to the base value of the axis\r\n\t */\r\n\tbaseValue: number,\r\n\r\n\t/**\r\n\t * Applied to the min value of the axis\r\n\t */\r\n\tmin: number\r\n\r\n\t/**\r\n\t * Applied to the max value of the axis\r\n\t */\r\n\tmax: number\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Used to create a value axis for the chart.\r\n *\r\n * ```TypeScript\r\n * // Create the axis\r\n * let valueAxis = chart.yAxes.push(new am4charts.ValueAxis());\r\n *\r\n * // Set settings\r\n * valueAxis.title.text = \"Monthly Sales\";\r\n * ```\r\n * ```JavaScript\r\n * // Create the axis\r\n * var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());\r\n *\r\n * // Set settings\r\n * valueAxis.title.text = \"Monthly Sales\";\r\n * ```\r\n * ```JSON\r\n * \"yAxes\": [{\r\n * \"type\": \"ValueAxis\",\r\n * \"title\": {\r\n * \"text\": \"Monthly Sales\"\r\n * }\r\n * }]\r\n * ```\r\n *\r\n * @see {@link IValueAxisEvents} for a list of available Events\r\n * @see {@link IValueAxisAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nexport class ValueAxis<T extends AxisRenderer = AxisRenderer> extends Axis<T> {\r\n\r\n\t/**\r\n\t * Defines data fields.\r\n\t */\r\n\tpublic _dataFields: IValueAxisDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IValueAxisProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IValueAxisAdapters;\r\n\r\n\t/**\r\n\t * Defines the type of the Date Items.\r\n\t */\r\n\tpublic _dataItem: ValueAxisDataItem;\r\n\r\n\t/**\r\n\t * Defines the type of the axis breaks.\r\n\t */\r\n\tpublic _axisBreak: ValueAxisBreak;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IValueAxisEvents;\r\n\r\n\t/**\r\n\t * A reference to chart the axis is for.\r\n\t */\r\n\tpublic chart: XYChart;\r\n\r\n\t/**\r\n\t * A list of Series that are using this Axis.\r\n\t */\r\n\tpublic series: List<XYSeries>;\r\n\r\n\t/**\r\n\t * Minimum value for the axis scale.\r\n\t */\r\n\tprotected _min: number;\r\n\r\n\t/**\r\n\t * Maximum value for the axis scale.\r\n\t */\r\n\tprotected _max: number;\r\n\r\n\t/**\r\n\t * User-defined min value for axis.\r\n\t */\r\n\tprotected _minDefined: number;\r\n\r\n\t/**\r\n\t * User-defined max value for axis.\r\n\t */\r\n\tprotected _maxDefined: number;\r\n\r\n\t/**\r\n\t * [_minAdjusted description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _minAdjusted: number;\r\n\r\n\t/**\r\n\t * [_maxAdjusted description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _maxAdjusted: number;\r\n\r\n\t/**\r\n\t * Min real value. (lowest value of all data points)\r\n\t */\r\n\tprotected _minReal: number;\r\n\r\n\t/**\r\n\t * Max real value. (highest value of all data points)\r\n\t */\r\n\tprotected _maxReal: number;\r\n\r\n\t/**\r\n\t * Min value within current zoom.\r\n\t */\r\n\tprotected _minZoomed: number;\r\n\r\n\t/**\r\n\t * Max value within current zoom.\r\n\t */\r\n\tprotected _maxZoomed: number\r\n\r\n\t/**\r\n\t * [_step description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _step: number;\r\n\r\n\t/**\r\n\t * [_stepDecimalPlaces description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _stepDecimalPlaces: number = 0;\r\n\tprotected _prevStepDecimalPlaces: number = 0;\r\n\tprotected _adjustLabelPrecision: boolean = true;\r\n\r\n\t/**\r\n\t * [_difference description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _difference: number;\r\n\r\n\t/**\r\n\t * Base value for the axis.\r\n\t */\r\n\tprotected _baseValue: number = 0;\r\n\r\n\t/**\r\n\t * [_previousValue description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _previousValue: number;\r\n\r\n\t/**\r\n\t * [_previousPoint description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _previousPoint: IPoint;\r\n\r\n\t/**\r\n\t * Adjusted start in case we have breaks.\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _adjustedStart: number = 0;\r\n\r\n\t/**\r\n\t * Adjusted end in case we have breaks.\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _adjustedEnd: number = 1;\r\n\r\n\tprotected _finalMin: number;\r\n\tprotected _finalMax: number;\r\n\r\n\tprotected _extremesChanged: boolean = false;\r\n\r\n\tprotected _deltaMinMax: number = 1;\r\n\r\n\tprotected _dsc: boolean = false;\r\n\r\n\t/**\r\n\t * Holds reference to a function that accepts a DataItem as parameter.\r\n\t *\r\n\t * It can either return a fill opacity for a fill, or manipulate data item\r\n\t * directly, to create various highlighting scenarios.\r\n\t */\r\n\tpublic fillRule(dataItem: this[\"_dataItem\"]): void {\r\n\t\tlet value = dataItem.value;\r\n\t\tlet axis = dataItem.component;\r\n\t\tif (!dataItem.axisFill.disabled) {\r\n\t\t\t// rounding in left to solve floating point number\r\n\t\t\tif ($math.round(value / axis.step / 2, 5) == Math.round(value / axis.step / 2)) {\r\n\t\t\t\tdataItem.axisFill.__disabled = true;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tdataItem.axisFill.__disabled = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * As calculating totals is expensive operation and not often needed, we\r\n\t * don't do it by default.\r\n\t *\r\n\t * In case you use `totalPercent` or `total` in your charts, this must be set\r\n\t * to `true`.\r\n\t *\r\n\t * @default false\r\n\t * @see {@link https://www.amcharts.com/docs/v4/chart-types/xy-chart/#100_stacks} For using `calculateTotals` for 100% stacked series.\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-strings/#Placeholders_for_numeric_values} For using `calculateTotals` in labels.\r\n\t */\r\n\tpublic calculateTotals: boolean = false;\r\n\r\n\r\n\tprotected _minMaxAnimation: Animation;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"ValueAxis\";\r\n\r\n\t\t// Set field name\r\n\t\tthis.axisFieldName = \"value\";\r\n\r\n\t\t// Set defaults\r\n\t\tthis.setPropertyValue(\"maxZoomFactor\", 1000);\r\n\t\tthis.setPropertyValue(\"extraMin\", 0);\r\n\t\tthis.setPropertyValue(\"extraMax\", 0);\r\n\t\tthis.setPropertyValue(\"strictMinMax\", false);\r\n\t\tthis.setPropertyValue(\"maxPrecision\", Number.MAX_VALUE);\r\n\t\tthis.setPropertyValue(\"adjustLabelPrecision\", true);\r\n\t\tthis.setPropertyValue(\"extraTooltipPrecision\", 0);\r\n\t\tthis.keepSelection = false;\r\n\t\tthis.includeRangesInMinMax = false;\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty [[DataItem]] of the type appropriate for this object.\r\n\t *\r\n\t * @see {@link DataItem}\r\n\t * @return Data Item\r\n\t */\r\n\tprotected createDataItem(): this[\"_dataItem\"] {\r\n\t\treturn new ValueAxisDataItem();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty [[AxisBreak]] of the appropriate type.\r\n\t *\r\n\t * @return Axis break\r\n\t */\r\n\tprotected createAxisBreak(): this[\"_axisBreak\"] {\r\n\t\treturn new ValueAxisBreak();\r\n\t}\r\n\r\n\t/**\r\n\t * [dataChangeUpdate description]\r\n\t *\r\n\t * This is a placeholder to override for extending classes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tpublic dataChangeUpdate(): void {\r\n\t\tthis.clearCache();\r\n\t\tif (!this.keepSelection) {\r\n\t\t\tif (this._start != 0 || this._end != 1) {\r\n\t\t\t\tthis._start = 0;\r\n\t\t\t\tthis._end = 1;\r\n\t\t\t\tthis.dispatchImmediately(\"startendchanged\");\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this._start != 0) {\r\n\t\t\t\tthis.dispatchImmediately(\"startchanged\");\r\n\t\t\t}\r\n\t\t\tif (this._end != 1) {\r\n\t\t\t\tthis.dispatchImmediately(\"endchanged\");\r\n\r\n\t\t\t}\r\n\t\t\tif (this._start != 0 || this._end != 1) {\r\n\t\t\t\tthis.dispatchImmediately(\"startendchanged\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._maxZoomed = this._maxDefined;\r\n\t\tthis._minZoomed = this._minDefined;\r\n\r\n\t\tthis._maxAdjusted = this._maxDefined;\r\n\t\tthis._minAdjusted = this._minDefined;\r\n\t}\r\n\r\n\t/**\r\n\t * Processes data items of the related Series.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic processSeriesDataItems(): void {\r\n\t\t// @todo: add some boolean (maybe autodedect) if we need these calculations or not. this place uses a lot of cpu\r\n\t\tif (this.calculateTotals) {\r\n\t\t\tlet series: XYSeries = this.series.getIndex(0);\r\n\t\t\tlet startIndex: number = series.startIndex;\r\n\r\n\t\t\tif (series.dataItems.length > 0) {\r\n\r\n\t\t\t\tif (startIndex > 0) {\r\n\t\t\t\t\tstartIndex--;\r\n\t\t\t\t}\r\n\t\t\t\tlet endIndex: number = series.endIndex;\r\n\t\t\t\tif (endIndex < series.dataItems.length) {\r\n\t\t\t\t\tendIndex++;\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\t// This has to be `var` in order to avoid garbage collection\r\n\t\t\t\tfor (let i: number = startIndex; i < endIndex; ++i) {\r\n\t\t\t\t\t// This has to be `var` in order to avoid garbage collection\r\n\t\t\t\t\tconst total: { [index: string]: number } = {};\r\n\t\t\t\t\tconst sum: { [index: string]: number } = {};\r\n\r\n\t\t\t\t\tthis.series.each((series) => {\r\n\t\t\t\t\t\tif (!series.excludeFromTotal) {\r\n\t\t\t\t\t\t\tlet dataItem: XYSeriesDataItem = series.dataItems.getIndex(i);\r\n\t\t\t\t\t\t\tif (dataItem) {\r\n\t\t\t\t\t\t\t\t$object.each(dataItem.values, (key) => {\r\n\t\t\t\t\t\t\t\t\tlet value: number = dataItem.values[key].workingValue; // can not use getWorkingValue here!\r\n\r\n\t\t\t\t\t\t\t\t\tif ($type.isNumber(value)) {\r\n\t\t\t\t\t\t\t\t\t\tif (!$type.isNumber(total[key])) {\r\n\t\t\t\t\t\t\t\t\t\t\ttotal[key] = Math.abs(value);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t\t\ttotal[key] += Math.abs(value);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tif (!$type.isNumber(sum[key])) {\r\n\t\t\t\t\t\t\t\t\t\t\tsum[key] = value;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t\t\tsum[key] += value;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\r\n\t\t\t\t\tthis.series.each((series) => {\r\n\t\t\t\t\t\tif (!series.excludeFromTotal) {\r\n\t\t\t\t\t\t\tlet dataItem: XYSeriesDataItem = series.dataItems.getIndex(i);\r\n\t\t\t\t\t\t\tif (dataItem) {\r\n\t\t\t\t\t\t\t\t$object.each(dataItem.values, (key) => {\r\n\t\t\t\t\t\t\t\t\tlet value: number = dataItem.values[key].workingValue; // can not use getWorkingValue here!\r\n\t\t\t\t\t\t\t\t\tif ($type.isNumber(value)) {\r\n\t\t\t\t\t\t\t\t\t\tdataItem.setCalculatedValue(key, total[key], \"total\");\r\n\t\t\t\t\t\t\t\t\t\tdataItem.setCalculatedValue(key, 100 * value / total[key], \"totalPercent\");\r\n\t\t\t\t\t\t\t\t\t\tdataItem.setCalculatedValue(key, sum[key], \"sum\");\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Validates the whole axis. Causes it to redraw.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t */\r\n\tpublic validate(): void {\r\n\r\n\t\tif (this.axisLength <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tsuper.validate();\r\n\r\n\t\tthis.getMinMax();\r\n\r\n\t\tif (!$type.isNumber(this._minAdjusted)) {\r\n\t\t\tthis.dataItems.each((dataItem) => {\r\n\t\t\t\tdataItem.value = null;\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tthis.fixAxisBreaks();\r\n\r\n\t\tthis.calculateZoom();\r\n\r\n\t\tthis.validateAxisElements();\r\n\r\n\t\tthis.validateAxisRanges();\r\n\r\n\t\tthis.validateBreaks();\r\n\r\n\t\tthis.hideUnusedDataItems();\r\n\r\n\t\tthis.renderer.invalidateLayout();\r\n\t\t// hide too close\r\n\t\t//this.hideTooCloseDataItems();\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates all positions, related to axis as per current zoom.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic calculateZoom(): void {\r\n\t\tif ($type.isNumber(this.min) && $type.isNumber(this.max)) {\r\n\t\t\tlet min: number = this.positionToValue(this.start);\r\n\t\t\tlet max: number = this.positionToValue(this.end);\r\n\r\n\t\t\tlet differece: number = this.adjustDifference(min, max);\r\n\t\t\tlet minMaxStep: IMinMaxStep = this.adjustMinMax(min, max, differece, this._gridCount, true);\r\n\r\n\t\t\tlet stepDecimalPlaces = $utils.decimalPlaces(minMaxStep.step);\r\n\t\t\tthis._stepDecimalPlaces = stepDecimalPlaces;\r\n\r\n\t\t\tmin = $math.round(min, stepDecimalPlaces);\r\n\t\t\tmax = $math.round(max, stepDecimalPlaces);\r\n\r\n\t\t\tminMaxStep = this.adjustMinMax(min, max, differece, this._gridCount, true);\r\n\t\t\tlet step = minMaxStep.step;\r\n\r\n\t\t\tif (this.syncWithAxis) {\r\n\t\t\t\tlet calculated = this.getCache(min + \"-\" + max);\r\n\t\t\t\tif ($type.isNumber(calculated)) {\r\n\t\t\t\t\tstep = calculated;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tmin = minMaxStep.min;\r\n\t\t\t\tmax = minMaxStep.max;\r\n\t\t\t}\r\n\r\n\t\t\tif (this._minZoomed != min || this._maxZoomed != max || this._step != step || this._dsc) {\r\n\t\t\t\tthis._dsc = false;\r\n\t\t\t\tthis._minZoomed = min;\r\n\t\t\t\tthis._maxZoomed = max;\r\n\r\n\t\t\t\tthis._step = step;\r\n\r\n\t\t\t\tthis.dispatchImmediately(\"selectionextremeschanged\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected fixSmallStep(step: number): number {\r\n\t\tif (1 + step == 1) {\r\n\t\t\tstep *= 2;\r\n\t\t\treturn this.fixSmallStep(step);\r\n\t\t}\r\n\t\treturn step;\r\n\t}\r\n\r\n\t/**\r\n\t * Validates Axis elements.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tpublic validateAxisElements(): void {\r\n\t\tif ($type.isNumber(this.max) && $type.isNumber(this.min)) {\r\n\t\t\t// first regular items\r\n\t\t\tlet value: number = this.minZoomed - this._step * 2;\r\n\r\n\t\t\tif (!this.logarithmic) {\r\n\t\t\t\tvalue = Math.floor(value / this._step) * this._step;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet differencePower = Math.log(this.max) * Math.LOG10E - Math.log(this.min) * Math.LOG10E;\r\n\t\t\t\tif (differencePower > 1) {\r\n\t\t\t\t\tvalue = Math.pow(10, Math.log(this.min) * Math.LOG10E);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tvalue = Math.floor(this.minZoomed / this._step) * this._step;\r\n\t\t\t\t\tif (value == 0) {\r\n\t\t\t\t\t\tvalue = this.minZoomed;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet maxZoomed = this._maxZoomed + this._step;\r\n\r\n\t\t\tthis.resetIterators();\r\n\r\n\t\t\tlet dataItemsIterator = this._dataItemsIterator;\r\n\r\n\t\t\tif (this._step == 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._step = this.fixSmallStep(this._step);\r\n\r\n\t\t\tlet i: number = 0;\r\n\r\n\t\t\tconst precisionChanged = this._prevStepDecimalPlaces != this._stepDecimalPlaces;\r\n\t\t\tthis._prevStepDecimalPlaces = this._stepDecimalPlaces;\r\n\r\n\t\t\twhile (value <= maxZoomed) {\r\n\t\t\t\tlet axisBreak: ValueAxisBreak = <ValueAxisBreak>this.isInBreak(value);\r\n\r\n\t\t\t\tif (!axisBreak) {\r\n\r\n\t\t\t\t\tlet dataItem: this[\"_dataItem\"] = dataItemsIterator.find((x) => x.value === value);\r\n\t\t\t\t\tif (dataItem.__disabled) {\r\n\t\t\t\t\t\tdataItem.__disabled = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//this.processDataItem(dataItem);\r\n\t\t\t\t\tthis.appendDataItem(dataItem);\r\n\t\t\t\t\tdataItem.axisBreak = undefined;\r\n\r\n\t\t\t\t\tif (dataItem.value != value || precisionChanged) {\r\n\t\t\t\t\t\tdataItem.value = value;\r\n\t\t\t\t\t\tdataItem.text = this.formatLabel(value);\r\n\r\n\t\t\t\t\t\tif (dataItem.label && dataItem.label.invalid) {\r\n\t\t\t\t\t\t\tdataItem.label.validate();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (dataItem.value >= this.min && dataItem.value <= this.max) {\r\n\t\t\t\t\t\t\tif (dataItem.label) {\r\n\t\t\t\t\t\t\t\tif ((this.axisLetter == \"Y\" && dataItem.label.measuredWidth > this.ghostLabel.measuredWidth) || (this.axisLetter == \"X\" && dataItem.label.measuredHeight > this.ghostLabel.measuredHeight)) {\r\n\t\t\t\t\t\t\t\t\tthis.ghostLabel.text = dataItem.label.currentText;\r\n\t\t\t\t\t\t\t\t\tthis.ghostLabel.validate();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.validateDataElement(dataItem);\r\n\t\t\t\t}\r\n\t\t\t\ti++;\r\n\r\n\t\t\t\tlet oldValue = value;\r\n\r\n\t\t\t\tif (!this.logarithmic) {\r\n\t\t\t\t\tvalue += this._step;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tlet differencePower = Math.log(this.max) * Math.LOG10E - Math.log(this.min) * Math.LOG10E;\r\n\t\t\t\t\tif (differencePower > 1) {\r\n\t\t\t\t\t\tvalue = Math.pow(10, Math.log(this.min) * Math.LOG10E + i);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tvalue += this._step;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet stepPower = Math.pow(10, Math.floor(Math.log(Math.abs(this._step)) * Math.LOG10E));\r\n\r\n\t\t\t\tif (stepPower < 1) {\r\n\t\t\t\t\t// exponent is less then 1 too. Count decimals of exponent\r\n\t\t\t\t\tlet decCount = Math.round(Math.abs(Math.log(Math.abs(stepPower)) * Math.LOG10E)) + 2;\r\n\t\t\t\t\tdecCount = Math.min(13, decCount);\r\n\t\t\t\t\t// round value to avoid floating point issues\r\n\t\t\t\t\tvalue = $math.round(value, decCount);\r\n\t\t\t\t\t// ceil causes problems: https://codepen.io/team/amcharts/pen/XWMjZwy?editors=1010\r\n\t\t\t\t\tif (oldValue == value) {\r\n\t\t\t\t\t\tvalue = maxZoomed;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet axisBreaks = this._axisBreaks;\r\n\t\t\tif (axisBreaks) {\r\n\t\t\t\t// breaks later\r\n\t\t\t\tlet renderer: AxisRenderer = this.renderer;\r\n\r\n\t\t\t\t$iter.each(axisBreaks.iterator(), (axisBreak) => {\r\n\t\t\t\t\tif (axisBreak.breakSize > 0) {\r\n\t\t\t\t\t\t// only add grid if gap is bigger then minGridDistance\r\n\t\t\t\t\t\tif ($math.getDistance(axisBreak.startPoint, axisBreak.endPoint) > renderer.minGridDistance) {\r\n\t\t\t\t\t\t\tlet breakValue: number = axisBreak.adjustedMin;\r\n\r\n\t\t\t\t\t\t\twhile (breakValue <= axisBreak.adjustedMax) {\r\n\t\t\t\t\t\t\t\tif (breakValue >= axisBreak.adjustedStartValue && breakValue <= axisBreak.adjustedEndValue) {\r\n\t\t\t\t\t\t\t\t\tlet dataItem: this[\"_dataItem\"] = dataItemsIterator.find((x) => x.value === breakValue);\r\n\t\t\t\t\t\t\t\t\tif (dataItem.__disabled) {\r\n\t\t\t\t\t\t\t\t\t\tdataItem.__disabled = false;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t//this.processDataItem(dataItem);\r\n\t\t\t\t\t\t\t\t\tthis.appendDataItem(dataItem);\r\n\t\t\t\t\t\t\t\t\tdataItem.axisBreak = axisBreak;\r\n\t\t\t\t\t\t\t\t\tif (dataItem.value != breakValue) {\r\n\t\t\t\t\t\t\t\t\t\tdataItem.value = breakValue;\r\n\t\t\t\t\t\t\t\t\t\tdataItem.text = this.formatLabel(breakValue);\r\n\t\t\t\t\t\t\t\t\t\tif (dataItem.label && dataItem.label.invalid) {\r\n\t\t\t\t\t\t\t\t\t\t\tdataItem.label.validate();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tthis.validateDataElement(dataItem);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tbreakValue += axisBreak.adjustedStep;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Validates axis data item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param dataItem Data item\r\n\t */\r\n\tpublic validateDataElement(dataItem: this[\"_dataItem\"]): void {\r\n\t\tsuper.validateDataElement(dataItem);\r\n\r\n\t\t//dataItem.__disabled = false;\r\n\r\n\t\tdataItem.itemIndex = this._axisItemCount;\r\n\t\tthis._axisItemCount++;\r\n\r\n\t\tlet renderer: AxisRenderer = this.renderer;\r\n\t\tlet value: number = dataItem.value;\r\n\t\tlet endValue: number = dataItem.endValue;\r\n\r\n\t\tlet position: number = this.valueToPosition(value);\r\n\t\tdataItem.position = position;\r\n\r\n\t\tlet endPosition: number = position;\r\n\t\tlet fillEndPosition: number = this.valueToPosition(value + this._step);\r\n\r\n\t\tif ($type.isNumber(endValue)) {\r\n\t\t\tendPosition = this.valueToPosition(endValue);\r\n\t\t\tfillEndPosition = endPosition;\r\n\t\t}\r\n\r\n\t\t// this point is needed to calculate distance to satisfy minGridDistance\r\n\t\tdataItem.point = renderer.positionToPoint(position);\r\n\r\n\t\tlet tick: AxisTick = dataItem.tick;\r\n\t\tif (tick && !tick.disabled) {\r\n\t\t\trenderer.updateTickElement(tick, position, endPosition);\r\n\t\t}\r\n\r\n\t\tlet grid: Grid = dataItem.grid;\r\n\t\tif (grid && !grid.disabled) {\r\n\t\t\trenderer.updateGridElement(grid, position, endPosition);\r\n\t\t}\r\n\r\n\r\n\t\tlet label: AxisLabel = dataItem.label;\r\n\t\tif (label && !label.disabled) {\r\n\t\t\trenderer.updateLabelElement(label, position, endPosition);\r\n\t\t}\r\n\r\n\t\tlet fill: AxisFill = dataItem.axisFill;\r\n\t\tif (fill && !fill.disabled) {\r\n\t\t\trenderer.updateFillElement(fill, position, fillEndPosition);\r\n\t\t\tif (!dataItem.isRange) {\r\n\t\t\t\tthis.fillRule(dataItem);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (dataItem.bullet) {\r\n\t\t\trenderer.updateBullet(dataItem.bullet, position, endPosition);\r\n\t\t}\r\n\r\n\t\tlet mask: AxisFill = dataItem.mask;\r\n\t\tif (mask) {\r\n\t\t\trenderer.updateFillElement(mask, position, fillEndPosition);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Formats the value according to axis' own [[NumberFormatter]].\r\n\t *\r\n\t * @param value Source value\r\n\t * @return Formatted value\r\n\t */\r\n\tpublic formatLabel(value: number): string {\r\n\t\tif (this.adjustLabelPrecision && value != 0) {\r\n\t\t\treturn this.numberFormatter.format(value, undefined, this._stepDecimalPlaces);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this.numberFormatter.format(value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Coordinates of the actual axis start.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Base point\r\n\t */\r\n\tpublic get basePoint(): IPoint {\r\n\t\tlet baseValue: number = this.baseValue;\r\n\t\tlet position: number = this.valueToPosition(baseValue);\r\n\t\tlet basePoint: IPoint = this.renderer.positionToPoint(position);\r\n\r\n\t\treturn basePoint;\r\n\t}\r\n\r\n\t/**\r\n\t * A base value.\r\n\t *\r\n\t * This is a threshold value that will divide \"positive\" and \"negative\"\r\n\t * value ranges.\r\n\t *\r\n\t * Other scale-related functionality also depend on base value. E.g. stacks,\r\n\t * value-dependent coloring, etc.\r\n\t *\r\n\t * @param value Base value\r\n\t */\r\n\tpublic set baseValue(value: number) {\r\n\t\tthis._baseValue = value;\r\n\t\tthis.invalidateLayout();\r\n\t\tthis.invalidateSeries();\r\n\t}\r\n\r\n\t/**\r\n\t * @return base value\r\n\t */\r\n\tpublic get baseValue(): number {\r\n\r\n\t\tlet baseValue = this._baseValue;\r\n\t\tif (this.logarithmic) {\r\n\t\t\tbaseValue = this.min;\r\n\t\t}\r\n\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn baseValue;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"baseValue\", baseValue);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a numeric value to relative position on axis\r\n\t *\r\n\t * An alias to `valueToPosition()`.\r\n\t *\r\n\t * @param value Value\r\n\t * @return Position\r\n\t */\r\n\tpublic anyToPosition(value: number): number {\r\n\t\treturn this.valueToPosition(value);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Converts a numeric value to orientation point (x, y, angle) on axis\r\n\t *\r\n\t * @param value Value\r\n\t * @return Orientation point\r\n\t */\r\n\tpublic valueToPoint(value: number): IOrientationPoint {\r\n\t\tlet position = this.valueToPosition(value);\r\n\t\tlet point = this.renderer.positionToPoint(position);\r\n\t\tlet angle = this.renderer.positionToAngle(position);\r\n\t\treturn { x: point.x, y: point.y, angle: angle };\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a numeric value to orientation (x, y, angle) point on axis\r\n\t *\r\n\t * @param value Value\r\n\t * @return Orientation point\r\n\t */\r\n\tpublic anyToPoint(value: number): IOrientationPoint {\r\n\t\treturn this.valueToPoint(value);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Converts a numeric value to relative position on axis.\r\n\t *\r\n\t * @param value Value\r\n\t * @return relative position\r\n\t */\r\n\tpublic valueToPosition(value: number): number {\r\n\t\tif ($type.isNumber(value)) {\r\n\r\n\t\t\t// todo: think if possible to take previous value and do not go through all previous breaks\r\n\t\t\tlet min: number = this.min;\r\n\t\t\tlet max: number = this.max;\r\n\r\n\t\t\tif ($type.isNumber(min) && $type.isNumber(max)) {\r\n\t\t\t\tlet difference: number = this._difference;\r\n\r\n\t\t\t\tlet axisBreaks = this._axisBreaks;\r\n\t\t\t\tif (axisBreaks && axisBreaks.length > 0) {\r\n\t\t\t\t\t$iter.eachContinue(axisBreaks.iterator(), (axisBreak) => {\r\n\t\t\t\t\t\tlet startValue: number = axisBreak.adjustedStartValue;\r\n\t\t\t\t\t\tlet endValue: number = axisBreak.adjustedEndValue;\r\n\r\n\t\t\t\t\t\tif ($type.isNumber(startValue) && $type.isNumber(endValue)) {\r\n\r\n\t\t\t\t\t\t\tif (value < startValue) {\r\n\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif ($math.intersect({ start: startValue, end: endValue }, { start: min, end: max })) { // todo: check this once and set some flag in axisBreak\r\n\t\t\t\t\t\t\t\tstartValue = Math.max(startValue, min);\r\n\t\t\t\t\t\t\t\tendValue = Math.min(endValue, max);\r\n\r\n\t\t\t\t\t\t\t\tlet breakSize: number = axisBreak.breakSize;\r\n\r\n\t\t\t\t\t\t\t\t// value to the right of break end\r\n\t\t\t\t\t\t\t\tif (value > endValue) {\r\n\t\t\t\t\t\t\t\t\tmin += (endValue - startValue) * (1 - breakSize); // todo: maybe this can be done differently?\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t// value to the left of break start\r\n\t\t\t\t\t\t\t\telse if (value < startValue) {\r\n\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t// value within break\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\tvalue = startValue + (value - startValue) * breakSize;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet position;\r\n\r\n\t\t\t\tif (!this.logarithmic) {\r\n\t\t\t\t\tposition = (value - min) / difference;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tlet treatZeroAs = this.treatZeroAs;\r\n\t\t\t\t\tif ($type.isNumber(treatZeroAs)) {\r\n\t\t\t\t\t\tif (value <= treatZeroAs) {\r\n\t\t\t\t\t\t\tvalue = treatZeroAs;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tposition = (Math.log(value) * Math.LOG10E - Math.log(this.min) * Math.LOG10E) / ((Math.log(this.max) * Math.LOG10E - Math.log(this.min) * Math.LOG10E));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//position = $math.round(position, 10);\r\n\r\n\t\t\t\treturn position;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t/**\r\n\t * When fontSize of fontFamily changes we need to hard-invalidate all Labels of this container to position them properly.\r\n\t */\r\n\tpublic invalidateLabels() {\r\n\t\tsuper.invalidateLabels();\r\n\t\tif (this.dataItems) {\r\n\t\t\tthis.dataItems.each((dataItem) => {\r\n\t\t\t\tdataItem.value = undefined;\r\n\t\t\t})\r\n\t\t\tthis.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Converts an relative position to a corresponding value within\r\n\t * axis' scale.\r\n\t *\r\n\t * @param position Position (px)\r\n\t * @return Value\r\n\t */\r\n\tpublic positionToValue(position: number): number {\r\n\r\n\t\tlet min: number = this.min;\r\n\t\tlet max: number = this.max;\r\n\r\n\t\tif ($type.isNumber(min) && $type.isNumber(max)) {\r\n\r\n\t\t\tlet difference: number = max - min; //no need to adjust!\r\n\r\n\t\t\tlet value: number = null;\r\n\r\n\t\t\tlet axisBreaks = this._axisBreaks;\r\n\r\n\t\t\tif (axisBreaks) {\r\n\t\t\t\t// in case we have some axis breaks\r\n\t\t\t\tif (axisBreaks.length > 0) {\r\n\t\t\t\t\t$iter.eachContinue(axisBreaks.iterator(), (axisBreak) => {\r\n\t\t\t\t\t\tlet breakStartPosition: number = axisBreak.startPosition;\r\n\t\t\t\t\t\tlet breakEndPosition: number = axisBreak.endPosition;\r\n\r\n\t\t\t\t\t\tlet breakStartValue: number = axisBreak.adjustedStartValue;\r\n\t\t\t\t\t\tlet breakEndValue: number = axisBreak.adjustedEndValue;\r\n\r\n\t\t\t\t\t\tif ($type.isNumber(breakStartValue) && $type.isNumber(breakEndValue)) {\r\n\r\n\t\t\t\t\t\t\tif (breakStartValue > max) {\r\n\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif ($math.intersect({ start: breakStartValue, end: breakEndValue }, { start: min, end: max })) {\r\n\r\n\t\t\t\t\t\t\t\tbreakStartValue = $math.max(breakStartValue, min);\r\n\t\t\t\t\t\t\t\tbreakEndValue = $math.min(breakEndValue, max);\r\n\r\n\t\t\t\t\t\t\t\tlet breakSize: number = axisBreak.breakSize;\r\n\r\n\t\t\t\t\t\t\t\tdifference -= (breakEndValue - breakStartValue) * (1 - breakSize);\r\n\r\n\t\t\t\t\t\t\t\t// position to the right of break end\r\n\t\t\t\t\t\t\t\tif (position > breakEndPosition) {\r\n\t\t\t\t\t\t\t\t\tmin += (breakEndValue - breakStartValue) * (1 - breakSize);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t// position to the left of break start\r\n\t\t\t\t\t\t\t\telse if (position < breakStartPosition) {\r\n\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t// value within break\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\tlet breakPosition: number = (position - breakStartPosition) / (breakEndPosition - breakStartPosition);\r\n\t\t\t\t\t\t\t\t\tvalue = breakStartValue + breakPosition * (breakEndValue - breakStartValue);\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!$type.isNumber(value)) {\r\n\t\t\t\tif (this.logarithmic) {\r\n\t\t\t\t\tvalue = Math.pow(Math.E, (position * ((Math.log(this.max) * Math.LOG10E - Math.log(this.min) * Math.LOG10E)) + Math.log(this.min) * Math.LOG10E) / Math.LOG10E);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tvalue = position * difference + min;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\t//}\r\n\t}\r\n\r\n\t/**\r\n\t * Converts an X coordinate to a relative value in axis' scale.\r\n\t *\r\n\t * @param x X (px)\r\n\t * @return Value\r\n\t */\r\n\tpublic xToValue(x: number): number {\r\n\t\treturn this.positionToValue(this.pointToPosition({ x: x, y: 0 }));\r\n\t}\r\n\r\n\t/**\r\n\t * Converts an Y coordinate to a relative value in axis' scale.\r\n\t *\r\n\t * @param y Y (px)\r\n\t * @return Value\r\n\t */\r\n\tpublic yToValue(y: number): number {\r\n\t\treturn this.positionToValue(this.pointToPosition({ x: 0, y: y }));\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Converts pixel coordinates to a relative position. (0-1)\r\n\t *\r\n\t * @param point Coorinates (px)\r\n\t * @return Position (0-1)\r\n\t */\r\n\tpublic pointToPosition(point: IPoint): number {\r\n\t\tif (this.renderer instanceof AxisRendererY) {\r\n\t\t\treturn 1 - this.renderer.pointToPosition(point);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this.renderer.pointToPosition(point);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected animateMinMax(min: number, max: number): Animation {\r\n\t\treturn this.animate([{ property: \"_minAdjusted\", from: this._minAdjusted, to: min }, { property: \"_maxAdjusted\", from: this._maxAdjusted, to: max }], this.rangeChangeDuration, this.rangeChangeEasing);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Calculates smallest and biggest value for the axis scale.\r\n\t * @ignore\r\n\t * @todo Description (review)\r\n\t */\r\n\tpublic getMinMax() {\r\n\r\n\t\tthis.updateGridCount();\r\n\r\n\t\tlet min: number = Number.POSITIVE_INFINITY;\r\n\t\tlet max: number = Number.NEGATIVE_INFINITY;\r\n\r\n\t\t// only if min and max are not set from outside, we go through min and max influencers\r\n\t\tif (!$type.isNumber(this._minDefined) || !$type.isNumber(this._maxDefined)) {\r\n\t\t\tthis.series.each((series) => {\r\n\t\t\t\tif (!series.ignoreMinMax) {\r\n\t\t\t\t\t// check min\r\n\t\t\t\t\tlet seriesMin: number = series.min(this);\r\n\t\t\t\t\tif ($type.isNumber(seriesMin) && (seriesMin < min)) {\r\n\t\t\t\t\t\tmin = seriesMin;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// check max\r\n\t\t\t\t\tlet seriesMax: number = series.max(this);\r\n\r\n\t\t\t\t\tif ($type.isNumber(seriesMax) && (seriesMax > max)) {\r\n\t\t\t\t\t\tmax = seriesMax;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (this.includeRangesInMinMax) {\r\n\t\t\t\tthis.axisRanges.each((range) => {\r\n\t\t\t\t\tif (!range.ignoreMinMax) {\r\n\t\t\t\t\t\tlet minValue = $math.min(range.value, range.endValue);\r\n\t\t\t\t\t\tlet maxValue = $math.max(range.value, range.endValue);\r\n\r\n\r\n\t\t\t\t\t\tif (minValue < min || !$type.isNumber(min)) {\r\n\t\t\t\t\t\t\tmin = minValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (maxValue > max || !$type.isNumber(max)) {\r\n\t\t\t\t\t\t\tmax = maxValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.logarithmic) {\r\n\t\t\tlet treatZeroAs = this.treatZeroAs;\r\n\t\t\tif ($type.isNumber(treatZeroAs)) {\r\n\t\t\t\tif (min <= 0) {\r\n\t\t\t\t\tmin = treatZeroAs;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (min <= 0) {\r\n\t\t\t\tthis.raiseCriticalError(new Error(\"Logarithmic value axis can not have values <= 0.\"), true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (min == 0 && max == 0) {\r\n\t\t\tmax = 0.9;\r\n\t\t\tmin = -0.9;\r\n\t\t}\r\n\r\n\t\t// if defined from outside\r\n\t\tif ($type.isNumber(this._minDefined)) {\r\n\t\t\tmin = this._minDefined;\r\n\t\t}\r\n\r\n\t\tif ($type.isNumber(this._maxDefined)) {\r\n\t\t\tmax = this._maxDefined;\r\n\t\t}\r\n\r\n\t\tif (this._adapterO) {\r\n\t\t\tmin = this._adapterO.apply(\"min\", min);\r\n\t\t}\r\n\r\n\t\tif (this._adapterO) {\r\n\t\t\tmax = this._adapterO.apply(\"max\", max);\r\n\t\t}\r\n\r\n\t\tif (!$type.isNumber(min) || !$type.isNumber(max)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._minReal = min;\r\n\t\tthis._maxReal = max;\r\n\r\n\t\tif (min == Number.POSITIVE_INFINITY) {\r\n\t\t\tmin = undefined;\r\n\t\t}\r\n\t\tif (max == Number.NEGATIVE_INFINITY) {\r\n\t\t\tmax = undefined;\r\n\t\t}\r\n\r\n\t\tlet dif: number = this.adjustDifference(min, max); // previously it was max-min, but not worked well\r\n\r\n\r\n\t\tmin = this.fixMin(min);\r\n\t\tmax = this.fixMax(max);\r\n\r\n\t\t// this happens if starLocation and endLocation are 0.5 and DateAxis has only one date\r\n\t\tif (max - min <= 1 / Math.pow(10, 15)) {\r\n\t\t\tif (max - min != 0) {\r\n\t\t\t\tthis._deltaMinMax = (max - min) / 2;\r\n\t\t\t}\r\n\t\t\telse {\r\n\r\n\t\t\t\t// the number by which we need to raise 10 to get difference\r\n\t\t\t\tlet exponent: number = Math.log(Math.abs(max)) * Math.LOG10E;\r\n\r\n\t\t\t\t// here we find a number which is power of 10 and has the same count of numbers as difference has\r\n\t\t\t\tlet power = Math.pow(10, Math.floor(exponent));\r\n\r\n\t\t\t\t// reduce this number by 10 times\r\n\t\t\t\tpower = power / 10;\r\n\r\n\t\t\t\tthis._deltaMinMax = power;\r\n\t\t\t}\r\n\t\t\tmin -= this._deltaMinMax;\r\n\t\t\tmax += this._deltaMinMax;\r\n\t\t}\r\n\r\n\t\tmin -= (max - min) * this.extraMin;\r\n\t\tmax += (max - min) * this.extraMax;\r\n\r\n\t\tlet strict = this.strictMinMax;\r\n\t\tif ($type.isNumber(this._maxDefined)) {\r\n\t\t\tstrict = true;\r\n\t\t}\r\n\r\n\t\tlet minMaxStep: IMinMaxStep = this.adjustMinMax(min, max, dif, this._gridCount, strict);\r\n\r\n\t\tmin = minMaxStep.min;\r\n\t\tmax = minMaxStep.max;\r\n\r\n\t\tdif = max - min; //new\r\n\r\n\t\t// do it for the second time (importat!)\r\n\t\tminMaxStep = this.adjustMinMax(min, max, max - min, this._gridCount, true);\r\n\r\n\t\tmin = minMaxStep.min;\r\n\t\tmax = minMaxStep.max;\r\n\r\n\t\t// return min max if strict\r\n\t\tif (this.strictMinMax) {\r\n\t\t\tif ($type.isNumber(this._minDefined)) {\r\n\t\t\t\tmin = this._minDefined;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tmin = this._minReal;\r\n\t\t\t}\r\n\r\n\t\t\tif ($type.isNumber(this._maxDefined)) {\r\n\t\t\t\tmax = this._maxDefined;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tmax = this._maxReal;\r\n\t\t\t}\r\n\r\n\t\t\tif (max - min <= 0.00000001) {\r\n\t\t\t\tmin -= this._deltaMinMax;\r\n\t\t\t\tmax += this._deltaMinMax;\r\n\t\t\t}\r\n\r\n\t\t\tmin -= (max - min) * this.extraMin;\r\n\t\t\tmax += (max - min) * this.extraMax;\r\n\t\t}\r\n\r\n\t\tif (this._adapterO) {\r\n\t\t\tmin = this._adapterO.apply(\"min\", min);\r\n\t\t}\r\n\r\n\t\tif (this._adapterO) {\r\n\t\t\tmax = this._adapterO.apply(\"max\", max);\r\n\t\t}\r\n\r\n\t\tthis._step = minMaxStep.step;\r\n\r\n\t\tif (!$type.isNumber(min) && !$type.isNumber(max)) {\r\n\t\t\tthis.start = 0;\r\n\t\t\tthis.end = 1;\r\n\r\n\t\t\tthis.renderer.labels.each((label) => {\r\n\t\t\t\tlabel.dataItem.text = \"\";\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\t// checking isNumber is good when all series are hidden\r\n\t\tif ((this._minAdjusted != min || this._maxAdjusted != max) && $type.isNumber(min) && $type.isNumber(max)) {\r\n\r\n\t\t\tlet animation = this._minMaxAnimation;\r\n\r\n\t\t\tif (this._extremesChanged && $type.isNumber(this._minAdjusted) && $type.isNumber(this._maxAdjusted) && this.inited) {\r\n\t\t\t\tif ((animation && !animation.isFinished()) && this._finalMax == max && this._finalMin == min) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis._finalMin = min;\r\n\t\t\t\t\tthis._finalMax = max;\r\n\r\n\t\t\t\t\tanimation = this.animateMinMax(min, max);\r\n\r\n\t\t\t\t\tif (animation && !animation.isFinished()) {\r\n\t\t\t\t\t\tanimation.events.on(\"animationprogress\", this.validateDataItems, this);\r\n\r\n\t\t\t\t\t\tanimation.events.on(\"animationended\", () => {\r\n\t\t\t\t\t\t\t//this.validateDataItems();\r\n\t\t\t\t\t\t\tthis.series.each((series) => {\r\n\t\t\t\t\t\t\t\tseries.validate();\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\tthis.validateDataItems();\r\n\t\t\t\t\t\t\tthis.handleSelectionExtremesChange();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis._minMaxAnimation = animation;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.series.each((series) => {\r\n\t\t\t\t\t\t\tseries.invalidate();\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.validateDataItems();\r\n\t\t\t\t\tthis.dispatchImmediately(\"extremeschanged\");\r\n\t\t\t\t\tthis.handleSelectionExtremesChange();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif ((animation && !animation.isFinished()) && this._finalMax == max && this._finalMin == min) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis._minAdjusted = min;\r\n\t\t\t\t\tthis._maxAdjusted = max;\r\n\r\n\t\t\t\t\tthis._finalMin = min;\r\n\t\t\t\t\tthis._finalMax = max;\r\n\r\n\t\t\t\t\tthis.invalidateDataItems();\r\n\t\t\t\t\tthis.dispatchImmediately(\"extremeschanged\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._extremesChanged = false;\r\n\t\tthis._difference = this.adjustDifference(min, max);\r\n\t}\r\n\r\n\t/**\r\n\t * Adjusts the minimum value.\r\n\t *\r\n\t * This is a placeholder method for extending classes to override.\r\n\t *\r\n\t * For numeric values this does nothing, however for more complex types, like\r\n\t * dates, it may be necessary to adjust.\r\n\t *\r\n\t * @param value Value\r\n\t * @return Adjusted value\r\n\t */\r\n\tprotected fixMin(value: number): number {\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Adjusts the maximum value.\r\n\t *\r\n\t * This is a placeholder method for extending classes to override.\r\n\t *\r\n\t * For numeric values this does nothing, however for more complex types, like\r\n\t * dates, it may be necessary to adjust.\r\n\t *\r\n\t * @param value Value\r\n\t * @return Adjusted value\r\n\t */\r\n\tprotected fixMax(value: number): number {\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Adjusts actual min and max scale values so that the axis starts and ends\r\n\t * at \"nice\" values, unless `strictMinMax` is set.\r\n\t *\r\n\t * The `difference` can be something else than `max - min`, because of the\r\n\t * axis breaks.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param min [description]\r\n\t * @param max [description]\r\n\t * @param difference [description]\r\n\t * @param gridCount [description]\r\n\t * @param strictMode [description]\r\n\t * @return [description]\r\n\t */\r\n\tpublic adjustMinMax(min: number, max: number, difference: number, gridCount: number, strictMode?: boolean): IMinMaxStep {\r\n\r\n\t\t// will fail if 0\r\n\t\tif (gridCount <= 1) {\r\n\t\t\tgridCount = 1;\r\n\t\t}\r\n\r\n\t\tgridCount = Math.round(gridCount);\r\n\r\n\t\tlet initialMin: number = min;\r\n\t\tlet initialMax: number = max;\r\n\r\n\t\t// in case min and max is the same, use max\r\n\t\tif (difference === 0) {\r\n\t\t\tdifference = Math.abs(max);\r\n\t\t}\r\n\r\n\t\t// the number by which we need to raise 10 to get difference\r\n\t\tlet exponent: number = Math.log(Math.abs(difference)) * Math.LOG10E;\r\n\r\n\t\t// here we find a number which is power of 10 and has the same count of numbers as difference has\r\n\t\tlet power = Math.pow(10, Math.floor(exponent));\r\n\r\n\t\t// reduce this number by 10 times\r\n\t\tpower = power / 10;\r\n\r\n\t\tlet extra: number = power;\r\n\t\tif (strictMode) {\r\n\t\t\textra = 0;\r\n\t\t}\r\n\r\n\t\tif (!this.logarithmic) {\r\n\r\n\t\t\t// round down min\r\n\t\t\tif (strictMode) {\r\n\t\t\t\tmin = Math.floor(min / power) * power;\r\n\t\t\t\t// round up max\r\n\t\t\t\tmax = Math.ceil(max / power) * power;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tmin = Math.ceil(min / power) * power - extra;\r\n\t\t\t\t// round up max\r\n\t\t\t\tmax = Math.floor(max / power) * power + extra;\r\n\t\t\t}\r\n\r\n\t\t\t// don't let min go below 0 if real min is >= 0\r\n\t\t\tif (min < 0 && initialMin >= 0) {\r\n\t\t\t\tmin = 0;\r\n\t\t\t}\r\n\t\t\t// don't let max go above 0 if real max is <= 0\r\n\t\t\tif (max > 0 && initialMax <= 0) {\r\n\t\t\t\tmax = 0;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (min <= 0) {\r\n\t\t\t\t//throw Error(\"Logarithmic value axis can not have values <= 0.\");\r\n\t\t\t\tmin = this.baseValue;\r\n\t\t\t}\r\n\r\n\t\t\t// @todo: think of a better way or to restrict zooming when no series are selected\r\n\t\t\tif (min == Infinity) {\r\n\t\t\t\tmin = 1;\r\n\t\t\t}\r\n\r\n\t\t\tif (max == -Infinity) {\r\n\t\t\t\tmax = 10;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.strictMinMax) {\r\n\t\t\t\tif (this._minDefined > 0) {\r\n\t\t\t\t\tmin = this._minDefined;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tmin = min;\r\n\t\t\t\t}\r\n\t\t\t\tif (this._maxDefined > 0) {\r\n\t\t\t\t\tmax = max;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tmin = Math.pow(10, Math.floor(Math.log(Math.abs(min)) * Math.LOG10E));\r\n\t\t\t\tmax = Math.pow(10, Math.ceil(Math.log(Math.abs(max)) * Math.LOG10E));\r\n\t\t\t}\r\n\t\t}\r\n\t\t// repeat diff, exponent and power again with rounded values\r\n\t\t//difference = this.adjustDifference(min, max);\r\n\t\t/*\r\n\r\n\t\t\t\tif(min > initialMin){\r\n\t\t\t\t\tmin = initialMin;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(max < initialMax){\r\n\t\t\t\t\tmax = initialMax;\r\n\t\t\t\t}\r\n\t\t*/\r\n\r\n\t\texponent = Math.log(Math.abs(difference)) * Math.LOG10E;\r\n\t\tpower = Math.pow(10, Math.floor(exponent));\r\n\t\tpower = power / 10;\r\n\r\n\t\t// approximate difference between two grid lines\r\n\t\tlet step = Math.ceil((difference / gridCount) / power) * power;\r\n\r\n\t\tlet stepPower = Math.pow(10, Math.floor(Math.log(Math.abs(step)) * Math.LOG10E));\r\n\r\n\t\t// TODO: in v3 I had fixStepE here, ommiting it for a while, need to think about other solution\r\n\t\t// the step should divide by 2, 5, and 10.\r\n\t\tlet stepDivisor: number = Math.ceil(step / stepPower); // number 0 - 10\r\n\r\n\r\n\t\tif (stepDivisor > 5) {\r\n\t\t\tstepDivisor = 10;\r\n\t\t}\r\n\t\telse if (stepDivisor <= 5 && stepDivisor > 2) {\r\n\t\t\tstepDivisor = 5;\r\n\t\t}\r\n\r\n\t\t// now get real step\r\n\t\tstep = Math.ceil(step / (stepPower * stepDivisor)) * stepPower * stepDivisor;\r\n\r\n\t\tif (this.maxPrecision < Number.MAX_VALUE && step != $math.ceil(step, this.maxPrecision)) {\r\n\t\t\tstep = $math.ceil(step, this.maxPrecision);\r\n\t\t}\r\n\r\n\t\tlet decCount: number = 0;\r\n\t\t// in case numbers are smaller than 1\r\n\t\tif (stepPower < 1) {\r\n\t\t\t// exponent is less then 1 too. Count decimals of exponent\r\n\t\t\tdecCount = Math.round(Math.abs(Math.log(Math.abs(stepPower)) * Math.LOG10E)) + 1;\r\n\t\t\t// round step\r\n\t\t\tstep = $math.round(step, decCount);\r\n\t\t}\r\n\t\tif (!this.logarithmic) {\r\n\t\t\t// final min and max\r\n\t\t\tlet minCount = Math.floor(min / step);\r\n\r\n\t\t\tmin = $math.round(step * minCount, decCount);\r\n\r\n\t\t\tlet maxCount: number;\r\n\r\n\t\t\tif (!strictMode) {\r\n\t\t\t\tmaxCount = Math.ceil(max / step);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tmaxCount = Math.floor(max / step);\r\n\t\t\t}\r\n\r\n\t\t\tif (maxCount == minCount) {\r\n\t\t\t\tmaxCount++;\r\n\t\t\t}\r\n\r\n\t\t\tmax = $math.round(step * maxCount, decCount);\r\n\r\n\t\t\tif (max < initialMax) {\r\n\t\t\t\tmax = max + step;\r\n\t\t\t}\r\n\r\n\t\t\tif (min > initialMin) {\r\n\t\t\t\tmin = min - step;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn { min: min, max: max, step: step };\r\n\t}\r\n\r\n\t/**\r\n\t * A minimum value for the axis scale.\r\n\t *\r\n\t * This value might be auto-adjusted by the Axis in order to accomodate the\r\n\t * grid nicely, i.e. plot area is divided by grid in nice equal cells.\r\n\t *\r\n\t * The above might be overridden by `strictMinMax` which will force exact\r\n\t * user-defined min and max values to be used for scale.\r\n\t *\r\n\t * @param value Min value\r\n\t */\r\n\tpublic set min(value: number | undefined) {\r\n\t\tif (this._minDefined != value) {\r\n\t\t\tthis._minDefined = value;\r\n\t\t\tthis.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Min value\r\n\t */\r\n\tpublic get min(): number | undefined {\r\n\t\tlet min = this._minAdjusted;\r\n\t\tif (!$type.isNumber(min)) {\r\n\t\t\tmin = this._minDefined;\r\n\t\t}\r\n\t\treturn min;\r\n\t}\r\n\r\n\t/**\r\n\t * Min value as defined by user's code, not auto-calculated.\r\n\t *\r\n\t * @readonly\r\n\t * @return Min value\r\n\t */\r\n\tpublic get minDefined(): number {\r\n\t\treturn this._minDefined;\r\n\t}\r\n\r\n\t/**\r\n\t * Max value as defined by user's code, not auto-calculated.\r\n\t *\r\n\t * @readonly\r\n\t * @return Man value\r\n\t */\r\n\tpublic get maxDefined(): number {\r\n\t\treturn this._maxDefined;\r\n\t}\r\n\r\n\t/**\r\n\t * Allows relatively adjusting minimum value of the axis' scale.\r\n\t *\r\n\t * The value is relative to the actual range of values currently displayed\r\n\t * on the axis.\r\n\t *\r\n\t * E.g.: 0.5 will mean half of the current range. If we have axis displaying\r\n\t * from 100 to 200, we will now have axis displaying from 50 to 200 because\r\n\t * we asked to expand minimum value by 50% (0.5).\r\n\t *\r\n\t * NOTE: this setting is not compatible with `strictMinMax`.\r\n\t *\r\n\t * @param {number}\r\n\t */\r\n\tpublic set extraMin(value: number) {\r\n\t\tif (this.setPropertyValue(\"extraMin\", value)) {\r\n\t\t\tthis.invalidateDataItems();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return {number}\r\n\t */\r\n\tpublic get extraMin(): number {\r\n\t\treturn this.getPropertyValue(\"extraMin\");\r\n\t}\r\n\r\n\t/**\r\n\t * Allows relatively adjusting maximum value of the axis' scale.\r\n\t *\r\n\t * The value is relative to the actual range of values currently displayed\r\n\t * on the axis.\r\n\t *\r\n\t * E.g.: 0.5 will mean half of the current range. If we have axis displaying\r\n\t * from 100 to 200, we will now have axis displaying from 100 to 250 because\r\n\t * we asked to expand maximum value by 50% (0.5).\r\n\t *\r\n\t * NOTE: this setting is not compatible with `strictMinMax`.\r\n\t *\r\n\t * @param {number}\r\n\t */\r\n\tpublic set extraMax(value: number) {\r\n\t\tif (this.setPropertyValue(\"extraMax\", value)) {\r\n\t\t\tthis.invalidateDataItems();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Min multiplier\r\n\t */\r\n\tpublic get extraMax(): number {\r\n\t\treturn this.getPropertyValue(\"extraMax\");\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Current calculated delta in values between two adjacent grid lines (step).\r\n\t *\r\n\t * This is a read-only value and cannot be used to set actual step.\r\n\t *\r\n\t * @readonly\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/#Setting_the_density_of_the_the_grid_labels} For more information about modifying density of labels\r\n\t * @return [description]\r\n\t */\r\n\tpublic get step(): number {\r\n\t\treturn this._step;\r\n\t}\r\n\r\n\t/**\r\n\t * A maximum value for the axis scale.\r\n\t *\r\n\t * This value might be auto-adjusted by the Axis in order to accomodate the\r\n\t * grid nicely, i.e. plot area is divided by grid in nice equal cells.\r\n\t *\r\n\t * The above might be overridden by `strictMinMax` which will force exact\r\n\t * user-defined min and max values to be used for scale.\r\n\t *\r\n\t * @param value Max value\r\n\t */\r\n\tpublic set max(value: number | undefined) {\r\n\t\tif (this._maxDefined != value) {\r\n\t\t\tthis._maxDefined = value;\r\n\t\t\tthis.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Max value\r\n\t */\r\n\tpublic get max(): number | undefined {\r\n\t\tlet max = this._maxAdjusted;\r\n\t\tif (!$type.isNumber(max)) {\r\n\t\t\tmax = this._maxDefined;\r\n\t\t}\r\n\t\treturn max;\r\n\t}\r\n\r\n\t/**\r\n\t * By default the axis will adjust precision of all numbers to match number\r\n\t * of decimals in all its labels, e.g.: `1.0`, `1.5`, `2.0`.\r\n\t *\r\n\t * To disable set `adjustLabelPrecision` to `false`, to use whatever other\r\n\t * precision or number format settings are set.\r\n\t *\r\n\t * IMPORTANT: This setting will be ignored if your number format uses\r\n\t * modifiers, e.g. `\"#a\"`.\r\n\t *\r\n\t * @default true\r\n\t * @since 4.9.14\r\n\t * @param value Adjust precision\r\n\t */\r\n\tpublic set adjustLabelPrecision(value: boolean) {\r\n\t\tif (this.setPropertyValue(\"adjustLabelPrecision\", value)) {\r\n\t\t\tthis.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Adjust precision\r\n\t */\r\n\tpublic get adjustLabelPrecision(): boolean {\r\n\t\treturn this.getPropertyValue(\"adjustLabelPrecision\");\r\n\t}\r\n\r\n\t/**\r\n\t * Used for the Series to register itself as the user of this Axis.\r\n\t *\r\n\t * This will also decorate both the Series and Axis with event handlers, used\r\n\t * to redraw on Axis position/zoom change.\r\n\t *\r\n\t * A disposer for those events is returned, so that they can be disposed\r\n\t * together with Series.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param series Series\r\n\t * @return Disposer for events\r\n\t */\r\n\tpublic registerSeries(series: XYSeries): IDisposer {\r\n\t\treturn new MultiDisposer([\r\n\t\t\tsuper.registerSeries(series),\r\n\r\n\t\t\tseries.events.on(\"extremeschanged\", this.handleExtremesChange, this, false),\r\n\t\t\tseries.events.on(\"selectionextremeschanged\", this.handleSelectionExtremesChange, this, false),\r\n\t\t\tthis.events.on(\"extremeschanged\", series.invalidate, series, false)\r\n\t\t]);\r\n\t}\r\n\r\n\t/**\r\n\t * Perform tasks after Axis zoom.\r\n\t */\r\n\tprotected handleSelectionExtremesChange(): void {\r\n\r\n\t\tlet selectionMin: number;\r\n\t\tlet selectionMax: number;\r\n\r\n\t\tlet allHidden: boolean = true;\r\n\r\n\t\t$iter.each(this.series.iterator(), (series) => {\r\n\t\t\tif (!series.ignoreMinMax && !series.isHidden && !series.outOfRange) {\r\n\r\n\t\t\t\tif (series.visible && !series.isHiding) {\r\n\t\t\t\t\tallHidden = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet seriesSelectionMin: number = series.selectionMin(this);\r\n\t\t\t\tlet seriesSelectionMax: number = series.selectionMax(this);\r\n\r\n\t\t\t\tif ($type.isNumber(seriesSelectionMin)) {\r\n\t\t\t\t\tif (!$type.isNumber(selectionMin) || (seriesSelectionMin < selectionMin)) {\r\n\t\t\t\t\t\tselectionMin = seriesSelectionMin;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// check max\r\n\t\t\t\tif ($type.isNumber(seriesSelectionMax)) {\r\n\t\t\t\t\tif (!$type.isNumber(selectionMax) || (seriesSelectionMax > selectionMax)) {\r\n\t\t\t\t\t\tselectionMax = seriesSelectionMax;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (this.includeRangesInMinMax) {\r\n\t\t\tthis.axisRanges.each((range) => {\r\n\t\t\t\tif (!range.ignoreMinMax) {\r\n\t\t\t\t\tlet minValue = $math.min(range.value, range.endValue);\r\n\t\t\t\t\tlet maxValue = $math.max(range.value, range.endValue);\r\n\r\n\t\t\t\t\tif (minValue < selectionMin) {\r\n\t\t\t\t\t\tselectionMin = minValue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (maxValue > selectionMax) {\r\n\t\t\t\t\t\tselectionMax = maxValue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\t// this is not good, as if date axis is initially zoomed, selection of y axis is reset to 0, 1 at the end of this method\r\n\t\t//$iter.each(this.series.iterator(), (series) => {\r\n\t\t//\tif (!series.appeared) {\r\n\t\t//\t\tallHidden = true;\r\n\t\t//\t}\r\n\t\t//})\r\n\r\n\t\tif ($type.isNumber(this._minDefined)) {\r\n\t\t\tif (this.strictMinMax) {\r\n\t\t\t\tselectionMin = this._minDefined;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tselectionMin = this.min;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (this.strictMinMax) {\r\n\t\t\tselectionMin = this._minReal;\r\n\t\t}\r\n\r\n\t\tif ($type.isNumber(this._maxDefined)) {\r\n\t\t\tif (this.strictMinMax) {\r\n\t\t\t\tselectionMax = this._maxDefined;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tselectionMax = this.max;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (this.strictMinMax) {\r\n\t\t\tselectionMax = this._maxReal;\r\n\t\t}\r\n\r\n\t\tif (selectionMin == selectionMax) {\r\n\r\n\t\t\tselectionMin -= this._deltaMinMax;\r\n\t\t\tselectionMax += this._deltaMinMax;\r\n\r\n\t\t\tlet minMaxStep2 = this.adjustMinMax(selectionMin, selectionMax, 0, this._gridCount, this.strictMinMax);\r\n\t\t\tselectionMin = minMaxStep2.min;\r\n\t\t\tselectionMax = minMaxStep2.max;\r\n\t\t}\r\n\r\n\t\tlet dif: number = this.adjustDifference(selectionMin, selectionMax);\r\n\t\tlet minMaxStep: IMinMaxStep = this.adjustMinMax(selectionMin, selectionMax, dif, this._gridCount);\r\n\r\n\t\tselectionMin = minMaxStep.min;\r\n\t\tselectionMax = minMaxStep.max;\r\n\r\n\t\tselectionMin -= (selectionMax - selectionMin) * this.extraMin;\r\n\t\tselectionMax += (selectionMax - selectionMin) * this.extraMax;\r\n\r\n\t\tselectionMin = $math.fitToRange(selectionMin, this.min, this.max);\r\n\t\tselectionMax = $math.fitToRange(selectionMax, this.min, this.max);\r\n\r\n\t\t// do it for the second time !important\r\n\t\tdif = this.adjustDifference(selectionMin, selectionMax);\r\n\t\tminMaxStep = this.adjustMinMax(selectionMin, selectionMax, dif, this._gridCount, true);\r\n\r\n\t\tselectionMin = minMaxStep.min;\r\n\t\tselectionMax = minMaxStep.max;\r\n\r\n\t\tif (this.strictMinMax) {\r\n\t\t\tselectionMin = $math.max(selectionMin, this._minDefined);\r\n\t\t\tselectionMax = $math.min(selectionMax, this._maxDefined);\r\n\t\t}\r\n\t\tlet step = minMaxStep.step;\r\n\t\tif (this.syncWithAxis) {\r\n\t\t\tminMaxStep = this.syncAxes(selectionMin, selectionMax, step)\r\n\t\t\tselectionMin = minMaxStep.min;\r\n\t\t\tselectionMax = minMaxStep.max;\r\n\t\t\tthis.invalidate();\r\n\t\t}\r\n\t\tstep = minMaxStep.step;\r\n\r\n\t\t// needed because of grouping\r\n\t\tthis._difference = this.adjustDifference(this.min, this.max);\r\n\r\n\t\tlet start: number = this.valueToPosition(selectionMin);\r\n\t\tlet end: number = this.valueToPosition(selectionMax);\r\n\r\n\t\t// in case all series are hidden or hiding, full zoomout\r\n\t\tif (allHidden && !this.syncWithAxis) {\r\n\t\t\tstart = 0;\r\n\t\t\tend = 1;\r\n\t\t}\r\n\r\n\t\tlet declination = 0;\r\n\t\tif (this.syncWithAxis) {\r\n\t\t\tdeclination = 5;\r\n\t\t\tthis.setCache(selectionMin + \"-\" + selectionMax, step);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this._step != step || this._minZoomed != selectionMin || this._maxZoomed != selectionMax) {\r\n\t\t\t\tthis._dsc = true;\r\n\t\t\t}\r\n\t\t\tthis._step = step;\r\n\t\t\tthis._minZoomed = selectionMin;\r\n\t\t\tthis._maxZoomed = selectionMax;\r\n\t\t}\r\n\r\n\r\n\t\tif (!this.keepSelection) {\r\n\t\t\tthis.zoom({ start: start, end: end }, false, false, declination);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether to blindly use exact `min` and `max` values set by user\r\n\t * when generating Axis scale.\r\n\t *\r\n\t * If not set, the Axis might slightly adjust those values to accomodate a\r\n\t * better looking grid.\r\n\t *\r\n\t * NOTE: if `min` and `max` are not set, setting `strictMinMax` to `true`\r\n\t * will result in fixing the scale of the axis to actual lowest and highest\r\n\t * values in the series within currently selected scope.\r\n\t *\r\n\t * @default false\r\n\t * @param value Use exact values?\r\n\t */\r\n\tpublic set strictMinMax(value: boolean) {\r\n\t\tif (this.setPropertyValue(\"strictMinMax\", value)) {\r\n\t\t\tthis.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Use exact values?\r\n\t */\r\n\tpublic get strictMinMax(): boolean {\r\n\t\treturn this.getPropertyValue(\"strictMinMax\");\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if this axis should use a logarithmic scale.\r\n\t *\r\n\t * Please note that logarithmic axis can **only** accommodate values bigger\r\n\t * than zero.\r\n\t *\r\n\t * Having zero or negative values will result in error and failure of the\r\n\t * whole chart.\r\n\t *\r\n\t * @param value Logarithmic scale?\r\n\t */\r\n\tpublic set logarithmic(value: boolean) {\r\n\t\tif (this.setPropertyValue(\"logarithmic\", value)) {\r\n\t\t\tthis.invalidate();\r\n\t\t\tthis.series.each((series) => {\r\n\t\t\t\tseries.invalidateDataItems();\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Logarithmic scale?\r\n\t */\r\n\tpublic get logarithmic(): boolean {\r\n\t\treturn this.getPropertyValue(\"logarithmic\");\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if a current selection (zoom) should be kept across data updates.\r\n\t *\r\n\t * If your axis is zoomed while chart's data is updated, the axis will try\r\n\t * to retain the same start and end values.\r\n\t *\r\n\t * You can also use this to initially pre-zoom axis:\r\n\t *\r\n\t * ```TypeScript\r\n\t * axis.keepSelection = true;\r\n\t * axis.start = 0.5;\r\n\t * axis.end = 0.7;\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * axis.keepSelection = true;\r\n\t * axis.start = 0.5;\r\n\t * axis.end = 0.7;\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * \"xAxes\": [{\r\n\t * // ...\r\n\t * \"keepSelection\": true,\r\n\t * \"start\": 0.5,\r\n\t * \"end\": 0.7\r\n\t * }]\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * The above will start the chart zoomed from the middle of the actual scope\r\n\t * to 70%.\r\n\t *\r\n\t * @since 4.1.1\r\n\t * @default false\r\n\t * @param value Preseve zoom after data update?\r\n\t */\r\n\tpublic set keepSelection(value: boolean) {\r\n\t\tthis.setPropertyValue(\"keepSelection\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Preseve zoom after data update?\r\n\t */\r\n\tpublic get keepSelection(): boolean {\r\n\t\treturn this.getPropertyValue(\"keepSelection\");\r\n\t}\r\n\r\n\t/**\r\n\t * If set to `true`, values of axis ranges will be included when calculating\r\n\t * range of values / scale of the [[ValueAxis]].\r\n\t *\r\n\t * @default false\r\n\t * @since 4.4.9\r\n\t * @param value Include ranges?\r\n\t */\r\n\tpublic set includeRangesInMinMax(value: boolean) {\r\n\t\tthis.setPropertyValue(\"includeRangesInMinMax\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Include ranges?\r\n\t */\r\n\tpublic get includeRangesInMinMax(): boolean {\r\n\t\treturn this.getPropertyValue(\"includeRangesInMinMax\");\r\n\t}\r\n\r\n\t/**\r\n\t * Maximum number of decimals to allow when placing grid lines and labels\r\n\t * on axis.\r\n\t *\r\n\t * Set it to `0` (zero) to force integer-only axis labels.\r\n\t *\r\n\t * @param {number}\r\n\t */\r\n\tpublic set maxPrecision(value: number) {\r\n\t\tif (this.setPropertyValue(\"maxPrecision\", value)) {\r\n\t\t\tthis.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return max precision\r\n\t */\r\n\tpublic get maxPrecision(): number {\r\n\t\treturn this.getPropertyValue(\"maxPrecision\");\r\n\t}\r\n\r\n\t/**\r\n\t * This setting allows using bigger precision for numbers displayed in axis\r\n\t * tooltip.\r\n\t *\r\n\t * Please note that this setting indicates additional decimal places to\r\n\t * automatically-calculated axis number precision.\r\n\t *\r\n\t * So if your axis displays numbers like 0.1, 0.2, etc. (one decimal place),\r\n\t * and you set `extraTooltipPrecision = 1`, tooltips will display numbers\r\n\t * like 0.12, 0.25, etc. (two decimal places).\r\n\t *\r\n\t * @default 0\r\n\t * @since 4.8.3\r\n\t * @param value Extra decimals\r\n\t */\r\n\tpublic set extraTooltipPrecision(value: number) {\r\n\t\tif (this.setPropertyValue(\"extraTooltipPrecision\", value)) {\r\n\t\t\tthis.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Extra decimals\r\n\t */\r\n\tpublic get extraTooltipPrecision(): number {\r\n\t\treturn this.getPropertyValue(\"extraTooltipPrecision\");\r\n\t}\r\n\r\n\t/**\r\n\t * Invalidates axis data items when series extremes change\r\n\t */\r\n\tprotected handleExtremesChange() {\r\n\t\tthis._extremesChanged = true;\r\n\t\tthis.getMinMax();\r\n\r\n\t\tif (this.ghostLabel) {\r\n\t\t\tlet mw = 0;\r\n\r\n\t\t\tthis.dataItems.each((dataItem) => {\r\n\t\t\t\tif (dataItem.label && dataItem.label.pixelWidth > mw) {\r\n\t\t\t\t\tthis.ghostLabel.text = dataItem.label.currentText;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns relative position on axis for series' data item's value.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param dataItem Data item\r\n\t * @param key Data field to get value from\r\n\t * @param location Location (0-1)\r\n\t * @param stackKey ?\r\n\t * @return X coordinate (px)\r\n\t */\r\n\tpublic getX(dataItem: XYSeriesDataItem, key: string, location?: number, stackKey?: string, range?: IRange): number {\r\n\t\treturn this.renderer.positionToPoint(this.getPositionX(dataItem, key, location, stackKey, range)).x;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the X coordinate for series' data item's value.\r\n\t *\r\n\t * @since 4.5.14\r\n\t * @param dataItem Data item\r\n\t * @param key Data field to get value from\r\n\t * @param location Location (0-1)\r\n\t * @param stackKey ?\r\n\t * @return Relative position\r\n\t */\r\n\tpublic getPositionX(dataItem: XYSeriesDataItem, key: string, location?: number, stackKey?: string, range?: IRange): number {\r\n\t\tlet value: number = dataItem.getWorkingValue(key);\r\n\t\tif (!$type.hasValue(stackKey)) {\r\n\t\t\tstackKey = \"valueX\";\r\n\t\t}\r\n\t\tlet stack: number = dataItem.getValue(stackKey, \"stack\");\r\n\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = this.baseValue;\r\n\r\n\t\t\tif (this.logarithmic) {\r\n\t\t\t\tif (stack > 0) {\r\n\t\t\t\t\tvalue = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet position = this.valueToPosition(value + stack);\r\n\r\n\t\tif (range) {\r\n\t\t\tposition = $math.fitToRange(position, range.start, range.end);\r\n\t\t}\r\n\r\n\t\treturn position;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the Y coordinate for series' data item's value.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param dataItem Data item\r\n\t * @param key Data field to get value from\r\n\t * @param location Location (0-1)\r\n\t * @param stackKey Stack ID\r\n\t * @return Y coordinate (px)\r\n\t */\r\n\tpublic getY(dataItem: XYSeriesDataItem, key: string, location?: number, stackKey?: string, range?: IRange): number {\r\n\t\treturn this.renderer.positionToPoint(this.getPositionY(dataItem, key, location, stackKey, range)).y;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns relative position on axis for series' data item's value.\r\n\t *\r\n\t * @since 4.5.14\r\n\t * @param dataItem Data item\r\n\t * @param key Data field to get value from\r\n\t * @param location Location (0-1)\r\n\t * @param stackKey Stack ID\r\n\t * @return Relative position\r\n\t */\r\n\tpublic getPositionY(dataItem: XYSeriesDataItem, key: string, location?: number, stackKey?: string, range?: IRange): number {\r\n\t\tlet value: number = dataItem.getWorkingValue(key);\r\n\r\n\t\tif (!$type.hasValue(stackKey)) {\r\n\t\t\tstackKey = \"valueY\";\r\n\t\t}\r\n\r\n\t\tlet stack: number = dataItem.getValue(stackKey, \"stack\");\r\n\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = this.baseValue;\r\n\r\n\t\t\tif (this.logarithmic) {\r\n\t\t\t\tif (stack > 0) {\r\n\t\t\t\t\tvalue = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tlet position = this.valueToPosition(value + stack);\r\n\t\tif (range) {\r\n\t\t\tposition = $math.fitToRange(position, range.start, range.end);\r\n\t\t}\r\n\r\n\t\treturn position;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an angle for series data item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param dataItem Data item\r\n\t * @param key Data field to get value from\r\n\t * @param location Location (0-1)\r\n\t * @param stackKey Stack ID\r\n\t * @param range Range to fit in\r\n\t * @return Angle\r\n\t */\r\n\tpublic getAngle(dataItem: XYSeriesDataItem, key: string, location?: number, stackKey?: string, range?: IRange): number {\r\n\t\tlet value: number = dataItem.getWorkingValue(key);\r\n\t\tlet stack: number = dataItem.getValue(stackKey, \"stack\");\r\n\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = this.baseValue;\r\n\t\t}\r\n\r\n\t\tlet position = this.valueToPosition(value + stack);\r\n\t\tif (range) {\r\n\t\t\tposition = $math.fitToRange(position, range.start, range.end);\r\n\t\t}\r\n\r\n\t\treturn this.positionToAngle(position);\r\n\t}\r\n\r\n\t/**\r\n\t * [getAnyRangePath description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param start [description]\r\n\t * @param end [description]\r\n\t * @param location [description]\r\n\t * @return [description]\r\n\t */\r\n\tpublic getAnyRangePath(start: number, end: number, location?: number): string {\r\n\t\tlet startPosition: number = this.valueToPosition(start);\r\n\t\tlet endPosition: number = this.valueToPosition(end);\r\n\r\n\t\treturn this.getPositionRangePath(startPosition, endPosition); // Base class (Axis) gets range shape from AxisRenderer\r\n\t}\r\n\r\n\t/**\r\n\t * Returns text to show in a axis tooltip, based on specific position within\r\n\t * axis.\r\n\t *\r\n\t * The label will be formatted as per [[NumberFormatter]] set for the whole\r\n\t * chart, or explicitly for this Axis.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param position Position (px)\r\n\t * @return Label (numeric value)\r\n\t */\r\n\tpublic getTooltipText(position: number): string {\r\n\t\tlet value: number = $math.round(this.positionToValue(position), this._stepDecimalPlaces + this.extraTooltipPrecision);\r\n\t\tlet valueStr = this.tooltip.numberFormatter.format(value);\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn valueStr;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"getTooltipText\", valueStr);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Zooms axis to specific values.\r\n\t *\r\n\t * @param startValue Start value\r\n\t * @param endValue End value\r\n\t * @param skipRangeEvent Do not invoke events\r\n\t * @param instantly Do not play zoom animations\r\n\t */\r\n\tpublic zoomToValues(startValue: number, endValue: number, skipRangeEvent?: boolean, instantly?: boolean): void {\r\n\t\tlet start: number = (startValue - this.min) / (this.max - this.min);\r\n\t\tlet end: number = (endValue - this.min) / (this.max - this.min);\r\n\r\n\t\tthis.zoom({ start: start, end: end }, skipRangeEvent, instantly);\r\n\t}\r\n\r\n\t/**\r\n\t * A smallest value in axis scale within current zoom.\r\n\t *\r\n\t * @return Min zoom value\r\n\t */\r\n\tpublic get minZoomed(): number {\r\n\t\tif (!this.syncWithAxis) {\r\n\t\t\treturn $math.max(this.min, this._minZoomed);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._minZoomed\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A biggest value in axis scale within current zoom.\r\n\t * @return [description]\r\n\t */\r\n\tpublic get maxZoomed(): number {\r\n\t\tif (!this.syncWithAxis) {\r\n\t\t\treturn $math.min(this.max, this._maxZoomed);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._maxZoomed;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates positioning of Axis breaks after something changes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic fixAxisBreaks(): void {\r\n\r\n\t\tsuper.fixAxisBreaks();\r\n\t\tlet axisBreaks = this._axisBreaks;\r\n\t\tif (axisBreaks && axisBreaks.length > 0) {\r\n\t\t\t// process breaks\r\n\t\t\taxisBreaks.each((axisBreak) => {\r\n\t\t\t\tlet startValue: number = axisBreak.adjustedStartValue;\r\n\t\t\t\tlet endValue: number = axisBreak.adjustedEndValue;\r\n\r\n\t\t\t\t// break difference\r\n\t\t\t\tlet axisBreakDif: number = endValue - startValue;\r\n\t\t\t\tlet axisBreakGridCount: number = Math.ceil(axisBreakDif * axisBreak.breakSize) * this._gridCount / (this.max - this.min);\r\n\r\n\t\t\t\t// calculate min, max and step for axis break\r\n\t\t\t\tlet breakMinMaxStep = this.adjustMinMax(startValue, endValue, axisBreakDif, axisBreakGridCount, true);\r\n\r\n\t\t\t\taxisBreak.adjustedStep = breakMinMaxStep.step;\r\n\t\t\t\taxisBreak.adjustedMin = breakMinMaxStep.min;\r\n\t\t\t\taxisBreak.adjustedMax = breakMinMaxStep.max;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._difference = this.adjustDifference(this.min, this.max);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns value based on position.\r\n\t *\r\n\t * Please note that `position` represents position within axis which may be\r\n\t * zoomed and not correspond to Cursor's `position`.\r\n\t *\r\n\t * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n\t * @param position Relative position on axis (0-1)\r\n\t * @return Position label\r\n\t */\r\n\tpublic getPositionLabel(position: number): string {\r\n\t\tlet value: number = this.positionToValue(position);\r\n\t\treturn this.numberFormatter.format(value);\r\n\t}\r\n\r\n\t/**\r\n\t * Shows Axis tooltip at specific value\r\n\t *\r\n\t * @param value Value\r\n\t */\r\n\tpublic showTooltipAt(value: number) {\r\n\t\tthis.showTooltipAtPosition(this.valueToPosition(value));\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all properties and related data from a different instance of Axis.\r\n\t *\r\n\t * @param source Source Axis\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\tsuper.copyFrom(source);\r\n\t\tthis.min = source.min;\r\n\t\tthis.max = source.max;\r\n\t\tthis.calculateTotals = source.calculateTotals;\r\n\t\tthis._baseValue = source.baseValue;\r\n\t}\r\n\r\n\t/**\r\n\t * Enables syncing of grid with another axis.\r\n\t *\r\n\t * To enable, set to a reference of the other `ValueAxis`. This axis will try\r\n\t * to maintain its scale in such way that its grid matches target axis grid.\r\n\t *\r\n\t * IMPORTANT #1: At this stage it's an experimental feature. Use it at your\r\n\t * own risk, as it may not work in 100% of the scenarios.\r\n\t *\r\n\t * IMPORTANT #2: `syncWithAxis` is not compatible with `strictMinMax` and\r\n\t * `sequencedInterpolation` settings.\r\n\t * \r\n\t * IMPORTANT #3: `syncWithAxis` is not compatible with scrollbars. Make sure\r\n\t * you do not add a scrollbar in the same direction as synced axes. For\r\n\t * example, if you have vertical synced axes, do not add `scrollbarY` on\r\n\t * your chart. It will create anomalies when used.\r\n\t *\r\n\t * IMPORTANT #4: `syncWithAxis` is not compatible with `XYCursor` if it has\r\n\t * its `behavior` set to either `zoomY` or `zoomXY`.\r\n\t *\r\n\t * @since 4.8.1\r\n\t * @param axis Target axis\r\n\t */\r\n\tpublic set syncWithAxis(axis: ValueAxis) {\r\n\t\tif (this.setPropertyValue(\"syncWithAxis\", axis, true)) {\r\n\t\t\tif (axis) {\r\n\t\t\t\tthis._disposers.push(axis.events.on(\"extremeschanged\", this.handleSelectionExtremesChange, this, false));\r\n\t\t\t\tthis._disposers.push(axis.events.on(\"selectionextremeschanged\", this.handleSelectionExtremesChange, this, false));\r\n\t\t\t\tthis._disposers.push(axis.events.on(\"startendchanged\", this.handleSelectionExtremesChange, this, false));\r\n\t\t\t\tthis.events.on(\"shown\", this.handleSelectionExtremesChange, this, false);\r\n\t\t\t\tthis.events.on(\"maxsizechanged\", () => {\r\n\t\t\t\t\tthis.clearCache();\r\n\t\t\t\t\tthis._disposers.push(registry.events.once(\"exitframe\", () => {\r\n\t\t\t\t\t\tthis.handleSelectionExtremesChange();\r\n\t\t\t\t\t}))\r\n\t\t\t\t}, this, false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Target axis\r\n\t */\r\n\tpublic get syncWithAxis(): ValueAxis {\r\n\t\treturn this.getPropertyValue(\"syncWithAxis\");\r\n\t}\r\n\r\n\t/**\r\n\t * If set, zero values will be treated as this value.\r\n\t *\r\n\t * It is useful if you need to use data with zero-values on a logarithmic\r\n\t * axis scale.\r\n\t *\r\n\t * @since 4.9.34\r\n\t * @param value Zero replacement value\r\n\t */\r\n\tpublic set treatZeroAs(value: number) {\r\n\t\tthis.setPropertyValue(\"treatZeroAs\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Zero replacement value\r\n\t */\r\n\tpublic get treatZeroAs(): number {\r\n\t\treturn this.getPropertyValue(\"treatZeroAs\");\r\n\t}\r\n\r\n\t/**\r\n\t * Syncs with a target axis.\r\n\t *\r\n\t * @param min Min\r\n\t * @param max Max\r\n\t * @param step Step\r\n\t */\r\n\tprotected syncAxes(min: number, max: number, step: number) {\r\n\t\tlet axis = this.syncWithAxis;\r\n\t\tif (axis) {\r\n\r\n\t\t\tif (!$type.isNumber(min)) {\r\n\t\t\t\tmin = this.min;\r\n\t\t\t}\r\n\t\t\tif (!$type.isNumber(max)) {\r\n\t\t\t\tmax = this.max;\r\n\t\t\t}\r\n\r\n\t\t\tif (!$type.isNumber(step)) {\r\n\t\t\t\tstep = this._step;\r\n\t\t\t}\r\n\r\n\t\t\tlet count: number = Math.round((axis.maxZoomed - axis.minZoomed) / axis.step);\r\n\t\t\tlet currentCount = Math.round((max - min) / step);\r\n\r\n\t\t\tif ($type.isNumber(count) && $type.isNumber(currentCount)) {\r\n\t\t\t\tlet synced = false;\r\n\t\t\t\tlet c = 0\r\n\t\t\t\tlet diff = (max - min) * 0.01;\r\n\t\t\t\tlet omin = min;\r\n\t\t\t\tlet omax = max;\r\n\t\t\t\tlet ostep = step;\r\n\r\n\t\t\t\twhile (synced != true) {\r\n\t\t\t\t\tsynced = this.checkSync(omin, omax, ostep, count);\r\n\t\t\t\t\tc++;\r\n\t\t\t\t\tif (c > 1000) {\r\n\t\t\t\t\t\tsynced = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!synced) {\r\n\t\t\t\t\t\t//omin = min - diff * c;\r\n\r\n\t\t\t\t\t\tif (c / 3 == Math.round(c / 3)) {\r\n\t\t\t\t\t\t\tomin = min - diff * c;\r\n\t\t\t\t\t\t\tif (min >= 0 && omin < 0) {\r\n\t\t\t\t\t\t\t\tomin = 0;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tomax = max + diff * c;\r\n\t\t\t\t\t\t\tif (omax <= 0 && omax > 0) {\r\n\t\t\t\t\t\t\t\tomax = 0;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tlet minMaxStep = this.adjustMinMax(omin, omax, omax - omin, this._gridCount, true);\r\n\t\t\t\t\t\tomin = minMaxStep.min;\r\n\t\t\t\t\t\tomax = minMaxStep.max;\r\n\t\t\t\t\t\tostep = minMaxStep.step;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tmin = omin;\r\n\t\t\t\t\t\tmax = omax;\r\n\t\t\t\t\t\tstep = ostep;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\treturn { min: min, max: max, step: step };\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if axis needs to be resunced with some other axis.\r\n\t */\r\n\tprotected checkSync(min: number, max: number, step: number, count: number): boolean {\r\n\t\tlet currentCount = (max - min) / step;\r\n\t\tfor (let i = 1; i < count; i++) {\r\n\t\t\tif ($math.round(currentCount / i, 1) == count || currentCount * i == count) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Processes JSON-based config before it is applied to the object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param config Config\r\n\t */\r\n\tpublic processConfig(config?: { [index: string]: any }): void {\r\n\r\n\t\tif (config) {\r\n\r\n\t\t\t// Set up axes\r\n\t\t\tif ($type.hasValue(config.syncWithAxis) && $type.isString(config.syncWithAxis)) {\r\n\t\t\t\tif (this.map.hasKey(config.syncWithAxis)) {\r\n\t\t\t\t\tconfig.syncWithAxis = this.map.getKey(config.syncWithAxis);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.processingErrors.push(\"[ValueAxis] No axis with id \\\"\" + config.syncWithAxis + \"\\\" found for `syncWithAxis`\");\r\n\t\t\t\t\tdelete config.xAxis;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tsuper.processConfig(config);\r\n\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ValueAxis\"] = ValueAxis;\r\nregistry.registeredClasses[\"ValueAxisDataItem\"] = ValueAxisDataItem;\r\n"]}
\No newline at end of file