diff --git a/src/component/toolbox/feature/DataView.js b/src/component/toolbox/feature/DataView.js index a4ebd7a7bf1e097719d8b76a1e1346eee26432fd..9975498dcb150205f15b3b44516a13d20bf1fa44 100644 --- a/src/component/toolbox/feature/DataView.js +++ b/src/component/toolbox/feature/DataView.js @@ -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; diff --git a/src/data/DataDiffer.js b/src/data/DataDiffer.js index de2394b3c83a6459db4499c3377737e6b11d56da..77bdcb430df2a30dca8fe64cab67bc891b384396 100644 --- a/src/data/DataDiffer.js +++ b/src/data/DataDiffer.js @@ -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. diff --git a/src/data/List.js b/src/data/List.js index d146e56b83669174563eee2af468c7416156599e..55b011fb018154c8ff07f3b1ae6c3e831ef666bb 100644 --- a/src/data/List.js +++ b/src/data/List.js @@ -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 + ''); } );