Merge pull request #13535 from vvlladd28/bug/unit-convertor/gauge-range-chart
Fixed show value after unit converted in gauges and range chart
This commit is contained in:
commit
38d52762a0
@ -285,10 +285,10 @@ function getValueDec(ctx: WidgetContext, _settings: AnalogueGaugeSettings): numb
|
||||
if (ctx.data && ctx.data[0]) {
|
||||
dataKey = ctx.data[0].dataKey;
|
||||
}
|
||||
if (dataKey && isDefined(dataKey.decimals)) {
|
||||
if (dataKey && isDefinedAndNotNull(dataKey.decimals)) {
|
||||
return dataKey.decimals;
|
||||
} else {
|
||||
return isDefinedAndNotNull(ctx.decimals) ? ctx.decimals : 0;
|
||||
return ctx.decimals ?? 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -300,6 +300,6 @@ function getUnits(ctx: WidgetContext, settings: AnalogueGaugeSettings): TbUnit {
|
||||
if (dataKey?.units) {
|
||||
return dataKey.units;
|
||||
} else {
|
||||
return isDefinedAndNotNull(settings.units) ? settings.units : ctx.units;
|
||||
return settings.units ?? ctx.units;
|
||||
}
|
||||
}
|
||||
|
||||
@ -32,7 +32,8 @@ import {
|
||||
ComponentStyle,
|
||||
getDataKey,
|
||||
overlayStyle,
|
||||
textStyle
|
||||
textStyle,
|
||||
ValueFormatProcessor
|
||||
} from '@shared/models/widget-settings.models';
|
||||
import { isDefinedAndNotNull } from '@core/utils';
|
||||
import {
|
||||
@ -113,11 +114,17 @@ export class RangeChartWidgetComponent implements OnInit, OnDestroy, AfterViewIn
|
||||
this.units = unitService.getTargetUnitSymbol(units);
|
||||
this.unitConvertor = unitService.geUnitConverter(units);
|
||||
|
||||
const valueFormat = ValueFormatProcessor.fromSettings(this.ctx.$injector, {
|
||||
units,
|
||||
decimals: this.decimals,
|
||||
ignoreUnitSymbol: true
|
||||
});
|
||||
|
||||
this.backgroundStyle$ = backgroundStyle(this.settings.background, this.imagePipe, this.sanitizer);
|
||||
this.overlayStyle = overlayStyle(this.settings.background.overlay);
|
||||
this.padding = this.settings.background.overlay.enabled ? undefined : this.settings.padding;
|
||||
|
||||
this.rangeItems = toRangeItems(this.settings.rangeColors, this.unitConvertor);
|
||||
this.rangeItems = toRangeItems(this.settings.rangeColors, valueFormat);
|
||||
this.visibleRangeItems = this.rangeItems.filter(item => item.visible);
|
||||
|
||||
this.showLegend = this.settings.showLegend && !!this.rangeItems.length;
|
||||
|
||||
@ -22,6 +22,7 @@ import {
|
||||
Font,
|
||||
simpleDateFormat,
|
||||
sortedColorRange,
|
||||
ValueFormatProcessor,
|
||||
ValueSourceType
|
||||
} from '@shared/models/widget-settings.models';
|
||||
import { LegendPosition } from '@shared/models/widget.models';
|
||||
@ -291,21 +292,21 @@ export const rangeChartTimeSeriesKeySettings = (settings: RangeChartWidgetSettin
|
||||
}
|
||||
});
|
||||
|
||||
export const toRangeItems = (colorRanges: Array<ColorRange>, convertValue: (x: number) => number): RangeItem[] => {
|
||||
export const toRangeItems = (colorRanges: Array<ColorRange>, valueFormat: ValueFormatProcessor): RangeItem[] => {
|
||||
const rangeItems: RangeItem[] = [];
|
||||
let counter = 0;
|
||||
const ranges = sortedColorRange(filterIncludingColorRanges(colorRanges)).filter(r => isNumber(r.from) || isNumber(r.to));
|
||||
for (let i = 0; i < ranges.length; i++) {
|
||||
const range = ranges[i];
|
||||
let from = range.from;
|
||||
const to = isDefinedAndNotNull(range.to) ? convertValue(range.to) : range.to;
|
||||
const to = isDefinedAndNotNull(range.to) ? Number(valueFormat.format(range.to)) : range.to;
|
||||
if (i > 0) {
|
||||
const prevRange = ranges[i - 1];
|
||||
if (isNumber(prevRange.to) && isNumber(from) && from < prevRange.to) {
|
||||
from = prevRange.to;
|
||||
}
|
||||
}
|
||||
from = isDefinedAndNotNull(from) ? convertValue(from) : from;
|
||||
from = isDefinedAndNotNull(from) ? Number(valueFormat.format(from)) : from;
|
||||
rangeItems.push(
|
||||
{
|
||||
index: counter++,
|
||||
|
||||
@ -125,6 +125,7 @@ export class TbCanvasDigitalGauge {
|
||||
this.barColorProcessor = ColorProcessor.fromSettings(settings.barColor, this.ctx);
|
||||
this.valueFormat = ValueFormatProcessor.fromSettings(this.ctx.$injector, {
|
||||
units: this.localSettings.units,
|
||||
decimals: this.localSettings.decimals,
|
||||
ignoreUnitSymbol: true
|
||||
});
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user