/* * 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 * as zrUtil from 'zrender/lib/core/util.js'; import { retrieveRawValue } from '../../data/helper/dataProvider.js'; import { formatTpl } from '../../util/format.js'; import { error, makePrintable } from '../../util/log.js'; var DIMENSION_LABEL_REG = /\{@(.+?)\}/g; var DataFormatMixin = /** @class */function () { function DataFormatMixin() {} /** * Get params for formatter */ DataFormatMixin.prototype.getDataParams = function (dataIndex, dataType) { var data = this.getData(dataType); var rawValue = this.getRawValue(dataIndex, dataType); var rawDataIndex = data.getRawIndex(dataIndex); var name = data.getName(dataIndex); var itemOpt = data.getRawDataItem(dataIndex); var style = data.getItemVisual(dataIndex, 'style'); var color = style && style[data.getItemVisual(dataIndex, 'drawType') || 'fill']; var borderColor = style && style.stroke; var mainType = this.mainType; var isSeries = mainType === 'series'; var userOutput = data.userOutput && data.userOutput.get(); return { componentType: mainType, componentSubType: this.subType, componentIndex: this.componentIndex, seriesType: isSeries ? this.subType : null, seriesIndex: this.seriesIndex, seriesId: isSeries ? this.id : null, seriesName: isSeries ? this.name : null, name: name, dataIndex: rawDataIndex, data: itemOpt, dataType: dataType, value: rawValue, color: color, borderColor: borderColor, dimensionNames: userOutput ? userOutput.fullDimensions : null, encode: userOutput ? userOutput.encode : null, // Param name list for mapping `a`, `b`, `c`, `d`, `e` $vars: ['seriesName', 'name', 'value'] }; }; /** * Format label * @param dataIndex * @param status 'normal' by default * @param dataType * @param labelDimIndex Only used in some chart that * use formatter in different dimensions, like radar. * @param formatter Formatter given outside. * @return return null/undefined if no formatter */ DataFormatMixin.prototype.getFormattedLabel = function (dataIndex, status, dataType, labelDimIndex, formatter, extendParams) { status = status || 'normal'; var data = this.getData(dataType); var params = this.getDataParams(dataIndex, dataType); if (extendParams) { params.value = extendParams.interpolatedValue; } if (labelDimIndex != null && zrUtil.isArray(params.value)) { params.value = params.value[labelDimIndex]; } if (!formatter) { var itemModel = data.getItemModel(dataIndex); // @ts-ignore formatter = itemModel.get(status === 'normal' ? ['label', 'formatter'] : [status, 'label', 'formatter']); } if (zrUtil.isFunction(formatter)) { params.status = status; params.dimensionIndex = labelDimIndex; return formatter(params); } else if (zrUtil.isString(formatter)) { var str = formatTpl(formatter, params); // Support 'aaa{@[3]}bbb{@product}ccc'. // Do not support '}' in dim name util have to. return str.replace(DIMENSION_LABEL_REG, function (origin, dimStr) { var len = dimStr.length; var dimLoose = dimStr; if (dimLoose.charAt(0) === '[' && dimLoose.charAt(len - 1) === ']') { dimLoose = +dimLoose.slice(1, len - 1); // Also support: '[]' => 0 if (process.env.NODE_ENV !== 'production') { if (isNaN(dimLoose)) { error("Invalide label formatter: @" + dimStr + ", only support @[0], @[1], @[2], ..."); } } } var val = retrieveRawValue(data, dataIndex, dimLoose); if (extendParams && zrUtil.isArray(extendParams.interpolatedValue)) { var dimIndex = data.getDimensionIndex(dimLoose); if (dimIndex >= 0) { val = extendParams.interpolatedValue[dimIndex]; } } return val != null ? val + '' : ''; }); } }; /** * Get raw value in option */ DataFormatMixin.prototype.getRawValue = function (idx, dataType) { return retrieveRawValue(this.getData(dataType), idx); }; /** * Should be implemented. * @param {number} dataIndex * @param {boolean} [multipleSeries=false] * @param {string} [dataType] */ DataFormatMixin.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) { // Empty function return; }; return DataFormatMixin; }(); export { DataFormatMixin }; ; // PENDING: previously we accept this type when calling `formatTooltip`, // but guess little chance has been used outside. Do we need to backward // compat it? // type TooltipFormatResultLegacyObject = { // // `html` means the markup language text, either in 'html' or 'richText'. // // The name `html` is not appropriate because in 'richText' it is not a HTML // // string. But still support it for backward compatibility. // html: string; // markers: Dictionary; // }; /** * For backward compat, normalize the return from `formatTooltip`. */ export function normalizeTooltipFormatResult(result) { var markupText; // let markers: Dictionary; var markupFragment; if (zrUtil.isObject(result)) { if (result.type) { markupFragment = result; } else { if (process.env.NODE_ENV !== 'production') { console.warn('The return type of `formatTooltip` is not supported: ' + makePrintable(result)); } } // else { // markupText = (result as TooltipFormatResultLegacyObject).html; // markers = (result as TooltipFormatResultLegacyObject).markers; // if (markersExisting) { // markers = zrUtil.merge(markersExisting, markers); // } // } } else { markupText = result; } return { text: markupText, // markers: markers || markersExisting, frag: markupFragment }; }