@flexem/fc-gui 3.0.0-alpha.9 → 3.0.0-alpha.90

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/CHANGELOG.md +381 -0
  2. package/bundles/@flexem/fc-gui.umd.js +17578 -16210
  3. package/bundles/@flexem/fc-gui.umd.js.map +1 -1
  4. package/bundles/@flexem/fc-gui.umd.min.js +5 -5
  5. package/bundles/@flexem/fc-gui.umd.min.js.map +1 -1
  6. package/communication/variable/variable-communicator.d.ts +1 -0
  7. package/config/alarm/alarm.store.d.ts +6 -0
  8. package/config/alarm/alarm.store.js +0 -0
  9. package/config/alarm/alarm.store.metadata.json +1 -0
  10. package/config/alarm/get-alarms-args.d.ts +9 -0
  11. package/config/alarm/get-alarms-args.js +9 -0
  12. package/config/alarm/get-alarms-args.metadata.json +1 -0
  13. package/config/alarm/index.d.ts +2 -0
  14. package/config/alarm/index.js +1 -0
  15. package/config/alarm/index.metadata.json +1 -0
  16. package/config/config-store.d.ts +2 -0
  17. package/config/index.d.ts +1 -0
  18. package/config/index.js +1 -0
  19. package/config/index.metadata.json +1 -1
  20. package/elements/air-quality/air-quality-element.d.ts +31 -0
  21. package/elements/air-quality/air-quality-element.js +194 -0
  22. package/elements/air-quality/air-quality-element.metadata.json +1 -0
  23. package/elements/alarm/alarm-element.d.ts +44 -0
  24. package/elements/alarm/alarm-element.js +382 -0
  25. package/elements/alarm/alarm-element.metadata.json +1 -0
  26. package/elements/bar-graph-element.d.ts +7 -1
  27. package/elements/bar-graph-element.js +70 -4
  28. package/elements/bar-graph-element.metadata.json +1 -1
  29. package/elements/base/readable-element.d.ts +6 -1
  30. package/elements/base/readable-element.js +31 -2
  31. package/elements/base/readable-element.metadata.json +1 -1
  32. package/elements/historical-curve/historical-curve.element.js +116 -13
  33. package/elements/historical-curve/historical-curve.element.metadata.json +1 -1
  34. package/elements/main-element.js +25 -4
  35. package/elements/main-element.metadata.json +1 -1
  36. package/elements/meter-element.d.ts +7 -1
  37. package/elements/meter-element.js +76 -7
  38. package/elements/meter-element.metadata.json +1 -1
  39. package/elements/numerical-display/numerical-display-element.d.ts +8 -2
  40. package/elements/numerical-display/numerical-display-element.js +55 -11
  41. package/elements/numerical-display/numerical-display-element.metadata.json +1 -1
  42. package/elements/per-view-variable-communicator.d.ts +2 -0
  43. package/elements/per-view-variable-communicator.js +8 -0
  44. package/elements/per-view-variable-communicator.metadata.json +1 -1
  45. package/elements/ring-graph/ring-graph-element.d.ts +10 -1
  46. package/elements/ring-graph/ring-graph-element.js +106 -3
  47. package/elements/ring-graph/ring-graph-element.metadata.json +1 -1
  48. package/elements/shared/graph/graph-state-element.js +0 -3
  49. package/elements/shared/text/text-element.js +13 -2
  50. package/elements/shared/text/text-state-element.js +1 -1
  51. package/elements/switch-indicator-light/bit-switch-operator.d.ts +1 -0
  52. package/elements/switch-indicator-light/bit-switch-operator.js +19 -0
  53. package/elements/switch-indicator-light/bit-switch-operator.metadata.json +1 -1
  54. package/elements/switch-indicator-light/switch-indicator-light-element.d.ts +8 -0
  55. package/elements/switch-indicator-light/switch-indicator-light-element.js +93 -23
  56. package/elements/switch-indicator-light/switch-indicator-light-element.metadata.json +1 -1
  57. package/elements/switch-indicator-light/switch-operator.d.ts +1 -0
  58. package/elements/switch-indicator-light/word-switch-operator.d.ts +1 -0
  59. package/elements/switch-indicator-light/word-switch-operator.js +6 -0
  60. package/elements/switch-indicator-light/word-switch-operator.metadata.json +1 -1
  61. package/elements/video/video-element.d.ts +4 -0
  62. package/elements/video/video-element.js +69 -20
  63. package/elements/video/video-element.metadata.json +1 -1
  64. package/elements/view-operation/view-operation.element.js +8 -0
  65. package/elements/weather/weater-element.js +0 -1
  66. package/gui/gui-context.d.ts +2 -1
  67. package/gui/gui-host.d.ts +1 -1
  68. package/gui/gui.component.d.ts +3 -0
  69. package/gui/gui.component.js +15 -2
  70. package/gui/gui.component.metadata.json +1 -1
  71. package/localization/localization.service.d.ts +7 -0
  72. package/localization/localization.service.js +8 -1
  73. package/localization/localization.service.metadata.json +1 -1
  74. package/localization/localization.service.zh_CN.js +8 -1
  75. package/localization/localization.service.zh_CN.metadata.json +1 -1
  76. package/modal/write-value/write-value-modal-args.d.ts +4 -1
  77. package/modal/write-value/write-value-modal-args.js +3 -1
  78. package/modal/write-value/write-value-modal-args.metadata.json +1 -1
  79. package/modal/write-value/write-value-modal.component.d.ts +9 -7
  80. package/modal/write-value/write-value-modal.component.html +9 -4
  81. package/modal/write-value/write-value-modal.component.js +39 -22
  82. package/modal/write-value/write-value-modal.component.metadata.json +1 -1
  83. package/model/air-quality/air-quality-info.d.ts +23 -0
  84. package/model/air-quality/air-quality-info.js +4 -0
  85. package/model/air-quality/air-quality-info.metadata.json +1 -0
  86. package/model/air-quality/air-quality.model.d.ts +7 -0
  87. package/model/air-quality/air-quality.model.js +0 -0
  88. package/model/air-quality/air-quality.model.metadata.json +1 -0
  89. package/model/alarm/alarm.model.d.ts +13 -0
  90. package/model/alarm/alarm.model.js +0 -0
  91. package/model/alarm/alarm.model.metadata.json +1 -0
  92. package/model/bar-graph/bar-graph.d.ts +4 -0
  93. package/model/base/readable-model.d.ts +4 -0
  94. package/model/historical-curve/historical-curve-axis-settings.d.ts +10 -0
  95. package/model/historical-curve/historical-curve-axis-settings.js +5 -0
  96. package/model/historical-curve/historical-curve-axis-settings.metadata.json +1 -1
  97. package/model/meter/meter.d.ts +4 -0
  98. package/model/numerical-display/numerical-display.d.ts +1 -0
  99. package/model/ring-graph/ring-graph.model.d.ts +8 -0
  100. package/model/switch-indicator-light/bit-switch-operation.d.ts +2 -1
  101. package/model/switch-indicator-light/bit-switch-operation.js +1 -0
  102. package/model/switch-indicator-light/bit-switch-operation.metadata.json +1 -1
  103. package/package.json +1 -1
  104. package/remote/communication/variable/remote-variable-communicator.d.ts +4 -0
  105. package/remote/communication/variable/remote-variable-communicator.js +23 -1
  106. package/remote/communication/variable/remote-variable-communicator.metadata.json +1 -1
  107. package/remote/communication/variable/remote-variable-protocol.d.ts +3 -0
  108. package/service/index.d.ts +1 -0
  109. package/service/index.metadata.json +1 -1
  110. package/service/released-variable/index.d.ts +1 -0
  111. package/service/released-variable/index.js +0 -0
  112. package/service/released-variable/index.metadata.json +1 -0
  113. package/service/released-variable/released-variable.service.d.ts +4 -0
  114. package/service/released-variable/released-variable.service.js +0 -0
  115. package/service/released-variable/released-variable.service.metadata.json +1 -0
  116. package/service/weather.service.d.ts +1 -0
  117. package/shared/gui-consts.d.ts +2 -0
  118. package/shared/gui-consts.js +2 -0
  119. package/shared/gui-consts.metadata.json +1 -1
  120. package/utils/data-type/data-type.service.d.ts +4 -7
  121. package/utils/data-type/data-type.service.js +29 -17
  122. package/utils/data-type/fbox-data-type.service.js +40 -0
  123. package/utils/numerical-operation.service.js +2 -2
