radar-chart.models.ts
3.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
///
/// Copyright © 2016-2024 The Thingsboard Authors
///
/// Licensed under the Apache License, Version 2.0 (the "License");
/// you may not use this file except in compliance with the License.
/// You may obtain a copy of the License at
///
/// http://www.apache.org/licenses/LICENSE-2.0
///
/// Unless required by applicable law or agreed to in writing, software
/// distributed under the License is distributed on an "AS IS" BASIS,
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
/// See the License for the specific language governing permissions and
/// limitations under the License.
///
import { latestChartDefaultSettings, LatestChartSettings } from '@home/components/widget/lib/chart/latest-chart.models';
import {
chartAnimationDefaultSettings,
ChartAnimationSettings,
chartColorScheme,
ChartFillSettings,
ChartFillType,
ChartLabelPosition,
ChartLineType,
ChartShape
} from '@home/components/widget/lib/chart/chart.models';
import { Font } from '@shared/models/widget-settings.models';
import { mergeDeep } from '@core/utils';
export enum RadarChartShape {
polygon = 'polygon',
circle = 'circle'
}
export const radarChartShapes = Object.keys(RadarChartShape) as RadarChartShape[];
export const radarChartShapeTranslations = new Map<RadarChartShape, string>(
[
[RadarChartShape.polygon, 'widgets.radar-chart.shape-polygon'],
[RadarChartShape.circle, 'widgets.radar-chart.shape-circle']
]
);
export interface RadarChartSettings extends LatestChartSettings {
shape: RadarChartShape;
color: string;
showLine: boolean;
lineType: ChartLineType;
lineWidth: number;
showPoints: boolean;
pointShape: ChartShape;
pointSize: number;
showLabel: boolean;
labelPosition: ChartLabelPosition;
labelFont: Font;
labelColor: string;
fillAreaSettings: ChartFillSettings;
axisShowLabel: boolean;
axisLabelFont: Font;
axisShowTickLabels: boolean;
axisTickLabelFont: Font;
axisTickLabelColor: string;
}
export const radarChartAnimationDefaultSettings: ChartAnimationSettings =
mergeDeep({} as ChartAnimationSettings, chartAnimationDefaultSettings, {
animationDuration: 1000,
animationDurationUpdate: 500
} as ChartAnimationSettings);
export const radarChartDefaultSettings: RadarChartSettings = {
...latestChartDefaultSettings,
animation: mergeDeep({} as ChartAnimationSettings,
radarChartAnimationDefaultSettings),
shape: RadarChartShape.polygon,
color: '#3F52DD',
showLine: true,
lineType: ChartLineType.solid,
lineWidth: 2,
showPoints: true,
pointShape: ChartShape.circle,
pointSize: 4,
showLabel: false,
labelPosition: ChartLabelPosition.top,
labelFont: {
family: 'Roboto',
size: 11,
sizeUnit: 'px',
style: 'normal',
weight: '400',
lineHeight: '1'
},
labelColor: chartColorScheme['series.label'].light,
fillAreaSettings: {
type: ChartFillType.none,
opacity: 0.4,
gradient: {
start: 80,
end: 20
}
},
axisShowLabel: true,
axisLabelFont: {
family: 'Roboto',
size: 12,
sizeUnit: 'px',
style: 'normal',
weight: '600',
lineHeight: '1'
},
axisShowTickLabels: false,
axisTickLabelFont: {
family: 'Roboto',
size: 11,
sizeUnit: 'px',
style: 'normal',
weight: '400',
lineHeight: '1'
},
axisTickLabelColor: chartColorScheme['axis.tickLabel'].light
};