@mxtommy/kip 1.2.3 → 1.3.0

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 (314) hide show
  1. package/.angulardoc.json +3 -3
  2. package/CHANGELOG.md +145 -135
  3. package/CONTRIBUTORS.md +16 -16
  4. package/README.md +102 -102
  5. package/angular.json +162 -153
  6. package/karma.conf.js +31 -31
  7. package/package.json +87 -84
  8. package/public/3rdpartylicenses.txt +301 -21
  9. package/public/assets/NoSleep.min.js +1 -1
  10. package/public/assets/fontawesome6/css/all.min.css +6 -0
  11. package/public/assets/fontawesome6/webfonts/fa-brands-400.ttf +0 -0
  12. package/public/assets/fontawesome6/webfonts/fa-brands-400.woff2 +0 -0
  13. package/public/assets/fontawesome6/webfonts/fa-regular-400.ttf +0 -0
  14. package/public/assets/fontawesome6/webfonts/fa-regular-400.woff2 +0 -0
  15. package/public/assets/fontawesome6/webfonts/fa-solid-900.ttf +0 -0
  16. package/public/assets/fontawesome6/webfonts/fa-solid-900.woff2 +0 -0
  17. package/public/assets/fontawesome6/webfonts/fa-v4compatibility.ttf +0 -0
  18. package/public/assets/fontawesome6/webfonts/fa-v4compatibility.woff2 +0 -0
  19. package/public/assets/icon-192x192.png +0 -0
  20. package/public/assets/icon-256x256.png +0 -0
  21. package/public/assets/icon-384x384.png +0 -0
  22. package/public/assets/icon-512x512.png +0 -0
  23. package/public/assets/steelseries-min.js +25 -25
  24. package/public/assets/steelseries-min.js.map +8 -8
  25. package/public/assets/steelseries.js +15834 -15834
  26. package/public/assets/svg-autopilot-inkscape-plain.svg +983 -983
  27. package/public/assets/svg-wind-inkscape.svg +1358 -1358
  28. package/public/assets/tween.js +381 -381
  29. package/public/index.html +19 -20
  30. package/public/main-es2018.98175eb4c61ccaf7eb17.js +1 -0
  31. package/public/main-es5.98175eb4c61ccaf7eb17.js +1 -0
  32. package/public/manifest.json +33 -0
  33. package/public/polyfills-es2018.3a61665863c173cd6ba3.js +1 -0
  34. package/public/polyfills-es5.44827ae4ff4e41de51fb.js +1 -0
  35. package/public/runtime-es2018.baedb88c6d2abacae2b8.js +1 -0
  36. package/public/runtime-es5.baedb88c6d2abacae2b8.js +1 -0
  37. package/public/styles.b92ae2c466c89712209d.css +5 -0
  38. package/src/app/alarm-menu/alarm-menu.component.html +55 -55
  39. package/src/app/alarm-menu/alarm-menu.component.scss +52 -53
  40. package/src/app/alarm-menu/alarm-menu.component.spec.ts +25 -25
  41. package/src/app/alarm-menu/alarm-menu.component.ts +186 -186
  42. package/src/app/app-help/app-help.component.css +4 -4
  43. package/src/app/app-help/app-help.component.html +135 -135
  44. package/src/app/app-help/app-help.component.ts +45 -45
  45. package/src/app/app.component.css +39 -39
  46. package/src/app/app.component.html +93 -93
  47. package/src/app/app.component.scss +79 -79
  48. package/src/app/app.component.spec.ts +32 -32
  49. package/src/app/app.component.ts +191 -192
  50. package/src/app/app.module.ts +200 -200
  51. package/src/app/config.blank.const.ts +51 -51
  52. package/src/app/config.blank.notification.const.ts +19 -19
  53. package/src/app/config.blank.units.const.ts +23 -23
  54. package/src/app/config.demo.const.ts +383 -383
  55. package/src/app/data-browser/data-browser.component.css +29 -29
  56. package/src/app/data-browser/data-browser.component.html +44 -44
  57. package/src/app/data-browser/data-browser.component.spec.ts +25 -25
  58. package/src/app/data-browser/data-browser.component.ts +91 -91
  59. package/src/app/data-browser-row/data-browser-row-unit-modal.html +17 -17
  60. package/src/app/data-browser-row/data-browser-row.component.css +9 -9
  61. package/src/app/data-browser-row/data-browser-row.component.html +4 -4
  62. package/src/app/data-browser-row/data-browser-row.component.ts +78 -78
  63. package/src/app/data-set.service.ts +273 -273
  64. package/src/app/dynamic-widget.directive.ts +11 -11
  65. package/src/app/gauge-steel/gauge-steel.component.css +4 -4
  66. package/src/app/gauge-steel/gauge-steel.component.html +4 -4
  67. package/src/app/gauge-steel/gauge-steel.component.spec.ts +25 -25
  68. package/src/app/gauge-steel/gauge-steel.component.ts +282 -282
  69. package/src/app/gauges-module/base-gauge.ts +300 -300
  70. package/src/app/gauges-module/linear-gauge.ts +49 -49
  71. package/src/app/gauges-module/radial-gauge.ts +47 -47
  72. package/src/app/layout-split/layout-split.component.html +30 -30
  73. package/src/app/layout-split/layout-split.component.scss +33 -33
  74. package/src/app/layout-split/layout-split.component.spec.ts +25 -25
  75. package/src/app/layout-split/layout-split.component.ts +59 -59
  76. package/src/app/layout-splits.service.ts +284 -284
  77. package/src/app/modal-path-selector/modal-path-selector.component.html +62 -62
  78. package/src/app/modal-path-selector/modal-path-selector.component.scss +39 -39
  79. package/src/app/modal-path-selector/modal-path-selector.component.spec.ts +25 -25
  80. package/src/app/modal-path-selector/modal-path-selector.component.ts +132 -132
  81. package/src/app/modal-widget/modal-widget.component.css +32 -32
  82. package/src/app/modal-widget/modal-widget.component.html +341 -341
  83. package/src/app/modal-widget/modal-widget.component.spec.ts +25 -25
  84. package/src/app/modal-widget/modal-widget.component.ts +84 -84
  85. package/src/app/notifications.service.ts +392 -392
  86. package/src/app/object-keys.pipe.spec.ts +8 -8
  87. package/src/app/object-keys.pipe.ts +13 -13
  88. package/src/app/reset-config/reset-config.component.html +3 -3
  89. package/src/app/reset-config/reset-config.component.spec.ts +25 -25
  90. package/src/app/reset-config/reset-config.component.ts +31 -31
  91. package/src/app/root-display/root-display.component.html +4 -4
  92. package/src/app/root-display/root-display.component.spec.ts +25 -25
  93. package/src/app/root-display/root-display.component.ts +57 -57
  94. package/src/app/safe.pipe.ts +15 -15
  95. package/src/app/settings/settings.component.css +9 -9
  96. package/src/app/settings/settings.component.html +25 -25
  97. package/src/app/settings/settings.component.spec.ts +25 -25
  98. package/src/app/settings/settings.component.ts +22 -22
  99. package/src/app/settings-config/settings-config.component.css +38 -38
  100. package/src/app/settings-config/settings-config.component.spec.ts +25 -25
  101. package/src/app/settings-config/settings-config.component.ts +161 -161
  102. package/src/app/settings-datasets/settings-datasets.component.html +43 -43
  103. package/src/app/settings-datasets/settings-datasets.component.scss +39 -39
  104. package/src/app/settings-datasets/settings-datasets.component.spec.ts +25 -25
  105. package/src/app/settings-datasets/settings-datasets.component.ts +98 -98
  106. package/src/app/settings-datasets/settings-datasets.modal.html +54 -54
  107. package/src/app/settings-notifications/settings-notifications.component.html +65 -65
  108. package/src/app/settings-notifications/settings-notifications.component.spec.ts +25 -25
  109. package/src/app/settings-notifications/settings-notifications.component.ts +29 -29
  110. package/src/app/settings-signalk/settings-signalk.component.html +8 -8
  111. package/src/app/settings-signalk/settings-signalk.component.spec.ts +25 -25
  112. package/src/app/settings-signalk/settings-signalk.component.ts +174 -174
  113. package/src/app/settings-units/settings-units.component.css +4 -4
  114. package/src/app/settings-units/settings-units.component.html +19 -19
  115. package/src/app/settings-units/settings-units.component.spec.ts +25 -25
  116. package/src/app/settings-units/settings-units.component.ts +62 -62
  117. package/src/app/settings-zones/settings-zones.component.css +21 -21
  118. package/src/app/settings-zones/settings-zones.component.html +70 -70
  119. package/src/app/settings-zones/settings-zones.modal.html +38 -38
  120. package/src/app/signalk-connection.service.ts +344 -344
  121. package/src/app/signalk-delta.service.spec.ts +15 -15
  122. package/src/app/signalk-delta.service.ts +97 -97
  123. package/src/app/signalk-full.service.ts +99 -99
  124. package/src/app/signalk-interfaces.ts +129 -129
  125. package/src/app/signalk-requests.service.spec.ts +12 -12
  126. package/src/app/signalk-requests.service.ts +180 -180
  127. package/src/app/svg-autopilot/svg-autopilot.component.html +1036 -1036
  128. package/src/app/svg-autopilot/svg-autopilot.component.spec.ts +25 -25
  129. package/src/app/svg-autopilot/svg-autopilot.component.ts +174 -174
  130. package/src/app/svg-simple-linear-gauge/svg-simple-linear-gauge.component.html +119 -119
  131. package/src/app/svg-simple-linear-gauge/svg-simple-linear-gauge.component.spec.ts +25 -25
  132. package/src/app/svg-simple-linear-gauge/svg-simple-linear-gauge.component.ts +49 -49
  133. package/src/app/svg-wind/svg-wind.component.html +969 -969
  134. package/src/app/svg-wind/svg-wind.component.scss +76 -76
  135. package/src/app/svg-wind/svg-wind.component.spec.ts +25 -25
  136. package/src/app/svg-wind/svg-wind.component.ts +280 -280
  137. package/src/app/unit-window/unit-window.component.css +37 -37
  138. package/src/app/unit-window/unit-window.component.html +8 -8
  139. package/src/app/unit-window/unit-window.component.spec.ts +25 -25
  140. package/src/app/unit-window/unit-window.component.ts +134 -134
  141. package/src/app/unit-window/unit-window.modal.html +24 -24
  142. package/src/app/units.service.ts +300 -300
  143. package/src/app/widget-autopilot/widget-autopilot.component.html +78 -85
  144. package/src/app/widget-autopilot/widget-autopilot.component.scss +191 -191
  145. package/src/app/widget-autopilot/widget-autopilot.component.spec.ts +25 -25
  146. package/src/app/widget-autopilot/widget-autopilot.component.ts +774 -781
  147. package/src/app/widget-blank/widget-blank.component.scss +21 -22
  148. package/src/app/widget-blank/widget-blank.component.spec.ts +25 -25
  149. package/src/app/widget-blank/widget-blank.component.ts +17 -17
  150. package/src/app/widget-gauge/widget-gauge.component.css +25 -25
  151. package/src/app/widget-gauge/widget-gauge.component.html +29 -29
  152. package/src/app/widget-gauge/widget-gauge.component.spec.ts +25 -25
  153. package/src/app/widget-gauge/widget-gauge.component.ts +120 -120
  154. package/src/app/widget-gauge-ng-linear/widget-gauge-ng-linear.component.html +126 -126
  155. package/src/app/widget-gauge-ng-linear/widget-gauge-ng-linear.component.scss +94 -93
  156. package/src/app/widget-gauge-ng-linear/widget-gauge-ng-linear.component.spec.ts +25 -25
  157. package/src/app/widget-gauge-ng-linear/widget-gauge-ng-linear.component.ts +424 -424
  158. package/src/app/widget-gauge-ng-radial/widget-gauge-ng-radial.component.html +1 -1
  159. package/src/app/widget-gauge-ng-radial/widget-gauge-ng-radial.component.scss +69 -69
  160. package/src/app/widget-gauge-ng-radial/widget-gauge-ng-radial.component.spec.ts +25 -25
  161. package/src/app/widget-gauge-ng-radial/widget-gauge-ng-radial.component.ts +553 -553
  162. package/src/app/widget-historical/widget-historical.component.html +14 -14
  163. package/src/app/widget-historical/widget-historical.component.spec.ts +25 -25
  164. package/src/app/widget-historical/widget-historical.component.ts +306 -306
  165. package/src/app/widget-iframe/widget-iframe.component.css +11 -11
  166. package/src/app/widget-iframe/widget-iframe.component.html +21 -21
  167. package/src/app/widget-iframe/widget-iframe.component.spec.ts +25 -25
  168. package/src/app/widget-iframe/widget-iframe.component.ts +63 -63
  169. package/src/app/widget-list.service.ts +135 -135
  170. package/src/app/widget-manager.service.ts +141 -141
  171. package/src/app/widget-numeric/widget-numeric.component.html +1 -1
  172. package/src/app/widget-numeric/widget-numeric.component.scss +3 -3
  173. package/src/app/widget-numeric/widget-numeric.component.spec.ts +25 -25
  174. package/src/app/widget-simple-linear/widget-simple-linear.component.html +28 -28
  175. package/src/app/widget-simple-linear/widget-simple-linear.component.scss +64 -64
  176. package/src/app/widget-simple-linear/widget-simple-linear.component.spec.ts +25 -25
  177. package/src/app/widget-simple-linear/widget-simple-linear.component.ts +199 -199
  178. package/src/app/widget-state/widget-state.component.html +27 -27
  179. package/src/app/widget-state/widget-state.component.scss +68 -68
  180. package/src/app/widget-state/widget-state.component.spec.ts +25 -25
  181. package/src/app/widget-state/widget-state.component.ts +178 -178
  182. package/src/app/widget-switch/widget-switch.component.css +69 -69
  183. package/src/app/widget-switch/widget-switch.component.html +17 -17
  184. package/src/app/widget-switch/widget-switch.component.spec.ts +25 -25
  185. package/src/app/widget-switch/widget-switch.component.ts +134 -134
  186. package/src/app/widget-text-generic/widget-text-generic.component.html +9 -9
  187. package/src/app/widget-text-generic/widget-text-generic.component.spec.ts +25 -25
  188. package/src/app/widget-tutorial/widget-tutorial.component.html +34 -34
  189. package/src/app/widget-tutorial/widget-tutorial.component.spec.ts +25 -25
  190. package/src/app/widget-tutorial/widget-tutorial.component.ts +18 -18
  191. package/src/app/widget-unknown/widget-unknown.component.spec.ts +25 -25
  192. package/src/app/widget-wind/widget-wind.component.css +23 -23
  193. package/src/app/widget-wind/widget-wind.component.html +20 -20
  194. package/src/app/widget-wind/widget-wind.component.spec.ts +25 -25
  195. package/src/app/widget-wind/widget-wind.component.ts +369 -369
  196. package/src/assets/NoSleep.min.js +1 -1
  197. package/src/assets/fontawesome6/css/all.min.css +6 -0
  198. package/src/assets/fontawesome6/webfonts/fa-brands-400.ttf +0 -0
  199. package/src/assets/fontawesome6/webfonts/fa-brands-400.woff2 +0 -0
  200. package/src/assets/fontawesome6/webfonts/fa-regular-400.ttf +0 -0
  201. package/src/assets/fontawesome6/webfonts/fa-regular-400.woff2 +0 -0
  202. package/src/assets/fontawesome6/webfonts/fa-solid-900.ttf +0 -0
  203. package/src/assets/fontawesome6/webfonts/fa-solid-900.woff2 +0 -0
  204. package/src/assets/fontawesome6/webfonts/fa-v4compatibility.ttf +0 -0
  205. package/src/assets/fontawesome6/webfonts/fa-v4compatibility.woff2 +0 -0
  206. package/src/assets/icon-192x192.png +0 -0
  207. package/src/assets/icon-256x256.png +0 -0
  208. package/src/assets/icon-384x384.png +0 -0
  209. package/src/assets/icon-512x512.png +0 -0
  210. package/src/assets/steelseries-min.js +25 -25
  211. package/src/assets/steelseries-min.js.map +8 -8
  212. package/src/assets/steelseries.js +15834 -15834
  213. package/src/assets/svg-autopilot-inkscape-plain.svg +983 -983
  214. package/src/assets/svg-wind-inkscape.svg +1358 -1358
  215. package/src/assets/tween.js +381 -381
  216. package/src/index.html +20 -20
  217. package/src/main.ts +11 -11
  218. package/src/manifest.json +33 -0
  219. package/src/polyfills.ts +80 -76
  220. package/src/styles.scss +11 -11
  221. package/src/themes/darkBlueTheme.scss +117 -116
  222. package/src/themes/defaultTheme.scss +50 -49
  223. package/src/themes/highContrastTheme.scss +47 -46
  224. package/src/themes/modernTheme.scss +143 -142
  225. package/src/themes/nightMode.scss +185 -184
  226. package/src/themes/platypusTheme.scss +80 -79
  227. package/src/themes/signalkTheme.scss +112 -111
  228. package/src/tsconfig.app.json +15 -15
  229. package/src/tsconfig.spec.json +20 -20
  230. package/tsconfig.json +23 -23
  231. package/tslint.json +143 -143
  232. package/public/assets/font-awesome/HELP-US-OUT.txt +0 -7
  233. package/public/assets/font-awesome/css/font-awesome.css +0 -2337
  234. package/public/assets/font-awesome/css/font-awesome.min.css +0 -4
  235. package/public/assets/font-awesome/desktop.ini +0 -4
  236. package/public/assets/font-awesome/fonts/FontAwesome.otf +0 -0
  237. package/public/assets/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  238. package/public/assets/font-awesome/fonts/fontawesome-webfont.svg +0 -2671
  239. package/public/assets/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  240. package/public/assets/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  241. package/public/assets/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
  242. package/public/assets/font-awesome/less/animated.less +0 -34
  243. package/public/assets/font-awesome/less/bordered-pulled.less +0 -25
  244. package/public/assets/font-awesome/less/core.less +0 -12
  245. package/public/assets/font-awesome/less/fixed-width.less +0 -6
  246. package/public/assets/font-awesome/less/font-awesome.less +0 -18
  247. package/public/assets/font-awesome/less/icons.less +0 -789
  248. package/public/assets/font-awesome/less/larger.less +0 -13
  249. package/public/assets/font-awesome/less/list.less +0 -19
  250. package/public/assets/font-awesome/less/mixins.less +0 -60
  251. package/public/assets/font-awesome/less/path.less +0 -15
  252. package/public/assets/font-awesome/less/rotated-flipped.less +0 -20
  253. package/public/assets/font-awesome/less/screen-reader.less +0 -5
  254. package/public/assets/font-awesome/less/stacked.less +0 -20
  255. package/public/assets/font-awesome/less/variables.less +0 -800
  256. package/public/assets/font-awesome/scss/_animated.scss +0 -34
  257. package/public/assets/font-awesome/scss/_bordered-pulled.scss +0 -25
  258. package/public/assets/font-awesome/scss/_core.scss +0 -12
  259. package/public/assets/font-awesome/scss/_fixed-width.scss +0 -6
  260. package/public/assets/font-awesome/scss/_icons.scss +0 -789
  261. package/public/assets/font-awesome/scss/_larger.scss +0 -13
  262. package/public/assets/font-awesome/scss/_list.scss +0 -19
  263. package/public/assets/font-awesome/scss/_mixins.scss +0 -60
  264. package/public/assets/font-awesome/scss/_path.scss +0 -15
  265. package/public/assets/font-awesome/scss/_rotated-flipped.scss +0 -20
  266. package/public/assets/font-awesome/scss/_screen-reader.scss +0 -5
  267. package/public/assets/font-awesome/scss/_stacked.scss +0 -20
  268. package/public/assets/font-awesome/scss/_variables.scss +0 -800
  269. package/public/assets/font-awesome/scss/font-awesome.scss +0 -18
  270. package/public/main-es2018.ab0adc5af3ab3e70c849.js +0 -1
  271. package/public/main-es5.ab0adc5af3ab3e70c849.js +0 -1
  272. package/public/polyfills-es2018.713f95af1f028e444854.js +0 -1
  273. package/public/polyfills-es5.c78877945523541d2597.js +0 -1
  274. package/public/runtime-es2018.a4dadbc03350107420a4.js +0 -1
  275. package/public/runtime-es5.a4dadbc03350107420a4.js +0 -1
  276. package/public/styles.71bb0d04cad96b5efbe1.css +0 -19
  277. package/src/assets/font-awesome/HELP-US-OUT.txt +0 -7
  278. package/src/assets/font-awesome/css/font-awesome.css +0 -2337
  279. package/src/assets/font-awesome/css/font-awesome.min.css +0 -4
  280. package/src/assets/font-awesome/desktop.ini +0 -4
  281. package/src/assets/font-awesome/fonts/FontAwesome.otf +0 -0
  282. package/src/assets/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  283. package/src/assets/font-awesome/fonts/fontawesome-webfont.svg +0 -2671
  284. package/src/assets/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  285. package/src/assets/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  286. package/src/assets/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
  287. package/src/assets/font-awesome/less/animated.less +0 -34
  288. package/src/assets/font-awesome/less/bordered-pulled.less +0 -25
  289. package/src/assets/font-awesome/less/core.less +0 -12
  290. package/src/assets/font-awesome/less/fixed-width.less +0 -6
  291. package/src/assets/font-awesome/less/font-awesome.less +0 -18
  292. package/src/assets/font-awesome/less/icons.less +0 -789
  293. package/src/assets/font-awesome/less/larger.less +0 -13
  294. package/src/assets/font-awesome/less/list.less +0 -19
  295. package/src/assets/font-awesome/less/mixins.less +0 -60
  296. package/src/assets/font-awesome/less/path.less +0 -15
  297. package/src/assets/font-awesome/less/rotated-flipped.less +0 -20
  298. package/src/assets/font-awesome/less/screen-reader.less +0 -5
  299. package/src/assets/font-awesome/less/stacked.less +0 -20
  300. package/src/assets/font-awesome/less/variables.less +0 -800
  301. package/src/assets/font-awesome/scss/_animated.scss +0 -34
  302. package/src/assets/font-awesome/scss/_bordered-pulled.scss +0 -25
  303. package/src/assets/font-awesome/scss/_core.scss +0 -12
  304. package/src/assets/font-awesome/scss/_fixed-width.scss +0 -6
  305. package/src/assets/font-awesome/scss/_icons.scss +0 -789
  306. package/src/assets/font-awesome/scss/_larger.scss +0 -13
  307. package/src/assets/font-awesome/scss/_list.scss +0 -19
  308. package/src/assets/font-awesome/scss/_mixins.scss +0 -60
  309. package/src/assets/font-awesome/scss/_path.scss +0 -15
  310. package/src/assets/font-awesome/scss/_rotated-flipped.scss +0 -20
  311. package/src/assets/font-awesome/scss/_screen-reader.scss +0 -5
  312. package/src/assets/font-awesome/scss/_stacked.scss +0 -20
  313. package/src/assets/font-awesome/scss/_variables.scss +0 -800
  314. package/src/assets/font-awesome/scss/font-awesome.scss +0 -18
