cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
217 lines (216 loc) • 8.58 kB
JavaScript
import { each, extend, bind } from "../../../../zrender/lib/core/util.mjs";
import { getDataItemValue } from "../../util/model.mjs";
import { isSourceInstance, createSourceFromSeriesDataOption } from "../Source.mjs";
import { SOURCE_FORMAT_ARRAY_ROWS, SERIES_LAYOUT_BY_COLUMN, SERIES_LAYOUT_BY_ROW, SOURCE_FORMAT_OBJECT_ROWS, SOURCE_FORMAT_KEYED_COLUMNS, SOURCE_FORMAT_ORIGINAL, SOURCE_FORMAT_TYPED_ARRAY } from "../../util/types.mjs";
var _a, _b, _c;
var providerMethods;
var mountMethods;
var DefaultDataProvider = function() {
function DefaultDataProvider2(sourceParam, dimSize) {
var source = !isSourceInstance(sourceParam) ? createSourceFromSeriesDataOption(sourceParam) : sourceParam;
this._source = source;
var data = this._data = source.data;
if (source.sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {
this._offset = 0;
this._dimSize = dimSize;
this._data = data;
}
mountMethods(this, data, source);
}
DefaultDataProvider2.prototype.getSource = function() {
return this._source;
};
DefaultDataProvider2.prototype.count = function() {
return 0;
};
DefaultDataProvider2.prototype.getItem = function(idx, out) {
return;
};
DefaultDataProvider2.prototype.appendData = function(newData) {
};
DefaultDataProvider2.prototype.clean = function() {
};
DefaultDataProvider2.protoInitialize = function() {
var proto = DefaultDataProvider2.prototype;
proto.pure = false;
proto.persistent = true;
}();
DefaultDataProvider2.internalField = function() {
var _a2;
mountMethods = function(provider, data, source) {
var sourceFormat = source.sourceFormat;
var seriesLayoutBy = source.seriesLayoutBy;
var startIndex = source.startIndex;
var dimsDef = source.dimensionsDefine;
var methods = providerMethods[getMethodMapKey(sourceFormat, seriesLayoutBy)];
extend(provider, methods);
if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {
provider.getItem = getItemForTypedArray;
provider.count = countForTypedArray;
provider.fillStorage = fillStorageForTypedArray;
} else {
var rawItemGetter = getRawSourceItemGetter(sourceFormat, seriesLayoutBy);
provider.getItem = bind(rawItemGetter, null, data, startIndex, dimsDef);
var rawCounter = getRawSourceDataCounter(sourceFormat, seriesLayoutBy);
provider.count = bind(rawCounter, null, data, startIndex, dimsDef);
}
};
var getItemForTypedArray = function(idx, out) {
idx = idx - this._offset;
out = out || [];
var data = this._data;
var dimSize = this._dimSize;
var offset = dimSize * idx;
for (var i = 0; i < dimSize; i++) {
out[i] = data[offset + i];
}
return out;
};
var fillStorageForTypedArray = function(start, end, storage, extent) {
var data = this._data;
var dimSize = this._dimSize;
for (var dim = 0; dim < dimSize; dim++) {
var dimExtent = extent[dim];
var min = dimExtent[0] == null ? Infinity : dimExtent[0];
var max = dimExtent[1] == null ? -Infinity : dimExtent[1];
var count = end - start;
var arr = storage[dim];
for (var i = 0; i < count; i++) {
var val = data[i * dimSize + dim];
arr[start + i] = val;
val < min && (min = val);
val > max && (max = val);
}
dimExtent[0] = min;
dimExtent[1] = max;
}
};
var countForTypedArray = function() {
return this._data ? this._data.length / this._dimSize : 0;
};
providerMethods = (_a2 = {}, _a2[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_COLUMN] = {
pure: true,
appendData: appendDataSimply
}, _a2[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_ROW] = {
pure: true,
appendData: function() {
throw new Error('Do not support appendData when set seriesLayoutBy: "row".');
}
}, _a2[SOURCE_FORMAT_OBJECT_ROWS] = {
pure: true,
appendData: appendDataSimply
}, _a2[SOURCE_FORMAT_KEYED_COLUMNS] = {
pure: true,
appendData: function(newData) {
var data = this._data;
each(newData, function(newCol, key) {
var oldCol = data[key] || (data[key] = []);
for (var i = 0; i < (newCol || []).length; i++) {
oldCol.push(newCol[i]);
}
});
}
}, _a2[SOURCE_FORMAT_ORIGINAL] = {
appendData: appendDataSimply
}, _a2[SOURCE_FORMAT_TYPED_ARRAY] = {
persistent: false,
pure: true,
appendData: function(newData) {
this._data = newData;
},
clean: function() {
this._offset += this.count();
this._data = null;
}
}, _a2);
function appendDataSimply(newData) {
for (var i = 0; i < newData.length; i++) {
this._data.push(newData[i]);
}
}
}();
return DefaultDataProvider2;
}();
var getItemSimply = function(rawData, startIndex, dimsDef, idx) {
return rawData[idx];
};
var rawSourceItemGetterMap = (_a = {}, _a[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_COLUMN] = function(rawData, startIndex, dimsDef, idx) {
return rawData[idx + startIndex];
}, _a[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_ROW] = function(rawData, startIndex, dimsDef, idx, out) {
idx += startIndex;
var item = out || [];
var data = rawData;
for (var i = 0; i < data.length; i++) {
var row = data[i];
item[i] = row ? row[idx] : null;
}
return item;
}, _a[SOURCE_FORMAT_OBJECT_ROWS] = getItemSimply, _a[SOURCE_FORMAT_KEYED_COLUMNS] = function(rawData, startIndex, dimsDef, idx, out) {
var item = out || [];
for (var i = 0; i < dimsDef.length; i++) {
var dimName = dimsDef[i].name;
var col = rawData[dimName];
item[i] = col ? col[idx] : null;
}
return item;
}, _a[SOURCE_FORMAT_ORIGINAL] = getItemSimply, _a);
function getRawSourceItemGetter(sourceFormat, seriesLayoutBy) {
var method = rawSourceItemGetterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)];
return method;
}
var countSimply = function(rawData, startIndex, dimsDef) {
return rawData.length;
};
var rawSourceDataCounterMap = (_b = {}, _b[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_COLUMN] = function(rawData, startIndex, dimsDef) {
return Math.max(0, rawData.length - startIndex);
}, _b[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_ROW] = function(rawData, startIndex, dimsDef) {
var row = rawData[0];
return row ? Math.max(0, row.length - startIndex) : 0;
}, _b[SOURCE_FORMAT_OBJECT_ROWS] = countSimply, _b[SOURCE_FORMAT_KEYED_COLUMNS] = function(rawData, startIndex, dimsDef) {
var dimName = dimsDef[0].name;
var col = rawData[dimName];
return col ? col.length : 0;
}, _b[SOURCE_FORMAT_ORIGINAL] = countSimply, _b);
function getRawSourceDataCounter(sourceFormat, seriesLayoutBy) {
var method = rawSourceDataCounterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)];
return method;
}
var getRawValueSimply = function(dataItem, dimIndex, property) {
return dataItem[dimIndex];
};
var rawSourceValueGetterMap = (_c = {}, _c[SOURCE_FORMAT_ARRAY_ROWS] = getRawValueSimply, _c[SOURCE_FORMAT_OBJECT_ROWS] = function(dataItem, dimIndex, property) {
return dataItem[property];
}, _c[SOURCE_FORMAT_KEYED_COLUMNS] = getRawValueSimply, _c[SOURCE_FORMAT_ORIGINAL] = function(dataItem, dimIndex, property) {
var value = getDataItemValue(dataItem);
return !(value instanceof Array) ? value : value[dimIndex];
}, _c[SOURCE_FORMAT_TYPED_ARRAY] = getRawValueSimply, _c);
function getRawSourceValueGetter(sourceFormat) {
var method = rawSourceValueGetterMap[sourceFormat];
return method;
}
function getMethodMapKey(sourceFormat, seriesLayoutBy) {
return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS ? sourceFormat + "_" + seriesLayoutBy : sourceFormat;
}
function retrieveRawValue(data, dataIndex, dim) {
if (!data) {
return;
}
var dataItem = data.getRawDataItem(dataIndex);
if (dataItem == null) {
return;
}
var store = data.getStore();
var sourceFormat = store.getSource().sourceFormat;
if (dim != null) {
var dimIndex = data.getDimensionIndex(dim);
var property = store.getDimensionProperty(dimIndex);
return getRawSourceValueGetter(sourceFormat)(dataItem, dimIndex, property);
} else {
var result = dataItem;
if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {
result = getDataItemValue(dataItem);
}
return result;
}
}
export { DefaultDataProvider, getRawSourceDataCounter, getRawSourceItemGetter, getRawSourceValueGetter, retrieveRawValue };