diff --git a/src/dualKpiSettingsModel.ts b/src/dualKpiSettingsModel.ts index c14b16c..6b7c681 100644 --- a/src/dualKpiSettingsModel.ts +++ b/src/dualKpiSettingsModel.ts @@ -68,6 +68,15 @@ export class DualKpiSettingsModel extends Model { public validateValues(): void { this.colors.opacity.value = this.validateOpacity(this.colors.opacity.value); this.colorsBottom.opacity.value = this.validateOpacity(this.colorsBottom.opacity.value); + + // Disable display units when abbreviate values is on + if (this.properties.generalGroup.abbreviateValues.value) { + this.valueFormatting.displayUnits.disabled = true; + this.valueFormatting.precision.disabled = true; + } else { + this.valueFormatting.displayUnits.disabled = false; + this.valueFormatting.precision.disabled = false; + } } public setLocalizedOptions(localizationManager: ILocalizationManager) { diff --git a/src/settings/dualKpiValueFormattingCard.ts b/src/settings/dualKpiValueFormattingCard.ts index 217080e..e7b7f02 100644 --- a/src/settings/dualKpiValueFormattingCard.ts +++ b/src/settings/dualKpiValueFormattingCard.ts @@ -78,6 +78,8 @@ export class DualKpiValueFormattingCard extends Card { displayName: "Display units", displayNameKey: "Visual_DisplayUnits", value: 1, + disabled: false, + disabledReasonKey: "Visual_Description_AbbreviateValues_On" }); precision = new formattingSettings.NumUpDown({ @@ -90,6 +92,8 @@ export class DualKpiValueFormattingCard extends Card { minValue: { value: 0, type: powerbi.visuals.ValidatorType.Min }, maxValue: { value: 17, type: powerbi.visuals.ValidatorType.Max }, }, + disabled: false, + disabledReasonKey: "Visual_Description_AbbreviateValues_On" }); name = "dualKpiValueFormatting"; diff --git a/src/visual.ts b/src/visual.ts index 2d930a3..291c6c0 100644 --- a/src/visual.ts +++ b/src/visual.ts @@ -238,6 +238,7 @@ export class DualKpi implements IVisual { }; private static INVISIBLE: string = "invisible"; + private static readonly VISUAL_BORDER_AREA_PADDING_RATIO = 0.9; private static OPACITY_MIN: number = 0; private static OPACITY_MAX: number = 100; @@ -840,6 +841,7 @@ export class DualKpi implements IVisual { this.formattingSettings.colors.textColor.value.value = colorHelper.getHighContrastColor("foreground", this.formattingSettings.colors.textColor.value.value); this.formattingSettings.colorsBottom.dataColor.value.value = colorHelper.getHighContrastColor("foreground", this.formattingSettings.colorsBottom.dataColor.value.value); this.formattingSettings.colorsBottom.textColor.value.value = colorHelper.getHighContrastColor("foreground", this.formattingSettings.colorsBottom.textColor.value.value); + this.formattingSettings.properties.titleGroup.textColor.value.value = colorHelper.getHighContrastColor("foreground", this.formattingSettings.properties.titleGroup.textColor.value.value); } } @@ -1499,6 +1501,17 @@ export class DualKpi implements IVisual { element.attr("font-style", isItalic ? "italic" : "normal"); element.attr("text-decoration", isUnderline ? "underline" : "none"); element.attr("font-family", fontFamily); + + const effectiveFontSize = fontSizeAutoFormatting ? element.style("font-size") : fontSize + "px"; + const effectiveFontFamily = fontFamily; + const tailoredText = textMeasurementService.getTailoredTextOrDefault({ + text: element.text(), + fontSize: effectiveFontSize, + fontFamily: effectiveFontFamily, + }, options.width * DualKpi.VISUAL_BORDER_AREA_PADDING_RATIO); + + element.text(tailoredText); + } private addOverlayText(options: IDualKpiOptions, latestValue: number, calcHeight: number, calcWidth: number, isTopChart: boolean): void { diff --git a/stringResources/en-US/resources.resjson b/stringResources/en-US/resources.resjson index 84d1da4..e2f0df6 100644 --- a/stringResources/en-US/resources.resjson +++ b/stringResources/en-US/resources.resjson @@ -82,5 +82,6 @@ "Visual_Description_TopChartDefaultKpiValue":"Default text when no KPI value is available", "Visual_Description_MatchTopChartOptions":"Apply top chart's visual settings to the bottom chart for consistent appearance", "Visual_Description_FontSizeAutoFormatting":"Automatically adjust the text size to fit the visual", - "Visual_Description_StaleDataThreshold":"Defines the time limit to warn if data becomes outdated" + "Visual_Description_StaleDataThreshold":"Defines the time limit to warn if data becomes outdated", + "Visual_Description_AbbreviateValues_On": "Disabled when 'Properties -> Abbreviate values' is turned on" }