@flexem/fc-gui 3.0.0-alpha.16 → 3.0.0-alpha.160

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 (567) hide show
  1. package/CHANGELOG.md +492 -69
  2. package/README.md +4 -4
  3. package/assets/img/alert.svg +18 -18
  4. package/assets/img/black_first_page.png +0 -0
  5. package/assets/img/black_last_page.png +0 -0
  6. package/assets/img/black_next_page.png +0 -0
  7. package/assets/img/black_previous_page.png +0 -0
  8. package/assets/img/first_page.svg +19 -19
  9. package/assets/img/last_page.svg +19 -19
  10. package/assets/img/next_page.svg +14 -14
  11. package/assets/img/previous_page.svg +14 -14
  12. package/bundles/@flexem/fc-gui.umd.js +25472 -20764
  13. package/bundles/@flexem/fc-gui.umd.js.map +1 -1
  14. package/bundles/@flexem/fc-gui.umd.min.js +5 -5
  15. package/bundles/@flexem/fc-gui.umd.min.js.map +1 -1
  16. package/communication/index.d.ts +1 -1
  17. package/communication/index.js +1 -1
  18. package/communication/variable/index.d.ts +5 -5
  19. package/communication/variable/index.js +4 -4
  20. package/communication/variable/variable-communicator.d.ts +16 -12
  21. package/communication/variable/variable-definition.d.ts +10 -10
  22. package/communication/variable/variable-definition.js +14 -14
  23. package/communication/variable/variable-state-enum.d.ts +8 -7
  24. package/communication/variable/variable-state-enum.js +9 -8
  25. package/communication/variable/variable-state-enum.metadata.json +1 -1
  26. package/communication/variable/variable-state.d.ts +6 -6
  27. package/communication/variable/variable-state.js +6 -6
  28. package/communication/variable/variable-value.d.ts +11 -8
  29. package/communication/variable/variable-value.js +11 -8
  30. package/communication/variable/variable-value.metadata.json +1 -1
  31. package/config/alarm/alarm.store.d.ts +6 -0
  32. package/config/alarm/alarm.store.js +0 -0
  33. package/config/alarm/alarm.store.metadata.json +1 -0
  34. package/config/alarm/get-alarms-args.d.ts +12 -0
  35. package/config/alarm/get-alarms-args.js +13 -0
  36. package/config/alarm/get-alarms-args.metadata.json +1 -0
  37. package/config/alarm/index.d.ts +2 -0
  38. package/config/alarm/index.js +1 -0
  39. package/config/alarm/index.metadata.json +1 -0
  40. package/config/config-store.d.ts +17 -15
  41. package/config/graph/graph-result.d.ts +9 -9
  42. package/config/graph/graph-result.js +13 -13
  43. package/config/graph/graph-store.d.ts +9 -9
  44. package/config/graph/graph-type.d.ts +4 -4
  45. package/config/graph/graph-type.js +5 -5
  46. package/config/graph/graph.d.ts +6 -6
  47. package/config/graph/graph.js +6 -6
  48. package/config/gui-feature-config.d.ts +3 -0
  49. package/config/gui-feature-config.js +3 -0
  50. package/config/gui-feature-config.metadata.json +1 -0
  51. package/config/history-data/get-history-data-args.d.ts +22 -22
  52. package/config/history-data/get-history-data-args.js +21 -21
  53. package/config/history-data/historical-curve.time-range.d.ts +18 -18
  54. package/config/history-data/historical-curve.time-range.js +19 -19
  55. package/config/history-data/history-data-value.d.ts +6 -6
  56. package/config/history-data/history-data-value.js +6 -6
  57. package/config/history-data/history-data.model.d.ts +7 -7
  58. package/config/history-data/history-data.model.js +7 -7
  59. package/config/history-data/history-data.store.d.ts +10 -10
  60. package/config/history-data/index.d.ts +4 -4
  61. package/config/history-data/index.js +3 -3
  62. package/config/image/image-store.d.ts +6 -6
  63. package/config/index.d.ts +12 -10
  64. package/config/index.js +8 -6
  65. package/config/index.metadata.json +1 -1
  66. package/config/variable/get-variable-name-args.d.ts +6 -6
  67. package/config/variable/get-variable-name-args.js +7 -7
  68. package/config/variable/index.d.ts +2 -2
  69. package/config/variable/index.js +1 -1
  70. package/config/variable/variable-store.d.ts +8 -7
  71. package/config/view/view-store.d.ts +20 -20
  72. package/config/view/view.model.d.ts +4 -4
  73. package/config/view/view.model.js +5 -5
  74. package/core/index.d.ts +1 -1
  75. package/core/index.js +1 -1
  76. package/core/stringifying-map.d.ts +11 -11
  77. package/core/stringifying-map.js +24 -24
  78. package/core/stringifying-set.d.ts +10 -10
  79. package/core/stringifying-set.js +21 -21
  80. package/elements/air-quality/air-quality-element.d.ts +31 -0
  81. package/elements/air-quality/air-quality-element.js +194 -0
  82. package/elements/air-quality/air-quality-element.metadata.json +1 -0
  83. package/elements/alarm/alarm-element.d.ts +69 -0
  84. package/elements/alarm/alarm-element.js +497 -0
  85. package/elements/alarm/alarm-element.metadata.json +1 -0
  86. package/elements/bar-graph-element.d.ts +29 -21
  87. package/elements/bar-graph-element.js +244 -114
  88. package/elements/bar-graph-element.metadata.json +1 -1
  89. package/elements/base/base-element.d.ts +11 -11
  90. package/elements/base/base-element.js +9 -9
  91. package/elements/base/conditional-control-element.d.ts +16 -16
  92. package/elements/base/conditional-control-element.js +87 -87
  93. package/elements/base/conditional-display-element.d.ts +24 -24
  94. package/elements/base/conditional-display-element.js +86 -86
  95. package/elements/base/conditional-dynamic-display-element.d.ts +26 -26
  96. package/elements/base/conditional-dynamic-display-element.js +142 -142
  97. package/elements/base/conditional-enable-element.d.ts +21 -21
  98. package/elements/base/conditional-enable-element.js +100 -100
  99. package/elements/base/index.d.ts +3 -3
  100. package/elements/base/index.js +3 -3
  101. package/elements/base/readable-element.d.ts +20 -15
  102. package/elements/base/readable-element.js +122 -58
  103. package/elements/base/readable-element.metadata.json +1 -1
  104. package/elements/base/state-control-element.d.ts +26 -24
  105. package/elements/base/state-control-element.js +196 -180
  106. package/elements/character-display/character-display-element.d.ts +35 -35
  107. package/elements/character-display/character-display-element.js +312 -311
  108. package/elements/character-display/character-display-element.metadata.json +1 -1
  109. package/elements/datetime-display/datetime-display-element.d.ts +22 -21
  110. package/elements/datetime-display/datetime-display-element.js +140 -132
  111. package/elements/datetime-display/datetime-display-element.metadata.json +1 -1
  112. package/elements/datetime-display/time-zone-select-json.d.ts +8 -0
  113. package/elements/datetime-display/time-zone-select-json.js +558 -0
  114. package/elements/historical-curve/historical-curve-element-status.d.ts +6 -6
  115. package/elements/historical-curve/historical-curve-element-status.js +7 -7
  116. package/elements/historical-curve/historical-curve.element.d.ts +96 -59
  117. package/elements/historical-curve/historical-curve.element.js +990 -364
  118. package/elements/historical-curve/historical-curve.element.metadata.json +1 -1
  119. package/elements/historical-curve/historical-curve.element.option.d.ts +13 -13
  120. package/elements/historical-curve/historical-curve.time-period.d.ts +4 -4
  121. package/elements/main-element.d.ts +46 -45
  122. package/elements/main-element.js +373 -307
  123. package/elements/main-element.metadata.json +1 -1
  124. package/elements/meter-element.d.ts +26 -20
  125. package/elements/meter-element.js +139 -70
  126. package/elements/meter-element.metadata.json +1 -1
  127. package/elements/numerical-display/numerical-display-element.d.ts +60 -41
  128. package/elements/numerical-display/numerical-display-element.js +476 -361
  129. package/elements/numerical-display/numerical-display-element.metadata.json +1 -1
  130. package/elements/per-view-variable-communicator.d.ts +20 -17
  131. package/elements/per-view-variable-communicator.js +59 -45
  132. package/elements/per-view-variable-communicator.metadata.json +1 -1
  133. package/elements/pipe/pipe-element.d.ts +19 -19
  134. package/elements/pipe/pipe-element.js +141 -141
  135. package/elements/ring-graph/ring-graph-element.d.ts +31 -19
  136. package/elements/ring-graph/ring-graph-element.js +250 -89
  137. package/elements/ring-graph/ring-graph-element.metadata.json +1 -1
  138. package/elements/scroll-alarm/scroll-alarm-element.d.ts +74 -0
  139. package/elements/scroll-alarm/scroll-alarm-element.js +761 -0
  140. package/elements/scroll-alarm/scroll-alarm-element.metadata.json +1 -0
  141. package/elements/shared/graph/graph-state-element.d.ts +28 -27
  142. package/elements/shared/graph/graph-state-element.js +139 -110
  143. package/elements/shared/graph/graph-state-element.metadata.json +1 -1
  144. package/elements/shared/math-utils.d.ts +2 -2
  145. package/elements/shared/math-utils.js +14 -14
  146. package/elements/shared/text/text-element.d.ts +22 -8
  147. package/elements/shared/text/text-element.js +106 -68
  148. package/elements/shared/text/text-element.metadata.json +1 -1
  149. package/elements/shared/text/text-state-element.d.ts +58 -23
  150. package/elements/shared/text/text-state-element.js +286 -136
  151. package/elements/shared/text/text-state-element.metadata.json +1 -1
  152. package/elements/shared/text/text-state.model.d.ts +5 -5
  153. package/elements/shared/text/text-utils.d.ts +5 -5
  154. package/elements/shared/text/text-utils.js +45 -45
  155. package/elements/static-elements/hyperlink-element.d.ts +40 -14
  156. package/elements/static-elements/hyperlink-element.js +197 -48
  157. package/elements/static-elements/hyperlink-element.metadata.json +1 -1
  158. package/elements/static-elements/image-element.d.ts +14 -14
  159. package/elements/static-elements/image-element.js +41 -41
  160. package/elements/static-elements/text-element.d.ts +42 -16
  161. package/elements/static-elements/text-element.js +205 -55
  162. package/elements/static-elements/text-element.metadata.json +1 -1
  163. package/elements/switch-indicator-light/bit-indicator-light-operator.d.ts +21 -20
  164. package/elements/switch-indicator-light/bit-indicator-light-operator.js +85 -78
  165. package/elements/switch-indicator-light/bit-indicator-light-operator.metadata.json +1 -1
  166. package/elements/switch-indicator-light/bit-switch-operator.d.ts +19 -19
  167. package/elements/switch-indicator-light/bit-switch-operator.js +107 -107
  168. package/elements/switch-indicator-light/current-stateId-value.d.ts +6 -6
  169. package/elements/switch-indicator-light/current-stateId-value.js +8 -8
  170. package/elements/switch-indicator-light/indicator-light-operator.d.ts +8 -8
  171. package/elements/switch-indicator-light/switch-indicator-light-element.d.ts +48 -39
  172. package/elements/switch-indicator-light/switch-indicator-light-element.js +302 -251
  173. package/elements/switch-indicator-light/switch-indicator-light-element.metadata.json +1 -1
  174. package/elements/switch-indicator-light/switch-operator.d.ts +6 -6
  175. package/elements/switch-indicator-light/word-indicator-light-operator.d.ts +19 -18
  176. package/elements/switch-indicator-light/word-indicator-light-operator.js +72 -65
  177. package/elements/switch-indicator-light/word-indicator-light-operator.metadata.json +1 -1
  178. package/elements/switch-indicator-light/word-switch-operator.d.ts +18 -18
  179. package/elements/switch-indicator-light/word-switch-operator.js +75 -75
  180. package/elements/table/table-element.d.ts +9 -9
  181. package/elements/table/table-element.js +6 -6
  182. package/elements/vector-graphics/ellipse-element.d.ts +9 -9
  183. package/elements/vector-graphics/ellipse-element.js +6 -6
  184. package/elements/vector-graphics/poly-line-element.d.ts +12 -12
  185. package/elements/vector-graphics/poly-line-element.js +19 -19
  186. package/elements/vector-graphics/polygon-element.d.ts +12 -12
  187. package/elements/vector-graphics/polygon-element.js +19 -19
  188. package/elements/vector-graphics/rectangle-element.d.ts +9 -9
  189. package/elements/vector-graphics/rectangle-element.js +6 -6
  190. package/elements/vector-graphics/sector-element.d.ts +9 -9
  191. package/elements/vector-graphics/sector-element.js +6 -6
  192. package/elements/vector-graphics/straight-line-element.d.ts +12 -12
  193. package/elements/vector-graphics/straight-line-element.js +19 -19
  194. package/elements/video/video-element.d.ts +37 -27
  195. package/elements/video/video-element.js +258 -160
  196. package/elements/video/video-element.metadata.json +1 -1
  197. package/elements/view-operation/view-operation.element.d.ts +62 -36
  198. package/elements/view-operation/view-operation.element.js +348 -194
  199. package/elements/view-operation/view-operation.element.metadata.json +1 -1
  200. package/elements/weather/weater-element.d.ts +38 -38
  201. package/elements/weather/weater-element.js +237 -238
  202. package/gui/gui-context.d.ts +33 -16
  203. package/gui/gui-host.d.ts +50 -50
  204. package/gui/gui-host.js +173 -173
  205. package/gui/gui-view.d.ts +45 -42
  206. package/gui/gui-view.js +265 -204
  207. package/gui/gui-view.metadata.json +1 -1
  208. package/gui/gui.component.d.ts +45 -42
  209. package/gui/gui.component.html +3 -3
  210. package/gui/gui.component.js +240 -227
  211. package/gui/gui.component.metadata.json +1 -1
  212. package/gui/interfaces/gui-options.d.ts +6 -6
  213. package/gui.module.d.ts +2 -2
  214. package/gui.module.js +78 -78
  215. package/localization/index.d.ts +2 -2
  216. package/localization/index.js +2 -2
  217. package/localization/localization.service.d.ts +62 -51
  218. package/localization/localization.service.js +61 -50
  219. package/localization/localization.service.metadata.json +1 -1
  220. package/localization/localization.service.zh_CN.d.ts +2 -2
  221. package/localization/localization.service.zh_CN.js +59 -48
  222. package/localization/localization.service.zh_CN.metadata.json +1 -1
  223. package/logger/console-logger.service.d.ts +13 -13
  224. package/logger/console-logger.service.js +38 -38
  225. package/logger/index.d.ts +2 -2
  226. package/logger/index.js +2 -2
  227. package/logger/logger.service.d.ts +14 -14
  228. package/logger/logger.service.js +2 -2
  229. package/modal/alert/alert-modal.component.d.ts +10 -10
  230. package/modal/alert/alert-modal.component.html +11 -11
  231. package/modal/alert/alert-modal.component.js +38 -38
  232. package/modal/alert/alert-modal.component.less +59 -59
  233. package/modal/confirm-operation/confirm-operation-modal.component.d.ts +10 -10
  234. package/modal/confirm-operation/confirm-operation-modal.component.html +16 -16
  235. package/modal/confirm-operation/confirm-operation-modal.component.js +41 -41
  236. package/modal/confirm-operation/confirm-operation-modal.component.less +58 -58
  237. package/modal/verify-password/verify-password-modal.component.d.ts +18 -18
  238. package/modal/verify-password/verify-password-modal.component.html +22 -22
  239. package/modal/verify-password/verify-password-modal.component.js +66 -66
  240. package/modal/verify-password/verify-password-modal.component.less +65 -65
  241. package/modal/write-character/write-character-modal-args.d.ts +7 -7
  242. package/modal/write-character/write-character-modal-args.js +8 -8
  243. package/modal/write-character/write-character-modal.component.d.ts +25 -25
  244. package/modal/write-character/write-character-modal.component.html +21 -21
  245. package/modal/write-character/write-character-modal.component.js +74 -74
  246. package/modal/write-character/write-character-modal.component.less +49 -49
  247. package/modal/write-value/write-value-modal-args.d.ts +16 -12
  248. package/modal/write-value/write-value-modal-args.js +14 -12
  249. package/modal/write-value/write-value-modal-args.metadata.json +1 -1
  250. package/modal/write-value/write-value-modal.component.d.ts +60 -54
  251. package/modal/write-value/write-value-modal.component.html +26 -21
  252. package/modal/write-value/write-value-modal.component.js +279 -204
  253. package/modal/write-value/write-value-modal.component.less +56 -56
  254. package/modal/write-value/write-value-modal.component.metadata.json +1 -1
  255. package/modal/write-value/write-value-model-result.d.ts +3 -3
  256. package/model/air-quality/air-quality-info.d.ts +23 -0
  257. package/model/air-quality/air-quality-info.js +4 -0
  258. package/model/air-quality/air-quality-info.metadata.json +1 -0
  259. package/model/air-quality/air-quality.model.d.ts +7 -0
  260. package/model/air-quality/air-quality.model.js +0 -0
  261. package/model/air-quality/air-quality.model.metadata.json +1 -0
  262. package/model/alarm/alarm.model.d.ts +13 -0
  263. package/model/alarm/alarm.model.js +0 -0
  264. package/model/alarm/alarm.model.metadata.json +1 -0
  265. package/model/bar-graph/FontStyleData.d.ts +7 -7
  266. package/model/bar-graph/bar-graph-direction.d.ts +6 -6
  267. package/model/bar-graph/bar-graph-direction.js +7 -7
  268. package/model/bar-graph/bar-graph.d.ts +26 -22
  269. package/model/base/base-element-model.d.ts +5 -5
  270. package/model/base/base-element-model.js +2 -2
  271. package/model/base/conditional-control-model.d.ts +6 -6
  272. package/model/base/conditional-display-model.d.ts +9 -9
  273. package/model/base/conditional-dynamic-display-model.d.ts +13 -13
  274. package/model/base/conditional-enable-model.d.ts +9 -9
  275. package/model/base/font-setting-model.d.ts +29 -8
  276. package/model/base/font-setting-model.metadata.json +1 -1
  277. package/model/base/index.d.ts +7 -7
  278. package/model/base/index.js +1 -1
  279. package/model/base/readable-model.d.ts +14 -10
  280. package/model/base/security-model.d.ts +6 -6
  281. package/model/character-display/character-display.d.ts +19 -19
  282. package/model/datetime-display/date-format-type.d.ts +5 -5
  283. package/model/datetime-display/date-format-type.js +6 -6
  284. package/model/datetime-display/datetime-display-settings.d.ts +17 -17
  285. package/model/datetime-display/datetime-display.d.ts +21 -20
  286. package/model/datetime-display/datetime-separator-type.d.ts +6 -6
  287. package/model/datetime-display/datetime-separator-type.js +7 -7
  288. package/model/datetime-display/time-format-type.d.ts +4 -4
  289. package/model/datetime-display/time-format-type.js +5 -5
  290. package/model/historical-curve/curve-type.d.ts +5 -5
  291. package/model/historical-curve/curve-type.js +6 -6
  292. package/model/historical-curve/historical-curve-axis-settings.d.ts +17 -6
  293. package/model/historical-curve/historical-curve-axis-settings.js +5 -0
  294. package/model/historical-curve/historical-curve-axis-settings.metadata.json +1 -1
  295. package/model/historical-curve/historical-curve-chanel.model.d.ts +22 -14
  296. package/model/historical-curve/historical-curve.data-settings.d.ts +9 -9
  297. package/model/historical-curve/historical-curve.display-settings.d.ts +19 -19
  298. package/model/historical-curve/historical-curve.model.d.ts +8 -8
  299. package/model/historical-curve/index.d.ts +4 -4
  300. package/model/hyperlink/hyperlink.model.d.ts +8 -8
  301. package/model/image/image-fill-type.d.ts +4 -4
  302. package/model/image/image-fill-type.js +5 -5
  303. package/model/image/image.d.ts +9 -9
  304. package/model/index.d.ts +15 -15
  305. package/model/index.js +8 -8
  306. package/model/meter/meter.d.ts +17 -13
  307. package/model/numerical-display/index.d.ts +8 -8
  308. package/model/numerical-display/index.js +2 -2
  309. package/model/numerical-display/numerical-display.d.ts +29 -29
  310. package/model/numerical-display/numerical-operation-settings.d.ts +6 -6
  311. package/model/numerical-display/numerical-operation-type.d.ts +4 -4
  312. package/model/numerical-display/numerical-operation-type.js +5 -5
  313. package/model/numerical-display/numerical-operation.d.ts +19 -11
  314. package/model/numerical-display/proportional-conversion.d.ts +4 -4
  315. package/model/numerical-display/type-settings.d.ts +6 -6
  316. package/model/numerical-display/zoom.d.ts +4 -4
  317. package/model/pipe/flow-direction-type.d.ts +4 -4
  318. package/model/pipe/flow-direction-type.js +5 -5
  319. package/model/pipe/index.d.ts +2 -2
  320. package/model/pipe/index.js +1 -1
  321. package/model/pipe/pipe.d.ts +17 -17
  322. package/model/poly-line/poly-line-model.d.ts +4 -4
  323. package/model/polygon/polygon-model.d.ts +4 -4
  324. package/model/ring-graph/ring-graph.model.d.ts +33 -25
  325. package/model/scroll-alarm/scroll-alarm.model.d.ts +21 -0
  326. package/model/scroll-alarm/scroll-alarm.model.js +0 -0
  327. package/model/scroll-alarm/scroll-alarm.model.metadata.json +1 -0
  328. package/model/settings/background/view-background-fill-type.d.ts +5 -5
  329. package/model/settings/background/view-background-fill-type.js +6 -6
  330. package/model/settings/background/view-background.model.d.ts +8 -8
  331. package/model/settings/index.d.ts +3 -3
  332. package/model/settings/index.js +2 -2
  333. package/model/settings/popup/view-popup-backdrop-type.d.ts +4 -4
  334. package/model/settings/popup/view-popup-backdrop-type.js +5 -5
  335. package/model/settings/popup/view-popup-location-type.d.ts +4 -4
  336. package/model/settings/popup/view-popup-location-type.js +5 -5
  337. package/model/settings/popup/view-popup-setting.model.d.ts +17 -17
  338. package/model/settings/popup/view-popup-setting.model.js +2 -2
  339. package/model/settings/view-settings.model.d.ts +6 -6
  340. package/model/shared/alarm/alarm-range.model.d.ts +6 -6
  341. package/model/shared/arc.model.d.ts +4 -4
  342. package/model/shared/binary.d.ts +7 -7
  343. package/model/shared/binary.js +37 -37
  344. package/model/shared/condition/bit-condition-item-observer.d.ts +14 -14
  345. package/model/shared/condition/bit-condition-item-observer.js +53 -53
  346. package/model/shared/condition/bit-condition-logic.d.ts +4 -4
  347. package/model/shared/condition/bit-condition-logic.js +5 -5
  348. package/model/shared/condition/bit-condition-model.d.ts +8 -8
  349. package/model/shared/condition/bit-condition.d.ts +4 -4
  350. package/model/shared/condition/condition-control-result-value.d.ts +5 -5
  351. package/model/shared/condition/condition-helper.d.ts +4 -4
  352. package/model/shared/condition/condition-helper.js +22 -22
  353. package/model/shared/condition/condition-item-model.d.ts +10 -10
  354. package/model/shared/condition/condition-item-observer.d.ts +12 -12
  355. package/model/shared/condition/condition-item-observer.js +14 -14
  356. package/model/shared/condition/condition-items-observer.d.ts +5 -5
  357. package/model/shared/condition/condition-items-result-observer.d.ts +16 -16
  358. package/model/shared/condition/condition-items-result-observer.js +87 -87
  359. package/model/shared/condition/condition-model.d.ts +6 -6
  360. package/model/shared/condition/condition-type.d.ts +4 -4
  361. package/model/shared/condition/condition-type.js +5 -5
  362. package/model/shared/condition/convert-condition-model.d.ts +5 -5
  363. package/model/shared/condition/index.d.ts +11 -11
  364. package/model/shared/condition/index.js +4 -4
  365. package/model/shared/condition/relation-condition-result-state.d.ts +6 -6
  366. package/model/shared/condition/relation-condition-result-state.js +8 -8
  367. package/model/shared/condition/relation-condition-result.d.ts +8 -8
  368. package/model/shared/condition/relation-condition-result.js +7 -7
  369. package/model/shared/condition/relation-type.d.ts +5 -5
  370. package/model/shared/condition/relation-type.js +6 -6
  371. package/model/shared/condition/relational-operator.d.ts +8 -8
  372. package/model/shared/condition/relational-operator.js +9 -9
  373. package/model/shared/condition/variable-value-logic-model.d.ts +11 -11
  374. package/model/shared/condition/variable-value-type.d.ts +4 -4
  375. package/model/shared/condition/variable-value-type.js +5 -5
  376. package/model/shared/condition/word-condition-item-observer.d.ts +21 -21
  377. package/model/shared/condition/word-condition-item-observer.js +165 -165
  378. package/model/shared/condition/word-condition-model.d.ts +8 -8
  379. package/model/shared/condition/word-condition.d.ts +5 -5
  380. package/model/shared/data-type/display-data-type.d.ts +5 -5
  381. package/model/shared/data-type/display-data-type.js +6 -6
  382. package/model/shared/data-type/fbox-data-type.d.ts +15 -15
  383. package/model/shared/data-type/fbox-data-type.js +16 -16
  384. package/model/shared/data-type/fcloud-data-Type.d.ts +8 -8
  385. package/model/shared/data-type/fcloud-data-Type.js +9 -9
  386. package/model/shared/dynamic-display/dynamic-behavior-type.d.ts +5 -5
  387. package/model/shared/dynamic-display/dynamic-behavior-type.js +6 -6
  388. package/model/shared/dynamic-display/dynamic-display-behavior-model.d.ts +5 -5
  389. package/model/shared/dynamic-display/dynamic-display-model.d.ts +10 -10
  390. package/model/shared/dynamic-display/dynamic-display-result-model.d.ts +7 -7
  391. package/model/shared/dynamic-display/dynamic-display-result-model.js +7 -7
  392. package/model/shared/dynamic-display/dynamic-display.d.ts +11 -11
  393. package/model/shared/dynamic-display/dynamic-display.js +35 -35
  394. package/model/shared/graph/custom-style.d.ts +14 -14
  395. package/model/shared/graph/graph-setting.d.ts +10 -10
  396. package/model/shared/index.d.ts +8 -8
  397. package/model/shared/index.js +3 -3
  398. package/model/shared/point.model.d.ts +4 -4
  399. package/model/shared/rotation/rotation-behavior-model.d.ts +4 -4
  400. package/model/shared/rotation/rotation-behavior.d.ts +9 -9
  401. package/model/shared/rotation/rotation-behavior.js +101 -101
  402. package/model/shared/rotation/rotation-direction-type.d.ts +4 -4
  403. package/model/shared/rotation/rotation-direction-type.js +5 -5
  404. package/model/shared/rotation/rotation-model.d.ts +14 -14
  405. package/model/shared/rotation/rotation-observer-model.d.ts +4 -4
  406. package/model/shared/rotation/rotation-observer.d.ts +11 -11
  407. package/model/shared/rotation/rotation-observer.js +28 -28
  408. package/model/shared/scale/scale-mark.model.d.ts +6 -6
  409. package/model/shared/scale/scale-model.d.ts +20 -20
  410. package/model/shared/size.model.d.ts +7 -7
  411. package/model/shared/size.model.js +12 -12
  412. package/model/shared/state/index.d.ts +1 -1
  413. package/model/shared/state/index.js +1 -1
  414. package/model/shared/state/state.d.ts +9 -8
  415. package/model/shared/state/state.js +10 -9
  416. package/model/shared/state/state.metadata.json +1 -1
  417. package/model/shared/text/font.d.ts +10 -10
  418. package/model/shared/text/index.d.ts +2 -2
  419. package/model/shared/text/text.d.ts +8 -5
  420. package/model/shared/translation/translation-behavior-model.d.ts +4 -4
  421. package/model/shared/translation/translation-behavior.d.ts +12 -12
  422. package/model/shared/translation/translation-behavior.js +63 -63
  423. package/model/shared/translation/translation-direction-type.d.ts +4 -4
  424. package/model/shared/translation/translation-direction-type.js +5 -5
  425. package/model/shared/translation/translation-model.d.ts +12 -12
  426. package/model/shared/translation/translation-observer-model.d.ts +4 -4
  427. package/model/shared/translation/translation-observer.d.ts +10 -10
  428. package/model/shared/translation/translation-observer.js +27 -27
  429. package/model/shared/variable/variable-identifier.model.d.ts +5 -5
  430. package/model/shared/variable/variable-name.model.d.ts +5 -5
  431. package/model/straight-line/straight-line-model.d.ts +4 -4
  432. package/model/switch-indicator-light/bit-indicator-light-settings.d.ts +8 -8
  433. package/model/switch-indicator-light/bit-switch-operation.d.ts +6 -6
  434. package/model/switch-indicator-light/bit-switch-operation.js +7 -7
  435. package/model/switch-indicator-light/bit-switch-settings.d.ts +11 -11
  436. package/model/switch-indicator-light/fault-flicker.d.ts +5 -5
  437. package/model/switch-indicator-light/flicker.d.ts +5 -5
  438. package/model/switch-indicator-light/flicker.js +6 -6
  439. package/model/switch-indicator-light/index.d.ts +14 -14
  440. package/model/switch-indicator-light/index.js +5 -5
  441. package/model/switch-indicator-light/indicator-light-fault-flicker.d.ts +5 -5
  442. package/model/switch-indicator-light/indicator-light-settings.d.ts +7 -7
  443. package/model/switch-indicator-light/indicator-light-type.d.ts +4 -4
  444. package/model/switch-indicator-light/indicator-light-type.js +5 -5
  445. package/model/switch-indicator-light/switch-indicator-light.d.ts +35 -33
  446. package/model/switch-indicator-light/switch-indicator-state.d.ts +8 -8
  447. package/model/switch-indicator-light/switch-settings.d.ts +7 -7
  448. package/model/switch-indicator-light/switch-type.d.ts +4 -4
  449. package/model/switch-indicator-light/switch-type.js +5 -5
  450. package/model/switch-indicator-light/word-indicator-light-settings.d.ts +6 -6
  451. package/model/switch-indicator-light/word-switch-operation.d.ts +5 -5
  452. package/model/switch-indicator-light/word-switch-operation.js +6 -6
  453. package/model/switch-indicator-light/word-switch-settings.d.ts +13 -13
  454. package/model/table/table-model.d.ts +9 -9
  455. package/model/text/text.model.d.ts +7 -7
  456. package/model/video/video.model.d.ts +8 -8
  457. package/model/view-operation/index.d.ts +2 -2
  458. package/model/view-operation/index.js +1 -1
  459. package/model/view-operation/view-operation-element.model.d.ts +25 -19
  460. package/model/view-operation/view-operation-type.d.ts +18 -18
  461. package/model/view-operation/view-operation-type.js +19 -19
  462. package/model/weather/weather-info.d.ts +11 -11
  463. package/model/weather/weather-info.js +2 -2
  464. package/model/weather/weather.model.d.ts +7 -7
  465. package/package.json +1 -1
  466. package/public_api.d.ts +14 -14
  467. package/public_api.js +12 -11
  468. package/remote/communication/variable/remote-variable-communicator.d.ts +59 -30
  469. package/remote/communication/variable/remote-variable-communicator.js +395 -215
  470. package/remote/communication/variable/remote-variable-communicator.metadata.json +1 -1
  471. package/remote/communication/variable/remote-variable-protocol.d.ts +18 -13
  472. package/remote/config/graph/get-released-graph-state-result.d.ts +6 -6
  473. package/remote/config/graph/get-released-graph-states.d.ts +4 -4
  474. package/remote/config/graph/graph-state-key.d.ts +6 -6
  475. package/remote/config/graph/graph-state-result.d.ts +5 -5
  476. package/remote/config/graph/graph-state.d.ts +4 -4
  477. package/remote/config/graph/remote-graph-protocol.d.ts +11 -11
  478. package/remote/config/graph/remote-graph-store.d.ts +16 -16
  479. package/remote/config/graph/remote-graph-store.js +101 -101
  480. package/remote/config/image/remote-image-protocol.d.ts +4 -4
  481. package/remote/config/image/remote-image-store.d.ts +8 -8
  482. package/remote/config/image/remote-image-store.js +19 -19
  483. package/remote/config/view/remote-view-protocol.d.ts +8 -8
  484. package/remote/config/view/remote-view-store.d.ts +13 -13
  485. package/remote/config/view/remote-view-store.js +39 -39
  486. package/remote/config/view/view-result.d.ts +4 -4
  487. package/remote/index.d.ts +14 -14
  488. package/remote/index.js +4 -4
  489. package/security/index.d.ts +1 -1
  490. package/security/security-checker.d.ts +3 -3
  491. package/service/index.d.ts +8 -4
  492. package/service/index.js +1 -0
  493. package/service/index.metadata.json +1 -1
  494. package/service/language.service.d.ts +37 -0
  495. package/service/language.service.js +0 -0
  496. package/service/language.service.metadata.json +1 -0
  497. package/service/operation-record/create-operation-record-args.d.ts +5 -5
  498. package/service/operation-record/index.d.ts +3 -3
  499. package/service/operation-record/operation-record.service.d.ts +4 -4
  500. package/service/operation-record/variable-option.model.d.ts +5 -5
  501. package/service/permission-checker.d.ts +3 -3
  502. package/service/released-variable/index.d.ts +1 -0
  503. package/service/released-variable/index.js +0 -0
  504. package/service/released-variable/index.metadata.json +1 -0
  505. package/service/released-variable/released-variable.service.d.ts +4 -0
  506. package/service/released-variable/released-variable.service.js +0 -0
  507. package/service/released-variable/released-variable.service.metadata.json +1 -0
  508. package/service/system-text-library.service.d.ts +77 -0
  509. package/service/system-text-library.service.js +29 -0
  510. package/service/system-text-library.service.metadata.json +1 -0
  511. package/service/text-library.service.d.ts +49 -0
  512. package/service/text-library.service.js +0 -0
  513. package/service/text-library.service.metadata.json +1 -0
  514. package/service/video/index.d.ts +2 -2
  515. package/service/video/video-url.d.ts +4 -4
  516. package/service/video/video.service.d.ts +4 -4
  517. package/service/weather.service.d.ts +4 -3
  518. package/settings/display-mode.d.ts +10 -10
  519. package/settings/display-mode.js +11 -11
  520. package/settings/global-settings.d.ts +7 -7
  521. package/settings/global-settings.js +13 -13
  522. package/settings/index.d.ts +3 -3
  523. package/settings/index.js +3 -3
  524. package/settings/view-resize-mode.d.ts +10 -10
  525. package/settings/view-resize-mode.js +11 -11
  526. package/shared/config-is-empty-error.d.ts +3 -3
  527. package/shared/config-is-empty-error.js +7 -7
  528. package/shared/disposable.d.ts +3 -3
  529. package/shared/graph-extended-style.d.ts +4 -4
  530. package/shared/gui-consts.d.ts +33 -30
  531. package/shared/gui-consts.js +33 -30
  532. package/shared/gui-consts.metadata.json +1 -1
  533. package/shared/index.d.ts +5 -5
  534. package/shared/index.js +3 -3
  535. package/shared/operation-helper.d.ts +6 -6
  536. package/shared/operation-helper.js +38 -38
  537. package/utils/access-permission.d.ts +5 -5
  538. package/utils/access-permission.js +6 -6
  539. package/utils/access-permission.service.d.ts +11 -11
  540. package/utils/access-permission.service.js +30 -30
  541. package/utils/auto-focus.directive.d.ts +6 -6
  542. package/utils/auto-focus.directive.js +27 -27
  543. package/utils/bs-modal-drag.directive.d.ts +7 -7
  544. package/utils/bs-modal-drag.directive.js +38 -38
  545. package/utils/data-type/data-type.service.d.ts +57 -57
  546. package/utils/data-type/data-type.service.js +155 -155
  547. package/utils/data-type/fbox-data-type.service.d.ts +54 -54
  548. package/utils/data-type/fbox-data-type.service.js +300 -260
  549. package/utils/data-type/fcloud-data-type.service.d.ts +55 -55
  550. package/utils/data-type/fcloud-data-type.service.js +203 -203
  551. package/utils/fraction-digit.service.d.ts +41 -41
  552. package/utils/fraction-digit.service.js +133 -133
  553. package/utils/graph-util.d.ts +5 -5
  554. package/utils/graph-util.js +19 -19
  555. package/utils/guid.d.ts +6 -6
  556. package/utils/guid.js +27 -27
  557. package/utils/index.d.ts +7 -7
  558. package/utils/index.js +7 -7
  559. package/utils/numerical-operation-type.d.ts +4 -4
  560. package/utils/numerical-operation-type.js +5 -5
  561. package/utils/numerical-operation.service.d.ts +17 -17
  562. package/utils/numerical-operation.service.js +201 -177
  563. package/utils/variable-util.d.ts +5 -5
  564. package/utils/variable-util.js +11 -11
  565. package/view/popup-view.service.d.ts +7 -7
  566. package/view/view.service.d.ts +6 -6
  567. package/view/view.service.js +20 -20
