@flexem/fc-gui 3.0.0-alpha.5 → 3.0.0-alpha.51

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 (201) hide show
  1. package/CHANGELOG.md +203 -5
  2. package/bundles/@flexem/fc-gui.umd.js +2666 -1563
  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 +2 -2
  7. package/elements/air-quality/air-quality-element.d.ts +31 -0
  8. package/elements/air-quality/air-quality-element.js +195 -0
  9. package/elements/air-quality/air-quality-element.metadata.json +1 -0
  10. package/elements/bar-graph-element.d.ts +8 -2
  11. package/elements/bar-graph-element.js +72 -6
  12. package/elements/bar-graph-element.metadata.json +1 -1
  13. package/elements/base/base-element.d.ts +2 -1
  14. package/elements/base/base-element.js +2 -1
  15. package/elements/base/base-element.metadata.json +1 -1
  16. package/elements/base/conditional-control-element.d.ts +1 -1
  17. package/elements/base/conditional-control-element.js +3 -3
  18. package/elements/base/conditional-control-element.metadata.json +1 -1
  19. package/elements/base/conditional-display-element.d.ts +1 -1
  20. package/elements/base/conditional-display-element.js +4 -4
  21. package/elements/base/conditional-display-element.metadata.json +1 -1
  22. package/elements/base/conditional-dynamic-display-element.d.ts +1 -1
  23. package/elements/base/conditional-dynamic-display-element.js +3 -3
  24. package/elements/base/conditional-dynamic-display-element.metadata.json +1 -1
  25. package/elements/base/conditional-enable-element.d.ts +1 -1
  26. package/elements/base/conditional-enable-element.js +4 -4
  27. package/elements/base/conditional-enable-element.metadata.json +1 -1
  28. package/elements/base/readable-element.d.ts +7 -2
  29. package/elements/base/readable-element.js +33 -4
  30. package/elements/base/readable-element.metadata.json +1 -1
  31. package/elements/base/state-control-element.d.ts +1 -1
  32. package/elements/base/state-control-element.js +2 -2
  33. package/elements/base/state-control-element.metadata.json +1 -1
  34. package/elements/character-display/character-display-element.d.ts +1 -1
  35. package/elements/character-display/character-display-element.js +2 -2
  36. package/elements/character-display/character-display-element.metadata.json +1 -1
  37. package/elements/datetime-display/datetime-display-element.d.ts +1 -1
  38. package/elements/datetime-display/datetime-display-element.js +2 -2
  39. package/elements/datetime-display/datetime-display-element.metadata.json +1 -1
  40. package/elements/historical-curve/historical-curve.element.d.ts +1 -1
  41. package/elements/historical-curve/historical-curve.element.js +103 -15
  42. package/elements/historical-curve/historical-curve.element.metadata.json +1 -1
  43. package/elements/main-element.d.ts +2 -1
  44. package/elements/main-element.js +44 -26
  45. package/elements/main-element.metadata.json +1 -1
  46. package/elements/meter-element.d.ts +8 -2
  47. package/elements/meter-element.js +78 -9
  48. package/elements/meter-element.metadata.json +1 -1
  49. package/elements/numerical-display/numerical-display-element.d.ts +8 -2
  50. package/elements/numerical-display/numerical-display-element.js +48 -12
  51. package/elements/numerical-display/numerical-display-element.metadata.json +1 -1
  52. package/elements/per-view-variable-communicator.d.ts +2 -2
  53. package/elements/per-view-variable-communicator.js +4 -4
  54. package/elements/pipe/pipe-element.d.ts +1 -1
  55. package/elements/pipe/pipe-element.js +2 -2
  56. package/elements/pipe/pipe-element.metadata.json +1 -1
  57. package/elements/ring-graph/ring-graph-element.d.ts +11 -2
  58. package/elements/ring-graph/ring-graph-element.js +108 -5
  59. package/elements/ring-graph/ring-graph-element.metadata.json +1 -1
  60. package/elements/shared/graph/graph-state-element.js +0 -3
  61. package/elements/shared/text/text-element.js +13 -2
  62. package/elements/shared/text/text-state-element.js +1 -1
  63. package/elements/static-elements/hyperlink-element.d.ts +1 -1
  64. package/elements/static-elements/hyperlink-element.js +2 -2
  65. package/elements/static-elements/hyperlink-element.metadata.json +1 -1
  66. package/elements/static-elements/image-element.d.ts +1 -1
  67. package/elements/static-elements/image-element.js +2 -2
  68. package/elements/static-elements/image-element.metadata.json +1 -1
  69. package/elements/static-elements/text-element.d.ts +1 -1
  70. package/elements/static-elements/text-element.js +2 -2
  71. package/elements/static-elements/text-element.metadata.json +1 -1
  72. package/elements/switch-indicator-light/bit-indicator-light-operator.d.ts +1 -1
  73. package/elements/switch-indicator-light/bit-indicator-light-operator.js +4 -4
  74. package/elements/switch-indicator-light/bit-switch-operator.d.ts +3 -1
  75. package/elements/switch-indicator-light/bit-switch-operator.js +22 -2
  76. package/elements/switch-indicator-light/bit-switch-operator.metadata.json +1 -1
  77. package/elements/switch-indicator-light/indicator-light-operator.d.ts +1 -1
  78. package/elements/switch-indicator-light/switch-indicator-light-element.d.ts +9 -1
  79. package/elements/switch-indicator-light/switch-indicator-light-element.js +97 -28
  80. package/elements/switch-indicator-light/switch-indicator-light-element.metadata.json +1 -1
  81. package/elements/switch-indicator-light/switch-operator.d.ts +1 -0
  82. package/elements/switch-indicator-light/word-indicator-light-operator.d.ts +1 -1
  83. package/elements/switch-indicator-light/word-indicator-light-operator.js +5 -5
  84. package/elements/switch-indicator-light/word-switch-operator.d.ts +3 -1
  85. package/elements/switch-indicator-light/word-switch-operator.js +9 -2
  86. package/elements/switch-indicator-light/word-switch-operator.metadata.json +1 -1
  87. package/elements/table/table-element.d.ts +1 -1
  88. package/elements/table/table-element.js +2 -2
  89. package/elements/table/table-element.metadata.json +1 -1
  90. package/elements/vector-graphics/ellipse-element.d.ts +1 -1
  91. package/elements/vector-graphics/ellipse-element.js +2 -2
  92. package/elements/vector-graphics/ellipse-element.metadata.json +1 -1
  93. package/elements/vector-graphics/poly-line-element.d.ts +1 -1
  94. package/elements/vector-graphics/poly-line-element.js +2 -2
  95. package/elements/vector-graphics/poly-line-element.metadata.json +1 -1
  96. package/elements/vector-graphics/polygon-element.d.ts +1 -1
  97. package/elements/vector-graphics/polygon-element.js +2 -2
  98. package/elements/vector-graphics/polygon-element.metadata.json +1 -1
  99. package/elements/vector-graphics/rectangle-element.d.ts +1 -1
  100. package/elements/vector-graphics/rectangle-element.js +2 -2
  101. package/elements/vector-graphics/rectangle-element.metadata.json +1 -1
  102. package/elements/vector-graphics/sector-element.d.ts +1 -1
  103. package/elements/vector-graphics/sector-element.js +2 -2
  104. package/elements/vector-graphics/sector-element.metadata.json +1 -1
  105. package/elements/vector-graphics/straight-line-element.d.ts +1 -1
  106. package/elements/vector-graphics/straight-line-element.js +2 -2
  107. package/elements/vector-graphics/straight-line-element.metadata.json +1 -1
  108. package/elements/video/video-element.d.ts +1 -1
  109. package/elements/video/video-element.js +2 -2
  110. package/elements/video/video-element.metadata.json +1 -1
  111. package/elements/view-operation/view-operation.element.d.ts +1 -1
  112. package/elements/view-operation/view-operation.element.js +2 -2
  113. package/elements/view-operation/view-operation.element.metadata.json +1 -1
  114. package/elements/weather/weater-element.d.ts +1 -1
  115. package/elements/weather/weater-element.js +2 -2
  116. package/elements/weather/weater-element.metadata.json +1 -1
  117. package/gui/gui-context.d.ts +2 -1
  118. package/gui/gui-host.d.ts +1 -1
  119. package/gui/gui-view.d.ts +1 -0
  120. package/gui/gui-view.js +3 -2
  121. package/gui/gui-view.metadata.json +1 -1
  122. package/gui/gui.component.d.ts +3 -0
  123. package/gui/gui.component.js +12 -2
  124. package/gui/gui.component.metadata.json +1 -1
  125. package/localization/localization.service.d.ts +7 -0
  126. package/localization/localization.service.js +8 -1
  127. package/localization/localization.service.metadata.json +1 -1
  128. package/localization/localization.service.zh_CN.js +8 -1
  129. package/localization/localization.service.zh_CN.metadata.json +1 -1
  130. package/modal/write-value/write-value-modal-args.d.ts +2 -1
  131. package/modal/write-value/write-value-modal-args.js +2 -1
  132. package/modal/write-value/write-value-modal-args.metadata.json +1 -1
  133. package/modal/write-value/write-value-modal.component.d.ts +8 -7
  134. package/modal/write-value/write-value-modal.component.html +5 -2
  135. package/modal/write-value/write-value-modal.component.js +29 -23
  136. package/modal/write-value/write-value-modal.component.metadata.json +1 -1
  137. package/model/air-quality/air-quality-info.d.ts +23 -0
  138. package/model/air-quality/air-quality-info.js +4 -0
  139. package/model/air-quality/air-quality-info.metadata.json +1 -0
  140. package/model/air-quality/air-quality.model.d.ts +7 -0
  141. package/model/air-quality/air-quality.model.js +0 -0
  142. package/model/air-quality/air-quality.model.metadata.json +1 -0
  143. package/model/bar-graph/bar-graph.d.ts +4 -0
  144. package/model/base/readable-model.d.ts +4 -0
  145. package/model/historical-curve/historical-curve-axis-settings.d.ts +7 -0
  146. package/model/historical-curve/historical-curve-axis-settings.js +5 -0
  147. package/model/historical-curve/historical-curve-axis-settings.metadata.json +1 -1
  148. package/model/meter/meter.d.ts +4 -0
  149. package/model/numerical-display/numerical-display.d.ts +1 -0
  150. package/model/ring-graph/ring-graph.model.d.ts +8 -0
  151. package/model/shared/condition/bit-condition-item-observer.d.ts +1 -1
  152. package/model/shared/condition/bit-condition-item-observer.js +4 -4
  153. package/model/shared/condition/condition-items-result-observer.d.ts +1 -1
  154. package/model/shared/condition/condition-items-result-observer.js +22 -12
  155. package/model/shared/condition/condition-items-result-observer.metadata.json +1 -1
  156. package/model/shared/condition/convert-condition-model.d.ts +5 -0
  157. package/model/shared/condition/convert-condition-model.js +0 -0
  158. package/model/shared/condition/convert-condition-model.metadata.json +1 -0
  159. package/model/shared/condition/relation-condition-result.d.ts +2 -1
  160. package/model/shared/condition/relation-condition-result.js +2 -1
  161. package/model/shared/condition/relation-condition-result.metadata.json +1 -1
  162. package/model/shared/condition/word-condition-item-observer.d.ts +1 -1
  163. package/model/shared/condition/word-condition-item-observer.js +11 -11
  164. package/model/shared/dynamic-display/dynamic-display.d.ts +1 -1
  165. package/model/shared/dynamic-display/dynamic-display.js +4 -4
  166. package/model/shared/dynamic-display/dynamic-display.metadata.json +1 -1
  167. package/model/shared/rotation/rotation-behavior.d.ts +1 -1
  168. package/model/shared/rotation/rotation-behavior.js +2 -2
  169. package/model/shared/rotation/rotation-behavior.metadata.json +1 -1
  170. package/model/shared/rotation/rotation-observer.d.ts +2 -1
  171. package/model/shared/rotation/rotation-observer.js +3 -2
  172. package/model/shared/rotation/rotation-observer.metadata.json +1 -1
  173. package/model/shared/translation/translation-behavior.d.ts +1 -1
  174. package/model/shared/translation/translation-behavior.js +3 -3
  175. package/model/shared/translation/translation-behavior.metadata.json +1 -1
  176. package/model/shared/translation/translation-observer.d.ts +1 -1
  177. package/model/shared/translation/translation-observer.js +2 -2
  178. package/model/shared/translation/translation-observer.metadata.json +1 -1
  179. package/model/switch-indicator-light/bit-switch-operation.d.ts +2 -1
  180. package/model/switch-indicator-light/bit-switch-operation.js +1 -0
  181. package/model/switch-indicator-light/bit-switch-operation.metadata.json +1 -1
  182. package/package.json +1 -1
  183. package/remote/communication/variable/remote-variable-communicator.d.ts +3 -2
  184. package/remote/communication/variable/remote-variable-communicator.js +16 -9
  185. package/remote/communication/variable/remote-variable-communicator.metadata.json +1 -1
  186. package/remote/communication/variable/remote-variable-protocol.d.ts +2 -2
  187. package/service/index.d.ts +1 -0
  188. package/service/index.metadata.json +1 -1
  189. package/service/released-variable/index.d.ts +1 -0
  190. package/service/released-variable/index.js +0 -0
  191. package/service/released-variable/index.metadata.json +1 -0
  192. package/service/released-variable/released-variable.service.d.ts +4 -0
  193. package/service/released-variable/released-variable.service.js +0 -0
  194. package/service/released-variable/released-variable.service.metadata.json +1 -0
  195. package/service/weather.service.d.ts +1 -0
  196. package/shared/gui-consts.d.ts +1 -0
  197. package/shared/gui-consts.js +1 -0
  198. package/shared/gui-consts.metadata.json +1 -1
  199. package/utils/data-type/data-type.service.d.ts +4 -7
  200. package/utils/data-type/data-type.service.js +29 -17
  201. package/utils/numerical-operation.service.js +2 -2
