提交 7077d373 编写于 作者: L lang

Daily update

上级 64cc4a94
define(function(require) {
'use strict';
var zrUtil = require('zrender/core/util');
var extensionAPIList = ['addProcessor', 'update'];
function ExtensionAPI(echarts) {
zrUtil.each(extensionAPIList, function (name) {
this[name] = zrUtil.bind(echarts[name], echarts);
}, this);
};
return ExtensionAPI;
});
\ No newline at end of file
......@@ -8,12 +8,10 @@ define(function (require) {
type: 'bar',
init: function () {
},
render: function () {
init: function () {},
render: function (option, api) {
}
});
......
......@@ -2,10 +2,9 @@ define(function(require) {
'use strict';
var Series = require('../../data/Series');
var List = require('../../data/List');
var BarSeries = Series.extend({
return require('../../data/Series').extend({
type: 'bar',
......@@ -13,6 +12,4 @@ define(function(require) {
return List.fromArray(option.data);
}
});
return BarSeries;
});
\ No newline at end of file
......@@ -2,15 +2,29 @@ define(function (require) {
var stateSyncHelper = require('../../processor/legendFilterStateSyncHelper')('pieDataItemFilter');
var zrUtil = require('zrender/core/util');
var PieDataFilter = require('../../processor/Processor').extend({
type: 'pieDataItemFilter',
getInitialState: function (option) {
var allData = option.get('legend.data') || [];
var pieNameList = zrUtil.map(option.get('legend.data') || [], function (item) {
return item.name == null ? item.name : item;
});
var pieSeries = option.getSeriesByType('pie');
pieNameList = zrUtil.filter(pieNameList, function (name) {
if (name) {
for (var i = 0; i < pieSeries.length; i++) {
if (pieSeries[i].getData().getItemByName(name)) {
return true;
}
}
}
});
return {
all: allData,
legend: allData.slice()
all: pieNameList,
selected: pieNameList.slice()
};
},
......@@ -18,7 +32,7 @@ define(function (require) {
stateSyncHelper(this.state, globalState);
},
process: function (option, processorCenter) {
process: function (option) {
option.eachSeries(function (series) {
if (series.type === 'pie') {
series.getData().filter(function (dataItem) {
......
......@@ -8,20 +8,20 @@ define(function (require) {
type: 'pie',
init: function (echarts) {
init: function (api) {
var dataItemFilter = new DataItemFilter();
this._dataItemFilter = dataItemFilter;
echarts.addProcessor(dataItemFilter);
api.addProcessor(dataItemFilter, true);
},
render: function () {
},
dispose: function (echarts) {
echarts.removeProcessor()
}
dispose: function () {}
});
return Pie;
......
......@@ -2,10 +2,9 @@ define(function(require) {
'use strict';
var Series = require('../../data/Series');
var List = require('../../data/List');
var PieSeries = Series.extend({
return require('../../data/Series').extend({
type: 'pie',
......@@ -13,6 +12,4 @@ define(function(require) {
return List.fromArray(option.data);
}
});
return PieSeries;
});
\ No newline at end of file
......@@ -2,9 +2,7 @@ define(function (require) {
var zrUtil = require('zrender/core/util');
var Component = function () {
};
var Component = function () {};
Component.prototype = {
......
......@@ -6,12 +6,21 @@ define(function (require) {
type: 'legend',
init: function () {
render: function (option, globalState) {
var selectedStateGroup = globalState.get('legend.selected');
if (selectedStateGroup) {
zrUtil.each(selectedStateGroup, function (selectedState) {
},
var selectedMap = {};
zrUtil.each(selectedState.selected, function (name) {
selectedMap[name] = true;
});
render: function (option, processorState) {
zrUtil.each(selectedState.all, function (name) {
});
});
}
}
});
});
\ No newline at end of file
......@@ -96,6 +96,14 @@ PENDING
},
*/
getItemByName: function (name) {
var elements = this.elements;
for (var i = 0; i < elements.length; i++) {
if (elements[i].name === name) {
return elements[i];
}
}
},
/**
* Get x of single data item by a given data index.
* can be overwritten
......
......@@ -6,6 +6,7 @@ define(function (require) {
var zrUtil = require('zrender/core/util');
var Chart = require('./chart/Chart');
var Component = require('./component/Component');
var ExtensionAPI = require('./ExtensionAPI');
var zrender = require('zrender');
......@@ -16,11 +17,16 @@ define(function (require) {
*/
var ECharts = function (dom, theme) {
this.zr = zrender.init(dom);
this._zr = zrender.init(dom);
theme = zrUtil.clone(theme || {});
zrUtil.merge(theme, config);
// Create processors
this._processors = zrUtil.map(startupProcessorClasses, function (Processor) {
return new Processor();
});
this._theme = theme;
this._chartsList = [];
......@@ -29,11 +35,15 @@ define(function (require) {
this._componentsList = [];
this._componentsMap = {};
this._originalOption = null;
this._extensionAPI = new ExtensionAPI(this);
};
ECharts.prototype = {
getZr: function () {
return this._zr;
},
setOption: function (rawOption, merge) {
rawOption = zrUtil.clone(rawOption);
zrUtil.merge(rawOption, this._theme);
......@@ -48,12 +58,7 @@ define(function (require) {
// Pending
// optionModel as parent ?
var globalState = new Model({}, option);
// Create processors
this._processors = zrUtil.map(startupProcessorClasses, function (Processor) {
var processor = new Processor();
processor.init(option, globalState);
});
this._globalState = globalState;
this._originalOption = option;
......@@ -84,13 +89,13 @@ define(function (require) {
// TODO Performance
var option = this._originalOption.clone();
this._processOption(option);
this._processOption(option, this._globalState);
this._prepareComponents(option);
this._prepareCharts(option);
this._dispatchOption(option);
this._doRender(option);
},
_prepareCharts: function (option) {
......@@ -103,7 +108,7 @@ define(function (require) {
if (! chart) {
chart = Chart.create(series);
if (chart) {
chart.init();
chart.init(this._extensionAPI);
this._chartsMap[series.type] = chart;
this._chartsList.push(chart);
}
......@@ -139,6 +144,7 @@ define(function (require) {
if (! component) {
// Create and add component
component = Component.create(componentType, componentOption);
component.init(this._extensionAPI);
componentsMap[componentType] = component;
componentsList.push(component);
}
......@@ -154,20 +160,26 @@ define(function (require) {
}, this);
},
_processOption: function (option) {
_processOption: function (option, globalState) {
zrUtil.each(this._processors, function (processor) {
processor.process(option);
if (! processor.__inited__) {
processor.init(option, globalState);
processor.__inited__ = true;
}
processor.syncState(globalState);
processor.process(option);
});
},
_dispatchOption: function (option) {
_doRender: function (option) {
var api = this._extensionAPI;
// Render all components
zrUtil.each(this._components, function (component) {
component.render(option);
component.render(option, api);
});
// Render all charts
zrUtil.each(this._charts, function (chart) {
chart.render(option);
chart.render(option, api);
});
},
......
......@@ -15,12 +15,31 @@ define(function (require) {
});
},
getSeries: function (seriesIndex) {
getSeriesByName: function (name) {
var series = this._series[i];
for (var i = 0; i < series.length; i++) {
if (series[i].name === name) {
return series;
}
}
},
getSeriesByType: function (type) {
return zrUtil.filter(this._series, function (series) {
return series.type === type;
});
},
getSeriesAll: function (seriesIndex) {
return this._series[seriesIndex];
},
eachSeries: function (cb, context) {
zrUtil.each(this._series, cb, context);
},
filterSeries: function (cb, context) {
this._series = zrUtil.filter(this._series, cb, context);
}
});
......
......@@ -12,6 +12,7 @@ define(function(require) {
type: '',
// Processor 第一次使用的时候调用
init: function (option, globalState) {
this.state = this.getInitialState(option);
this.syncState(globalState);
......
......@@ -9,10 +9,16 @@ define(function (require) {
type: 'seriesFilter',
getInitialState: function (option) {
var allData = option.get('legend.data') || [];
// Get series legend selector
var seriesNameList = zrUtil.map(option.get('legend.data') || [], function (item) {
return item.name == null ? item.name : item;
});
seriesNameList = zrUtil.filter(seriesNameList, function (item) {
return item && option.getSeriesByName(item) != null;
});
return {
all: allData,
selected: allData.slice()
all: seriesNameList,
selected: seriesNameList.slice()
};
},
......
......@@ -4,7 +4,7 @@ define(function(require) {
var zrUtil = require('zrender/core/util');
return function (name) {
return function (state, globalState) {
return function (selfState, globalState) {
// Sync with processor option
var path = 'legend.selected';
var selected = globalState.get(path);
......@@ -12,17 +12,17 @@ define(function(require) {
selected = globalState.set(path, [])
}
var state = zrUtil.filter(selected, function (item) {
return item.name === name
return item.name === name;
})[0];
if (state) {
this.state.all = state.all;
this.state.selected = state.selected;
selfState.all = state.all;
selfState.selected = state.selected;
}
else {
selected.push({
name: name,
all: state.all,
selected: state.selected
all: selfState.all,
selected: selfState.selected
});
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册