@@ -1,307 +1,373 @@
1
- import { each, forEach, isEqual } from 'lodash';
2
- import { LOCALIZATION } from '../localization';
3
- import { LOGGER_SERVICE_TOKEN } from '../logger';
4
- import { Size } from '../model';
5
- import { ViewBackgroundFillType } from '../model/settings/background/view-background-fill-type';
6
- import { GuiConsts } from '../shared';
7
- import { BarGraphElement } from './bar-graph-element';
8
- import { ReadableElement } from './base';
9
- import { CharacterDisplayElement } from './character-display/character-display-element';
10
- import { DatetimeDisplayElement } from './datetime-display/datetime-display-element';
11
- import { HistoricalCurveElement } from './historical-curve/historical-curve.element';
12
- import { MeterElement } from './meter-element';
13
- import { NumericalDisplayElement } from './numerical-display/numerical-display-element';
14
- import { PipeElement } from './pipe/pipe-element';
15
- import { RingGraphElement } from './ring-graph/ring-graph-element';
16
- import { GraphStateElement } from './shared/graph/graph-state-element';
17
- import { ImageElement } from './static-elements/image-element';
18
- import { TextElement } from './static-elements/text-element';
19
- import { SwitchIndicatorLightElement } from './switch-indicator-light/switch-indicator-light-element';
20
- import { EllipseElement } from './vector-graphics/ellipse-element';
21
- import { RectangleElement } from './vector-graphics/rectangle-element';
22
- import { SectorElement } from './vector-graphics/sector-element';
23
- import { ViewOperationElement } from './view-operation/view-operation.element';
24
- import { StraightLineElement } from './vector-graphics/straight-line-element';
25
- import { PolyLineElement } from './vector-graphics/poly-line-element';
26
- import { PolygonElement } from './vector-graphics/polygon-element';
27
- import { HyperlinkElement } from './static-elements/hyperlink-element';
28
- import { VideoElement } from './video/video-element';
29
- import { WeatherElement } from './weather/weater-element';
30
- export class MainElement {
31
- constructor(injector, bsModalService, context, variableCommunicator, popupViewService, signalRAppId) {
32
- this.injector = injector;
33
- this.bsModalService = bsModalService;
34
- this.context = context;
35
- this.variableCommunicator = variableCommunicator;
36
- this.popupViewService = popupViewService;
37
- this.signalRAppId = signalRAppId;
38
- this.elements = new Array();
39
- this.logger = injector.get(LOGGER_SERVICE_TOKEN);
40
- }
41
- get rootElement() {
42
- return this.root[0];
43
- }
44
- load(data, overflowVisible = false, guiOptions) {
45
- this.hostContainerId = guiOptions.hostContainerId;
46
- if (this.isLoaded) {
47
- throw new Error('The Main Element already loaded.');
48
- }
49
- this.root = $(data);
50
- this.root.attr('style', `margin: 0 auto;display: block;${overflowVisible ? 'overflow: visible;' : ''}`);
51
- // eslint-disable-next-line radix
52
- this.rawWidth = Number.parseInt(this.root.attr('width'));
53
- // eslint-disable-next-line radix
54
- this.rawHeight = Number.parseInt(this.root.attr('height'));
55
- // TODO 实现一个elementParser解析components.
56
- const components = this.root.find('[data-model]');
57
- each(components, element => {
58
- const category = $(element).data('model').category;
59
- switch (category) {
60
- case GuiConsts.components.numericalDisplayKey:
61
- 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);
62
- this.elements.push(numericalDisplayElement);
63
- break;
64
- case GuiConsts.components.imageKey:
65
- 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));
66
- break;
67
- case GuiConsts.components.meterKey:
68
- this.elements.push(new MeterElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
69
- break;
70
- case GuiConsts.components.pipeKey:
71
- this.elements.push(new PipeElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
72
- break;
73
- case GuiConsts.components.switchIndicatorLightKey:
74
- 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));
75
- break;
76
- case GuiConsts.components.barGraphKey:
77
- this.elements.push(new BarGraphElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
78
- break;
79
- case GuiConsts.components.toggleViewKey:
80
- case GuiConsts.components.viewOperationElement:
81
- 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));
82
- break;
83
- case GuiConsts.components.characterKey:
84
- 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));
85
- break;
86
- case GuiConsts.components.textKey:
87
- this.elements.push(new TextElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId));
88
- break;
89
- case GuiConsts.components.hyperlinkKey:
90
- this.elements.push(new HyperlinkElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId));
91
- break;
92
- case GuiConsts.components.straightLineKey:
93
- this.elements.push(new StraightLineElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
94
- break;
95
- case GuiConsts.components.polyLineKey:
96
- this.elements.push(new PolyLineElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
97
- break;
98
- case GuiConsts.components.ellipseKey:
99
- this.elements.push(new EllipseElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
100
- break;
101
- case GuiConsts.components.rectangleKey:
102
- this.elements.push(new RectangleElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
103
- break;
104
- case GuiConsts.components.sectorkey:
105
- this.elements.push(new SectorElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
106
- break;
107
- case GuiConsts.components.datetimeDisplayKey:
108
- this.elements.push(new DatetimeDisplayElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId));
109
- break;
110
- case GuiConsts.components.historicalCurveKey:
111
- this.elements.push(new HistoricalCurveElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.historyDataStore, this.signalRAppId));
112
- break;
113
- case GuiConsts.components.ringGraphKey:
114
- this.elements.push(new RingGraphElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
115
- break;
116
- case GuiConsts.components.polygonKey:
117
- this.elements.push(new PolygonElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
118
- break;
119
- case GuiConsts.components.videokey:
120
- 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));
121
- break;
122
- case GuiConsts.components.tableKey:
123
- this.elements.push(new PolygonElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
124
- break;
125
- case GuiConsts.components.weatherKey:
126
- this.elements.push(new WeatherElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.weatherService, this.signalRAppId));
127
- break;
128
- }
129
- });
130
- this.initBackground();
131
- this.isLoaded = true;
132
- this.logger.debug('[GUI] Main element loaded.');
133
- }
134
- /**
135
- * 保证在显示区域内显示画面所有内容,等比缩放画面大小以铺满整个显示区域
136
- * @param size 显示区域大小
137
- */
138
- uniformStretch(size, svgRootClass) {
139
- if (!size.isReal()) {
140
- throw new Error('size is not real.');
141
- }
142
- this.checkIsLoaded();
143
- const restrictScale = this.rawHeight / this.rawWidth;
144
- const newScale = size.height / size.width;
145
- if (newScale > restrictScale) {
146
- size.height = size.width * restrictScale;
147
- }
148
- else {
149
- size.width = size.height / restrictScale;
150
- }
151
- const oldSize = this.oldSize ? this.oldSize : size;
152
- setTimeout(() => {
153
- this.changeVideoStyle(size, oldSize, svgRootClass);
154
- }, 200);
155
- this.root.attr('width', size.width);
156
- this.root.attr('height', size.height);
157
- if (!this.root.attr('viewBox')) {
158
- const sx = size.width / this.rawWidth;
159
- this.root.find('g:first').attr('transform', `scale(${sx})`);
160
- }
161
- this.oldSize = size;
162
- }
163
- changeVideoStyle(size, oldSize, svgRootClass) {
164
- const self = this;
165
- $('div.' + svgRootClass + ' video').each(function () {
166
- const videoWidth = size.width / oldSize.width * $(this).width();
167
- if (videoWidth > $('body').width() || videoWidth.toFixed(0) === $('body').width().toFixed(0)) {
168
- return;
169
- }
170
- $(this).css('width', videoWidth + 'px');
171
- $(this).css('height', size.height / oldSize.height * $(this).height() + 'px');
172
- let videoLeft = size.width * Number($(this).attr('scareX'));
173
- let videoTop = size.height * Number($(this).attr('scareY'));
174
- if (self.hostContainerId) {
175
- const hostContainerObject = $('#' + self.hostContainerId);
176
- if (hostContainerObject.length) {
177
- const hostContainerWidth = hostContainerObject[0].clientWidth;
178
- const hostContainerHight = hostContainerObject[0].clientHeight;
179
- videoLeft = videoLeft + (hostContainerWidth - size.width) / 2;
180
- videoTop = videoTop + (hostContainerHight - size.height) / 2;
181
- }
182
- }
183
- $(this).css('left', videoLeft + 'px');
184
- $(this).css('top', videoTop + 'px');
185
- });
186
- }
187
- /**
188
- * 保证在显示区域内横向铺满
189
- * @param size 显示区域大小
190
- */
191
- horizontalStretch(size) {
192
- if (!size.isReal()) {
193
- throw new Error('size is not real.');
194
- }
195
- this.checkIsLoaded();
196
- size.height = (size.width / this.rawWidth) * this.rawHeight;
197
- this.root.attr('width', size.width);
198
- this.root.attr('height', size.height);
199
- if (!this.root.attr('viewBox')) {
200
- const sx = size.width / this.rawWidth;
201
- this.root.find('g:first').attr('transform', `scale(${sx})`);
202
- }
203
- }
204
- initElementState() {
205
- forEach(this.elements, element => {
206
- if (element instanceof ReadableElement) {
207
- element.init(element.readVariableName);
208
- }
209
- else if (element instanceof HistoricalCurveElement) {
210
- element.initElementStatus();
211
- }
212
- });
213
- this.logger.debug('[GUI] Main element enabled.');
214
- }
215
- getVariableNames() {
216
- const variableNames = new Array();
217
- forEach(this.elements, element => {
218
- if (element instanceof ReadableElement) {
219
- const variableName = element.readVariableName;
220
- if (variableName && !variableNames.find(v => isEqual(variableName, v))) {
221
- variableNames.push(element.readVariableName);
222
- }
223
- }
224
- });
225
- return variableNames;
226
- }
227
- reportVariableStates(states) {
228
- this.checkIsLoaded();
229
- each(states, state => {
230
- each(this.elements, element => {
231
- if (element instanceof ReadableElement) {
232
- const variableName = element.readVariableName;
233
- if (variableName && variableName === state.variableName) {
234
- element.reportStateChanged(state);
235
- }
236
- }
237
- });
238
- });
239
- }
240
- reportVariableValues(values) {
241
- this.checkIsLoaded();
242
- each(values, value => {
243
- each(this.elements, e => {
244
- if (e instanceof ReadableElement) {
245
- if (e.readVariableName === value.variableName) {
246
- e.reportValueChanged(value);
247
- }
248
- }
249
- });
250
- });
251
- }
252
- dispose() {
253
- each(this.elements, e => {
254
- if (e instanceof HistoricalCurveElement || e instanceof VideoElement
255
- || e instanceof WeatherElement || e instanceof NumericalDisplayElement || e instanceof TextElement) {
256
- e.dispose();
257
- }
258
- });
259
- }
260
- checkIsLoaded() {
261
- if (!this.isLoaded) {
262
- throw new Error('The Main Element is not loaded.please call load method first.');
263
- }
264
- }
265
- initBackground() {
266
- const settings = this.root.data('model');
267
- if (settings) {
268
- const background = settings.background;
269
- switch (background.fillType) {
270
- case ViewBackgroundFillType.SolidColor:
271
- if (background.solidColor) {
272
- const backgroundElement = $(document.createElementNS('http://www.w3.org/2000/svg', 'rect')).attr({
273
- width: String(this.rawWidth), height: String(this.rawHeight), fill: background.solidColor
274
- });
275
- this.root.prepend(backgroundElement);
276
- }
277
- break;
278
- case ViewBackgroundFillType.Image:
279
- if (background.imageId) {
280
- this.root.prepend(this.getImageEl(background.imageId));
281
- }
282
- break;
283
- case ViewBackgroundFillType.Graph:
284
- if (background.graphSetting && background.graphSetting.id > 0) {
285
- const stateElement = new GraphStateElement(background.graphSetting, this.rawWidth, this.rawHeight, this.context.configStore.graphStore, this.logger);
286
- stateElement.switchToState(0);
287
- this.root.prepend(stateElement.Element);
288
- const backgroundElement = $(document.createElementNS('http://www.w3.org/2000/svg', 'rect')).attr({
289
- width: String(this.rawWidth), height: String(this.rawHeight), fill: '#fff'
290
- });
291
- this.root.prepend(backgroundElement);
292
- }
293
- break;
294
- }
295
- }
296
- }
297
- getImageEl(imageId) {
298
- const imageElement = document.createElementNS('http://www.w3.org/2000/svg', 'image');
299
- imageElement.setAttribute('width', this.rawWidth + '');
300
- imageElement.setAttribute('height', this.rawHeight + '');
301
- imageElement.setAttribute('fill', 'none');
302
- imageElement.setAttribute('preserveAspectRatio', 'none');
303
- imageElement.setAttribute('crossorigin', 'anonymous');
304
- imageElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', this.context.configStore.imageStore.getImageUrl(imageId));
305
- return imageElement;
306
- }
307
- }
1
+ import { each, forEach, isEqual } from 'lodash';
2
+ import { LOCALIZATION } from '../localization';
3
+ import { LOGGER_SERVICE_TOKEN } from '../logger';
4
+ import { Size } from '../model';
5
+ import { ViewBackgroundFillType } from '../model/settings/background/view-background-fill-type';
6
+ import { GuiConsts } from '../shared';
7
+ import { BarGraphElement } from './bar-graph-element';
8
+ import { ReadableElement } from './base';
9
+ import { CharacterDisplayElement } from './character-display/character-display-element';
10
+ import { DatetimeDisplayElement } from './datetime-display/datetime-display-element';
11
+ import { HistoricalCurveElement } from './historical-curve/historical-curve.element';
12
+ import { MeterElement } from './meter-element';
13
+ import { NumericalDisplayElement } from './numerical-display/numerical-display-element';
14
+ import { PipeElement } from './pipe/pipe-element';
15
+ import { RingGraphElement } from './ring-graph/ring-graph-element';
16
+ import { GraphStateElement } from './shared/graph/graph-state-element';
17
+ import { ImageElement } from './static-elements/image-element';
18
+ import { TextElement } from './static-elements/text-element';
19
+ import { SwitchIndicatorLightElement } from './switch-indicator-light/switch-indicator-light-element';
20
+ import { EllipseElement } from './vector-graphics/ellipse-element';
21
+ import { RectangleElement } from './vector-graphics/rectangle-element';
22
+ import { SectorElement } from './vector-graphics/sector-element';
23
+ import { ViewOperationElement } from './view-operation/view-operation.element';
24
+ import { StraightLineElement } from './vector-graphics/straight-line-element';
25
+ import { PolyLineElement } from './vector-graphics/poly-line-element';
26
+ import { PolygonElement } from './vector-graphics/polygon-element';
27
+ import { HyperlinkElement } from './static-elements/hyperlink-element';
28
+ import { VideoElement } from './video/video-element';
29
+ import { WeatherElement } from './weather/weater-element';
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';
33
+ export class MainElement {
34
+ constructor(injector, bsModalService, context, variableCommunicator, popupViewService, signalRAppId) {
35
+ this.injector = injector;
36
+ this.bsModalService = bsModalService;
37
+ this.context = context;
38
+ this.variableCommunicator = variableCommunicator;
39
+ this.popupViewService = popupViewService;
40
+ this.signalRAppId = signalRAppId;
41
+ this.elements = new Array();
42
+ this.logger = injector.get(LOGGER_SERVICE_TOKEN);
43
+ }
44
+ get rootElement() {
45
+ return this.root[0];
46
+ }
47
+ load(data, overflowVisible = false, guiOptions) {
48
+ this.hostContainerId = guiOptions.hostContainerId;
49
+ if (this.isLoaded) {
50
+ throw new Error('The Main Element already loaded.');
51
+ }
52
+ this.root = $(data);
53
+ this.root.attr('style', `margin: 0 auto;display: block;${overflowVisible ? 'overflow: visible;' : ''}`);
54
+ // eslint-disable-next-line radix
55
+ this.rawWidth = Number.parseInt(this.root.attr('width'));
56
+ // eslint-disable-next-line radix
57
+ this.rawHeight = Number.parseInt(this.root.attr('height'));
58
+ // TODO 实现一个elementParser解析components.
59
+ const components = this.root.find('[data-model]');
60
+ each(components, element => {
61
+ const category = $(element).data('model').category;
62
+ switch (category) {
63
+ case GuiConsts.components.numericalDisplayKey:
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);
65
+ this.elements.push(numericalDisplayElement);
66
+ break;
67
+ case GuiConsts.components.imageKey:
68
+ 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));
69
+ break;
70
+ case GuiConsts.components.meterKey:
71
+ this.elements.push(new MeterElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
72
+ break;
73
+ case GuiConsts.components.pipeKey:
74
+ this.elements.push(new PipeElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
75
+ break;
76
+ case GuiConsts.components.switchIndicatorLightKey:
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));
78
+ break;
79
+ case GuiConsts.components.barGraphKey:
80
+ this.elements.push(new BarGraphElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
81
+ break;
82
+ case GuiConsts.components.toggleViewKey:
83
+ case GuiConsts.components.viewOperationElement:
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));
85
+ break;
86
+ case GuiConsts.components.characterKey:
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));
88
+ break;
89
+ case GuiConsts.components.textKey:
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));
91
+ break;
92
+ case GuiConsts.components.hyperlinkKey:
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));
94
+ break;
95
+ case GuiConsts.components.straightLineKey:
96
+ this.elements.push(new StraightLineElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
97
+ break;
98
+ case GuiConsts.components.polyLineKey:
99
+ this.elements.push(new PolyLineElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
100
+ break;
101
+ case GuiConsts.components.ellipseKey:
102
+ this.elements.push(new EllipseElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
103
+ break;
104
+ case GuiConsts.components.rectangleKey:
105
+ this.elements.push(new RectangleElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
106
+ break;
107
+ case GuiConsts.components.sectorkey:
108
+ this.elements.push(new SectorElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
109
+ break;
110
+ case GuiConsts.components.datetimeDisplayKey:
111
+ this.elements.push(new DatetimeDisplayElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId));
112
+ break;
113
+ case GuiConsts.components.historicalCurveKey:
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));
115
+ break;
116
+ case GuiConsts.components.ringGraphKey:
117
+ this.elements.push(new RingGraphElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
118
+ break;
119
+ case GuiConsts.components.polygonKey:
120
+ this.elements.push(new PolygonElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
121
+ break;
122
+ case GuiConsts.components.videokey:
123
+ 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));
124
+ break;
125
+ case GuiConsts.components.tableKey:
126
+ this.elements.push(new PolygonElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
127
+ break;
128
+ case GuiConsts.components.weatherKey:
129
+ this.elements.push(new WeatherElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.weatherService, this.signalRAppId));
130
+ break;
131
+ case GuiConsts.components.airQualityKey:
132
+ this.elements.push(new AirQualityElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.weatherService, this.signalRAppId));
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;
140
+ }
141
+ });
142
+ this.initBackground();
143
+ this.isLoaded = true;
144
+ this.logger.debug('[GUI] Main element loaded.');
145
+ }
146
+ /**
147
+ * 保证在显示区域内显示画面所有内容,等比缩放画面大小以铺满整个显示区域
148
+ * @param size 显示区域大小
149
+ */
150
+ uniformStretch(size, svgRootClass) {
151
+ if (!size.isReal()) {
152
+ throw new Error('size is not real.');
153
+ }
154
+ this.checkIsLoaded();
155
+ const restrictScale = this.rawHeight / this.rawWidth;
156
+ const newScale = size.height / size.width;
157
+ if (newScale > restrictScale) {
158
+ size.height = size.width * restrictScale;
159
+ }
160
+ else {
161
+ size.width = size.height / restrictScale;
162
+ }
163
+ const oldSize = this.oldSize ? this.oldSize : size;
164
+ setTimeout(() => {
165
+ this.changeVideoStyle(size, oldSize, svgRootClass);
166
+ }, 200);
167
+ this.root.attr('width', size.width);
168
+ this.root.attr('height', size.height);
169
+ if (!this.root.attr('viewBox')) {
170
+ const sx = size.width / this.rawWidth;
171
+ this.root.find('g:first').attr('transform', `scale(${sx})`);
172
+ }
173
+ this.oldSize = size;
174
+ }
175
+ changeVideoStyle(size, oldSize, svgRootClass) {
176
+ const self = this;
177
+ $('div.' + svgRootClass + ' video').each(function () {
178
+ const videoWidth = size.width / oldSize.width * $(this).width();
179
+ if (videoWidth > $('body').width() || videoWidth.toFixed(0) === $('body').width().toFixed(0)) {
180
+ return;
181
+ }
182
+ $(this).css('width', videoWidth + 'px');
183
+ $(this).css('height', size.height / oldSize.height * $(this).height() + 'px');
184
+ let videoLeft = size.width * Number($(this).attr('scareX'));
185
+ let videoTop = size.height * Number($(this).attr('scareY'));
186
+ if (self.hostContainerId) {
187
+ const hostContainerObject = $('#' + self.hostContainerId);
188
+ if (hostContainerObject.length) {
189
+ const hostContainerWidth = hostContainerObject[0].clientWidth;
190
+ const hostContainerHight = hostContainerObject[0].clientHeight;
191
+ videoLeft = videoLeft + (hostContainerWidth - size.width) / 2;
192
+ videoTop = videoTop + (hostContainerHight - size.height) / 2;
193
+ }
194
+ }
195
+ $(this).css('left', videoLeft + 'px');
196
+ $(this).css('top', videoTop + 'px');
197
+ });
198
+ }
199
+ /**
200
+ * 保证在显示区域内横向铺满
201
+ * @param size 显示区域大小
202
+ */
203
+ horizontalStretch(size) {
204
+ if (!size.isReal()) {
205
+ throw new Error('size is not real.');
206
+ }
207
+ this.checkIsLoaded();
208
+ size.height = (size.width / this.rawWidth) * this.rawHeight;
209
+ this.root.attr('width', size.width);
210
+ this.root.attr('height', size.height);
211
+ if (!this.root.attr('viewBox')) {
212
+ const sx = size.width / this.rawWidth;
213
+ this.root.find('g:first').attr('transform', `scale(${sx})`);
214
+ }
215
+ }
216
+ initElementState() {
217
+ forEach(this.elements, element => {
218
+ if (element instanceof ReadableElement) {
219
+ element.init(element.readVariableName || element.maxVariableName || element.minVariableName);
220
+ }
221
+ else if (element instanceof HistoricalCurveElement) {
222
+ element.initElementStatus();
223
+ }
224
+ });
225
+ this.logger.debug('[GUI] Main element enabled.');
226
+ }
227
+ getVariableNames() {
228
+ const variableNames = new Array();
229
+ forEach(this.elements, element => {
230
+ var _a, _b;
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;
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
+ }
244
+ if (variableName && !variableNames.find(v => isEqual(variableName, v))) {
245
+ variableNames.push(element.readVariableName);
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
+ }
258
+ }
259
+ });
260
+ return variableNames;
261
+ }
262
+ reportVariableStates(states) {
263
+ this.checkIsLoaded();
264
+ each(states, state => {
265
+ each(this.elements, element => {
266
+ if (element instanceof ReadableElement) {
267
+ const variableName = element.readVariableName;
268
+ if (variableName && variableName === state.variableName) {
269
+ element.reportStateChanged(state);
270
+ }
271
+ }
272
+ });
273
+ });
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
+ }
286
+ reportVariableValues(values) {
287
+ this.checkIsLoaded();
288
+ each(values, value => {
289
+ each(this.elements, e => {
290
+ var _a;
291
+ if (e instanceof ReadableElement) {
292
+ if ((value.variableName && (e.readVariableName === value.variableName ||
293
+ e.minVariableName === value.variableName || e.maxVariableName === value.variableName))) {
294
+ e.reportValueChanged(value);
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
+ }
313
+ }
314
+ });
315
+ });
316
+ }
317
+ dispose() {
318
+ each(this.elements, e => {
319
+ if (e instanceof HistoricalCurveElement || e instanceof VideoElement
320
+ || e instanceof WeatherElement || e instanceof NumericalDisplayElement || e instanceof TextElement
321
+ || e instanceof AirQualityElement || e instanceof SwitchIndicatorLightElement || e instanceof ScrollAlarmElement) {
322
+ e.dispose();
323
+ }
324
+ });
325
+ }
326
+ checkIsLoaded() {
327
+ if (!this.isLoaded) {
328
+ throw new Error('The Main Element is not loaded.please call load method first.');
329
+ }
330
+ }
331
+ initBackground() {
332
+ const settings = this.root.data('model');
333
+ if (settings) {
334
+ const background = settings.background;
335
+ switch (background.fillType) {
336
+ case ViewBackgroundFillType.SolidColor:
337
+ if (background.solidColor) {
338
+ const backgroundElement = $(document.createElementNS('http://www.w3.org/2000/svg', 'rect')).attr({
339
+ width: String(this.rawWidth), height: String(this.rawHeight), fill: background.solidColor
340
+ });
341
+ this.root.prepend(backgroundElement);
342
+ }
343
+ break;
344
+ case ViewBackgroundFillType.Image:
345
+ if (background.imageId) {
346
+ this.root.prepend(this.getImageEl(background.imageId));
347
+ }
348
+ break;
349
+ case ViewBackgroundFillType.Graph:
350
+ if (background.graphSetting && background.graphSetting.id > 0) {
351
+ const stateElement = new GraphStateElement(background.graphSetting, this.rawWidth, this.rawHeight, this.context.configStore.graphStore, this.logger);
352
+ stateElement.switchToState(0);
353
+ this.root.prepend(stateElement.Element);
354
+ const backgroundElement = $(document.createElementNS('http://www.w3.org/2000/svg', 'rect')).attr({
355
+ width: String(this.rawWidth), height: String(this.rawHeight), fill: '#fff'
356
+ });
357
+ this.root.prepend(backgroundElement);
358
+ }
359
+ break;
360
+ }
361
+ }
362
+ }
363
+ getImageEl(imageId) {
364
+ const imageElement = document.createElementNS('http://www.w3.org/2000/svg', 'image');
365
+ imageElement.setAttribute('width', this.rawWidth + '');
366
+ imageElement.setAttribute('height', this.rawHeight + '');
367
+ imageElement.setAttribute('fill', 'none');
368
+ imageElement.setAttribute('preserveAspectRatio', 'none');
369
+ imageElement.setAttribute('crossorigin', 'anonymous');
370
+ imageElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', this.context.configStore.imageStore.getImageUrl(imageId));
371
+ return imageElement;
372
+ }
373
+ }