逐步完成前后端服务器

This commit is contained in:
2025-09-09 15:00:30 +08:00
parent fcb09432e9
commit c7dfa1e9fc
2937 changed files with 1477567 additions and 0 deletions

View File

@ -0,0 +1,96 @@
/*
* 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.
*/
import { parseConditionalExpression } from '../../util/conditionalExpression.js';
import { hasOwn, createHashMap } from 'zrender/lib/core/util.js';
import { makePrintable, throwError } from '../../util/log.js';
export var filterTransform = {
type: 'echarts:filter',
// PENDING: enhance to filter by index rather than create new data
transform: function (params) {
// [Caveat] Fail-Fast:
// Do not return the whole dataset unless user config indicates it explicitly.
// For example, if no condition is specified by mistake, returning an empty result
// is better than returning the entire raw source for the user to find the mistake.
var upstream = params.upstream;
var rawItem;
var condition = parseConditionalExpression(params.config, {
valueGetterAttrMap: createHashMap({
dimension: true
}),
prepareGetValue: function (exprOption) {
var errMsg = '';
var dimLoose = exprOption.dimension;
if (!hasOwn(exprOption, 'dimension')) {
if (process.env.NODE_ENV !== 'production') {
errMsg = makePrintable('Relation condition must has prop "dimension" specified.', 'Illegal condition:', exprOption);
}
throwError(errMsg);
}
var dimInfo = upstream.getDimensionInfo(dimLoose);
if (!dimInfo) {
if (process.env.NODE_ENV !== 'production') {
errMsg = makePrintable('Can not find dimension info via: ' + dimLoose + '.\n', 'Existing dimensions: ', upstream.cloneAllDimensionInfo(), '.\n', 'Illegal condition:', exprOption, '.\n');
}
throwError(errMsg);
}
return {
dimIdx: dimInfo.index
};
},
getValue: function (param) {
return upstream.retrieveValueFromItem(rawItem, param.dimIdx);
}
});
var resultData = [];
for (var i = 0, len = upstream.count(); i < len; i++) {
rawItem = upstream.getRawDataItem(i);
if (condition.evaluate()) {
resultData.push(rawItem);
}
}
return {
data: resultData
};
}
};

View File

@ -0,0 +1,49 @@
/*
* 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.
*/
import { filterTransform } from './filterTransform.js';
import { sortTransform } from './sortTransform.js';
export function install(registers) {
registers.registerTransform(filterTransform);
registers.registerTransform(sortTransform);
}

View File

@ -0,0 +1,155 @@
/*
* 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.
*/
import { SOURCE_FORMAT_ARRAY_ROWS, SOURCE_FORMAT_OBJECT_ROWS } from '../../util/types.js';
import { makePrintable, throwError } from '../../util/log.js';
import { each } from 'zrender/lib/core/util.js';
import { normalizeToArray } from '../../util/model.js';
import { getRawValueParser, SortOrderComparator } from '../../data/helper/dataValueHelper.js';
var sampleLog = '';
if (process.env.NODE_ENV !== 'production') {
sampleLog = ['Valid config is like:', '{ dimension: "age", order: "asc" }', 'or [{ dimension: "age", order: "asc"], { dimension: "date", order: "desc" }]'].join(' ');
}
export var sortTransform = {
type: 'echarts:sort',
transform: function (params) {
var upstream = params.upstream;
var config = params.config;
var errMsg = '';
// Normalize
// const orderExprList: OrderExpression[] = isArray(config[0])
// ? config as OrderExpression[]
// : [config as OrderExpression];
var orderExprList = normalizeToArray(config);
if (!orderExprList.length) {
if (process.env.NODE_ENV !== 'production') {
errMsg = 'Empty `config` in sort transform.';
}
throwError(errMsg);
}
var orderDefList = [];
each(orderExprList, function (orderExpr) {
var dimLoose = orderExpr.dimension;
var order = orderExpr.order;
var parserName = orderExpr.parser;
var incomparable = orderExpr.incomparable;
if (dimLoose == null) {
if (process.env.NODE_ENV !== 'production') {
errMsg = 'Sort transform config must has "dimension" specified.' + sampleLog;
}
throwError(errMsg);
}
if (order !== 'asc' && order !== 'desc') {
if (process.env.NODE_ENV !== 'production') {
errMsg = 'Sort transform config must has "order" specified.' + sampleLog;
}
throwError(errMsg);
}
if (incomparable && incomparable !== 'min' && incomparable !== 'max') {
var errMsg_1 = '';
if (process.env.NODE_ENV !== 'production') {
errMsg_1 = 'incomparable must be "min" or "max" rather than "' + incomparable + '".';
}
throwError(errMsg_1);
}
if (order !== 'asc' && order !== 'desc') {
var errMsg_2 = '';
if (process.env.NODE_ENV !== 'production') {
errMsg_2 = 'order must be "asc" or "desc" rather than "' + order + '".';
}
throwError(errMsg_2);
}
var dimInfo = upstream.getDimensionInfo(dimLoose);
if (!dimInfo) {
if (process.env.NODE_ENV !== 'production') {
errMsg = makePrintable('Can not find dimension info via: ' + dimLoose + '.\n', 'Existing dimensions: ', upstream.cloneAllDimensionInfo(), '.\n', 'Illegal config:', orderExpr, '.\n');
}
throwError(errMsg);
}
var parser = parserName ? getRawValueParser(parserName) : null;
if (parserName && !parser) {
if (process.env.NODE_ENV !== 'production') {
errMsg = makePrintable('Invalid parser name ' + parserName + '.\n', 'Illegal config:', orderExpr, '.\n');
}
throwError(errMsg);
}
orderDefList.push({
dimIdx: dimInfo.index,
parser: parser,
comparator: new SortOrderComparator(order, incomparable)
});
});
// TODO: support it?
var sourceFormat = upstream.sourceFormat;
if (sourceFormat !== SOURCE_FORMAT_ARRAY_ROWS && sourceFormat !== SOURCE_FORMAT_OBJECT_ROWS) {
if (process.env.NODE_ENV !== 'production') {
errMsg = 'sourceFormat "' + sourceFormat + '" is not supported yet';
}
throwError(errMsg);
}
// Other upstream format are all array.
var resultData = [];
for (var i = 0, len = upstream.count(); i < len; i++) {
resultData.push(upstream.getRawDataItem(i));
}
resultData.sort(function (item0, item1) {
for (var i = 0; i < orderDefList.length; i++) {
var orderDef = orderDefList[i];
var val0 = upstream.retrieveValueFromItem(item0, orderDef.dimIdx);
var val1 = upstream.retrieveValueFromItem(item1, orderDef.dimIdx);
if (orderDef.parser) {
val0 = orderDef.parser(val0);
val1 = orderDef.parser(val1);
}
var result = orderDef.comparator.evaluate(val0, val1);
if (result !== 0) {
return result;
}
}
return 0;
});
return {
data: resultData
};
}
};