@flexem/fc-gui 3.0.0-alpha.18 → 3.0.0-alpha.181

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 (194) hide show
  1. package/CHANGELOG.md +419 -1
  2. package/assets/img/black_first_page.png +0 -0
  3. package/assets/img/black_last_page.png +0 -0
  4. package/assets/img/black_next_page.png +0 -0
  5. package/assets/img/black_previous_page.png +0 -0
  6. package/assets/img/exclamation-outline-circle.png +0 -0
  7. package/bundles/@flexem/fc-gui.umd.js +37413 -32291
  8. package/bundles/@flexem/fc-gui.umd.js.map +1 -1
  9. package/bundles/@flexem/fc-gui.umd.min.js +5 -5
  10. package/bundles/@flexem/fc-gui.umd.min.js.map +1 -1
  11. package/communication/variable/variable-communicator.d.ts +5 -0
  12. package/communication/variable/variable-state-enum.d.ts +1 -0
  13. package/communication/variable/variable-state-enum.js +1 -0
  14. package/communication/variable/variable-state-enum.metadata.json +1 -1
  15. package/communication/variable/variable-value.d.ts +4 -1
  16. package/communication/variable/variable-value.js +4 -1
  17. package/communication/variable/variable-value.metadata.json +1 -1
  18. package/config/alarm/alarm.store.d.ts +6 -0
  19. package/config/alarm/alarm.store.js +0 -0
  20. package/config/alarm/alarm.store.metadata.json +1 -0
  21. package/config/alarm/get-alarms-args.d.ts +12 -0
  22. package/config/alarm/get-alarms-args.js +13 -0
  23. package/config/alarm/get-alarms-args.metadata.json +1 -0
  24. package/config/alarm/index.d.ts +2 -0
  25. package/config/alarm/index.js +1 -0
  26. package/config/alarm/index.metadata.json +1 -0
  27. package/config/config-store.d.ts +2 -0
  28. package/config/gui-feature-config.d.ts +3 -0
  29. package/config/gui-feature-config.js +3 -0
  30. package/config/gui-feature-config.metadata.json +1 -0
  31. package/config/index.d.ts +2 -0
  32. package/config/index.js +2 -0
  33. package/config/index.metadata.json +1 -1
  34. package/config/variable/variable-store.d.ts +1 -0
  35. package/elements/air-quality/air-quality-element.js +3 -4
  36. package/elements/alarm/alarm-element.d.ts +89 -0
  37. package/elements/alarm/alarm-element.js +739 -0
  38. package/elements/alarm/alarm-element.metadata.json +1 -0
  39. package/elements/bar-graph-element.d.ts +10 -2
  40. package/elements/bar-graph-element.js +135 -5
  41. package/elements/bar-graph-element.metadata.json +1 -1
  42. package/elements/base/readable-element.d.ts +6 -1
  43. package/elements/base/readable-element.js +69 -2
  44. package/elements/base/readable-element.metadata.json +1 -1
  45. package/elements/base/state-control-element.d.ts +13 -1
  46. package/elements/base/state-control-element.js +42 -8
  47. package/elements/base/state-control-element.metadata.json +1 -1
  48. package/elements/character-display/character-display-element.d.ts +9 -0
  49. package/elements/character-display/character-display-element.js +18 -2
  50. package/elements/character-display/character-display-element.metadata.json +1 -1
  51. package/elements/datetime-display/datetime-display-element.d.ts +1 -0
  52. package/elements/datetime-display/datetime-display-element.js +10 -2
  53. package/elements/datetime-display/datetime-display-element.metadata.json +1 -1
  54. package/elements/datetime-display/time-zone-select-json.d.ts +8 -0
  55. package/elements/datetime-display/time-zone-select-json.js +558 -0
  56. package/elements/historical-curve/historical-curve.element.d.ts +45 -3
  57. package/elements/historical-curve/historical-curve.element.js +722 -45
  58. package/elements/historical-curve/historical-curve.element.metadata.json +1 -1
  59. package/elements/main-element.d.ts +1 -0
  60. package/elements/main-element.js +71 -9
  61. package/elements/main-element.metadata.json +1 -1
  62. package/elements/meter-element.d.ts +7 -1
  63. package/elements/meter-element.js +76 -7
  64. package/elements/meter-element.metadata.json +1 -1
  65. package/elements/numerical-display/numerical-display-element.d.ts +31 -3
  66. package/elements/numerical-display/numerical-display-element.js +160 -12
  67. package/elements/numerical-display/numerical-display-element.metadata.json +1 -1
  68. package/elements/per-view-variable-communicator.d.ts +4 -0
  69. package/elements/per-view-variable-communicator.js +21 -1
  70. package/elements/per-view-variable-communicator.metadata.json +1 -1
  71. package/elements/ring-graph/ring-graph-element.d.ts +13 -1
  72. package/elements/ring-graph/ring-graph-element.js +164 -3
  73. package/elements/ring-graph/ring-graph-element.metadata.json +1 -1
  74. package/elements/scroll-alarm/scroll-alarm-element.d.ts +79 -0
  75. package/elements/scroll-alarm/scroll-alarm-element.js +845 -0
  76. package/elements/scroll-alarm/scroll-alarm-element.metadata.json +1 -0
  77. package/elements/shared/graph/graph-state-element.d.ts +1 -0
  78. package/elements/shared/graph/graph-state-element.js +30 -1
  79. package/elements/shared/graph/graph-state-element.metadata.json +1 -1
  80. package/elements/shared/text/text-element.d.ts +14 -0
  81. package/elements/shared/text/text-element.js +42 -4
  82. package/elements/shared/text/text-element.metadata.json +1 -1
  83. package/elements/shared/text/text-state-element.d.ts +39 -2
  84. package/elements/shared/text/text-state-element.js +242 -67
  85. package/elements/shared/text/text-state-element.metadata.json +1 -1
  86. package/elements/static-elements/hyperlink-element.d.ts +28 -2
  87. package/elements/static-elements/hyperlink-element.js +153 -4
  88. package/elements/static-elements/hyperlink-element.metadata.json +1 -1
  89. package/elements/static-elements/text-element.d.ts +28 -2
  90. package/elements/static-elements/text-element.js +162 -12
  91. package/elements/static-elements/text-element.metadata.json +1 -1
  92. package/elements/switch-indicator-light/bit-indicator-light-operator.d.ts +1 -0
  93. package/elements/switch-indicator-light/bit-indicator-light-operator.js +10 -3
  94. package/elements/switch-indicator-light/bit-indicator-light-operator.metadata.json +1 -1
  95. package/elements/switch-indicator-light/switch-indicator-light-element.d.ts +20 -2
  96. package/elements/switch-indicator-light/switch-indicator-light-element.js +85 -12
  97. package/elements/switch-indicator-light/switch-indicator-light-element.metadata.json +1 -1
  98. package/elements/switch-indicator-light/word-indicator-light-operator.d.ts +1 -0
  99. package/elements/switch-indicator-light/word-indicator-light-operator.js +10 -3
  100. package/elements/switch-indicator-light/word-indicator-light-operator.metadata.json +1 -1
  101. package/elements/video/video-element.d.ts +10 -0
  102. package/elements/video/video-element.js +139 -21
  103. package/elements/video/video-element.metadata.json +1 -1
  104. package/elements/view-operation/view-operation.element.d.ts +28 -2
  105. package/elements/view-operation/view-operation.element.js +165 -5
  106. package/elements/view-operation/view-operation.element.metadata.json +1 -1
  107. package/elements/weather/weater-element.js +0 -1
  108. package/gui/gui-context.d.ts +25 -2
  109. package/gui/gui-host.d.ts +1 -1
  110. package/gui/gui-view.d.ts +19 -2
  111. package/gui/gui-view.js +147 -12
  112. package/gui/gui-view.metadata.json +1 -1
  113. package/gui/gui.component.d.ts +3 -0
  114. package/gui/gui.component.js +15 -2
  115. package/gui/gui.component.metadata.json +1 -1
  116. package/localization/localization.service.d.ts +11 -0
  117. package/localization/localization.service.js +16 -5
  118. package/localization/localization.service.metadata.json +1 -1
  119. package/localization/localization.service.zh_CN.js +12 -1
  120. package/localization/localization.service.zh_CN.metadata.json +1 -1
  121. package/modal/write-character/write-character-modal.component.d.ts +3 -2
  122. package/modal/write-character/write-character-modal.component.html +4 -4
  123. package/modal/write-character/write-character-modal.component.js +7 -5
  124. package/modal/write-character/write-character-modal.component.less +15 -0
  125. package/modal/write-character/write-character-modal.component.metadata.json +1 -1
  126. package/modal/write-value/write-value-modal-args.d.ts +5 -1
  127. package/modal/write-value/write-value-modal-args.js +3 -1
  128. package/modal/write-value/write-value-modal-args.metadata.json +1 -1
  129. package/modal/write-value/write-value-modal.component.d.ts +15 -8
  130. package/modal/write-value/write-value-modal.component.html +10 -5
  131. package/modal/write-value/write-value-modal.component.js +99 -21
  132. package/modal/write-value/write-value-modal.component.less +16 -1
  133. package/modal/write-value/write-value-modal.component.metadata.json +1 -1
  134. package/model/alarm/alarm.model.d.ts +14 -0
  135. package/model/alarm/alarm.model.js +0 -0
  136. package/model/alarm/alarm.model.metadata.json +1 -0
  137. package/model/bar-graph/bar-graph.d.ts +4 -0
  138. package/model/base/font-setting-model.d.ts +22 -1
  139. package/model/base/font-setting-model.metadata.json +1 -1
  140. package/model/base/readable-model.d.ts +4 -0
  141. package/model/character-display/character-display.d.ts +1 -0
  142. package/model/datetime-display/datetime-display.d.ts +1 -0
  143. package/model/historical-curve/historical-curve-axis-settings.d.ts +11 -0
  144. package/model/historical-curve/historical-curve-axis-settings.js +5 -0
  145. package/model/historical-curve/historical-curve-axis-settings.metadata.json +1 -1
  146. package/model/historical-curve/historical-curve-chanel.model.d.ts +8 -0
  147. package/model/historical-curve/historical-curve.display-settings.d.ts +1 -0
  148. package/model/meter/meter.d.ts +4 -0
  149. package/model/numerical-display/numerical-display.d.ts +1 -0
  150. package/model/numerical-display/numerical-operation.d.ts +10 -2
  151. package/model/ring-graph/ring-graph.model.d.ts +8 -0
  152. package/model/scroll-alarm/scroll-alarm.model.d.ts +21 -0
  153. package/model/scroll-alarm/scroll-alarm.model.js +0 -0
  154. package/model/scroll-alarm/scroll-alarm.model.metadata.json +1 -0
  155. package/model/settings/popup/view-popup-location-type.d.ts +2 -1
  156. package/model/settings/popup/view-popup-location-type.js +1 -0
  157. package/model/settings/popup/view-popup-location-type.metadata.json +1 -1
  158. package/model/shared/state/state.d.ts +1 -0
  159. package/model/shared/state/state.js +1 -0
  160. package/model/shared/state/state.metadata.json +1 -1
  161. package/model/shared/text/font.d.ts +1 -1
  162. package/model/shared/text/text.d.ts +3 -0
  163. package/model/switch-indicator-light/switch-indicator-light.d.ts +3 -0
  164. package/model/view-operation/view-operation-element.model.d.ts +7 -1
  165. package/package.json +1 -1
  166. package/public_api.js +1 -0
  167. package/remote/communication/variable/remote-variable-communicator.d.ts +30 -0
  168. package/remote/communication/variable/remote-variable-communicator.js +193 -3
  169. package/remote/communication/variable/remote-variable-communicator.metadata.json +1 -1
  170. package/remote/communication/variable/remote-variable-protocol.d.ts +8 -0
  171. package/service/index.d.ts +4 -0
  172. package/service/index.js +1 -0
  173. package/service/index.metadata.json +1 -1
  174. package/service/language.service.d.ts +37 -0
  175. package/service/language.service.js +0 -0
  176. package/service/language.service.metadata.json +1 -0
  177. package/service/released-variable/index.d.ts +1 -0
  178. package/service/released-variable/index.js +0 -0
  179. package/service/released-variable/index.metadata.json +1 -0
  180. package/service/released-variable/released-variable.service.d.ts +4 -0
  181. package/service/released-variable/released-variable.service.js +0 -0
  182. package/service/released-variable/released-variable.service.metadata.json +1 -0
  183. package/service/system-text-library.service.d.ts +77 -0
  184. package/service/system-text-library.service.js +29 -0
  185. package/service/system-text-library.service.metadata.json +1 -0
  186. package/service/text-library.service.d.ts +49 -0
  187. package/service/text-library.service.js +0 -0
  188. package/service/text-library.service.metadata.json +1 -0
  189. package/shared/gui-consts.d.ts +2 -0
  190. package/shared/gui-consts.js +3 -1
  191. package/shared/gui-consts.metadata.json +1 -1
  192. package/utils/data-type/fbox-data-type.service.js +40 -0
  193. package/utils/numerical-operation.service.js +28 -4
  194. package/view/popup-view.service.d.ts +1 -1
