UNPKG

cione-comp-lib

Version:

`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`

150 lines (149 loc) 4.86 kB
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 };