@@ -4,8 +4,8 @@ import { ConditionalEnableElement } from './conditional-enable-element';
4
4
  import { forEach } from 'lodash';
5
5
  import { VariableUtil } from '../../utils/variable-util';
6
6
  export class ReadableElement extends ConditionalEnableElement {
7
- constructor(element, permissionChecker, variableCommunicator, variableStore, localization) {
8
- super(element, permissionChecker, variableCommunicator, variableStore, localization);
7
+ constructor(element, permissionChecker, variableCommunicator, variableStore, localization, signalRAppId) {
8
+ super(element, permissionChecker, variableCommunicator, variableStore, localization, signalRAppId);
9
9
  }
10
10
  init(variableName) {
11
11
  if (variableName) {
@@ -36,6 +36,33 @@ export class ReadableElement extends ConditionalEnableElement {
36
36
  return VariableUtil.getConvertedVariableName(this.variableStore, variable);
37
37
  }
38
38
  }
39
+ get minVariableName() {
40
+ if (!this.model.minValueType) {
41
+ return undefined;
42
+ }
43
+ return this.getVariableName(this.model.minVariable);
44
+ }
45
+ get minValueType() {
46
+ return this.model.minValueType;
47
+ }
48
+ get maxVariableName() {
49
+ if (!this.model.maxValueType) {
50
+ return undefined;
51
+ }
52
+ return this.getVariableName(this.model.maxVariable);
53
+ }
54
+ get maxValueType() {
55
+ return this.model.maxValueType;
56
+ }
57
+ getVariableName(variable) {
58
+ if (!this.model) {
59
+ throw new Error('Model cannot be null');
60
+ }
61
+ if (!variable) {
62
+ return undefined;
63
+ }
64
+ return VariableUtil.getConvertedVariableName(this.variableStore, variable);
65
+ }
39
66
  reportStateChanged(variableState) {
40
67
  forEach(this.elementStates, elementState => {
41
68
  if (elementState.variableName === variableState.variableName) {
@@ -51,8 +78,10 @@ export class ReadableElement extends ConditionalEnableElement {
51
78
  this.changeStates();
52
79
  }
53
80
  });
54
- if (this.state === State.Normal || this.state === State.Disable) {
55
- this.updateVariableValue(value.value);
81
+ if (this.state === State.Normal || this.state === State.Disable
82
+ || value.variableName === this.minVariableName
83
+ || value.variableName === this.maxVariableName) {
84
+ this.updateVariableValue(value.value, value.variableName);
56
85
  }
57
86
  }
58
87
  }
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"ReadableElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"./conditional-enable-element","name":"ConditionalEnableElement","line":9,"character":46},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":13,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":13,"character":57},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":13,"character":98},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":14,"character":23},{"__symbolic":"reference","module":"../../localization","name":"Localization","line":14,"character":52}]}],"init":[{"__symbolic":"method"}],"updateVariableValue":[{"__symbolic":"method"}],"reportStateChanged":[{"__symbolic":"method"}],"reportValueChanged":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"ReadableElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"./conditional-enable-element","name":"ConditionalEnableElement","line":9,"character":46},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":13,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":13,"character":57},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":13,"character":98},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":14,"character":23},{"__symbolic":"reference","module":"../../localization","name":"Localization","line":14,"character":52},{"__symbolic":"reference","name":"string"}]}],"init":[{"__symbolic":"method"}],"getVariableName":[{"__symbolic":"method"}],"updateVariableValue":[{"__symbolic":"method"}],"reportStateChanged":[{"__symbolic":"method"}],"reportValueChanged":[{"__symbolic":"method"}]}}}}]
@@ -11,7 +11,7 @@ export declare abstract class StateControlElement extends ConditionalDynamicDisp
11
11
  state: State;
