提交 8db26838 编写于 作者: L lang

Different key getter of old and new data when do diff

上级 c39310af
......@@ -76,7 +76,7 @@ define(function (require) {
}));
var columns = [categoryAxis.model.getCategories()];
zrUtil.each(group.series, function (series) {
columns.push(series.getData().mapArray(valueAxisDim, function (val) {
columns.push(series.getRawData().mapArray(valueAxisDim, function (val) {
return val;
}));
});
......@@ -102,7 +102,7 @@ define(function (require) {
*/
function assembleOtherSeries(series) {
return zrUtil.map(series, function (series) {
var data = series.getData();
var data = series.getRawData();
var lines = [series.name];
var vals = [];
data.each(data.dimensions, function () {
......@@ -280,6 +280,7 @@ define(function (require) {
header.style.cssText = 'margin: 10px 20px;';
var textarea = document.createElement('textarea');
textarea.style.cssText = 'display:block;width:100%;font-size:14px;line-height:1.6rem;font-family:Monaco,Consolas,Courier New';
textarea.readOnly = model.get('readOnly');
var result = getContentFromModel(ecModel);
textarea.value = result.value;
......
......@@ -5,11 +5,12 @@ define(function(require) {
return item;
}
function DataDiffer(oldArr, newArr, keyGetter) {
function DataDiffer(oldArr, newArr, oldKeyGetter, newKeyGetter) {
this._old = oldArr;
this._new = newArr;
this._keyGetter = keyGetter || defaultKeyGetter;
this._oldKeyGetter = oldKeyGetter || defaultKeyGetter;
this._newKeyGetter = newKeyGetter || defaultKeyGetter;
}
DataDiffer.prototype = {
......@@ -43,20 +44,21 @@ define(function(require) {
execute: function () {
var oldArr = this._old;
var newArr = this._new;
var keyGetter = this._keyGetter;
var oldKeyGetter = this._oldKeyGetter;
var newKeyGetter = this._newKeyGetter;
var oldDataIndexMap = {};
var newDataIndexMap = {};
var i;
initIndexMap(oldArr, oldDataIndexMap, keyGetter);
initIndexMap(newArr, newDataIndexMap, keyGetter);
initIndexMap(oldArr, oldDataIndexMap, oldKeyGetter);
initIndexMap(newArr, newDataIndexMap, newKeyGetter);
// Travel by inverted order to make sure order consistency
// when duplicate keys exists (consider newDataIndex.pop() below).
// For performance consideration, these code below do not look neat.
for (i = 0; i < oldArr.length; i++) {
var key = keyGetter(oldArr[i]);
var key = oldKeyGetter(oldArr[i]);
var idx = newDataIndexMap[key];
// idx can never be empty array here. see 'set null' logic below.
......
......@@ -760,8 +760,11 @@ define(function (require) {
*/
listProto.diff = function (otherList) {
var idList = this._idList;
var otherIdList = otherList && otherList._idList;
return new DataDiffer(
otherList ? otherList.indices : [], this.indices, function (idx) {
return otherIdList[idx] || (idx + '');
}, function (idx) {
return idList[idx] || (idx + '');
}
);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册