cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
230 lines (229 loc) • 7.93 kB
JavaScript
import { __extends } from "../../../../tslib/tslib.es6.mjs";
import SeriesModel from "../../model/Series.mjs";
import SeriesData from "../../data/SeriesData.mjs";
import { concatArray, isNumber, map, mergeAll } from "../../../../zrender/lib/core/util.mjs";
import { createTooltipMarkup } from "../../component/tooltip/tooltipMarkup.mjs";
var Uint32Arr = typeof Uint32Array === "undefined" ? Array : Uint32Array;
var Float64Arr = typeof Float64Array === "undefined" ? Array : Float64Array;
function compatEc2(seriesOpt) {
var data = seriesOpt.data;
if (data && data[0] && data[0][0] && data[0][0].coord) {
seriesOpt.data = map(data, function(itemOpt) {
var coords = [itemOpt[0].coord, itemOpt[1].coord];
var target = {
coords
};
if (itemOpt[0].name) {
target.fromName = itemOpt[0].name;
}
if (itemOpt[1].name) {
target.toName = itemOpt[1].name;
}
return mergeAll([target, itemOpt[0], itemOpt[1]]);
});
}
}
var LinesSeriesModel = function(_super) {
__extends(LinesSeriesModel2, _super);
function LinesSeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = LinesSeriesModel2.type;
_this.visualStyleAccessPath = "lineStyle";
_this.visualDrawType = "stroke";
return _this;
}
LinesSeriesModel2.prototype.init = function(option) {
option.data = option.data || [];
compatEc2(option);
var result = this._processFlatCoordsArray(option.data);
this._flatCoords = result.flatCoords;
this._flatCoordsOffset = result.flatCoordsOffset;
if (result.flatCoords) {
option.data = new Float32Array(result.count);
}
_super.prototype.init.apply(this, arguments);
};
LinesSeriesModel2.prototype.mergeOption = function(option) {
compatEc2(option);
if (option.data) {
var result = this._processFlatCoordsArray(option.data);
this._flatCoords = result.flatCoords;
this._flatCoordsOffset = result.flatCoordsOffset;
if (result.flatCoords) {
option.data = new Float32Array(result.count);
}
}
_super.prototype.mergeOption.apply(this, arguments);
};
LinesSeriesModel2.prototype.appendData = function(params) {
var result = this._processFlatCoordsArray(params.data);
if (result.flatCoords) {
if (!this._flatCoords) {
this._flatCoords = result.flatCoords;
this._flatCoordsOffset = result.flatCoordsOffset;
} else {
this._flatCoords = concatArray(this._flatCoords, result.flatCoords);
this._flatCoordsOffset = concatArray(this._flatCoordsOffset, result.flatCoordsOffset);
}
params.data = new Float32Array(result.count);
}
this.getRawData().appendData(params.data);
};
LinesSeriesModel2.prototype._getCoordsFromItemModel = function(idx) {
var itemModel = this.getData().getItemModel(idx);
var coords = itemModel.option instanceof Array ? itemModel.option : itemModel.getShallow("coords");
return coords;
};
LinesSeriesModel2.prototype.getLineCoordsCount = function(idx) {
if (this._flatCoordsOffset) {
return this._flatCoordsOffset[idx * 2 + 1];
} else {
return this._getCoordsFromItemModel(idx).length;
}
};
LinesSeriesModel2.prototype.getLineCoords = function(idx, out) {
if (this._flatCoordsOffset) {
var offset = this._flatCoordsOffset[idx * 2];
var len = this._flatCoordsOffset[idx * 2 + 1];
for (var i = 0; i < len; i++) {
out[i] = out[i] || [];
out[i][0] = this._flatCoords[offset + i * 2];
out[i][1] = this._flatCoords[offset + i * 2 + 1];
}
return len;
} else {
var coords = this._getCoordsFromItemModel(idx);
for (var i = 0; i < coords.length; i++) {
out[i] = out[i] || [];
out[i][0] = coords[i][0];
out[i][1] = coords[i][1];
}
return coords.length;
}
};
LinesSeriesModel2.prototype._processFlatCoordsArray = function(data) {
var startOffset = 0;
if (this._flatCoords) {
startOffset = this._flatCoords.length;
}
if (isNumber(data[0])) {
var len = data.length;
var coordsOffsetAndLenStorage = new Uint32Arr(len);
var coordsStorage = new Float64Arr(len);
var coordsCursor = 0;
var offsetCursor = 0;
var dataCount = 0;
for (var i = 0; i < len; ) {
dataCount++;
var count = data[i++];
coordsOffsetAndLenStorage[offsetCursor++] = coordsCursor + startOffset;
coordsOffsetAndLenStorage[offsetCursor++] = count;
for (var k = 0; k < count; k++) {
var x = data[i++];
var y = data[i++];
coordsStorage[coordsCursor++] = x;
coordsStorage[coordsCursor++] = y;
}
}
return {
flatCoordsOffset: new Uint32Array(coordsOffsetAndLenStorage.buffer, 0, offsetCursor),
flatCoords: coordsStorage,
count: dataCount
};
}
return {
flatCoordsOffset: null,
flatCoords: null,
count: data.length
};
};
LinesSeriesModel2.prototype.getInitialData = function(option, ecModel) {
var lineData = new SeriesData(["value"], this);
lineData.hasItemOption = false;
lineData.initData(option.data, [], function(dataItem, dimName, dataIndex, dimIndex) {
if (dataItem instanceof Array) {
return NaN;
} else {
lineData.hasItemOption = true;
var value = dataItem.value;
if (value != null) {
return value instanceof Array ? value[dimIndex] : value;
}
}
});
return lineData;
};
LinesSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
var data = this.getData();
var itemModel = data.getItemModel(dataIndex);
var name = itemModel.get("name");
if (name) {
return name;
}
var fromName = itemModel.get("fromName");
var toName = itemModel.get("toName");
var nameArr = [];
fromName != null && nameArr.push(fromName);
toName != null && nameArr.push(toName);
return createTooltipMarkup("nameValue", {
name: nameArr.join(" > ")
});
};
LinesSeriesModel2.prototype.preventIncremental = function() {
return !!this.get(["effect", "show"]);
};
LinesSeriesModel2.prototype.getProgressive = function() {
var progressive = this.option.progressive;
if (progressive == null) {
return this.option.large ? 1e4 : this.get("progressive");
}
return progressive;
};
LinesSeriesModel2.prototype.getProgressiveThreshold = function() {
var progressiveThreshold = this.option.progressiveThreshold;
if (progressiveThreshold == null) {
return this.option.large ? 2e4 : this.get("progressiveThreshold");
}
return progressiveThreshold;
};
LinesSeriesModel2.prototype.getZLevelKey = function() {
var effectModel = this.getModel("effect");
var trailLength = effectModel.get("trailLength");
return this.getData().count() > this.getProgressiveThreshold() ? this.id : effectModel.get("show") && trailLength > 0 ? trailLength + "" : "";
};
LinesSeriesModel2.type = "series.lines";
LinesSeriesModel2.dependencies = ["grid", "polar", "geo", "calendar"];
LinesSeriesModel2.defaultOption = {
coordinateSystem: "geo",
z: 2,
legendHoverLink: true,
xAxisIndex: 0,
yAxisIndex: 0,
symbol: ["none", "none"],
symbolSize: [10, 10],
geoIndex: 0,
effect: {
show: false,
period: 4,
constantSpeed: 0,
symbol: "circle",
symbolSize: 3,
loop: true,
trailLength: 0.2
},
large: false,
largeThreshold: 2e3,
polyline: false,
clip: true,
label: {
show: false,
position: "end"
},
lineStyle: {
opacity: 0.5
}
};
return LinesSeriesModel2;
}(SeriesModel);
var LinesSeriesModel$1 = LinesSeriesModel;
export { LinesSeriesModel$1 as default };