@@ -8,5 +8,6 @@ export interface VariableCommunicator {
8
8
  writeWordByBit(variableName: string, index: number, value: number): Observable<VariableValue>;
9
9
  subscribeVariableState(variableName: string): Observable<VariableState>;
10
10
  subscribeVariableStates(variableNames: Array<string>): Observable<Array<VariableState>>;
11
+ subscribeUserDeviceAlarms(appId: string): any;
11
12
  dispose(): any;
12
13
  }
@@ -0,0 +1,6 @@
1
+ import { Observable } from 'rxjs';
2
+ import { GetAlarmsArgs } from './get-alarms-args';
3
+ export interface AlarmsStore {
4
+ getHistoryAlarms(input: GetAlarmsArgs): Observable<any>;
5
+ getCurrentAlarms(input: GetAlarmsArgs): Observable<any>;
6
+ }
File without changes
@@ -0,0 +1 @@
1
+ [{"__symbolic":"module","version":4,"metadata":{"AlarmsStore":{"__symbolic":"interface"}}}]
@@ -0,0 +1,9 @@
1
+ import * as moment from 'moment';
2
+ export declare class GetAlarmsArgs {
3
+ readonly alarmNames: string[];
4
+ readonly triggeredStartTime: moment.Moment;
5
+ readonly triggeredEndTime: moment.Moment;
6
+ readonly maxResultCount: number;
7
+ readonly skipCount: number;
8
+ constructor(alarmNames: string[], triggeredStartTime: moment.Moment, triggeredEndTime: moment.Moment, maxResultCount: number, skipCount: number);
9
+ }
@@ -0,0 +1,9 @@
1
+ export class GetAlarmsArgs {
2
+ constructor(alarmNames, triggeredStartTime, triggeredEndTime, maxResultCount, skipCount) {
3
+ this.alarmNames = alarmNames;
4
+ this.triggeredStartTime = triggeredStartTime;
5
+ this.triggeredEndTime = triggeredEndTime;
6
+ this.maxResultCount = maxResultCount;
7
+ this.skipCount = skipCount;
8
+ }
9
+ }
@@ -0,0 +1 @@
1
+ [{"__symbolic":"module","version":4,"metadata":{"GetAlarmsArgs":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"string"}]},{"__symbolic":"reference","module":"moment","name":"Moment","line":5,"character":37},{"__symbolic":"reference","module":"moment","name":"Moment","line":6,"character":35},{"__symbolic":"reference","name":"number"},{"__symbolic":"reference","name":"number"}]}]}}}}]
@@ -0,0 +1,2 @@
1
+ export { AlarmsStore } from './alarm.store';
2
+ export { GetAlarmsArgs } from './get-alarms-args';
@@ -0,0 +1 @@
1
+ export { GetAlarmsArgs } from './get-alarms-args';
@@ -0,0 +1 @@
1
+ [{"__symbolic":"module","version":4,"metadata":{},"exports":[{"from":"./alarm.store","export":["AlarmsStore"]},{"from":"./get-alarms-args","export":["GetAlarmsArgs"]}]}]
@@ -3,6 +3,7 @@ import { ViewStore } from './view/view-store';
3
3
  import { ImageStore } from './image/image-store';