@@ -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},{"__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"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"HistoricalCurveElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/conditional-display-element","name":"ConditionalDisplayElement","line":23,"character":44},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":77,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":78,"character":18},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":79,"character":27},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":80,"character":30},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":81,"character":23},{"__symbolic":"reference","module":"../../config","name":"HistoryDataStore","line":82,"character":43},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"../../service","name":"SystemTextLibraryService","line":84,"character":52},{"__symbolic":"reference","module":"../../service","name":"LanguageService","line":85,"character":43},{"__symbolic":"reference","module":"../../gui/gui-context","name":"GuiContext","line":86,"character":38},{"__symbolic":"reference","module":"../../service","name":"ReleasedVariableService","line":87,"character":51}]}],"getIconScale":[{"__symbolic":"method"}],"dispose":[{"__symbolic":"method"}],"initKeyboardListener":[{"__symbolic":"method"}],"subscribeLanguageChange":[{"__symbolic":"method"}],"updateLanguageTexts":[{"__symbolic":"method"}],"getCurrentCulture":[{"__symbolic":"method"}],"getValidTimePeriods":[{"__symbolic":"method"}],"getTimePeriodText":[{"__symbolic":"method"}],"updateTimeRange":[{"__symbolic":"method"}],"updateQueryTimeRange":[{"__symbolic":"method"}],"reRenderElement":[{"__symbolic":"method"}],"renderElement":[{"__symbolic":"method"}],"setupTooltipAutoHide":[{"__symbolic":"method"}],"renderChart":[{"__symbolic":"method"}],"initPoint":[{"__symbolic":"method"}],"getLineChart":[{"__symbolic":"method"}],"getMultiBarWithFocusChart":[{"__symbolic":"method"}],"renderCommonProperty":[{"__symbolic":"method"}],"renderOperationArea":[{"__symbolic":"method"}],"timeFormat":[{"__symbolic":"method"}],"fmtDatetimeLocal":[{"__symbolic":"method"}],"showCustomTimeRangeModal":[{"__symbolic":"method"}],"showCustomTimeRangeModalFallback":[{"__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"}]}}}}]
@@ -37,6 +37,7 @@ export declare class MainElement {
37
37
  initElementState(): void;
38
38
  getVariableNames(): Array<string>;
39
39
  reportVariableStates(states: VariableState[]): void;
40
+ getVirtualDeviceIdFromRect(rectElement: any): any;
40
41
  reportVariableValues(values: VariableValue[]): void;
41
42
  dispose(): void;
42
43
  private checkIsLoaded;
@@ -28,6 +28,8 @@ import { HyperlinkElement } from './static-elements/hyperlink-element';
28
28
  import { VideoElement } from './video/video-element';
29
29
  import { WeatherElement } from './weather/weater-element';
30
30
  import { AirQualityElement } from './air-quality/air-quality-element';
31
+ import { AlarmElement } from './alarm/alarm-element';
32
+ import { ScrollAlarmElement } from './scroll-alarm/scroll-alarm-element';
31
33
  export class MainElement {
32
34
  constructor(injector, bsModalService, context, variableCommunicator, popupViewService, signalRAppId) {
33
35
  this.injector = injector;
@@ -59,7 +61,7 @@ export class MainElement {
59
61
  const category = $(element).data('model').category;
60
62
  switch (category) {
61
63
  case GuiConsts.components.numericalDisplayKey:
62
- 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), this.signalRAppId);
64
+ 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, this.context);
63
65
  this.elements.push(numericalDisplayElement);
64
66
  break;
65
67
  case GuiConsts.components.imageKey:
@@ -72,23 +74,23 @@ export class MainElement {
72
74
  this.elements.push(new PipeElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
73
75
  break;
74
76
  case GuiConsts.components.switchIndicatorLightKey:
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));
77
+ 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, this.context.textLibraryService, this.context.languageService, this.context));
76
78
  break;
