qauMaWeb/node_modules/.cache/babel-loader/81d8e7d0f5798c9fa2bc1b48f71...

1 line
89 KiB
JSON

{"ast":null,"code":"import \"core-js/modules/es.array.slice.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 { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport LinearGradient from 'zrender/lib/graphic/LinearGradient.js';\nimport * as eventTool from 'zrender/lib/core/event.js';\nimport VisualMapView from './VisualMapView.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as numberUtil from '../../util/number.js';\nimport sliderMove from '../helper/sliderMove.js';\nimport * as helper from './helper.js';\nimport * as modelUtil from '../../util/model.js';\nimport { parsePercent } from 'zrender/lib/contain/text.js';\nimport { setAsHighDownDispatcher } from '../../util/states.js';\nimport { createSymbol } from '../../util/symbol.js';\nimport ZRImage from 'zrender/lib/graphic/Image.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { createTextStyle } from '../../label/labelStyle.js';\nvar linearMap = numberUtil.linearMap;\nvar each = zrUtil.each;\nvar mathMin = Math.min;\nvar mathMax = Math.max; // Arbitrary value\n\nvar HOVER_LINK_SIZE = 12;\nvar HOVER_LINK_OUT = 6; // Notice:\n// Any \"interval\" should be by the order of [low, high].\n// \"handle0\" (handleIndex === 0) maps to\n// low data value: this._dataInterval[0] and has low coord.\n// \"handle1\" (handleIndex === 1) maps to\n// high data value: this._dataInterval[1] and has high coord.\n// The logic of transform is implemented in this._createBarGroup.\n\nvar ContinuousView =\n/** @class */\nfunction (_super) {\n __extends(ContinuousView, _super);\n\n function ContinuousView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = ContinuousView.type;\n _this._shapes = {};\n _this._dataInterval = [];\n _this._handleEnds = [];\n _this._hoverLinkDataIndices = [];\n return _this;\n }\n\n ContinuousView.prototype.doRender = function (visualMapModel, ecModel, api, payload) {\n this._api = api;\n\n if (!payload || payload.type !== 'selectDataRange' || payload.from !== this.uid) {\n this._buildView();\n }\n };\n\n ContinuousView.prototype._buildView = function () {\n this.group.removeAll();\n var visualMapModel = this.visualMapModel;\n var thisGroup = this.group;\n this._orient = visualMapModel.get('orient');\n this._useHandle = visualMapModel.get('calculable');\n\n this._resetInterval();\n\n this._renderBar(thisGroup);\n\n var dataRangeText = visualMapModel.get('text');\n\n this._renderEndsText(thisGroup, dataRangeText, 0);\n\n this._renderEndsText(thisGroup, dataRangeText, 1); // Do this for background size calculation.\n\n\n this._updateView(true); // After updating view, inner shapes is built completely,\n // and then background can be rendered.\n\n\n this.renderBackground(thisGroup); // Real update view\n\n this._updateView();\n\n this._enableHoverLinkToSeries();\n\n this._enableHoverLinkFromSeries();\n\n this.positionGroup(thisGroup);\n };\n\n ContinuousView.prototype._renderEndsText = function (group, dataRangeText, endsIndex) {\n if (!dataRangeText) {\n return;\n } // Compatible with ec2, text[0] map to high value, text[1] map low value.\n\n\n var text = dataRangeText[1 - endsIndex];\n text = text != null ? text + '' : '';\n var visualMapModel = this.visualMapModel;\n var textGap = visualMapModel.get('textGap');\n var itemSize = visualMapModel.itemSize;\n var barGroup = this._shapes.mainGroup;\n\n var position = this._applyTransform([itemSize[0] / 2, endsIndex === 0 ? -textGap : itemSize[1] + textGap], barGroup);\n\n var align = this._applyTransform(endsIndex === 0 ? 'bottom' : 'top', barGroup);\n\n var orient = this._orient;\n var textStyleModel = this.visualMapModel.textStyleModel;\n this.group.add(new graphic.Text({\n style: createTextStyle(textStyleModel, {\n x: position[0],\n y: position[1],\n verticalAlign: orient === 'horizontal' ? 'middle' : align,\n align: orient === 'horizontal' ? align : 'center',\n text: text\n })\n }));\n };\n\n ContinuousView.prototype._renderBar = function (targetGroup) {\n var visualMapModel = this.visualMapModel;\n var shapes = this._shapes;\n var itemSize = visualMapModel.itemSize;\n var orient = this._orient;\n var useHandle = this._useHandle;\n var itemAlign = helper.getItemAlign(visualMapModel, this.api, itemSize);\n\n var mainGroup = shapes.mainGroup = this._createBarGroup(itemAlign);\n\n var gradientBarGroup = new graphic.Group();\n mainGroup.add(gradientBarGroup); // Bar\n\n gradientBarGroup.add(shapes.outOfRange = createPolygon());\n gradientBarGroup.add(shapes.inRange = createPolygon(null, useHandle ? getCursor(this._orient) : null, zrUtil.bind(this._dragHandle, this, 'all', false), zrUtil.bind(this._dragHandle, this, 'all', true))); // A border radius clip.\n\n gradientBarGroup.setClipPath(new graphic.Rect({\n shape: {\n x: 0,\n y: 0,\n width: itemSize[0],\n height: itemSize[1],\n r: 3\n }\n }));\n var textRect = visualMapModel.textStyleModel.getTextRect('国');\n var textSize = mathMax(textRect.width, textRect.height); // Handle\n\n if (useHandle) {\n shapes.handleThumbs = [];\n shapes.handleLabels = [];\n shapes.handleLabelPoints = [];\n\n this._createHandle(visualMapModel, mainGroup, 0, itemSize, textSize, orient);\n\n this._createHandle(visualMapModel, mainGroup, 1, itemSize, textSize, orient);\n }\n\n this._createIndicator(visualMapModel, mainGroup, itemSize, textSize, orient);\n\n targetGroup.add(mainGroup);\n };\n\n ContinuousView.prototype._createHandle = function (visualMapModel, mainGroup, handleIndex, itemSize, textSize, orient) {\n var onDrift = zrUtil.bind(this._dragHandle, this, handleIndex, false);\n var onDragEnd = zrUtil.bind(this._dragHandle, this, handleIndex, true);\n var handleSize = parsePercent(visualMapModel.get('handleSize'), itemSize[0]);\n var handleThumb = createSymbol(visualMapModel.get('handleIcon'), -handleSize / 2, -handleSize / 2, handleSize, handleSize, null, true);\n var cursor = getCursor(this._orient);\n handleThumb.attr({\n cursor: cursor,\n draggable: true,\n drift: onDrift,\n ondragend: onDragEnd,\n onmousemove: function onmousemove(e) {\n eventTool.stop(e.event);\n }\n });\n handleThumb.x = itemSize[0] / 2;\n handleThumb.useStyle(visualMapModel.getModel('handleStyle').getItemStyle());\n handleThumb.setStyle({\n strokeNoScale: true,\n strokeFirst: true\n });\n handleThumb.style.lineWidth *= 2;\n handleThumb.ensureState('emphasis').style = visualMapModel.getModel(['emphasis', 'handleStyle']).getItemStyle();\n setAsHighDownDispatcher(handleThumb, true);\n mainGroup.add(handleThumb); // Text is always horizontal layout but should not be effected by\n // transform (orient/inverse). So label is built separately but not\n // use zrender/graphic/helper/RectText, and is located based on view\n // group (according to handleLabelPoint) but not barGroup.\n\n var textStyleModel = this.visualMapModel.textStyleModel;\n var handleLabel = new graphic.Text({\n cursor: cursor,\n draggable: true,\n drift: onDrift,\n onmousemove: function onmousemove(e) {\n // Fot mobile devicem, prevent screen slider on the button.\n eventTool.stop(e.event);\n },\n ondragend: onDragEnd,\n style: createTextStyle(textStyleModel, {\n x: 0,\n y: 0,\n text: ''\n })\n });\n handleLabel.ensureState('blur').style = {\n opacity: 0.1\n };\n handleLabel.stateTransition = {\n duration: 200\n };\n this.group.add(handleLabel);\n var handleLabelPoint = [handleSize, 0];\n var shapes = this._shapes;\n shapes.handleThumbs[handleIndex] = handleThumb;\n shapes.handleLabelPoints[handleIndex] = handleLabelPoint;\n shapes.handleLabels[handleIndex] = handleLabel;\n };\n\n ContinuousView.prototype._createIndicator = function (visualMapModel, mainGroup, itemSize, textSize, orient) {\n var scale = parsePercent(visualMapModel.get('indicatorSize'), itemSize[0]);\n var indicator = createSymbol(visualMapModel.get('indicatorIcon'), -scale / 2, -scale / 2, scale, scale, null, true);\n indicator.attr({\n cursor: 'move',\n invisible: true,\n silent: true,\n x: itemSize[0] / 2\n });\n var indicatorStyle = visualMapModel.getModel('indicatorStyle').getItemStyle();\n\n if (indicator instanceof ZRImage) {\n var pathStyle = indicator.style;\n indicator.useStyle(zrUtil.extend({\n // TODO other properties like x, y ?\n image: pathStyle.image,\n x: pathStyle.x,\n y: pathStyle.y,\n width: pathStyle.width,\n height: pathStyle.height\n }, indicatorStyle));\n } else {\n indicator.useStyle(indicatorStyle);\n }\n\n mainGroup.add(indicator);\n var textStyleModel = this.visualMapModel.textStyleModel;\n var indicatorLabel = new graphic.Text({\n silent: true,\n invisible: true,\n style: createTextStyle(textStyleModel, {\n x: 0,\n y: 0,\n text: ''\n })\n });\n this.group.add(indicatorLabel);\n var indicatorLabelPoint = [(orient === 'horizontal' ? textSize / 2 : HOVER_LINK_OUT) + itemSize[0] / 2, 0];\n var shapes = this._shapes;\n shapes.indicator = indicator;\n shapes.indicatorLabel = indicatorLabel;\n shapes.indicatorLabelPoint = indicatorLabelPoint;\n this._firstShowIndicator = true;\n };\n\n ContinuousView.prototype._dragHandle = function (handleIndex, isEnd, // dx is event from ondragend if isEnd is true. It's not used\n dx, dy) {\n if (!this._useHandle) {\n return;\n }\n\n this._dragging = !isEnd;\n\n if (!isEnd) {\n // Transform dx, dy to bar coordination.\n var vertex = this._applyTransform([dx, dy], this._shapes.mainGroup, true);\n\n this._updateInterval(handleIndex, vertex[1]);\n\n this._hideIndicator(); // Considering realtime, update view should be executed\n // before dispatch action.\n\n\n this._updateView();\n } // dragEnd do not dispatch action when realtime.\n\n\n if (isEnd === !this.visualMapModel.get('realtime')) {\n // jshint ignore:line\n this.api.dispatchAction({\n type: 'selectDataRange',\n from: this.uid,\n visualMapId: this.visualMapModel.id,\n selected: this._dataInterval.slice()\n });\n }\n\n if (isEnd) {\n !this._hovering && this._clearHoverLinkToSeries();\n } else if (useHoverLinkOnHandle(this.visualMapModel)) {\n this._doHoverLinkToSeries(this._handleEnds[handleIndex], false);\n }\n };\n\n ContinuousView.prototype._resetInterval = function () {\n var visualMapModel = this.visualMapModel;\n var dataInterval = this._dataInterval = visualMapModel.getSelected();\n var dataExtent = visualMapModel.getExtent();\n var sizeExtent = [0, visualMapModel.itemSize[1]];\n this._handleEnds = [linearMap(dataInterval[0], dataExtent, sizeExtent, true), linearMap(dataInterval[1], dataExtent, sizeExtent, true)];\n };\n /**\r\n * @private\r\n * @param {(number|string)} handleIndex 0 or 1 or 'all'\r\n * @param {number} dx\r\n * @param {number} dy\r\n */\n\n\n ContinuousView.prototype._updateInterval = function (handleIndex, delta) {\n delta = delta || 0;\n var visualMapModel = this.visualMapModel;\n var handleEnds = this._handleEnds;\n var sizeExtent = [0, visualMapModel.itemSize[1]];\n sliderMove(delta, handleEnds, sizeExtent, handleIndex, // cross is forbiden\n 0);\n var dataExtent = visualMapModel.getExtent(); // Update data interval.\n\n this._dataInterval = [linearMap(handleEnds[0], sizeExtent, dataExtent, true), linearMap(handleEnds[1], sizeExtent, dataExtent, true)];\n };\n\n ContinuousView.prototype._updateView = function (forSketch) {\n var visualMapModel = this.visualMapModel;\n var dataExtent = visualMapModel.getExtent();\n var shapes = this._shapes;\n var outOfRangeHandleEnds = [0, visualMapModel.itemSize[1]];\n var inRangeHandleEnds = forSketch ? outOfRangeHandleEnds : this._handleEnds;\n\n var visualInRange = this._createBarVisual(this._dataInterval, dataExtent, inRangeHandleEnds, 'inRange');\n\n var visualOutOfRange = this._createBarVisual(dataExtent, dataExtent, outOfRangeHandleEnds, 'outOfRange');\n\n shapes.inRange.setStyle({\n fill: visualInRange.barColor // opacity: visualInRange.opacity\n\n }).setShape('points', visualInRange.barPoints);\n shapes.outOfRange.setStyle({\n fill: visualOutOfRange.barColor // opacity: visualOutOfRange.opacity\n\n }).setShape('points', visualOutOfRange.barPoints);\n\n this._updateHandle(inRangeHandleEnds, visualInRange);\n };\n\n ContinuousView.prototype._createBarVisual = function (dataInterval, dataExtent, handleEnds, forceState) {\n var opts = {\n forceState: forceState,\n convertOpacityToAlpha: true\n };\n\n var colorStops = this._makeColorGradient(dataInterval, opts);\n\n var symbolSizes = [this.getControllerVisual(dataInterval[0], 'symbolSize', opts), this.getControllerVisual(dataInterval[1], 'symbolSize', opts)];\n\n var barPoints = this._createBarPoints(handleEnds, symbolSizes);\n\n return {\n barColor: new LinearGradient(0, 0, 0, 1, colorStops),\n barPoints: barPoints,\n handlesColor: [colorStops[0].color, colorStops[colorStops.length - 1].color]\n };\n };\n\n ContinuousView.prototype._makeColorGradient = function (dataInterval, opts) {\n // Considering colorHue, which is not linear, so we have to sample\n // to calculate gradient color stops, but not only caculate head\n // and tail.\n var sampleNumber = 100; // Arbitrary value.\n\n var colorStops = [];\n var step = (dataInterval[1] - dataInterval[0]) / sampleNumber;\n colorStops.push({\n color: this.getControllerVisual(dataInterval[0], 'color', opts),\n offset: 0\n });\n\n for (var i = 1; i < sampleNumber; i++) {\n var currValue = dataInterval[0] + step * i;\n\n if (currValue > dataInterval[1]) {\n break;\n }\n\n colorStops.push({\n color: this.getControllerVisual(currValue, 'color', opts),\n offset: i / sampleNumber\n });\n }\n\n colorStops.push({\n color: this.getControllerVisual(dataInterval[1], 'color', opts),\n offset: 1\n });\n return colorStops;\n };\n\n ContinuousView.prototype._createBarPoints = function (handleEnds, symbolSizes) {\n var itemSize = this.visualMapModel.itemSize;\n return [[itemSize[0] - symbolSizes[0], handleEnds[0]], [itemSize[0], handleEnds[0]], [itemSize[0], handleEnds[1]], [itemSize[0] - symbolSizes[1], handleEnds[1]]];\n };\n\n ContinuousView.prototype._createBarGroup = function (itemAlign) {\n var orient = this._orient;\n var inverse = this.visualMapModel.get('inverse');\n return new graphic.Group(orient === 'horizontal' && !inverse ? {\n scaleX: itemAlign === 'bottom' ? 1 : -1,\n rotation: Math.PI / 2\n } : orient === 'horizontal' && inverse ? {\n scaleX: itemAlign === 'bottom' ? -1 : 1,\n rotation: -Math.PI / 2\n } : orient === 'vertical' && !inverse ? {\n scaleX: itemAlign === 'left' ? 1 : -1,\n scaleY: -1\n } : {\n scaleX: itemAlign === 'left' ? 1 : -1\n });\n };\n\n ContinuousView.prototype._updateHandle = function (handleEnds, visualInRange) {\n if (!this._useHandle) {\n return;\n }\n\n var shapes = this._shapes;\n var visualMapModel = this.visualMapModel;\n var handleThumbs = shapes.handleThumbs;\n var handleLabels = shapes.handleLabels;\n var itemSize = visualMapModel.itemSize;\n var dataExtent = visualMapModel.getExtent();\n each([0, 1], function (handleIndex) {\n var handleThumb = handleThumbs[handleIndex];\n handleThumb.setStyle('fill', visualInRange.handlesColor[handleIndex]);\n handleThumb.y = handleEnds[handleIndex];\n var val = linearMap(handleEnds[handleIndex], [0, itemSize[1]], dataExtent, true);\n var symbolSize = this.getControllerVisual(val, 'symbolSize');\n handleThumb.scaleX = handleThumb.scaleY = symbolSize / itemSize[0];\n handleThumb.x = itemSize[0] - symbolSize / 2; // Update handle label position.\n\n var textPoint = graphic.applyTransform(shapes.handleLabelPoints[handleIndex], graphic.getTransform(handleThumb, this.group));\n handleLabels[handleIndex].setStyle({\n x: textPoint[0],\n y: textPoint[1],\n text: visualMapModel.formatValueText(this._dataInterval[handleIndex]),\n verticalAlign: 'middle',\n align: this._orient === 'vertical' ? this._applyTransform('left', shapes.mainGroup) : 'center'\n });\n }, this);\n };\n\n ContinuousView.prototype._showIndicator = function (cursorValue, textValue, rangeSymbol, halfHoverLinkSize) {\n var visualMapModel = this.visualMapModel;\n var dataExtent = visualMapModel.getExtent();\n var itemSize = visualMapModel.itemSize;\n var sizeExtent = [0, itemSize[1]];\n var shapes = this._shapes;\n var indicator = shapes.indicator;\n\n if (!indicator) {\n return;\n }\n\n indicator.attr('invisible', false);\n var opts = {\n convertOpacityToAlpha: true\n };\n var color = this.getControllerVisual(cursorValue, 'color', opts);\n var symbolSize = this.getControllerVisual(cursorValue, 'symbolSize');\n var y = linearMap(cursorValue, dataExtent, sizeExtent, true);\n var x = itemSize[0] - symbolSize / 2;\n var oldIndicatorPos = {\n x: indicator.x,\n y: indicator.y\n }; // Update handle label position.\n\n indicator.y = y;\n indicator.x = x;\n var textPoint = graphic.applyTransform(shapes.indicatorLabelPoint, graphic.getTransform(indicator, this.group));\n var indicatorLabel = shapes.indicatorLabel;\n indicatorLabel.attr('invisible', false);\n\n var align = this._applyTransform('left', shapes.mainGroup);\n\n var orient = this._orient;\n var isHorizontal = orient === 'horizontal';\n indicatorLabel.setStyle({\n text: (rangeSymbol ? rangeSymbol : '') + visualMapModel.formatValueText(textValue),\n verticalAlign: isHorizontal ? align : 'middle',\n align: isHorizontal ? 'center' : align\n });\n var indicatorNewProps = {\n x: x,\n y: y,\n style: {\n fill: color\n }\n };\n var labelNewProps = {\n style: {\n x: textPoint[0],\n y: textPoint[1]\n }\n };\n\n if (visualMapModel.ecModel.isAnimationEnabled() && !this._firstShowIndicator) {\n var animationCfg = {\n duration: 100,\n easing: 'cubicInOut',\n additive: true\n };\n indicator.x = oldIndicatorPos.x;\n indicator.y = oldIndicatorPos.y;\n indicator.animateTo(indicatorNewProps, animationCfg);\n indicatorLabel.animateTo(labelNewProps, animationCfg);\n } else {\n indicator.attr(indicatorNewProps);\n indicatorLabel.attr(labelNewProps);\n }\n\n this._firstShowIndicator = false;\n var handleLabels = this._shapes.handleLabels;\n\n if (handleLabels) {\n for (var i = 0; i < handleLabels.length; i++) {\n // Fade out handle labels.\n // NOTE: Must use api enter/leave on emphasis/blur/select state. Or the global states manager will change it.\n this._api.enterBlur(handleLabels[i]);\n }\n }\n };\n\n ContinuousView.prototype._enableHoverLinkToSeries = function () {\n var self = this;\n\n this._shapes.mainGroup.on('mousemove', function (e) {\n self._hovering = true;\n\n if (!self._dragging) {\n var itemSize = self.visualMapModel.itemSize;\n\n var pos = self._applyTransform([e.offsetX, e.offsetY], self._shapes.mainGroup, true, true); // For hover link show when hover handle, which might be\n // below or upper than sizeExtent.\n\n\n pos[1] = mathMin(mathMax(0, pos[1]), itemSize[1]);\n\n self._doHoverLinkToSeries(pos[1], 0 <= pos[0] && pos[0] <= itemSize[0]);\n }\n }).on('mouseout', function () {\n // When mouse is out of handle, hoverLink still need\n // to be displayed when realtime is set as false.\n self._hovering = false;\n !self._dragging && self._clearHoverLinkToSeries();\n });\n };\n\n ContinuousView.prototype._enableHoverLinkFromSeries = function () {\n var zr = this.api.getZr();\n\n if (this.visualMapModel.option.hoverLink) {\n zr.on('mouseover', this._hoverLinkFromSeriesMouseOver, this);\n zr.on('mouseout', this._hideIndicator, this);\n } else {\n this._clearHoverLinkFromSeries();\n }\n };\n\n ContinuousView.prototype._doHoverLinkToSeries = function (cursorPos, hoverOnBar) {\n var visualMapModel = this.visualMapModel;\n var itemSize = visualMapModel.itemSize;\n\n if (!visualMapModel.option.hoverLink) {\n return;\n }\n\n var sizeExtent = [0, itemSize[1]];\n var dataExtent = visualMapModel.getExtent(); // For hover link show when hover handle, which might be below or upper than sizeExtent.\n\n cursorPos = mathMin(mathMax(sizeExtent[0], cursorPos), sizeExtent[1]);\n var halfHoverLinkSize = getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent);\n var hoverRange = [cursorPos - halfHoverLinkSize, cursorPos + halfHoverLinkSize];\n var cursorValue = linearMap(cursorPos, sizeExtent, dataExtent, true);\n var valueRange = [linearMap(hoverRange[0], sizeExtent, dataExtent, true), linearMap(hoverRange[1], sizeExtent, dataExtent, true)]; // Consider data range is out of visualMap range, see test/visualMap-continuous.html,\n // where china and india has very large population.\n\n hoverRange[0] < sizeExtent[0] && (valueRange[0] = -Infinity);\n hoverRange[1] > sizeExtent[1] && (valueRange[1] = Infinity); // Do not show indicator when mouse is over handle,\n // otherwise labels overlap, especially when dragging.\n\n if (hoverOnBar) {\n if (valueRange[0] === -Infinity) {\n this._showIndicator(cursorValue, valueRange[1], '< ', halfHoverLinkSize);\n } else if (valueRange[1] === Infinity) {\n this._showIndicator(cursorValue, valueRange[0], '> ', halfHoverLinkSize);\n } else {\n this._showIndicator(cursorValue, cursorValue, '≈ ', halfHoverLinkSize);\n }\n } // When realtime is set as false, handles, which are in barGroup,\n // also trigger hoverLink, which help user to realize where they\n // focus on when dragging. (see test/heatmap-large.html)\n // When realtime is set as true, highlight will not show when hover\n // handle, because the label on handle, which displays a exact value\n // but not range, might mislead users.\n\n\n var oldBatch = this._hoverLinkDataIndices;\n var newBatch = [];\n\n if (hoverOnBar || useHoverLinkOnHandle(visualMapModel)) {\n newBatch = this._hoverLinkDataIndices = visualMapModel.findTargetDataIndices(valueRange);\n }\n\n var resultBatches = modelUtil.compressBatches(oldBatch, newBatch);\n\n this._dispatchHighDown('downplay', helper.makeHighDownBatch(resultBatches[0], visualMapModel));\n\n this._dispatchHighDown('highlight', helper.makeHighDownBatch(resultBatches[1], visualMapModel));\n };\n\n ContinuousView.prototype._hoverLinkFromSeriesMouseOver = function (e) {\n var el = e.target;\n var visualMapModel = this.visualMapModel;\n\n if (!el || getECData(el).dataIndex == null) {\n return;\n }\n\n var ecData = getECData(el);\n var dataModel = this.ecModel.getSeriesByIndex(ecData.seriesIndex);\n\n if (!visualMapModel.isTargetSeries(dataModel)) {\n return;\n }\n\n var data = dataModel.getData(ecData.dataType);\n var value = data.getStore().get(visualMapModel.getDataDimensionIndex(data), ecData.dataIndex);\n\n if (!isNaN(value)) {\n this._showIndicator(value, value);\n }\n };\n\n ContinuousView.prototype._hideIndicator = function () {\n var shapes = this._shapes;\n shapes.indicator && shapes.indicator.attr('invisible', true);\n shapes.indicatorLabel && shapes.indicatorLabel.attr('invisible', true);\n var handleLabels = this._shapes.handleLabels;\n\n if (handleLabels) {\n for (var i = 0; i < handleLabels.length; i++) {\n // Fade out handle labels.\n // NOTE: Must use api enter/leave on emphasis/blur/select state. Or the global states manager will change it.\n this._api.leaveBlur(handleLabels[i]);\n }\n }\n };\n\n ContinuousView.prototype._clearHoverLinkToSeries = function () {\n this._hideIndicator();\n\n var indices = this._hoverLinkDataIndices;\n\n this._dispatchHighDown('downplay', helper.makeHighDownBatch(indices, this.visualMapModel));\n\n indices.length = 0;\n };\n\n ContinuousView.prototype._clearHoverLinkFromSeries = function () {\n this._hideIndicator();\n\n var zr = this.api.getZr();\n zr.off('mouseover', this._hoverLinkFromSeriesMouseOver);\n zr.off('mouseout', this._hideIndicator);\n };\n\n ContinuousView.prototype._applyTransform = function (vertex, element, inverse, global) {\n var transform = graphic.getTransform(element, global ? null : this.group);\n return zrUtil.isArray(vertex) ? graphic.applyTransform(vertex, transform, inverse) : graphic.transformDirection(vertex, transform, inverse);\n }; // TODO: TYPE more specified payload types.\n\n\n ContinuousView.prototype._dispatchHighDown = function (type, batch) {\n batch && batch.length && this.api.dispatchAction({\n type: type,\n batch: batch\n });\n };\n /**\r\n * @override\r\n */\n\n\n ContinuousView.prototype.dispose = function () {\n this._clearHoverLinkFromSeries();\n\n this._clearHoverLinkToSeries();\n };\n /**\r\n * @override\r\n */\n\n\n ContinuousView.prototype.remove = function () {\n this._clearHoverLinkFromSeries();\n\n this._clearHoverLinkToSeries();\n };\n\n ContinuousView.type = 'visualMap.continuous';\n return ContinuousView;\n}(VisualMapView);\n\nfunction createPolygon(points, cursor, onDrift, onDragEnd) {\n return new graphic.Polygon({\n shape: {\n points: points\n },\n draggable: !!onDrift,\n cursor: cursor,\n drift: onDrift,\n onmousemove: function onmousemove(e) {\n // Fot mobile devicem, prevent screen slider on the button.\n eventTool.stop(e.event);\n },\n ondragend: onDragEnd\n });\n}\n\nfunction getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent) {\n var halfHoverLinkSize = HOVER_LINK_SIZE / 2;\n var hoverLinkDataSize = visualMapModel.get('hoverLinkDataSize');\n\n if (hoverLinkDataSize) {\n halfHoverLinkSize = linearMap(hoverLinkDataSize, dataExtent, sizeExtent, true) / 2;\n }\n\n return halfHoverLinkSize;\n}\n\nfunction useHoverLinkOnHandle(visualMapModel) {\n var hoverLinkOnHandle = visualMapModel.get('hoverLinkOnHandle');\n return !!(hoverLinkOnHandle == null ? visualMapModel.get('realtime') : hoverLinkOnHandle);\n}\n\nfunction getCursor(orient) {\n return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\n}\n\nexport default ContinuousView;","map":{"version":3,"sources":["D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src/qingge-Market/qingge-vue/node_modules/echarts/lib/component/visualMap/ContinuousView.js"],"names":["__extends","zrUtil","LinearGradient","eventTool","VisualMapView","graphic","numberUtil","sliderMove","helper","modelUtil","parsePercent","setAsHighDownDispatcher","createSymbol","ZRImage","getECData","createTextStyle","linearMap","each","mathMin","Math","min","mathMax","max","HOVER_LINK_SIZE","HOVER_LINK_OUT","ContinuousView","_super","_this","apply","arguments","type","_shapes","_dataInterval","_handleEnds","_hoverLinkDataIndices","prototype","doRender","visualMapModel","ecModel","api","payload","_api","from","uid","_buildView","group","removeAll","thisGroup","_orient","get","_useHandle","_resetInterval","_renderBar","dataRangeText","_renderEndsText","_updateView","renderBackground","_enableHoverLinkToSeries","_enableHoverLinkFromSeries","positionGroup","endsIndex","text","textGap","itemSize","barGroup","mainGroup","position","_applyTransform","align","orient","textStyleModel","add","Text","style","x","y","verticalAlign","targetGroup","shapes","useHandle","itemAlign","getItemAlign","_createBarGroup","gradientBarGroup","Group","outOfRange","createPolygon","inRange","getCursor","bind","_dragHandle","setClipPath","Rect","shape","width","height","r","textRect","getTextRect","textSize","handleThumbs","handleLabels","handleLabelPoints","_createHandle","_createIndicator","handleIndex","onDrift","onDragEnd","handleSize","handleThumb","cursor","attr","draggable","drift","ondragend","onmousemove","e","stop","event","useStyle","getModel","getItemStyle","setStyle","strokeNoScale","strokeFirst","lineWidth","ensureState","handleLabel","opacity","stateTransition","duration","handleLabelPoint","scale","indicator","invisible","silent","indicatorStyle","pathStyle","extend","image","indicatorLabel","indicatorLabelPoint","_firstShowIndicator","isEnd","dx","dy","_dragging","vertex","_updateInterval","_hideIndicator","dispatchAction","visualMapId","id","selected","slice","_hovering","_clearHoverLinkToSeries","useHoverLinkOnHandle","_doHoverLinkToSeries","dataInterval","getSelected","dataExtent","getExtent","sizeExtent","delta","handleEnds","forSketch","outOfRangeHandleEnds","inRangeHandleEnds","visualInRange","_createBarVisual","visualOutOfRange","fill","barColor","setShape","barPoints","_updateHandle","forceState","opts","convertOpacityToAlpha","colorStops","_makeColorGradient","symbolSizes","getControllerVisual","_createBarPoints","handlesColor","color","length","sampleNumber","step","push","offset","i","currValue","inverse","scaleX","rotation","PI","scaleY","val","symbolSize","textPoint","applyTransform","getTransform","formatValueText","_showIndicator","cursorValue","textValue","rangeSymbol","halfHoverLinkSize","oldIndicatorPos","isHorizontal","indicatorNewProps","labelNewProps","isAnimationEnabled","animationCfg","easing","additive","animateTo","enterBlur","self","on","pos","offsetX","offsetY","zr","getZr","option","hoverLink","_hoverLinkFromSeriesMouseOver","_clearHoverLinkFromSeries","cursorPos","hoverOnBar","getHalfHoverLinkSize","hoverRange","valueRange","Infinity","oldBatch","newBatch","findTargetDataIndices","resultBatches","compressBatches","_dispatchHighDown","makeHighDownBatch","el","target","dataIndex","ecData","dataModel","getSeriesByIndex","seriesIndex","isTargetSeries","data","getData","dataType","value","getStore","getDataDimensionIndex","isNaN","leaveBlur","indices","off","element","global","transform","isArray","transformDirection","batch","dispose","remove","points","Polygon","hoverLinkDataSize","hoverLinkOnHandle"],"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 { __extends } from \"tslib\";\r\nimport * as zrUtil from 'zrender/lib/core/util.js';\r\nimport LinearGradient from 'zrender/lib/graphic/LinearGradient.js';\r\nimport * as eventTool from 'zrender/lib/core/event.js';\r\nimport VisualMapView from './VisualMapView.js';\r\nimport * as graphic from '../../util/graphic.js';\r\nimport * as numberUtil from '../../util/number.js';\r\nimport sliderMove from '../helper/sliderMove.js';\r\nimport * as helper from './helper.js';\r\nimport * as modelUtil from '../../util/model.js';\r\nimport { parsePercent } from 'zrender/lib/contain/text.js';\r\nimport { setAsHighDownDispatcher } from '../../util/states.js';\r\nimport { createSymbol } from '../../util/symbol.js';\r\nimport ZRImage from 'zrender/lib/graphic/Image.js';\r\nimport { getECData } from '../../util/innerStore.js';\r\nimport { createTextStyle } from '../../label/labelStyle.js';\r\nvar linearMap = numberUtil.linearMap;\r\nvar each = zrUtil.each;\r\nvar mathMin = Math.min;\r\nvar mathMax = Math.max; // Arbitrary value\r\n\r\nvar HOVER_LINK_SIZE = 12;\r\nvar HOVER_LINK_OUT = 6; // Notice:\r\n// Any \"interval\" should be by the order of [low, high].\r\n// \"handle0\" (handleIndex === 0) maps to\r\n// low data value: this._dataInterval[0] and has low coord.\r\n// \"handle1\" (handleIndex === 1) maps to\r\n// high data value: this._dataInterval[1] and has high coord.\r\n// The logic of transform is implemented in this._createBarGroup.\r\n\r\nvar ContinuousView =\r\n/** @class */\r\nfunction (_super) {\r\n __extends(ContinuousView, _super);\r\n\r\n function ContinuousView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n\r\n _this.type = ContinuousView.type;\r\n _this._shapes = {};\r\n _this._dataInterval = [];\r\n _this._handleEnds = [];\r\n _this._hoverLinkDataIndices = [];\r\n return _this;\r\n }\r\n\r\n ContinuousView.prototype.doRender = function (visualMapModel, ecModel, api, payload) {\r\n this._api = api;\r\n\r\n if (!payload || payload.type !== 'selectDataRange' || payload.from !== this.uid) {\r\n this._buildView();\r\n }\r\n };\r\n\r\n ContinuousView.prototype._buildView = function () {\r\n this.group.removeAll();\r\n var visualMapModel = this.visualMapModel;\r\n var thisGroup = this.group;\r\n this._orient = visualMapModel.get('orient');\r\n this._useHandle = visualMapModel.get('calculable');\r\n\r\n this._resetInterval();\r\n\r\n this._renderBar(thisGroup);\r\n\r\n var dataRangeText = visualMapModel.get('text');\r\n\r\n this._renderEndsText(thisGroup, dataRangeText, 0);\r\n\r\n this._renderEndsText(thisGroup, dataRangeText, 1); // Do this for background size calculation.\r\n\r\n\r\n this._updateView(true); // After updating view, inner shapes is built completely,\r\n // and then background can be rendered.\r\n\r\n\r\n this.renderBackground(thisGroup); // Real update view\r\n\r\n this._updateView();\r\n\r\n this._enableHoverLinkToSeries();\r\n\r\n this._enableHoverLinkFromSeries();\r\n\r\n this.positionGroup(thisGroup);\r\n };\r\n\r\n ContinuousView.prototype._renderEndsText = function (group, dataRangeText, endsIndex) {\r\n if (!dataRangeText) {\r\n return;\r\n } // Compatible with ec2, text[0] map to high value, text[1] map low value.\r\n\r\n\r\n var text = dataRangeText[1 - endsIndex];\r\n text = text != null ? text + '' : '';\r\n var visualMapModel = this.visualMapModel;\r\n var textGap = visualMapModel.get('textGap');\r\n var itemSize = visualMapModel.itemSize;\r\n var barGroup = this._shapes.mainGroup;\r\n\r\n var position = this._applyTransform([itemSize[0] / 2, endsIndex === 0 ? -textGap : itemSize[1] + textGap], barGroup);\r\n\r\n var align = this._applyTransform(endsIndex === 0 ? 'bottom' : 'top', barGroup);\r\n\r\n var orient = this._orient;\r\n var textStyleModel = this.visualMapModel.textStyleModel;\r\n this.group.add(new graphic.Text({\r\n style: createTextStyle(textStyleModel, {\r\n x: position[0],\r\n y: position[1],\r\n verticalAlign: orient === 'horizontal' ? 'middle' : align,\r\n align: orient === 'horizontal' ? align : 'center',\r\n text: text\r\n })\r\n }));\r\n };\r\n\r\n ContinuousView.prototype._renderBar = function (targetGroup) {\r\n var visualMapModel = this.visualMapModel;\r\n var shapes = this._shapes;\r\n var itemSize = visualMapModel.itemSize;\r\n var orient = this._orient;\r\n var useHandle = this._useHandle;\r\n var itemAlign = helper.getItemAlign(visualMapModel, this.api, itemSize);\r\n\r\n var mainGroup = shapes.mainGroup = this._createBarGroup(itemAlign);\r\n\r\n var gradientBarGroup = new graphic.Group();\r\n mainGroup.add(gradientBarGroup); // Bar\r\n\r\n gradientBarGroup.add(shapes.outOfRange = createPolygon());\r\n gradientBarGroup.add(shapes.inRange = createPolygon(null, useHandle ? getCursor(this._orient) : null, zrUtil.bind(this._dragHandle, this, 'all', false), zrUtil.bind(this._dragHandle, this, 'all', true))); // A border radius clip.\r\n\r\n gradientBarGroup.setClipPath(new graphic.Rect({\r\n shape: {\r\n x: 0,\r\n y: 0,\r\n width: itemSize[0],\r\n height: itemSize[1],\r\n r: 3\r\n }\r\n }));\r\n var textRect = visualMapModel.textStyleModel.getTextRect('国');\r\n var textSize = mathMax(textRect.width, textRect.height); // Handle\r\n\r\n if (useHandle) {\r\n shapes.handleThumbs = [];\r\n shapes.handleLabels = [];\r\n shapes.handleLabelPoints = [];\r\n\r\n this._createHandle(visualMapModel, mainGroup, 0, itemSize, textSize, orient);\r\n\r\n this._createHandle(visualMapModel, mainGroup, 1, itemSize, textSize, orient);\r\n }\r\n\r\n this._createIndicator(visualMapModel, mainGroup, itemSize, textSize, orient);\r\n\r\n targetGroup.add(mainGroup);\r\n };\r\n\r\n ContinuousView.prototype._createHandle = function (visualMapModel, mainGroup, handleIndex, itemSize, textSize, orient) {\r\n var onDrift = zrUtil.bind(this._dragHandle, this, handleIndex, false);\r\n var onDragEnd = zrUtil.bind(this._dragHandle, this, handleIndex, true);\r\n var handleSize = parsePercent(visualMapModel.get('handleSize'), itemSize[0]);\r\n var handleThumb = createSymbol(visualMapModel.get('handleIcon'), -handleSize / 2, -handleSize / 2, handleSize, handleSize, null, true);\r\n var cursor = getCursor(this._orient);\r\n handleThumb.attr({\r\n cursor: cursor,\r\n draggable: true,\r\n drift: onDrift,\r\n ondragend: onDragEnd,\r\n onmousemove: function (e) {\r\n eventTool.stop(e.event);\r\n }\r\n });\r\n handleThumb.x = itemSize[0] / 2;\r\n handleThumb.useStyle(visualMapModel.getModel('handleStyle').getItemStyle());\r\n handleThumb.setStyle({\r\n strokeNoScale: true,\r\n strokeFirst: true\r\n });\r\n handleThumb.style.lineWidth *= 2;\r\n handleThumb.ensureState('emphasis').style = visualMapModel.getModel(['emphasis', 'handleStyle']).getItemStyle();\r\n setAsHighDownDispatcher(handleThumb, true);\r\n mainGroup.add(handleThumb); // Text is always horizontal layout but should not be effected by\r\n // transform (orient/inverse). So label is built separately but not\r\n // use zrender/graphic/helper/RectText, and is located based on view\r\n // group (according to handleLabelPoint) but not barGroup.\r\n\r\n var textStyleModel = this.visualMapModel.textStyleModel;\r\n var handleLabel = new graphic.Text({\r\n cursor: cursor,\r\n draggable: true,\r\n drift: onDrift,\r\n onmousemove: function (e) {\r\n // Fot mobile devicem, prevent screen slider on the button.\r\n eventTool.stop(e.event);\r\n },\r\n ondragend: onDragEnd,\r\n style: createTextStyle(textStyleModel, {\r\n x: 0,\r\n y: 0,\r\n text: ''\r\n })\r\n });\r\n handleLabel.ensureState('blur').style = {\r\n opacity: 0.1\r\n };\r\n handleLabel.stateTransition = {\r\n duration: 200\r\n };\r\n this.group.add(handleLabel);\r\n var handleLabelPoint = [handleSize, 0];\r\n var shapes = this._shapes;\r\n shapes.handleThumbs[handleIndex] = handleThumb;\r\n shapes.handleLabelPoints[handleIndex] = handleLabelPoint;\r\n shapes.handleLabels[handleIndex] = handleLabel;\r\n };\r\n\r\n ContinuousView.prototype._createIndicator = function (visualMapModel, mainGroup, itemSize, textSize, orient) {\r\n var scale = parsePercent(visualMapModel.get('indicatorSize'), itemSize[0]);\r\n var indicator = createSymbol(visualMapModel.get('indicatorIcon'), -scale / 2, -scale / 2, scale, scale, null, true);\r\n indicator.attr({\r\n cursor: 'move',\r\n invisible: true,\r\n silent: true,\r\n x: itemSize[0] / 2\r\n });\r\n var indicatorStyle = visualMapModel.getModel('indicatorStyle').getItemStyle();\r\n\r\n if (indicator instanceof ZRImage) {\r\n var pathStyle = indicator.style;\r\n indicator.useStyle(zrUtil.extend({\r\n // TODO other properties like x, y ?\r\n image: pathStyle.image,\r\n x: pathStyle.x,\r\n y: pathStyle.y,\r\n width: pathStyle.width,\r\n height: pathStyle.height\r\n }, indicatorStyle));\r\n } else {\r\n indicator.useStyle(indicatorStyle);\r\n }\r\n\r\n mainGroup.add(indicator);\r\n var textStyleModel = this.visualMapModel.textStyleModel;\r\n var indicatorLabel = new graphic.Text({\r\n silent: true,\r\n invisible: true,\r\n style: createTextStyle(textStyleModel, {\r\n x: 0,\r\n y: 0,\r\n text: ''\r\n })\r\n });\r\n this.group.add(indicatorLabel);\r\n var indicatorLabelPoint = [(orient === 'horizontal' ? textSize / 2 : HOVER_LINK_OUT) + itemSize[0] / 2, 0];\r\n var shapes = this._shapes;\r\n shapes.indicator = indicator;\r\n shapes.indicatorLabel = indicatorLabel;\r\n shapes.indicatorLabelPoint = indicatorLabelPoint;\r\n this._firstShowIndicator = true;\r\n };\r\n\r\n ContinuousView.prototype._dragHandle = function (handleIndex, isEnd, // dx is event from ondragend if isEnd is true. It's not used\r\n dx, dy) {\r\n if (!this._useHandle) {\r\n return;\r\n }\r\n\r\n this._dragging = !isEnd;\r\n\r\n if (!isEnd) {\r\n // Transform dx, dy to bar coordination.\r\n var vertex = this._applyTransform([dx, dy], this._shapes.mainGroup, true);\r\n\r\n this._updateInterval(handleIndex, vertex[1]);\r\n\r\n this._hideIndicator(); // Considering realtime, update view should be executed\r\n // before dispatch action.\r\n\r\n\r\n this._updateView();\r\n } // dragEnd do not dispatch action when realtime.\r\n\r\n\r\n if (isEnd === !this.visualMapModel.get('realtime')) {\r\n // jshint ignore:line\r\n this.api.dispatchAction({\r\n type: 'selectDataRange',\r\n from: this.uid,\r\n visualMapId: this.visualMapModel.id,\r\n selected: this._dataInterval.slice()\r\n });\r\n }\r\n\r\n if (isEnd) {\r\n !this._hovering && this._clearHoverLinkToSeries();\r\n } else if (useHoverLinkOnHandle(this.visualMapModel)) {\r\n this._doHoverLinkToSeries(this._handleEnds[handleIndex], false);\r\n }\r\n };\r\n\r\n ContinuousView.prototype._resetInterval = function () {\r\n var visualMapModel = this.visualMapModel;\r\n var dataInterval = this._dataInterval = visualMapModel.getSelected();\r\n var dataExtent = visualMapModel.getExtent();\r\n var sizeExtent = [0, visualMapModel.itemSize[1]];\r\n this._handleEnds = [linearMap(dataInterval[0], dataExtent, sizeExtent, true), linearMap(dataInterval[1], dataExtent, sizeExtent, true)];\r\n };\r\n /**\r\n * @private\r\n * @param {(number|string)} handleIndex 0 or 1 or 'all'\r\n * @param {number} dx\r\n * @param {number} dy\r\n */\r\n\r\n\r\n ContinuousView.prototype._updateInterval = function (handleIndex, delta) {\r\n delta = delta || 0;\r\n var visualMapModel = this.visualMapModel;\r\n var handleEnds = this._handleEnds;\r\n var sizeExtent = [0, visualMapModel.itemSize[1]];\r\n sliderMove(delta, handleEnds, sizeExtent, handleIndex, // cross is forbiden\r\n 0);\r\n var dataExtent = visualMapModel.getExtent(); // Update data interval.\r\n\r\n this._dataInterval = [linearMap(handleEnds[0], sizeExtent, dataExtent, true), linearMap(handleEnds[1], sizeExtent, dataExtent, true)];\r\n };\r\n\r\n ContinuousView.prototype._updateView = function (forSketch) {\r\n var visualMapModel = this.visualMapModel;\r\n var dataExtent = visualMapModel.getExtent();\r\n var shapes = this._shapes;\r\n var outOfRangeHandleEnds = [0, visualMapModel.itemSize[1]];\r\n var inRangeHandleEnds = forSketch ? outOfRangeHandleEnds : this._handleEnds;\r\n\r\n var visualInRange = this._createBarVisual(this._dataInterval, dataExtent, inRangeHandleEnds, 'inRange');\r\n\r\n var visualOutOfRange = this._createBarVisual(dataExtent, dataExtent, outOfRangeHandleEnds, 'outOfRange');\r\n\r\n shapes.inRange.setStyle({\r\n fill: visualInRange.barColor // opacity: visualInRange.opacity\r\n\r\n }).setShape('points', visualInRange.barPoints);\r\n shapes.outOfRange.setStyle({\r\n fill: visualOutOfRange.barColor // opacity: visualOutOfRange.opacity\r\n\r\n }).setShape('points', visualOutOfRange.barPoints);\r\n\r\n this._updateHandle(inRangeHandleEnds, visualInRange);\r\n };\r\n\r\n ContinuousView.prototype._createBarVisual = function (dataInterval, dataExtent, handleEnds, forceState) {\r\n var opts = {\r\n forceState: forceState,\r\n convertOpacityToAlpha: true\r\n };\r\n\r\n var colorStops = this._makeColorGradient(dataInterval, opts);\r\n\r\n var symbolSizes = [this.getControllerVisual(dataInterval[0], 'symbolSize', opts), this.getControllerVisual(dataInterval[1], 'symbolSize', opts)];\r\n\r\n var barPoints = this._createBarPoints(handleEnds, symbolSizes);\r\n\r\n return {\r\n barColor: new LinearGradient(0, 0, 0, 1, colorStops),\r\n barPoints: barPoints,\r\n handlesColor: [colorStops[0].color, colorStops[colorStops.length - 1].color]\r\n };\r\n };\r\n\r\n ContinuousView.prototype._makeColorGradient = function (dataInterval, opts) {\r\n // Considering colorHue, which is not linear, so we have to sample\r\n // to calculate gradient color stops, but not only caculate head\r\n // and tail.\r\n var sampleNumber = 100; // Arbitrary value.\r\n\r\n var colorStops = [];\r\n var step = (dataInterval[1] - dataInterval[0]) / sampleNumber;\r\n colorStops.push({\r\n color: this.getControllerVisual(dataInterval[0], 'color', opts),\r\n offset: 0\r\n });\r\n\r\n for (var i = 1; i < sampleNumber; i++) {\r\n var currValue = dataInterval[0] + step * i;\r\n\r\n if (currValue > dataInterval[1]) {\r\n break;\r\n }\r\n\r\n colorStops.push({\r\n color: this.getControllerVisual(currValue, 'color', opts),\r\n offset: i / sampleNumber\r\n });\r\n }\r\n\r\n colorStops.push({\r\n color: this.getControllerVisual(dataInterval[1], 'color', opts),\r\n offset: 1\r\n });\r\n return colorStops;\r\n };\r\n\r\n ContinuousView.prototype._createBarPoints = function (handleEnds, symbolSizes) {\r\n var itemSize = this.visualMapModel.itemSize;\r\n return [[itemSize[0] - symbolSizes[0], handleEnds[0]], [itemSize[0], handleEnds[0]], [itemSize[0], handleEnds[1]], [itemSize[0] - symbolSizes[1], handleEnds[1]]];\r\n };\r\n\r\n ContinuousView.prototype._createBarGroup = function (itemAlign) {\r\n var orient = this._orient;\r\n var inverse = this.visualMapModel.get('inverse');\r\n return new graphic.Group(orient === 'horizontal' && !inverse ? {\r\n scaleX: itemAlign === 'bottom' ? 1 : -1,\r\n rotation: Math.PI / 2\r\n } : orient === 'horizontal' && inverse ? {\r\n scaleX: itemAlign === 'bottom' ? -1 : 1,\r\n rotation: -Math.PI / 2\r\n } : orient === 'vertical' && !inverse ? {\r\n scaleX: itemAlign === 'left' ? 1 : -1,\r\n scaleY: -1\r\n } : {\r\n scaleX: itemAlign === 'left' ? 1 : -1\r\n });\r\n };\r\n\r\n ContinuousView.prototype._updateHandle = function (handleEnds, visualInRange) {\r\n if (!this._useHandle) {\r\n return;\r\n }\r\n\r\n var shapes = this._shapes;\r\n var visualMapModel = this.visualMapModel;\r\n var handleThumbs = shapes.handleThumbs;\r\n var handleLabels = shapes.handleLabels;\r\n var itemSize = visualMapModel.itemSize;\r\n var dataExtent = visualMapModel.getExtent();\r\n each([0, 1], function (handleIndex) {\r\n var handleThumb = handleThumbs[handleIndex];\r\n handleThumb.setStyle('fill', visualInRange.handlesColor[handleIndex]);\r\n handleThumb.y = handleEnds[handleIndex];\r\n var val = linearMap(handleEnds[handleIndex], [0, itemSize[1]], dataExtent, true);\r\n var symbolSize = this.getControllerVisual(val, 'symbolSize');\r\n handleThumb.scaleX = handleThumb.scaleY = symbolSize / itemSize[0];\r\n handleThumb.x = itemSize[0] - symbolSize / 2; // Update handle label position.\r\n\r\n var textPoint = graphic.applyTransform(shapes.handleLabelPoints[handleIndex], graphic.getTransform(handleThumb, this.group));\r\n handleLabels[handleIndex].setStyle({\r\n x: textPoint[0],\r\n y: textPoint[1],\r\n text: visualMapModel.formatValueText(this._dataInterval[handleIndex]),\r\n verticalAlign: 'middle',\r\n align: this._orient === 'vertical' ? this._applyTransform('left', shapes.mainGroup) : 'center'\r\n });\r\n }, this);\r\n };\r\n\r\n ContinuousView.prototype._showIndicator = function (cursorValue, textValue, rangeSymbol, halfHoverLinkSize) {\r\n var visualMapModel = this.visualMapModel;\r\n var dataExtent = visualMapModel.getExtent();\r\n var itemSize = visualMapModel.itemSize;\r\n var sizeExtent = [0, itemSize[1]];\r\n var shapes = this._shapes;\r\n var indicator = shapes.indicator;\r\n\r\n if (!indicator) {\r\n return;\r\n }\r\n\r\n indicator.attr('invisible', false);\r\n var opts = {\r\n convertOpacityToAlpha: true\r\n };\r\n var color = this.getControllerVisual(cursorValue, 'color', opts);\r\n var symbolSize = this.getControllerVisual(cursorValue, 'symbolSize');\r\n var y = linearMap(cursorValue, dataExtent, sizeExtent, true);\r\n var x = itemSize[0] - symbolSize / 2;\r\n var oldIndicatorPos = {\r\n x: indicator.x,\r\n y: indicator.y\r\n }; // Update handle label position.\r\n\r\n indicator.y = y;\r\n indicator.x = x;\r\n var textPoint = graphic.applyTransform(shapes.indicatorLabelPoint, graphic.getTransform(indicator, this.group));\r\n var indicatorLabel = shapes.indicatorLabel;\r\n indicatorLabel.attr('invisible', false);\r\n\r\n var align = this._applyTransform('left', shapes.mainGroup);\r\n\r\n var orient = this._orient;\r\n var isHorizontal = orient === 'horizontal';\r\n indicatorLabel.setStyle({\r\n text: (rangeSymbol ? rangeSymbol : '') + visualMapModel.formatValueText(textValue),\r\n verticalAlign: isHorizontal ? align : 'middle',\r\n align: isHorizontal ? 'center' : align\r\n });\r\n var indicatorNewProps = {\r\n x: x,\r\n y: y,\r\n style: {\r\n fill: color\r\n }\r\n };\r\n var labelNewProps = {\r\n style: {\r\n x: textPoint[0],\r\n y: textPoint[1]\r\n }\r\n };\r\n\r\n if (visualMapModel.ecModel.isAnimationEnabled() && !this._firstShowIndicator) {\r\n var animationCfg = {\r\n duration: 100,\r\n easing: 'cubicInOut',\r\n additive: true\r\n };\r\n indicator.x = oldIndicatorPos.x;\r\n indicator.y = oldIndicatorPos.y;\r\n indicator.animateTo(indicatorNewProps, animationCfg);\r\n indicatorLabel.animateTo(labelNewProps, animationCfg);\r\n } else {\r\n indicator.attr(indicatorNewProps);\r\n indicatorLabel.attr(labelNewProps);\r\n }\r\n\r\n this._firstShowIndicator = false;\r\n var handleLabels = this._shapes.handleLabels;\r\n\r\n if (handleLabels) {\r\n for (var i = 0; i < handleLabels.length; i++) {\r\n // Fade out handle labels.\r\n // NOTE: Must use api enter/leave on emphasis/blur/select state. Or the global states manager will change it.\r\n this._api.enterBlur(handleLabels[i]);\r\n }\r\n }\r\n };\r\n\r\n ContinuousView.prototype._enableHoverLinkToSeries = function () {\r\n var self = this;\r\n\r\n this._shapes.mainGroup.on('mousemove', function (e) {\r\n self._hovering = true;\r\n\r\n if (!self._dragging) {\r\n var itemSize = self.visualMapModel.itemSize;\r\n\r\n var pos = self._applyTransform([e.offsetX, e.offsetY], self._shapes.mainGroup, true, true); // For hover link show when hover handle, which might be\r\n // below or upper than sizeExtent.\r\n\r\n\r\n pos[1] = mathMin(mathMax(0, pos[1]), itemSize[1]);\r\n\r\n self._doHoverLinkToSeries(pos[1], 0 <= pos[0] && pos[0] <= itemSize[0]);\r\n }\r\n }).on('mouseout', function () {\r\n // When mouse is out of handle, hoverLink still need\r\n // to be displayed when realtime is set as false.\r\n self._hovering = false;\r\n !self._dragging && self._clearHoverLinkToSeries();\r\n });\r\n };\r\n\r\n ContinuousView.prototype._enableHoverLinkFromSeries = function () {\r\n var zr = this.api.getZr();\r\n\r\n if (this.visualMapModel.option.hoverLink) {\r\n zr.on('mouseover', this._hoverLinkFromSeriesMouseOver, this);\r\n zr.on('mouseout', this._hideIndicator, this);\r\n } else {\r\n this._clearHoverLinkFromSeries();\r\n }\r\n };\r\n\r\n ContinuousView.prototype._doHoverLinkToSeries = function (cursorPos, hoverOnBar) {\r\n var visualMapModel = this.visualMapModel;\r\n var itemSize = visualMapModel.itemSize;\r\n\r\n if (!visualMapModel.option.hoverLink) {\r\n return;\r\n }\r\n\r\n var sizeExtent = [0, itemSize[1]];\r\n var dataExtent = visualMapModel.getExtent(); // For hover link show when hover handle, which might be below or upper than sizeExtent.\r\n\r\n cursorPos = mathMin(mathMax(sizeExtent[0], cursorPos), sizeExtent[1]);\r\n var halfHoverLinkSize = getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent);\r\n var hoverRange = [cursorPos - halfHoverLinkSize, cursorPos + halfHoverLinkSize];\r\n var cursorValue = linearMap(cursorPos, sizeExtent, dataExtent, true);\r\n var valueRange = [linearMap(hoverRange[0], sizeExtent, dataExtent, true), linearMap(hoverRange[1], sizeExtent, dataExtent, true)]; // Consider data range is out of visualMap range, see test/visualMap-continuous.html,\r\n // where china and india has very large population.\r\n\r\n hoverRange[0] < sizeExtent[0] && (valueRange[0] = -Infinity);\r\n hoverRange[1] > sizeExtent[1] && (valueRange[1] = Infinity); // Do not show indicator when mouse is over handle,\r\n // otherwise labels overlap, especially when dragging.\r\n\r\n if (hoverOnBar) {\r\n if (valueRange[0] === -Infinity) {\r\n this._showIndicator(cursorValue, valueRange[1], '< ', halfHoverLinkSize);\r\n } else if (valueRange[1] === Infinity) {\r\n this._showIndicator(cursorValue, valueRange[0], '> ', halfHoverLinkSize);\r\n } else {\r\n this._showIndicator(cursorValue, cursorValue, '≈ ', halfHoverLinkSize);\r\n }\r\n } // When realtime is set as false, handles, which are in barGroup,\r\n // also trigger hoverLink, which help user to realize where they\r\n // focus on when dragging. (see test/heatmap-large.html)\r\n // When realtime is set as true, highlight will not show when hover\r\n // handle, because the label on handle, which displays a exact value\r\n // but not range, might mislead users.\r\n\r\n\r\n var oldBatch = this._hoverLinkDataIndices;\r\n var newBatch = [];\r\n\r\n if (hoverOnBar || useHoverLinkOnHandle(visualMapModel)) {\r\n newBatch = this._hoverLinkDataIndices = visualMapModel.findTargetDataIndices(valueRange);\r\n }\r\n\r\n var resultBatches = modelUtil.compressBatches(oldBatch, newBatch);\r\n\r\n this._dispatchHighDown('downplay', helper.makeHighDownBatch(resultBatches[0], visualMapModel));\r\n\r\n this._dispatchHighDown('highlight', helper.makeHighDownBatch(resultBatches[1], visualMapModel));\r\n };\r\n\r\n ContinuousView.prototype._hoverLinkFromSeriesMouseOver = function (e) {\r\n var el = e.target;\r\n var visualMapModel = this.visualMapModel;\r\n\r\n if (!el || getECData(el).dataIndex == null) {\r\n return;\r\n }\r\n\r\n var ecData = getECData(el);\r\n var dataModel = this.ecModel.getSeriesByIndex(ecData.seriesIndex);\r\n\r\n if (!visualMapModel.isTargetSeries(dataModel)) {\r\n return;\r\n }\r\n\r\n var data = dataModel.getData(ecData.dataType);\r\n var value = data.getStore().get(visualMapModel.getDataDimensionIndex(data), ecData.dataIndex);\r\n\r\n if (!isNaN(value)) {\r\n this._showIndicator(value, value);\r\n }\r\n };\r\n\r\n ContinuousView.prototype._hideIndicator = function () {\r\n var shapes = this._shapes;\r\n shapes.indicator && shapes.indicator.attr('invisible', true);\r\n shapes.indicatorLabel && shapes.indicatorLabel.attr('invisible', true);\r\n var handleLabels = this._shapes.handleLabels;\r\n\r\n if (handleLabels) {\r\n for (var i = 0; i < handleLabels.length; i++) {\r\n // Fade out handle labels.\r\n // NOTE: Must use api enter/leave on emphasis/blur/select state. Or the global states manager will change it.\r\n this._api.leaveBlur(handleLabels[i]);\r\n }\r\n }\r\n };\r\n\r\n ContinuousView.prototype._clearHoverLinkToSeries = function () {\r\n this._hideIndicator();\r\n\r\n var indices = this._hoverLinkDataIndices;\r\n\r\n this._dispatchHighDown('downplay', helper.makeHighDownBatch(indices, this.visualMapModel));\r\n\r\n indices.length = 0;\r\n };\r\n\r\n ContinuousView.prototype._clearHoverLinkFromSeries = function () {\r\n this._hideIndicator();\r\n\r\n var zr = this.api.getZr();\r\n zr.off('mouseover', this._hoverLinkFromSeriesMouseOver);\r\n zr.off('mouseout', this._hideIndicator);\r\n };\r\n\r\n ContinuousView.prototype._applyTransform = function (vertex, element, inverse, global) {\r\n var transform = graphic.getTransform(element, global ? null : this.group);\r\n return zrUtil.isArray(vertex) ? graphic.applyTransform(vertex, transform, inverse) : graphic.transformDirection(vertex, transform, inverse);\r\n }; // TODO: TYPE more specified payload types.\r\n\r\n\r\n ContinuousView.prototype._dispatchHighDown = function (type, batch) {\r\n batch && batch.length && this.api.dispatchAction({\r\n type: type,\r\n batch: batch\r\n });\r\n };\r\n /**\r\n * @override\r\n */\r\n\r\n\r\n ContinuousView.prototype.dispose = function () {\r\n this._clearHoverLinkFromSeries();\r\n\r\n this._clearHoverLinkToSeries();\r\n };\r\n /**\r\n * @override\r\n */\r\n\r\n\r\n ContinuousView.prototype.remove = function () {\r\n this._clearHoverLinkFromSeries();\r\n\r\n this._clearHoverLinkToSeries();\r\n };\r\n\r\n ContinuousView.type = 'visualMap.continuous';\r\n return ContinuousView;\r\n}(VisualMapView);\r\n\r\nfunction createPolygon(points, cursor, onDrift, onDragEnd) {\r\n return new graphic.Polygon({\r\n shape: {\r\n points: points\r\n },\r\n draggable: !!onDrift,\r\n cursor: cursor,\r\n drift: onDrift,\r\n onmousemove: function (e) {\r\n // Fot mobile devicem, prevent screen slider on the button.\r\n eventTool.stop(e.event);\r\n },\r\n ondragend: onDragEnd\r\n });\r\n}\r\n\r\nfunction getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent) {\r\n var halfHoverLinkSize = HOVER_LINK_SIZE / 2;\r\n var hoverLinkDataSize = visualMapModel.get('hoverLinkDataSize');\r\n\r\n if (hoverLinkDataSize) {\r\n halfHoverLinkSize = linearMap(hoverLinkDataSize, dataExtent, sizeExtent, true) / 2;\r\n }\r\n\r\n return halfHoverLinkSize;\r\n}\r\n\r\nfunction useHoverLinkOnHandle(visualMapModel) {\r\n var hoverLinkOnHandle = visualMapModel.get('hoverLinkOnHandle');\r\n return !!(hoverLinkOnHandle == null ? visualMapModel.get('realtime') : hoverLinkOnHandle);\r\n}\r\n\r\nfunction getCursor(orient) {\r\n return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\r\n}\r\n\r\nexport default ContinuousView;"]},"metadata":{},"sourceType":"module"}