1 line
68 KiB
JSON
1 line
68 KiB
JSON
{"ast":null,"code":"import \"core-js/modules/es.function.name.js\";\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/**\r\n * AUTO-GENERATED FILE. DO NOT MODIFY.\r\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { retrieve, defaults, extend, each, isObject, map, isString, isNumber, isFunction } from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { createTextStyle } from '../../label/labelStyle.js';\nimport Model from '../../model/Model.js';\nimport { isRadianAroundZero, remRadian } from '../../util/number.js';\nimport { createSymbol, normalizeSymbolOffset } from '../../util/symbol.js';\nimport * as matrixUtil from 'zrender/lib/core/matrix.js';\nimport { applyTransform as v2ApplyTransform } from 'zrender/lib/core/vector.js';\nimport { shouldShowAllLabels } from '../../coord/axisHelper.js';\nimport { prepareLayoutList, hideOverlap } from '../../label/labelLayoutHelper.js';\nvar PI = Math.PI;\n/**\r\n * A final axis is translated and rotated from a \"standard axis\".\r\n * So opt.position and opt.rotation is required.\r\n *\r\n * A standard axis is and axis from [0, 0] to [0, axisExtent[1]],\r\n * for example: (0, 0) ------------> (0, 50)\r\n *\r\n * nameDirection or tickDirection or labelDirection is 1 means tick\r\n * or label is below the standard axis, whereas is -1 means above\r\n * the standard axis. labelOffset means offset between label and axis,\r\n * which is useful when 'onZero', where axisLabel is in the grid and\r\n * label in outside grid.\r\n *\r\n * Tips: like always,\r\n * positive rotation represents anticlockwise, and negative rotation\r\n * represents clockwise.\r\n * The direction of position coordinate is the same as the direction\r\n * of screen coordinate.\r\n *\r\n * Do not need to consider axis 'inverse', which is auto processed by\r\n * axis extent.\r\n */\n\nvar AxisBuilder =\n/** @class */\nfunction () {\n function AxisBuilder(axisModel, opt) {\n this.group = new graphic.Group();\n this.opt = opt;\n this.axisModel = axisModel; // Default value\n\n defaults(opt, {\n labelOffset: 0,\n nameDirection: 1,\n tickDirection: 1,\n labelDirection: 1,\n silent: true,\n handleAutoShown: function handleAutoShown() {\n return true;\n }\n }); // FIXME Not use a seperate text group?\n\n var transformGroup = new graphic.Group({\n x: opt.position[0],\n y: opt.position[1],\n rotation: opt.rotation\n }); // this.group.add(transformGroup);\n // this._transformGroup = transformGroup;\n\n transformGroup.updateTransform();\n this._transformGroup = transformGroup;\n }\n\n AxisBuilder.prototype.hasBuilder = function (name) {\n return !!builders[name];\n };\n\n AxisBuilder.prototype.add = function (name) {\n builders[name](this.opt, this.axisModel, this.group, this._transformGroup);\n };\n\n AxisBuilder.prototype.getGroup = function () {\n return this.group;\n };\n\n AxisBuilder.innerTextLayout = function (axisRotation, textRotation, direction) {\n var rotationDiff = remRadian(textRotation - axisRotation);\n var textAlign;\n var textVerticalAlign;\n\n if (isRadianAroundZero(rotationDiff)) {\n // Label is parallel with axis line.\n textVerticalAlign = direction > 0 ? 'top' : 'bottom';\n textAlign = 'center';\n } else if (isRadianAroundZero(rotationDiff - PI)) {\n // Label is inverse parallel with axis line.\n textVerticalAlign = direction > 0 ? 'bottom' : 'top';\n textAlign = 'center';\n } else {\n textVerticalAlign = 'middle';\n\n if (rotationDiff > 0 && rotationDiff < PI) {\n textAlign = direction > 0 ? 'right' : 'left';\n } else {\n textAlign = direction > 0 ? 'left' : 'right';\n }\n }\n\n return {\n rotation: rotationDiff,\n textAlign: textAlign,\n textVerticalAlign: textVerticalAlign\n };\n };\n\n AxisBuilder.makeAxisEventDataBase = function (axisModel) {\n var eventData = {\n componentType: axisModel.mainType,\n componentIndex: axisModel.componentIndex\n };\n eventData[axisModel.mainType + 'Index'] = axisModel.componentIndex;\n return eventData;\n };\n\n AxisBuilder.isLabelSilent = function (axisModel) {\n var tooltipOpt = axisModel.get('tooltip');\n return axisModel.get('silent') // Consider mouse cursor, add these restrictions.\n || !(axisModel.get('triggerEvent') || tooltipOpt && tooltipOpt.show);\n };\n\n return AxisBuilder;\n}();\n\n;\nvar builders = {\n axisLine: function axisLine(opt, axisModel, group, transformGroup) {\n var shown = axisModel.get(['axisLine', 'show']);\n\n if (shown === 'auto' && opt.handleAutoShown) {\n shown = opt.handleAutoShown('axisLine');\n }\n\n if (!shown) {\n return;\n }\n\n var extent = axisModel.axis.getExtent();\n var matrix = transformGroup.transform;\n var pt1 = [extent[0], 0];\n var pt2 = [extent[1], 0];\n\n if (matrix) {\n v2ApplyTransform(pt1, pt1, matrix);\n v2ApplyTransform(pt2, pt2, matrix);\n }\n\n var lineStyle = extend({\n lineCap: 'round'\n }, axisModel.getModel(['axisLine', 'lineStyle']).getLineStyle());\n var line = new graphic.Line({\n // Id for animation\n subPixelOptimize: true,\n shape: {\n x1: pt1[0],\n y1: pt1[1],\n x2: pt2[0],\n y2: pt2[1]\n },\n style: lineStyle,\n strokeContainThreshold: opt.strokeContainThreshold || 5,\n silent: true,\n z2: 1\n });\n line.anid = 'line';\n group.add(line);\n var arrows = axisModel.get(['axisLine', 'symbol']);\n\n if (arrows != null) {\n var arrowSize = axisModel.get(['axisLine', 'symbolSize']);\n\n if (isString(arrows)) {\n // Use the same arrow for start and end point\n arrows = [arrows, arrows];\n }\n\n if (isString(arrowSize) || isNumber(arrowSize)) {\n // Use the same size for width and height\n arrowSize = [arrowSize, arrowSize];\n }\n\n var arrowOffset = normalizeSymbolOffset(axisModel.get(['axisLine', 'symbolOffset']) || 0, arrowSize);\n var symbolWidth_1 = arrowSize[0];\n var symbolHeight_1 = arrowSize[1];\n each([{\n rotate: opt.rotation + Math.PI / 2,\n offset: arrowOffset[0],\n r: 0\n }, {\n rotate: opt.rotation - Math.PI / 2,\n offset: arrowOffset[1],\n r: Math.sqrt((pt1[0] - pt2[0]) * (pt1[0] - pt2[0]) + (pt1[1] - pt2[1]) * (pt1[1] - pt2[1]))\n }], function (point, index) {\n if (arrows[index] !== 'none' && arrows[index] != null) {\n var symbol = createSymbol(arrows[index], -symbolWidth_1 / 2, -symbolHeight_1 / 2, symbolWidth_1, symbolHeight_1, lineStyle.stroke, true); // Calculate arrow position with offset\n\n var r = point.r + point.offset;\n symbol.attr({\n rotation: point.rotate,\n x: pt1[0] + r * Math.cos(opt.rotation),\n y: pt1[1] - r * Math.sin(opt.rotation),\n silent: true,\n z2: 11\n });\n group.add(symbol);\n }\n });\n }\n },\n axisTickLabel: function axisTickLabel(opt, axisModel, group, transformGroup) {\n var ticksEls = buildAxisMajorTicks(group, transformGroup, axisModel, opt);\n var labelEls = buildAxisLabel(group, transformGroup, axisModel, opt);\n fixMinMaxLabelShow(axisModel, labelEls, ticksEls);\n buildAxisMinorTicks(group, transformGroup, axisModel, opt.tickDirection); // This bit fixes the label overlap issue for the time chart.\n // See https://github.com/apache/echarts/issues/14266 for more.\n\n if (axisModel.get(['axisLabel', 'hideOverlap'])) {\n var labelList = prepareLayoutList(map(labelEls, function (label) {\n return {\n label: label,\n priority: label.z2,\n defaultAttr: {\n ignore: label.ignore\n }\n };\n }));\n hideOverlap(labelList);\n }\n },\n axisName: function axisName(opt, axisModel, group, transformGroup) {\n var name = retrieve(opt.axisName, axisModel.get('name'));\n\n if (!name) {\n return;\n }\n\n var nameLocation = axisModel.get('nameLocation');\n var nameDirection = opt.nameDirection;\n var textStyleModel = axisModel.getModel('nameTextStyle');\n var gap = axisModel.get('nameGap') || 0;\n var extent = axisModel.axis.getExtent();\n var gapSignal = extent[0] > extent[1] ? -1 : 1;\n var pos = [nameLocation === 'start' ? extent[0] - gapSignal * gap : nameLocation === 'end' ? extent[1] + gapSignal * gap : (extent[0] + extent[1]) / 2, // Reuse labelOffset.\n isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0];\n var labelLayout;\n var nameRotation = axisModel.get('nameRotate');\n\n if (nameRotation != null) {\n nameRotation = nameRotation * PI / 180; // To radian.\n }\n\n var axisNameAvailableWidth;\n\n if (isNameLocationCenter(nameLocation)) {\n labelLayout = AxisBuilder.innerTextLayout(opt.rotation, nameRotation != null ? nameRotation : opt.rotation, // Adapt to axis.\n nameDirection);\n } else {\n labelLayout = endTextLayout(opt.rotation, nameLocation, nameRotation || 0, extent);\n axisNameAvailableWidth = opt.axisNameAvailableWidth;\n\n if (axisNameAvailableWidth != null) {\n axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout.rotation));\n !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null);\n }\n }\n\n var textFont = textStyleModel.getFont();\n var truncateOpt = axisModel.get('nameTruncate', true) || {};\n var ellipsis = truncateOpt.ellipsis;\n var maxWidth = retrieve(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth);\n var textEl = new graphic.Text({\n x: pos[0],\n y: pos[1],\n rotation: labelLayout.rotation,\n silent: AxisBuilder.isLabelSilent(axisModel),\n style: createTextStyle(textStyleModel, {\n text: name,\n font: textFont,\n overflow: 'truncate',\n width: maxWidth,\n ellipsis: ellipsis,\n fill: textStyleModel.getTextColor() || axisModel.get(['axisLine', 'lineStyle', 'color']),\n align: textStyleModel.get('align') || labelLayout.textAlign,\n verticalAlign: textStyleModel.get('verticalAlign') || labelLayout.textVerticalAlign\n }),\n z2: 1\n });\n graphic.setTooltipConfig({\n el: textEl,\n componentModel: axisModel,\n itemName: name\n });\n textEl.__fullText = name; // Id for animation\n\n textEl.anid = 'name';\n\n if (axisModel.get('triggerEvent')) {\n var eventData = AxisBuilder.makeAxisEventDataBase(axisModel);\n eventData.targetType = 'axisName';\n eventData.name = name;\n getECData(textEl).eventData = eventData;\n } // FIXME\n\n\n transformGroup.add(textEl);\n textEl.updateTransform();\n group.add(textEl);\n textEl.decomposeTransform();\n }\n};\n\nfunction endTextLayout(rotation, textPosition, textRotate, extent) {\n var rotationDiff = remRadian(textRotate - rotation);\n var textAlign;\n var textVerticalAlign;\n var inverse = extent[0] > extent[1];\n var onLeft = textPosition === 'start' && !inverse || textPosition !== 'start' && inverse;\n\n if (isRadianAroundZero(rotationDiff - PI / 2)) {\n textVerticalAlign = onLeft ? 'bottom' : 'top';\n textAlign = 'center';\n } else if (isRadianAroundZero(rotationDiff - PI * 1.5)) {\n textVerticalAlign = onLeft ? 'top' : 'bottom';\n textAlign = 'center';\n } else {\n textVerticalAlign = 'middle';\n\n if (rotationDiff < PI * 1.5 && rotationDiff > PI / 2) {\n textAlign = onLeft ? 'left' : 'right';\n } else {\n textAlign = onLeft ? 'right' : 'left';\n }\n }\n\n return {\n rotation: rotationDiff,\n textAlign: textAlign,\n textVerticalAlign: textVerticalAlign\n };\n}\n\nfunction fixMinMaxLabelShow(axisModel, labelEls, tickEls) {\n if (shouldShowAllLabels(axisModel.axis)) {\n return;\n } // If min or max are user set, we need to check\n // If the tick on min(max) are overlap on their neighbour tick\n // If they are overlapped, we need to hide the min(max) tick label\n\n\n var showMinLabel = axisModel.get(['axisLabel', 'showMinLabel']);\n var showMaxLabel = axisModel.get(['axisLabel', 'showMaxLabel']); // FIXME\n // Have not consider onBand yet, where tick els is more than label els.\n\n labelEls = labelEls || [];\n tickEls = tickEls || [];\n var firstLabel = labelEls[0];\n var nextLabel = labelEls[1];\n var lastLabel = labelEls[labelEls.length - 1];\n var prevLabel = labelEls[labelEls.length - 2];\n var firstTick = tickEls[0];\n var nextTick = tickEls[1];\n var lastTick = tickEls[tickEls.length - 1];\n var prevTick = tickEls[tickEls.length - 2];\n\n if (showMinLabel === false) {\n ignoreEl(firstLabel);\n ignoreEl(firstTick);\n } else if (isTwoLabelOverlapped(firstLabel, nextLabel)) {\n if (showMinLabel) {\n ignoreEl(nextLabel);\n ignoreEl(nextTick);\n } else {\n ignoreEl(firstLabel);\n ignoreEl(firstTick);\n }\n }\n\n if (showMaxLabel === false) {\n ignoreEl(lastLabel);\n ignoreEl(lastTick);\n } else if (isTwoLabelOverlapped(prevLabel, lastLabel)) {\n if (showMaxLabel) {\n ignoreEl(prevLabel);\n ignoreEl(prevTick);\n } else {\n ignoreEl(lastLabel);\n ignoreEl(lastTick);\n }\n }\n}\n\nfunction ignoreEl(el) {\n el && (el.ignore = true);\n}\n\nfunction isTwoLabelOverlapped(current, next) {\n // current and next has the same rotation.\n var firstRect = current && current.getBoundingRect().clone();\n var nextRect = next && next.getBoundingRect().clone();\n\n if (!firstRect || !nextRect) {\n return;\n } // When checking intersect of two rotated labels, we use mRotationBack\n // to avoid that boundingRect is enlarge when using `boundingRect.applyTransform`.\n\n\n var mRotationBack = matrixUtil.identity([]);\n matrixUtil.rotate(mRotationBack, mRotationBack, -current.rotation);\n firstRect.applyTransform(matrixUtil.mul([], mRotationBack, current.getLocalTransform()));\n nextRect.applyTransform(matrixUtil.mul([], mRotationBack, next.getLocalTransform()));\n return firstRect.intersect(nextRect);\n}\n\nfunction isNameLocationCenter(nameLocation) {\n return nameLocation === 'middle' || nameLocation === 'center';\n}\n\nfunction createTicks(ticksCoords, tickTransform, tickEndCoord, tickLineStyle, anidPrefix) {\n var tickEls = [];\n var pt1 = [];\n var pt2 = [];\n\n for (var i = 0; i < ticksCoords.length; i++) {\n var tickCoord = ticksCoords[i].coord;\n pt1[0] = tickCoord;\n pt1[1] = 0;\n pt2[0] = tickCoord;\n pt2[1] = tickEndCoord;\n\n if (tickTransform) {\n v2ApplyTransform(pt1, pt1, tickTransform);\n v2ApplyTransform(pt2, pt2, tickTransform);\n } // Tick line, Not use group transform to have better line draw\n\n\n var tickEl = new graphic.Line({\n subPixelOptimize: true,\n shape: {\n x1: pt1[0],\n y1: pt1[1],\n x2: pt2[0],\n y2: pt2[1]\n },\n style: tickLineStyle,\n z2: 2,\n autoBatch: true,\n silent: true\n });\n tickEl.anid = anidPrefix + '_' + ticksCoords[i].tickValue;\n tickEls.push(tickEl);\n }\n\n return tickEls;\n}\n\nfunction buildAxisMajorTicks(group, transformGroup, axisModel, opt) {\n var axis = axisModel.axis;\n var tickModel = axisModel.getModel('axisTick');\n var shown = tickModel.get('show');\n\n if (shown === 'auto' && opt.handleAutoShown) {\n shown = opt.handleAutoShown('axisTick');\n }\n\n if (!shown || axis.scale.isBlank()) {\n return;\n }\n\n var lineStyleModel = tickModel.getModel('lineStyle');\n var tickEndCoord = opt.tickDirection * tickModel.get('length');\n var ticksCoords = axis.getTicksCoords();\n var ticksEls = createTicks(ticksCoords, transformGroup.transform, tickEndCoord, defaults(lineStyleModel.getLineStyle(), {\n stroke: axisModel.get(['axisLine', 'lineStyle', 'color'])\n }), 'ticks');\n\n for (var i = 0; i < ticksEls.length; i++) {\n group.add(ticksEls[i]);\n }\n\n return ticksEls;\n}\n\nfunction buildAxisMinorTicks(group, transformGroup, axisModel, tickDirection) {\n var axis = axisModel.axis;\n var minorTickModel = axisModel.getModel('minorTick');\n\n if (!minorTickModel.get('show') || axis.scale.isBlank()) {\n return;\n }\n\n var minorTicksCoords = axis.getMinorTicksCoords();\n\n if (!minorTicksCoords.length) {\n return;\n }\n\n var lineStyleModel = minorTickModel.getModel('lineStyle');\n var tickEndCoord = tickDirection * minorTickModel.get('length');\n var minorTickLineStyle = defaults(lineStyleModel.getLineStyle(), defaults(axisModel.getModel('axisTick').getLineStyle(), {\n stroke: axisModel.get(['axisLine', 'lineStyle', 'color'])\n }));\n\n for (var i = 0; i < minorTicksCoords.length; i++) {\n var minorTicksEls = createTicks(minorTicksCoords[i], transformGroup.transform, tickEndCoord, minorTickLineStyle, 'minorticks_' + i);\n\n for (var k = 0; k < minorTicksEls.length; k++) {\n group.add(minorTicksEls[k]);\n }\n }\n}\n\nfunction buildAxisLabel(group, transformGroup, axisModel, opt) {\n var axis = axisModel.axis;\n var show = retrieve(opt.axisLabelShow, axisModel.get(['axisLabel', 'show']));\n\n if (!show || axis.scale.isBlank()) {\n return;\n }\n\n var labelModel = axisModel.getModel('axisLabel');\n var labelMargin = labelModel.get('margin');\n var labels = axis.getViewLabels(); // Special label rotate.\n\n var labelRotation = (retrieve(opt.labelRotate, labelModel.get('rotate')) || 0) * PI / 180;\n var labelLayout = AxisBuilder.innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);\n var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true);\n var labelEls = [];\n var silent = AxisBuilder.isLabelSilent(axisModel);\n var triggerEvent = axisModel.get('triggerEvent');\n each(labels, function (labelItem, index) {\n var tickValue = axis.scale.type === 'ordinal' ? axis.scale.getRawOrdinalNumber(labelItem.tickValue) : labelItem.tickValue;\n var formattedLabel = labelItem.formattedLabel;\n var rawLabel = labelItem.rawLabel;\n var itemLabelModel = labelModel;\n\n if (rawCategoryData && rawCategoryData[tickValue]) {\n var rawCategoryItem = rawCategoryData[tickValue];\n\n if (isObject(rawCategoryItem) && rawCategoryItem.textStyle) {\n itemLabelModel = new Model(rawCategoryItem.textStyle, labelModel, axisModel.ecModel);\n }\n }\n\n var textColor = itemLabelModel.getTextColor() || axisModel.get(['axisLine', 'lineStyle', 'color']);\n var tickCoord = axis.dataToCoord(tickValue);\n var textEl = new graphic.Text({\n x: tickCoord,\n y: opt.labelOffset + opt.labelDirection * labelMargin,\n rotation: labelLayout.rotation,\n silent: silent,\n z2: 10 + (labelItem.level || 0),\n style: createTextStyle(itemLabelModel, {\n text: formattedLabel,\n align: itemLabelModel.getShallow('align', true) || labelLayout.textAlign,\n verticalAlign: itemLabelModel.getShallow('verticalAlign', true) || itemLabelModel.getShallow('baseline', true) || labelLayout.textVerticalAlign,\n fill: isFunction(textColor) ? textColor( // (1) 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 // (2) Compatible with previous version, which always use formatted label as\n // input. But in interval scale the formatted label is like '223,445', which\n // maked user repalce ','. So we modify it to return original val but remain\n // it as 'string' to avoid error in replacing.\n axis.type === 'category' ? rawLabel : axis.type === 'value' ? tickValue + '' : tickValue, index) : textColor\n })\n });\n textEl.anid = 'label_' + tickValue; // Pack data for mouse event\n\n if (triggerEvent) {\n var eventData = AxisBuilder.makeAxisEventDataBase(axisModel);\n eventData.targetType = 'axisLabel';\n eventData.value = rawLabel;\n eventData.tickIndex = index;\n\n if (axis.type === 'category') {\n eventData.dataIndex = tickValue;\n }\n\n getECData(textEl).eventData = eventData;\n } // FIXME\n\n\n transformGroup.add(textEl);\n textEl.updateTransform();\n labelEls.push(textEl);\n group.add(textEl);\n textEl.decomposeTransform();\n });\n return labelEls;\n}\n\nexport default AxisBuilder;","map":{"version":3,"sources":["D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src/qingge-Market/qingge-vue/node_modules/echarts/lib/component/axis/AxisBuilder.js"],"names":["retrieve","defaults","extend","each","isObject","map","isString","isNumber","isFunction","graphic","getECData","createTextStyle","Model","isRadianAroundZero","remRadian","createSymbol","normalizeSymbolOffset","matrixUtil","applyTransform","v2ApplyTransform","shouldShowAllLabels","prepareLayoutList","hideOverlap","PI","Math","AxisBuilder","axisModel","opt","group","Group","labelOffset","nameDirection","tickDirection","labelDirection","silent","handleAutoShown","transformGroup","x","position","y","rotation","updateTransform","_transformGroup","prototype","hasBuilder","name","builders","add","getGroup","innerTextLayout","axisRotation","textRotation","direction","rotationDiff","textAlign","textVerticalAlign","makeAxisEventDataBase","eventData","componentType","mainType","componentIndex","isLabelSilent","tooltipOpt","get","show","axisLine","shown","extent","axis","getExtent","matrix","transform","pt1","pt2","lineStyle","lineCap","getModel","getLineStyle","line","Line","subPixelOptimize","shape","x1","y1","x2","y2","style","strokeContainThreshold","z2","anid","arrows","arrowSize","arrowOffset","symbolWidth_1","symbolHeight_1","rotate","offset","r","sqrt","point","index","symbol","stroke","attr","cos","sin","axisTickLabel","ticksEls","buildAxisMajorTicks","labelEls","buildAxisLabel","fixMinMaxLabelShow","buildAxisMinorTicks","labelList","label","priority","defaultAttr","ignore","axisName","nameLocation","textStyleModel","gap","gapSignal","pos","isNameLocationCenter","labelLayout","nameRotation","axisNameAvailableWidth","endTextLayout","abs","isFinite","textFont","getFont","truncateOpt","ellipsis","maxWidth","nameTruncateMaxWidth","textEl","Text","text","font","overflow","width","fill","getTextColor","align","verticalAlign","setTooltipConfig","el","componentModel","itemName","__fullText","targetType","decomposeTransform","textPosition","textRotate","inverse","onLeft","tickEls","showMinLabel","showMaxLabel","firstLabel","nextLabel","lastLabel","length","prevLabel","firstTick","nextTick","lastTick","prevTick","ignoreEl","isTwoLabelOverlapped","current","next","firstRect","getBoundingRect","clone","nextRect","mRotationBack","identity","mul","getLocalTransform","intersect","createTicks","ticksCoords","tickTransform","tickEndCoord","tickLineStyle","anidPrefix","i","tickCoord","coord","tickEl","autoBatch","tickValue","push","tickModel","scale","isBlank","lineStyleModel","getTicksCoords","minorTickModel","minorTicksCoords","getMinorTicksCoords","minorTickLineStyle","minorTicksEls","k","axisLabelShow","labelModel","labelMargin","labels","getViewLabels","labelRotation","labelRotate","rawCategoryData","getCategories","triggerEvent","labelItem","type","getRawOrdinalNumber","formattedLabel","rawLabel","itemLabelModel","rawCategoryItem","textStyle","ecModel","textColor","dataToCoord","level","getShallow","value","tickIndex","dataIndex"],"mappings":"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","sourcesContent":["\r\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\r\n\r\n\r\n/**\r\n * AUTO-GENERATED FILE. DO NOT MODIFY.\r\n */\r\n\r\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\r\nimport { retrieve, defaults, extend, each, isObject, map, isString, isNumber, isFunction } from 'zrender/lib/core/util.js';\r\nimport * as graphic from '../../util/graphic.js';\r\nimport { getECData } from '../../util/innerStore.js';\r\nimport { createTextStyle } from '../../label/labelStyle.js';\r\nimport Model from '../../model/Model.js';\r\nimport { isRadianAroundZero, remRadian } from '../../util/number.js';\r\nimport { createSymbol, normalizeSymbolOffset } from '../../util/symbol.js';\r\nimport * as matrixUtil from 'zrender/lib/core/matrix.js';\r\nimport { applyTransform as v2ApplyTransform } from 'zrender/lib/core/vector.js';\r\nimport { shouldShowAllLabels } from '../../coord/axisHelper.js';\r\nimport { prepareLayoutList, hideOverlap } from '../../label/labelLayoutHelper.js';\r\nvar PI = Math.PI;\r\n/**\r\n * A final axis is translated and rotated from a \"standard axis\".\r\n * So opt.position and opt.rotation is required.\r\n *\r\n * A standard axis is and axis from [0, 0] to [0, axisExtent[1]],\r\n * for example: (0, 0) ------------> (0, 50)\r\n *\r\n * nameDirection or tickDirection or labelDirection is 1 means tick\r\n * or label is below the standard axis, whereas is -1 means above\r\n * the standard axis. labelOffset means offset between label and axis,\r\n * which is useful when 'onZero', where axisLabel is in the grid and\r\n * label in outside grid.\r\n *\r\n * Tips: like always,\r\n * positive rotation represents anticlockwise, and negative rotation\r\n * represents clockwise.\r\n * The direction of position coordinate is the same as the direction\r\n * of screen coordinate.\r\n *\r\n * Do not need to consider axis 'inverse', which is auto processed by\r\n * axis extent.\r\n */\r\n\r\nvar AxisBuilder =\r\n/** @class */\r\nfunction () {\r\n function AxisBuilder(axisModel, opt) {\r\n this.group = new graphic.Group();\r\n this.opt = opt;\r\n this.axisModel = axisModel; // Default value\r\n\r\n defaults(opt, {\r\n labelOffset: 0,\r\n nameDirection: 1,\r\n tickDirection: 1,\r\n labelDirection: 1,\r\n silent: true,\r\n handleAutoShown: function () {\r\n return true;\r\n }\r\n }); // FIXME Not use a seperate text group?\r\n\r\n var transformGroup = new graphic.Group({\r\n x: opt.position[0],\r\n y: opt.position[1],\r\n rotation: opt.rotation\r\n }); // this.group.add(transformGroup);\r\n // this._transformGroup = transformGroup;\r\n\r\n transformGroup.updateTransform();\r\n this._transformGroup = transformGroup;\r\n }\r\n\r\n AxisBuilder.prototype.hasBuilder = function (name) {\r\n return !!builders[name];\r\n };\r\n\r\n AxisBuilder.prototype.add = function (name) {\r\n builders[name](this.opt, this.axisModel, this.group, this._transformGroup);\r\n };\r\n\r\n AxisBuilder.prototype.getGroup = function () {\r\n return this.group;\r\n };\r\n\r\n AxisBuilder.innerTextLayout = function (axisRotation, textRotation, direction) {\r\n var rotationDiff = remRadian(textRotation - axisRotation);\r\n var textAlign;\r\n var textVerticalAlign;\r\n\r\n if (isRadianAroundZero(rotationDiff)) {\r\n // Label is parallel with axis line.\r\n textVerticalAlign = direction > 0 ? 'top' : 'bottom';\r\n textAlign = 'center';\r\n } else if (isRadianAroundZero(rotationDiff - PI)) {\r\n // Label is inverse parallel with axis line.\r\n textVerticalAlign = direction > 0 ? 'bottom' : 'top';\r\n textAlign = 'center';\r\n } else {\r\n textVerticalAlign = 'middle';\r\n\r\n if (rotationDiff > 0 && rotationDiff < PI) {\r\n textAlign = direction > 0 ? 'right' : 'left';\r\n } else {\r\n textAlign = direction > 0 ? 'left' : 'right';\r\n }\r\n }\r\n\r\n return {\r\n rotation: rotationDiff,\r\n textAlign: textAlign,\r\n textVerticalAlign: textVerticalAlign\r\n };\r\n };\r\n\r\n AxisBuilder.makeAxisEventDataBase = function (axisModel) {\r\n var eventData = {\r\n componentType: axisModel.mainType,\r\n componentIndex: axisModel.componentIndex\r\n };\r\n eventData[axisModel.mainType + 'Index'] = axisModel.componentIndex;\r\n return eventData;\r\n };\r\n\r\n AxisBuilder.isLabelSilent = function (axisModel) {\r\n var tooltipOpt = axisModel.get('tooltip');\r\n return axisModel.get('silent') // Consider mouse cursor, add these restrictions.\r\n || !(axisModel.get('triggerEvent') || tooltipOpt && tooltipOpt.show);\r\n };\r\n\r\n return AxisBuilder;\r\n}();\r\n\r\n;\r\nvar builders = {\r\n axisLine: function (opt, axisModel, group, transformGroup) {\r\n var shown = axisModel.get(['axisLine', 'show']);\r\n\r\n if (shown === 'auto' && opt.handleAutoShown) {\r\n shown = opt.handleAutoShown('axisLine');\r\n }\r\n\r\n if (!shown) {\r\n return;\r\n }\r\n\r\n var extent = axisModel.axis.getExtent();\r\n var matrix = transformGroup.transform;\r\n var pt1 = [extent[0], 0];\r\n var pt2 = [extent[1], 0];\r\n\r\n if (matrix) {\r\n v2ApplyTransform(pt1, pt1, matrix);\r\n v2ApplyTransform(pt2, pt2, matrix);\r\n }\r\n\r\n var lineStyle = extend({\r\n lineCap: 'round'\r\n }, axisModel.getModel(['axisLine', 'lineStyle']).getLineStyle());\r\n var line = new graphic.Line({\r\n // Id for animation\r\n subPixelOptimize: true,\r\n shape: {\r\n x1: pt1[0],\r\n y1: pt1[1],\r\n x2: pt2[0],\r\n y2: pt2[1]\r\n },\r\n style: lineStyle,\r\n strokeContainThreshold: opt.strokeContainThreshold || 5,\r\n silent: true,\r\n z2: 1\r\n });\r\n line.anid = 'line';\r\n group.add(line);\r\n var arrows = axisModel.get(['axisLine', 'symbol']);\r\n\r\n if (arrows != null) {\r\n var arrowSize = axisModel.get(['axisLine', 'symbolSize']);\r\n\r\n if (isString(arrows)) {\r\n // Use the same arrow for start and end point\r\n arrows = [arrows, arrows];\r\n }\r\n\r\n if (isString(arrowSize) || isNumber(arrowSize)) {\r\n // Use the same size for width and height\r\n arrowSize = [arrowSize, arrowSize];\r\n }\r\n\r\n var arrowOffset = normalizeSymbolOffset(axisModel.get(['axisLine', 'symbolOffset']) || 0, arrowSize);\r\n var symbolWidth_1 = arrowSize[0];\r\n var symbolHeight_1 = arrowSize[1];\r\n each([{\r\n rotate: opt.rotation + Math.PI / 2,\r\n offset: arrowOffset[0],\r\n r: 0\r\n }, {\r\n rotate: opt.rotation - Math.PI / 2,\r\n offset: arrowOffset[1],\r\n r: Math.sqrt((pt1[0] - pt2[0]) * (pt1[0] - pt2[0]) + (pt1[1] - pt2[1]) * (pt1[1] - pt2[1]))\r\n }], function (point, index) {\r\n if (arrows[index] !== 'none' && arrows[index] != null) {\r\n var symbol = createSymbol(arrows[index], -symbolWidth_1 / 2, -symbolHeight_1 / 2, symbolWidth_1, symbolHeight_1, lineStyle.stroke, true); // Calculate arrow position with offset\r\n\r\n var r = point.r + point.offset;\r\n symbol.attr({\r\n rotation: point.rotate,\r\n x: pt1[0] + r * Math.cos(opt.rotation),\r\n y: pt1[1] - r * Math.sin(opt.rotation),\r\n silent: true,\r\n z2: 11\r\n });\r\n group.add(symbol);\r\n }\r\n });\r\n }\r\n },\r\n axisTickLabel: function (opt, axisModel, group, transformGroup) {\r\n var ticksEls = buildAxisMajorTicks(group, transformGroup, axisModel, opt);\r\n var labelEls = buildAxisLabel(group, transformGroup, axisModel, opt);\r\n fixMinMaxLabelShow(axisModel, labelEls, ticksEls);\r\n buildAxisMinorTicks(group, transformGroup, axisModel, opt.tickDirection); // This bit fixes the label overlap issue for the time chart.\r\n // See https://github.com/apache/echarts/issues/14266 for more.\r\n\r\n if (axisModel.get(['axisLabel', 'hideOverlap'])) {\r\n var labelList = prepareLayoutList(map(labelEls, function (label) {\r\n return {\r\n label: label,\r\n priority: label.z2,\r\n defaultAttr: {\r\n ignore: label.ignore\r\n }\r\n };\r\n }));\r\n hideOverlap(labelList);\r\n }\r\n },\r\n axisName: function (opt, axisModel, group, transformGroup) {\r\n var name = retrieve(opt.axisName, axisModel.get('name'));\r\n\r\n if (!name) {\r\n return;\r\n }\r\n\r\n var nameLocation = axisModel.get('nameLocation');\r\n var nameDirection = opt.nameDirection;\r\n var textStyleModel = axisModel.getModel('nameTextStyle');\r\n var gap = axisModel.get('nameGap') || 0;\r\n var extent = axisModel.axis.getExtent();\r\n var gapSignal = extent[0] > extent[1] ? -1 : 1;\r\n var pos = [nameLocation === 'start' ? extent[0] - gapSignal * gap : nameLocation === 'end' ? extent[1] + gapSignal * gap : (extent[0] + extent[1]) / 2, // Reuse labelOffset.\r\n isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0];\r\n var labelLayout;\r\n var nameRotation = axisModel.get('nameRotate');\r\n\r\n if (nameRotation != null) {\r\n nameRotation = nameRotation * PI / 180; // To radian.\r\n }\r\n\r\n var axisNameAvailableWidth;\r\n\r\n if (isNameLocationCenter(nameLocation)) {\r\n labelLayout = AxisBuilder.innerTextLayout(opt.rotation, nameRotation != null ? nameRotation : opt.rotation, // Adapt to axis.\r\n nameDirection);\r\n } else {\r\n labelLayout = endTextLayout(opt.rotation, nameLocation, nameRotation || 0, extent);\r\n axisNameAvailableWidth = opt.axisNameAvailableWidth;\r\n\r\n if (axisNameAvailableWidth != null) {\r\n axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout.rotation));\r\n !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null);\r\n }\r\n }\r\n\r\n var textFont = textStyleModel.getFont();\r\n var truncateOpt = axisModel.get('nameTruncate', true) || {};\r\n var ellipsis = truncateOpt.ellipsis;\r\n var maxWidth = retrieve(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth);\r\n var textEl = new graphic.Text({\r\n x: pos[0],\r\n y: pos[1],\r\n rotation: labelLayout.rotation,\r\n silent: AxisBuilder.isLabelSilent(axisModel),\r\n style: createTextStyle(textStyleModel, {\r\n text: name,\r\n font: textFont,\r\n overflow: 'truncate',\r\n width: maxWidth,\r\n ellipsis: ellipsis,\r\n fill: textStyleModel.getTextColor() || axisModel.get(['axisLine', 'lineStyle', 'color']),\r\n align: textStyleModel.get('align') || labelLayout.textAlign,\r\n verticalAlign: textStyleModel.get('verticalAlign') || labelLayout.textVerticalAlign\r\n }),\r\n z2: 1\r\n });\r\n graphic.setTooltipConfig({\r\n el: textEl,\r\n componentModel: axisModel,\r\n itemName: name\r\n });\r\n textEl.__fullText = name; // Id for animation\r\n\r\n textEl.anid = 'name';\r\n\r\n if (axisModel.get('triggerEvent')) {\r\n var eventData = AxisBuilder.makeAxisEventDataBase(axisModel);\r\n eventData.targetType = 'axisName';\r\n eventData.name = name;\r\n getECData(textEl).eventData = eventData;\r\n } // FIXME\r\n\r\n\r\n transformGroup.add(textEl);\r\n textEl.updateTransform();\r\n group.add(textEl);\r\n textEl.decomposeTransform();\r\n }\r\n};\r\n\r\nfunction endTextLayout(rotation, textPosition, textRotate, extent) {\r\n var rotationDiff = remRadian(textRotate - rotation);\r\n var textAlign;\r\n var textVerticalAlign;\r\n var inverse = extent[0] > extent[1];\r\n var onLeft = textPosition === 'start' && !inverse || textPosition !== 'start' && inverse;\r\n\r\n if (isRadianAroundZero(rotationDiff - PI / 2)) {\r\n textVerticalAlign = onLeft ? 'bottom' : 'top';\r\n textAlign = 'center';\r\n } else if (isRadianAroundZero(rotationDiff - PI * 1.5)) {\r\n textVerticalAlign = onLeft ? 'top' : 'bottom';\r\n textAlign = 'center';\r\n } else {\r\n textVerticalAlign = 'middle';\r\n\r\n if (rotationDiff < PI * 1.5 && rotationDiff > PI / 2) {\r\n textAlign = onLeft ? 'left' : 'right';\r\n } else {\r\n textAlign = onLeft ? 'right' : 'left';\r\n }\r\n }\r\n\r\n return {\r\n rotation: rotationDiff,\r\n textAlign: textAlign,\r\n textVerticalAlign: textVerticalAlign\r\n };\r\n}\r\n\r\nfunction fixMinMaxLabelShow(axisModel, labelEls, tickEls) {\r\n if (shouldShowAllLabels(axisModel.axis)) {\r\n return;\r\n } // If min or max are user set, we need to check\r\n // If the tick on min(max) are overlap on their neighbour tick\r\n // If they are overlapped, we need to hide the min(max) tick label\r\n\r\n\r\n var showMinLabel = axisModel.get(['axisLabel', 'showMinLabel']);\r\n var showMaxLabel = axisModel.get(['axisLabel', 'showMaxLabel']); // FIXME\r\n // Have not consider onBand yet, where tick els is more than label els.\r\n\r\n labelEls = labelEls || [];\r\n tickEls = tickEls || [];\r\n var firstLabel = labelEls[0];\r\n var nextLabel = labelEls[1];\r\n var lastLabel = labelEls[labelEls.length - 1];\r\n var prevLabel = labelEls[labelEls.length - 2];\r\n var firstTick = tickEls[0];\r\n var nextTick = tickEls[1];\r\n var lastTick = tickEls[tickEls.length - 1];\r\n var prevTick = tickEls[tickEls.length - 2];\r\n\r\n if (showMinLabel === false) {\r\n ignoreEl(firstLabel);\r\n ignoreEl(firstTick);\r\n } else if (isTwoLabelOverlapped(firstLabel, nextLabel)) {\r\n if (showMinLabel) {\r\n ignoreEl(nextLabel);\r\n ignoreEl(nextTick);\r\n } else {\r\n ignoreEl(firstLabel);\r\n ignoreEl(firstTick);\r\n }\r\n }\r\n\r\n if (showMaxLabel === false) {\r\n ignoreEl(lastLabel);\r\n ignoreEl(lastTick);\r\n } else if (isTwoLabelOverlapped(prevLabel, lastLabel)) {\r\n if (showMaxLabel) {\r\n ignoreEl(prevLabel);\r\n ignoreEl(prevTick);\r\n } else {\r\n ignoreEl(lastLabel);\r\n ignoreEl(lastTick);\r\n }\r\n }\r\n}\r\n\r\nfunction ignoreEl(el) {\r\n el && (el.ignore = true);\r\n}\r\n\r\nfunction isTwoLabelOverlapped(current, next) {\r\n // current and next has the same rotation.\r\n var firstRect = current && current.getBoundingRect().clone();\r\n var nextRect = next && next.getBoundingRect().clone();\r\n\r\n if (!firstRect || !nextRect) {\r\n return;\r\n } // When checking intersect of two rotated labels, we use mRotationBack\r\n // to avoid that boundingRect is enlarge when using `boundingRect.applyTransform`.\r\n\r\n\r\n var mRotationBack = matrixUtil.identity([]);\r\n matrixUtil.rotate(mRotationBack, mRotationBack, -current.rotation);\r\n firstRect.applyTransform(matrixUtil.mul([], mRotationBack, current.getLocalTransform()));\r\n nextRect.applyTransform(matrixUtil.mul([], mRotationBack, next.getLocalTransform()));\r\n return firstRect.intersect(nextRect);\r\n}\r\n\r\nfunction isNameLocationCenter(nameLocation) {\r\n return nameLocation === 'middle' || nameLocation === 'center';\r\n}\r\n\r\nfunction createTicks(ticksCoords, tickTransform, tickEndCoord, tickLineStyle, anidPrefix) {\r\n var tickEls = [];\r\n var pt1 = [];\r\n var pt2 = [];\r\n\r\n for (var i = 0; i < ticksCoords.length; i++) {\r\n var tickCoord = ticksCoords[i].coord;\r\n pt1[0] = tickCoord;\r\n pt1[1] = 0;\r\n pt2[0] = tickCoord;\r\n pt2[1] = tickEndCoord;\r\n\r\n if (tickTransform) {\r\n v2ApplyTransform(pt1, pt1, tickTransform);\r\n v2ApplyTransform(pt2, pt2, tickTransform);\r\n } // Tick line, Not use group transform to have better line draw\r\n\r\n\r\n var tickEl = new graphic.Line({\r\n subPixelOptimize: true,\r\n shape: {\r\n x1: pt1[0],\r\n y1: pt1[1],\r\n x2: pt2[0],\r\n y2: pt2[1]\r\n },\r\n style: tickLineStyle,\r\n z2: 2,\r\n autoBatch: true,\r\n silent: true\r\n });\r\n tickEl.anid = anidPrefix + '_' + ticksCoords[i].tickValue;\r\n tickEls.push(tickEl);\r\n }\r\n\r\n return tickEls;\r\n}\r\n\r\nfunction buildAxisMajorTicks(group, transformGroup, axisModel, opt) {\r\n var axis = axisModel.axis;\r\n var tickModel = axisModel.getModel('axisTick');\r\n var shown = tickModel.get('show');\r\n\r\n if (shown === 'auto' && opt.handleAutoShown) {\r\n shown = opt.handleAutoShown('axisTick');\r\n }\r\n\r\n if (!shown || axis.scale.isBlank()) {\r\n return;\r\n }\r\n\r\n var lineStyleModel = tickModel.getModel('lineStyle');\r\n var tickEndCoord = opt.tickDirection * tickModel.get('length');\r\n var ticksCoords = axis.getTicksCoords();\r\n var ticksEls = createTicks(ticksCoords, transformGroup.transform, tickEndCoord, defaults(lineStyleModel.getLineStyle(), {\r\n stroke: axisModel.get(['axisLine', 'lineStyle', 'color'])\r\n }), 'ticks');\r\n\r\n for (var i = 0; i < ticksEls.length; i++) {\r\n group.add(ticksEls[i]);\r\n }\r\n\r\n return ticksEls;\r\n}\r\n\r\nfunction buildAxisMinorTicks(group, transformGroup, axisModel, tickDirection) {\r\n var axis = axisModel.axis;\r\n var minorTickModel = axisModel.getModel('minorTick');\r\n\r\n if (!minorTickModel.get('show') || axis.scale.isBlank()) {\r\n return;\r\n }\r\n\r\n var minorTicksCoords = axis.getMinorTicksCoords();\r\n\r\n if (!minorTicksCoords.length) {\r\n return;\r\n }\r\n\r\n var lineStyleModel = minorTickModel.getModel('lineStyle');\r\n var tickEndCoord = tickDirection * minorTickModel.get('length');\r\n var minorTickLineStyle = defaults(lineStyleModel.getLineStyle(), defaults(axisModel.getModel('axisTick').getLineStyle(), {\r\n stroke: axisModel.get(['axisLine', 'lineStyle', 'color'])\r\n }));\r\n\r\n for (var i = 0; i < minorTicksCoords.length; i++) {\r\n var minorTicksEls = createTicks(minorTicksCoords[i], transformGroup.transform, tickEndCoord, minorTickLineStyle, 'minorticks_' + i);\r\n\r\n for (var k = 0; k < minorTicksEls.length; k++) {\r\n group.add(minorTicksEls[k]);\r\n }\r\n }\r\n}\r\n\r\nfunction buildAxisLabel(group, transformGroup, axisModel, opt) {\r\n var axis = axisModel.axis;\r\n var show = retrieve(opt.axisLabelShow, axisModel.get(['axisLabel', 'show']));\r\n\r\n if (!show || axis.scale.isBlank()) {\r\n return;\r\n }\r\n\r\n var labelModel = axisModel.getModel('axisLabel');\r\n var labelMargin = labelModel.get('margin');\r\n var labels = axis.getViewLabels(); // Special label rotate.\r\n\r\n var labelRotation = (retrieve(opt.labelRotate, labelModel.get('rotate')) || 0) * PI / 180;\r\n var labelLayout = AxisBuilder.innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);\r\n var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true);\r\n var labelEls = [];\r\n var silent = AxisBuilder.isLabelSilent(axisModel);\r\n var triggerEvent = axisModel.get('triggerEvent');\r\n each(labels, function (labelItem, index) {\r\n var tickValue = axis.scale.type === 'ordinal' ? axis.scale.getRawOrdinalNumber(labelItem.tickValue) : labelItem.tickValue;\r\n var formattedLabel = labelItem.formattedLabel;\r\n var rawLabel = labelItem.rawLabel;\r\n var itemLabelModel = labelModel;\r\n\r\n if (rawCategoryData && rawCategoryData[tickValue]) {\r\n var rawCategoryItem = rawCategoryData[tickValue];\r\n\r\n if (isObject(rawCategoryItem) && rawCategoryItem.textStyle) {\r\n itemLabelModel = new Model(rawCategoryItem.textStyle, labelModel, axisModel.ecModel);\r\n }\r\n }\r\n\r\n var textColor = itemLabelModel.getTextColor() || axisModel.get(['axisLine', 'lineStyle', 'color']);\r\n var tickCoord = axis.dataToCoord(tickValue);\r\n var textEl = new graphic.Text({\r\n x: tickCoord,\r\n y: opt.labelOffset + opt.labelDirection * labelMargin,\r\n rotation: labelLayout.rotation,\r\n silent: silent,\r\n z2: 10 + (labelItem.level || 0),\r\n style: createTextStyle(itemLabelModel, {\r\n text: formattedLabel,\r\n align: itemLabelModel.getShallow('align', true) || labelLayout.textAlign,\r\n verticalAlign: itemLabelModel.getShallow('verticalAlign', true) || itemLabelModel.getShallow('baseline', true) || labelLayout.textVerticalAlign,\r\n fill: isFunction(textColor) ? textColor( // (1) In category axis with data zoom, tick is not the original\r\n // index of axis.data. So tick should not be exposed to user\r\n // in category axis.\r\n // (2) Compatible with previous version, which always use formatted label as\r\n // input. But in interval scale the formatted label is like '223,445', which\r\n // maked user repalce ','. So we modify it to return original val but remain\r\n // it as 'string' to avoid error in replacing.\r\n axis.type === 'category' ? rawLabel : axis.type === 'value' ? tickValue + '' : tickValue, index) : textColor\r\n })\r\n });\r\n textEl.anid = 'label_' + tickValue; // Pack data for mouse event\r\n\r\n if (triggerEvent) {\r\n var eventData = AxisBuilder.makeAxisEventDataBase(axisModel);\r\n eventData.targetType = 'axisLabel';\r\n eventData.value = rawLabel;\r\n eventData.tickIndex = index;\r\n\r\n if (axis.type === 'category') {\r\n eventData.dataIndex = tickValue;\r\n }\r\n\r\n getECData(textEl).eventData = eventData;\r\n } // FIXME\r\n\r\n\r\n transformGroup.add(textEl);\r\n textEl.updateTransform();\r\n labelEls.push(textEl);\r\n group.add(textEl);\r\n textEl.decomposeTransform();\r\n });\r\n return labelEls;\r\n}\r\n\r\nexport default AxisBuilder;"]},"metadata":{},"sourceType":"module"} |