逐步完成前后端服务器
This commit is contained in:
343
frontend/node_modules/echarts/lib/data/helper/dataProvider.js
generated
vendored
Normal file
343
frontend/node_modules/echarts/lib/data/helper/dataProvider.js
generated
vendored
Normal file
@ -0,0 +1,343 @@
|
||||
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
var _a, _b, _c;
|
||||
// TODO
|
||||
// ??? refactor? check the outer usage of data provider.
|
||||
// merge with defaultDimValueGetter?
|
||||
import { isTypedArray, extend, assert, each, isObject, bind } from 'zrender/lib/core/util.js';
|
||||
import { getDataItemValue } from '../../util/model.js';
|
||||
import { createSourceFromSeriesDataOption, isSourceInstance } from '../Source.js';
|
||||
import { SOURCE_FORMAT_ORIGINAL, SOURCE_FORMAT_OBJECT_ROWS, SOURCE_FORMAT_KEYED_COLUMNS, SOURCE_FORMAT_TYPED_ARRAY, SOURCE_FORMAT_ARRAY_ROWS, SERIES_LAYOUT_BY_COLUMN, SERIES_LAYOUT_BY_ROW } from '../../util/types.js';
|
||||
var providerMethods;
|
||||
var mountMethods;
|
||||
/**
|
||||
* If normal array used, mutable chunk size is supported.
|
||||
* If typed array used, chunk size must be fixed.
|
||||
*/
|
||||
var DefaultDataProvider = /** @class */function () {
|
||||
function DefaultDataProvider(sourceParam, dimSize) {
|
||||
// let source: Source;
|
||||
var source = !isSourceInstance(sourceParam) ? createSourceFromSeriesDataOption(sourceParam) : sourceParam;
|
||||
// declare source is Source;
|
||||
this._source = source;
|
||||
var data = this._data = source.data;
|
||||
// Typed array. TODO IE10+?
|
||||
if (source.sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
if (dimSize == null) {
|
||||
throw new Error('Typed array data must specify dimension size');
|
||||
}
|
||||
}
|
||||
this._offset = 0;
|
||||
this._dimSize = dimSize;
|
||||
this._data = data;
|
||||
}
|
||||
mountMethods(this, data, source);
|
||||
}
|
||||
DefaultDataProvider.prototype.getSource = function () {
|
||||
return this._source;
|
||||
};
|
||||
DefaultDataProvider.prototype.count = function () {
|
||||
return 0;
|
||||
};
|
||||
DefaultDataProvider.prototype.getItem = function (idx, out) {
|
||||
return;
|
||||
};
|
||||
DefaultDataProvider.prototype.appendData = function (newData) {};
|
||||
DefaultDataProvider.prototype.clean = function () {};
|
||||
DefaultDataProvider.protoInitialize = function () {
|
||||
// PENDING: To avoid potential incompat (e.g., prototype
|
||||
// is visited somewhere), still init them on prototype.
|
||||
var proto = DefaultDataProvider.prototype;
|
||||
proto.pure = false;
|
||||
proto.persistent = true;
|
||||
}();
|
||||
DefaultDataProvider.internalField = function () {
|
||||
var _a;
|
||||
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)];
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
assert(methods, 'Invalide sourceFormat: ' + sourceFormat);
|
||||
}
|
||||
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++) {
|
||||
// appendData with TypedArray will always do replace in provider.
|
||||
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 = (_a = {}, _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = {
|
||||
pure: true,
|
||||
appendData: appendDataSimply
|
||||
}, _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = {
|
||||
pure: true,
|
||||
appendData: function () {
|
||||
throw new Error('Do not support appendData when set seriesLayoutBy: "row".');
|
||||
}
|
||||
}, _a[SOURCE_FORMAT_OBJECT_ROWS] = {
|
||||
pure: true,
|
||||
appendData: appendDataSimply
|
||||
}, _a[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]);
|
||||
}
|
||||
});
|
||||
}
|
||||
}, _a[SOURCE_FORMAT_ORIGINAL] = {
|
||||
appendData: appendDataSimply
|
||||
}, _a[SOURCE_FORMAT_TYPED_ARRAY] = {
|
||||
persistent: false,
|
||||
pure: true,
|
||||
appendData: function (newData) {
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
assert(isTypedArray(newData), 'Added data must be TypedArray if data in initialization is TypedArray');
|
||||
}
|
||||
this._data = newData;
|
||||
},
|
||||
// Clean self if data is already used.
|
||||
clean: function () {
|
||||
// PENDING
|
||||
this._offset += this.count();
|
||||
this._data = null;
|
||||
}
|
||||
}, _a);
|
||||
function appendDataSimply(newData) {
|
||||
for (var i = 0; i < newData.length; i++) {
|
||||
this._data.push(newData[i]);
|
||||
}
|
||||
}
|
||||
}();
|
||||
return DefaultDataProvider;
|
||||
}();
|
||||
export { DefaultDataProvider };
|
||||
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;
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
if (dimName == null) {
|
||||
throw new Error();
|
||||
}
|
||||
}
|
||||
var col = rawData[dimName];
|
||||
item[i] = col ? col[idx] : null;
|
||||
}
|
||||
return item;
|
||||
}, _a[SOURCE_FORMAT_ORIGINAL] = getItemSimply, _a);
|
||||
export function getRawSourceItemGetter(sourceFormat, seriesLayoutBy) {
|
||||
var method = rawSourceItemGetterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)];
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
assert(method, 'Do not support get item on "' + 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;
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
if (dimName == null) {
|
||||
throw new Error();
|
||||
}
|
||||
}
|
||||
var col = rawData[dimName];
|
||||
return col ? col.length : 0;
|
||||
}, _b[SOURCE_FORMAT_ORIGINAL] = countSimply, _b);
|
||||
export function getRawSourceDataCounter(sourceFormat, seriesLayoutBy) {
|
||||
var method = rawSourceDataCounterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)];
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
assert(method, 'Do not support count on "' + 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) {
|
||||
// FIXME: In some case (markpoint in geo (geo-map.html)),
|
||||
// dataItem is {coord: [...]}
|
||||
var value = getDataItemValue(dataItem);
|
||||
return !(value instanceof Array) ? value : value[dimIndex];
|
||||
}, _c[SOURCE_FORMAT_TYPED_ARRAY] = getRawValueSimply, _c);
|
||||
export function getRawSourceValueGetter(sourceFormat) {
|
||||
var method = rawSourceValueGetterMap[sourceFormat];
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
assert(method, 'Do not support get value on "' + sourceFormat + '".');
|
||||
}
|
||||
return method;
|
||||
}
|
||||
function getMethodMapKey(sourceFormat, seriesLayoutBy) {
|
||||
return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS ? sourceFormat + '_' + seriesLayoutBy : sourceFormat;
|
||||
}
|
||||
// ??? FIXME can these logic be more neat: getRawValue, getRawDataItem,
|
||||
// Consider persistent.
|
||||
// Caution: why use raw value to display on label or tooltip?
|
||||
// A reason is to avoid format. For example time value we do not know
|
||||
// how to format is expected. More over, if stack is used, calculated
|
||||
// value may be 0.91000000001, which have brings trouble to display.
|
||||
// TODO: consider how to treat null/undefined/NaN when display?
|
||||
export function retrieveRawValue(data, dataIndex,
|
||||
// If dimIndex is null/undefined, return OptionDataItem.
|
||||
// Otherwise, return OptionDataValue.
|
||||
dim) {
|
||||
if (!data) {
|
||||
return;
|
||||
}
|
||||
// Consider data may be not persistent.
|
||||
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;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Compatible with some cases (in pie, map) like:
|
||||
* data: [{name: 'xx', value: 5, selected: true}, ...]
|
||||
* where only sourceFormat is 'original' and 'objectRows' supported.
|
||||
*
|
||||
* // TODO
|
||||
* Supported detail options in data item when using 'arrayRows'.
|
||||
*
|
||||
* @param data
|
||||
* @param dataIndex
|
||||
* @param attr like 'selected'
|
||||
*/
|
||||
export function retrieveRawAttr(data, dataIndex, attr) {
|
||||
if (!data) {
|
||||
return;
|
||||
}
|
||||
var sourceFormat = data.getStore().getSource().sourceFormat;
|
||||
if (sourceFormat !== SOURCE_FORMAT_ORIGINAL && sourceFormat !== SOURCE_FORMAT_OBJECT_ROWS) {
|
||||
return;
|
||||
}
|
||||
var dataItem = data.getRawDataItem(dataIndex);
|
||||
if (sourceFormat === SOURCE_FORMAT_ORIGINAL && !isObject(dataItem)) {
|
||||
dataItem = null;
|
||||
}
|
||||
if (dataItem) {
|
||||
return dataItem[attr];
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user