(
mapOrGeoModel: MapOrGeoModel,
data: SeriesData | NullUndefined,
el: Element,
regionName: string,
regionModel: RegionModel,
// Exist only if `viewBuildCtx.data` exists.
dataIdx: number,
// If labelXY not provided, use `textConfig.position: 'inside'`
labelXY: number[]
)
| 677 | } |
| 678 | |
| 679 | function resetLabelForRegion( |
| 680 | mapOrGeoModel: MapOrGeoModel, |
| 681 | data: SeriesData | NullUndefined, |
| 682 | el: Element, |
| 683 | regionName: string, |
| 684 | regionModel: RegionModel, |
| 685 | // Exist only if `viewBuildCtx.data` exists. |
| 686 | dataIdx: number, |
| 687 | // If labelXY not provided, use `textConfig.position: 'inside'` |
| 688 | labelXY: number[] |
| 689 | ): void { |
| 690 | const isDataNaN = data && isNaN(data.get(data.mapDimension('value'), dataIdx) as number); |
| 691 | const itemLayout = data && data.getItemLayout(dataIdx); |
| 692 | |
| 693 | // In the following cases label will be drawn |
| 694 | // 1. In map series and data value is NaN |
| 695 | // 2. In geo component |
| 696 | // 3. Region has no series legendIcon, which will be add a showLabel flag in mapSymbolLayout |
| 697 | if ( |
| 698 | ((isGeoModel(mapOrGeoModel) || isDataNaN)) |
| 699 | || (itemLayout && itemLayout.showLabel) |
| 700 | ) { |
| 701 | |
| 702 | const query = !isGeoModel(mapOrGeoModel) ? dataIdx : regionName; |
| 703 | let labelFetcher; |
| 704 | |
| 705 | // Consider dataIdx not found. |
| 706 | if (!data || dataIdx >= 0) { |
| 707 | labelFetcher = mapOrGeoModel; |
| 708 | } |
| 709 | |
| 710 | const specifiedTextOpt: Partial<Record<DisplayState, TextStyleProps>> = labelXY ? { |
| 711 | normal: { |
| 712 | align: 'center', |
| 713 | verticalAlign: 'middle' |
| 714 | } |
| 715 | } : null; |
| 716 | |
| 717 | // Caveat: must be called after `setDefaultStateProxy(el);` called. |
| 718 | // because textContent will be assign with `el.stateProxy` inside. |
| 719 | setLabelStyle<typeof query>( |
| 720 | el, |
| 721 | getLabelStatesModels(regionModel), |
| 722 | { |
| 723 | labelFetcher, |
| 724 | labelDataIndex: query, |
| 725 | defaultText: regionName |
| 726 | }, |
| 727 | specifiedTextOpt |
| 728 | ); |
| 729 | |
| 730 | const textEl = el.getTextContent(); |
| 731 | if (textEl) { |
| 732 | mapLabelRaw(textEl).ignore = textEl.ignore; |
| 733 | |
| 734 | if (el.textConfig && labelXY) { |
| 735 | // Compute a relative offset based on the el bounding rect. |
| 736 | const rect = el.getBoundingRect().clone(); |
no test coverage detected
searching dependent graphs…