1 line
40 KiB
JSON
1 line
40 KiB
JSON
{"ast":null,"code":"import \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.replace.js\";\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport OrdinalScale from '../scale/Ordinal.js';\nimport IntervalScale from '../scale/Interval.js';\nimport Scale from '../scale/Scale.js';\nimport { prepareLayoutBarSeries, makeColumnLayout, retrieveColumnLayout } from '../layout/barGrid.js';\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nimport TimeScale from '../scale/Time.js';\nimport LogScale from '../scale/Log.js';\nimport { getStackedDimension } from '../data/helper/dataStackHelper.js';\nimport { ensureScaleRawExtentInfo } from './scaleRawExtentInfo.js';\n/**\n * Get axis scale extent before niced.\n * Item of returned array can only be number (including Infinity and NaN).\n *\n * Caution:\n * Precondition of calling this method:\n * The scale extent has been initialized using series data extent via\n * `scale.setExtent` or `scale.unionExtentFromData`;\n */\n\nexport function getScaleExtent(scale, model) {\n var scaleType = scale.type;\n var rawExtentResult = ensureScaleRawExtentInfo(scale, model, scale.getExtent()).calculate();\n scale.setBlank(rawExtentResult.isBlank);\n var min = rawExtentResult.min;\n var max = rawExtentResult.max; // If bars are placed on a base axis of type time or interval account for axis boundary overflow and current axis\n // is base axis\n // FIXME\n // (1) Consider support value axis, where below zero and axis `onZero` should be handled properly.\n // (2) Refactor the logic with `barGrid`. Is it not need to `makeBarWidthAndOffsetInfo` twice with different extent?\n // Should not depend on series type `bar`?\n // (3) Fix that might overlap when using dataZoom.\n // (4) Consider other chart types using `barGrid`?\n // See #6728, #4862, `test/bar-overflow-time-plot.html`\n\n var ecModel = model.ecModel;\n\n if (ecModel && scaleType === 'time'\n /* || scaleType === 'interval' */\n ) {\n var barSeriesModels = prepareLayoutBarSeries('bar', ecModel);\n var isBaseAxisAndHasBarSeries_1 = false;\n zrUtil.each(barSeriesModels, function (seriesModel) {\n isBaseAxisAndHasBarSeries_1 = isBaseAxisAndHasBarSeries_1 || seriesModel.getBaseAxis() === model.axis;\n });\n\n if (isBaseAxisAndHasBarSeries_1) {\n // Calculate placement of bars on axis. TODO should be decoupled\n // with barLayout\n var barWidthAndOffset = makeColumnLayout(barSeriesModels); // Adjust axis min and max to account for overflow\n\n var adjustedScale = adjustScaleForOverflow(min, max, model, barWidthAndOffset);\n min = adjustedScale.min;\n max = adjustedScale.max;\n }\n }\n\n return {\n extent: [min, max],\n // \"fix\" means \"fixed\", the value should not be\n // changed in the subsequent steps.\n fixMin: rawExtentResult.minFixed,\n fixMax: rawExtentResult.maxFixed\n };\n}\n\nfunction adjustScaleForOverflow(min, max, model, // Only support cartesian coord yet.\nbarWidthAndOffset) {\n // Get Axis Length\n var axisExtent = model.axis.getExtent();\n var axisLength = axisExtent[1] - axisExtent[0]; // Get bars on current base axis and calculate min and max overflow\n\n var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis);\n\n if (barsOnCurrentAxis === undefined) {\n return {\n min: min,\n max: max\n };\n }\n\n var minOverflow = Infinity;\n zrUtil.each(barsOnCurrentAxis, function (item) {\n minOverflow = Math.min(item.offset, minOverflow);\n });\n var maxOverflow = -Infinity;\n zrUtil.each(barsOnCurrentAxis, function (item) {\n maxOverflow = Math.max(item.offset + item.width, maxOverflow);\n });\n minOverflow = Math.abs(minOverflow);\n maxOverflow = Math.abs(maxOverflow);\n var totalOverFlow = minOverflow + maxOverflow; // Calculate required buffer based on old range and overflow\n\n var oldRange = max - min;\n var oldRangePercentOfNew = 1 - (minOverflow + maxOverflow) / axisLength;\n var overflowBuffer = oldRange / oldRangePercentOfNew - oldRange;\n max += overflowBuffer * (maxOverflow / totalOverFlow);\n min -= overflowBuffer * (minOverflow / totalOverFlow);\n return {\n min: min,\n max: max\n };\n} // Precondition of calling this method:\n// The scale extent has been initialized using series data extent via\n// `scale.setExtent` or `scale.unionExtentFromData`;\n\n\nexport function niceScaleExtent(scale, inModel) {\n var model = inModel;\n var extentInfo = getScaleExtent(scale, model);\n var extent = extentInfo.extent;\n var splitNumber = model.get('splitNumber');\n\n if (scale instanceof LogScale) {\n scale.base = model.get('logBase');\n }\n\n var scaleType = scale.type;\n var interval = model.get('interval');\n var isIntervalOrTime = scaleType === 'interval' || scaleType === 'time';\n scale.setExtent(extent[0], extent[1]);\n scale.calcNiceExtent({\n splitNumber: splitNumber,\n fixMin: extentInfo.fixMin,\n fixMax: extentInfo.fixMax,\n minInterval: isIntervalOrTime ? model.get('minInterval') : null,\n maxInterval: isIntervalOrTime ? model.get('maxInterval') : null\n }); // If some one specified the min, max. And the default calculated interval\n // is not good enough. He can specify the interval. It is often appeared\n // in angle axis with angle 0 - 360. Interval calculated in interval scale is hard\n // to be 60.\n // FIXME\n\n if (interval != null) {\n scale.setInterval && scale.setInterval(interval);\n }\n}\n/**\n * @param axisType Default retrieve from model.type\n */\n\nexport function createScaleByModel(model, axisType) {\n axisType = axisType || model.get('type');\n\n if (axisType) {\n switch (axisType) {\n // Buildin scale\n case 'category':\n return new OrdinalScale({\n ordinalMeta: model.getOrdinalMeta ? model.getOrdinalMeta() : model.getCategories(),\n extent: [Infinity, -Infinity]\n });\n\n case 'time':\n return new TimeScale({\n locale: model.ecModel.getLocaleModel(),\n useUTC: model.ecModel.get('useUTC')\n });\n\n default:\n // case 'value'/'interval', 'log', or others.\n return new (Scale.getClass(axisType) || IntervalScale)();\n }\n }\n}\n/**\n * Check if the axis cross 0\n */\n\nexport function ifAxisCrossZero(axis) {\n var dataExtent = axis.scale.getExtent();\n var min = dataExtent[0];\n var max = dataExtent[1];\n return !(min > 0 && max > 0 || min < 0 && max < 0);\n}\n/**\n * @param axis\n * @return Label formatter function.\n * param: {number} tickValue,\n * param: {number} idx, the index in all ticks.\n * If category axis, this param is not required.\n * return: {string} label string.\n */\n\nexport function makeLabelFormatter(axis) {\n var labelFormatter = axis.getLabelModel().get('formatter');\n var categoryTickStart = axis.type === 'category' ? axis.scale.getExtent()[0] : null;\n\n if (axis.scale.type === 'time') {\n return function (tpl) {\n return function (tick, idx) {\n return axis.scale.getFormattedLabel(tick, idx, tpl);\n };\n }(labelFormatter);\n } else if (zrUtil.isString(labelFormatter)) {\n return function (tpl) {\n return function (tick) {\n // For category axis, get raw value; for numeric axis,\n // get formatted label like '1,333,444'.\n var label = axis.scale.getLabel(tick);\n var text = tpl.replace('{value}', label != null ? label : '');\n return text;\n };\n }(labelFormatter);\n } else if (zrUtil.isFunction(labelFormatter)) {\n return function (cb) {\n return function (tick, idx) {\n // The original intention of `idx` is \"the index of the tick in all ticks\".\n // But the previous implementation of category axis do not consider the\n // `axisLabel.interval`, which cause that, for example, the `interval` is\n // `1`, then the ticks \"name5\", \"name7\", \"name9\" are displayed, where the\n // corresponding `idx` are `0`, `2`, `4`, but not `0`, `1`, `2`. So we keep\n // the definition here for back compatibility.\n if (categoryTickStart != null) {\n idx = tick.value - categoryTickStart;\n }\n\n return cb(getAxisRawValue(axis, tick), idx, tick.level != null ? {\n level: tick.level\n } : null);\n };\n }(labelFormatter);\n } else {\n return function (tick) {\n return axis.scale.getLabel(tick);\n };\n }\n}\nexport function getAxisRawValue(axis, tick) {\n // In category axis with data zoom, tick is not the original\n // index of axis.data. So tick should not be exposed to user\n // in category axis.\n return axis.type === 'category' ? axis.scale.getLabel(tick) : tick.value;\n}\n/**\n * @param axis\n * @return Be null/undefined if no labels.\n */\n\nexport function estimateLabelUnionRect(axis) {\n var axisModel = axis.model;\n var scale = axis.scale;\n\n if (!axisModel.get(['axisLabel', 'show']) || scale.isBlank()) {\n return;\n }\n\n var realNumberScaleTicks;\n var tickCount;\n var categoryScaleExtent = scale.getExtent(); // Optimize for large category data, avoid call `getTicks()`.\n\n if (scale instanceof OrdinalScale) {\n tickCount = scale.count();\n } else {\n realNumberScaleTicks = scale.getTicks();\n tickCount = realNumberScaleTicks.length;\n }\n\n var axisLabelModel = axis.getLabelModel();\n var labelFormatter = makeLabelFormatter(axis);\n var rect;\n var step = 1; // Simple optimization for large amount of labels\n\n if (tickCount > 40) {\n step = Math.ceil(tickCount / 40);\n }\n\n for (var i = 0; i < tickCount; i += step) {\n var tick = realNumberScaleTicks ? realNumberScaleTicks[i] : {\n value: categoryScaleExtent[0] + i\n };\n var label = labelFormatter(tick, i);\n var unrotatedSingleRect = axisLabelModel.getTextRect(label);\n var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get('rotate') || 0);\n rect ? rect.union(singleRect) : rect = singleRect;\n }\n\n return rect;\n}\n\nfunction rotateTextRect(textRect, rotate) {\n var rotateRadians = rotate * Math.PI / 180;\n var beforeWidth = textRect.width;\n var beforeHeight = textRect.height;\n var afterWidth = beforeWidth * Math.abs(Math.cos(rotateRadians)) + Math.abs(beforeHeight * Math.sin(rotateRadians));\n var afterHeight = beforeWidth * Math.abs(Math.sin(rotateRadians)) + Math.abs(beforeHeight * Math.cos(rotateRadians));\n var rotatedRect = new BoundingRect(textRect.x, textRect.y, afterWidth, afterHeight);\n return rotatedRect;\n}\n/**\n * @param model axisLabelModel or axisTickModel\n * @return {number|String} Can be null|'auto'|number|function\n */\n\n\nexport function getOptionCategoryInterval(model) {\n var interval = model.get('interval');\n return interval == null ? 'auto' : interval;\n}\n/**\n * Set `categoryInterval` as 0 implicitly indicates that\n * show all labels regardless of overlap.\n * @param {Object} axis axisModel.axis\n */\n\nexport function shouldShowAllLabels(axis) {\n return axis.type === 'category' && getOptionCategoryInterval(axis.getLabelModel()) === 0;\n}\nexport function getDataDimensionsOnAxis(data, axisDim) {\n // Remove duplicated dat dimensions caused by `getStackedDimension`.\n var dataDimMap = {}; // Currently `mapDimensionsAll` will contain stack result dimension ('__\\0ecstackresult').\n // PENDING: is it reasonable? Do we need to remove the original dim from \"coord dim\" since\n // there has been stacked result dim?\n\n zrUtil.each(data.mapDimensionsAll(axisDim), function (dataDim) {\n // For example, the extent of the original dimension\n // is [0.1, 0.5], the extent of the `stackResultDimension`\n // is [7, 9], the final extent should NOT include [0.1, 0.5],\n // because there is no graphic corresponding to [0.1, 0.5].\n // See the case in `test/area-stack.html` `main1`, where area line\n // stack needs `yAxis` not start from 0.\n dataDimMap[getStackedDimension(data, dataDim)] = true;\n });\n return zrUtil.keys(dataDimMap);\n}\nexport function unionAxisExtentFromData(dataExtent, data, axisDim) {\n if (data) {\n zrUtil.each(getDataDimensionsOnAxis(data, axisDim), function (dim) {\n var seriesExtent = data.getApproximateExtent(dim);\n seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0]);\n seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]);\n });\n }\n}","map":{"version":3,"sources":["D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src啊/ElectronicMallVue/node_modules/echarts/lib/coord/axisHelper.js"],"names":["zrUtil","OrdinalScale","IntervalScale","Scale","prepareLayoutBarSeries","makeColumnLayout","retrieveColumnLayout","BoundingRect","TimeScale","LogScale","getStackedDimension","ensureScaleRawExtentInfo","getScaleExtent","scale","model","scaleType","type","rawExtentResult","getExtent","calculate","setBlank","isBlank","min","max","ecModel","barSeriesModels","isBaseAxisAndHasBarSeries_1","each","seriesModel","getBaseAxis","axis","barWidthAndOffset","adjustedScale","adjustScaleForOverflow","extent","fixMin","minFixed","fixMax","maxFixed","axisExtent","axisLength","barsOnCurrentAxis","undefined","minOverflow","Infinity","item","Math","offset","maxOverflow","width","abs","totalOverFlow","oldRange","oldRangePercentOfNew","overflowBuffer","niceScaleExtent","inModel","extentInfo","splitNumber","get","base","interval","isIntervalOrTime","setExtent","calcNiceExtent","minInterval","maxInterval","setInterval","createScaleByModel","axisType","ordinalMeta","getOrdinalMeta","getCategories","locale","getLocaleModel","useUTC","getClass","ifAxisCrossZero","dataExtent","makeLabelFormatter","labelFormatter","getLabelModel","categoryTickStart","tpl","tick","idx","getFormattedLabel","isString","label","getLabel","text","replace","isFunction","cb","value","getAxisRawValue","level","estimateLabelUnionRect","axisModel","realNumberScaleTicks","tickCount","categoryScaleExtent","count","getTicks","length","axisLabelModel","rect","step","ceil","i","unrotatedSingleRect","getTextRect","singleRect","rotateTextRect","union","textRect","rotate","rotateRadians","PI","beforeWidth","beforeHeight","height","afterWidth","cos","sin","afterHeight","rotatedRect","x","y","getOptionCategoryInterval","shouldShowAllLabels","getDataDimensionsOnAxis","data","axisDim","dataDimMap","mapDimensionsAll","dataDim","keys","unionAxisExtentFromData","dim","seriesExtent","getApproximateExtent"],"mappings":"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","sourcesContent":["\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport OrdinalScale from '../scale/Ordinal.js';\nimport IntervalScale from '../scale/Interval.js';\nimport Scale from '../scale/Scale.js';\nimport { prepareLayoutBarSeries, makeColumnLayout, retrieveColumnLayout } from '../layout/barGrid.js';\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nimport TimeScale from '../scale/Time.js';\nimport LogScale from '../scale/Log.js';\nimport { getStackedDimension } from '../data/helper/dataStackHelper.js';\nimport { ensureScaleRawExtentInfo } from './scaleRawExtentInfo.js';\n/**\n * Get axis scale extent before niced.\n * Item of returned array can only be number (including Infinity and NaN).\n *\n * Caution:\n * Precondition of calling this method:\n * The scale extent has been initialized using series data extent via\n * `scale.setExtent` or `scale.unionExtentFromData`;\n */\n\nexport function getScaleExtent(scale, model) {\n var scaleType = scale.type;\n var rawExtentResult = ensureScaleRawExtentInfo(scale, model, scale.getExtent()).calculate();\n scale.setBlank(rawExtentResult.isBlank);\n var min = rawExtentResult.min;\n var max = rawExtentResult.max; // If bars are placed on a base axis of type time or interval account for axis boundary overflow and current axis\n // is base axis\n // FIXME\n // (1) Consider support value axis, where below zero and axis `onZero` should be handled properly.\n // (2) Refactor the logic with `barGrid`. Is it not need to `makeBarWidthAndOffsetInfo` twice with different extent?\n // Should not depend on series type `bar`?\n // (3) Fix that might overlap when using dataZoom.\n // (4) Consider other chart types using `barGrid`?\n // See #6728, #4862, `test/bar-overflow-time-plot.html`\n\n var ecModel = model.ecModel;\n\n if (ecModel && scaleType === 'time'\n /* || scaleType === 'interval' */\n ) {\n var barSeriesModels = prepareLayoutBarSeries('bar', ecModel);\n var isBaseAxisAndHasBarSeries_1 = false;\n zrUtil.each(barSeriesModels, function (seriesModel) {\n isBaseAxisAndHasBarSeries_1 = isBaseAxisAndHasBarSeries_1 || seriesModel.getBaseAxis() === model.axis;\n });\n\n if (isBaseAxisAndHasBarSeries_1) {\n // Calculate placement of bars on axis. TODO should be decoupled\n // with barLayout\n var barWidthAndOffset = makeColumnLayout(barSeriesModels); // Adjust axis min and max to account for overflow\n\n var adjustedScale = adjustScaleForOverflow(min, max, model, barWidthAndOffset);\n min = adjustedScale.min;\n max = adjustedScale.max;\n }\n }\n\n return {\n extent: [min, max],\n // \"fix\" means \"fixed\", the value should not be\n // changed in the subsequent steps.\n fixMin: rawExtentResult.minFixed,\n fixMax: rawExtentResult.maxFixed\n };\n}\n\nfunction adjustScaleForOverflow(min, max, model, // Only support cartesian coord yet.\nbarWidthAndOffset) {\n // Get Axis Length\n var axisExtent = model.axis.getExtent();\n var axisLength = axisExtent[1] - axisExtent[0]; // Get bars on current base axis and calculate min and max overflow\n\n var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis);\n\n if (barsOnCurrentAxis === undefined) {\n return {\n min: min,\n max: max\n };\n }\n\n var minOverflow = Infinity;\n zrUtil.each(barsOnCurrentAxis, function (item) {\n minOverflow = Math.min(item.offset, minOverflow);\n });\n var maxOverflow = -Infinity;\n zrUtil.each(barsOnCurrentAxis, function (item) {\n maxOverflow = Math.max(item.offset + item.width, maxOverflow);\n });\n minOverflow = Math.abs(minOverflow);\n maxOverflow = Math.abs(maxOverflow);\n var totalOverFlow = minOverflow + maxOverflow; // Calculate required buffer based on old range and overflow\n\n var oldRange = max - min;\n var oldRangePercentOfNew = 1 - (minOverflow + maxOverflow) / axisLength;\n var overflowBuffer = oldRange / oldRangePercentOfNew - oldRange;\n max += overflowBuffer * (maxOverflow / totalOverFlow);\n min -= overflowBuffer * (minOverflow / totalOverFlow);\n return {\n min: min,\n max: max\n };\n} // Precondition of calling this method:\n// The scale extent has been initialized using series data extent via\n// `scale.setExtent` or `scale.unionExtentFromData`;\n\n\nexport function niceScaleExtent(scale, inModel) {\n var model = inModel;\n var extentInfo = getScaleExtent(scale, model);\n var extent = extentInfo.extent;\n var splitNumber = model.get('splitNumber');\n\n if (scale instanceof LogScale) {\n scale.base = model.get('logBase');\n }\n\n var scaleType = scale.type;\n var interval = model.get('interval');\n var isIntervalOrTime = scaleType === 'interval' || scaleType === 'time';\n scale.setExtent(extent[0], extent[1]);\n scale.calcNiceExtent({\n splitNumber: splitNumber,\n fixMin: extentInfo.fixMin,\n fixMax: extentInfo.fixMax,\n minInterval: isIntervalOrTime ? model.get('minInterval') : null,\n maxInterval: isIntervalOrTime ? model.get('maxInterval') : null\n }); // If some one specified the min, max. And the default calculated interval\n // is not good enough. He can specify the interval. It is often appeared\n // in angle axis with angle 0 - 360. Interval calculated in interval scale is hard\n // to be 60.\n // FIXME\n\n if (interval != null) {\n scale.setInterval && scale.setInterval(interval);\n }\n}\n/**\n * @param axisType Default retrieve from model.type\n */\n\nexport function createScaleByModel(model, axisType) {\n axisType = axisType || model.get('type');\n\n if (axisType) {\n switch (axisType) {\n // Buildin scale\n case 'category':\n return new OrdinalScale({\n ordinalMeta: model.getOrdinalMeta ? model.getOrdinalMeta() : model.getCategories(),\n extent: [Infinity, -Infinity]\n });\n\n case 'time':\n return new TimeScale({\n locale: model.ecModel.getLocaleModel(),\n useUTC: model.ecModel.get('useUTC')\n });\n\n default:\n // case 'value'/'interval', 'log', or others.\n return new (Scale.getClass(axisType) || IntervalScale)();\n }\n }\n}\n/**\n * Check if the axis cross 0\n */\n\nexport function ifAxisCrossZero(axis) {\n var dataExtent = axis.scale.getExtent();\n var min = dataExtent[0];\n var max = dataExtent[1];\n return !(min > 0 && max > 0 || min < 0 && max < 0);\n}\n/**\n * @param axis\n * @return Label formatter function.\n * param: {number} tickValue,\n * param: {number} idx, the index in all ticks.\n * If category axis, this param is not required.\n * return: {string} label string.\n */\n\nexport function makeLabelFormatter(axis) {\n var labelFormatter = axis.getLabelModel().get('formatter');\n var categoryTickStart = axis.type === 'category' ? axis.scale.getExtent()[0] : null;\n\n if (axis.scale.type === 'time') {\n return function (tpl) {\n return function (tick, idx) {\n return axis.scale.getFormattedLabel(tick, idx, tpl);\n };\n }(labelFormatter);\n } else if (zrUtil.isString(labelFormatter)) {\n return function (tpl) {\n return function (tick) {\n // For category axis, get raw value; for numeric axis,\n // get formatted label like '1,333,444'.\n var label = axis.scale.getLabel(tick);\n var text = tpl.replace('{value}', label != null ? label : '');\n return text;\n };\n }(labelFormatter);\n } else if (zrUtil.isFunction(labelFormatter)) {\n return function (cb) {\n return function (tick, idx) {\n // The original intention of `idx` is \"the index of the tick in all ticks\".\n // But the previous implementation of category axis do not consider the\n // `axisLabel.interval`, which cause that, for example, the `interval` is\n // `1`, then the ticks \"name5\", \"name7\", \"name9\" are displayed, where the\n // corresponding `idx` are `0`, `2`, `4`, but not `0`, `1`, `2`. So we keep\n // the definition here for back compatibility.\n if (categoryTickStart != null) {\n idx = tick.value - categoryTickStart;\n }\n\n return cb(getAxisRawValue(axis, tick), idx, tick.level != null ? {\n level: tick.level\n } : null);\n };\n }(labelFormatter);\n } else {\n return function (tick) {\n return axis.scale.getLabel(tick);\n };\n }\n}\nexport function getAxisRawValue(axis, tick) {\n // In category axis with data zoom, tick is not the original\n // index of axis.data. So tick should not be exposed to user\n // in category axis.\n return axis.type === 'category' ? axis.scale.getLabel(tick) : tick.value;\n}\n/**\n * @param axis\n * @return Be null/undefined if no labels.\n */\n\nexport function estimateLabelUnionRect(axis) {\n var axisModel = axis.model;\n var scale = axis.scale;\n\n if (!axisModel.get(['axisLabel', 'show']) || scale.isBlank()) {\n return;\n }\n\n var realNumberScaleTicks;\n var tickCount;\n var categoryScaleExtent = scale.getExtent(); // Optimize for large category data, avoid call `getTicks()`.\n\n if (scale instanceof OrdinalScale) {\n tickCount = scale.count();\n } else {\n realNumberScaleTicks = scale.getTicks();\n tickCount = realNumberScaleTicks.length;\n }\n\n var axisLabelModel = axis.getLabelModel();\n var labelFormatter = makeLabelFormatter(axis);\n var rect;\n var step = 1; // Simple optimization for large amount of labels\n\n if (tickCount > 40) {\n step = Math.ceil(tickCount / 40);\n }\n\n for (var i = 0; i < tickCount; i += step) {\n var tick = realNumberScaleTicks ? realNumberScaleTicks[i] : {\n value: categoryScaleExtent[0] + i\n };\n var label = labelFormatter(tick, i);\n var unrotatedSingleRect = axisLabelModel.getTextRect(label);\n var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get('rotate') || 0);\n rect ? rect.union(singleRect) : rect = singleRect;\n }\n\n return rect;\n}\n\nfunction rotateTextRect(textRect, rotate) {\n var rotateRadians = rotate * Math.PI / 180;\n var beforeWidth = textRect.width;\n var beforeHeight = textRect.height;\n var afterWidth = beforeWidth * Math.abs(Math.cos(rotateRadians)) + Math.abs(beforeHeight * Math.sin(rotateRadians));\n var afterHeight = beforeWidth * Math.abs(Math.sin(rotateRadians)) + Math.abs(beforeHeight * Math.cos(rotateRadians));\n var rotatedRect = new BoundingRect(textRect.x, textRect.y, afterWidth, afterHeight);\n return rotatedRect;\n}\n/**\n * @param model axisLabelModel or axisTickModel\n * @return {number|String} Can be null|'auto'|number|function\n */\n\n\nexport function getOptionCategoryInterval(model) {\n var interval = model.get('interval');\n return interval == null ? 'auto' : interval;\n}\n/**\n * Set `categoryInterval` as 0 implicitly indicates that\n * show all labels regardless of overlap.\n * @param {Object} axis axisModel.axis\n */\n\nexport function shouldShowAllLabels(axis) {\n return axis.type === 'category' && getOptionCategoryInterval(axis.getLabelModel()) === 0;\n}\nexport function getDataDimensionsOnAxis(data, axisDim) {\n // Remove duplicated dat dimensions caused by `getStackedDimension`.\n var dataDimMap = {}; // Currently `mapDimensionsAll` will contain stack result dimension ('__\\0ecstackresult').\n // PENDING: is it reasonable? Do we need to remove the original dim from \"coord dim\" since\n // there has been stacked result dim?\n\n zrUtil.each(data.mapDimensionsAll(axisDim), function (dataDim) {\n // For example, the extent of the original dimension\n // is [0.1, 0.5], the extent of the `stackResultDimension`\n // is [7, 9], the final extent should NOT include [0.1, 0.5],\n // because there is no graphic corresponding to [0.1, 0.5].\n // See the case in `test/area-stack.html` `main1`, where area line\n // stack needs `yAxis` not start from 0.\n dataDimMap[getStackedDimension(data, dataDim)] = true;\n });\n return zrUtil.keys(dataDimMap);\n}\nexport function unionAxisExtentFromData(dataExtent, data, axisDim) {\n if (data) {\n zrUtil.each(getDataDimensionsOnAxis(data, axisDim), function (dim) {\n var seriesExtent = data.getApproximateExtent(dim);\n seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0]);\n seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]);\n });\n }\n}"]},"metadata":{},"sourceType":"module"} |