diff --git a/ui-ngx/src/app/modules/home/components/widget/config/basic/chart/time-series-chart-basic-config.component.html b/ui-ngx/src/app/modules/home/components/widget/config/basic/chart/time-series-chart-basic-config.component.html
index 5b14146d0f..3d099c2645 100644
--- a/ui-ngx/src/app/modules/home/components/widget/config/basic/chart/time-series-chart-basic-config.component.html
+++ b/ui-ngx/src/app/modules/home/components/widget/config/basic/chart/time-series-chart-basic-config.component.html
@@ -114,33 +114,10 @@
axisType="xAxis">
-
+
+
diff --git a/ui-ngx/src/app/modules/home/components/widget/config/basic/chart/time-series-chart-basic-config.component.ts b/ui-ngx/src/app/modules/home/components/widget/config/basic/chart/time-series-chart-basic-config.component.ts
index 79aa52fdb6..5307147b0e 100644
--- a/ui-ngx/src/app/modules/home/components/widget/config/basic/chart/time-series-chart-basic-config.component.ts
+++ b/ui-ngx/src/app/modules/home/components/widget/config/basic/chart/time-series-chart-basic-config.component.ts
@@ -45,12 +45,7 @@ import {
TimeSeriesChartWidgetSettings
} from '@home/components/widget/lib/chart/time-series-chart-widget.models';
import { EChartsTooltipTrigger } from '@home/components/widget/lib/chart/echarts-widget.models';
-import {
- timeSeriesChartNoAggregationBarWidthStrategies,
- TimeSeriesChartNoAggregationBarWidthStrategy,
- timeSeriesChartNoAggregationBarWidthStrategyTranslations,
- TimeSeriesChartType
-} from '@home/components/widget/lib/chart/time-series-chart.models';
+import { TimeSeriesChartType } from '@home/components/widget/lib/chart/time-series-chart.models';
@Component({
selector: 'tb-time-series-chart-basic-config',
@@ -76,12 +71,6 @@ export class TimeSeriesChartBasicConfigComponent extends BasicWidgetConfigCompon
legendPositionTranslationMap = legendPositionTranslationMap;
- TimeSeriesChartNoAggregationBarWidthStrategy = TimeSeriesChartNoAggregationBarWidthStrategy;
-
- timeSeriesChartNoAggregationBarWidthStrategies = timeSeriesChartNoAggregationBarWidthStrategies;
-
- timeSeriesChartNoAggregationBarWidthStrategyTranslations = timeSeriesChartNoAggregationBarWidthStrategyTranslations;
-
timeSeriesChartWidgetConfigForm: UntypedFormGroup;
tooltipValuePreviewFn = this._tooltipValuePreviewFn.bind(this);
@@ -140,11 +129,7 @@ export class TimeSeriesChartBasicConfigComponent extends BasicWidgetConfigCompon
yAxis: [settings.yAxis, []],
xAxis: [settings.xAxis, []],
- noAggregationBarWidthSettings: this.fb.group({
- strategy: [settings.noAggregationBarWidthSettings.strategy, []],
- groupIntervalWidth: [settings.noAggregationBarWidthSettings.groupIntervalWidth, [Validators.min(100)]],
- separateBarWidth: [settings.noAggregationBarWidthSettings.separateBarWidth, [Validators.min(100)]],
- }),
+ noAggregationBarWidthSettings: [settings.noAggregationBarWidthSettings, []],
showLegend: [settings.showLegend, []],
legendLabelFont: [settings.legendLabelFont, []],
@@ -227,7 +212,7 @@ export class TimeSeriesChartBasicConfigComponent extends BasicWidgetConfigCompon
}
protected validatorTriggers(): string[] {
- return ['showTitle', 'showIcon', 'showLegend', 'showTooltip', 'tooltipShowDate', 'noAggregationBarWidthSettings.strategy'];
+ return ['showTitle', 'showIcon', 'showLegend', 'showTooltip', 'tooltipShowDate'];
}
protected updateValidators(emitEvent: boolean, trigger?: string) {
@@ -236,8 +221,6 @@ export class TimeSeriesChartBasicConfigComponent extends BasicWidgetConfigCompon
const showLegend: boolean = this.timeSeriesChartWidgetConfigForm.get('showLegend').value;
const showTooltip: boolean = this.timeSeriesChartWidgetConfigForm.get('showTooltip').value;
const tooltipShowDate: boolean = this.timeSeriesChartWidgetConfigForm.get('tooltipShowDate').value;
- const noAggregationBarWidthSettingsStrategy: TimeSeriesChartNoAggregationBarWidthStrategy =
- this.timeSeriesChartWidgetConfigForm.get('noAggregationBarWidthSettings').get('strategy').value;
if (showTitle) {
this.timeSeriesChartWidgetConfigForm.get('title').enable();
@@ -266,14 +249,6 @@ export class TimeSeriesChartBasicConfigComponent extends BasicWidgetConfigCompon
this.timeSeriesChartWidgetConfigForm.get('iconColor').disable();
}
- if (noAggregationBarWidthSettingsStrategy === TimeSeriesChartNoAggregationBarWidthStrategy.group) {
- this.timeSeriesChartWidgetConfigForm.get('noAggregationBarWidthSettings').get('groupIntervalWidth').enable();
- this.timeSeriesChartWidgetConfigForm.get('noAggregationBarWidthSettings').get('separateBarWidth').disable();
- } else if (noAggregationBarWidthSettingsStrategy === TimeSeriesChartNoAggregationBarWidthStrategy.separate) {
- this.timeSeriesChartWidgetConfigForm.get('noAggregationBarWidthSettings').get('groupIntervalWidth').disable();
- this.timeSeriesChartWidgetConfigForm.get('noAggregationBarWidthSettings').get('separateBarWidth').enable();
- }
-
if (showLegend) {
this.timeSeriesChartWidgetConfigForm.get('legendLabelFont').enable();
this.timeSeriesChartWidgetConfigForm.get('legendLabelColor').enable();
diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/chart/time-series-chart-bar.models.ts b/ui-ngx/src/app/modules/home/components/widget/lib/chart/time-series-chart-bar.models.ts
index e5dfd6944e..bf7f6cf764 100644
--- a/ui-ngx/src/app/modules/home/components/widget/lib/chart/time-series-chart-bar.models.ts
+++ b/ui-ngx/src/app/modules/home/components/widget/lib/chart/time-series-chart-bar.models.ts
@@ -19,7 +19,6 @@ import { Interval, IntervalMath } from '@shared/models/time/time.models';
import { LabelFormatterCallback, SeriesLabelOption } from 'echarts/types/src/util/types';
import {
TimeSeriesChartDataItem,
- TimeSeriesChartNoAggregationBarWidthSettings,
TimeSeriesChartNoAggregationBarWidthStrategy
} from '@home/components/widget/lib/chart/time-series-chart.models';
import { CustomSeriesRenderItemParams } from 'echarts';
@@ -38,7 +37,9 @@ export interface BarRenderContext {
barsCount?: number;
barIndex?: number;
noAggregation: boolean;
- noAggregationBarWidthSettings: TimeSeriesChartNoAggregationBarWidthSettings;
+ noAggregationBarWidthStrategy: TimeSeriesChartNoAggregationBarWidthStrategy;
+ noAggregationWidthRelative?: boolean;
+ noAggregationWidth?: number;
timeInterval?: Interval;
visualSettings?: BarVisualSettings;
labelOption?: SeriesLabelOption;
@@ -54,16 +55,15 @@ export const renderTimeSeriesBar = (params: CustomSeriesRenderItemParams, api: C
let interval = end - start;
const ts = start ? start : time;
- const noAggregationGroup = renderCtx.noAggregation &&
- renderCtx.noAggregationBarWidthSettings.strategy === TimeSeriesChartNoAggregationBarWidthStrategy.group;
const separateBar = renderCtx.noAggregation &&
- renderCtx.noAggregationBarWidthSettings.strategy === TimeSeriesChartNoAggregationBarWidthStrategy.separate;
+ renderCtx.noAggregationBarWidthStrategy === TimeSeriesChartNoAggregationBarWidthStrategy.separate;
if (renderCtx.noAggregation) {
- if (noAggregationGroup) {
- interval = renderCtx.noAggregationBarWidthSettings.groupIntervalWidth;
+ if (renderCtx.noAggregationWidthRelative) {
+ const scaleWidth = api.getWidth() / api.size([1,0])[0];
+ interval = scaleWidth * (renderCtx.noAggregationWidth / 100);
} else {
- interval = renderCtx.noAggregationBarWidthSettings.separateBarWidth;
+ interval = renderCtx.noAggregationWidth;
}
start = time - interval / 2;
end = time + interval / 2;
diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/chart/time-series-chart.models.ts b/ui-ngx/src/app/modules/home/components/widget/lib/chart/time-series-chart.models.ts
index 6aac959cbe..fa349252b7 100644
--- a/ui-ngx/src/app/modules/home/components/widget/lib/chart/time-series-chart.models.ts
+++ b/ui-ngx/src/app/modules/home/components/widget/lib/chart/time-series-chart.models.ts
@@ -391,10 +391,16 @@ export const timeSeriesChartNoAggregationBarWidthStrategyTranslations = new Map<
]
);
+export interface TimeSeriesChartBarWidth {
+ relative?: boolean;
+ relativeWidth?: number;
+ absoluteWidth?: number;
+}
+
export interface TimeSeriesChartNoAggregationBarWidthSettings {
strategy: TimeSeriesChartNoAggregationBarWidthStrategy;
- groupIntervalWidth?: number;
- separateBarWidth?: number;
+ groupWidth?: TimeSeriesChartBarWidth;
+ barWidth?: TimeSeriesChartBarWidth;
}
export interface TimeSeriesChartSettings extends EChartsTooltipWidgetSettings {
@@ -474,8 +480,16 @@ export const timeSeriesChartDefaultSettings: TimeSeriesChartSettings = {
},
noAggregationBarWidthSettings: {
strategy: TimeSeriesChartNoAggregationBarWidthStrategy.group,
- groupIntervalWidth: 1000,
- separateBarWidth: 1000
+ groupWidth: {
+ relative: true,
+ relativeWidth: 2,
+ absoluteWidth: 1000
+ },
+ barWidth: {
+ relative: true,
+ relativeWidth: 2,
+ absoluteWidth: 1000
+ }
},
showTooltip: true,
tooltipTrigger: EChartsTooltipTrigger.axis,
@@ -757,12 +771,12 @@ export const createTimeSeriesXAxisOption = (settings: TimeSeriesChartAxisSetting
export const generateChartData = (dataItems: TimeSeriesChartDataItem[],
thresholdItems: TimeSeriesChartThresholdItem[],
timeInterval: Interval,
+ stack: boolean,
noAggregation: boolean,
noAggregationBarWidthSettings: TimeSeriesChartNoAggregationBarWidthSettings,
- stack: boolean,
darkMode: boolean): Array => {
let series = generateChartSeries(dataItems, timeInterval,
- noAggregation, noAggregationBarWidthSettings, stack, darkMode);
+ stack, noAggregation, noAggregationBarWidthSettings, darkMode);
if (thresholdItems.length) {
const thresholds = generateChartThresholds(thresholdItems, darkMode);
series = series.concat(thresholds);
@@ -874,9 +888,9 @@ const createThresholdData = (val: string | number, item: TimeSeriesChartThreshol
const generateChartSeries = (dataItems: TimeSeriesChartDataItem[],
timeInterval: Interval,
+ stack: boolean,
noAggregation: boolean,
noAggregationBarWidthSettings: TimeSeriesChartNoAggregationBarWidthSettings,
- stack: boolean,
darkMode: boolean): Array => {
const series: Array = [];
const enabledDataItems = dataItems.filter(d => d.enabled);
@@ -895,7 +909,17 @@ const generateChartSeries = (dataItems: TimeSeriesChartDataItem[],
for (const item of enabledDataItems) {
if (item.dataKey.settings.type === TimeSeriesChartSeriesType.bar) {
if (!item.barRenderContext) {
- item.barRenderContext = {noAggregation, noAggregationBarWidthSettings};
+ item.barRenderContext = {noAggregation,
+ noAggregationBarWidthStrategy: noAggregationBarWidthSettings.strategy};
+ const targetWidth = noAggregationBarWidthSettings.strategy === TimeSeriesChartNoAggregationBarWidthStrategy.group ?
+ noAggregationBarWidthSettings.groupWidth : noAggregationBarWidthSettings.barWidth;
+ if (targetWidth.relative) {
+ item.barRenderContext.noAggregationWidthRelative = true;
+ item.barRenderContext.noAggregationWidth = targetWidth.relativeWidth;
+ } else {
+ item.barRenderContext.noAggregationWidthRelative = false;
+ item.barRenderContext.noAggregationWidth = targetWidth.absoluteWidth;
+ }
}
item.barRenderContext.noAggregation = noAggregation;
item.barRenderContext.barsCount = barsCount;
diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/chart/time-series-chart.ts b/ui-ngx/src/app/modules/home/components/widget/lib/chart/time-series-chart.ts
index e5d4cb8f46..6d790d5439 100644
--- a/ui-ngx/src/app/modules/home/components/widget/lib/chart/time-series-chart.ts
+++ b/ui-ngx/src/app/modules/home/components/widget/lib/chart/time-series-chart.ts
@@ -492,8 +492,9 @@ export class TbTimeSeriesChart {
private updateSeries(): Array {
return generateChartData(this.dataItems, this.thresholdItems,
this.ctx.timeWindow.interval,
+ this.settings.stack,
this.noAggregation,
- this.settings.noAggregationBarWidthSettings, this.settings.stack, this.darkMode);
+ this.settings.noAggregationBarWidthSettings, this.darkMode);
}
private updateAxes() {
diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/settings/chart/time-series-chart-widget-settings.component.html b/ui-ngx/src/app/modules/home/components/widget/lib/settings/chart/time-series-chart-widget-settings.component.html
index f3a9a610c3..a754dec0b4 100644
--- a/ui-ngx/src/app/modules/home/components/widget/lib/settings/chart/time-series-chart-widget-settings.component.html
+++ b/ui-ngx/src/app/modules/home/components/widget/lib/settings/chart/time-series-chart-widget-settings.component.html
@@ -48,33 +48,10 @@
axisType="xAxis">
-
+
+