@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,174 +1,174 @@
1
- import { ViewChild, ElementRef, Component, OnInit } from '@angular/core';
2
- import { Subscription } from 'rxjs';
3
- import Chart from 'chart.js/auto';
4
-
5
- import { AppSettingsService, SignalKToken, SignalKUrl } from '../app-settings.service';
6
- import { SignalKConnectionService, SignalKStatus } from '../signalk-connection.service';
7
- import { SignalkRequestsService } from '../signalk-requests.service';
8
- import { SignalKService } from '../signalk.service';
9
-
10
-
11
-
12
- @Component({
13
- selector: 'app-settings-signalk',
14
- templateUrl: './settings-signalk.component.html',
15
- styleUrls: ['./settings-signalk.component.css']
16
- })
17
- export class SettingsSignalkComponent implements OnInit {
18
-
19
- @ViewChild('lineGraph', {static: true, read: ElementRef}) lineGraph: ElementRef;
20
-
21
- formSignalKURL: string;
22
- formAuthToken: string;
23
-
24
- signalKConnectionsStatus: SignalKStatus;
25
- signalKConnectionsStatusSub: Subscription;
26
-
27
- authTokenSub: Subscription;
28
-
29
- updatesSecondSub: Subscription;
30
- // updatesMinutesSub: Subscription;
31
-
32
- lastSecondsUpdate: number; //number of updates from server in last second
33
- updatesSeconds: number[] = [];
34
- // updatesMinutes: number[] = [];
35
-
36
- chartCtx;
37
- chart = null;
38
- textColor; // store the color of text for the graph...
39
-
40
- // dynamics theme support
41
- themeNameSub: Subscription = null;
42
-
43
- constructor(
44
- private AppSettingsService: AppSettingsService,
45
- private SignalKService: SignalKService,
46
- private SignalKConnectionService: SignalKConnectionService,
47
- private SignalkRequestsService: SignalkRequestsService) { }
48
-
49
- ngOnInit() {
50
- // get SignalKurl
51
- this.formSignalKURL = this.AppSettingsService.getSignalKURL().url;
52
-
53
- // sub for R/W Token
54
- this.authTokenSub = this.AppSettingsService.getSignalKTokenAsO().subscribe(token => {
55
- this.formAuthToken = token.token;
56
- });
57
-
58
- // sub for signalk connection status
59
- this.signalKConnectionsStatusSub = this.SignalKConnectionService.getSignalKConnectionsStatus().subscribe(status => {
60
- this.signalKConnectionsStatus = status;
61
- });
62
-
63
- //get update performances
64
- this.updatesSecondSub = this.SignalKService.getupdateStatsSecond().subscribe(newSecondsData => {
65
- this.lastSecondsUpdate = newSecondsData[newSecondsData.length-1];
66
- this.updatesSeconds = newSecondsData;
67
- if (this.chart !== null) {
68
- this.chart.config.data.datasets[0].data = newSecondsData;
69
- this.chart.update('none');
70
- }
71
- });
72
- /* this.updatesMinutesSub = this.SignalKService.getupdateStatMinute().subscribe(newMinutesData => {
73
- this.updatesMinutes = newMinutesData;
74
- if (this.chart !== null) {
75
- this.chart.config.data.datasets[1].data = newMinutesData;
76
- this.chart.update('none');
77
- }
78
- }); */
79
-
80
- this.textColor = window.getComputedStyle(this.lineGraph.nativeElement).color;
81
- this.chartCtx = this.lineGraph.nativeElement.getContext('2d');
82
- this.startChart();
83
- this.subscribeTheme();
84
-
85
-
86
- }
87
-
88
-
89
- ngOnDestroy() {
90
- this.signalKConnectionsStatusSub.unsubscribe();
91
- this.authTokenSub.unsubscribe();
92
- // this.updatesMinutesSub.unsubscribe();
93
- this.updatesSecondSub.unsubscribe();
94
- }
95
-
96
- updateSignalKURL() {
97
- this.AppSettingsService.setSignalKURL({url: this.formSignalKURL, new: true});
98
- }
99
-
100
- requestAuth() {
101
- this.SignalkRequestsService.requestAuth();
102
- }
103
-
104
- clearAuth() {
105
- this.AppSettingsService.setSignalKToken({token: null, new: true});
106
- }
107
-
108
-
109
- startChart() {
110
- if (this.chart !== null) {
111
- this.chart.destroy();
112
- }
113
-
114
- this.chart = new Chart(this.chartCtx,{
115
- type: 'line',
116
- data: {
117
- labels: Array.from(Array(60).keys()).reverse(),
118
- datasets: [
119
- {
120
- label: "Updates Per Second",
121
- data: this.updatesSeconds,
122
- //fill: 'false',
123
- borderColor: this.textColor
124
- },
125
- // {
126
- // label: "Per Minute",
127
- // data: this.updatesMinutes,
128
- // fill: 'false',
129
- // borderColor: this.textColor
130
- // }
131
- ]
132
- },
133
- options: {
134
-
135
- scales: {
136
- y:
137
- {
138
- type: 'linear',
139
- position: 'left',
140
- beginAtZero: true,
141
- },
142
- // {
143
- // type: 'linear',
144
- // position: 'right',
145
- // //beginAtZero: true,
146
- // }
147
- }
148
- }
149
- });
150
- }
151
-
152
-
153
-
154
-
155
- // Subscribe to theme event
156
- subscribeTheme() {
157
- this.themeNameSub = this.AppSettingsService.getThemeNameAsO().subscribe(
158
- themeChange => {
159
- setTimeout(() => { // need a delay so browser getComputedStyles has time to complete theme application.
160
- this.textColor = window.getComputedStyle(this.lineGraph.nativeElement).color;
161
- this.startChart()
162
- }, 100);
163
- })
164
- }
165
-
166
- unsubscribeTheme(){
167
- if (this.themeNameSub !== null) {
168
- this.themeNameSub.unsubscribe();
169
- this.themeNameSub = null;
170
- }
171
- }
172
-
173
-
174
- }
1
+ import { ViewChild, ElementRef, Component, OnInit } from '@angular/core';
2
+ import { Subscription } from 'rxjs';
3
+ import Chart from 'chart.js/auto';
4
+
5
+ import { AppSettingsService, SignalKToken, SignalKUrl } from '../app-settings.service';
6
+ import { SignalKConnectionService, SignalKStatus } from '../signalk-connection.service';
7
+ import { SignalkRequestsService } from '../signalk-requests.service';
8
+ import { SignalKService } from '../signalk.service';
9
+
10
+
11
+
12
+ @Component({
13
+ selector: 'app-settings-signalk',
14
+ templateUrl: './settings-signalk.component.html',
15
+ styleUrls: ['./settings-signalk.component.css']
16
+ })
17
+ export class SettingsSignalkComponent implements OnInit {
18
+
19
+ @ViewChild('lineGraph', {static: true, read: ElementRef}) lineGraph: ElementRef;
20
+
21
+ formSignalKURL: string;
22
+ formAuthToken: string;
23
+
24
+ signalKConnectionsStatus: SignalKStatus;
25
+ signalKConnectionsStatusSub: Subscription;
26
+
27
+ authTokenSub: Subscription;
28
+
29
+ updatesSecondSub: Subscription;
30
+ // updatesMinutesSub: Subscription;
31
+
32
+ lastSecondsUpdate: number; //number of updates from server in last second
33
+ updatesSeconds: number[] = [];
34
+ // updatesMinutes: number[] = [];
35
+
36
+ chartCtx;
37
+ chart = null;
38
+ textColor; // store the color of text for the graph...
39
+
40
+ // dynamics theme support
41
+ themeNameSub: Subscription = null;
42
+
43
+ constructor(
44
+ private AppSettingsService: AppSettingsService,
45
+ private SignalKService: SignalKService,
46
+ private SignalKConnectionService: SignalKConnectionService,
47
+ private SignalkRequestsService: SignalkRequestsService) { }
48
+
49
+ ngOnInit() {
50
+ // get SignalKurl
51
+ this.formSignalKURL = this.AppSettingsService.getSignalKURL().url;
52
+
53
+ // sub for R/W Token
54
+ this.authTokenSub = this.AppSettingsService.getSignalKTokenAsO().subscribe(token => {
55
+ this.formAuthToken = token.token;
56
+ });
57
+
58
+ // sub for signalk connection status
59
+ this.signalKConnectionsStatusSub = this.SignalKConnectionService.getSignalKConnectionsStatus().subscribe(status => {
60
+ this.signalKConnectionsStatus = status;
61
+ });
62
+
63
+ //get update performances
64
+ this.updatesSecondSub = this.SignalKService.getupdateStatsSecond().subscribe(newSecondsData => {
65
+ this.lastSecondsUpdate = newSecondsData[newSecondsData.length-1];
66
+ this.updatesSeconds = newSecondsData;
67
+ if (this.chart !== null) {
68
+ this.chart.config.data.datasets[0].data = newSecondsData;
69
+ this.chart.update('none');
70
+ }
71
+ });
72
+ /* this.updatesMinutesSub = this.SignalKService.getupdateStatMinute().subscribe(newMinutesData => {
73
+ this.updatesMinutes = newMinutesData;
74
+ if (this.chart !== null) {
75
+ this.chart.config.data.datasets[1].data = newMinutesData;
76
+ this.chart.update('none');
77
+ }
78
+ }); */
79
+
80
+ this.textColor = window.getComputedStyle(this.lineGraph.nativeElement).color;
81
+ this.chartCtx = this.lineGraph.nativeElement.getContext('2d');
82
+ this.startChart();
83
+ this.subscribeTheme();
84
+
85
+
86
+ }
87
+
88
+
89
+ ngOnDestroy() {
90
+ this.signalKConnectionsStatusSub.unsubscribe();
91
+ this.authTokenSub.unsubscribe();
92
+ // this.updatesMinutesSub.unsubscribe();
93
+ this.updatesSecondSub.unsubscribe();
94
+ }
95
+
96
+ updateSignalKURL() {
97
+ this.AppSettingsService.setSignalKURL({url: this.formSignalKURL, new: true});
98
+ }
99
+
100
+ requestAuth() {
101
+ this.SignalkRequestsService.requestAuth();
102
+ }
103
+
104
+ clearAuth() {
105
+ this.AppSettingsService.setSignalKToken({token: null, new: true});
106
+ }
107
+
108
+
109
+ startChart() {
110
+ if (this.chart !== null) {
111
+ this.chart.destroy();
112
+ }
113
+
114
+ this.chart = new Chart(this.chartCtx,{
115
+ type: 'line',
116
+ data: {
117
+ labels: Array.from(Array(60).keys()).reverse(),
118
+ datasets: [
119
+ {
120
+ label: "Updates Per Second",
121
+ data: this.updatesSeconds,
122
+ //fill: 'false',
123
+ borderColor: this.textColor
124
+ },
125
+ // {
126
+ // label: "Per Minute",
127
+ // data: this.updatesMinutes,
128
+ // fill: 'false',
129
+ // borderColor: this.textColor
130
+ // }
131
+ ]
132
+ },
133
+ options: {
134
+
135
+ scales: {
136
+ y:
137
+ {
138
+ type: 'linear',
139
+ position: 'left',
140
+ beginAtZero: true,
141
+ },
142
+ // {
143
+ // type: 'linear',
144
+ // position: 'right',
145
+ // //beginAtZero: true,
146
+ // }
147
+ }
148
+ }
149
+ });
150
+ }
151
+
152
+
153
+
154
+
155
+ // Subscribe to theme event
156
+ subscribeTheme() {
157
+ this.themeNameSub = this.AppSettingsService.getThemeNameAsO().subscribe(
158
+ themeChange => {
159
+ setTimeout(() => { // need a delay so browser getComputedStyles has time to complete theme application.
160
+ this.textColor = window.getComputedStyle(this.lineGraph.nativeElement).color;
161
+ this.startChart()
162
+ }, 100);
163
+ })
164
+ }
165
+
166
+ unsubscribeTheme(){
167
+ if (this.themeNameSub !== null) {
168
+ this.themeNameSub.unsubscribe();
169
+ this.themeNameSub = null;
170
+ }
171
+ }
172
+
173
+
174
+ }
@@ -1,4 +1,4 @@
1
- .UnitSettings {
2
- /* width: 100%; */
3
- padding-right: 30px;
4
- }
1
+ .UnitSettings {
2
+ /* width: 100%; */
3
+ padding-right: 30px;
4
+ }
@@ -1,19 +1,19 @@
1
- <form (ngSubmit)="submitConfig()" [formGroup]="formUnitMaster">
2
- <mat-card>
3
- <mat-card-header>
4
- <mat-card-title>Application Default Units</mat-card-title>
5
- <mat-card-subtitle>Set the default units preferences per types of unit groups. The values will be automatically converted for display.</mat-card-subtitle>
6
- </mat-card-header>
7
- <mat-form-field class="UnitSettings" *ngFor="let unitType of defaultUnits | keyvalue">
8
- <mat-select
9
- [placeholder] = "unitType.key"
10
- [formControlName] = "unitType.key"
11
- >
12
- <mat-option *ngFor="let unit of groupUnits[unitType.key]" [value]="unit.measure" >{{ unit.description }}</mat-option>
13
- </mat-select>
14
- </mat-form-field>
15
- <mat-card-actions align="end">
16
- <button mat-raised-button color="accent" type="submit" [disabled]="!formUnitMaster.valid">Save</button>
17
- </mat-card-actions>
18
- </mat-card>
19
- </form>
1
+ <form (ngSubmit)="submitConfig()" [formGroup]="formUnitMaster">
2
+ <mat-card>
3
+ <mat-card-header>
4
+ <mat-card-title>Application Default Units</mat-card-title>
5
+ <mat-card-subtitle>Set the default units preferences per types of unit groups. The values will be automatically converted for display.</mat-card-subtitle>
6
+ </mat-card-header>
7
+ <mat-form-field class="UnitSettings" *ngFor="let unitType of defaultUnits | keyvalue">
8
+ <mat-select
9
+ [placeholder] = "unitType.key"
10
+ [formControlName] = "unitType.key"
11
+ >
12
+ <mat-option *ngFor="let unit of groupUnits[unitType.key]" [value]="unit.measure" >{{ unit.description }}</mat-option>
13
+ </mat-select>
14
+ </mat-form-field>
15
+ <mat-card-actions align="end">
16
+ <button mat-raised-button color="accent" type="submit" [disabled]="!formUnitMaster.valid">Save</button>
17
+ </mat-card-actions>
18
+ </mat-card>
19
+ </form>
@@ -1,25 +1,25 @@
1
- import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
2
-
3
- import { SettingsUnitsComponent } from './settings-units.component';
4
-
5
- describe('SettingsUnitsComponent', () => {
6
- let component: SettingsUnitsComponent;
7
- let fixture: ComponentFixture<SettingsUnitsComponent>;
8
-
9
- beforeEach(waitForAsync(() => {
10
- TestBed.configureTestingModule({
11
- declarations: [ SettingsUnitsComponent ]
12
- })
13
- .compileComponents();
14
- }));
15
-
16
- beforeEach(() => {
17
- fixture = TestBed.createComponent(SettingsUnitsComponent);
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 { SettingsUnitsComponent } from './settings-units.component';
4
+
5
+ describe('SettingsUnitsComponent', () => {
6
+ let component: SettingsUnitsComponent;
7
+ let fixture: ComponentFixture<SettingsUnitsComponent>;
8
+
9
+ beforeEach(waitForAsync(() => {
10
+ TestBed.configureTestingModule({
11
+ declarations: [ SettingsUnitsComponent ]
12
+ })
13
+ .compileComponents();
14
+ }));
15
+
16
+ beforeEach(() => {
17
+ fixture = TestBed.createComponent(SettingsUnitsComponent);
18
+ component = fixture.componentInstance;
19
+ fixture.detectChanges();
20
+ });
21
+
22
+ it('should create', () => {
23
+ expect(component).toBeTruthy();
24
+ });
25
+ });
@@ -1,62 +1,62 @@
1
- import { Component, OnInit } from '@angular/core';
2
- import { FormGroup, FormControl } from '@angular/forms';
3
- import { AppSettingsService } from '../app-settings.service';
4
- import { NotificationsService } from '../notifications.service';
5
-
6
- import { IUnitDefaults, UnitsService, IUnit } from '../units.service';
7
-
8
- @Component({
9
- selector: 'app-settings-units',
10
- templateUrl: './settings-units.component.html',
11
- styleUrls: ['./settings-units.component.css']
12
- })
13
- export class SettingsUnitsComponent implements OnInit {
14
-
15
- formUnitMaster: FormGroup;
16
-
17
- groupUnits: {[key: string]: IUnit}[] = [];
18
- defaultUnits: IUnitDefaults;
19
-
20
-
21
-
22
- constructor(
23
- private UnitsService: UnitsService,
24
- private appSettingsService: AppSettingsService,
25
- private notificationsService: NotificationsService,
26
- ) { }
27
-
28
- ngOnInit() {
29
-
30
- this.defaultUnits = this.appSettingsService.getDefaultUnits();
31
-
32
- //format unit group data a bit better for consumption in template
33
- let unitGroupsRaw = this.UnitsService.getConversions();
34
-
35
- for (let gindex = 0; gindex < unitGroupsRaw.length; gindex++) {
36
- const unitGroup = unitGroupsRaw[gindex];
37
- let units = [];
38
-
39
- for (let index = 0; index < unitGroup.units.length; index++) {
40
- const unit = unitGroup.units[index];
41
- units.push(unit);
42
- }
43
- this.groupUnits[unitGroup.group] = units;
44
- }
45
-
46
- //generate formGroup
47
- let groups = new FormGroup({});
48
- Object.keys(this.defaultUnits).forEach(key => {
49
- groups.addControl(key, new FormControl(this.defaultUnits[key]));
50
- });
51
-
52
- this.formUnitMaster = groups;
53
- this.formUnitMaster.updateValueAndValidity();
54
- //console.log(this.formUnitMaster);
55
- }
56
-
57
- submitConfig() {
58
- this.appSettingsService.setDefaultUnits(this.formUnitMaster.value);
59
- this.notificationsService.sendSnackbarNotification("Default units configuration saved", 5000);
60
- }
61
-
62
- }
1
+ import { Component, OnInit } from '@angular/core';
2
+ import { FormGroup, FormControl } from '@angular/forms';
3
+ import { AppSettingsService } from '../app-settings.service';
4
+ import { NotificationsService } from '../notifications.service';
5
+
6
+ import { IUnitDefaults, UnitsService, IUnit } from '../units.service';
7
+
8
+ @Component({
9
+ selector: 'app-settings-units',
10
+ templateUrl: './settings-units.component.html',
11
+ styleUrls: ['./settings-units.component.css']
12
+ })
13
+ export class SettingsUnitsComponent implements OnInit {
14
+
15
+ formUnitMaster: FormGroup;
16
+
17
+ groupUnits: {[key: string]: IUnit}[] = [];
18
+ defaultUnits: IUnitDefaults;
19
+
20
+
21
+
22
+ constructor(
23
+ private UnitsService: UnitsService,
24
+ private appSettingsService: AppSettingsService,
25
+ private notificationsService: NotificationsService,
26
+ ) { }
27
+
28
+ ngOnInit() {
29
+
30
+ this.defaultUnits = this.appSettingsService.getDefaultUnits();
31
+
32
+ //format unit group data a bit better for consumption in template
33
+ let unitGroupsRaw = this.UnitsService.getConversions();
34
+
35
+ for (let gindex = 0; gindex < unitGroupsRaw.length; gindex++) {
36
+ const unitGroup = unitGroupsRaw[gindex];
37
+ let units = [];
38
+
39
+ for (let index = 0; index < unitGroup.units.length; index++) {
40
+ const unit = unitGroup.units[index];
41
+ units.push(unit);
42
+ }
43
+ this.groupUnits[unitGroup.group] = units;
44
+ }
45
+
46
+ //generate formGroup
47
+ let groups = new FormGroup({});
48
+ Object.keys(this.defaultUnits).forEach(key => {
49
+ groups.addControl(key, new FormControl(this.defaultUnits[key]));
50
+ });
51
+
52
+ this.formUnitMaster = groups;
53
+ this.formUnitMaster.updateValueAndValidity();
54
+ //console.log(this.formUnitMaster);
55
+ }
56
+
57
+ submitConfig() {
58
+ this.appSettingsService.setDefaultUnits(this.formUnitMaster.value);
59
+ this.notificationsService.sendSnackbarNotification("Default units configuration saved", 5000);
60
+ }
61
+
62
+ }
@@ -1,22 +1,22 @@
1
- .full-display {
2
- width: 100%;
3
- height: 100%;
4
- position: relative;
5
- z-index: 500;
6
- }
7
-
8
- .full-width {
9
- width: 100%;
10
- }
11
-
12
-
13
- .small-button {
14
- width: 20px;
15
- height: 20px;
16
- line-height: 20px;
17
- min-height: 20px;
18
- vertical-align: top;
19
- font-size: 14px;
20
- padding: 0 0;
21
- margin: 0;
1
+ .full-display {
2
+ width: 100%;
3
+ height: 100%;
4
+ position: relative;
5
+ z-index: 500;
6
+ }
7
+
8
+ .full-width {
9
+ width: 100%;
10
+ }
11
+
12
+
13
+ .small-button {
14
+ width: 20px;
15
+ height: 20px;
16
+ line-height: 20px;
17
+ min-height: 20px;
18
+ vertical-align: top;
19
+ font-size: 14px;
20
+ padding: 0 0;
21
+ margin: 0;
22
22
  }