4
4
  import { HistoryDataStore } from './history-data/history-data.store';
5
5
  import { VariableStore } from './variable/variable-store';
6
+ import { AlarmsStore } from './alarm';
6
7
  /**
7
8
  * 配置仓储
8
9
  */
@@ -11,5 +12,6 @@ export interface ConfigStore {
11
12
  readonly graphStore: GraphStore;
12
13
  readonly imageStore: ImageStore;
13
14
  readonly historyDataStore: HistoryDataStore;
15
+ readonly alarmsStore: AlarmsStore;
14
16
  readonly variableStore: VariableStore;
15
17
  }
package/config/index.d.ts CHANGED
@@ -8,3 +8,4 @@ export { ViewModel } from './view/view.model';
8
8
  export { ImageStore } from './image/image-store';
9
9
  export * from './history-data';
10
10
  export * from './variable';
11
+ export * from './alarm';
package/config/index.js CHANGED
@@ -4,3 +4,4 @@ export { GraphType } from './graph/graph-type';
4
4
  export { ViewModel } from './view/view.model';
5
5
  export * from './history-data';
6
6
  export * from './variable';
7
+ export * from './alarm';
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{},"exports":[{"from":"./config-store","export":["ConfigStore"]},{"from":"./graph/graph","export":["Graph"]},{"from":"./graph/graph-result","export":["GraphResult"]},{"from":"./graph/graph-type","export":["GraphType"]},{"from":"./graph/graph-store","export":["GraphStore"]},{"from":"./view/view-store","export":["ViewStore"]},{"from":"./view/view.model","export":["ViewModel"]},{"from":"./image/image-store","export":["ImageStore"]},{"from":"./history-data"},{"from":"./variable"}]}]
1
+ [{"__symbolic":"module","version":4,"metadata":{},"exports":[{"from":"./config-store","export":["ConfigStore"]},{"from":"./graph/graph","export":["Graph"]},{"from":"./graph/graph-result","export":["GraphResult"]},{"from":"./graph/graph-type","export":["GraphType"]},{"from":"./graph/graph-store","export":["GraphStore"]},{"from":"./view/view-store","export":["ViewStore"]},{"from":"./view/view.model","export":["ViewModel"]},{"from":"./image/image-store","export":["ImageStore"]},{"from":"./history-data"},{"from":"./variable"},{"from":"./alarm"}]}]
@@ -0,0 +1,31 @@
1
+ import { Injector } from '@angular/core';
2
+ import { AirQualityModel } from '../../model/air-quality/air-quality.model';
3
+ import { ConditionalDisplayElement } from '../base/conditional-display-element';
4
+ import { PermissionChecker } from '../../service';
5
+ import { VariableCommunicator } from '../../communication/variable';
6
+ import { VariableStore } from '../../config/variable';
7
+ import { WeatherService } from '../../service';
8
+ export declare class AirQualityElement extends ConditionalDisplayElement {
9
+ private readonly weatherService;
10
+ model: AirQualityModel;
11
+ timer: any;
12
+ private readonly localization;
13
+ constructor(element: HTMLElement, injector: Injector, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, variableStore: VariableStore, weatherService: WeatherService, signalRAppId: string);
14
+ dispose(): void;
15
+ initAirQualityInfo(): void;
16
+ private handleData;
17
+ private handleNotSupported;
18
+ private handleGettingAddress;
19
+ private handleNoAddress;
20
+ private handleUnusualCommon;
21
+ private buildBackgroudRect;
22
+ private buildRectBackgroundForAqi;
23
+ private buildUnusualTipIcon;
24
+ getUnusualIconPath(): string;
25
+ private buildUnusualTipText;
26
+ private buildAirQualityText;
27
+ private buildLocGroup;
28
+ getLocPath(): string;
29
+ private appendAirQualitySvg;
30
+ clear(): void;
31
+ }
@@ -0,0 +1,194 @@
1
+ import { ConditionalDisplayElement } from '../base/conditional-display-element';
2
+ import * as d3 from 'd3-selection';
3
+ import { LOCALIZATION } from '../../localization';
4
+ export class AirQualityElement extends ConditionalDisplayElement {
5
+ constructor(element, injector, permissionChecker, variableCommunicator, variableStore, weatherService, signalRAppId) {
6
+ super(element, permissionChecker, variableCommunicator, variableStore, signalRAppId);
7
+ this.weatherService = weatherService;
8
+ this.localization = injector.get(LOCALIZATION);
9
+ this.initAirQualityInfo();
10
+ this.timer = setInterval(() => this.initAirQualityInfo(), 1000 * 60 * 60);
11
+ }
12
+ dispose() {
13
+ clearInterval(this.timer);
14
+ }
15
+ initAirQualityInfo() {
16
+ this.clear();
17
+ this.weatherService.getAirQualityInfo().then(airQuality => {
18
+ const airQualityDto = airQuality;
19
+ if (!airQualityDto.supported) {
20
+ this.handleNotSupported();
21
+ return;
22
+ }
23
+ if (airQualityDto.gettingAddress) {
24
+ this.handleGettingAddress();
25
+ return;
26
+ }
27
+ if (!airQualityDto.hasAddress) {
28
+ this.handleNoAddress();
29
+ return;
30
+ }
31
+ this.handleData(airQualityDto.airQuality);
32
+ }).catch(() => {
33
+ this.handleNotSupported();
34
+ });
35
+ }
36
+ handleData(airQuality) {
37
+ const fontColor = this.model.stroke ? this.model.stroke : '#FFFFFF';
38
+ const backgroundColor = this.model.fill && this.model.fill || '#86A7C5';
39
+ const airQualitySvg = d3.create('svg');
40
+ this.buildBackgroudRect(airQualitySvg, backgroundColor);
41
+ this.buildLocGroup(airQualitySvg, airQuality.city, fontColor);
42
+ this.buildAirQualityText(airQualitySvg, 130, 55, airQuality.aqi, fontColor, 53);
43
+ this.buildAirQualityText(airQualitySvg, 220, 28, '空气质量', fontColor);
44
+ this.buildRectBackgroundForAqi(airQualitySvg, airQuality.level);
45
+ this.buildAirQualityText(airQualitySvg, 220, 49, airQuality.category, fontColor);
46
+ this.buildAirQualityText(airQualitySvg, 30, 75, 'PM2.5', fontColor, 12, 0.8);
47
+ this.buildAirQualityText(airQualitySvg, 30, 95, airQuality.pm25, fontColor, 15);
48
+ this.buildAirQualityText(airQualitySvg, 80, 75, 'PM10', fontColor, 12, 0.8);
49
+ this.buildAirQualityText(airQualitySvg, 80, 95, airQuality.pm10, fontColor, 15);
50
+ this.buildAirQualityText(airQualitySvg, 130, 75, 'NO2', fontColor, 12, 0.8);
51
+ this.buildAirQualityText(airQualitySvg, 130, 95, airQuality.no2, fontColor, 15);
52
+ this.buildAirQualityText(airQualitySvg, 175, 75, 'SO2', fontColor, 12, 0.8);
53
+ this.buildAirQualityText(airQualitySvg, 175, 95, airQuality.so2, fontColor, 15);
54
+ this.buildAirQualityText(airQualitySvg, 215, 75, 'CO', fontColor, 12, 0.8);
55
+ this.buildAirQualityText(airQualitySvg, 215, 95, airQuality.co, fontColor, 15);
56
+ this.buildAirQualityText(airQualitySvg, 250, 75, 'O3', fontColor, 12, 0.8);
57
+ this.buildAirQualityText(airQualitySvg, 250, 95, airQuality.o3, fontColor, 15);
58
+ this.appendAirQualitySvg(airQualitySvg);
59
+ }
60
+ handleNotSupported() {
61
+ this.handleUnusualCommon(this.localization.airQualityNotSupport);
62
+ }
63
+ handleGettingAddress() {
64
+ this.handleUnusualCommon(this.localization.airQualityNotAvailable);
65
+ }
66
+ handleNoAddress() {
67
+ this.handleUnusualCommon(this.localization.airQualityNotAddress);
68
+ }
69
+ handleUnusualCommon(text) {
70
+ const airQualitySvg = d3.create('svg');
71
+ this.buildBackgroudRect(airQualitySvg, '#081625', '0.5');
72
+ this.buildUnusualTipIcon(airQualitySvg, text.length);
73
+ this.buildUnusualTipText(airQualitySvg, text);
74
+ this.appendAirQualitySvg(airQualitySvg);
75
+ }
76
+ buildBackgroudRect(airQualitySvg, backgroundColor, opacity = '1') {
77
+ airQualitySvg.append('rect')
78
+ .attr('x', '0')
79
+ .attr('y', '0')
80
+ .attr('rx', '2')
81
+ .attr('width', '280')
82
+ .attr('height', '105')
83
+ .attr('fill', backgroundColor)
84
+ .attr('fill-opacity', opacity);
85
+ }
86
+ buildRectBackgroundForAqi(airQualitySvg, level, opacity = '1') {
87
+ let backgroundColor;
88
+ if (level >= 0 && level <= 50) {
89
+ backgroundColor = '#50DF56';
90
+ }
91
+ else if (level >= 51 && level <= 100) {
92
+ backgroundColor = '#FBCD1C';
93
+ }
94
+ else if (level >= 101 && level <= 150) {
95
+ backgroundColor = '#FF9900';
96
+ }
97
+ else if (level >= 151 && level <= 200) {
98
+ backgroundColor = '#FF3232';
99
+ }
100
+ else if (level >= 201 && level <= 300) {
101
+ backgroundColor = '#F403B5';
102
+ }
103
+ else if (level > 300) {
104
+ backgroundColor = '#A10E0E';
105
+ }
106
+ airQualitySvg.append('rect')
107
+ .attr('x', '195')
108
+ .attr('y', '35')
109
+ .attr('rx', '5')
110
+ .attr('width', '50')
111
+ .attr('height', '20')
112
+ .attr('fill', backgroundColor)
113
+ .attr('fill-opacity', opacity);
114
+ }
115
+ buildUnusualTipIcon(airQualitySvg, length) {
116
+ airQualitySvg.append('svg')
117
+ .attr('x', length > 9 ? (268 - 7 * length - 8 - 42) / 2 : '44')
118
+ .attr('y', '23')
119
+ .attr('width', '42')
120
+ .attr('height', '34')
121
+ .attr('viewBox', '0 0 200 160')
122
+ .html(this.getUnusualIconPath);
123
+ }
124
+ getUnusualIconPath() {
125
+ return `<g>
126
+ <ellipse class="st2" cx="74.6" cy="72.3" rx="36.4" ry="36.3" fill="#EFCA30"/>
127
+ <path class="st2" fill="#EFCA30" d="M74.5,24.5C74.6,24.5,74.6,24.5,74.5,24.5c3.7,0,5.7-2,5.7-5.5V5.5C80.2,2,78,0,74.6,0C71,0,69,2.1,69,5.5V19
128
+ C69,22.3,71,24.4,74.5,24.5L74.5,24.5z"/>
129
+ <path class="st2" fill="#EFCA30" d="M37.2,28.5l-6.9-6.7c-1.3-1.3-2.7-1.9-4.1-1.9s-2.8,0.6-4.1,1.9c-1.3,1.3-1.9,2.6-1.9,4s0.6,2.7,1.9,4
130
+ l6.4,6.1c0.5,0.5,1.2,1.1,1.9,1.4c1.2,0.5,2,0.7,2.8,0.7c0.6,0,1.3-0.2,2-0.4c1.4-0.5,2.7-1.5,3.3-2.8c0.3-0.7,0.5-1.5,0.5-2.2
131
+ C39.1,31.2,38.5,29.8,37.2,28.5L37.2,28.5z"/>
132
+ <path class="st2" fill="#EFCA30" d="M112.5,36.9c1.6,0.7,2.7,1.2,3.7,1.2s2-0.4,3.6-1.2c0.2-0.1,0.4-0.2,0.5-0.4l6.9-6.7c1.3-1.3,1.9-2.6,1.9-4
133
+ s-0.6-2.7-1.9-4c-1.3-1.3-2.7-1.9-4.1-1.9s-2.8,0.6-4.1,1.9l-6.9,6.7c-1.3,1.3-1.9,2.6-1.9,4c0,1.4,0.6,2.7,1.9,4
134
+ C112.1,36.6,112.3,36.8,112.5,36.9L112.5,36.9z"/>
135
+ <path class="st2" fill="#EFCA30" d="M25.1,73.2C25.1,73.1,25.1,73.1,25.1,73.2c0-3.6-2-5.6-5.6-5.6H5.6C2,67.6,0,69.7,0,73.1
136
+ c0,3.4,2.2,5.5,5.6,5.5h13.8C22.7,78.6,24.9,76.6,25.1,73.2L25.1,73.2z"/>
137
+ <path class="st2" fill="#EFCA30" d="M33.2,107.6c-1.4,0-2.8,0.6-4.1,1.9l-6.9,6.7c-1.3,1.3-1.9,2.6-1.9,4s0.6,2.7,1.9,4c0.2,0.2,0.3,0.3,0.5,0.4
138
+ c1.6,0.7,2.7,1.2,3.7,1.2c0.5,0,1.5-0.1,3.6-1.2c0.2-0.1,0.4-0.2,0.5-0.4l6.9-6.7c2.6-2.5,2.6-5.6,0-8.1
139
+ C36,108.3,34.6,107.6,33.2,107.6L33.2,107.6z"/>
140
+ </g>
141
+ <path class="st3" fill="#FFFFFF" d="M68.8,160h99.3c17.9-2,31.9-17.1,31.9-35.5c0-18.3-13.8-33.3-31.5-35.4c-8-17-25.2-28.9-45.3-28.9
142
+ c-22.4,0-41.4,14.7-47.7,35c-1.1-0.1-2.2-0.2-3.4-0.2c-18,0-32.6,14.6-32.6,32.6C39.5,144.5,52.3,158.3,68.8,160z"/>`;
143
+ }
144
+ buildUnusualTipText(airQualitySvg, text) {
145
+ const length = text.length;
146
+ airQualitySvg.append('text')
147
+ .attr('x', length > 9 ? (268 - 7 * length - 8 - 42) / 2 + 42 + 8 : '94')
148
+ .attr('y', '46')
149
+ .attr('font-size', 14)
150
+ .attr('font-anchor', 'middle')
151
+ .attr('fill', '#FFFFFF')
152
+ .attr('dominant-baseline', 'central')
153
+ .text(text);
154
+ }
155
+ buildAirQualityText(airQualitySvg, x, y, text, fontColor, size = 12, opacity = 1) {
156
+ airQualitySvg.append('text')
157
+ .attr('x', x)
158
+ .attr('y', y)
159
+ .attr('font-size', size)
160
+ .attr('text-anchor', 'middle')
161
+ .attr('fill', fontColor)
162
+ .attr('opacity', opacity)
163
+ .text(text);
164
+ }
165
+ buildLocGroup(airQualitySvg, location, fontColor) {
166
+ airQualitySvg.append('svg')
167
+ .attr('x', '14')
168
+ .attr('y', '10')
169
+ .attr('width', '11')
170
+ .attr('height', '15')
171
+ .attr('viewBox', '0 0 156 200')
172
+ .append('path')
173
+ .attr('fill', fontColor)
174
+ .attr('d', this.getLocPath);
175
+ airQualitySvg.append('text')
176
+ .attr('x', '30')
177
+ .attr('y', '22')
178
+ .attr('font-size', '12')
179
+ .attr('fill', fontColor)
180
+ .text(location);
181
+ }
182
+ getLocPath() {
183
+ return `M78,0C35,0,0,33.3,0,74.3c0,50.8,55.5,105.4,72.6,120.9l5.3,4.8l5.3-4.7c0.7-0.6,72.5-64.6,72.8-121v0
184
+ C156,33.3,121,0,78,0z M78,178.6c-17.8-17.1-62.1-63.9-62.1-104.4C15.8,42,43.7,15.7,78,15.7c34.3,0,62.2,26.3,62.2,58.5
185
+ C140,111.8,99.2,158.4,78,178.6z M78,40.4c-17.8,0-32.4,14.4-32.4,32.2s14.5,32.2,32.4,32.2s32.4-14.4,32.4-32.2S95.8,
186
+ 40.4,78,40.4z M78,89.1c-9.1,0-16.5-7.4-16.5-16.5S68.9,56.2,78,56.2s16.5,7.4,16.5,16.5S87.1,89.1,78,89.1z`;
187
+ }
188
+ appendAirQualitySvg(airQualitySvg) {
189
+ this.rootElement.append(() => airQualitySvg.node());
190
+ }
191
+ clear() {
192
+ this.rootElement.selectAll('*').remove();
193
+ }
194
+ }
@@ -0,0 +1 @@
1
+ [{"__symbolic":"module","version":4,"metadata":{"AirQualityElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/conditional-display-element","name":"ConditionalDisplayElement","line":11,"character":39},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":18,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":19,"character":18},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":20,"character":27},{"__symbolic":"reference","module":"../../communication/variable","name":"VariableCommunicator","line":21,"character":30},{"__symbolic":"reference","module":"../../config/variable","name":"VariableStore","line":22,"character":23},{"__symbolic":"reference","module":"../../service","name":"WeatherService","line":23,"character":41},{"__symbolic":"reference","name":"string"}]}],"dispose":[{"__symbolic":"method"}],"initAirQualityInfo":[{"__symbolic":"method"}],"handleData":[{"__symbolic":"method"}],"handleNotSupported":[{"__symbolic":"method"}],"handleGettingAddress":[{"__symbolic":"method"}],"handleNoAddress":[{"__symbolic":"method"}],"handleUnusualCommon":[{"__symbolic":"method"}],"buildBackgroudRect":[{"__symbolic":"method"}],"buildRectBackgroundForAqi":[{"__symbolic":"method"}],"buildUnusualTipIcon":[{"__symbolic":"method"}],"getUnusualIconPath":[{"__symbolic":"method"}],"buildUnusualTipText":[{"__symbolic":"method"}],"buildAirQualityText":[{"__symbolic":"method"}],"buildLocGroup":[{"__symbolic":"method"}],"getLocPath":[{"__symbolic":"method"}],"appendAirQualitySvg":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}]}}}}]
@@ -0,0 +1,44 @@
1
+ import { Injector } from '@angular/core';
2
+ import { PermissionChecker } from '../../service';
3
+ import { VariableCommunicator } from '../../communication';
4
+ import { ConditionalDisplayElement } from '../base/conditional-display-element';
5
+ import { AlarmModel } from '../../model/alarm/alarm.model';
6
+ import { AlarmsStore, VariableStore } from '../../config';
7
+ export declare class AlarmElement extends ConditionalDisplayElement {
8
+ private readonly alarmsStore;
9
+ readonly model: AlarmModel;
10
+ private readonly logger;
11
+ readonly variableCommunicator: VariableCommunicator;
12
+ private readonly localization;
13
+ private readonly timePeriods;
14
+ private elementStatus;
15
+ private element;
16
+ private refreshIntervalId;
17
+ private readonly displayOption;
18
+ private alarmNames;
19
+ private startTime;
20
+ private endTime;
21
+ private currentTimePeriod;
22
+ private alarmList;
23
+ private currentAlarmList;
24
+ private page;
25
+ private totalCount;
26
+ private pageSize;
27
+ private getAlarmDataId;
28
+ constructor(element: HTMLElement, injector: Injector, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, variableStore: VariableStore, alarmsStore: AlarmsStore, signalRAppId: string);
29
+ dispose(): void;
30
+ private getValidTimePeriods;
31
+ private getAlarmData;
32
+ private renderElement;
33
+ private renderOperationArea;
34
+ private updateTimeRange;
35
+ private updateQueryTimeRange;
36
+ private loadFirstPage;
37
+ private loadNextPage;
38
+ private loadPreviousPage;
39
+ private loadLastPage;
40
+ private setStatusAsNormal;
41
+ private setStatusAsLoading;
42
+ private renderStatus;
43
+ private clearStatus;
44
+ }