|   | 
| /* | 
| * 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 { trim, isArray, each, reduce } from 'zrender/lib/core/util.js'; | 
| import { retrieveVisualColorForTooltipMarker, createTooltipMarkup } from './tooltipMarkup.js'; | 
| import { retrieveRawValue } from '../../data/helper/dataProvider.js'; | 
| import { isNameSpecified } from '../../util/model.js'; | 
| export function defaultSeriesFormatTooltip(opt) { | 
|   var series = opt.series; | 
|   var dataIndex = opt.dataIndex; | 
|   var multipleSeries = opt.multipleSeries; | 
|   var data = series.getData(); | 
|   var tooltipDims = data.mapDimensionsAll('defaultedTooltip'); | 
|   var tooltipDimLen = tooltipDims.length; | 
|   var value = series.getRawValue(dataIndex); | 
|   var isValueArr = isArray(value); | 
|   var markerColor = retrieveVisualColorForTooltipMarker(series, dataIndex); | 
|   // Complicated rule for pretty tooltip. | 
|   var inlineValue; | 
|   var inlineValueType; | 
|   var subBlocks; | 
|   var sortParam; | 
|   if (tooltipDimLen > 1 || isValueArr && !tooltipDimLen) { | 
|     var formatArrResult = formatTooltipArrayValue(value, series, dataIndex, tooltipDims, markerColor); | 
|     inlineValue = formatArrResult.inlineValues; | 
|     inlineValueType = formatArrResult.inlineValueTypes; | 
|     subBlocks = formatArrResult.blocks; | 
|     // Only support tooltip sort by the first inline value. It's enough in most cases. | 
|     sortParam = formatArrResult.inlineValues[0]; | 
|   } else if (tooltipDimLen) { | 
|     var dimInfo = data.getDimensionInfo(tooltipDims[0]); | 
|     sortParam = inlineValue = retrieveRawValue(data, dataIndex, tooltipDims[0]); | 
|     inlineValueType = dimInfo.type; | 
|   } else { | 
|     sortParam = inlineValue = isValueArr ? value[0] : value; | 
|   } | 
|   // Do not show generated series name. It might not be readable. | 
|   var seriesNameSpecified = isNameSpecified(series); | 
|   var seriesName = seriesNameSpecified && series.name || ''; | 
|   var itemName = data.getName(dataIndex); | 
|   var inlineName = multipleSeries ? seriesName : itemName; | 
|   return createTooltipMarkup('section', { | 
|     header: seriesName, | 
|     // When series name is not specified, do not show a header line with only '-'. | 
|     // This case always happens in tooltip.trigger: 'item'. | 
|     noHeader: multipleSeries || !seriesNameSpecified, | 
|     sortParam: sortParam, | 
|     blocks: [createTooltipMarkup('nameValue', { | 
|       markerType: 'item', | 
|       markerColor: markerColor, | 
|       // Do not mix display seriesName and itemName in one tooltip, | 
|       // which might confuses users. | 
|       name: inlineName, | 
|       // name dimension might be auto assigned, where the name might | 
|       // be not readable. So we check trim here. | 
|       noName: !trim(inlineName), | 
|       value: inlineValue, | 
|       valueType: inlineValueType, | 
|       dataIndex: dataIndex | 
|     })].concat(subBlocks || []) | 
|   }); | 
| } | 
| function formatTooltipArrayValue(value, series, dataIndex, tooltipDims, colorStr) { | 
|   // check: category-no-encode-has-axis-data in dataset.html | 
|   var data = series.getData(); | 
|   var isValueMultipleLine = reduce(value, function (isValueMultipleLine, val, idx) { | 
|     var dimItem = data.getDimensionInfo(idx); | 
|     return isValueMultipleLine = isValueMultipleLine || dimItem && dimItem.tooltip !== false && dimItem.displayName != null; | 
|   }, false); | 
|   var inlineValues = []; | 
|   var inlineValueTypes = []; | 
|   var blocks = []; | 
|   tooltipDims.length ? each(tooltipDims, function (dim) { | 
|     setEachItem(retrieveRawValue(data, dataIndex, dim), dim); | 
|   }) | 
|   // By default, all dims is used on tooltip. | 
|   : each(value, setEachItem); | 
|   function setEachItem(val, dim) { | 
|     var dimInfo = data.getDimensionInfo(dim); | 
|     // If `dimInfo.tooltip` is not set, show tooltip. | 
|     if (!dimInfo || dimInfo.otherDims.tooltip === false) { | 
|       return; | 
|     } | 
|     if (isValueMultipleLine) { | 
|       blocks.push(createTooltipMarkup('nameValue', { | 
|         markerType: 'subItem', | 
|         markerColor: colorStr, | 
|         name: dimInfo.displayName, | 
|         value: val, | 
|         valueType: dimInfo.type | 
|       })); | 
|     } else { | 
|       inlineValues.push(val); | 
|       inlineValueTypes.push(dimInfo.type); | 
|     } | 
|   } | 
|   return { | 
|     inlineValues: inlineValues, | 
|     inlineValueTypes: inlineValueTypes, | 
|     blocks: blocks | 
|   }; | 
| } |