PHP Classes

File: vendors/echarts/src/chart/helper/Symbol.js

Recommend this page to a friend!
  Classes of Jorge Castro   Gentelella BladeOne   vendors/echarts/src/chart/helper/Symbol.js   Download  
File: vendors/echarts/src/chart/helper/Symbol.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: Gentelella BladeOne
Render templates using Bootstrap for presentation
Author: By
Last change:
Date: 3 years ago
Size: 8,005 bytes
 

Contents

Class file image Download
/** * @module echarts/chart/helper/Symbol */ define(function (require) { var zrUtil = require('zrender/core/util'); var symbolUtil = require('../../util/symbol'); var graphic = require('../../util/graphic'); var numberUtil = require('../../util/number'); function normalizeSymbolSize(symbolSize) { if (!zrUtil.isArray(symbolSize)) { symbolSize = [+symbolSize, +symbolSize]; } return symbolSize; } /** * @constructor * @alias {module:echarts/chart/helper/Symbol} * @param {module:echarts/data/List} data * @param {number} idx * @extends {module:zrender/graphic/Group} */ function Symbol(data, idx) { graphic.Group.call(this); this.updateData(data, idx); } var symbolProto = Symbol.prototype; function driftSymbol(dx, dy) { this.parent.drift(dx, dy); } symbolProto._createSymbol = function (symbolType, data, idx) { // Remove paths created before this.removeAll(); var seriesModel = data.hostModel; var color = data.getItemVisual(idx, 'color'); var symbolPath = symbolUtil.createSymbol( symbolType, -0.5, -0.5, 1, 1, color ); symbolPath.attr({ z2: 100, culling: true, scale: [0, 0] }); // Rewrite drift method symbolPath.drift = driftSymbol; var size = normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize')); graphic.initProps(symbolPath, { scale: size }, seriesModel, idx); this._symbolType = symbolType; this.add(symbolPath); }; /** * Stop animation * @param {boolean} toLastFrame */ symbolProto.stopSymbolAnimation = function (toLastFrame) { this.childAt(0).stopAnimation(toLastFrame); }; /** * Get scale(aka, current symbol size). * Including the change caused by animation */ symbolProto.getScale = function () { return this.childAt(0).scale; }; /** * Highlight symbol */ symbolProto.highlight = function () { this.childAt(0).trigger('emphasis'); }; /** * Downplay symbol */ symbolProto.downplay = function () { this.childAt(0).trigger('normal'); }; /** * @param {number} zlevel * @param {number} z */ symbolProto.setZ = function (zlevel, z) { var symbolPath = this.childAt(0); symbolPath.zlevel = zlevel; symbolPath.z = z; }; symbolProto.setDraggable = function (draggable) { var symbolPath = this.childAt(0); symbolPath.draggable = draggable; symbolPath.cursor = draggable ? 'move' : 'pointer'; }; /** * Update symbol properties * @param {module:echarts/data/List} data * @param {number} idx */ symbolProto.updateData = function (data, idx) { var symbolType = data.getItemVisual(idx, 'symbol') || 'circle'; var seriesModel = data.hostModel; var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize')); if (symbolType !== this._symbolType) { this._createSymbol(symbolType, data, idx); } else { var symbolPath = this.childAt(0); graphic.updateProps(symbolPath, { scale: symbolSize }, seriesModel, idx); } this._updateCommon(data, idx, symbolSize); this._seriesModel = seriesModel; }; // Update common properties var normalStyleAccessPath = ['itemStyle', 'normal']; var emphasisStyleAccessPath = ['itemStyle', 'emphasis']; var normalLabelAccessPath = ['label', 'normal']; var emphasisLabelAccessPath = ['label', 'emphasis']; symbolProto._updateCommon = function (data, idx, symbolSize) { var symbolPath = this.childAt(0); var seriesModel = data.hostModel; var itemModel = data.getItemModel(idx); var normalItemStyleModel = itemModel.getModel(normalStyleAccessPath); var color = data.getItemVisual(idx, 'color'); // Reset style if (symbolPath.type !== 'image') { symbolPath.useStyle({ strokeNoScale: true }); } var elStyle = symbolPath.style; var hoverStyle = itemModel.getModel(emphasisStyleAccessPath).getItemStyle(); symbolPath.rotation = (itemModel.getShallow('symbolRotate') || 0) * Math.PI / 180 || 0; var symbolOffset = itemModel.getShallow('symbolOffset'); if (symbolOffset) { var pos = symbolPath.position; pos[0] = numberUtil.parsePercent(symbolOffset[0], symbolSize[0]); pos[1] = numberUtil.parsePercent(symbolOffset[1], symbolSize[1]); } symbolPath.setColor(color); zrUtil.extend( elStyle, // Color must be excluded. // Because symbol provide setColor individually to set fill and stroke normalItemStyleModel.getItemStyle(['color']) ); var opacity = data.getItemVisual(idx, 'opacity'); if (opacity != null) { elStyle.opacity = opacity; } var labelModel = itemModel.getModel(normalLabelAccessPath); var hoverLabelModel = itemModel.getModel(emphasisLabelAccessPath); // Get last value dim var dimensions = data.dimensions.slice(); var valueDim; var dataType; while (dimensions.length && ( valueDim = dimensions.pop(), dataType = data.getDimensionInfo(valueDim).type, dataType === 'ordinal' || dataType === 'time' )) {} // jshint ignore:line if (valueDim != null && labelModel.get('show')) { graphic.setText(elStyle, labelModel, color); elStyle.text = zrUtil.retrieve( seriesModel.getFormattedLabel(idx, 'normal'), data.get(valueDim, idx) ); } else { elStyle.text = ''; } if (valueDim != null && hoverLabelModel.getShallow('show')) { graphic.setText(hoverStyle, hoverLabelModel, color); hoverStyle.text = zrUtil.retrieve( seriesModel.getFormattedLabel(idx, 'emphasis'), data.get(valueDim, idx) ); } else { hoverStyle.text = ''; } var size = normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize')); symbolPath.off('mouseover') .off('mouseout') .off('emphasis') .off('normal'); graphic.setHoverStyle(symbolPath, hoverStyle); if (itemModel.getShallow('hoverAnimation')) { var onEmphasis = function() { var ratio = size[1] / size[0]; this.animateTo({ scale: [ Math.max(size[0] * 1.1, size[0] + 3), Math.max(size[1] * 1.1, size[1] + 3 * ratio) ] }, 400, 'elasticOut'); }; var onNormal = function() { this.animateTo({ scale: size }, 400, 'elasticOut'); }; symbolPath.on('mouseover', onEmphasis) .on('mouseout', onNormal) .on('emphasis', onEmphasis) .on('normal', onNormal); } }; symbolProto.fadeOut = function (cb) { var symbolPath = this.childAt(0); // Avoid trigger hoverAnimation when fading symbolPath.off('mouseover') .off('mouseout') .off('emphasis') .off('normal'); // Not show text when animating symbolPath.style.text = ''; graphic.updateProps(symbolPath, { scale: [0, 0] }, this._seriesModel, this.dataIndex, cb); }; zrUtil.inherits(Symbol, graphic.Group); return Symbol; });