12
12
  private currentRect;
13
13
  preState: State;
14
- constructor(element: HTMLElement, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, variableStore: VariableStore, localization: Localization);
14
+ constructor(element: HTMLElement, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, variableStore: VariableStore, localization: Localization, signalRAppId: string);
15
15
  initState(): void;
16
16
  updateElementStates(newElementStates: VariableState[]): void;
17
17
  addElementState(newElementState: VariableState): void;
@@ -3,8 +3,8 @@ import { VariableStateEnum } from '../../communication';
3
3
  import { ConditionalDynamicDisplayElement } from './conditional-dynamic-display-element';
4
4
  import { State } from '../../model';
5
5
  export class StateControlElement extends ConditionalDynamicDisplayElement {
6
- constructor(element, permissionChecker, variableCommunicator, variableStore, localization) {
7
- super(element, permissionChecker, variableCommunicator, variableStore);
6
+ constructor(element, permissionChecker, variableCommunicator, variableStore, localization, signalRAppId) {
7
+ super(element, permissionChecker, variableCommunicator, variableStore, signalRAppId);
8
8
  this.localization = localization;
9
9
  this.isEnable = true;
10
10
  this.elementStates = [];
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"StateControlElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"./conditional-dynamic-display-element","name":"ConditionalDynamicDisplayElement","line":8,"character":50},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":16,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":16,"character":57},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":16,"character":98},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":17,"character":23},{"__symbolic":"reference","module":"../../localization","name":"Localization","line":17,"character":71}]}],"initState":[{"__symbolic":"method"}],"updateElementStates":[{"__symbolic":"method"}],"addElementState":[{"__symbolic":"method"}],"changeStates":[{"__symbolic":"method"}],"getState":[{"__symbolic":"method"}],"changeState":[{"__symbolic":"method"}],"loadStateData":[{"__symbolic":"method"}],"setState":[{"__symbolic":"method"}],"clearTip":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"StateControlElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"./conditional-dynamic-display-element","name":"ConditionalDynamicDisplayElement","line":8,"character":50},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":16,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":16,"character":57},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":16,"character":98},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":17,"character":23},{"__symbolic":"reference","module":"../../localization","name":"Localization","line":17,"character":71},{"__symbolic":"reference","name":"string"}]}],"initState":[{"__symbolic":"method"}],"updateElementStates":[{"__symbolic":"method"}],"addElementState":[{"__symbolic":"method"}],"changeStates":[{"__symbolic":"method"}],"getState":[{"__symbolic":"method"}],"changeState":[{"__symbolic":"method"}],"loadStateData":[{"__symbolic":"method"}],"setState":[{"__symbolic":"method"}],"clearTip":[{"__symbolic":"method"}]}}}}]
@@ -17,7 +17,7 @@ export declare class CharacterDisplayElement extends ReadableElement {
17
17
  private displayValue;
18
18
  private graphs;
19
19
  private readonly logger;
20
- constructor(element: HTMLElement, injector: Injector, modalService: BsModalService, variableCommunicator: VariableCommunicator, graphStore: GraphStore, permissionChecker: PermissionChecker, operationRecordService: OperationRecordService, securityChecker: SecurityChecker, variableStore: VariableStore, localization: Localization);
20
+ constructor(element: HTMLElement, injector: Injector, modalService: BsModalService, variableCommunicator: VariableCommunicator, graphStore: GraphStore, permissionChecker: PermissionChecker, operationRecordService: OperationRecordService, securityChecker: SecurityChecker, variableStore: VariableStore, localization: Localization, signalRAppId: string);
21
21
  get readVariableName(): string;
22
22
  get writeVariableName(): string;
23
23
  protected updateVariableValue(value: string): void;
@@ -11,8 +11,8 @@ import { VerifyPasswordModalComponent } from '../../modal/verify-password/verify
11
11
  import { VariableUtil } from '../../utils/variable-util';
12
12
  import { TextElementModal } from '../shared/text/text-element';
13
13
  export class CharacterDisplayElement extends ReadableElement {
14
- constructor(element, injector, modalService, variableCommunicator, graphStore, permissionChecker, operationRecordService, securityChecker, variableStore, localization) {
15
- super(element, permissionChecker, variableCommunicator, variableStore, localization);
14
+ constructor(element, injector, modalService, variableCommunicator, graphStore, permissionChecker, operationRecordService, securityChecker, variableStore, localization, signalRAppId) {
15
+ super(element, permissionChecker, variableCommunicator, variableStore, localization, signalRAppId);
16
16
  this.modalService = modalService;
17
17
  this.graphStore = graphStore;
18
18
  this.operationRecordService = operationRecordService;
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"CharacterDisplayElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/readable-element","name":"ReadableElement","line":19,"character":45},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":28,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":28,"character":48},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":29,"character":39},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":30,"character":30},{"__symbolic":"reference","module":"../../config","name":"GraphStore","line":31,"character":37},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":32,"character":27},{"__symbolic":"reference","module":"../../service","name":"OperationRecordService","line":33,"character":49},{"__symbolic":"reference","module":"../../security","name":"SecurityChecker","line":34,"character":42},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":35,"character":23},{"__symbolic":"reference","module":"../../localization","name":"Localization","line":36,"character":22}]}],"updateVariableValue":[{"__symbolic":"method"}],"changeStates":[{"__symbolic":"method"}],"updateDisplayValue":[{"__symbolic":"method"}],"getVariableValueText":[{"__symbolic":"method"}],"characterDisplayText":[{"__symbolic":"method"}],"initElement":[{"__symbolic":"method"}],"initVariableText":[{"__symbolic":"method"}],"initClickEvent":[{"__symbolic":"method"}],"checkElementPassword":[{"__symbolic":"method"}],"doWriteCharacterValue":[{"__symbolic":"method"}],"recordOperation":[{"__symbolic":"method"}],"changeGraph":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"CharacterDisplayElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/readable-element","name":"ReadableElement","line":19,"character":45},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":28,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":28,"character":48},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":29,"character":39},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":30,"character":30},{"__symbolic":"reference","module":"../../config","name":"GraphStore","line":31,"character":37},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":32,"character":27},{"__symbolic":"reference","module":"../../service","name":"OperationRecordService","line":33,"character":49},{"__symbolic":"reference","module":"../../security","name":"SecurityChecker","line":34,"character":42},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":35,"character":23},{"__symbolic":"reference","module":"../../localization","name":"Localization","line":36,"character":22},{"__symbolic":"reference","name":"string"}]}],"updateVariableValue":[{"__symbolic":"method"}],"changeStates":[{"__symbolic":"method"}],"updateDisplayValue":[{"__symbolic":"method"}],"getVariableValueText":[{"__symbolic":"method"}],"characterDisplayText":[{"__symbolic":"method"}],"initElement":[{"__symbolic":"method"}],"initVariableText":[{"__symbolic":"method"}],"initClickEvent":[{"__symbolic":"method"}],"checkElementPassword":[{"__symbolic":"method"}],"doWriteCharacterValue":[{"__symbolic":"method"}],"recordOperation":[{"__symbolic":"method"}],"changeGraph":[{"__symbolic":"method"}]}}}}]
@@ -13,7 +13,7 @@ export declare class DatetimeDisplayElement extends ConditionalDisplayElement {
13
13
  protected readonly model: DatetimeDisplay;
14
14
  protected readonly logger: LoggerService;
15
15
  private readonly $dateTimeText;
16
- constructor(element: HTMLElement, injector: Injector, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, variableStore: VariableStore, graphStore: GraphStore);
16
+ constructor(element: HTMLElement, injector: Injector, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, variableStore: VariableStore, graphStore: GraphStore, signalRAppId: string);
17
17
  private getAndSetCurrentTime;
18
18
  private getDatetimeFormat;
19
19
  private initGraph;
@@ -6,8 +6,8 @@ import { ConditionalDisplayElement } from '../base/conditional-display-element';
6
6
  import { GraphStateElement } from '../shared/graph/graph-state-element';
7
7
  import { LOGGER_SERVICE_TOKEN } from '../../logger';
8
8
  export class DatetimeDisplayElement extends ConditionalDisplayElement {
9
- constructor(element, injector, permissionChecker, variableCommunicator, variableStore, graphStore) {
10
- super(element, permissionChecker, variableCommunicator, variableStore);
9
+ constructor(element, injector, permissionChecker, variableCommunicator, variableStore, graphStore, signalRAppId) {
10
+ super(element, permissionChecker, variableCommunicator, variableStore, signalRAppId);
11
11
  this.permissionChecker = permissionChecker;
12
12
  this.variableCommunicator = variableCommunicator;
13
13
  this.variableStore = variableStore;
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"DatetimeDisplayElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/conditional-display-element","name":"ConditionalDisplayElement","line":14,"character":44},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":21,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":21,"character":48},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":22,"character":46},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":23,"character":49},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":24,"character":42},{"__symbolic":"reference","module":"../../config","name":"GraphStore","line":25,"character":37}]}],"getAndSetCurrentTime":[{"__symbolic":"method"}],"getDatetimeFormat":[{"__symbolic":"method"}],"initGraph":[{"__symbolic":"method"}],"getFormat":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"DatetimeDisplayElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/conditional-display-element","name":"ConditionalDisplayElement","line":14,"character":44},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":21,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":21,"character":48},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":22,"character":46},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":23,"character":49},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":24,"character":42},{"__symbolic":"reference","module":"../../config","name":"GraphStore","line":25,"character":37},{"__symbolic":"reference","name":"string"}]}],"getAndSetCurrentTime":[{"__symbolic":"method"}],"getDatetimeFormat":[{"__symbolic":"method"}],"initGraph":[{"__symbolic":"method"}],"getFormat":[{"__symbolic":"method"}]}}}}]
@@ -32,7 +32,7 @@ export declare class HistoricalCurveElement extends ConditionalDisplayElement {
32
32
  private elementStatus;
33
33
  private chartElement;
34
34
  private isMobileMode;
35
- constructor(element: HTMLElement, injector: Injector, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, variableStore: VariableStore, historyDataStore: HistoryDataStore);
35
+ constructor(element: HTMLElement, injector: Injector, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, variableStore: VariableStore, historyDataStore: HistoryDataStore, signalRAppId: string);
36
36
  dispose(): void;
37
37
  private getValidTimePeriods;
38
38
  private updateTimeRange;
@@ -10,9 +10,10 @@ import { HistoricalCurveElementStatus } from './historical-curve-element-status'
10
10
  import { LOGGER_SERVICE_TOKEN } from '../../logger';
11
11
  import { GlobalSettings, DisplayMode } from '../../settings';
12
12
  import { CurveType } from '../../model/historical-curve/curve-type';
13
+ import { AxisRangeType } from '../../model/historical-curve/historical-curve-axis-settings';
13
14
  export class HistoricalCurveElement extends ConditionalDisplayElement {
14
- constructor(element, injector, permissionChecker, variableCommunicator, variableStore, historyDataStore) {
15
- super(element, permissionChecker, variableCommunicator, variableStore);
15
+ constructor(element, injector, permissionChecker, variableCommunicator, variableStore, historyDataStore, signalRAppId) {
16
+ super(element, permissionChecker, variableCommunicator, variableStore, signalRAppId);
16
17
  this.historyDataStore = historyDataStore;
17
18
  this.displayOption = {
18
19
  dataLimit: 500,
@@ -21,7 +22,7 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
21
22
  marginRight: 20,
22
23
  mobileMinWidth: 450,
23
24
  operationAreaHeight: 32,
24
- operationAreaMarginTop: 10,
25
+ operationAreaMarginTop: 25,
25
26
  operationSelectFontSize: '16px',
26
27
  operationButtonWidth: 24,
27
28
  operationButtonHeight: 24,
@@ -38,7 +39,7 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
38
39
  }, this.model.displaySetting.refreshInterval * 1000);
39
40
  this.isMobileMode = DisplayMode.Mobile === injector.get(GlobalSettings).displayMode;
40
41
  if (this.isMobileMode) {
41
- this.displayOption.operationAreaMarginTop = 20;
42
+ this.displayOption.operationAreaMarginTop = 35;
42
43
  if (this.model.displaySetting.size.width >= this.displayOption.mobileMinWidth) {
43
44
  this.displayOption.operationAreaHeight = 68;
44
45
  this.displayOption.operationSelectFontSize = '24px';
@@ -58,7 +59,9 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
58
59
  }
59
60
  getValidTimePeriods() {
60
61
  const timePeriods = new Array();
62
+ timePeriods.push({ key: 6, name: this.localization.lastThirtyMinutes });
61
63
  timePeriods.push({ key: 1, name: this.localization.lastOneHour });
64
+ timePeriods.push({ key: 7, name: this.localization.lastEightHour });
62
65
  timePeriods.push({ key: 2, name: this.localization.lastTwentyFourHours });
63
66
  timePeriods.push({ key: 3, name: this.localization.lastSevenDays });
64
67
  timePeriods.push({ key: 4, name: this.localization.lastThirtyDays });
@@ -84,6 +87,12 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
84
87
  case 5:
85
88
  this.startTime = moment().subtract(1, 'years');
86
89
  break;
90
+ case 6:
91
+ this.startTime = moment().subtract(30, 'minutes');
92
+ break;
93
+ case 7:
94
+ this.startTime = moment().subtract(8, 'hours');
95
+ break;
87
96
  default:
88
97
  this.startTime = moment().subtract(1, 'days');
89
98
  }
@@ -144,6 +153,9 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
144
153
  const chart = nv.models.lineChart().showLegend(true)
145
154
  .margin({ top: 0, bottom: 0, left: this.displayOption.marginLeft, right: this.displayOption.marginRight })
146
155
  .noData(this.localization.chartNoData);
156
+ if (this.model.displaySetting.axisSetting.yAxisRangeType === AxisRangeType.Custom) {
157
+ chart.yDomain([this.model.displaySetting.axisSetting.yAxisMin, this.model.displaySetting.axisSetting.yAxisMax]);
158
+ }
147
159
  if (!this.isMobileMode) {
148
160
  chart.focusEnable(true);
149
161
  chart.focus.margin({ top: 10, right: 0, bottom: 0, left: 0 });
@@ -151,10 +163,6 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
151
163
  chart.focus.showXAxis(false);
152
164
  }
153
165
  this.renderCommonProperty(chart, chartWidth, chartHeight, data);
154
- // if in Mobile mode and width is less than the min width, then hide operation area
155
- if (this.isMobileMode && this.model.displaySetting.size.width < this.displayOption.mobileMinWidth) {
156
- return chart;
157
- }
158
166
  this.renderOperationArea(chartWidth, chartHeight);
159
167
  return chart;
160
168
  }
@@ -172,16 +180,15 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
172
180
  chart.multibar.stacked(true);
173
181
  chart.multibar2.stacked(true);
174
182
  }
183
+ if (this.model.displaySetting.axisSetting.yAxisRangeType === AxisRangeType.Custom) {
184
+ chart.yDomain([this.model.displaySetting.axisSetting.yAxisMin, this.model.displaySetting.axisSetting.yAxisMax]);
185
+ }
175
186
  if (!this.isMobileMode) {
176
187
  chart.focusEnable(true);
177
188
  chart.focusShowAxisX(false);
178
189
  }
179
190
  chart.xAxis.tickFormat(d => this.timeFormat(d, '%x %X'));
180
191
  this.renderCommonProperty(chart, chartWidth, chartHeight, data);
181
- // if in Mobile mode and width is less than the min width, then hide operation area
182
- if (this.isMobileMode && this.model.displaySetting.size.width < this.displayOption.mobileMinWidth) {
183
- return chart;
184
- }
185
192
  this.renderOperationArea(chartWidth, chartHeight);
186
193
  const focusContext = this.rootElement.select('.nv-context');
187
194
  focusContext.select('.nv-barsWrap.nvd3-svg').attr('transform', 'translate(0,30)');
@@ -196,9 +203,15 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
196
203
  return chart;
197
204
  }
198
205
  renderCommonProperty(chart, chartWidth, chartHeight, data) {
206
+ var _a, _b;
199
207
  chart.tooltip.headerFormatter(d => this.timeFormat(d, '%x %X'));
200
208
  if (this.model.displaySetting.showAxis) {
201
- chart.xAxis.showMaxMin(true).tickFormat(d => this.timeFormat(d, '%X'));
209
+ chart.xAxis.showMaxMin(true).tickFormat(d => {
210
+ if (this.currentTimePeriod === 3 || this.currentTimePeriod === 4 || this.currentTimePeriod === 5) {
211
+ return this.timeFormat(d, '%y-%m-%d');
212
+ }
213
+ return this.timeFormat(Number(d), '%X');
214
+ });
202
215
  if (this.model.displaySetting.axisSetting) {
203
216
  if (this.model.displaySetting.axisSetting.showAxisLabel && this.model.displaySetting.axisSetting.axisLabelFont) {
204
217
  chart.xAxis.fontSize(this.model.displaySetting.axisSetting.axisLabelFont.fontSize);
@@ -223,15 +236,90 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
223
236
  chart.update();
224
237
  this.rootElement.selectAll('.nv-noData').attr('x', chartWidth / 2).attr('y', chartHeight / 2 + this.displayOption.operationAreaHeight);
225
238
  });
239
+ const fontSize = (_b = (_a = this.model.displaySetting.axisSetting) === null || _a === void 0 ? void 0 : _a.axisLabelFont) === null || _b === void 0 ? void 0 : _b.fontSize;
226
240
  this.rootElement.selectAll('.domain').style('stroke-opacity', 1);
227
241
  if (this.model.displaySetting.showAxis && this.model.displaySetting.axisSetting) {
228
242
  const axisColor = this.model.displaySetting.axisSetting.axisColor;
229
243
  this.rootElement.selectAll('.domain').style('stroke', axisColor);
230
- if (this.model.displaySetting.axisSetting.showAxisLabel) {
231
- const fontSize = this.model.displaySetting.axisSetting.axisLabelFont.fontSize;
244
+ if (fontSize && this.model.displaySetting.axisSetting.showAxisLabel) {
232
245
  this.rootElement.selectAll('.nv-axisMaxMin').select('text').style('font-size', fontSize);
233
246
  }
234
247
  }
248
+ if (fontSize && this.currentTimePeriod === 3 || this.currentTimePeriod === 4 || this.currentTimePeriod === 5) {
249
+ const self = this;
250
+ this.rootElement
251
+ .selectAll('.nv-x')
252
+ .selectAll('.tick')
253
+ .selectAll('text')
254
+ .data(function (d) {
255
+ return [self.timeFormat(Number(d), '%y-%m-%d'), self.timeFormat(Number(d), '%H:%M:%S')];
256
+ })
257
+ .enter()
258
+ .append('text')
259
+ .attr('class', 'full-date')
260
+ .attr('x', 0)
261
+ .attr('y', 0)
262
+ .attr('dy', '2.3em')
263
+ .style('text-anchor', 'middle')
264
+ .style('font-size', fontSize)
265
+ .text((d) => d);
266
+ this.rootElement
267
+ .selectAll('.nv-axisMaxMin-x')
268
+ .selectAll('text')
269
+ .data(function (d) {
270
+ return [self.timeFormat(Number(d), '%y-%m-%d'), self.timeFormat(Number(d), '%H:%M:%S')];
271
+ })
272
+ .enter()
273
+ .append('text')
274
+ .attr('class', 'full-date')
275
+ .attr('x', 0)
276
+ .attr('y', 0)
277
+ .attr('dy', '2.3em')
278
+ .style('text-anchor', 'middle')
279
+ .style('font-size', fontSize)
280
+ .text((d) => d);
281
+ const focusWrap = this.rootElement.selectAll('.nv-focusWrap');
282
+ if (focusWrap.size()) {
283
+ const h = focusWrap.attr('transform')
284
+ .slice(0, -1)
285
+ .split(',')[1];
286
+ this.rootElement
287
+ .selectAll('.nv-focusWrap')
288
+ .attr('transform', `translate(0,${Number(h) + 15})`);
289
+ }
290
+ const resizeObserver = new window.MutationObserver(() => {
291
+ this.rootElement
292
+ .selectAll('.nv-x')
293
+ .selectAll('.tick')
294
+ .selectAll('.full-date')
295
+ .remove();
296
+ this.rootElement
297
+ .selectAll('.nv-x')
298
+ .selectAll('.tick')
299
+ .selectAll('text')
300
+ .data(function (d) {
301
+ return [self.timeFormat(Number(d), '%y-%m-%d'), self.timeFormat(Number(d), '%H:%M:%S')];
302
+ })
303
+ .enter()
304
+ .append('text')
305
+ .attr('class', 'full-date')
306
+ .attr('x', 0)
307
+ .attr('y', 0)
308
+ .attr('dy', '2.3em')
309
+ .style('text-anchor', 'middle')
310
+ .style('font-size', fontSize)
311
+ .text((d) => d);
312
+ });
313
+ const extent = document.getElementsByClassName('extent');
314
+ if (extent.length) {
315
+ resizeObserver.observe(extent[0], { attributes: true });
316
+ }
317
+ }
318
+ else {
319
+ this.rootElement
320
+ .selectAll('.full-date')
321
+ .remove();
322
+ }
235
323
  }
236
324
  renderOperationArea(chartWidth, chartHeight) {
237
325
  const operationArea = this.rootElement.append('g').attr('transform', `translate(0,${chartHeight + this.displayOption.operationAreaMarginTop})`)
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"HistoricalCurveElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/conditional-display-element","name":"ConditionalDisplayElement","line":20,"character":44},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":62,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":63,"character":18},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":64,"character":27},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":65,"character":30},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":66,"character":23},{"__symbolic":"reference","module":"../../config","name":"HistoryDataStore","line":67,"character":43}]}],"dispose":[{"__symbolic":"method"}],"getValidTimePeriods":[{"__symbolic":"method"}],"updateTimeRange":[{"__symbolic":"method"}],"updateQueryTimeRange":[{"__symbolic":"method"}],"reRenderElement":[{"__symbolic":"method"}],"renderElement":[{"__symbolic":"method"}],"renderChart":[{"__symbolic":"method"}],"getLineChart":[{"__symbolic":"method"}],"getMultiBarWithFocusChart":[{"__symbolic":"method"}],"renderCommonProperty":[{"__symbolic":"method"}],"renderOperationArea":[{"__symbolic":"method"}],"timeFormat":[{"__symbolic":"method"}],"loadFirstPage":[{"__symbolic":"method"}],"loadNextPage":[{"__symbolic":"method"}],"loadPreviousPage":[{"__symbolic":"method"}],"loadLastPage":[{"__symbolic":"method"}],"initElementStatus":[{"__symbolic":"method"}],"updateElementStatus":[{"__symbolic":"method"}],"setStatusAsUnbound":[{"__symbolic":"method"}],"setStatusAsLoading":[{"__symbolic":"method"}],"setStatusAsLoadFailed":[{"__symbolic":"method"}],"renderStatus":[{"__symbolic":"method"}],"clearStatus":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"HistoricalCurveElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/conditional-display-element","name":"ConditionalDisplayElement","line":21,"character":44},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":63,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":64,"character":18},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":65,"character":27},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":66,"character":30},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":67,"character":23},{"__symbolic":"reference","module":"../../config","name":"HistoryDataStore","line":68,"character":43},{"__symbolic":"reference","name":"string"}]}],"dispose":[{"__symbolic":"method"}],"getValidTimePeriods":[{"__symbolic":"method"}],"updateTimeRange":[{"__symbolic":"method"}],"updateQueryTimeRange":[{"__symbolic":"method"}],"reRenderElement":[{"__symbolic":"method"}],"renderElement":[{"__symbolic":"method"}],"renderChart":[{"__symbolic":"method"}],"getLineChart":[{"__symbolic":"method"}],"getMultiBarWithFocusChart":[{"__symbolic":"method"}],"renderCommonProperty":[{"__symbolic":"method"}],"renderOperationArea":[{"__symbolic":"method"}],"timeFormat":[{"__symbolic":"method"}],"loadFirstPage":[{"__symbolic":"method"}],"loadNextPage":[{"__symbolic":"method"}],"loadPreviousPage":[{"__symbolic":"method"}],"loadLastPage":[{"__symbolic":"method"}],"initElementStatus":[{"__symbolic":"method"}],"updateElementStatus":[{"__symbolic":"method"}],"setStatusAsUnbound":[{"__symbolic":"method"}],"setStatusAsLoading":[{"__symbolic":"method"}],"setStatusAsLoadFailed":[{"__symbolic":"method"}],"renderStatus":[{"__symbolic":"method"}],"clearStatus":[{"__symbolic":"method"}]}}}}]
@@ -11,6 +11,7 @@ export declare class MainElement {
11
11
  private readonly context;
12
12
  private readonly variableCommunicator;
13
13
  private readonly popupViewService;
14
+ private readonly signalRAppId;
14
15
  private readonly elements;
15
16
  private root;
16
17
  private isLoaded;
@@ -20,7 +21,7 @@ export declare class MainElement {
20
21
  oldSize: Size;
21
22
  private hostContainerId;
22
23
  get rootElement(): HTMLElement;
23
- constructor(injector: Injector, bsModalService: BsModalService, context: GuiContext, variableCommunicator: VariableCommunicator, popupViewService: PopupViewService);
24
+ constructor(injector: Injector, bsModalService: BsModalService, context: GuiContext, variableCommunicator: VariableCommunicator, popupViewService: PopupViewService, signalRAppId: any);
24
25
  load(data: string, overflowVisible: boolean, guiOptions: GuiOptions): void;
25
26
  /**
26
27
  * 保证在显示区域内显示画面所有内容,等比缩放画面大小以铺满整个显示区域
@@ -27,13 +27,15 @@ import { PolygonElement } from './vector-graphics/polygon-element';
27
27
  import { HyperlinkElement } from './static-elements/hyperlink-element';
28
28
  import { VideoElement } from './video/video-element';
29
29
  import { WeatherElement } from './weather/weater-element';
30
+ import { AirQualityElement } from './air-quality/air-quality-element';
30
31
  export class MainElement {
31
- constructor(injector, bsModalService, context, variableCommunicator, popupViewService) {
32
+ constructor(injector, bsModalService, context, variableCommunicator, popupViewService, signalRAppId) {
32
33
  this.injector = injector;
33
34
  this.bsModalService = bsModalService;
34
35
  this.context = context;
35
36
  this.variableCommunicator = variableCommunicator;
36
37
  this.popupViewService = popupViewService;
38
+ this.signalRAppId = signalRAppId;
37
39
  this.elements = new Array();
38
40
  this.logger = injector.get(LOGGER_SERVICE_TOKEN);
39
41
  }
@@ -57,72 +59,75 @@ export class MainElement {
57
59
  const category = $(element).data('model').category;
58
60
  switch (category) {
59
61
  case GuiConsts.components.numericalDisplayKey:
60
- const numericalDisplayElement = new NumericalDisplayElement(element, this.injector, this.bsModalService, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.graphStore, this.context.operationRecordService, this.context.securityChecker, this.context.configStore.variableStore, this.injector.get(LOCALIZATION));
62
+ const numericalDisplayElement = new NumericalDisplayElement(element, this.injector, this.bsModalService, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.graphStore, this.context.operationRecordService, this.context.releasedVariableService, this.context.securityChecker, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId);
61
63
  this.elements.push(numericalDisplayElement);
62
64
  break;
63
65
  case GuiConsts.components.imageKey:
64
- this.elements.push(new ImageElement(element, this.injector, this.context.configStore.imageStore, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore));
66
+ this.elements.push(new ImageElement(element, this.injector, this.context.configStore.imageStore, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId));
65
67
  break;
66
68
  case GuiConsts.components.meterKey:
67
- this.elements.push(new MeterElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION)));
69
+ this.elements.push(new MeterElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
68
70
  break;
69
71
  case GuiConsts.components.pipeKey:
70
- this.elements.push(new PipeElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION)));
72
+ this.elements.push(new PipeElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
71
73
  break;
72
74
  case GuiConsts.components.switchIndicatorLightKey:
73
- this.elements.push(new SwitchIndicatorLightElement(element, this.injector, this.bsModalService, this.variableCommunicator, this.context.configStore.graphStore, this.context.permissionChecker, this.context.operationRecordService, this.context.securityChecker, this.context.configStore.variableStore, this.injector.get(LOCALIZATION)));
75
+ this.elements.push(new SwitchIndicatorLightElement(element, this.injector, this.bsModalService, this.variableCommunicator, this.context.configStore.graphStore, this.context.permissionChecker, this.context.operationRecordService, this.context.securityChecker, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
74
76
  break;
75
77
  case GuiConsts.components.barGraphKey:
76
- this.elements.push(new BarGraphElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION)));
78
+ this.elements.push(new BarGraphElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
77
79
  break;
78
80
  case GuiConsts.components.toggleViewKey:
79
81
  case GuiConsts.components.viewOperationElement:
80
- this.elements.push(new ViewOperationElement(element, this.injector, this.bsModalService, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.context.permissionChecker, this.context.operationRecordService, this.context.securityChecker, this.injector.get(LOCALIZATION), this.popupViewService, guiOptions.hostContainerId, guiOptions.el));
82
+ this.elements.push(new ViewOperationElement(element, this.injector, this.bsModalService, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.context.permissionChecker, this.context.operationRecordService, this.context.securityChecker, this.injector.get(LOCALIZATION), this.popupViewService, guiOptions.hostContainerId, guiOptions.el, this.signalRAppId));
81
83
  break;
82
84
  case GuiConsts.components.characterKey:
83
- this.elements.push(new CharacterDisplayElement(element, this.injector, this.bsModalService, this.variableCommunicator, this.context.configStore.graphStore, this.context.permissionChecker, this.context.operationRecordService, this.context.securityChecker, this.context.configStore.variableStore, this.injector.get(LOCALIZATION)));
85
+ this.elements.push(new CharacterDisplayElement(element, this.injector, this.bsModalService, this.variableCommunicator, this.context.configStore.graphStore, this.context.permissionChecker, this.context.operationRecordService, this.context.securityChecker, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
84
86
  break;
85
87
  case GuiConsts.components.textKey:
86
- this.elements.push(new TextElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore));
88
+ this.elements.push(new TextElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId));
87
89
  break;
88
90
  case GuiConsts.components.hyperlinkKey:
89
- this.elements.push(new HyperlinkElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore));
91
+ this.elements.push(new HyperlinkElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId));
90
92
  break;
91
93
  case GuiConsts.components.straightLineKey:
92
- this.elements.push(new StraightLineElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore));
94
+ this.elements.push(new StraightLineElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
93
95
  break;
94
96
  case GuiConsts.components.polyLineKey:
95
- this.elements.push(new PolyLineElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore));
97
+ this.elements.push(new PolyLineElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
96
98
  break;
97
99
  case GuiConsts.components.ellipseKey:
98
- this.elements.push(new EllipseElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore));
100
+ this.elements.push(new EllipseElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
99
101
  break;
100
102
  case GuiConsts.components.rectangleKey:
101
- this.elements.push(new RectangleElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore));
103
+ this.elements.push(new RectangleElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
102
104
  break;
103
105
  case GuiConsts.components.sectorkey:
104
- this.elements.push(new SectorElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore));
106
+ this.elements.push(new SectorElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
105
107
  break;
106
108
  case GuiConsts.components.datetimeDisplayKey:
107
- this.elements.push(new DatetimeDisplayElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore));
109
+ this.elements.push(new DatetimeDisplayElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId));
108
110
  break;
109
111
  case GuiConsts.components.historicalCurveKey:
110
- this.elements.push(new HistoricalCurveElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.historyDataStore));
112
+ this.elements.push(new HistoricalCurveElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.historyDataStore, this.signalRAppId));
111
113
  break;
112
114
  case GuiConsts.components.ringGraphKey:
113
- this.elements.push(new RingGraphElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION)));
115
+ this.elements.push(new RingGraphElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
114
116
  break;
115
117
  case GuiConsts.components.polygonKey:
116
- this.elements.push(new PolygonElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore));
118
+ this.elements.push(new PolygonElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
117
119
  break;
118
120
  case GuiConsts.components.videokey:
119
- this.elements.push(new VideoElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.videoService, new Size(this.rawWidth, this.rawHeight), guiOptions.svgRootClass));
121
+ this.elements.push(new VideoElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.videoService, new Size(this.rawWidth, this.rawHeight), guiOptions.svgRootClass, this.signalRAppId));
120
122
  break;
121
123
  case GuiConsts.components.tableKey:
122
- this.elements.push(new PolygonElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore));
124
+ this.elements.push(new PolygonElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
123
125
  break;
124
126
  case GuiConsts.components.weatherKey:
125
- this.elements.push(new WeatherElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.weatherService));
127
+ this.elements.push(new WeatherElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.weatherService, this.signalRAppId));
128
+ break;
129
+ case GuiConsts.components.airQualityKey:
130
+ this.elements.push(new AirQualityElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.weatherService, this.signalRAppId));
126
131
  break;
127
132
  }
128
133
  });
@@ -203,7 +208,7 @@ export class MainElement {
203
208
  initElementState() {
204
209
  forEach(this.elements, element => {
205
210
  if (element instanceof ReadableElement) {
206
- element.init(element.readVariableName);
211
+ element.init(element.readVariableName || element.maxVariableName || element.minVariableName);
207
212
  }
208
213
  else if (element instanceof HistoricalCurveElement) {
209
214
  element.initElementStatus();
@@ -214,8 +219,20 @@ export class MainElement {
214
219
  getVariableNames() {
215
220
  const variableNames = new Array();
216
221
  forEach(this.elements, element => {
222
+ var _a, _b;
217
223
  if (element instanceof ReadableElement) {
224
+ const maxVariableName = (_a = element) === null || _a === void 0 ? void 0 : _a.maxVariableName;
225
+ const maxValueType = element.maxValueType;
226
+ const minVariableName = (_b = element) === null || _b === void 0 ? void 0 : _b.minVariableName;
227
+ const minValueType = element.minValueType;
218
228
  const variableName = element.readVariableName;
229
+ // 最大最小值选择变量类型时,其中一个未绑定变量不进行开点操作 - FLEXCLOUD-1817
230
+ if (maxValueType && maxVariableName && !variableNames.find(v => isEqual(maxVariableName, v))) {
231
+ variableNames.push(maxVariableName);
232
+ }
233
+ if (minValueType && minVariableName && !variableNames.find(v => isEqual(minVariableName, v))) {
234
+ variableNames.push(minVariableName);
235
+ }
219
236
  if (variableName && !variableNames.find(v => isEqual(variableName, v))) {
220
237
  variableNames.push(element.readVariableName);
221
238
  }
@@ -241,7 +258,7 @@ export class MainElement {
241
258
  each(values, value => {
242
259
  each(this.elements, e => {
243
260
  if (e instanceof ReadableElement) {
244
- if (e.readVariableName === value.variableName) {
261
+ if (e.readVariableName === value.variableName || e.minVariableName === value.variableName || e.maxVariableName === value.variableName) {
245
262
  e.reportValueChanged(value);
246
263
  }
247
264
  }
@@ -251,7 +268,8 @@ export class MainElement {
251
268
  dispose() {
252
269
  each(this.elements, e => {
253
270
  if (e instanceof HistoricalCurveElement || e instanceof VideoElement
254
- || e instanceof WeatherElement || e instanceof NumericalDisplayElement || e instanceof TextElement) {
271
+ || e instanceof WeatherElement || e instanceof NumericalDisplayElement || e instanceof TextElement
272
+ || e instanceof AirQualityElement) {
255
273
  e.dispose();
256
274
  }
257
275
  });
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"MainElement":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":53,"character":43},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":54,"character":41},{"__symbolic":"reference","module":"../gui/gui-context","name":"GuiContext","line":55,"character":34},{"__symbolic":"reference","module":"../communication","name":"VariableCommunicator","line":56,"character":47},{"__symbolic":"reference","module":"../view/popup-view.service","name":"PopupViewService","line":57,"character":43}]}],"load":[{"__symbolic":"method"}],"uniformStretch":[{"__symbolic":"method"}],"changeVideoStyle":[{"__symbolic":"method"}],"horizontalStretch":[{"__symbolic":"method"}],"initElementState":[{"__symbolic":"method"}],"getVariableNames":[{"__symbolic":"method"}],"reportVariableStates":[{"__symbolic":"method"}],"reportVariableValues":[{"__symbolic":"method"}],"dispose":[{"__symbolic":"method"}],"checkIsLoaded":[{"__symbolic":"method"}],"initBackground":[{"__symbolic":"method"}],"getImageEl":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"MainElement":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":54,"character":43},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":55,"character":41},{"__symbolic":"reference","module":"../gui/gui-context","name":"GuiContext","line":56,"character":34},{"__symbolic":"reference","module":"../communication","name":"VariableCommunicator","line":57,"character":47},{"__symbolic":"reference","module":"../view/popup-view.service","name":"PopupViewService","line":58,"character":43},null]}],"load":[{"__symbolic":"method"}],"uniformStretch":[{"__symbolic":"method"}],"changeVideoStyle":[{"__symbolic":"method"}],"horizontalStretch":[{"__symbolic":"method"}],"initElementState":[{"__symbolic":"method"}],"getVariableNames":[{"__symbolic":"method"}],"reportVariableStates":[{"__symbolic":"method"}],"reportVariableValues":[{"__symbolic":"method"}],"dispose":[{"__symbolic":"method"}],"checkIsLoaded":[{"__symbolic":"method"}],"initBackground":[{"__symbolic":"method"}],"getImageEl":[{"__symbolic":"method"}]}}}}]