77
79
  case GuiConsts.components.barGraphKey:
78
80
  this.elements.push(new BarGraphElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
79
81
  break;
80
82
  case GuiConsts.components.toggleViewKey:
81
83
  case GuiConsts.components.viewOperationElement:
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));
84
+ 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, this.context.textLibraryService, this.context.languageService, this.context));
83
85
  break;
84
86
  case GuiConsts.components.characterKey:
85
87
  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));
86
88
  break;
87
89
  case GuiConsts.components.textKey:
88
- this.elements.push(new TextElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId));
90
+ this.elements.push(new TextElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId, this.context.textLibraryService, this.context.languageService, this.context));
89
91
  break;
90
92
  case GuiConsts.components.hyperlinkKey:
91
- this.elements.push(new HyperlinkElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId));
93
+ this.elements.push(new HyperlinkElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId, this.context.textLibraryService, this.context.languageService, this.context));
92
94
  break;
93
95
  case GuiConsts.components.straightLineKey:
94
96
  this.elements.push(new StraightLineElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
@@ -109,7 +111,7 @@ export class MainElement {
109
111
  this.elements.push(new DatetimeDisplayElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId));
110
112
  break;
111
113
  case GuiConsts.components.historicalCurveKey:
112
- this.elements.push(new HistoricalCurveElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.historyDataStore, this.signalRAppId));
114
+ this.elements.push(new HistoricalCurveElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.historyDataStore, this.signalRAppId, this.context.systemTextLibraryService, this.context.languageService, this.context, this.context.releasedVariableService));
113
115
  break;
