提交 311db6e6 编写于 作者: O Ovilia

Merge branch 'master' of github.com:ecomfe/echarts

此差异已折叠。
此差异已折叠。
此差异已折叠。
因为 它太大了无法显示 source diff 。你可以改为 查看blob
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
因为 它太大了无法显示 source diff 。你可以改为 查看blob
此差异已折叠。
此差异已折叠。
{
"name": "echarts",
"version": "3.7.1",
"version": "3.7.2",
"description": "A powerful charting and visualization library for browser",
"keywords": [
"visualization",
......@@ -32,10 +32,10 @@
"url": "https://github.com/ecomfe/echarts.git"
},
"scripts": {
"prepublish": "node build/amd2common.js"
"prepublish": "rm -r lib; node build/amd2common.js"
},
"dependencies": {
"zrender": "^3.6.1"
"zrender": "^3.6.2"
},
"devDependencies": {
"coordtransform": "^2.0.2",
......@@ -45,6 +45,6 @@
"fs-extra": "^0.26.5",
"glob": "^7.0.0",
"webpack": "^1.12.13",
"zrender": "^3.6.1"
"zrender": "^3.6.2"
}
}
......@@ -110,6 +110,7 @@ define(function (require) {
if (forceLayout) {
this._startForceLayoutIteration(forceLayout, layoutAnimation);
}
data.eachItemGraphicEl(function (el, idx) {
var itemModel = data.getItemModel(idx);
// Update draggable
......@@ -150,10 +151,34 @@ define(function (require) {
seriesId: seriesModel.id
});
});
}
}, this);
data.graph.eachEdge(function (edge) {
var el = edge.getGraphicEl();
el.off('mouseover', el.__focusNodeAdjacency);
el.off('mouseout', el.__unfocusNodeAdjacency);
if (edge.getModel().get('focusNodeAdjacency')) {
el.on('mouseover', el.__focusNodeAdjacency = function () {
api.dispatchAction({
type: 'focusNodeAdjacency',
seriesId: seriesModel.id,
edgeDataIndex: edge.dataIndex
});
});
el.on('mouseout', el.__unfocusNodeAdjacency = function () {
api.dispatchAction({
type: 'unfocusNodeAdjacency',
seriesId: seriesModel.id
});
});
}
});
var circularRotateLabel = seriesModel.get('layout') === 'circular'
&& seriesModel.get('circular.rotateLabel');
var cx = data.getLayout('cx');
......@@ -195,35 +220,40 @@ define(function (require) {
focusNodeAdjacency: function (seriesModel, ecModel, api, payload) {
var data = this._model.getData();
var graph = data.graph;
var dataIndex = payload.dataIndex;
var el = data.getItemGraphicEl(dataIndex);
var edgeDataIndex = payload.edgeDataIndex;
if (!el) {
var node = graph.getNodeByIndex(dataIndex);
var edge = graph.getEdgeByIndex(edgeDataIndex);
if (!node && !edge) {
return;
}
var graph = data.graph;
var dataType = el.dataType;
if (dataIndex !== null && dataType !== 'edge') {
graph.eachNode(function (node) {
fadeOutItem(node, nodeOpacityPath, 0.1);
});
graph.eachEdge(function (edge) {
fadeOutItem(edge, lineOpacityPath, 0.1);
});
graph.eachNode(function (node) {
fadeOutItem(node, nodeOpacityPath, 0.1);
});
graph.eachEdge(function (edge) {
fadeOutItem(edge, lineOpacityPath, 0.1);
});
var node = graph.getNodeByIndex(dataIndex);
if (node) {
fadeInItem(node, nodeOpacityPath);
zrUtil.each(node.edges, function (edge) {
if (edge.dataIndex < 0) {
zrUtil.each(node.edges, function (adjacentEdge) {
if (adjacentEdge.dataIndex < 0) {
return;
}
fadeInItem(edge, lineOpacityPath);
fadeInItem(edge.node1, nodeOpacityPath);
fadeInItem(edge.node2, nodeOpacityPath);
fadeInItem(adjacentEdge, lineOpacityPath);
fadeInItem(adjacentEdge.node1, nodeOpacityPath);
fadeInItem(adjacentEdge.node2, nodeOpacityPath);
});
}
if (edge) {
fadeInItem(edge, lineOpacityPath);
fadeInItem(edge.node1, nodeOpacityPath);
fadeInItem(edge.node2, nodeOpacityPath);
}
},
unfocusNodeAdjacency: function (seriesModel, ecModel, api, payload) {
......
......@@ -83,6 +83,11 @@ define(function (require) {
vec2.sub(v12, n2.p, n1.p);
var d = vec2.len(v12) - e.d;
var w = n2.w / (n1.w + n2.w);
if (isNaN(w)) {
w = 0;
}
vec2.normalize(v12, v12);
!n1.fixed && scaleAndAdd(n1.p, n1.p, v12, w * d * friction);
......
......@@ -49,7 +49,6 @@ define(function (require) {
var nodes = nodeData.mapArray('value', function (value, idx) {
var point = nodeData.getItemLayout(idx);
// var w = numberUtil.linearMap(value, nodeDataExtent, [0, 50]);
var rep = numberUtil.linearMap(value, nodeDataExtent, repulsion);
if (isNaN(rep)) {
rep = (repulsion[0] + repulsion[1]) / 2;
......
......@@ -171,187 +171,14 @@ define(function (require) {
/**
* @private
*/
axisTick: function () {
axisTickLabel: function () {
var axisModel = this.axisModel;
var axis = axisModel.axis;
if (!axisModel.get('axisTick.show') || axis.scale.isBlank()) {
return;
}
var tickModel = axisModel.getModel('axisTick');
var opt = this.opt;
var lineStyleModel = tickModel.getModel('lineStyle');
var tickLen = tickModel.get('length');
var tickInterval = getInterval(tickModel, opt.labelInterval);
var ticksCoords = axis.getTicksCoords(tickModel.get('alignWithLabel'));
var ticks = axis.scale.getTicks();
var showMinLabel = axisModel.get('axisLabel.showMinLabel');
var showMaxLabel = axisModel.get('axisLabel.showMaxLabel');
var pt1 = [];
var pt2 = [];
var matrix = this._transform;
var tickEls = [];
var ticksCnt = ticksCoords.length;
for (var i = 0; i < ticksCnt; i++) {
// Only ordinal scale support tick interval
if (ifIgnoreOnTick(axis, i, tickInterval, ticksCnt,
showMinLabel, showMaxLabel)
) {
continue;
}
var tickCoord = ticksCoords[i];
pt1[0] = tickCoord;
pt1[1] = 0;
pt2[0] = tickCoord;
pt2[1] = opt.tickDirection * tickLen;
if (matrix) {
v2ApplyTransform(pt1, pt1, matrix);
v2ApplyTransform(pt2, pt2, matrix);
}
// Tick line, Not use group transform to have better line draw
var tickEl = new graphic.Line(graphic.subPixelOptimizeLine({
// Id for animation
anid: 'tick_' + ticks[i],
shape: {
x1: pt1[0],
y1: pt1[1],
x2: pt2[0],
y2: pt2[1]
},
style: zrUtil.defaults(
lineStyleModel.getLineStyle(),
{
stroke: axisModel.get('axisLine.lineStyle.color')
}
),
z2: 2,
silent: true
}));
this.group.add(tickEl);
tickEls.push(tickEl);
}
fixMinMaxLabelShow(axisModel, this.textEls, tickEls);
},
/**
* @param {module:echarts/coord/cartesian/AxisModel} axisModel
* @param {module:echarts/coord/cartesian/GridModel} gridModel
* @private
*/
axisLabel: function () {
var opt = this.opt;
var axisModel = this.axisModel;
var axis = axisModel.axis;
var show = retrieve(opt.axisLabelShow, axisModel.get('axisLabel.show'));
if (!show || axis.scale.isBlank()) {
return;
}
var labelModel = axisModel.getModel('axisLabel');
var labelMargin = labelModel.get('margin');
var ticks = axis.scale.getTicks();
var labels = axisModel.getFormattedLabels();
// Special label rotate.
var labelRotation = (
retrieve(opt.labelRotate, labelModel.get('rotate')) || 0
) * PI / 180;
var labelLayout = innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);
var categoryData = axisModel.get('data');
this.textEls = [];
var silent = isSilent(axisModel);
var triggerEvent = axisModel.get('triggerEvent');
var tickEls = buildAxisTick(this, axisModel, opt);
var labelEls = buildAxisLabel(this, axisModel, opt);
var showMinLabel = axisModel.get('axisLabel.showMinLabel');
var showMaxLabel = axisModel.get('axisLabel.showMaxLabel');
zrUtil.each(ticks, function (tickVal, index) {
if (ifIgnoreOnTick(axis, index, opt.labelInterval, ticks.length,
showMinLabel, showMaxLabel)
) {
return;
}
var itemLabelModel = labelModel;
if (categoryData && categoryData[tickVal] && categoryData[tickVal].textStyle) {
itemLabelModel = new Model(
categoryData[tickVal].textStyle, labelModel, axisModel.ecModel
);
}
var textColor = itemLabelModel.getTextColor()
|| axisModel.get('axisLine.lineStyle.color');
var tickCoord = axis.dataToCoord(tickVal);
var pos = [
tickCoord,
opt.labelOffset + opt.labelDirection * labelMargin
];
var labelStr = axis.scale.getLabel(tickVal);
var textEl = new graphic.Text({
// Id for animation
anid: 'label_' + tickVal,
position: pos,
rotation: labelLayout.rotation,
silent: silent,
z2: 10
});
graphic.setTextStyle(textEl.style, itemLabelModel, {
text: labels[index],
textAlign: itemLabelModel.getShallow('align', true)
|| labelLayout.textAlign,
textVerticalAlign: itemLabelModel.getShallow('verticalAlign', true)
|| itemLabelModel.getShallow('baseline', true)
|| labelLayout.textVerticalAlign,
textFill: typeof textColor === 'function'
? textColor(
// (1) In category axis with data zoom, tick is not the original
// index of axis.data. So tick should not be exposed to user
// in category axis.
// (2) Compatible with previous version, which always returns labelStr.
// But in interval scale labelStr is like '223,445', which maked
// user repalce ','. So we modify it to return original val but remain
// it as 'string' to avoid error in replacing.
axis.type === 'category' ? labelStr : axis.type === 'value' ? tickVal + '' : tickVal,
index
)
: textColor
});
// Pack data for mouse event
if (triggerEvent) {
textEl.eventData = makeAxisEventDataBase(axisModel);
textEl.eventData.targetType = 'axisLabel';
textEl.eventData.value = labelStr;
}
// FIXME
this._dumbGroup.add(textEl);
textEl.updateTransform();
this.textEls.push(textEl);
this.group.add(textEl);
textEl.decomposeTransform();
}, this);
fixMinMaxLabelShow(axisModel, labelEls, tickEls);
},
/**
......@@ -573,17 +400,23 @@ define(function (require) {
);
}
function fixMinMaxLabelShow(axisModel, textEls, tickEls) {
function fixMinMaxLabelShow(axisModel, labelEls, tickEls) {
// If min or max are user set, we need to check
// If the tick on min(max) are overlap on their neighbour tick
// If they are overlapped, we need to hide the min(max) tick label
var showMinLabel = axisModel.get('axisLabel.showMinLabel');
var showMaxLabel = axisModel.get('axisLabel.showMaxLabel');
var firstLabel = textEls[0];
var nextLabel = textEls[1];
var lastLabel = textEls[textEls.length - 1];
var prevLabel = textEls[textEls.length - 2];
// FIXME
// Have not consider onBand yet, where tick els is more than label els.
labelEls = labelEls || [];
tickEls = tickEls || [];
var firstLabel = labelEls[0];
var nextLabel = labelEls[1];
var lastLabel = labelEls[labelEls.length - 1];
var prevLabel = labelEls[labelEls.length - 2];
var firstTick = tickEls[0];
var nextTick = tickEls[1];
......@@ -591,35 +424,40 @@ define(function (require) {
var prevTick = tickEls[tickEls.length - 2];
if (showMinLabel === false) {
firstLabel.ignore = true;
tickEls[0].ignore = true;
ignoreEl(firstLabel);
ignoreEl(firstTick);
}
else if (axisModel.getMin() != null && isTwoLabelOverlapped(firstLabel, nextLabel)) {
else if (isTwoLabelOverlapped(firstLabel, nextLabel)) {
if (showMinLabel) {
nextLabel.ignore = true;
nextTick.ignore = true;
ignoreEl(nextLabel);
ignoreEl(nextTick);
}
else {
firstLabel.ignore = true;
firstTick.ignore = true;
ignoreEl(firstLabel);
ignoreEl(firstTick);
}
}
if (showMaxLabel === false) {
lastLabel.ignore = true;
ignoreEl(lastLabel);
ignoreEl(lastTick);
}
else if (axisModel.getMax() != null && isTwoLabelOverlapped(prevLabel, lastLabel)) {
else if (isTwoLabelOverlapped(prevLabel, lastLabel)) {
if (showMaxLabel) {
prevLabel.ignore = true;
prevTick.ignore = true;
ignoreEl(prevLabel);
ignoreEl(prevTick);
}
else {
lastLabel.ignore = true;
lastTick.ignore = true;
ignoreEl(lastLabel);
ignoreEl(lastTick);
}
}
}
function ignoreEl(el) {
el && (el.ignore = true);
}
function isTwoLabelOverlapped(current, next, labelLayout) {
// current and next has the same rotation.
var firstRect = current && current.getBoundingRect().clone();
......@@ -659,6 +497,9 @@ define(function (require) {
return false;
}
// FIXME
// Have not consider label overlap (if label is too long) yet.
var rawTick;
var scale = axis.scale;
return scale.type === 'ordinal'
......@@ -683,6 +524,187 @@ define(function (require) {
return interval;
};
function buildAxisTick(axisBuilder, axisModel, opt) {
var axis = axisModel.axis;
if (!axisModel.get('axisTick.show') || axis.scale.isBlank()) {
return;
}
var tickModel = axisModel.getModel('axisTick');
var lineStyleModel = tickModel.getModel('lineStyle');
var tickLen = tickModel.get('length');
var tickInterval = getInterval(tickModel, opt.labelInterval);
var ticksCoords = axis.getTicksCoords(tickModel.get('alignWithLabel'));
// FIXME
// Corresponds to ticksCoords ?
var ticks = axis.scale.getTicks();
var showMinLabel = axisModel.get('axisLabel.showMinLabel');
var showMaxLabel = axisModel.get('axisLabel.showMaxLabel');
var pt1 = [];
var pt2 = [];
var matrix = axisBuilder._transform;
var tickEls = [];
var ticksCnt = ticksCoords.length;
for (var i = 0; i < ticksCnt; i++) {
// Only ordinal scale support tick interval
if (ifIgnoreOnTick(
axis, i, tickInterval, ticksCnt,
showMinLabel, showMaxLabel
)) {
continue;
}
var tickCoord = ticksCoords[i];
pt1[0] = tickCoord;
pt1[1] = 0;
pt2[0] = tickCoord;
pt2[1] = opt.tickDirection * tickLen;
if (matrix) {
v2ApplyTransform(pt1, pt1, matrix);
v2ApplyTransform(pt2, pt2, matrix);
}
// Tick line, Not use group transform to have better line draw
var tickEl = new graphic.Line(graphic.subPixelOptimizeLine({
// Id for animation
anid: 'tick_' + ticks[i],
shape: {
x1: pt1[0],
y1: pt1[1],
x2: pt2[0],
y2: pt2[1]
},
style: zrUtil.defaults(
lineStyleModel.getLineStyle(),
{
stroke: axisModel.get('axisLine.lineStyle.color')
}
),
z2: 2,
silent: true
}));
axisBuilder.group.add(tickEl);
tickEls.push(tickEl);
}
return tickEls;
}
function buildAxisLabel(axisBuilder, axisModel, opt) {
var axis = axisModel.axis;
var show = retrieve(opt.axisLabelShow, axisModel.get('axisLabel.show'));
if (!show || axis.scale.isBlank()) {
return;
}
var labelModel = axisModel.getModel('axisLabel');
var labelMargin = labelModel.get('margin');
var ticks = axis.scale.getTicks();
var labels = axisModel.getFormattedLabels();
// Special label rotate.
var labelRotation = (
retrieve(opt.labelRotate, labelModel.get('rotate')) || 0
) * PI / 180;
var labelLayout = innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);
var categoryData = axisModel.get('data');
var labelEls = [];
var silent = isSilent(axisModel);
var triggerEvent = axisModel.get('triggerEvent');
var showMinLabel = axisModel.get('axisLabel.showMinLabel');
var showMaxLabel = axisModel.get('axisLabel.showMaxLabel');
zrUtil.each(ticks, function (tickVal, index) {
if (ifIgnoreOnTick(
axis, index, opt.labelInterval, ticks.length,
showMinLabel, showMaxLabel
)) {
return;
}
var itemLabelModel = labelModel;
if (categoryData && categoryData[tickVal] && categoryData[tickVal].textStyle) {
itemLabelModel = new Model(
categoryData[tickVal].textStyle, labelModel, axisModel.ecModel
);
}
var textColor = itemLabelModel.getTextColor()
|| axisModel.get('axisLine.lineStyle.color');
var tickCoord = axis.dataToCoord(tickVal);
var pos = [
tickCoord,
opt.labelOffset + opt.labelDirection * labelMargin
];
var labelStr = axis.scale.getLabel(tickVal);
var textEl = new graphic.Text({
// Id for animation
anid: 'label_' + tickVal,
position: pos,
rotation: labelLayout.rotation,
silent: silent,
z2: 10
});
graphic.setTextStyle(textEl.style, itemLabelModel, {
text: labels[index],
textAlign: itemLabelModel.getShallow('align', true)
|| labelLayout.textAlign,
textVerticalAlign: itemLabelModel.getShallow('verticalAlign', true)
|| itemLabelModel.getShallow('baseline', true)
|| labelLayout.textVerticalAlign,
textFill: typeof textColor === 'function'
? textColor(
// (1) In category axis with data zoom, tick is not the original
// index of axis.data. So tick should not be exposed to user
// in category axis.
// (2) Compatible with previous version, which always returns labelStr.
// But in interval scale labelStr is like '223,445', which maked
// user repalce ','. So we modify it to return original val but remain
// it as 'string' to avoid error in replacing.
axis.type === 'category' ? labelStr : axis.type === 'value' ? tickVal + '' : tickVal,
index
)
: textColor
});
// Pack data for mouse event
if (triggerEvent) {
textEl.eventData = makeAxisEventDataBase(axisModel);
textEl.eventData.targetType = 'axisLabel';
textEl.eventData.value = labelStr;
}
// FIXME
axisBuilder._dumbGroup.add(textEl);
textEl.updateTransform();
labelEls.push(textEl);
axisBuilder.group.add(textEl);
textEl.decomposeTransform();
});
return labelEls;
}
return AxisBuilder;
});
\ No newline at end of file
......@@ -9,7 +9,7 @@ define(function (require) {
var getInterval = AxisBuilder.getInterval;
var axisBuilderAttrs = [
'axisLine', 'axisLabel', 'axisTick', 'axisName'
'axisLine', 'axisTickLabel', 'axisName'
];
var selfBuilderAttrs = [
'splitArea', 'splitLine'
......@@ -106,7 +106,8 @@ define(function (require) {
// Batching the lines if color are the same
var lineStyle = lineStyleModel.getLineStyle();
for (var i = 0; i < ticksCoords.length; i++) {
if (ifIgnoreOnTick(axis, i, lineInterval, ticksCoords.length,
if (ifIgnoreOnTick(
axis, i, lineInterval, ticksCoords.length,
showMinLabel, showMaxLabel
)) {
continue;
......@@ -183,7 +184,8 @@ define(function (require) {
var showMaxLabel = axisModel.get('axisLabel.showMaxLabel');
for (var i = 1; i < ticksCoords.length; i++) {
if (ifIgnoreOnTick(axis, i, areaInterval, ticksCoords.length,
if (ifIgnoreOnTick(
axis, i, areaInterval, ticksCoords.length,
showMinLabel, showMaxLabel
)) {
continue;
......
......@@ -6,7 +6,7 @@ define(function (require) {
var brushHelper = require('../helper/brushHelper');
var graphic = require('../../util/graphic');
var elementList = ['axisLine', 'axisLabel', 'axisTick', 'axisName'];
var elementList = ['axisLine', 'axisTickLabel', 'axisName'];
var AxisView = require('../../echarts').extendComponentView({
......
......@@ -7,7 +7,7 @@ define(function (require) {
var AxisBuilder = require('./AxisBuilder');
var axisBuilderAttrs = [
'axisLine', 'axisLabel', 'axisTick', 'axisName'
'axisLine', 'axisTickLabel', 'axisName'
];
var selfBuilderAttrs = [
'splitLine', 'splitArea'
......
......@@ -8,7 +8,7 @@ define(function (require) {
var ifIgnoreOnTick = AxisBuilder.ifIgnoreOnTick;
var axisBuilderAttrs = [
'axisLine', 'axisLabel', 'axisTick', 'axisName'
'axisLine', 'axisTickLabel', 'axisName'
];
var selfBuilderAttr = 'splitLine';
......@@ -70,7 +70,8 @@ define(function (require) {
var showMaxLabel = axisModel.get('axisLabel.showMaxLabel');
for (var i = 0; i < ticksCoords.length; ++i) {
if (ifIgnoreOnTick(axis, i, lineInterval, ticksCoords.length,
if (ifIgnoreOnTick(
axis, i, lineInterval, ticksCoords.length,
showMinLabel, showMaxLabel
)) {
continue;
......
......@@ -41,6 +41,12 @@ define(function (require) {
* @type {module:zrender/container/Group}
*/
this.group.add(this._controllerGroup = new Group());
/**
*
* @private
*/
this._showController;
},
/**
......@@ -140,7 +146,7 @@ define(function (require) {
var contentRect = contentGroup.getBoundingRect();
var controllerRect = controllerGroup.getBoundingRect();
var showController = contentRect[wh] > maxSize[wh];
var showController = this._showController = contentRect[wh] > maxSize[wh];
var contentPos = [-contentRect.x, -contentRect.y];
// Remain contentPos when scroll animation perfroming.
......@@ -204,7 +210,11 @@ define(function (require) {
// Content translate animation.
var pageInfo = this._getPageInfo(legendModel);
pageInfo.pageIndex != null && graphic.updateProps(
contentGroup, {position: pageInfo.contentPosition}, legendModel
contentGroup,
{position: pageInfo.contentPosition},
// When switch from "show controller" to "not show controller", view should be
// updated immediately without animation, otherwise causes weird efffect.
showController ? legendModel : false
);
this._updatePageInfoView(legendModel, pageInfo);
......@@ -281,11 +291,16 @@ define(function (require) {
var pageNextDataIndex;
var targetItemGroup;
contentGroup.eachChild(function (child) {
if (child.__legendDataIndex === currDataIndex) {
targetItemGroup = child;
}
});
if (this._showController) {
contentGroup.eachChild(function (child) {
if (child.__legendDataIndex === currDataIndex) {
targetItemGroup = child;
}
});
}
else {
targetItemGroup = contentGroup.childAt(0);
}
var pageCount = containerRectSize ? Math.ceil(contentRect[wh] / containerRectSize) : 0;
......
......@@ -5,7 +5,7 @@ define(function (require) {
var graphic = require('../../util/graphic');
var axisBuilderAttrs = [
'axisLine', 'axisLabel', 'axisTick', 'axisName'
'axisLine', 'axisTickLabel', 'axisName'
];
return require('../../echarts').extendComponentView({
......
......@@ -39,7 +39,6 @@ define(function(require) {
optionUpdated: function (newOption, isInit) {
ContinuousModel.superApply(this, 'optionUpdated', arguments);
this.resetTargetSeries();
this.resetExtent();
this.resetVisual(function (mappingOption) {
......
......@@ -81,7 +81,6 @@ define(function(require) {
*/
this._pieceList = [];
this.resetTargetSeries();
this.resetExtent();
/**
......
......@@ -64,7 +64,8 @@ define(function(require) {
zlevel: 0,
z: 4,
seriesIndex: null, // 所控制的series indices,默认所有有value的series.
seriesIndex: 'all', // 'all' or null/undefined: all series.
// A number or an array of number: the specified series.
// set min: 0, max: 200, only for campatible with ec2.
// In fact min max should not have default value.
......@@ -181,26 +182,31 @@ define(function(require) {
);
},
/**
* @protected
* @return {Array.<number>} An array of series indices.
*/
resetTargetSeries: function () {
var thisOption = this.option;
var allSeriesIndex = thisOption.seriesIndex == null;
thisOption.seriesIndex = allSeriesIndex
? [] : modelUtil.normalizeToArray(thisOption.seriesIndex);
getTargetSeriesIndices: function () {
var optionSeriesIndex = this.option.seriesIndex;
var seriesIndices = [];
if (optionSeriesIndex == null || optionSeriesIndex === 'all') {
this.ecModel.eachSeries(function (seriesModel, index) {
seriesIndices.push(index);
});
}
else {
seriesIndices = modelUtil.normalizeToArray(optionSeriesIndex);
}
allSeriesIndex && this.ecModel.eachSeries(function (seriesModel, index) {
thisOption.seriesIndex.push(index);
});
return seriesIndices;
},
/**
* @public
*/
eachTargetSeries: function (callback, context) {
zrUtil.each(this.option.seriesIndex, function (seriesIndex) {
zrUtil.each(this.getTargetSeriesIndices(), function (seriesIndex) {
callback.call(context, this.ecModel.getSeriesByIndex(seriesIndex));
}, this);
},
......
......@@ -1526,9 +1526,9 @@ define(function (require) {
/**
* @type {number}
*/
version: '3.7.1',
version: '3.7.2',
dependencies: {
zrender: '3.6.1'
zrender: '3.6.2'
}
};
......
......@@ -142,7 +142,7 @@ define(function (require) {
// which will be much faster and useful in pixel manipulation
var returnRGBArray = !!out;
!isNormalized && (value = this._normalizeData(value));
out = zrColor.fastMapToColor(value, thisOption.parsedVisual, out);
out = zrColor.fastLerp(value, thisOption.parsedVisual, out);
return returnRGBArray ? out : zrColor.stringify(out, 'rgba');
},
this
......@@ -152,7 +152,7 @@ define(function (require) {
_doMap: {
linear: function (normalized) {
return zrColor.stringify(
zrColor.fastMapToColor(normalized, this.option.parsedVisual),
zrColor.fastLerp(normalized, this.option.parsedVisual),
'rgba'
);
},
......@@ -161,7 +161,7 @@ define(function (require) {
var result = getSpecifiedVisual.call(this, value);
if (result == null) {
result = zrColor.stringify(
zrColor.fastMapToColor(normalized, this.option.parsedVisual),
zrColor.fastLerp(normalized, this.option.parsedVisual),
'rgba'
);
}
......
......@@ -24,11 +24,6 @@
}
</style>
<h1>
<input type="button" onclick="testHelper.setURLParam(['cn', 'en'], 'cn')" value="CN"/>
<input type="button" onclick="testHelper.setURLParam(['cn', 'en'], 'en')" value="EN"/>
</h1>
<div id="main" class="chart"></div>
<script>
......
<!DOCTYPE>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<script src="esl.js"></script>
<script src="config.js"></script>
<script src="lib/jquery.min.js"></script>
<script src="lib/facePrint.js"></script>
<script src="lib/testHelper.js"></script>
<link rel="stylesheet" href="reset.css">
</head>
<body>
<style>
h1 {
line-height: 60px;
height: 60px;
background: #146402;
text-align: center;
font-weight: bold;
color: #eee;
font-size: 14px;
}
.chart {
height: 500px;
}
</style>
<div class="chart" id="main"></div>
<script>
var echarts;
var chart;
var myChart;
var groupCategories = [];
var groupColors = [];
require([
'echarts',
'echarts/chart/line',
'echarts/chart/bar',
'echarts/chart/pie',
'echarts/chart/scatter',
'echarts/chart/map',
'echarts/chart/parallel',
'echarts/chart/radar',
'echarts/chart/graph',
'echarts/component/grid',
'echarts/component/polar',
'echarts/component/geo',
'echarts/component/singleAxis',
'echarts/component/legend',
'echarts/component/tooltip',
'echarts/component/toolbox',
'echarts/component/visualMap',
'echarts/component/dataZoom'
], function (ec) {
echarts = ec;
option = {
"title": {
"text": "兴趣点",
"top": "top",
"left": "left"
},
"tooltip": { },
"legend": [
{
"data": [ "长期", "短期" ],
"selected": {
"长期": true,
"短期": true
},
"orient": "vertical",
"left": "right"
}
],
"series": [
{
"type": "graph",
"layout": "force",
"data": [
{
"name": "戴胜",
"value": 31,
"symbolSize": 0.6,
"category": 1,
"x": null,
"y": null,
"label": {
"normal": {
"position": "right",
"show": true
}
}
}, {
"name": "石榴",
"value": 30,
"symbolSize": 0.3,
"category": 1,
"x": null,
"y": null,
"label": {
"normal": {
"position": "right",
"show": true
}
}
}, {
"name": "水果",
"value": 30,
"symbolSize": 0.3,
"category": 1,
"x": null,
"y": null,
"label": {
"normal": {
"position": "right",
"show": true
}
}
}
],
"links": [
{
"source": "石榴",
"target": "水果"
}
],
"categories": [
{
"key": "longAttentionList",
"name": "长期"
}, {
"key": "shortAttentionList",
"name": "短期"
}
],
"roam": true,
"focusNodeAdjacency": true,
"label": {
"emphasis": {
"position": "right",
"show": true
}
},
"lineStyle": {
"normal": {
"width": 0.5,
"curveness": 0.3,
"opacity": 0.7
}
}
}
]
};
testHelper.createChart(echarts, 'main', option);
});
</script>
</body>
</html>
\ No newline at end of file
......@@ -44,7 +44,7 @@
<div class="chart" id="scroll-lr"></div>
<h1>Scroll vertically</h1>
<div class="chart" id="scroll-v"></div>
<h1>Scroll vertically, left: 10, top: 'center', position: 'start', height: 50%</h1>
<h1>Scroll vertically, left: 10, top: 'center', position: 'start', height: 50% (Turn the second page and resize it until page button disappear)</h1>
<div class="chart" id="scroll-v2"></div>
<script>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册