Merge branch 'rc' into features/add_tooltip_option_to_show_stack_mode_total_value_on_timeseries_chart_widgets

This commit is contained in:
Paolo Cristiani 2025-06-27 18:10:50 +02:00 committed by GitHub
commit 215df055db
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 26 additions and 23 deletions

View File

@ -49,7 +49,7 @@ import { ImagePipe } from '@shared/pipe/image.pipe';
import { DomSanitizer } from '@angular/platform-browser'; import { DomSanitizer } from '@angular/platform-browser';
import { TbTimeSeriesChart } from '@home/components/widget/lib/chart/time-series-chart'; import { TbTimeSeriesChart } from '@home/components/widget/lib/chart/time-series-chart';
import { WidgetComponent } from '@home/components/widget/widget.component'; import { WidgetComponent } from '@home/components/widget/widget.component';
import { TbUnitConverter } from '@shared/models/unit.models'; import { TbUnit } from '@shared/models/unit.models';
import { UnitService } from '@core/services/unit.service'; import { UnitService } from '@core/services/unit.service';
@Component({ @Component({
@ -80,8 +80,7 @@ export class RangeChartWidgetComponent implements OnInit, OnDestroy, AfterViewIn
visibleRangeItems: RangeItem[]; visibleRangeItems: RangeItem[];
private decimals = 0; private decimals = 0;
private units: string = ''; private units: TbUnit = '';
private unitConvertor: TbUnitConverter;
private rangeItems: RangeItem[]; private rangeItems: RangeItem[];
@ -100,22 +99,20 @@ export class RangeChartWidgetComponent implements OnInit, OnDestroy, AfterViewIn
const unitService = this.ctx.$injector.get(UnitService); const unitService = this.ctx.$injector.get(UnitService);
this.decimals = this.ctx.decimals; this.decimals = this.ctx.decimals;
let units = this.ctx.units; this.units = this.ctx.units;
const dataKey = getDataKey(this.ctx.datasources); const dataKey = getDataKey(this.ctx.datasources);
if (isDefinedAndNotNull(dataKey?.decimals)) { if (isDefinedAndNotNull(dataKey?.decimals)) {
this.decimals = dataKey.decimals; this.decimals = dataKey.decimals;
} }
if (dataKey?.units) { if (dataKey?.units) {
units = dataKey.units; this.units = dataKey.units;
} }
if (dataKey) { if (dataKey) {
dataKey.settings = rangeChartTimeSeriesKeySettings(this.settings); dataKey.settings = rangeChartTimeSeriesKeySettings(this.settings);
} }
this.units = unitService.getTargetUnitSymbol(units);
this.unitConvertor = unitService.geUnitConverter(units);
const valueFormat = ValueFormatProcessor.fromSettings(this.ctx.$injector, { const valueFormat = ValueFormatProcessor.fromSettings(this.ctx.$injector, {
units, units: this.units,
decimals: this.decimals, decimals: this.decimals,
ignoreUnitSymbol: true ignoreUnitSymbol: true
}); });
@ -138,7 +135,7 @@ export class RangeChartWidgetComponent implements OnInit, OnDestroy, AfterViewIn
} }
ngAfterViewInit() { ngAfterViewInit() {
const settings = rangeChartTimeSeriesSettings(this.settings, this.rangeItems, this.decimals, this.units, this.unitConvertor); const settings = rangeChartTimeSeriesSettings(this.settings, this.rangeItems, this.decimals, this.units);
this.timeSeriesChart = new TbTimeSeriesChart(this.ctx, settings, this.chartShape.nativeElement, this.renderer); this.timeSeriesChart = new TbTimeSeriesChart(this.ctx, settings, this.chartShape.nativeElement, this.renderer);
} }

View File

@ -57,6 +57,7 @@ import {
import { import {
TimeSeriesChartTooltipWidgetSettings TimeSeriesChartTooltipWidgetSettings
} from '@home/components/widget/lib/chart/time-series-chart-tooltip.models'; } from '@home/components/widget/lib/chart/time-series-chart-tooltip.models';
import { TbUnit } from '@shared/models/unit.models';
export interface RangeItem { export interface RangeItem {
index: number; index: number;
@ -221,13 +222,13 @@ export const rangeChartDefaultSettings: RangeChartWidgetSettings = {
}; };
export const rangeChartTimeSeriesSettings = (settings: RangeChartWidgetSettings, rangeItems: RangeItem[], export const rangeChartTimeSeriesSettings = (settings: RangeChartWidgetSettings, rangeItems: RangeItem[],
decimals: number, units: string, valueConvertor: (x: number) => number): DeepPartial<TimeSeriesChartSettings> => { decimals: number, units: TbUnit): DeepPartial<TimeSeriesChartSettings> => {
let thresholds: DeepPartial<TimeSeriesChartThreshold>[] = settings.showRangeThresholds ? getMarkPoints(rangeItems).map(item => ({ let thresholds: DeepPartial<TimeSeriesChartThreshold>[] = settings.showRangeThresholds ? getMarkPoints(rangeItems).map(item => ({
...{type: ValueSourceType.constant, ...{type: ValueSourceType.constant,
yAxisId: 'default', yAxisId: 'default',
units, units,
decimals, decimals,
value: valueConvertor(item)}, value: item},
...settings.rangeThreshold ...settings.rangeThreshold
} as DeepPartial<TimeSeriesChartThreshold>)) : []; } as DeepPartial<TimeSeriesChartThreshold>)) : [];
if (settings.thresholds?.length) { if (settings.thresholds?.length) {
@ -240,10 +241,8 @@ export const rangeChartTimeSeriesSettings = (settings: RangeChartWidgetSettings,
yAxes: { yAxes: {
default: { default: {
...settings.yAxis, ...settings.yAxis,
...{ decimals,
decimals, units
units
}
} }
}, },
xAxis: settings.xAxis, xAxis: settings.xAxis,
@ -299,14 +298,15 @@ export const toRangeItems = (colorRanges: Array<ColorRange>, valueFormat: ValueF
for (let i = 0; i < ranges.length; i++) { for (let i = 0; i < ranges.length; i++) {
const range = ranges[i]; const range = ranges[i];
let from = range.from; let from = range.from;
const to = isDefinedAndNotNull(range.to) ? Number(valueFormat.format(range.to)) : range.to; const to = range.to;
if (i > 0) { if (i > 0) {
const prevRange = ranges[i - 1]; const prevRange = ranges[i - 1];
if (isNumber(prevRange.to) && isNumber(from) && from < prevRange.to) { if (isNumber(prevRange.to) && isNumber(from) && from < prevRange.to) {
from = prevRange.to; from = prevRange.to;
} }
} }
from = isDefinedAndNotNull(from) ? Number(valueFormat.format(from)) : from; const formatToValue = isDefinedAndNotNull(to) ? Number(valueFormat.format(to)) : to;
const formatFromValue = isDefinedAndNotNull(from) ? Number(valueFormat.format(from)) : from;
rangeItems.push( rangeItems.push(
{ {
index: counter++, index: counter++,
@ -315,12 +315,12 @@ export const toRangeItems = (colorRanges: Array<ColorRange>, valueFormat: ValueF
visible: true, visible: true,
from, from,
to, to,
label: rangeItemLabel(from, to), label: rangeItemLabel(formatFromValue, formatToValue),
piece: createTimeSeriesChartVisualMapPiece(range.color, from, to) piece: createTimeSeriesChartVisualMapPiece(range.color, formatFromValue, formatToValue)
} }
); );
if (!isNumber(from) || !isNumber(to)) { if (!isNumber(from) || !isNumber(to)) {
const value = !isNumber(from) ? to : from; const value = !isNumber(from) ? formatToValue : formatFromValue;
rangeItems.push( rangeItems.push(
{ {
index: counter++, index: counter++,

View File

@ -98,7 +98,7 @@ import {
TimeSeriesChartTooltipValueFormatFunction, TimeSeriesChartTooltipValueFormatFunction,
TimeSeriesChartTooltipWidgetSettings TimeSeriesChartTooltipWidgetSettings
} from '@home/components/widget/lib/chart/time-series-chart-tooltip.models'; } from '@home/components/widget/lib/chart/time-series-chart-tooltip.models';
import { TbUnitConverter } from '@shared/models/unit.models'; import { TbUnit, TbUnitConverter } from '@shared/models/unit.models';
type TimeSeriesChartDataEntry = [number, any, number, number]; type TimeSeriesChartDataEntry = [number, any, number, number];
@ -377,7 +377,7 @@ export type TimeSeriesChartTicksFormatter =
export interface TimeSeriesChartYAxisSettings extends TimeSeriesChartAxisSettings { export interface TimeSeriesChartYAxisSettings extends TimeSeriesChartAxisSettings {
id?: TimeSeriesChartYAxisId; id?: TimeSeriesChartYAxisId;
order?: number; order?: number;
units?: string; units?: TbUnit;
decimals?: number; decimals?: number;
interval?: number; interval?: number;
splitNumber?: number; splitNumber?: number;

View File

@ -18,7 +18,7 @@ import { TbMeasure, TbMeasureUnits } from '@shared/models/unit.models';
export type SpeedUnits = SpeedMetricUnits | SpeedImperialUnits; export type SpeedUnits = SpeedMetricUnits | SpeedImperialUnits;
export type SpeedMetricUnits = 'm/s' | 'km/h' | 'mm/min' | 'mm/s'; export type SpeedMetricUnits = 'm/s' | 'km/h' | 'mm/min' | 'm/min' | 'mm/s';
export type SpeedImperialUnits = 'mph' | 'kt' | 'ft/s' | 'ft/min' | 'in/s' | 'in/h'; export type SpeedImperialUnits = 'mph' | 'kt' | 'ft/s' | 'ft/min' | 'in/s' | 'in/h';
const METRIC: TbMeasureUnits<SpeedMetricUnits> = { const METRIC: TbMeasureUnits<SpeedMetricUnits> = {
@ -37,6 +37,11 @@ const METRIC: TbMeasureUnits<SpeedMetricUnits> = {
'mm/min': { 'mm/min': {
name: 'unit.millimeters-per-minute', name: 'unit.millimeters-per-minute',
tags: ['feed rate', 'cutting feed rate'], tags: ['feed rate', 'cutting feed rate'],
to_anchor: 0.00006,
},
'm/min': {
name: 'unit.meter-per-minute',
tags: ['velocity', 'pace'],
to_anchor: 0.06, to_anchor: 0.06,
}, },
'mm/s': { 'mm/s': {

View File

@ -6084,6 +6084,7 @@
"inch-per-second": "Inch per second", "inch-per-second": "Inch per second",
"inch-per-hour": "Inch per hour", "inch-per-hour": "Inch per hour",
"millimeters-per-minute": "Millimeters per minute", "millimeters-per-minute": "Millimeters per minute",
"meter-per-minute": "Meter per minute",
"kilometer-per-hour-squared": "Kilometer per hour squared", "kilometer-per-hour-squared": "Kilometer per hour squared",
"foot-per-second-squared": "Foot per second squared", "foot-per-second-squared": "Foot per second squared",
"pascal": "Pascal", "pascal": "Pascal",