1 line
101 KiB
JSON
1 line
101 KiB
JSON
{"ast":null,"code":"import \"core-js/modules/es.array.fill.js\";\nimport \"core-js/modules/es.array.slice.js\";\nimport \"core-js/modules/es.number.to-fixed.js\";\nimport \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.replace.js\";\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport { bind, each, isFunction, isString, indexOf } from 'zrender/lib/core/util.js';\nimport * as eventTool from 'zrender/lib/core/event.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as throttle from '../../util/throttle.js';\nimport DataZoomView from './DataZoomView.js';\nimport { linearMap, asc, parsePercent } from '../../util/number.js';\nimport * as layout from '../../util/layout.js';\nimport sliderMove from '../helper/sliderMove.js';\nimport { getAxisMainType, collectReferCoordSysModelInfo } from './helper.js';\nimport { enableHoverEmphasis } from '../../util/states.js';\nimport { createSymbol, symbolBuildProxies } from '../../util/symbol.js';\nimport { deprecateLog } from '../../util/log.js';\nimport { createTextStyle } from '../../label/labelStyle.js';\nvar Rect = graphic.Rect; // Constants\n\nvar DEFAULT_LOCATION_EDGE_GAP = 7;\nvar DEFAULT_FRAME_BORDER_WIDTH = 1;\nvar DEFAULT_FILLER_SIZE = 30;\nvar DEFAULT_MOVE_HANDLE_SIZE = 7;\nvar HORIZONTAL = 'horizontal';\nvar VERTICAL = 'vertical';\nvar LABEL_GAP = 5;\nvar SHOW_DATA_SHADOW_SERIES_TYPE = ['line', 'bar', 'candlestick', 'scatter'];\nvar REALTIME_ANIMATION_CONFIG = {\n easing: 'cubicOut',\n duration: 100,\n delay: 0\n};\n\nvar SliderZoomView =\n/** @class */\nfunction (_super) {\n __extends(SliderZoomView, _super);\n\n function SliderZoomView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = SliderZoomView.type;\n _this._displayables = {};\n return _this;\n }\n\n SliderZoomView.prototype.init = function (ecModel, api) {\n this.api = api; // A unique handler for each dataZoom component\n\n this._onBrush = bind(this._onBrush, this);\n this._onBrushEnd = bind(this._onBrushEnd, this);\n };\n\n SliderZoomView.prototype.render = function (dataZoomModel, ecModel, api, payload) {\n _super.prototype.render.apply(this, arguments);\n\n throttle.createOrUpdate(this, '_dispatchZoomAction', dataZoomModel.get('throttle'), 'fixRate');\n this._orient = dataZoomModel.getOrient();\n\n if (dataZoomModel.get('show') === false) {\n this.group.removeAll();\n return;\n }\n\n if (dataZoomModel.noTarget()) {\n this._clear();\n\n this.group.removeAll();\n return;\n } // Notice: this._resetInterval() should not be executed when payload.type\n // is 'dataZoom', origin this._range should be maintained, otherwise 'pan'\n // or 'zoom' info will be missed because of 'throttle' of this.dispatchAction,\n\n\n if (!payload || payload.type !== 'dataZoom' || payload.from !== this.uid) {\n this._buildView();\n }\n\n this._updateView();\n };\n\n SliderZoomView.prototype.dispose = function () {\n this._clear();\n\n _super.prototype.dispose.apply(this, arguments);\n };\n\n SliderZoomView.prototype._clear = function () {\n throttle.clear(this, '_dispatchZoomAction');\n var zr = this.api.getZr();\n zr.off('mousemove', this._onBrush);\n zr.off('mouseup', this._onBrushEnd);\n };\n\n SliderZoomView.prototype._buildView = function () {\n var thisGroup = this.group;\n thisGroup.removeAll();\n this._brushing = false;\n this._displayables.brushRect = null;\n\n this._resetLocation();\n\n this._resetInterval();\n\n var barGroup = this._displayables.sliderGroup = new graphic.Group();\n\n this._renderBackground();\n\n this._renderHandle();\n\n this._renderDataShadow();\n\n thisGroup.add(barGroup);\n\n this._positionGroup();\n };\n\n SliderZoomView.prototype._resetLocation = function () {\n var dataZoomModel = this.dataZoomModel;\n var api = this.api;\n var showMoveHandle = dataZoomModel.get('brushSelect');\n var moveHandleSize = showMoveHandle ? DEFAULT_MOVE_HANDLE_SIZE : 0; // If some of x/y/width/height are not specified,\n // auto-adapt according to target grid.\n\n var coordRect = this._findCoordRect();\n\n var ecSize = {\n width: api.getWidth(),\n height: api.getHeight()\n }; // Default align by coordinate system rect.\n\n var positionInfo = this._orient === HORIZONTAL ? {\n // Why using 'right', because right should be used in vertical,\n // and it is better to be consistent for dealing with position param merge.\n right: ecSize.width - coordRect.x - coordRect.width,\n top: ecSize.height - DEFAULT_FILLER_SIZE - DEFAULT_LOCATION_EDGE_GAP - moveHandleSize,\n width: coordRect.width,\n height: DEFAULT_FILLER_SIZE\n } : {\n right: DEFAULT_LOCATION_EDGE_GAP,\n top: coordRect.y,\n width: DEFAULT_FILLER_SIZE,\n height: coordRect.height\n }; // Do not write back to option and replace value 'ph', because\n // the 'ph' value should be recalculated when resize.\n\n var layoutParams = layout.getLayoutParams(dataZoomModel.option); // Replace the placeholder value.\n\n each(['right', 'top', 'width', 'height'], function (name) {\n if (layoutParams[name] === 'ph') {\n layoutParams[name] = positionInfo[name];\n }\n });\n var layoutRect = layout.getLayoutRect(layoutParams, ecSize);\n this._location = {\n x: layoutRect.x,\n y: layoutRect.y\n };\n this._size = [layoutRect.width, layoutRect.height];\n this._orient === VERTICAL && this._size.reverse();\n };\n\n SliderZoomView.prototype._positionGroup = function () {\n var thisGroup = this.group;\n var location = this._location;\n var orient = this._orient; // Just use the first axis to determine mapping.\n\n var targetAxisModel = this.dataZoomModel.getFirstTargetAxisModel();\n var inverse = targetAxisModel && targetAxisModel.get('inverse');\n var sliderGroup = this._displayables.sliderGroup;\n var otherAxisInverse = (this._dataShadowInfo || {}).otherAxisInverse; // Transform barGroup.\n\n sliderGroup.attr(orient === HORIZONTAL && !inverse ? {\n scaleY: otherAxisInverse ? 1 : -1,\n scaleX: 1\n } : orient === HORIZONTAL && inverse ? {\n scaleY: otherAxisInverse ? 1 : -1,\n scaleX: -1\n } : orient === VERTICAL && !inverse ? {\n scaleY: otherAxisInverse ? -1 : 1,\n scaleX: 1,\n rotation: Math.PI / 2\n } // Don't use Math.PI, considering shadow direction.\n : {\n scaleY: otherAxisInverse ? -1 : 1,\n scaleX: -1,\n rotation: Math.PI / 2\n }); // Position barGroup\n\n var rect = thisGroup.getBoundingRect([sliderGroup]);\n thisGroup.x = location.x - rect.x;\n thisGroup.y = location.y - rect.y;\n thisGroup.markRedraw();\n };\n\n SliderZoomView.prototype._getViewExtent = function () {\n return [0, this._size[0]];\n };\n\n SliderZoomView.prototype._renderBackground = function () {\n var dataZoomModel = this.dataZoomModel;\n var size = this._size;\n var barGroup = this._displayables.sliderGroup;\n var brushSelect = dataZoomModel.get('brushSelect');\n barGroup.add(new Rect({\n silent: true,\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1]\n },\n style: {\n fill: dataZoomModel.get('backgroundColor')\n },\n z2: -40\n })); // Click panel, over shadow, below handles.\n\n var clickPanel = new Rect({\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1]\n },\n style: {\n fill: 'transparent'\n },\n z2: 0,\n onclick: bind(this._onClickPanel, this)\n });\n var zr = this.api.getZr();\n\n if (brushSelect) {\n clickPanel.on('mousedown', this._onBrushStart, this);\n clickPanel.cursor = 'crosshair';\n zr.on('mousemove', this._onBrush);\n zr.on('mouseup', this._onBrushEnd);\n } else {\n zr.off('mousemove', this._onBrush);\n zr.off('mouseup', this._onBrushEnd);\n }\n\n barGroup.add(clickPanel);\n };\n\n SliderZoomView.prototype._renderDataShadow = function () {\n var info = this._dataShadowInfo = this._prepareDataShadowInfo();\n\n this._displayables.dataShadowSegs = [];\n\n if (!info) {\n return;\n }\n\n var size = this._size;\n var oldSize = this._shadowSize || [];\n var seriesModel = info.series;\n var data = seriesModel.getRawData();\n var candlestickDim = seriesModel.getShadowDim && seriesModel.getShadowDim();\n var otherDim = candlestickDim && data.getDimensionInfo(candlestickDim) ? seriesModel.getShadowDim() // @see candlestick\n : info.otherDim;\n\n if (otherDim == null) {\n return;\n }\n\n var polygonPts = this._shadowPolygonPts;\n var polylinePts = this._shadowPolylinePts; // Not re-render if data doesn't change.\n\n if (data !== this._shadowData || otherDim !== this._shadowDim || size[0] !== oldSize[0] || size[1] !== oldSize[1]) {\n var otherDataExtent_1 = data.getDataExtent(otherDim); // Nice extent.\n\n var otherOffset = (otherDataExtent_1[1] - otherDataExtent_1[0]) * 0.3;\n otherDataExtent_1 = [otherDataExtent_1[0] - otherOffset, otherDataExtent_1[1] + otherOffset];\n var otherShadowExtent_1 = [0, size[1]];\n var thisShadowExtent = [0, size[0]];\n var areaPoints_1 = [[size[0], 0], [0, 0]];\n var linePoints_1 = [];\n var step_1 = thisShadowExtent[1] / (data.count() - 1);\n var thisCoord_1 = 0; // Optimize for large data shadow\n\n var stride_1 = Math.round(data.count() / size[0]);\n var lastIsEmpty_1;\n data.each([otherDim], function (value, index) {\n if (stride_1 > 0 && index % stride_1) {\n thisCoord_1 += step_1;\n return;\n } // FIXME\n // Should consider axis.min/axis.max when drawing dataShadow.\n // FIXME\n // 应该使用统一的空判断?还是在list里进行空判断?\n\n\n var isEmpty = value == null || isNaN(value) || value === ''; // See #4235.\n\n var otherCoord = isEmpty ? 0 : linearMap(value, otherDataExtent_1, otherShadowExtent_1, true); // Attempt to draw data shadow precisely when there are empty value.\n\n if (isEmpty && !lastIsEmpty_1 && index) {\n areaPoints_1.push([areaPoints_1[areaPoints_1.length - 1][0], 0]);\n linePoints_1.push([linePoints_1[linePoints_1.length - 1][0], 0]);\n } else if (!isEmpty && lastIsEmpty_1) {\n areaPoints_1.push([thisCoord_1, 0]);\n linePoints_1.push([thisCoord_1, 0]);\n }\n\n areaPoints_1.push([thisCoord_1, otherCoord]);\n linePoints_1.push([thisCoord_1, otherCoord]);\n thisCoord_1 += step_1;\n lastIsEmpty_1 = isEmpty;\n });\n polygonPts = this._shadowPolygonPts = areaPoints_1;\n polylinePts = this._shadowPolylinePts = linePoints_1;\n }\n\n this._shadowData = data;\n this._shadowDim = otherDim;\n this._shadowSize = [size[0], size[1]];\n var dataZoomModel = this.dataZoomModel;\n\n function createDataShadowGroup(isSelectedArea) {\n var model = dataZoomModel.getModel(isSelectedArea ? 'selectedDataBackground' : 'dataBackground');\n var group = new graphic.Group();\n var polygon = new graphic.Polygon({\n shape: {\n points: polygonPts\n },\n segmentIgnoreThreshold: 1,\n style: model.getModel('areaStyle').getAreaStyle(),\n silent: true,\n z2: -20\n });\n var polyline = new graphic.Polyline({\n shape: {\n points: polylinePts\n },\n segmentIgnoreThreshold: 1,\n style: model.getModel('lineStyle').getLineStyle(),\n silent: true,\n z2: -19\n });\n group.add(polygon);\n group.add(polyline);\n return group;\n } // let dataBackgroundModel = dataZoomModel.getModel('dataBackground');\n\n\n for (var i = 0; i < 3; i++) {\n var group = createDataShadowGroup(i === 1);\n\n this._displayables.sliderGroup.add(group);\n\n this._displayables.dataShadowSegs.push(group);\n }\n };\n\n SliderZoomView.prototype._prepareDataShadowInfo = function () {\n var dataZoomModel = this.dataZoomModel;\n var showDataShadow = dataZoomModel.get('showDataShadow');\n\n if (showDataShadow === false) {\n return;\n } // Find a representative series.\n\n\n var result;\n var ecModel = this.ecModel;\n dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\n var seriesModels = dataZoomModel.getAxisProxy(axisDim, axisIndex).getTargetSeriesModels();\n each(seriesModels, function (seriesModel) {\n if (result) {\n return;\n }\n\n if (showDataShadow !== true && indexOf(SHOW_DATA_SHADOW_SERIES_TYPE, seriesModel.get('type')) < 0) {\n return;\n }\n\n var thisAxis = ecModel.getComponent(getAxisMainType(axisDim), axisIndex).axis;\n var otherDim = getOtherDim(axisDim);\n var otherAxisInverse;\n var coordSys = seriesModel.coordinateSystem;\n\n if (otherDim != null && coordSys.getOtherAxis) {\n otherAxisInverse = coordSys.getOtherAxis(thisAxis).inverse;\n }\n\n otherDim = seriesModel.getData().mapDimension(otherDim);\n result = {\n thisAxis: thisAxis,\n series: seriesModel,\n thisDim: axisDim,\n otherDim: otherDim,\n otherAxisInverse: otherAxisInverse\n };\n }, this);\n }, this);\n return result;\n };\n\n SliderZoomView.prototype._renderHandle = function () {\n var thisGroup = this.group;\n var displayables = this._displayables;\n var handles = displayables.handles = [null, null];\n var handleLabels = displayables.handleLabels = [null, null];\n var sliderGroup = this._displayables.sliderGroup;\n var size = this._size;\n var dataZoomModel = this.dataZoomModel;\n var api = this.api;\n var borderRadius = dataZoomModel.get('borderRadius') || 0;\n var brushSelect = dataZoomModel.get('brushSelect');\n var filler = displayables.filler = new Rect({\n silent: brushSelect,\n style: {\n fill: dataZoomModel.get('fillerColor')\n },\n textConfig: {\n position: 'inside'\n }\n });\n sliderGroup.add(filler); // Frame border.\n\n sliderGroup.add(new Rect({\n silent: true,\n subPixelOptimize: true,\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1],\n r: borderRadius\n },\n style: {\n // deprecated option\n stroke: dataZoomModel.get('dataBackgroundColor') || dataZoomModel.get('borderColor'),\n lineWidth: DEFAULT_FRAME_BORDER_WIDTH,\n fill: 'rgba(0,0,0,0)'\n }\n })); // Left and right handle to resize\n\n each([0, 1], function (handleIndex) {\n var iconStr = dataZoomModel.get('handleIcon');\n\n if (!symbolBuildProxies[iconStr] && iconStr.indexOf('path://') < 0 && iconStr.indexOf('image://') < 0) {\n // Compatitable with the old icon parsers. Which can use a path string without path://\n iconStr = 'path://' + iconStr;\n\n if (process.env.NODE_ENV !== 'production') {\n deprecateLog('handleIcon now needs \\'path://\\' prefix when using a path string');\n }\n }\n\n var path = createSymbol(iconStr, -1, 0, 2, 2, null, true);\n path.attr({\n cursor: getCursor(this._orient),\n draggable: true,\n drift: bind(this._onDragMove, this, handleIndex),\n ondragend: bind(this._onDragEnd, this),\n onmouseover: bind(this._showDataInfo, this, true),\n onmouseout: bind(this._showDataInfo, this, false),\n z2: 5\n });\n var bRect = path.getBoundingRect();\n var handleSize = dataZoomModel.get('handleSize');\n this._handleHeight = parsePercent(handleSize, this._size[1]);\n this._handleWidth = bRect.width / bRect.height * this._handleHeight;\n path.setStyle(dataZoomModel.getModel('handleStyle').getItemStyle());\n path.style.strokeNoScale = true;\n path.rectHover = true;\n path.ensureState('emphasis').style = dataZoomModel.getModel(['emphasis', 'handleStyle']).getItemStyle();\n enableHoverEmphasis(path);\n var handleColor = dataZoomModel.get('handleColor'); // deprecated option\n // Compatitable with previous version\n\n if (handleColor != null) {\n path.style.fill = handleColor;\n }\n\n sliderGroup.add(handles[handleIndex] = path);\n var textStyleModel = dataZoomModel.getModel('textStyle');\n thisGroup.add(handleLabels[handleIndex] = new graphic.Text({\n silent: true,\n invisible: true,\n style: createTextStyle(textStyleModel, {\n x: 0,\n y: 0,\n text: '',\n verticalAlign: 'middle',\n align: 'center',\n fill: textStyleModel.getTextColor(),\n font: textStyleModel.getFont()\n }),\n z2: 10\n }));\n }, this); // Handle to move. Only visible when brushSelect is set true.\n\n var actualMoveZone = filler;\n\n if (brushSelect) {\n var moveHandleHeight = parsePercent(dataZoomModel.get('moveHandleSize'), size[1]);\n var moveHandle_1 = displayables.moveHandle = new graphic.Rect({\n style: dataZoomModel.getModel('moveHandleStyle').getItemStyle(),\n silent: true,\n shape: {\n r: [0, 0, 2, 2],\n y: size[1] - 0.5,\n height: moveHandleHeight\n }\n });\n var iconSize = moveHandleHeight * 0.8;\n var moveHandleIcon = displayables.moveHandleIcon = createSymbol(dataZoomModel.get('moveHandleIcon'), -iconSize / 2, -iconSize / 2, iconSize, iconSize, '#fff', true);\n moveHandleIcon.silent = true;\n moveHandleIcon.y = size[1] + moveHandleHeight / 2 - 0.5;\n moveHandle_1.ensureState('emphasis').style = dataZoomModel.getModel(['emphasis', 'moveHandleStyle']).getItemStyle();\n var moveZoneExpandSize = Math.min(size[1] / 2, Math.max(moveHandleHeight, 10));\n actualMoveZone = displayables.moveZone = new graphic.Rect({\n invisible: true,\n shape: {\n y: size[1] - moveZoneExpandSize,\n height: moveHandleHeight + moveZoneExpandSize\n }\n });\n actualMoveZone.on('mouseover', function () {\n api.enterEmphasis(moveHandle_1);\n }).on('mouseout', function () {\n api.leaveEmphasis(moveHandle_1);\n });\n sliderGroup.add(moveHandle_1);\n sliderGroup.add(moveHandleIcon);\n sliderGroup.add(actualMoveZone);\n }\n\n actualMoveZone.attr({\n draggable: true,\n cursor: getCursor(this._orient),\n drift: bind(this._onDragMove, this, 'all'),\n ondragstart: bind(this._showDataInfo, this, true),\n ondragend: bind(this._onDragEnd, this),\n onmouseover: bind(this._showDataInfo, this, true),\n onmouseout: bind(this._showDataInfo, this, false)\n });\n };\n\n SliderZoomView.prototype._resetInterval = function () {\n var range = this._range = this.dataZoomModel.getPercentRange();\n\n var viewExtent = this._getViewExtent();\n\n this._handleEnds = [linearMap(range[0], [0, 100], viewExtent, true), linearMap(range[1], [0, 100], viewExtent, true)];\n };\n\n SliderZoomView.prototype._updateInterval = function (handleIndex, delta) {\n var dataZoomModel = this.dataZoomModel;\n var handleEnds = this._handleEnds;\n\n var viewExtend = this._getViewExtent();\n\n var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\n var percentExtent = [0, 100];\n sliderMove(delta, handleEnds, viewExtend, dataZoomModel.get('zoomLock') ? 'all' : handleIndex, minMaxSpan.minSpan != null ? linearMap(minMaxSpan.minSpan, percentExtent, viewExtend, true) : null, minMaxSpan.maxSpan != null ? linearMap(minMaxSpan.maxSpan, percentExtent, viewExtend, true) : null);\n var lastRange = this._range;\n var range = this._range = asc([linearMap(handleEnds[0], viewExtend, percentExtent, true), linearMap(handleEnds[1], viewExtend, percentExtent, true)]);\n return !lastRange || lastRange[0] !== range[0] || lastRange[1] !== range[1];\n };\n\n SliderZoomView.prototype._updateView = function (nonRealtime) {\n var displaybles = this._displayables;\n var handleEnds = this._handleEnds;\n var handleInterval = asc(handleEnds.slice());\n var size = this._size;\n each([0, 1], function (handleIndex) {\n // Handles\n var handle = displaybles.handles[handleIndex];\n var handleHeight = this._handleHeight;\n handle.attr({\n scaleX: handleHeight / 2,\n scaleY: handleHeight / 2,\n // This is a trick, by adding an extra tiny offset to let the default handle's end point align to the drag window.\n // NOTE: It may affect some custom shapes a bit. But we prefer to have better result by default.\n x: handleEnds[handleIndex] + (handleIndex ? -1 : 1),\n y: size[1] / 2 - handleHeight / 2\n });\n }, this); // Filler\n\n displaybles.filler.setShape({\n x: handleInterval[0],\n y: 0,\n width: handleInterval[1] - handleInterval[0],\n height: size[1]\n });\n var viewExtent = {\n x: handleInterval[0],\n width: handleInterval[1] - handleInterval[0]\n }; // Move handle\n\n if (displaybles.moveHandle) {\n displaybles.moveHandle.setShape(viewExtent);\n displaybles.moveZone.setShape(viewExtent); // Force update path on the invisible object\n\n displaybles.moveZone.getBoundingRect();\n displaybles.moveHandleIcon && displaybles.moveHandleIcon.attr('x', viewExtent.x + viewExtent.width / 2);\n } // update clip path of shadow.\n\n\n var dataShadowSegs = displaybles.dataShadowSegs;\n var segIntervals = [0, handleInterval[0], handleInterval[1], size[0]];\n\n for (var i = 0; i < dataShadowSegs.length; i++) {\n var segGroup = dataShadowSegs[i];\n var clipPath = segGroup.getClipPath();\n\n if (!clipPath) {\n clipPath = new graphic.Rect();\n segGroup.setClipPath(clipPath);\n }\n\n clipPath.setShape({\n x: segIntervals[i],\n y: 0,\n width: segIntervals[i + 1] - segIntervals[i],\n height: size[1]\n });\n }\n\n this._updateDataInfo(nonRealtime);\n };\n\n SliderZoomView.prototype._updateDataInfo = function (nonRealtime) {\n var dataZoomModel = this.dataZoomModel;\n var displaybles = this._displayables;\n var handleLabels = displaybles.handleLabels;\n var orient = this._orient;\n var labelTexts = ['', '']; // FIXME\n // date型,支持formatter,autoformatter(ec2 date.getAutoFormatter)\n\n if (dataZoomModel.get('showDetail')) {\n var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\n\n if (axisProxy) {\n var axis = axisProxy.getAxisModel().axis;\n var range = this._range;\n var dataInterval = nonRealtime // See #4434, data and axis are not processed and reset yet in non-realtime mode.\n ? axisProxy.calculateDataWindow({\n start: range[0],\n end: range[1]\n }).valueWindow : axisProxy.getDataValueWindow();\n labelTexts = [this._formatLabel(dataInterval[0], axis), this._formatLabel(dataInterval[1], axis)];\n }\n }\n\n var orderedHandleEnds = asc(this._handleEnds.slice());\n setLabel.call(this, 0);\n setLabel.call(this, 1);\n\n function setLabel(handleIndex) {\n // Label\n // Text should not transform by barGroup.\n // Ignore handlers transform\n var barTransform = graphic.getTransform(displaybles.handles[handleIndex].parent, this.group);\n var direction = graphic.transformDirection(handleIndex === 0 ? 'right' : 'left', barTransform);\n var offset = this._handleWidth / 2 + LABEL_GAP;\n var textPoint = graphic.applyTransform([orderedHandleEnds[handleIndex] + (handleIndex === 0 ? -offset : offset), this._size[1] / 2], barTransform);\n handleLabels[handleIndex].setStyle({\n x: textPoint[0],\n y: textPoint[1],\n verticalAlign: orient === HORIZONTAL ? 'middle' : direction,\n align: orient === HORIZONTAL ? direction : 'center',\n text: labelTexts[handleIndex]\n });\n }\n };\n\n SliderZoomView.prototype._formatLabel = function (value, axis) {\n var dataZoomModel = this.dataZoomModel;\n var labelFormatter = dataZoomModel.get('labelFormatter');\n var labelPrecision = dataZoomModel.get('labelPrecision');\n\n if (labelPrecision == null || labelPrecision === 'auto') {\n labelPrecision = axis.getPixelPrecision();\n }\n\n var valueStr = value == null || isNaN(value) ? '' // FIXME Glue code\n : axis.type === 'category' || axis.type === 'time' ? axis.scale.getLabel({\n value: Math.round(value)\n }) // param of toFixed should less then 20.\n : value.toFixed(Math.min(labelPrecision, 20));\n return isFunction(labelFormatter) ? labelFormatter(value, valueStr) : isString(labelFormatter) ? labelFormatter.replace('{value}', valueStr) : valueStr;\n };\n /**\n * @param showOrHide true: show, false: hide\n */\n\n\n SliderZoomView.prototype._showDataInfo = function (showOrHide) {\n // Always show when drgging.\n showOrHide = this._dragging || showOrHide;\n var displayables = this._displayables;\n var handleLabels = displayables.handleLabels;\n handleLabels[0].attr('invisible', !showOrHide);\n handleLabels[1].attr('invisible', !showOrHide); // Highlight move handle\n\n displayables.moveHandle && this.api[showOrHide ? 'enterEmphasis' : 'leaveEmphasis'](displayables.moveHandle, 1);\n };\n\n SliderZoomView.prototype._onDragMove = function (handleIndex, dx, dy, event) {\n this._dragging = true; // For mobile device, prevent screen slider on the button.\n\n eventTool.stop(event.event); // Transform dx, dy to bar coordination.\n\n var barTransform = this._displayables.sliderGroup.getLocalTransform();\n\n var vertex = graphic.applyTransform([dx, dy], barTransform, true);\n\n var changed = this._updateInterval(handleIndex, vertex[0]);\n\n var realtime = this.dataZoomModel.get('realtime');\n\n this._updateView(!realtime); // Avoid dispatch dataZoom repeatly but range not changed,\n // which cause bad visual effect when progressive enabled.\n\n\n changed && realtime && this._dispatchZoomAction(true);\n };\n\n SliderZoomView.prototype._onDragEnd = function () {\n this._dragging = false;\n\n this._showDataInfo(false); // While in realtime mode and stream mode, dispatch action when\n // drag end will cause the whole view rerender, which is unnecessary.\n\n\n var realtime = this.dataZoomModel.get('realtime');\n !realtime && this._dispatchZoomAction(false);\n };\n\n SliderZoomView.prototype._onClickPanel = function (e) {\n var size = this._size;\n\n var localPoint = this._displayables.sliderGroup.transformCoordToLocal(e.offsetX, e.offsetY);\n\n if (localPoint[0] < 0 || localPoint[0] > size[0] || localPoint[1] < 0 || localPoint[1] > size[1]) {\n return;\n }\n\n var handleEnds = this._handleEnds;\n var center = (handleEnds[0] + handleEnds[1]) / 2;\n\n var changed = this._updateInterval('all', localPoint[0] - center);\n\n this._updateView();\n\n changed && this._dispatchZoomAction(false);\n };\n\n SliderZoomView.prototype._onBrushStart = function (e) {\n var x = e.offsetX;\n var y = e.offsetY;\n this._brushStart = new graphic.Point(x, y);\n this._brushing = true;\n this._brushStartTime = +new Date(); // this._updateBrushRect(x, y);\n };\n\n SliderZoomView.prototype._onBrushEnd = function (e) {\n if (!this._brushing) {\n return;\n }\n\n var brushRect = this._displayables.brushRect;\n this._brushing = false;\n\n if (!brushRect) {\n return;\n }\n\n brushRect.attr('ignore', true);\n var brushShape = brushRect.shape;\n var brushEndTime = +new Date(); // console.log(brushEndTime - this._brushStartTime);\n\n if (brushEndTime - this._brushStartTime < 200 && Math.abs(brushShape.width) < 5) {\n // Will treat it as a click\n return;\n }\n\n var viewExtend = this._getViewExtent();\n\n var percentExtent = [0, 100];\n this._range = asc([linearMap(brushShape.x, viewExtend, percentExtent, true), linearMap(brushShape.x + brushShape.width, viewExtend, percentExtent, true)]);\n this._handleEnds = [brushShape.x, brushShape.x + brushShape.width];\n\n this._updateView();\n\n this._dispatchZoomAction(false);\n };\n\n SliderZoomView.prototype._onBrush = function (e) {\n if (this._brushing) {\n // For mobile device, prevent screen slider on the button.\n eventTool.stop(e.event);\n\n this._updateBrushRect(e.offsetX, e.offsetY);\n }\n };\n\n SliderZoomView.prototype._updateBrushRect = function (mouseX, mouseY) {\n var displayables = this._displayables;\n var dataZoomModel = this.dataZoomModel;\n var brushRect = displayables.brushRect;\n\n if (!brushRect) {\n brushRect = displayables.brushRect = new Rect({\n silent: true,\n style: dataZoomModel.getModel('brushStyle').getItemStyle()\n });\n displayables.sliderGroup.add(brushRect);\n }\n\n brushRect.attr('ignore', false);\n var brushStart = this._brushStart;\n var sliderGroup = this._displayables.sliderGroup;\n var endPoint = sliderGroup.transformCoordToLocal(mouseX, mouseY);\n var startPoint = sliderGroup.transformCoordToLocal(brushStart.x, brushStart.y);\n var size = this._size;\n endPoint[0] = Math.max(Math.min(size[0], endPoint[0]), 0);\n brushRect.setShape({\n x: startPoint[0],\n y: 0,\n width: endPoint[0] - startPoint[0],\n height: size[1]\n });\n };\n /**\n * This action will be throttled.\n */\n\n\n SliderZoomView.prototype._dispatchZoomAction = function (realtime) {\n var range = this._range;\n this.api.dispatchAction({\n type: 'dataZoom',\n from: this.uid,\n dataZoomId: this.dataZoomModel.id,\n animation: realtime ? REALTIME_ANIMATION_CONFIG : null,\n start: range[0],\n end: range[1]\n });\n };\n\n SliderZoomView.prototype._findCoordRect = function () {\n // Find the grid corresponding to the first axis referred by dataZoom.\n var rect;\n var coordSysInfoList = collectReferCoordSysModelInfo(this.dataZoomModel).infoList;\n\n if (!rect && coordSysInfoList.length) {\n var coordSys = coordSysInfoList[0].model.coordinateSystem;\n rect = coordSys.getRect && coordSys.getRect();\n }\n\n if (!rect) {\n var width = this.api.getWidth();\n var height = this.api.getHeight();\n rect = {\n x: width * 0.2,\n y: height * 0.2,\n width: width * 0.6,\n height: height * 0.6\n };\n }\n\n return rect;\n };\n\n SliderZoomView.type = 'dataZoom.slider';\n return SliderZoomView;\n}(DataZoomView);\n\nfunction getOtherDim(thisDim) {\n // FIXME\n // 这个逻辑和getOtherAxis里一致,但是写在这里是否不好\n var map = {\n x: 'y',\n y: 'x',\n radius: 'angle',\n angle: 'radius'\n };\n return map[thisDim];\n}\n\nfunction getCursor(orient) {\n return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\n}\n\nexport default SliderZoomView;","map":{"version":3,"sources":["D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src/ElectronicMallVue/node_modules/echarts/lib/component/dataZoom/SliderZoomView.js"],"names":["__extends","bind","each","isFunction","isString","indexOf","eventTool","graphic","throttle","DataZoomView","linearMap","asc","parsePercent","layout","sliderMove","getAxisMainType","collectReferCoordSysModelInfo","enableHoverEmphasis","createSymbol","symbolBuildProxies","deprecateLog","createTextStyle","Rect","DEFAULT_LOCATION_EDGE_GAP","DEFAULT_FRAME_BORDER_WIDTH","DEFAULT_FILLER_SIZE","DEFAULT_MOVE_HANDLE_SIZE","HORIZONTAL","VERTICAL","LABEL_GAP","SHOW_DATA_SHADOW_SERIES_TYPE","REALTIME_ANIMATION_CONFIG","easing","duration","delay","SliderZoomView","_super","_this","apply","arguments","type","_displayables","prototype","init","ecModel","api","_onBrush","_onBrushEnd","render","dataZoomModel","payload","createOrUpdate","get","_orient","getOrient","group","removeAll","noTarget","_clear","from","uid","_buildView","_updateView","dispose","clear","zr","getZr","off","thisGroup","_brushing","brushRect","_resetLocation","_resetInterval","barGroup","sliderGroup","Group","_renderBackground","_renderHandle","_renderDataShadow","add","_positionGroup","showMoveHandle","moveHandleSize","coordRect","_findCoordRect","ecSize","width","getWidth","height","getHeight","positionInfo","right","x","top","y","layoutParams","getLayoutParams","option","name","layoutRect","getLayoutRect","_location","_size","reverse","location","orient","targetAxisModel","getFirstTargetAxisModel","inverse","otherAxisInverse","_dataShadowInfo","attr","scaleY","scaleX","rotation","Math","PI","rect","getBoundingRect","markRedraw","_getViewExtent","size","brushSelect","silent","shape","style","fill","z2","clickPanel","onclick","_onClickPanel","on","_onBrushStart","cursor","info","_prepareDataShadowInfo","dataShadowSegs","oldSize","_shadowSize","seriesModel","series","data","getRawData","candlestickDim","getShadowDim","otherDim","getDimensionInfo","polygonPts","_shadowPolygonPts","polylinePts","_shadowPolylinePts","_shadowData","_shadowDim","otherDataExtent_1","getDataExtent","otherOffset","otherShadowExtent_1","thisShadowExtent","areaPoints_1","linePoints_1","step_1","count","thisCoord_1","stride_1","round","lastIsEmpty_1","value","index","isEmpty","isNaN","otherCoord","push","length","createDataShadowGroup","isSelectedArea","model","getModel","polygon","Polygon","points","segmentIgnoreThreshold","getAreaStyle","polyline","Polyline","getLineStyle","i","showDataShadow","result","eachTargetAxis","axisDim","axisIndex","seriesModels","getAxisProxy","getTargetSeriesModels","thisAxis","getComponent","axis","getOtherDim","coordSys","coordinateSystem","getOtherAxis","getData","mapDimension","thisDim","displayables","handles","handleLabels","borderRadius","filler","textConfig","position","subPixelOptimize","r","stroke","lineWidth","handleIndex","iconStr","process","env","NODE_ENV","path","getCursor","draggable","drift","_onDragMove","ondragend","_onDragEnd","onmouseover","_showDataInfo","onmouseout","bRect","handleSize","_handleHeight","_handleWidth","setStyle","getItemStyle","strokeNoScale","rectHover","ensureState","handleColor","textStyleModel","Text","invisible","text","verticalAlign","align","getTextColor","font","getFont","actualMoveZone","moveHandleHeight","moveHandle_1","moveHandle","iconSize","moveHandleIcon","moveZoneExpandSize","min","max","moveZone","enterEmphasis","leaveEmphasis","ondragstart","range","_range","getPercentRange","viewExtent","_handleEnds","_updateInterval","delta","handleEnds","viewExtend","minMaxSpan","findRepresentativeAxisProxy","getMinMaxSpan","percentExtent","minSpan","maxSpan","lastRange","nonRealtime","displaybles","handleInterval","slice","handle","handleHeight","setShape","segIntervals","segGroup","clipPath","getClipPath","setClipPath","_updateDataInfo","labelTexts","axisProxy","getAxisModel","dataInterval","calculateDataWindow","start","end","valueWindow","getDataValueWindow","_formatLabel","orderedHandleEnds","setLabel","call","barTransform","getTransform","parent","direction","transformDirection","offset","textPoint","applyTransform","labelFormatter","labelPrecision","getPixelPrecision","valueStr","scale","getLabel","toFixed","replace","showOrHide","_dragging","dx","dy","event","stop","getLocalTransform","vertex","changed","realtime","_dispatchZoomAction","e","localPoint","transformCoordToLocal","offsetX","offsetY","center","_brushStart","Point","_brushStartTime","Date","brushShape","brushEndTime","abs","_updateBrushRect","mouseX","mouseY","brushStart","endPoint","startPoint","dispatchAction","dataZoomId","id","animation","coordSysInfoList","infoList","getRect","map","radius","angle"],"mappings":"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","sourcesContent":["\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport { bind, each, isFunction, isString, indexOf } from 'zrender/lib/core/util.js';\nimport * as eventTool from 'zrender/lib/core/event.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as throttle from '../../util/throttle.js';\nimport DataZoomView from './DataZoomView.js';\nimport { linearMap, asc, parsePercent } from '../../util/number.js';\nimport * as layout from '../../util/layout.js';\nimport sliderMove from '../helper/sliderMove.js';\nimport { getAxisMainType, collectReferCoordSysModelInfo } from './helper.js';\nimport { enableHoverEmphasis } from '../../util/states.js';\nimport { createSymbol, symbolBuildProxies } from '../../util/symbol.js';\nimport { deprecateLog } from '../../util/log.js';\nimport { createTextStyle } from '../../label/labelStyle.js';\nvar Rect = graphic.Rect; // Constants\n\nvar DEFAULT_LOCATION_EDGE_GAP = 7;\nvar DEFAULT_FRAME_BORDER_WIDTH = 1;\nvar DEFAULT_FILLER_SIZE = 30;\nvar DEFAULT_MOVE_HANDLE_SIZE = 7;\nvar HORIZONTAL = 'horizontal';\nvar VERTICAL = 'vertical';\nvar LABEL_GAP = 5;\nvar SHOW_DATA_SHADOW_SERIES_TYPE = ['line', 'bar', 'candlestick', 'scatter'];\nvar REALTIME_ANIMATION_CONFIG = {\n easing: 'cubicOut',\n duration: 100,\n delay: 0\n};\n\nvar SliderZoomView =\n/** @class */\nfunction (_super) {\n __extends(SliderZoomView, _super);\n\n function SliderZoomView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = SliderZoomView.type;\n _this._displayables = {};\n return _this;\n }\n\n SliderZoomView.prototype.init = function (ecModel, api) {\n this.api = api; // A unique handler for each dataZoom component\n\n this._onBrush = bind(this._onBrush, this);\n this._onBrushEnd = bind(this._onBrushEnd, this);\n };\n\n SliderZoomView.prototype.render = function (dataZoomModel, ecModel, api, payload) {\n _super.prototype.render.apply(this, arguments);\n\n throttle.createOrUpdate(this, '_dispatchZoomAction', dataZoomModel.get('throttle'), 'fixRate');\n this._orient = dataZoomModel.getOrient();\n\n if (dataZoomModel.get('show') === false) {\n this.group.removeAll();\n return;\n }\n\n if (dataZoomModel.noTarget()) {\n this._clear();\n\n this.group.removeAll();\n return;\n } // Notice: this._resetInterval() should not be executed when payload.type\n // is 'dataZoom', origin this._range should be maintained, otherwise 'pan'\n // or 'zoom' info will be missed because of 'throttle' of this.dispatchAction,\n\n\n if (!payload || payload.type !== 'dataZoom' || payload.from !== this.uid) {\n this._buildView();\n }\n\n this._updateView();\n };\n\n SliderZoomView.prototype.dispose = function () {\n this._clear();\n\n _super.prototype.dispose.apply(this, arguments);\n };\n\n SliderZoomView.prototype._clear = function () {\n throttle.clear(this, '_dispatchZoomAction');\n var zr = this.api.getZr();\n zr.off('mousemove', this._onBrush);\n zr.off('mouseup', this._onBrushEnd);\n };\n\n SliderZoomView.prototype._buildView = function () {\n var thisGroup = this.group;\n thisGroup.removeAll();\n this._brushing = false;\n this._displayables.brushRect = null;\n\n this._resetLocation();\n\n this._resetInterval();\n\n var barGroup = this._displayables.sliderGroup = new graphic.Group();\n\n this._renderBackground();\n\n this._renderHandle();\n\n this._renderDataShadow();\n\n thisGroup.add(barGroup);\n\n this._positionGroup();\n };\n\n SliderZoomView.prototype._resetLocation = function () {\n var dataZoomModel = this.dataZoomModel;\n var api = this.api;\n var showMoveHandle = dataZoomModel.get('brushSelect');\n var moveHandleSize = showMoveHandle ? DEFAULT_MOVE_HANDLE_SIZE : 0; // If some of x/y/width/height are not specified,\n // auto-adapt according to target grid.\n\n var coordRect = this._findCoordRect();\n\n var ecSize = {\n width: api.getWidth(),\n height: api.getHeight()\n }; // Default align by coordinate system rect.\n\n var positionInfo = this._orient === HORIZONTAL ? {\n // Why using 'right', because right should be used in vertical,\n // and it is better to be consistent for dealing with position param merge.\n right: ecSize.width - coordRect.x - coordRect.width,\n top: ecSize.height - DEFAULT_FILLER_SIZE - DEFAULT_LOCATION_EDGE_GAP - moveHandleSize,\n width: coordRect.width,\n height: DEFAULT_FILLER_SIZE\n } : {\n right: DEFAULT_LOCATION_EDGE_GAP,\n top: coordRect.y,\n width: DEFAULT_FILLER_SIZE,\n height: coordRect.height\n }; // Do not write back to option and replace value 'ph', because\n // the 'ph' value should be recalculated when resize.\n\n var layoutParams = layout.getLayoutParams(dataZoomModel.option); // Replace the placeholder value.\n\n each(['right', 'top', 'width', 'height'], function (name) {\n if (layoutParams[name] === 'ph') {\n layoutParams[name] = positionInfo[name];\n }\n });\n var layoutRect = layout.getLayoutRect(layoutParams, ecSize);\n this._location = {\n x: layoutRect.x,\n y: layoutRect.y\n };\n this._size = [layoutRect.width, layoutRect.height];\n this._orient === VERTICAL && this._size.reverse();\n };\n\n SliderZoomView.prototype._positionGroup = function () {\n var thisGroup = this.group;\n var location = this._location;\n var orient = this._orient; // Just use the first axis to determine mapping.\n\n var targetAxisModel = this.dataZoomModel.getFirstTargetAxisModel();\n var inverse = targetAxisModel && targetAxisModel.get('inverse');\n var sliderGroup = this._displayables.sliderGroup;\n var otherAxisInverse = (this._dataShadowInfo || {}).otherAxisInverse; // Transform barGroup.\n\n sliderGroup.attr(orient === HORIZONTAL && !inverse ? {\n scaleY: otherAxisInverse ? 1 : -1,\n scaleX: 1\n } : orient === HORIZONTAL && inverse ? {\n scaleY: otherAxisInverse ? 1 : -1,\n scaleX: -1\n } : orient === VERTICAL && !inverse ? {\n scaleY: otherAxisInverse ? -1 : 1,\n scaleX: 1,\n rotation: Math.PI / 2\n } // Don't use Math.PI, considering shadow direction.\n : {\n scaleY: otherAxisInverse ? -1 : 1,\n scaleX: -1,\n rotation: Math.PI / 2\n }); // Position barGroup\n\n var rect = thisGroup.getBoundingRect([sliderGroup]);\n thisGroup.x = location.x - rect.x;\n thisGroup.y = location.y - rect.y;\n thisGroup.markRedraw();\n };\n\n SliderZoomView.prototype._getViewExtent = function () {\n return [0, this._size[0]];\n };\n\n SliderZoomView.prototype._renderBackground = function () {\n var dataZoomModel = this.dataZoomModel;\n var size = this._size;\n var barGroup = this._displayables.sliderGroup;\n var brushSelect = dataZoomModel.get('brushSelect');\n barGroup.add(new Rect({\n silent: true,\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1]\n },\n style: {\n fill: dataZoomModel.get('backgroundColor')\n },\n z2: -40\n })); // Click panel, over shadow, below handles.\n\n var clickPanel = new Rect({\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1]\n },\n style: {\n fill: 'transparent'\n },\n z2: 0,\n onclick: bind(this._onClickPanel, this)\n });\n var zr = this.api.getZr();\n\n if (brushSelect) {\n clickPanel.on('mousedown', this._onBrushStart, this);\n clickPanel.cursor = 'crosshair';\n zr.on('mousemove', this._onBrush);\n zr.on('mouseup', this._onBrushEnd);\n } else {\n zr.off('mousemove', this._onBrush);\n zr.off('mouseup', this._onBrushEnd);\n }\n\n barGroup.add(clickPanel);\n };\n\n SliderZoomView.prototype._renderDataShadow = function () {\n var info = this._dataShadowInfo = this._prepareDataShadowInfo();\n\n this._displayables.dataShadowSegs = [];\n\n if (!info) {\n return;\n }\n\n var size = this._size;\n var oldSize = this._shadowSize || [];\n var seriesModel = info.series;\n var data = seriesModel.getRawData();\n var candlestickDim = seriesModel.getShadowDim && seriesModel.getShadowDim();\n var otherDim = candlestickDim && data.getDimensionInfo(candlestickDim) ? seriesModel.getShadowDim() // @see candlestick\n : info.otherDim;\n\n if (otherDim == null) {\n return;\n }\n\n var polygonPts = this._shadowPolygonPts;\n var polylinePts = this._shadowPolylinePts; // Not re-render if data doesn't change.\n\n if (data !== this._shadowData || otherDim !== this._shadowDim || size[0] !== oldSize[0] || size[1] !== oldSize[1]) {\n var otherDataExtent_1 = data.getDataExtent(otherDim); // Nice extent.\n\n var otherOffset = (otherDataExtent_1[1] - otherDataExtent_1[0]) * 0.3;\n otherDataExtent_1 = [otherDataExtent_1[0] - otherOffset, otherDataExtent_1[1] + otherOffset];\n var otherShadowExtent_1 = [0, size[1]];\n var thisShadowExtent = [0, size[0]];\n var areaPoints_1 = [[size[0], 0], [0, 0]];\n var linePoints_1 = [];\n var step_1 = thisShadowExtent[1] / (data.count() - 1);\n var thisCoord_1 = 0; // Optimize for large data shadow\n\n var stride_1 = Math.round(data.count() / size[0]);\n var lastIsEmpty_1;\n data.each([otherDim], function (value, index) {\n if (stride_1 > 0 && index % stride_1) {\n thisCoord_1 += step_1;\n return;\n } // FIXME\n // Should consider axis.min/axis.max when drawing dataShadow.\n // FIXME\n // 应该使用统一的空判断?还是在list里进行空判断?\n\n\n var isEmpty = value == null || isNaN(value) || value === ''; // See #4235.\n\n var otherCoord = isEmpty ? 0 : linearMap(value, otherDataExtent_1, otherShadowExtent_1, true); // Attempt to draw data shadow precisely when there are empty value.\n\n if (isEmpty && !lastIsEmpty_1 && index) {\n areaPoints_1.push([areaPoints_1[areaPoints_1.length - 1][0], 0]);\n linePoints_1.push([linePoints_1[linePoints_1.length - 1][0], 0]);\n } else if (!isEmpty && lastIsEmpty_1) {\n areaPoints_1.push([thisCoord_1, 0]);\n linePoints_1.push([thisCoord_1, 0]);\n }\n\n areaPoints_1.push([thisCoord_1, otherCoord]);\n linePoints_1.push([thisCoord_1, otherCoord]);\n thisCoord_1 += step_1;\n lastIsEmpty_1 = isEmpty;\n });\n polygonPts = this._shadowPolygonPts = areaPoints_1;\n polylinePts = this._shadowPolylinePts = linePoints_1;\n }\n\n this._shadowData = data;\n this._shadowDim = otherDim;\n this._shadowSize = [size[0], size[1]];\n var dataZoomModel = this.dataZoomModel;\n\n function createDataShadowGroup(isSelectedArea) {\n var model = dataZoomModel.getModel(isSelectedArea ? 'selectedDataBackground' : 'dataBackground');\n var group = new graphic.Group();\n var polygon = new graphic.Polygon({\n shape: {\n points: polygonPts\n },\n segmentIgnoreThreshold: 1,\n style: model.getModel('areaStyle').getAreaStyle(),\n silent: true,\n z2: -20\n });\n var polyline = new graphic.Polyline({\n shape: {\n points: polylinePts\n },\n segmentIgnoreThreshold: 1,\n style: model.getModel('lineStyle').getLineStyle(),\n silent: true,\n z2: -19\n });\n group.add(polygon);\n group.add(polyline);\n return group;\n } // let dataBackgroundModel = dataZoomModel.getModel('dataBackground');\n\n\n for (var i = 0; i < 3; i++) {\n var group = createDataShadowGroup(i === 1);\n\n this._displayables.sliderGroup.add(group);\n\n this._displayables.dataShadowSegs.push(group);\n }\n };\n\n SliderZoomView.prototype._prepareDataShadowInfo = function () {\n var dataZoomModel = this.dataZoomModel;\n var showDataShadow = dataZoomModel.get('showDataShadow');\n\n if (showDataShadow === false) {\n return;\n } // Find a representative series.\n\n\n var result;\n var ecModel = this.ecModel;\n dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\n var seriesModels = dataZoomModel.getAxisProxy(axisDim, axisIndex).getTargetSeriesModels();\n each(seriesModels, function (seriesModel) {\n if (result) {\n return;\n }\n\n if (showDataShadow !== true && indexOf(SHOW_DATA_SHADOW_SERIES_TYPE, seriesModel.get('type')) < 0) {\n return;\n }\n\n var thisAxis = ecModel.getComponent(getAxisMainType(axisDim), axisIndex).axis;\n var otherDim = getOtherDim(axisDim);\n var otherAxisInverse;\n var coordSys = seriesModel.coordinateSystem;\n\n if (otherDim != null && coordSys.getOtherAxis) {\n otherAxisInverse = coordSys.getOtherAxis(thisAxis).inverse;\n }\n\n otherDim = seriesModel.getData().mapDimension(otherDim);\n result = {\n thisAxis: thisAxis,\n series: seriesModel,\n thisDim: axisDim,\n otherDim: otherDim,\n otherAxisInverse: otherAxisInverse\n };\n }, this);\n }, this);\n return result;\n };\n\n SliderZoomView.prototype._renderHandle = function () {\n var thisGroup = this.group;\n var displayables = this._displayables;\n var handles = displayables.handles = [null, null];\n var handleLabels = displayables.handleLabels = [null, null];\n var sliderGroup = this._displayables.sliderGroup;\n var size = this._size;\n var dataZoomModel = this.dataZoomModel;\n var api = this.api;\n var borderRadius = dataZoomModel.get('borderRadius') || 0;\n var brushSelect = dataZoomModel.get('brushSelect');\n var filler = displayables.filler = new Rect({\n silent: brushSelect,\n style: {\n fill: dataZoomModel.get('fillerColor')\n },\n textConfig: {\n position: 'inside'\n }\n });\n sliderGroup.add(filler); // Frame border.\n\n sliderGroup.add(new Rect({\n silent: true,\n subPixelOptimize: true,\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1],\n r: borderRadius\n },\n style: {\n // deprecated option\n stroke: dataZoomModel.get('dataBackgroundColor') || dataZoomModel.get('borderColor'),\n lineWidth: DEFAULT_FRAME_BORDER_WIDTH,\n fill: 'rgba(0,0,0,0)'\n }\n })); // Left and right handle to resize\n\n each([0, 1], function (handleIndex) {\n var iconStr = dataZoomModel.get('handleIcon');\n\n if (!symbolBuildProxies[iconStr] && iconStr.indexOf('path://') < 0 && iconStr.indexOf('image://') < 0) {\n // Compatitable with the old icon parsers. Which can use a path string without path://\n iconStr = 'path://' + iconStr;\n\n if (process.env.NODE_ENV !== 'production') {\n deprecateLog('handleIcon now needs \\'path://\\' prefix when using a path string');\n }\n }\n\n var path = createSymbol(iconStr, -1, 0, 2, 2, null, true);\n path.attr({\n cursor: getCursor(this._orient),\n draggable: true,\n drift: bind(this._onDragMove, this, handleIndex),\n ondragend: bind(this._onDragEnd, this),\n onmouseover: bind(this._showDataInfo, this, true),\n onmouseout: bind(this._showDataInfo, this, false),\n z2: 5\n });\n var bRect = path.getBoundingRect();\n var handleSize = dataZoomModel.get('handleSize');\n this._handleHeight = parsePercent(handleSize, this._size[1]);\n this._handleWidth = bRect.width / bRect.height * this._handleHeight;\n path.setStyle(dataZoomModel.getModel('handleStyle').getItemStyle());\n path.style.strokeNoScale = true;\n path.rectHover = true;\n path.ensureState('emphasis').style = dataZoomModel.getModel(['emphasis', 'handleStyle']).getItemStyle();\n enableHoverEmphasis(path);\n var handleColor = dataZoomModel.get('handleColor'); // deprecated option\n // Compatitable with previous version\n\n if (handleColor != null) {\n path.style.fill = handleColor;\n }\n\n sliderGroup.add(handles[handleIndex] = path);\n var textStyleModel = dataZoomModel.getModel('textStyle');\n thisGroup.add(handleLabels[handleIndex] = new graphic.Text({\n silent: true,\n invisible: true,\n style: createTextStyle(textStyleModel, {\n x: 0,\n y: 0,\n text: '',\n verticalAlign: 'middle',\n align: 'center',\n fill: textStyleModel.getTextColor(),\n font: textStyleModel.getFont()\n }),\n z2: 10\n }));\n }, this); // Handle to move. Only visible when brushSelect is set true.\n\n var actualMoveZone = filler;\n\n if (brushSelect) {\n var moveHandleHeight = parsePercent(dataZoomModel.get('moveHandleSize'), size[1]);\n var moveHandle_1 = displayables.moveHandle = new graphic.Rect({\n style: dataZoomModel.getModel('moveHandleStyle').getItemStyle(),\n silent: true,\n shape: {\n r: [0, 0, 2, 2],\n y: size[1] - 0.5,\n height: moveHandleHeight\n }\n });\n var iconSize = moveHandleHeight * 0.8;\n var moveHandleIcon = displayables.moveHandleIcon = createSymbol(dataZoomModel.get('moveHandleIcon'), -iconSize / 2, -iconSize / 2, iconSize, iconSize, '#fff', true);\n moveHandleIcon.silent = true;\n moveHandleIcon.y = size[1] + moveHandleHeight / 2 - 0.5;\n moveHandle_1.ensureState('emphasis').style = dataZoomModel.getModel(['emphasis', 'moveHandleStyle']).getItemStyle();\n var moveZoneExpandSize = Math.min(size[1] / 2, Math.max(moveHandleHeight, 10));\n actualMoveZone = displayables.moveZone = new graphic.Rect({\n invisible: true,\n shape: {\n y: size[1] - moveZoneExpandSize,\n height: moveHandleHeight + moveZoneExpandSize\n }\n });\n actualMoveZone.on('mouseover', function () {\n api.enterEmphasis(moveHandle_1);\n }).on('mouseout', function () {\n api.leaveEmphasis(moveHandle_1);\n });\n sliderGroup.add(moveHandle_1);\n sliderGroup.add(moveHandleIcon);\n sliderGroup.add(actualMoveZone);\n }\n\n actualMoveZone.attr({\n draggable: true,\n cursor: getCursor(this._orient),\n drift: bind(this._onDragMove, this, 'all'),\n ondragstart: bind(this._showDataInfo, this, true),\n ondragend: bind(this._onDragEnd, this),\n onmouseover: bind(this._showDataInfo, this, true),\n onmouseout: bind(this._showDataInfo, this, false)\n });\n };\n\n SliderZoomView.prototype._resetInterval = function () {\n var range = this._range = this.dataZoomModel.getPercentRange();\n\n var viewExtent = this._getViewExtent();\n\n this._handleEnds = [linearMap(range[0], [0, 100], viewExtent, true), linearMap(range[1], [0, 100], viewExtent, true)];\n };\n\n SliderZoomView.prototype._updateInterval = function (handleIndex, delta) {\n var dataZoomModel = this.dataZoomModel;\n var handleEnds = this._handleEnds;\n\n var viewExtend = this._getViewExtent();\n\n var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\n var percentExtent = [0, 100];\n sliderMove(delta, handleEnds, viewExtend, dataZoomModel.get('zoomLock') ? 'all' : handleIndex, minMaxSpan.minSpan != null ? linearMap(minMaxSpan.minSpan, percentExtent, viewExtend, true) : null, minMaxSpan.maxSpan != null ? linearMap(minMaxSpan.maxSpan, percentExtent, viewExtend, true) : null);\n var lastRange = this._range;\n var range = this._range = asc([linearMap(handleEnds[0], viewExtend, percentExtent, true), linearMap(handleEnds[1], viewExtend, percentExtent, true)]);\n return !lastRange || lastRange[0] !== range[0] || lastRange[1] !== range[1];\n };\n\n SliderZoomView.prototype._updateView = function (nonRealtime) {\n var displaybles = this._displayables;\n var handleEnds = this._handleEnds;\n var handleInterval = asc(handleEnds.slice());\n var size = this._size;\n each([0, 1], function (handleIndex) {\n // Handles\n var handle = displaybles.handles[handleIndex];\n var handleHeight = this._handleHeight;\n handle.attr({\n scaleX: handleHeight / 2,\n scaleY: handleHeight / 2,\n // This is a trick, by adding an extra tiny offset to let the default handle's end point align to the drag window.\n // NOTE: It may affect some custom shapes a bit. But we prefer to have better result by default.\n x: handleEnds[handleIndex] + (handleIndex ? -1 : 1),\n y: size[1] / 2 - handleHeight / 2\n });\n }, this); // Filler\n\n displaybles.filler.setShape({\n x: handleInterval[0],\n y: 0,\n width: handleInterval[1] - handleInterval[0],\n height: size[1]\n });\n var viewExtent = {\n x: handleInterval[0],\n width: handleInterval[1] - handleInterval[0]\n }; // Move handle\n\n if (displaybles.moveHandle) {\n displaybles.moveHandle.setShape(viewExtent);\n displaybles.moveZone.setShape(viewExtent); // Force update path on the invisible object\n\n displaybles.moveZone.getBoundingRect();\n displaybles.moveHandleIcon && displaybles.moveHandleIcon.attr('x', viewExtent.x + viewExtent.width / 2);\n } // update clip path of shadow.\n\n\n var dataShadowSegs = displaybles.dataShadowSegs;\n var segIntervals = [0, handleInterval[0], handleInterval[1], size[0]];\n\n for (var i = 0; i < dataShadowSegs.length; i++) {\n var segGroup = dataShadowSegs[i];\n var clipPath = segGroup.getClipPath();\n\n if (!clipPath) {\n clipPath = new graphic.Rect();\n segGroup.setClipPath(clipPath);\n }\n\n clipPath.setShape({\n x: segIntervals[i],\n y: 0,\n width: segIntervals[i + 1] - segIntervals[i],\n height: size[1]\n });\n }\n\n this._updateDataInfo(nonRealtime);\n };\n\n SliderZoomView.prototype._updateDataInfo = function (nonRealtime) {\n var dataZoomModel = this.dataZoomModel;\n var displaybles = this._displayables;\n var handleLabels = displaybles.handleLabels;\n var orient = this._orient;\n var labelTexts = ['', '']; // FIXME\n // date型,支持formatter,autoformatter(ec2 date.getAutoFormatter)\n\n if (dataZoomModel.get('showDetail')) {\n var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\n\n if (axisProxy) {\n var axis = axisProxy.getAxisModel().axis;\n var range = this._range;\n var dataInterval = nonRealtime // See #4434, data and axis are not processed and reset yet in non-realtime mode.\n ? axisProxy.calculateDataWindow({\n start: range[0],\n end: range[1]\n }).valueWindow : axisProxy.getDataValueWindow();\n labelTexts = [this._formatLabel(dataInterval[0], axis), this._formatLabel(dataInterval[1], axis)];\n }\n }\n\n var orderedHandleEnds = asc(this._handleEnds.slice());\n setLabel.call(this, 0);\n setLabel.call(this, 1);\n\n function setLabel(handleIndex) {\n // Label\n // Text should not transform by barGroup.\n // Ignore handlers transform\n var barTransform = graphic.getTransform(displaybles.handles[handleIndex].parent, this.group);\n var direction = graphic.transformDirection(handleIndex === 0 ? 'right' : 'left', barTransform);\n var offset = this._handleWidth / 2 + LABEL_GAP;\n var textPoint = graphic.applyTransform([orderedHandleEnds[handleIndex] + (handleIndex === 0 ? -offset : offset), this._size[1] / 2], barTransform);\n handleLabels[handleIndex].setStyle({\n x: textPoint[0],\n y: textPoint[1],\n verticalAlign: orient === HORIZONTAL ? 'middle' : direction,\n align: orient === HORIZONTAL ? direction : 'center',\n text: labelTexts[handleIndex]\n });\n }\n };\n\n SliderZoomView.prototype._formatLabel = function (value, axis) {\n var dataZoomModel = this.dataZoomModel;\n var labelFormatter = dataZoomModel.get('labelFormatter');\n var labelPrecision = dataZoomModel.get('labelPrecision');\n\n if (labelPrecision == null || labelPrecision === 'auto') {\n labelPrecision = axis.getPixelPrecision();\n }\n\n var valueStr = value == null || isNaN(value) ? '' // FIXME Glue code\n : axis.type === 'category' || axis.type === 'time' ? axis.scale.getLabel({\n value: Math.round(value)\n }) // param of toFixed should less then 20.\n : value.toFixed(Math.min(labelPrecision, 20));\n return isFunction(labelFormatter) ? labelFormatter(value, valueStr) : isString(labelFormatter) ? labelFormatter.replace('{value}', valueStr) : valueStr;\n };\n /**\n * @param showOrHide true: show, false: hide\n */\n\n\n SliderZoomView.prototype._showDataInfo = function (showOrHide) {\n // Always show when drgging.\n showOrHide = this._dragging || showOrHide;\n var displayables = this._displayables;\n var handleLabels = displayables.handleLabels;\n handleLabels[0].attr('invisible', !showOrHide);\n handleLabels[1].attr('invisible', !showOrHide); // Highlight move handle\n\n displayables.moveHandle && this.api[showOrHide ? 'enterEmphasis' : 'leaveEmphasis'](displayables.moveHandle, 1);\n };\n\n SliderZoomView.prototype._onDragMove = function (handleIndex, dx, dy, event) {\n this._dragging = true; // For mobile device, prevent screen slider on the button.\n\n eventTool.stop(event.event); // Transform dx, dy to bar coordination.\n\n var barTransform = this._displayables.sliderGroup.getLocalTransform();\n\n var vertex = graphic.applyTransform([dx, dy], barTransform, true);\n\n var changed = this._updateInterval(handleIndex, vertex[0]);\n\n var realtime = this.dataZoomModel.get('realtime');\n\n this._updateView(!realtime); // Avoid dispatch dataZoom repeatly but range not changed,\n // which cause bad visual effect when progressive enabled.\n\n\n changed && realtime && this._dispatchZoomAction(true);\n };\n\n SliderZoomView.prototype._onDragEnd = function () {\n this._dragging = false;\n\n this._showDataInfo(false); // While in realtime mode and stream mode, dispatch action when\n // drag end will cause the whole view rerender, which is unnecessary.\n\n\n var realtime = this.dataZoomModel.get('realtime');\n !realtime && this._dispatchZoomAction(false);\n };\n\n SliderZoomView.prototype._onClickPanel = function (e) {\n var size = this._size;\n\n var localPoint = this._displayables.sliderGroup.transformCoordToLocal(e.offsetX, e.offsetY);\n\n if (localPoint[0] < 0 || localPoint[0] > size[0] || localPoint[1] < 0 || localPoint[1] > size[1]) {\n return;\n }\n\n var handleEnds = this._handleEnds;\n var center = (handleEnds[0] + handleEnds[1]) / 2;\n\n var changed = this._updateInterval('all', localPoint[0] - center);\n\n this._updateView();\n\n changed && this._dispatchZoomAction(false);\n };\n\n SliderZoomView.prototype._onBrushStart = function (e) {\n var x = e.offsetX;\n var y = e.offsetY;\n this._brushStart = new graphic.Point(x, y);\n this._brushing = true;\n this._brushStartTime = +new Date(); // this._updateBrushRect(x, y);\n };\n\n SliderZoomView.prototype._onBrushEnd = function (e) {\n if (!this._brushing) {\n return;\n }\n\n var brushRect = this._displayables.brushRect;\n this._brushing = false;\n\n if (!brushRect) {\n return;\n }\n\n brushRect.attr('ignore', true);\n var brushShape = brushRect.shape;\n var brushEndTime = +new Date(); // console.log(brushEndTime - this._brushStartTime);\n\n if (brushEndTime - this._brushStartTime < 200 && Math.abs(brushShape.width) < 5) {\n // Will treat it as a click\n return;\n }\n\n var viewExtend = this._getViewExtent();\n\n var percentExtent = [0, 100];\n this._range = asc([linearMap(brushShape.x, viewExtend, percentExtent, true), linearMap(brushShape.x + brushShape.width, viewExtend, percentExtent, true)]);\n this._handleEnds = [brushShape.x, brushShape.x + brushShape.width];\n\n this._updateView();\n\n this._dispatchZoomAction(false);\n };\n\n SliderZoomView.prototype._onBrush = function (e) {\n if (this._brushing) {\n // For mobile device, prevent screen slider on the button.\n eventTool.stop(e.event);\n\n this._updateBrushRect(e.offsetX, e.offsetY);\n }\n };\n\n SliderZoomView.prototype._updateBrushRect = function (mouseX, mouseY) {\n var displayables = this._displayables;\n var dataZoomModel = this.dataZoomModel;\n var brushRect = displayables.brushRect;\n\n if (!brushRect) {\n brushRect = displayables.brushRect = new Rect({\n silent: true,\n style: dataZoomModel.getModel('brushStyle').getItemStyle()\n });\n displayables.sliderGroup.add(brushRect);\n }\n\n brushRect.attr('ignore', false);\n var brushStart = this._brushStart;\n var sliderGroup = this._displayables.sliderGroup;\n var endPoint = sliderGroup.transformCoordToLocal(mouseX, mouseY);\n var startPoint = sliderGroup.transformCoordToLocal(brushStart.x, brushStart.y);\n var size = this._size;\n endPoint[0] = Math.max(Math.min(size[0], endPoint[0]), 0);\n brushRect.setShape({\n x: startPoint[0],\n y: 0,\n width: endPoint[0] - startPoint[0],\n height: size[1]\n });\n };\n /**\n * This action will be throttled.\n */\n\n\n SliderZoomView.prototype._dispatchZoomAction = function (realtime) {\n var range = this._range;\n this.api.dispatchAction({\n type: 'dataZoom',\n from: this.uid,\n dataZoomId: this.dataZoomModel.id,\n animation: realtime ? REALTIME_ANIMATION_CONFIG : null,\n start: range[0],\n end: range[1]\n });\n };\n\n SliderZoomView.prototype._findCoordRect = function () {\n // Find the grid corresponding to the first axis referred by dataZoom.\n var rect;\n var coordSysInfoList = collectReferCoordSysModelInfo(this.dataZoomModel).infoList;\n\n if (!rect && coordSysInfoList.length) {\n var coordSys = coordSysInfoList[0].model.coordinateSystem;\n rect = coordSys.getRect && coordSys.getRect();\n }\n\n if (!rect) {\n var width = this.api.getWidth();\n var height = this.api.getHeight();\n rect = {\n x: width * 0.2,\n y: height * 0.2,\n width: width * 0.6,\n height: height * 0.6\n };\n }\n\n return rect;\n };\n\n SliderZoomView.type = 'dataZoom.slider';\n return SliderZoomView;\n}(DataZoomView);\n\nfunction getOtherDim(thisDim) {\n // FIXME\n // 这个逻辑和getOtherAxis里一致,但是写在这里是否不好\n var map = {\n x: 'y',\n y: 'x',\n radius: 'angle',\n angle: 'radius'\n };\n return map[thisDim];\n}\n\nfunction getCursor(orient) {\n return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\n}\n\nexport default SliderZoomView;"]},"metadata":{},"sourceType":"module"} |