114
116
  case GuiConsts.components.ringGraphKey:
115
117
  this.elements.push(new RingGraphElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
@@ -129,6 +131,12 @@ export class MainElement {
129
131
  case GuiConsts.components.airQualityKey:
130
132
  this.elements.push(new AirQualityElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.weatherService, this.signalRAppId));
131
133
  break;
134
+ case GuiConsts.components.alarmKey:
135
+ this.elements.push(new AlarmElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.alarmsStore, this.signalRAppId, this.context.systemTextLibraryService, this.context.languageService, this.context));
136
+ break;
137
+ case GuiConsts.components.scrollAlarmKey:
138
+ this.elements.push(new ScrollAlarmElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.alarmsStore, this.signalRAppId));
139
+ break;
132
140
  }
133
141
  });
134
142
  this.initBackground();
@@ -208,7 +216,7 @@ export class MainElement {
208
216
  initElementState() {
209
217
  forEach(this.elements, element => {
210
218
  if (element instanceof ReadableElement) {
211
- element.init(element.readVariableName);
219
+ element.init(element.readVariableName || element.maxVariableName || element.minVariableName);
212
220
  }
213
221
  else if (element instanceof HistoricalCurveElement) {
214
222
  element.initElementStatus();
@@ -219,11 +227,34 @@ export class MainElement {
219
227
  getVariableNames() {
220
228
  const variableNames = new Array();
221
229
  forEach(this.elements, element => {
230
+ var _a, _b;
222
231
  if (element instanceof ReadableElement) {
232
+ const maxVariableName = (_a = element) === null || _a === void 0 ? void 0 : _a.maxVariableName;
233
+ const maxValueType = element.maxValueType;
234
+ const minVariableName = (_b = element) === null || _b === void 0 ? void 0 : _b.minVariableName;
235
+ const minValueType = element.minValueType;
223
236
  const variableName = element.readVariableName;
237
+ // 最大最小值选择变量类型时,其中一个未绑定变量不进行开点操作 - FLEXCLOUD-1817
238
+ if (maxValueType && maxVariableName && !variableNames.find(v => isEqual(maxVariableName, v))) {
239
+ variableNames.push(maxVariableName);
240
+ }
241
+ if (minValueType && minVariableName && !variableNames.find(v => isEqual(minVariableName, v))) {
242
+ variableNames.push(minVariableName);
243
+ }
224
244
  if (variableName && !variableNames.find(v => isEqual(variableName, v))) {
225
245
  variableNames.push(element.readVariableName);
226
246
  }
247
+ // 数值显示元件:上下限变量类型时,将上下限变量名也加入订阅
248
+ if (element instanceof NumericalDisplayElement) {
249
+ const upperLimitVarName = element.upperLimitVariableName;
250
+ if (upperLimitVarName && !variableNames.find(v => isEqual(upperLimitVarName, v))) {
251
+ variableNames.push(upperLimitVarName);
252
+ }
253
+ const lowerLimitVarName = element.lowerLimitVariableName;
254
+ if (lowerLimitVarName && !variableNames.find(v => isEqual(lowerLimitVarName, v))) {
255
+ variableNames.push(lowerLimitVarName);
256
+ }
257
+ }
227
258
  }
228
259
  });
229
260
  return variableNames;
@@ -241,14 +272,44 @@ export class MainElement {
241
272
  });
242
273
  });
243
274
  }
275
+ getVirtualDeviceIdFromRect(rectElement) {
276
+ let current = rectElement;
277
+ while (current) {
278
+ if (current.tagName === 'FC-GUI') {
279
+ const virtualDeviceId = current.getAttribute('data-virtual-device-id');
280
+ return virtualDeviceId || null;
281
+ }
282
+ current = current.parentElement;
283
+ }
284
+ return null;
285
+ }
244
286
  reportVariableValues(values) {
245
287
  this.checkIsLoaded();
246
288
  each(values, value => {
247
289
  each(this.elements, e => {
290
+ var _a;
248
291
  if (e instanceof ReadableElement) {
249
- if (e.readVariableName === value.variableName) {
292
+ if ((value.variableName && (e.readVariableName === value.variableName ||
293
+ e.minVariableName === value.variableName || e.maxVariableName === value.variableName))) {
250
294
  e.reportValueChanged(value);
251
295
  }
296
+ // 数值显示元件:上下限变量推送分发
297
+ if (e instanceof NumericalDisplayElement && value.variableName && (e.upperLimitVariableName === value.variableName ||
298
+ e.lowerLimitVariableName === value.variableName)) {
299
+ e.reportValueChanged(value);
300
+ }
301
+ if (e.readVariableName === value.systemName) {
302
+ const rect = (_a = e.currentRect) === null || _a === void 0 ? void 0 : _a[0];
303
+ const deviceId = this.getVirtualDeviceIdFromRect(rect);
304
+ if (deviceId) {
305
+ if (+deviceId === value.virtualDeviceId) {
306
+ e.reportValueChanged(value);
307
+ }
308
+ }
309
+ else {
310
+ e.reportValueChanged(value);
311
+ }
312
+ }
252
313
  }
253
314
  });
254
315
  });
@@ -257,7 +318,8 @@ export class MainElement {
257
318
  each(this.elements, e => {
258
319
  if (e instanceof HistoricalCurveElement || e instanceof VideoElement
259
320
  || e instanceof WeatherElement || e instanceof NumericalDisplayElement || e instanceof TextElement
260
- || e instanceof AirQualityElement) {
321
+ || e instanceof AirQualityElement || e instanceof SwitchIndicatorLightElement || e instanceof ScrollAlarmElement
322
+ || e instanceof AlarmElement) {
261
323
  e.dispose();
262
324
  }
263
325
  });
@@ -1 +1 @@
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"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"MainElement":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":56,"character":43},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":57,"character":41},{"__symbolic":"reference","module":"../gui/gui-context","name":"GuiContext","line":58,"character":34},{"__symbolic":"reference","module":"../communication","name":"VariableCommunicator","line":59,"character":47},{"__symbolic":"reference","module":"../view/popup-view.service","name":"PopupViewService","line":60,"character":43},null]}],"load":[{"__symbolic":"method"}],"uniformStretch":[{"__symbolic":"method"}],"changeVideoStyle":[{"__symbolic":"method"}],"horizontalStretch":[{"__symbolic":"method"}],"initElementState":[{"__symbolic":"method"}],"getVariableNames":[{"__symbolic":"method"}],"reportVariableStates":[{"__symbolic":"method"}],"getVirtualDeviceIdFromRect":[{"__symbolic":"method"}],"reportVariableValues":[{"__symbolic":"method"}],"dispose":[{"__symbolic":"method"}],"checkIsLoaded":[{"__symbolic":"method"}],"initBackground":[{"__symbolic":"method"}],"getImageEl":[{"__symbolic":"method"}]}}}}]
@@ -5,16 +5,22 @@ import { ReadableElement } from './base';
5
5
  import { VariableStore } from '../config';
6
6
  import { PermissionChecker } from '../service';
7
7
  export declare class MeterElement extends ReadableElement {
8
+ private static DEFAULT_MIN_VALUE;
9
+ private static DEFAULT_MAX_VALUE;
8
10
  private readonly $handEl;
9
11
  private readonly arcPath$;
10
12
  private cx;
11
13
  private cy;
12
14
  private offsetY;
13
15
  private mainElementTransform;
16
+ private valueObj;
17
+ private isNeedUpdateScale;
14
18
  readonly model: Meter;
15
19
  constructor(element: HTMLElement, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, variableStore: VariableStore, localization: Localization, signalRAppId: string);
16
- updateVariableValue(value: number): void;
20
+ private updateValueObj;
21
+ updateVariableValue(value: number, variableName: any): void;
17
22
  private initFrameNode;
23
+ private updateScale;
18
24
  private getAngle;
19
25
  private directionPoint;
20
26
  }
@@ -1,10 +1,20 @@
1
1
  import { ReadableElement } from './base';
2
+ import { isNumber } from 'lodash';
3
+ import { VariableValueType } from '../model/shared/condition/variable-value-type';
2
4
  export class MeterElement extends ReadableElement {
3
5
  constructor(element, permissionChecker, variableCommunicator, variableStore, localization, signalRAppId) {
4
6
  super(element, permissionChecker, variableCommunicator, variableStore, localization, signalRAppId);
5
7
  this.cx = 0;
6
8
  this.cy = 0;
7
9
  this.offsetY = 0;
10
+ this.valueObj = {};
11
+ this.isNeedUpdateScale = false;
12
+ if ((this.model.minValueType === VariableValueType.Constant && this.model.maxValueType === VariableValueType.Variable)
13
+ || this.model.maxValueType === VariableValueType.Constant && this.model.minValueType === VariableValueType.Variable) {
14
+ this.isNeedUpdateScale = true;
15
+ this.updateScale();
16
+ this.isNeedUpdateScale = false;
17
+ }
8
18
  let mainEl$;
9
19
  if (this.model.version && this.model.version > 3) {
10
20
  mainEl$ = this.$element.find('[data-id="main"]');
@@ -31,18 +41,75 @@ export class MeterElement extends ReadableElement {
31
41
  this.changeStates();
32
42
  });
33
43
  }
34
- updateVariableValue(value) {
35
- const angle = this.getAngle(value);
36
- this.$handEl.attr('transform', this.mainElementTransform + ` translate(0,${this.offsetY}) rotate(${angle}, ${this.cx}, ${this.cy})`);
44
+ updateValueObj(value, variableName) {
45
+ var _a, _b, _c;
46
+ if (((_a = this.model.readVariable) === null || _a === void 0 ? void 0 : _a.name) === variableName) {
47
+ this.isNeedUpdateScale = false;
48
+ this.valueObj.value = value;
49
+ }
50
+ if (((_b = this.model.minVariable) === null || _b === void 0 ? void 0 : _b.name) === variableName) {
51
+ this.isNeedUpdateScale = true;
52
+ this.valueObj.min = value;
53
+ }
54
+ if (((_c = this.model.maxVariable) === null || _c === void 0 ? void 0 : _c.name) === variableName) {
55
+ this.isNeedUpdateScale = true;
56
+ this.valueObj.max = value;
57
+ }
58
+ }
59
+ updateVariableValue(value, variableName) {
60
+ this.updateValueObj(value, variableName);
61
+ this.updateScale();
62
+ const angle = this.getAngle();
63
+ if (isNumber(angle)) {
64
+ this.$handEl.attr('transform', this.mainElementTransform + ` translate(0,${this.offsetY}) rotate(${angle}, ${this.cx}, ${this.cy})`);
65
+ }
37
66
  }
38
67
  initFrameNode() {
39
68
  const b = Snap(this.$element[0]).getBBox();
40
69
  this.rootElement.append('rect').attr('id', 'StateFrame').attr('width', b.width).attr('height', b.height).attr('fill', 'transparent');
41
70
  }
42
- getAngle(value) {
43
- const min = this.model.min;
44
- const max = this.model.max;
45
- value = Math.min(Math.max(value, min), max);
71
+ updateScale() {
72
+ if (!this.isNeedUpdateScale) {
73
+ return;
74
+ }
75
+ let min = this.model.minValueType ? this.valueObj.min : this.model.min;
76
+ let max = this.model.maxValueType ? this.valueObj.max : this.model.max;
77
+ min = Number(min);
78
+ max = Number(max);
79
+ if (isNaN(min) || isNaN(max)) {
80
+ min = MeterElement.DEFAULT_MIN_VALUE;
81
+ max = MeterElement.DEFAULT_MAX_VALUE;
82
+ }
83
+ const avgSacle = ((max - min) / this.model.masterDivisionNumber).toFixed(5);
84
+ const textElements = this.$element.find('g:first > text');
85
+ for (let i = 0; i < textElements.length; i++) {
86
+ const text = textElements[i];
87
+ if (!text.innerHTML) {
88
+ continue;
89
+ }
90
+ let sacleValue = ((Number(avgSacle) * i) + min).toFixed(0);
91
+ // 整数位和小数位格式化;
92
+ if (this.model.fractionDigits > 0) {
93
+ sacleValue = (sacleValue / Math.pow(10, this.model.fractionDigits)).toFixed(this.model.fractionDigits);
94
+ }
95
+ if (!isNaN(sacleValue)) {
96
+ text.innerHTML = sacleValue;
97
+ }
98
+ }
99
+ }
100
+ getAngle() {
101
+ let min = this.model.minValueType ? this.valueObj.min : this.model.min;
102
+ let max = this.model.maxValueType ? this.valueObj.max : this.model.max;
103
+ min = Number(min);
104
+ max = Number(max);
105
+ if (isNaN(min) || isNaN(max)) {
106
+ min = MeterElement.DEFAULT_MIN_VALUE;
107
+ max = MeterElement.DEFAULT_MAX_VALUE;
108
+ }
109
+ if (!this.valueObj.value && isNaN(Number(this.valueObj.value))) {
110
+ return undefined;
111
+ }
112
+ const value = Math.min(Math.max(this.valueObj.value || 0, min), max);
46
113
  const len = (value - min) / (max - min);
47
114
  const arcPath = Snap(this.arcPath$[0]);
48
115
  const b = arcPath.getBBox(true);
@@ -68,3 +135,5 @@ export class MeterElement extends ReadableElement {
68
135
  return c;
69
136
  }
70
137
  }
138
+ MeterElement.DEFAULT_MIN_VALUE = 0;
139
+ MeterElement.DEFAULT_MAX_VALUE = 100;
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"MeterElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"./base","name":"ReadableElement","line":7,"character":34},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":18,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"../service","name":"PermissionChecker","line":18,"character":57},{"__symbolic":"reference","module":"../communication","name":"VariableCommunicator","line":19,"character":30},{"__symbolic":"reference","module":"../config","name":"VariableStore","line":19,"character":67},{"__symbolic":"reference","module":"../localization","name":"Localization","line":19,"character":96},{"__symbolic":"reference","name":"string"}]}],"updateVariableValue":[{"__symbolic":"method"}],"initFrameNode":[{"__symbolic":"method"}],"getAngle":[{"__symbolic":"method"}],"directionPoint":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"MeterElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"./base","name":"ReadableElement","line":9,"character":34},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":25,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"../service","name":"PermissionChecker","line":25,"character":57},{"__symbolic":"reference","module":"../communication","name":"VariableCommunicator","line":26,"character":30},{"__symbolic":"reference","module":"../config","name":"VariableStore","line":26,"character":67},{"__symbolic":"reference","module":"../localization","name":"Localization","line":26,"character":96},{"__symbolic":"reference","name":"string"}]}],"updateValueObj":[{"__symbolic":"method"}],"updateVariableValue":[{"__symbolic":"method"}],"initFrameNode":[{"__symbolic":"method"}],"updateScale":[{"__symbolic":"method"}],"getAngle":[{"__symbolic":"method"}],"directionPoint":[{"__symbolic":"method"}]},"statics":{"DEFAULT_MIN_VALUE":0,"DEFAULT_MAX_VALUE":100}}}}]
@@ -3,15 +3,18 @@ import { BsModalService } from 'ngx-bootstrap/modal';
3
3
  import { GraphStore, VariableStore } from '../../config';