@@ -1,25 +1,25 @@
1
- import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
2
-
3
- import { SvgAutopilotComponent } from './svg-autopilot.component';
4
-
5
- describe('SvgAutopilotComponent', () => {
6
- let component: SvgAutopilotComponent;
7
- let fixture: ComponentFixture<SvgAutopilotComponent>;
8
-
9
- beforeEach(waitForAsync(() => {
10
- TestBed.configureTestingModule({
11
- declarations: [ SvgAutopilotComponent ]
12
- })
13
- .compileComponents();
14
- }));
15
-
16
- beforeEach(() => {
17
- fixture = TestBed.createComponent(SvgAutopilotComponent);
18
- component = fixture.componentInstance;
19
- fixture.detectChanges();
20
- });
21
-
22
- it('should create', () => {
23
- expect(component).toBeTruthy();
24
- });
25
- });
1
+ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
2
+
3
+ import { SvgAutopilotComponent } from './svg-autopilot.component';
4
+
5
+ describe('SvgAutopilotComponent', () => {
6
+ let component: SvgAutopilotComponent;
7
+ let fixture: ComponentFixture<SvgAutopilotComponent>;
8
+
9
+ beforeEach(waitForAsync(() => {
10
+ TestBed.configureTestingModule({
11
+ declarations: [ SvgAutopilotComponent ]
12
+ })
13
+ .compileComponents();
14
+ }));
15
+
16
+ beforeEach(() => {
17
+ fixture = TestBed.createComponent(SvgAutopilotComponent);
18
+ component = fixture.componentInstance;
19
+ fixture.detectChanges();
20
+ });
21
+
22
+ it('should create', () => {
23
+ expect(component).toBeTruthy();
24
+ });
25
+ });
@@ -1,174 +1,174 @@
1
- import { Component, Input, ViewChild, ElementRef, SimpleChanges } from '@angular/core';
2
- import { trigger, state, style, animate, transition } from '@angular/animations';
3
-
4
-
5
- @Component({
6
- selector: 'app-svg-autopilot',
7
- templateUrl: './svg-autopilot.component.html',
8
- // uses svg-wind SCSS styles
9
- animations: [
10
- trigger('fadeInOut', [
11
- state('connected', style({
12
- opacity: 0,
13
- })),
14
- state('disconnected', style({
15
- opacity: 1,
16
- })),
17
- transition('connected => disconnected', [
18
- animate('.3s')
19
- ]),
20
- transition('disconnected => connected', [
21
- animate('1s')
22
- ]),
23
- ]),
24
- ]
25
- })
26
- export class SvgAutopilotComponent {
27
- // AP screen
28
- @ViewChild('apStencil', {static: true, read: ElementRef}) ApStencil: ElementRef;
29
- @ViewChild('countDown', {static: true, read: ElementRef}) countDown: ElementRef;
30
-
31
- // SVG
32
- @ViewChild('compassAnimate', {static: true, read: ElementRef}) compassAnimate: ElementRef;
33
- @ViewChild('appWindAnimate', {static: true, read: ElementRef}) appWindAnimate: ElementRef;
34
- @ViewChild('rudderPrtAnimate', {static: true, read: ElementRef}) rudderPrtAnimate: ElementRef;
35
- @ViewChild('rudderStbAnimate', {static: true, read: ElementRef}) rudderStbAnimate: ElementRef;
36
-
37
- @Input('compassHeading') compassHeading: number;
38
- @Input('appWindAngle') appWindAngle: number;
39
- @Input('rudderAngle') rudderAngle: number;
40
- @Input('apState') apState: string;
41
- @Input('apTargetAppWindAngle') apTargetAppWindAngle: string;
42
- @Input('isApConnected') isApConnected: boolean;
43
-
44
- constructor() { }
45
-
46
- // compass
47
- oldCompassRotate: number = 0;
48
- newCompassRotate: number = 0;
49
- headingValue: string ="0";
50
-
51
- // Apparent wind
52
- oldAppWindAngle: string = "0";
53
- newAppWindAngle: string = "0";
54
- oldAppWindRotateAngle: string = "0";
55
- newAppWindRotateAngle: string = "0";
56
-
57
- // rudder
58
- oldRudderPrtAngle: number = 0;
59
- newRudderPrtAngle: number = 0;
60
- oldRudderStbAngle: number = 0;
61
- newRudderStbAngle: number = 0;
62
-
63
- activityIconVisibility: string = "hidden;";
64
- errorIconVisibility: string = "hidden";
65
- msgStencilVisibility: string = "hidden";
66
- msgStencilInnerHTML: string = "Empty Message Stencil";
67
- errorStencilVisibility: string = "hidden";
68
- errorStencilInnerText: string = "Empty Error Stencil";
69
- messageVisibility: string = "hidden";
70
- messageInnerText: string = "";
71
-
72
-
73
- ngOnChanges(changes: SimpleChanges) {
74
-
75
- //heading
76
- if (changes.compassHeading) {
77
- if (! changes.compassHeading.firstChange) {
78
- this.oldCompassRotate = this.newCompassRotate;
79
- this.newCompassRotate = changes.compassHeading.currentValue;
80
- this.headingValue = this.newCompassRotate.toFixed(0);
81
- this.compassAnimate.nativeElement.beginElement();
82
- }
83
- }
84
-
85
- //AP State
86
- if (changes.apState) {
87
- if (! changes.apState.firstChange) {
88
- this.apState = this.apState.toUpperCase();
89
- }
90
- }
91
-
92
- //AP Target Apparent Wind Angle
93
- if (changes.apTargetAppWindAngle) {
94
- if (! changes.apTargetAppWindAngle.firstChange) {
95
- this.apTargetAppWindAngle = changes.apTargetAppWindAngle.currentValue.toFixed(0);
96
- }
97
- }
98
-
99
- //appWindAngle
100
- if (changes.appWindAngle) {
101
- if (! changes.appWindAngle.firstChange) {
102
- this.oldAppWindAngle = this.newAppWindAngle;
103
- this.newAppWindAngle = changes.appWindAngle.currentValue.toFixed(0);
104
-
105
- let oldAngle = Number(this.oldAppWindAngle)
106
- let newAngle = Number(this.newAppWindAngle);
107
- let diff = oldAngle - newAngle;
108
-
109
- // only update if on DOM and value rounded changed
110
- if (this.appWindAnimate && (diff != 0)) {
111
- // Special cases to smooth out passing between 359 to/from 0
112
- // if more than half the circle, it could need to go over the 359 / 0 values
113
- if ( Math.abs(diff) > 180 ) {
114
- // In what direction are we moving?
115
- if (Math.sign(diff) == 1) {
116
- if (oldAngle == 359) {
117
- // special cases
118
- this.oldAppWindAngle = "0";
119
- this.appWindAnimate.nativeElement.beginElement();
120
- } else {
121
- this.newAppWindAngle = "359";
122
- this.appWindAnimate.nativeElement.beginElement();
123
- this.oldAppWindAngle = "0";
124
- this.newAppWindAngle = changes.appWindAngle.currentValue.toFixed(0);
125
- this.appWindAnimate.nativeElement.beginElement();
126
- }
127
- } else {
128
- if (oldAngle == 0) {
129
- // special cases
130
- this.oldAppWindAngle = "359";
131
- this.appWindAnimate.nativeElement.beginElement();
132
- } else {
133
- this.newAppWindAngle = "0";
134
- this.appWindAnimate.nativeElement.beginElement();
135
- this.oldAppWindAngle = "359";
136
- this.newAppWindAngle = changes.appWindAngle.currentValue.toFixed(0);
137
- this.appWindAnimate.nativeElement.beginElement();
138
- }
139
- }
140
- } else {
141
- this.appWindAnimate.nativeElement.beginElement();
142
- }
143
- }
144
- }
145
- }
146
-
147
- //rudderAngle
148
- if (changes.rudderAngle) {
149
- if (! changes.rudderAngle.firstChange) {
150
- if (changes.rudderAngle.currentValue <=0) {
151
- this.oldRudderPrtAngle = 0;
152
- this.newRudderPrtAngle = 0;
153
-
154
- this.oldRudderStbAngle = this.newRudderStbAngle
155
- this.newRudderStbAngle = Math.round(changes.rudderAngle.currentValue * 7.16 * -1); //pixel to angle ratio for rudder box and set positive
156
- } else {
157
- this.oldRudderStbAngle = 0;
158
- this.newRudderStbAngle = 0;
159
-
160
- this.oldRudderPrtAngle = this.newRudderPrtAngle;
161
- this.newRudderPrtAngle = Math.round(changes.rudderAngle.currentValue * 7.16); //pixel to angle ratio for rudder box
162
- }
163
-
164
- if (this.rudderPrtAnimate) { // only update if on dom...
165
- this.rudderPrtAnimate.nativeElement.beginElement();
166
- }
167
- if (this.rudderStbAnimate) { // only update if on dom...
168
- this.rudderStbAnimate.nativeElement.beginElement();
169
- }
170
- }
171
- }
172
- }
173
-
174
- }
1
+ import { Component, Input, ViewChild, ElementRef, SimpleChanges } from '@angular/core';
2
+ import { trigger, state, style, animate, transition } from '@angular/animations';
3
+
4
+
5
+ @Component({
6
+ selector: 'app-svg-autopilot',
7
+ templateUrl: './svg-autopilot.component.html',
8
+ // uses svg-wind SCSS styles
9
+ animations: [
10
+ trigger('fadeInOut', [
11
+ state('connected', style({
12
+ opacity: 0,
13
+ })),
14
+ state('disconnected', style({
15
+ opacity: 1,
16
+ })),
17
+ transition('connected => disconnected', [
18
+ animate('.3s')
19
+ ]),
20
+ transition('disconnected => connected', [
21
+ animate('1s')
22
+ ]),
23
+ ]),
24
+ ]
25
+ })
26
+ export class SvgAutopilotComponent {
27
+ // AP screen
28
+ @ViewChild('apStencil', {static: true, read: ElementRef}) ApStencil: ElementRef;
29
+ @ViewChild('countDown', {static: true, read: ElementRef}) countDown: ElementRef;
30
+
31
+ // SVG
32
+ @ViewChild('compassAnimate', {static: true, read: ElementRef}) compassAnimate: ElementRef;
33
+ @ViewChild('appWindAnimate', {static: true, read: ElementRef}) appWindAnimate: ElementRef;
34
+ @ViewChild('rudderPrtAnimate', {static: true, read: ElementRef}) rudderPrtAnimate: ElementRef;
35
+ @ViewChild('rudderStbAnimate', {static: true, read: ElementRef}) rudderStbAnimate: ElementRef;
36
+
37
+ @Input('compassHeading') compassHeading: number;
38
+ @Input('appWindAngle') appWindAngle: number;
39
+ @Input('rudderAngle') rudderAngle: number;
40
+ @Input('apState') apState: string;
41
+ @Input('apTargetAppWindAngle') apTargetAppWindAngle: string;
42
+ @Input('isApConnected') isApConnected: boolean;
43
+
44
+ constructor() { }
45
+
46
+ // compass
47
+ oldCompassRotate: number = 0;
48
+ newCompassRotate: number = 0;
49
+ headingValue: string ="0";
50
+
51
+ // Apparent wind
52
+ oldAppWindAngle: string = "0";
53
+ newAppWindAngle: string = "0";
54
+ oldAppWindRotateAngle: string = "0";
55
+ newAppWindRotateAngle: string = "0";
56
+
57
+ // rudder
58
+ oldRudderPrtAngle: number = 0;
59
+ newRudderPrtAngle: number = 0;
60
+ oldRudderStbAngle: number = 0;
61
+ newRudderStbAngle: number = 0;
62
+
63
+ activityIconVisibility: string = "hidden;";
64
+ errorIconVisibility: string = "hidden";
65
+ msgStencilVisibility: string = "hidden";
66
+ msgStencilInnerHTML: string = "Empty Message Stencil";
67
+ errorStencilVisibility: string = "hidden";
68
+ errorStencilInnerText: string = "Empty Error Stencil";
69
+ messageVisibility: string = "hidden";
70
+ messageInnerText: string = "";
71
+
72
+
73
+ ngOnChanges(changes: SimpleChanges) {
74
+
75
+ //heading
76
+ if (changes.compassHeading) {
77
+ if (! changes.compassHeading.firstChange) {
78
+ this.oldCompassRotate = this.newCompassRotate;
79
+ this.newCompassRotate = changes.compassHeading.currentValue;
80
+ this.headingValue = this.newCompassRotate.toFixed(0);
81
+ this.compassAnimate.nativeElement.beginElement();
82
+ }
83
+ }
84
+
85
+ //AP State
86
+ if (changes.apState) {
87
+ if (! changes.apState.firstChange) {
88
+ this.apState = this.apState.toUpperCase();
89
+ }
90
+ }
91
+
92
+ //AP Target Apparent Wind Angle
93
+ if (changes.apTargetAppWindAngle) {
94
+ if (! changes.apTargetAppWindAngle.firstChange) {
95
+ this.apTargetAppWindAngle = changes.apTargetAppWindAngle.currentValue.toFixed(0);
96
+ }
97
+ }
98
+
99
+ //appWindAngle
100
+ if (changes.appWindAngle) {
101
+ if (! changes.appWindAngle.firstChange) {
102
+ this.oldAppWindAngle = this.newAppWindAngle;
103
+ this.newAppWindAngle = changes.appWindAngle.currentValue.toFixed(0);
104
+
105
+ let oldAngle = Number(this.oldAppWindAngle)
106
+ let newAngle = Number(this.newAppWindAngle);
107
+ let diff = oldAngle - newAngle;
108
+
109
+ // only update if on DOM and value rounded changed
110
+ if (this.appWindAnimate && (diff != 0)) {
111
+ // Special cases to smooth out passing between 359 to/from 0
112
+ // if more than half the circle, it could need to go over the 359 / 0 values
113
+ if ( Math.abs(diff) > 180 ) {
114
+ // In what direction are we moving?
115
+ if (Math.sign(diff) == 1) {
116
+ if (oldAngle == 359) {
117
+ // special cases
118
+ this.oldAppWindAngle = "0";
119
+ this.appWindAnimate.nativeElement.beginElement();
120
+ } else {
121
+ this.newAppWindAngle = "359";
122
+ this.appWindAnimate.nativeElement.beginElement();
123
+ this.oldAppWindAngle = "0";
124
+ this.newAppWindAngle = changes.appWindAngle.currentValue.toFixed(0);
125
+ this.appWindAnimate.nativeElement.beginElement();
126
+ }
127
+ } else {
128
+ if (oldAngle == 0) {
129
+ // special cases
130
+ this.oldAppWindAngle = "359";
131
+ this.appWindAnimate.nativeElement.beginElement();
132
+ } else {
133
+ this.newAppWindAngle = "0";
134
+ this.appWindAnimate.nativeElement.beginElement();
135
+ this.oldAppWindAngle = "359";
136
+ this.newAppWindAngle = changes.appWindAngle.currentValue.toFixed(0);
137
+ this.appWindAnimate.nativeElement.beginElement();
138
+ }
139
+ }
140
+ } else {
141
+ this.appWindAnimate.nativeElement.beginElement();
142
+ }
143
+ }
144
+ }
145
+ }
146
+
147
+ //rudderAngle
148
+ if (changes.rudderAngle) {
149
+ if (! changes.rudderAngle.firstChange) {
150
+ if (changes.rudderAngle.currentValue <=0) {
151
+ this.oldRudderPrtAngle = 0;
152
+ this.newRudderPrtAngle = 0;
153
+
154
+ this.oldRudderStbAngle = this.newRudderStbAngle
155
+ this.newRudderStbAngle = Math.round(changes.rudderAngle.currentValue * 7.16 * -1); //pixel to angle ratio for rudder box and set positive
156
+ } else {
157
+ this.oldRudderStbAngle = 0;
158
+ this.newRudderStbAngle = 0;
159
+
160
+ this.oldRudderPrtAngle = this.newRudderPrtAngle;
161
+ this.newRudderPrtAngle = Math.round(changes.rudderAngle.currentValue * 7.16); //pixel to angle ratio for rudder box
162
+ }
163
+
164
+ if (this.rudderPrtAnimate) { // only update if on dom...
165
+ this.rudderPrtAnimate.nativeElement.beginElement();
166
+ }
167
+ if (this.rudderStbAnimate) { // only update if on dom...
168
+ this.rudderStbAnimate.nativeElement.beginElement();
169
+ }
170
+ }
171
+ }
172
+ }
173
+
174
+ }
@@ -1,119 +1,119 @@
1
-
2
- <svg
3
- xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
4
- xmlns:dc="http://purl.org/dc/elements/1.1/"
5
- xmlns:cc="http://creativecommons.org/ns#"
6
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7
- xmlns:svg="http://www.w3.org/2000/svg"
8
- xmlns="http://www.w3.org/2000/svg"
9
- xmlns:xlink="http://www.w3.org/1999/xlink"
10
- height="100%"
11
- width="100%"
12
- viewBox="0 0 205 50"
13
- version="1.1"
14
- id="svg8">
15
- <defs
16
- id="defs2">
17
- <linearGradient id="gaugeBarGradient">
18
- <stop
19
- id="stop849"
20
- offset="0"
21
- style="stop-opacity:1;"
22
- [style.stop-color]="barColorGradient" />
23
- <stop
24
- id="stop851"
25
- offset="0.40"
26
- style="stop-opacity:0;"
27
- [style.stop-color]="barColorGradient" />
28
- </linearGradient>
29
- <linearGradient
30
- gradientTransform="translate(5,-30)"
31
- gradientUnits="userSpaceOnUse"
32
- y2="34.5"
33
- x2="-5"
34
- y1="34.5"
35
- x1="-6"
36
- id="linearGradient855"
37
- xlink:href="#gaugeBarGradient" />
38
- </defs>
39
- <g
40
- id="layer1"
41
- style="display:inline">
42
- <rect
43
- style="opacity:1;fill-opacity:1;stroke:none;stroke-width:0.265899;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
44
- [style.fill]="barColorBackground"
45
- id="GaugeBackground"
46
- width="195"
47
- height="9"
48
- x="5"
49
- y="30"
50
- ry="0" />
51
- <defs>
52
- <g
53
- id="gaugeBar">
54
- <rect
55
- id="gaugeValue"
56
- width="1"
57
- height="9"
58
- x="0"
59
- y="0"
60
- ry="0"
61
- style="mix-blend-mode:normal;fill-opacity:1;stroke-width:0.0864229;"
62
- />
63
- <rect
64
- id="GaugeValueGradient"
65
- transform="scale(-1,1)"
66
- width="1"
67
- height="9"
68
- x="-1"
69
- y="0"
70
- ry="0"
71
- style="display:inline;opacity:0.38141;mix-blend-mode:multiply;fill:url(#linearGradient855);fill-opacity:1;stroke-width:0.0864229"/>
72
- </g>
73
- </defs>
74
- <use xlink:href="#gaugeBar" transform="translate(5,30)" [style.fill]="barColor">
75
- <animateTransform #gaugeBarAnimate attributeName="transform"
76
- type="scale"
77
- [attr.from]="oldGaugeValue + ' 1'"
78
- [attr.to]="newGaugeValue +' 1'"
79
- begin="indefinite"
80
- dur="0.5s"
81
- additive="sum"
82
- fill="freeze" />
83
- </use>
84
- </g>
85
- <g
86
- id="layer2"
87
- style="display:inline">
88
- <text
89
- xml:space="preserve"
90
- class="wind-text"
91
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.7px;line-height:1.25;font-family:Arial;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;"
92
- x="4.1731763"
93
- y="25.413595"
94
- id="displayNameText"><tspan
95
- id="tspan1945"
96
- x="4.1731763"
97
- y="25.413595"
98
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.7px;font-family:Arial;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;">{{displayName}}</tspan>
99
- </text>
100
- <text
101
- text-anchor="end"
102
- id="gaugeTexts"
103
- y="25.293016"
104
- x="200.37138"
105
- class="wind-text"
106
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:22.5778px;line-height:1.25;font-family:Arial;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;"
107
- xml:space="preserve">
108
- <tspan
109
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:22.5778px;font-family:Arial;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;"
110
- y="25.293016"
111
- x="200.37138"
112
- id="valueText">{{dataValue}}</tspan>
113
- <tspan
114
- dy="-9"
115
- id="unitText"
116
- style="text-transform: capitalize;font-size:9.87778px">{{unitLabel}}</tspan>
117
- </text>
118
- </g>
119
- </svg>
1
+
2
+ <svg
3
+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
4
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
5
+ xmlns:cc="http://creativecommons.org/ns#"
6
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7
+ xmlns:svg="http://www.w3.org/2000/svg"
8
+ xmlns="http://www.w3.org/2000/svg"
9
+ xmlns:xlink="http://www.w3.org/1999/xlink"
10
+ height="100%"
11
+ width="100%"
12
+ viewBox="0 0 205 50"
13
+ version="1.1"
14
+ id="svg8">
15
+ <defs
16
+ id="defs2">
17
+ <linearGradient id="gaugeBarGradient">
18
+ <stop
19
+ id="stop849"
20
+ offset="0"
21
+ style="stop-opacity:1;"
22
+ [style.stop-color]="barColorGradient" />
23
+ <stop
24
+ id="stop851"
25
+ offset="0.40"
26
+ style="stop-opacity:0;"
27
+ [style.stop-color]="barColorGradient" />
28
+ </linearGradient>
29
+ <linearGradient
30
+ gradientTransform="translate(5,-30)"
31
+ gradientUnits="userSpaceOnUse"
32
+ y2="34.5"
33
+ x2="-5"
34
+ y1="34.5"
35
+ x1="-6"
36
+ id="linearGradient855"
37
+ xlink:href="#gaugeBarGradient" />
38
+ </defs>
39
+ <g
40
+ id="layer1"
41
+ style="display:inline">
42
+ <rect
43
+ style="opacity:1;fill-opacity:1;stroke:none;stroke-width:0.265899;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
44
+ [style.fill]="barColorBackground"
45
+ id="GaugeBackground"
46
+ width="195"
47
+ height="9"
48
+ x="5"
49
+ y="30"
50
+ ry="0" />
51
+ <defs>
52
+ <g
53
+ id="gaugeBar">
54
+ <rect
55
+ id="gaugeValue"
56
+ width="1"
57
+ height="9"
58
+ x="0"
59
+ y="0"
60
+ ry="0"
61
+ style="mix-blend-mode:normal;fill-opacity:1;stroke-width:0.0864229;"
62
+ />
63
+ <rect
64
+ id="GaugeValueGradient"
65
+ transform="scale(-1,1)"
66
+ width="1"
67
+ height="9"
68
+ x="-1"
69
+ y="0"
70
+ ry="0"
71
+ style="display:inline;opacity:0.38141;mix-blend-mode:multiply;fill:url(#linearGradient855);fill-opacity:1;stroke-width:0.0864229"/>
72
+ </g>
73
+ </defs>
74
+ <use xlink:href="#gaugeBar" transform="translate(5,30)" [style.fill]="barColor">
75
+ <animateTransform #gaugeBarAnimate attributeName="transform"
76
+ type="scale"
77
+ [attr.from]="oldGaugeValue + ' 1'"
78
+ [attr.to]="newGaugeValue +' 1'"
79
+ begin="indefinite"
80
+ dur="0.5s"
81
+ additive="sum"
82
+ fill="freeze" />
83
+ </use>
84
+ </g>
85
+ <g
86
+ id="layer2"
87
+ style="display:inline">
88
+ <text
89
+ xml:space="preserve"
90
+ class="wind-text"
91
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.7px;line-height:1.25;font-family:Arial;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;"
92
+ x="4.1731763"
93
+ y="25.413595"
94
+ id="displayNameText"><tspan
95
+ id="tspan1945"
96
+ x="4.1731763"
97
+ y="25.413595"
98
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.7px;font-family:Arial;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;">{{displayName}}</tspan>
99
+ </text>
100
+ <text
101
+ text-anchor="end"
102
+ id="gaugeTexts"
103
+ y="25.293016"
104
+ x="200.37138"
105
+ class="wind-text"
106
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:22.5778px;line-height:1.25;font-family:Arial;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;"
107
+ xml:space="preserve">
108
+ <tspan
109
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:22.5778px;font-family:Arial;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;"
110
+ y="25.293016"
111
+ x="200.37138"
112
+ id="valueText">{{dataValue}}</tspan>
113
+ <tspan
114
+ dy="-9"
115
+ id="unitText"
116
+ style="text-transform: capitalize;font-size:9.87778px">{{unitLabel}}</tspan>
117
+ </text>
118
+ </g>
119
+ </svg>