UNPKG

cione-comp-lib

Version:

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

230 lines (229 loc) 7.93 kB
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 };