echarts
Version:
Apache ECharts is a powerful, interactive charting and data visualization library for browser
155 lines (151 loc) • 6.06 kB
JavaScript
/*
* 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
};
}
};