@flexem/fc-gui 3.0.0-alpha.19 → 3.0.0-alpha.190

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 (212) hide show
  1. package/CHANGELOG.md +413 -0
  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 +37817 -32408
  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 +5 -0
  35. package/elements/air-quality/air-quality-element.js +3 -4
  36. package/elements/alarm/alarm-element.d.ts +106 -0
  37. package/elements/alarm/alarm-element.js +836 -0
  38. package/elements/alarm/alarm-element.metadata.json +1 -0
  39. package/elements/alarm/alarm-table-scrollbar.d.ts +35 -0
  40. package/elements/alarm/alarm-table-scrollbar.js +170 -0
  41. package/elements/alarm/alarm-table-scrollbar.metadata.json +1 -0
  42. package/elements/bar-graph-element.d.ts +10 -2
  43. package/elements/bar-graph-element.js +135 -5
  44. package/elements/bar-graph-element.metadata.json +1 -1
  45. package/elements/base/readable-element.d.ts +6 -1
  46. package/elements/base/readable-element.js +69 -2
  47. package/elements/base/readable-element.metadata.json +1 -1
  48. package/elements/base/state-control-element.d.ts +13 -1
  49. package/elements/base/state-control-element.js +42 -8
  50. package/elements/base/state-control-element.metadata.json +1 -1
  51. package/elements/character-display/character-display-element.d.ts +12 -2
  52. package/elements/character-display/character-display-element.js +35 -7
  53. package/elements/character-display/character-display-element.metadata.json +1 -1
  54. package/elements/datetime-display/datetime-display-element.d.ts +1 -0
  55. package/elements/datetime-display/datetime-display-element.js +10 -2
  56. package/elements/datetime-display/datetime-display-element.metadata.json +1 -1
  57. package/elements/datetime-display/time-zone-select-json.d.ts +8 -0
  58. package/elements/datetime-display/time-zone-select-json.js +558 -0
  59. package/elements/historical-curve/historical-curve.element.d.ts +45 -3
  60. package/elements/historical-curve/historical-curve.element.js +707 -45
  61. package/elements/historical-curve/historical-curve.element.metadata.json +1 -1
  62. package/elements/main-element.d.ts +1 -0
  63. package/elements/main-element.js +72 -10
  64. package/elements/main-element.metadata.json +1 -1
  65. package/elements/meter-element.d.ts +7 -1
  66. package/elements/meter-element.js +76 -7
  67. package/elements/meter-element.metadata.json +1 -1
  68. package/elements/numerical-display/numerical-display-element.d.ts +31 -3
  69. package/elements/numerical-display/numerical-display-element.js +166 -15
  70. package/elements/numerical-display/numerical-display-element.metadata.json +1 -1
  71. package/elements/per-view-variable-communicator.d.ts +4 -0
  72. package/elements/per-view-variable-communicator.js +21 -1
  73. package/elements/per-view-variable-communicator.metadata.json +1 -1
  74. package/elements/ring-graph/ring-graph-element.d.ts +13 -1
  75. package/elements/ring-graph/ring-graph-element.js +164 -3
  76. package/elements/ring-graph/ring-graph-element.metadata.json +1 -1
  77. package/elements/scroll-alarm/scroll-alarm-element.d.ts +79 -0
  78. package/elements/scroll-alarm/scroll-alarm-element.js +845 -0
  79. package/elements/scroll-alarm/scroll-alarm-element.metadata.json +1 -0
  80. package/elements/shared/graph/graph-state-element.d.ts +1 -0
  81. package/elements/shared/graph/graph-state-element.js +30 -1
  82. package/elements/shared/graph/graph-state-element.metadata.json +1 -1
  83. package/elements/shared/text/text-element.d.ts +14 -0
  84. package/elements/shared/text/text-element.js +38 -6
  85. package/elements/shared/text/text-element.metadata.json +1 -1
  86. package/elements/shared/text/text-state-element.d.ts +39 -2
  87. package/elements/shared/text/text-state-element.js +242 -67
  88. package/elements/shared/text/text-state-element.metadata.json +1 -1
  89. package/elements/static-elements/hyperlink-element.d.ts +28 -2
  90. package/elements/static-elements/hyperlink-element.js +153 -4
  91. package/elements/static-elements/hyperlink-element.metadata.json +1 -1
  92. package/elements/static-elements/text-element.d.ts +28 -2
  93. package/elements/static-elements/text-element.js +162 -12
  94. package/elements/static-elements/text-element.metadata.json +1 -1
  95. package/elements/switch-indicator-light/bit-indicator-light-operator.d.ts +1 -0
  96. package/elements/switch-indicator-light/bit-indicator-light-operator.js +10 -3
  97. package/elements/switch-indicator-light/bit-indicator-light-operator.metadata.json +1 -1
  98. package/elements/switch-indicator-light/switch-indicator-light-element.d.ts +20 -2
  99. package/elements/switch-indicator-light/switch-indicator-light-element.js +92 -15
  100. package/elements/switch-indicator-light/switch-indicator-light-element.metadata.json +1 -1
  101. package/elements/switch-indicator-light/word-indicator-light-operator.d.ts +1 -0
  102. package/elements/switch-indicator-light/word-indicator-light-operator.js +10 -3
  103. package/elements/switch-indicator-light/word-indicator-light-operator.metadata.json +1 -1
  104. package/elements/video/video-element.d.ts +10 -0
  105. package/elements/video/video-element.js +139 -21
  106. package/elements/video/video-element.metadata.json +1 -1
  107. package/elements/view-operation/view-operation.element.d.ts +28 -2
  108. package/elements/view-operation/view-operation.element.js +172 -8
  109. package/elements/view-operation/view-operation.element.metadata.json +1 -1
  110. package/elements/weather/weater-element.js +0 -1
  111. package/gui/gui-context.d.ts +25 -2
  112. package/gui/gui-host.d.ts +1 -1
  113. package/gui/gui-view.d.ts +19 -2
  114. package/gui/gui-view.js +147 -12
  115. package/gui/gui-view.metadata.json +1 -1
  116. package/gui/gui.component.d.ts +3 -0
  117. package/gui/gui.component.js +15 -2
  118. package/gui/gui.component.metadata.json +1 -1
  119. package/localization/localization.service.d.ts +11 -0
  120. package/localization/localization.service.js +16 -5
  121. package/localization/localization.service.metadata.json +1 -1
  122. package/localization/localization.service.zh_CN.js +12 -1
  123. package/localization/localization.service.zh_CN.metadata.json +1 -1
  124. package/modal/alert/alert-modal.component.js +1 -1
  125. package/modal/alert/alert-modal.component.less +13 -5
  126. package/modal/alert/alert-modal.component.metadata.json +1 -1
  127. package/modal/confirm-operation/confirm-operation-modal.component.html +2 -2
  128. package/modal/confirm-operation/confirm-operation-modal.component.js +2 -2
  129. package/modal/confirm-operation/confirm-operation-modal.component.less +10 -7
  130. package/modal/confirm-operation/confirm-operation-modal.component.metadata.json +1 -1
  131. package/modal/verify-password/verify-password-modal.component.d.ts +6 -2
  132. package/modal/verify-password/verify-password-modal.component.html +2 -2
  133. package/modal/verify-password/verify-password-modal.component.js +11 -5
  134. package/modal/verify-password/verify-password-modal.component.less +9 -0
  135. package/modal/verify-password/verify-password-modal.component.metadata.json +1 -1
  136. package/modal/write-character/write-character-modal-args.d.ts +3 -1
  137. package/modal/write-character/write-character-modal-args.js +2 -1
  138. package/modal/write-character/write-character-modal-args.metadata.json +1 -1
  139. package/modal/write-character/write-character-modal.component.d.ts +4 -2
  140. package/modal/write-character/write-character-modal.component.html +4 -4
  141. package/modal/write-character/write-character-modal.component.js +11 -5
  142. package/modal/write-character/write-character-modal.component.less +15 -0
  143. package/modal/write-character/write-character-modal.component.metadata.json +1 -1
  144. package/modal/write-value/write-value-modal-args.d.ts +5 -1
  145. package/modal/write-value/write-value-modal-args.js +3 -1
  146. package/modal/write-value/write-value-modal-args.metadata.json +1 -1
  147. package/modal/write-value/write-value-modal.component.d.ts +16 -8
  148. package/modal/write-value/write-value-modal.component.html +10 -5
  149. package/modal/write-value/write-value-modal.component.js +103 -21
  150. package/modal/write-value/write-value-modal.component.less +16 -1
  151. package/modal/write-value/write-value-modal.component.metadata.json +1 -1
  152. package/model/alarm/alarm.model.d.ts +14 -0
  153. package/model/alarm/alarm.model.js +0 -0
  154. package/model/alarm/alarm.model.metadata.json +1 -0
  155. package/model/bar-graph/bar-graph.d.ts +4 -0
  156. package/model/base/font-setting-model.d.ts +22 -1
  157. package/model/base/font-setting-model.metadata.json +1 -1
  158. package/model/base/readable-model.d.ts +4 -0
  159. package/model/character-display/character-display.d.ts +1 -0
  160. package/model/datetime-display/datetime-display.d.ts +1 -0
  161. package/model/historical-curve/historical-curve-axis-settings.d.ts +11 -0
  162. package/model/historical-curve/historical-curve-axis-settings.js +5 -0
  163. package/model/historical-curve/historical-curve-axis-settings.metadata.json +1 -1
  164. package/model/historical-curve/historical-curve-chanel.model.d.ts +8 -0
  165. package/model/historical-curve/historical-curve.display-settings.d.ts +1 -0
  166. package/model/meter/meter.d.ts +4 -0
  167. package/model/numerical-display/numerical-display.d.ts +1 -0
  168. package/model/numerical-display/numerical-operation.d.ts +10 -2
  169. package/model/ring-graph/ring-graph.model.d.ts +8 -0
  170. package/model/scroll-alarm/scroll-alarm.model.d.ts +21 -0
  171. package/model/scroll-alarm/scroll-alarm.model.js +0 -0
  172. package/model/scroll-alarm/scroll-alarm.model.metadata.json +1 -0
  173. package/model/settings/popup/view-popup-location-type.d.ts +2 -1
  174. package/model/settings/popup/view-popup-location-type.js +1 -0
  175. package/model/settings/popup/view-popup-location-type.metadata.json +1 -1
  176. package/model/shared/state/state.d.ts +1 -0
  177. package/model/shared/state/state.js +1 -0
  178. package/model/shared/state/state.metadata.json +1 -1
  179. package/model/shared/text/font.d.ts +1 -1
  180. package/model/shared/text/text.d.ts +3 -0
  181. package/model/switch-indicator-light/switch-indicator-light.d.ts +3 -0
  182. package/model/view-operation/view-operation-element.model.d.ts +7 -1
  183. package/package.json +1 -1
  184. package/public_api.js +1 -0
  185. package/remote/communication/variable/remote-variable-communicator.d.ts +30 -0
  186. package/remote/communication/variable/remote-variable-communicator.js +193 -3
  187. package/remote/communication/variable/remote-variable-communicator.metadata.json +1 -1
  188. package/remote/communication/variable/remote-variable-protocol.d.ts +8 -0
  189. package/service/index.d.ts +4 -0
  190. package/service/index.js +1 -0
  191. package/service/index.metadata.json +1 -1
  192. package/service/language.service.d.ts +37 -0
  193. package/service/language.service.js +0 -0
  194. package/service/language.service.metadata.json +1 -0
  195. package/service/released-variable/index.d.ts +1 -0
  196. package/service/released-variable/index.js +0 -0
  197. package/service/released-variable/index.metadata.json +1 -0
  198. package/service/released-variable/released-variable.service.d.ts +4 -0
  199. package/service/released-variable/released-variable.service.js +0 -0
  200. package/service/released-variable/released-variable.service.metadata.json +1 -0
  201. package/service/system-text-library.service.d.ts +77 -0
  202. package/service/system-text-library.service.js +29 -0
  203. package/service/system-text-library.service.metadata.json +1 -0
  204. package/service/text-library.service.d.ts +49 -0
  205. package/service/text-library.service.js +0 -0
  206. package/service/text-library.service.metadata.json +1 -0
  207. package/shared/gui-consts.d.ts +2 -0
  208. package/shared/gui-consts.js +3 -1
  209. package/shared/gui-consts.metadata.json +1 -1
  210. package/utils/data-type/fbox-data-type.service.js +40 -0
  211. package/utils/numerical-operation.service.js +28 -4
  212. package/view/popup-view.service.d.ts +1 -1
