cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
150 lines (149 loc) • 4.86 kB
JavaScript
import "../../../../echarts/lib/echarts.mjs";
import { concatArray } from "../../../../zrender/lib/core/util.mjs";
import SeriesModel from "../../../../echarts/lib/model/Series.mjs";
import SeriesData from "../../../../echarts/lib/data/SeriesData.mjs";
var LinesGLSeries = SeriesModel.extend({
type: "series.linesGL",
dependencies: ["grid", "geo"],
visualStyleAccessPath: "lineStyle",
visualDrawType: "stroke",
streamEnabled: true,
init: function(option) {
var result = this._processFlatCoordsArray(option.data);
this._flatCoords = result.flatCoords;
this._flatCoordsOffset = result.flatCoordsOffset;
if (result.flatCoords) {
option.data = new Float32Array(result.count);
}
LinesGLSeries.superApply(this, "init", arguments);
},
mergeOption: function(option) {
var result = this._processFlatCoordsArray(option.data);
this._flatCoords = result.flatCoords;
this._flatCoordsOffset = result.flatCoordsOffset;
if (result.flatCoords) {
option.data = new Float32Array(result.count);
}
LinesGLSeries.superApply(this, "mergeOption", arguments);
},
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);
},
_getCoordsFromItemModel: function(idx) {
var itemModel = this.getData().getItemModel(idx);
var coords = itemModel.option instanceof Array ? itemModel.option : itemModel.getShallow("coords");
return coords;
},
getLineCoordsCount: function(idx) {
if (this._flatCoordsOffset) {
return this._flatCoordsOffset[idx * 2 + 1];
} else {
return this._getCoordsFromItemModel(idx).length;
}
},
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;
}
},
_processFlatCoordsArray: function(data) {
var startOffset = 0;
if (this._flatCoords) {
startOffset = this._flatCoords.length;
}
if (typeof data[0] === "number") {
var len = data.length;
var coordsOffsetAndLenStorage = new Uint32Array(len);
var coordsStorage = new Float64Array(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
};
},
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;
},
defaultOption: {
coordinateSystem: "geo",
zlevel: 10,
progressive: 1e4,
progressiveThreshold: 5e4,
blendMode: "source-over",
lineStyle: {
opacity: 0.8
},
postEffect: {
enable: false,
colorCorrection: {
exposure: 0,
brightness: 0,
contrast: 1,
saturation: 1,
enable: true
}
}
}
});
var LinesGLSeries$1 = LinesGLSeries;
export { LinesGLSeries$1 as default };