4
4
  import { Localization } from '../../localization';
5
5
  import { NumericalDisplay } from '../../model';
6
- import { PermissionChecker, OperationRecordService } from '../../service';
7
- import { VariableCommunicator } from '../../communication';
6
+ import { PermissionChecker, OperationRecordService, ReleasedVariableService } from '../../service';
7
+ import { VariableCommunicator, VariableValue } from '../../communication';
8
8
  import { ReadableElement } from '../base/readable-element';
9
9
  import { SecurityChecker } from '../../security';
10
+ import { GuiContext } from '../../gui/gui-context';
10
11
  export declare class NumericalDisplayElement extends ReadableElement {
11
12
  private readonly modalService;
12
13
  private readonly graphStore;
13
14
  private readonly operationRecordService;
15
+ private readonly releasedVariableService;
14
16
  private readonly securityChecker;
17
+ private readonly guiContext?;
15
18
  private readonly dataTypeService;
16
19
  private readonly fractionDigitService;
17
20
  private readonly accessPermissionService;
@@ -21,9 +24,25 @@ export declare class NumericalDisplayElement extends ReadableElement {
21
24
  private readonly logger;
22
25
  private displayForeignObject;
23
26
  private enableDataParsed;
27
+ private writeValueMmodalRef;
28
+ private recordValue;
29
+ private showValue;
30
+ private numericalOperation;
31
+ private restorationTimer;
32
+ private _resolvedUpperLimitValue;
33
+ private _resolvedLowerLimitValue;
34
+ /** 当数值上限配置为变量类型时,返回变量名;否则返回 undefined */
35
+ get upperLimitVariableName(): string | undefined;
36
+ /** 当数值下限配置为变量类型时,返回变量名;否则返回 undefined */
37
+ get lowerLimitVariableName(): string | undefined;
24
38
  get writeVariableName(): string;
25
- constructor(element: HTMLElement, injector: Injector, modalService: BsModalService, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, graphStore: GraphStore, operationRecordService: OperationRecordService, securityChecker: SecurityChecker, variableStore: VariableStore, localization: Localization, signalRAppId: string);
39
+ constructor(element: HTMLElement, injector: Injector, modalService: BsModalService, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, graphStore: GraphStore, operationRecordService: OperationRecordService, releasedVariableService: ReleasedVariableService, securityChecker: SecurityChecker, variableStore: VariableStore, localization: Localization, signalRAppId: string, guiContext?: GuiContext);
26
40
  dispose(): void;
41
+ /**
42
+ * 重写父类方法,处理"当前语种ID"系统变量
43
+ * 当值为null时,显示默认语种ID
44
+ */
45
+ reportValueChanged(value: VariableValue): void;
27
46
  initElement(): any;
28
47
  private checkElementPassword;
29
48
  private initVariableText;
@@ -38,4 +57,13 @@ export declare class NumericalDisplayElement extends ReadableElement {
38
57
  private formatFloatDisplayText;
39
58
  private isNumeric;
40
59
  private formatDisplayTextUnit;
60
+ /**
61
+ * 提供元件尺寸信息用于状态图标缩放
62
+ */
63
+ protected getElementSizeForIconScale(): {
64
+ width: number;
65
+ height: number;
66
+ initWidth?: number;
67
+ initHeight?: number;
68
+ } | null;
41
69
  }