@@ -9,6 +9,13 @@ export class StateControlElement extends ConditionalDynamicDisplayElement {
9
9
  this.isEnable = true;
10
10
  this.elementStates = [];
11
11
  }
12
+ /**
13
+ * 子类可覆盖此方法提供元件当前大小和初始大小,用于状态图标缩放计算
14
+ * @returns {{ width: number, height: number, initWidth?: number, initHeight?: number }}
15
+ */
16
+ getElementSizeForIconScale() {
17
+ return null;
18
+ }
12
19
  initState() {
13
20
  if (!this.elementStates.length) {
14
21
  return;
@@ -65,26 +72,34 @@ export class StateControlElement extends ConditionalDynamicDisplayElement {
65
72
  case VariableStateEnum.Abnormal:
66
73
  currentState = State.Abnormal;
67
74
  break;
75
+ case VariableStateEnum.InvalidMonitor:
76
+ currentState = State.InvalidMonitor;
77
+ break;
68
78
  }
69
79
  return currentState;
70
80
  }
71
81
  changeState(state) {
72
82
  switch (state) {
83
+ case State.InvalidMonitor:
84
+ this.state = State.InvalidMonitor;
85
+ break;
73
86
  case State.Unbind:
74
- this.state = State.Unbind;
87
+ if (this.state !== State.InvalidMonitor) {
88
+ this.state = State.Unbind;
89
+ }
75
90
  break;
76
91
  case State.Offline:
77
- if (this.state !== State.Unbind) {
92
+ if (this.state !== State.Unbind && this.state !== State.InvalidMonitor) {
78
93
  this.state = State.Offline;
79
94
  }
80
95
  break;
81
96
  case State.Loading:
82
- if (this.state !== State.Unbind && this.state !== State.Offline) {
97
+ if (this.state !== State.Unbind && this.state !== State.Offline && this.state !== State.InvalidMonitor) {
83
98
  this.state = State.Loading;
84
99
  }
85
100
  break;
86
101
  case State.Abnormal:
87
- if (this.state !== State.Unbind && this.state !== State.Offline && this.state !== State.Loading) {
102
+ if (this.state !== State.Unbind && this.state !== State.Offline && this.state !== State.Loading && this.state !== State.InvalidMonitor) {
88
103
  this.state = State.Abnormal;
89
104
  }
90
105
  break;
@@ -123,9 +138,14 @@ export class StateControlElement extends ConditionalDynamicDisplayElement {
123
138
  title = this.localization.disable;
124
139
  stroke = '#ff4444';
125
140
  break;
141
+ case State.InvalidMonitor:
142
+ url = 'assets/img/abnormal.svg';
143
+ title = this.localization.invalidMonitor;
144
+ stroke = '#f6a520';
145
+ break;
126
146
  default:
127
147
  url = 'assets/img/loading.svg';
128
- title = this.localization.loading;
148
+ title = this.localization.variableChanged;
129
149
  stroke = '#226abc';
130
150
  break;
131
151
  }
@@ -139,11 +159,25 @@ export class StateControlElement extends ConditionalDynamicDisplayElement {
139
159
  if (!this.currentRect.length) {
140
160
  return;
141
161
  }
162
+ // 元件绑定设备状态或当前语种ID时不需要在右上角显示状态
163
+ if (this.$element[0].dataset.model.includes('设备状态') || this.$element[0].dataset.model.includes('当前语种ID'))
164
+ return;
142
165
  const document = this.$element[0].ownerDocument;
143
166
  const imgObj = document.createElementNS('http://www.w3.org/2000/svg', 'image');
144
167
  if (imgObj) {
145
168
  const currentRectElement = this.currentRect[0];
146
- let x = Number(currentRectElement.getAttribute('width')) - 20;
169
+ // 计算图标缩放比例
170
+ const baseIconSize = 20;
171
+ let iconSize = baseIconSize;
172
+ const sizeInfo = this.getElementSizeForIconScale();
173
+ if (sizeInfo && sizeInfo.initWidth && sizeInfo.initHeight) {
174
+ const scaleX = sizeInfo.width / sizeInfo.initWidth;
175
+ const scaleY = sizeInfo.height / sizeInfo.initHeight;
176
+ // 取较小值,避免图标超出元件边界
177
+ const scale = Math.min(scaleX, scaleY);
178
+ iconSize = baseIconSize * scale;
179
+ }
180
+ let x = Number(currentRectElement.getAttribute('width')) - iconSize;
147
181
  const currentRectX = currentRectElement.getAttribute('x');
148
182
  if (currentRectX !== null) {
149
183
  x += Number(currentRectX);
@@ -154,8 +188,8 @@ export class StateControlElement extends ConditionalDynamicDisplayElement {
154
188
  imgObj.setAttributeNS(null, 'id', 'StateImage');
155
189
  imgObj.setAttributeNS(null, 'x', x.toString());
156
190
  imgObj.setAttributeNS(null, 'y', '0');
157
- imgObj.setAttributeNS(null, 'height', '20px');
158
- imgObj.setAttributeNS(null, 'width', '20px');
191
+ imgObj.setAttributeNS(null, 'height', iconSize + 'px');
192
+ imgObj.setAttributeNS(null, 'width', iconSize + 'px');
159
193
  const titleElement = document.createElementNS('http://www.w3.org/2000/svg', 'title');
160
194
  const text = document.createTextNode(title);
161
195
  titleElement.appendChild(text);
@@ -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},{"__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"}]}}}}]
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"}]}],"getElementSizeForIconScale":[{"__symbolic":"method"}],"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"}]}}}}]
@@ -4,7 +4,7 @@ import { VariableCommunicator } from '../../communication';
4
4
  import { GraphStore, VariableStore } from '../../config';
5
5
  import { Localization } from '../../localization';
6
6
  import { CharacterDisplay } from '../../model';
7
- import { OperationRecordService, PermissionChecker } from '../../service';
7
+ import { OperationRecordService, PermissionChecker, ReleasedVariableService } from '../../service';
8
8
  import { ReadableElement } from '../base/readable-element';
9
9
  import { SecurityChecker } from '../../security';
10
10
  export declare class CharacterDisplayElement extends ReadableElement {
@@ -12,12 +12,13 @@ export declare class CharacterDisplayElement extends ReadableElement {
12
12
  private readonly graphStore;
13
13
  private readonly operationRecordService;
14
14
  private readonly securityChecker;
15
+ private readonly releasedVariableService?;
15
16
  protected readonly model: CharacterDisplay;
16
17
  private readonly accessPermissionService;
17
18
  private displayValue;
18
19
  private graphs;
19
20
  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, signalRAppId: string);
21
+ constructor(element: HTMLElement, injector: Injector, modalService: BsModalService, variableCommunicator: VariableCommunicator, graphStore: GraphStore, permissionChecker: PermissionChecker, operationRecordService: OperationRecordService, securityChecker: SecurityChecker, variableStore: VariableStore, localization: Localization, signalRAppId: string, releasedVariableService?: ReleasedVariableService);
21
22
  get readVariableName(): string;
22
23
  get writeVariableName(): string;
23
24
  protected updateVariableValue(value: string): void;
@@ -32,4 +33,13 @@ export declare class CharacterDisplayElement extends ReadableElement {
32
33
  private doWriteCharacterValue;
33
34
  private recordOperation;
34
35
  private changeGraph;
36
+ /**
37
+ * 提供元件尺寸信息用于状态图标缩放
38
+ */
39
+ protected getElementSizeForIconScale(): {
40
+ width: number;
41
+ height: number;
42
+ initWidth?: number;
43
+ initHeight?: number;
44
+ } | null;
35
45
  }
@@ -1,4 +1,5 @@
1
1
  import { GraphType } from '../../config';
2
+ import { GuiFeatureConfig } from '../../config';
2
3
  import { LOGGER_SERVICE_TOKEN } from '../../logger';
3
4
  import { AlertModalComponent } from '../../modal/alert/alert-modal.component';
4
5
  import { ConfirmOperationModalComponent } from '../../modal/confirm-operation/confirm-operation-modal.component';
@@ -11,12 +12,13 @@ import { VerifyPasswordModalComponent } from '../../modal/verify-password/verify
11
12
  import { VariableUtil } from '../../utils/variable-util';
12
13
  import { TextElementModal } from '../shared/text/text-element';
13
14
  export class CharacterDisplayElement extends ReadableElement {
14
- constructor(element, injector, modalService, variableCommunicator, graphStore, permissionChecker, operationRecordService, securityChecker, variableStore, localization, signalRAppId) {
15
+ constructor(element, injector, modalService, variableCommunicator, graphStore, permissionChecker, operationRecordService, securityChecker, variableStore, localization, signalRAppId, releasedVariableService) {
15
16
  super(element, permissionChecker, variableCommunicator, variableStore, localization, signalRAppId);
16
17
  this.modalService = modalService;
17
18
  this.graphStore = graphStore;
18
19
  this.operationRecordService = operationRecordService;
19
20
  this.securityChecker = securityChecker;
21
+ this.releasedVariableService = releasedVariableService;
20
22
  this.displayValue = '';
21
23
  this.graphs = new Map();
22
24
  this.logger = injector.get(LOGGER_SERVICE_TOKEN);
@@ -67,7 +69,7 @@ export class CharacterDisplayElement extends ReadableElement {
67
69
  }
68
70
  changeStates() {
69
71
  super.changeStates();
70
- if (this.state === State.Normal || this.state === State.Disable) {
72
+ if (this.state === State.Normal || this.state === State.Disable || (GuiFeatureConfig.isOfflineDisplayEnabled && this.state === State.Offline)) {
71
73
  this.updateDisplayValue(this.displayValue);
72
74
  }
73
75
  else {
@@ -220,7 +222,7 @@ export class CharacterDisplayElement extends ReadableElement {
220
222
  }
221
223
  if (!this.isEnable) {
222
224
  const message = !this.isGrantedPermission ? this.localization.permissiontip : this.localization.conditionIsNotMetTip;
223
- const modalRef = this.modalService.show(AlertModalComponent, { initialState: { alermMessage: message }, backdrop: 'static', class: 'gui-modal-dialog-position', animated: false });
225
+ const modalRef = this.modalService.show(AlertModalComponent, { initialState: { alermMessage: message }, backdrop: 'static', class: 'gui-modal-dialog-position gui-modal-dialog-tip', animated: false });
224
226
  const onClosedSub = modalRef.content.onClosed.subscribe(() => {
225
227
  modalRef.hide();
226
228
  onClosedSub.unsubscribe();
@@ -229,7 +231,7 @@ export class CharacterDisplayElement extends ReadableElement {
229
231
  }
230
232
  if (this.model.useSecurity) {
231
233
  const modalRef = this.modalService.show(ConfirmOperationModalComponent, {
232
- backdrop: 'static', class: 'gui-modal-dialog-position', animated: false
234
+ backdrop: 'static', class: 'gui-modal-dialog-position gui-modal-dialog-tip', animated: false
233
235
  });
234
236
  const onClosedSub = modalRef.content.onClosed.subscribe(result => {
235
237
  modalRef.hide();
@@ -246,7 +248,10 @@ export class CharacterDisplayElement extends ReadableElement {
246
248
  }
247
249
  checkElementPassword() {
248
250
  if (this.model.enablePassword) {
249
- const modalRef = this.modalService.show(VerifyPasswordModalComponent, { initialState: { securityChecker: this.securityChecker }, backdrop: 'static', class: 'gui-modal-dialog-position', animated: false });
251
+ const modalRef = this.modalService.show(VerifyPasswordModalComponent, {
252
+ initialState: { securityChecker: this.securityChecker, releasedVariableService: this.releasedVariableService },
253
+ backdrop: 'static', class: 'gui-modal-dialog-position', animated: false
254
+ });
250
255
  const onClosedSub = modalRef.content.onClosed.subscribe(result => {
251
256
  modalRef.hide();
252
257
  onClosedSub.unsubscribe();
@@ -263,9 +268,17 @@ export class CharacterDisplayElement extends ReadableElement {
263
268
  if (null == this.writeVariableName) {
264
269
  return;
265
270
  }
266
- const args = new WriteCharacterModalArgs(this.writeVariableName, this.model.isPassword, this.model.charCount, this.displayValue);
271
+ // 优先使用接口返回的实时字符长度,如果获取不到则使用页面配置中的长度
272
+ let charCount = this.model.charCount;
273
+ if (this.variableStore.getCharCountByVariableName) {
274
+ const runtimeCharCount = this.variableStore.getCharCountByVariableName(this.writeVariableName);
275
+ if (runtimeCharCount !== undefined) {
276
+ charCount = runtimeCharCount;
277
+ }
278
+ }
279
+ const args = new WriteCharacterModalArgs(this.writeVariableName, this.model.isPassword, charCount, this.displayValue, this.releasedVariableService);
267
280
  const modalRef = this.modalService.show(WriteCharacterModalComponent, {
268
- initialState: { args: args }, backdrop: 'static', class: 'gui-modal-dialog-position', animated: false
281
+ initialState: { args: args }, backdrop: 'static', class: 'gui-modal-dialog-position gui-modal-write', animated: false
269
282
  });
270
283
  const onClosedSub = modalRef.content.onClosed.subscribe(result => {
271
284
  modalRef.hide();
@@ -308,4 +321,19 @@ export class CharacterDisplayElement extends ReadableElement {
308
321
  this.rootElement.select('image').attr('xlink:href', null);
309
322
  }
310
323
  }
324
+ /**
325
+ * 提供元件尺寸信息用于状态图标缩放
326
+ */
327
+ getElementSizeForIconScale() {
328
+ var _a, _b;
329
+ if (this.model.size) {
330
+ return {
331
+ width: this.model.size.width,
332
+ height: this.model.size.height,
333
+ initWidth: (_a = this.model.initSize) === null || _a === void 0 ? void 0 : _a.width,
334
+ initHeight: (_b = this.model.initSize) === null || _b === void 0 ? void 0 : _b.height
335
+ };
336
+ }
337
+ return null;
338
+ }
311
339
  }
@@ -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},{"__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"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"CharacterDisplayElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/readable-element","name":"ReadableElement","line":20,"character":45},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":29,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":29,"character":48},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":30,"character":39},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":31,"character":30},{"__symbolic":"reference","module":"../../config","name":"GraphStore","line":32,"character":37},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":33,"character":27},{"__symbolic":"reference","module":"../../service","name":"OperationRecordService","line":34,"character":49},{"__symbolic":"reference","module":"../../security","name":"SecurityChecker","line":35,"character":42},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":36,"character":23},{"__symbolic":"reference","module":"../../localization","name":"Localization","line":37,"character":22},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"../../service","name":"ReleasedVariableService","line":39,"character":51}]}],"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"}],"getElementSizeForIconScale":[{"__symbolic":"method"}]}}}}]
@@ -13,6 +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
+ private timeZoneMap;
16
17
  constructor(element: HTMLElement, injector: Injector, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, variableStore: VariableStore, graphStore: GraphStore, signalRAppId: string);
17
18
  private getAndSetCurrentTime;
18
19
  private getDatetimeFormat;
@@ -5,6 +5,7 @@ import { TimeFormatType } from '../../model/datetime-display/time-format-type';
5
5
  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
+ import timeZoneOptions from './time-zone-select-json';
8
9
  export class DatetimeDisplayElement extends ConditionalDisplayElement {
9
10
  constructor(element, injector, permissionChecker, variableCommunicator, variableStore, graphStore, signalRAppId) {
10
11
  super(element, permissionChecker, variableCommunicator, variableStore, signalRAppId);
@@ -12,7 +13,12 @@ export class DatetimeDisplayElement extends ConditionalDisplayElement {
12
13
  this.variableCommunicator = variableCommunicator;
13
14
  this.variableStore = variableStore;
14
15
  this.graphStore = graphStore;
16
+ this.timeZoneMap = new Map();
15
17
  this.logger = injector.get(LOGGER_SERVICE_TOKEN);
18
+ // 初始化时区
19
+ timeZoneOptions.forEach((item) => {
20
+ this.timeZoneMap.set(item.key, item.utcoffset);
21
+ });
16
22
  if (this.model.size && this.model.useGraph) {
17
23
  this.initGraph(this.model.size.width, this.model.size.height);
18
24
  }
@@ -22,11 +28,13 @@ export class DatetimeDisplayElement extends ConditionalDisplayElement {
22
28
  this.getAndSetCurrentTime(format);
23
29
  setInterval(() => {
24
30
  this.getAndSetCurrentTime(format);
25
- }, 1000);
31
+ }, 100);
26
32
  }
27
33
  }
28
34
  getAndSetCurrentTime(format) {
29
- const content = moment().local().format(format);
35
+ var _a;
36
+ const currentTimeZone = this.timeZoneMap.get((_a = this.model.timeZone) !== null && _a !== void 0 ? _a : '');
37
+ const content = moment().utcOffset(currentTimeZone !== null && currentTimeZone !== void 0 ? currentTimeZone : this.timeZoneMap.get('')).format(format);
30
38
  this.$dateTimeText.text(content);
31
39
  let fontF = this.$dateTimeText.css('font-family');
32
40
  if (fontF && fontF.lastIndexOf('msyh') === -1) {
@@ -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},{"__symbolic":"reference","name":"string"}]}],"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":15,"character":44},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":24,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":24,"character":48},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":25,"character":46},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":26,"character":49},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":27,"character":42},{"__symbolic":"reference","module":"../../config","name":"GraphStore","line":28,"character":37},{"__symbolic":"reference","name":"string"}]}],"getAndSetCurrentTime":[{"__symbolic":"method"}],"getDatetimeFormat":[{"__symbolic":"method"}],"initGraph":[{"__symbolic":"method"}],"getFormat":[{"__symbolic":"method"}]}}}}]
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 导出时区json
3
+ */
4
+ declare const timeZoneOptions: {
5
+ key: string;
6
+ utcoffset: string;
7
+ }[];
8
+ export default timeZoneOptions;