提交 02b3ef57 编写于 作者: P pah100

Merge branch 'master' of https://github.com/pissang/echarts-next

......@@ -4,6 +4,8 @@ define(function (require) {
var zrUtil = require('zrender/core/util');
zrUtil.extend(require('../../model/Model').prototype, require('./barItemStyle'));
return require('../../echarts').extendChartView({
type: 'bar',
......@@ -39,13 +41,17 @@ define(function (require) {
width: layout.width
},
style: zrUtil.extend(
itemModel.getModel('itemStyle.normal').getItemStyle(),
itemModel.getModel('itemStyle.normal').getBarItemStyle(),
{
fill: data.getItemVisual(dataIndex, 'color')
}
)
});
api.setHoverStyle(
rect, itemModel.getModel('itemStyle.emphasis').getBarItemStyle()
);
data.setItemGraphicEl(dataIndex, rect);
group.add(rect);
......
define(function (require) {
return {
getBarItemStyle: require('../../model/mixin/makeStyleMapper')(
[
['fill', 'color'],
['stroke', 'barBorderColor'],
['lineWidth', 'barBorderWidth'],
['opacity'],
['shadowBlur'],
['shadowOffsetX'],
['shadowOffsetY'],
['shadowColor']
]
)
};
});
\ No newline at end of file
......@@ -23,7 +23,7 @@ define(function (require) {
type: 'legend',
init: function () {
this._symbolElMap = {};
this._itemElMap = {};
},
render: function (legendModel, ecModel, api) {
......@@ -56,32 +56,35 @@ define(function (require) {
var seriesModel = ecModel.getSeriesByName(seriesName, true);
var data = seriesModel.getData();
var legendSymbol;
var symbolElMap = this._symbolElMap;
var itemElMap = this._itemElMap;
var itemGroup = itemElMap[seriesName];
if (legendModel.isSelected(seriesName)) {
legendSymbol = this._createSymbol(
data, x, y, width, height, data.getVisual('color'), api
itemGroup = new api.Group();
this._createSymbol(
data, x, y, width, height, data.getVisual('color'), itemGroup
);
itemElMap[seriesName] = itemGroup;
}
else {
legendSymbol = symbolElMap[seriesName];
legendSymbol.eachChild(function (child) {
child.style.set(LEGEND_DISABLE_STYLE);
itemGroup.eachChild(function (child) {
if (child.type !== 'text') {
child.style.set(LEGEND_DISABLE_STYLE);
}
});
legendSymbol.off('click');
itemGroup.off('click');
}
symbolElMap[seriesName] = legendSymbol;
var text = new api.Text({
style: {
text: seriesName,
x: x + width + 5,
y: y,
y: y + height / 2,
fill: '#000',
textAlign: 'left',
textBaseline: 'top'
textBaseline: 'middle'
}
});
itemGroup.add(text);
var textRect = text.getBoundingRect();
if (orient === 'horizontal') {
......@@ -91,21 +94,16 @@ define(function (require) {
y += Math.max(height, textRect.height) + itemGap;
}
group.add(legendSymbol);
group.add(text);
group.add(itemGroup);
var onClick = zrUtil.curry(createSelectActionDispatcher, this.uid, seriesName, api);
legendSymbol.on('click', onClick, this);
text.on('click', onClick, this);
itemGroup.on('click', zrUtil.curry(createSelectActionDispatcher, this.uid, seriesName, api), this);
}, this);
var groupRect = group.getBoundingRect();
group.position[0] -= groupRect.width / 2;
},
_createSymbol: function (data, x, y, width, height, color, api) {
var group = new api.Group();
_createSymbol: function (data, x, y, width, height, color, group) {
// Using rect symbol defaultly
var legendSymbolType = data && data.getVisual('legendSymbol')
|| 'roundRect';
......
/**
* Grid is a region which contains at most 4 cartesian systems
*
* TODO Axis Scale
* TODO Default cartesian
*/
define(function(require, factory) {
......
......@@ -214,6 +214,17 @@ define(function (require) {
this._rawValueDims = rawValue1D ? dimensions.slice(1, 2) : dimensions.slice();
// Use the name in option as data id in two value axis case
for (var i = 0; i < optionModelIndices.length; i++) {
if (! nameList[i]) {
var modelIdx = optionModelIndices[i];
var model = optionModels[modelIdx];
if (model && model.option) {
nameList[i] = model.option.name || '';
}
}
}
this._nameList = nameList;
};
......@@ -335,15 +346,13 @@ define(function (require) {
return this.indices[idx];
};
var nameQueryPath = ['name'];
/**
* @param {number} idx
* @return {string}
*/
listProto.getName = function (idx) {
var nameList = this._nameList;
return (nameList && nameList[this.indices[idx]])
|| this.getItemModel(idx).get(nameQueryPath, true) || '';
return (nameList && nameList[this.indices[idx]]) || '';
};
......@@ -522,7 +531,12 @@ define(function (require) {
* @return {module:echarts/data/DataDiffer}
*/
listProto.diff = function (oldList) {
return new DataDiffer(oldList ? oldList.indices : [], this.indices);
var nameList = this._nameList;
return new DataDiffer(
oldList ? oldList.indices : [], this.indices, function (idx) {
return nameList && nameList[idx] || idx;
}
);
};
/**
......
......@@ -49,7 +49,7 @@ define(function (require) {
* @return {*}
*/
get: function (path, ignoreParent) {
if (! path) {
if (!path) {
return this.option;
}
......@@ -58,18 +58,34 @@ define(function (require) {
}
var obj = this.option;
var parentModel = this.parentModel;
for (var i = 0; i < path.length; i++) {
obj = obj && obj[path[i]];
if (obj == null) {
break;
}
}
if (obj == null && this.parentModel && !ignoreParent) {
return this.parentModel.get(path);
if (obj == null && parentModel && !ignoreParent) {
obj = parentModel.get(path);
}
return obj;
},
/**
* @param {string} key
* @param {boolean} [ignoreParent=false]
* @return {*}
*/
getShallow: function (key, ignoreParent) {
var option = this.option;
var val = option && option[key];
var parentModel = this.parentModel;
if (val == null && parentModel && !ignoreParent) {
val = parentModel.getShallow(key);
}
return val;
},
/**
* @param {string} path
* @return {module:echarts/model/Model}
......@@ -80,6 +96,13 @@ define(function (require) {
return new Model(obj, parentModel && parentModel.getModel(path));
},
/**
* If model has option
*/
isEmpty: function () {
return this.option == null;
},
restoreData: function () {},
// Pending
......
// TODO Parse shadow style
// TODO Only shallow path support
define(function (require) {
var zrUtil = require('zrender/core/util');
......@@ -16,7 +17,7 @@ define(function (require) {
if (excludes && zrUtil.indexOf(excludes, propName) >= 0) {
continue;
}
var val = this.get(propName);
var val = this.getShallow(propName);
if (val != null) {
style[properties[i][0]] = val;
}
......
......@@ -6,6 +6,7 @@ define(function(require) {
var matrix = require('zrender/core/matrix');
var round = Math.round;
var Path = require('zrender/graphic/Path');
var colorTool = require('zrender/tool/color');
var graphic = {
......@@ -58,6 +59,8 @@ define(function(require) {
/**
* Resize a path to fit the rect
* @param {module:zrender/graphic/Path} path
* @param {Object} rect
*/
resizePath: function (path, rect) {
if (! path.applyTransform) {
......@@ -152,6 +155,31 @@ define(function(require) {
return (doubledPosition + round(lineWidth)) % 2 === 0
? doubledPosition / 2
: (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2;
},
/**
* Set hover style of element
* @param {module:zrender/graphic/Displayable} el
* @param {Object} hoverStyle
*/
setHoverStyle: function (el, hoverStyle) {
var stroke = el.style.stroke;
var fill = el.style.fill;
hoverStyle = hoverStyle || {};
hoverStyle.fill = hoverStyle.fill || colorTool.lift(fill, -0.2);
hoverStyle.stroke = hoverStyle.stroke || colorTool.lift(stroke, -0.2);
var normalStyle = {};
for (var name in hoverStyle) {
normalStyle[name] = el.style[name];
}
el.on('mouseover', function () {
this.style.set(hoverStyle);
this.dirty();
}).on('mouseout', function () {
this.style.set(normalStyle);
this.dirty();
});
}
};
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册