@mxtommy/kip 1.2.1 → 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 (315) hide show
  1. package/.angulardoc.json +3 -3
  2. package/CHANGELOG.md +145 -124
  3. package/CONTRIBUTORS.md +16 -13
  4. package/README.md +102 -101
  5. package/angular.json +162 -152
  6. package/karma.conf.js +31 -31
  7. package/package.json +87 -80
  8. package/public/3rdpartylicenses.txt +317 -62
  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 -121
  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 -382
  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 +301 -0
  70. package/src/app/gauges-module/gauges.module.ts +17 -0
  71. package/src/app/gauges-module/linear-gauge.ts +50 -0
  72. package/src/app/gauges-module/radial-gauge.ts +48 -0
  73. package/src/app/layout-split/layout-split.component.html +30 -30
  74. package/src/app/layout-split/layout-split.component.scss +33 -33
  75. package/src/app/layout-split/layout-split.component.spec.ts +25 -25
  76. package/src/app/layout-split/layout-split.component.ts +59 -59
  77. package/src/app/layout-splits.service.ts +284 -284
  78. package/src/app/modal-path-selector/modal-path-selector.component.html +62 -62
  79. package/src/app/modal-path-selector/modal-path-selector.component.scss +39 -39
  80. package/src/app/modal-path-selector/modal-path-selector.component.spec.ts +25 -25
  81. package/src/app/modal-path-selector/modal-path-selector.component.ts +132 -132
  82. package/src/app/modal-widget/modal-widget.component.css +32 -32
  83. package/src/app/modal-widget/modal-widget.component.html +341 -334
  84. package/src/app/modal-widget/modal-widget.component.spec.ts +25 -25
  85. package/src/app/modal-widget/modal-widget.component.ts +84 -84
  86. package/src/app/notifications.service.ts +392 -387
  87. package/src/app/object-keys.pipe.spec.ts +8 -8
  88. package/src/app/object-keys.pipe.ts +13 -13
  89. package/src/app/reset-config/reset-config.component.html +3 -3
  90. package/src/app/reset-config/reset-config.component.spec.ts +25 -25
  91. package/src/app/reset-config/reset-config.component.ts +31 -31
  92. package/src/app/root-display/root-display.component.html +4 -4
  93. package/src/app/root-display/root-display.component.spec.ts +25 -25
  94. package/src/app/root-display/root-display.component.ts +57 -57
  95. package/src/app/safe.pipe.ts +15 -15
  96. package/src/app/settings/settings.component.css +9 -9
  97. package/src/app/settings/settings.component.html +25 -25
  98. package/src/app/settings/settings.component.spec.ts +25 -25
  99. package/src/app/settings/settings.component.ts +22 -22
  100. package/src/app/settings-config/settings-config.component.css +38 -38
  101. package/src/app/settings-config/settings-config.component.spec.ts +25 -25
  102. package/src/app/settings-config/settings-config.component.ts +161 -161
  103. package/src/app/settings-datasets/settings-datasets.component.html +43 -43
  104. package/src/app/settings-datasets/settings-datasets.component.scss +39 -39
  105. package/src/app/settings-datasets/settings-datasets.component.spec.ts +25 -25
  106. package/src/app/settings-datasets/settings-datasets.component.ts +98 -98
  107. package/src/app/settings-datasets/settings-datasets.modal.html +54 -54
  108. package/src/app/settings-notifications/settings-notifications.component.html +65 -65
  109. package/src/app/settings-notifications/settings-notifications.component.spec.ts +25 -25
  110. package/src/app/settings-notifications/settings-notifications.component.ts +29 -29
  111. package/src/app/settings-signalk/settings-signalk.component.html +8 -8
  112. package/src/app/settings-signalk/settings-signalk.component.spec.ts +25 -25
  113. package/src/app/settings-signalk/settings-signalk.component.ts +6 -17
  114. package/src/app/settings-units/settings-units.component.css +4 -4
  115. package/src/app/settings-units/settings-units.component.html +19 -19
  116. package/src/app/settings-units/settings-units.component.spec.ts +25 -25
  117. package/src/app/settings-units/settings-units.component.ts +62 -62
  118. package/src/app/settings-zones/settings-zones.component.css +21 -21
  119. package/src/app/settings-zones/settings-zones.component.html +70 -70
  120. package/src/app/settings-zones/settings-zones.modal.html +38 -38
  121. package/src/app/signalk-connection.service.ts +344 -344
  122. package/src/app/signalk-delta.service.spec.ts +15 -15
  123. package/src/app/signalk-delta.service.ts +97 -97
  124. package/src/app/signalk-full.service.ts +99 -99
  125. package/src/app/signalk-interfaces.ts +129 -129
  126. package/src/app/signalk-requests.service.spec.ts +12 -12
  127. package/src/app/signalk-requests.service.ts +180 -180
  128. package/src/app/svg-autopilot/svg-autopilot.component.html +1036 -1036
  129. package/src/app/svg-autopilot/svg-autopilot.component.spec.ts +25 -25
  130. package/src/app/svg-autopilot/svg-autopilot.component.ts +174 -174
  131. package/src/app/svg-simple-linear-gauge/svg-simple-linear-gauge.component.html +119 -119
  132. package/src/app/svg-simple-linear-gauge/svg-simple-linear-gauge.component.spec.ts +25 -25
  133. package/src/app/svg-simple-linear-gauge/svg-simple-linear-gauge.component.ts +49 -49
  134. package/src/app/svg-wind/svg-wind.component.html +969 -969
  135. package/src/app/svg-wind/svg-wind.component.scss +76 -76
  136. package/src/app/svg-wind/svg-wind.component.spec.ts +25 -25
  137. package/src/app/svg-wind/svg-wind.component.ts +280 -280
  138. package/src/app/unit-window/unit-window.component.css +37 -37
  139. package/src/app/unit-window/unit-window.component.html +8 -8
  140. package/src/app/unit-window/unit-window.component.spec.ts +25 -25
  141. package/src/app/unit-window/unit-window.component.ts +134 -134
  142. package/src/app/unit-window/unit-window.modal.html +24 -24
  143. package/src/app/units.service.ts +300 -300
  144. package/src/app/widget-autopilot/widget-autopilot.component.html +78 -85
  145. package/src/app/widget-autopilot/widget-autopilot.component.scss +191 -191
  146. package/src/app/widget-autopilot/widget-autopilot.component.spec.ts +25 -25
  147. package/src/app/widget-autopilot/widget-autopilot.component.ts +774 -781
  148. package/src/app/widget-blank/widget-blank.component.scss +21 -22
  149. package/src/app/widget-blank/widget-blank.component.spec.ts +25 -25
  150. package/src/app/widget-blank/widget-blank.component.ts +17 -17
  151. package/src/app/widget-gauge/widget-gauge.component.css +25 -25
  152. package/src/app/widget-gauge/widget-gauge.component.html +29 -29
  153. package/src/app/widget-gauge/widget-gauge.component.spec.ts +25 -25
  154. package/src/app/widget-gauge/widget-gauge.component.ts +120 -120
  155. package/src/app/widget-gauge-ng-linear/widget-gauge-ng-linear.component.html +126 -126
  156. package/src/app/widget-gauge-ng-linear/widget-gauge-ng-linear.component.scss +94 -93
  157. package/src/app/widget-gauge-ng-linear/widget-gauge-ng-linear.component.spec.ts +25 -25
  158. package/src/app/widget-gauge-ng-linear/widget-gauge-ng-linear.component.ts +424 -424
  159. package/src/app/widget-gauge-ng-radial/widget-gauge-ng-radial.component.html +122 -122
  160. package/src/app/widget-gauge-ng-radial/widget-gauge-ng-radial.component.scss +69 -69
  161. package/src/app/widget-gauge-ng-radial/widget-gauge-ng-radial.component.spec.ts +25 -25
  162. package/src/app/widget-gauge-ng-radial/widget-gauge-ng-radial.component.ts +553 -553
  163. package/src/app/widget-historical/widget-historical.component.html +14 -14
  164. package/src/app/widget-historical/widget-historical.component.spec.ts +25 -25
  165. package/src/app/widget-historical/widget-historical.component.ts +306 -307
  166. package/src/app/widget-iframe/widget-iframe.component.css +11 -11
  167. package/src/app/widget-iframe/widget-iframe.component.html +21 -21
  168. package/src/app/widget-iframe/widget-iframe.component.spec.ts +25 -25
  169. package/src/app/widget-iframe/widget-iframe.component.ts +63 -63
  170. package/src/app/widget-list.service.ts +135 -135
  171. package/src/app/widget-manager.service.ts +141 -140
  172. package/src/app/widget-numeric/widget-numeric.component.html +1 -1
  173. package/src/app/widget-numeric/widget-numeric.component.scss +3 -3
  174. package/src/app/widget-numeric/widget-numeric.component.spec.ts +25 -25
  175. package/src/app/widget-simple-linear/widget-simple-linear.component.html +28 -28
  176. package/src/app/widget-simple-linear/widget-simple-linear.component.scss +64 -64
  177. package/src/app/widget-simple-linear/widget-simple-linear.component.spec.ts +25 -25
  178. package/src/app/widget-simple-linear/widget-simple-linear.component.ts +199 -199
  179. package/src/app/widget-state/widget-state.component.html +27 -27
  180. package/src/app/widget-state/widget-state.component.scss +68 -68
  181. package/src/app/widget-state/widget-state.component.spec.ts +25 -25
  182. package/src/app/widget-state/widget-state.component.ts +178 -178
  183. package/src/app/widget-switch/widget-switch.component.css +69 -69
  184. package/src/app/widget-switch/widget-switch.component.html +17 -17
  185. package/src/app/widget-switch/widget-switch.component.spec.ts +25 -25
  186. package/src/app/widget-switch/widget-switch.component.ts +134 -134
  187. package/src/app/widget-text-generic/widget-text-generic.component.html +9 -9
  188. package/src/app/widget-text-generic/widget-text-generic.component.spec.ts +25 -25
  189. package/src/app/widget-tutorial/widget-tutorial.component.html +34 -34
  190. package/src/app/widget-tutorial/widget-tutorial.component.spec.ts +25 -25
  191. package/src/app/widget-tutorial/widget-tutorial.component.ts +18 -18
  192. package/src/app/widget-unknown/widget-unknown.component.spec.ts +25 -25
  193. package/src/app/widget-wind/widget-wind.component.css +23 -23
  194. package/src/app/widget-wind/widget-wind.component.html +20 -20
  195. package/src/app/widget-wind/widget-wind.component.spec.ts +25 -25
  196. package/src/app/widget-wind/widget-wind.component.ts +369 -369
  197. package/src/assets/NoSleep.min.js +1 -1
  198. package/src/assets/fontawesome6/css/all.min.css +6 -0
  199. package/src/assets/fontawesome6/webfonts/fa-brands-400.ttf +0 -0
  200. package/src/assets/fontawesome6/webfonts/fa-brands-400.woff2 +0 -0
  201. package/src/assets/fontawesome6/webfonts/fa-regular-400.ttf +0 -0
  202. package/src/assets/fontawesome6/webfonts/fa-regular-400.woff2 +0 -0
  203. package/src/assets/fontawesome6/webfonts/fa-solid-900.ttf +0 -0
  204. package/src/assets/fontawesome6/webfonts/fa-solid-900.woff2 +0 -0
  205. package/src/assets/fontawesome6/webfonts/fa-v4compatibility.ttf +0 -0
  206. package/src/assets/fontawesome6/webfonts/fa-v4compatibility.woff2 +0 -0
  207. package/src/assets/icon-192x192.png +0 -0
  208. package/src/assets/icon-256x256.png +0 -0
  209. package/src/assets/icon-384x384.png +0 -0
  210. package/src/assets/icon-512x512.png +0 -0
  211. package/src/assets/steelseries-min.js +25 -25
  212. package/src/assets/steelseries-min.js.map +8 -8
  213. package/src/assets/steelseries.js +15834 -15834
  214. package/src/assets/svg-autopilot-inkscape-plain.svg +983 -983
  215. package/src/assets/svg-wind-inkscape.svg +1358 -1358
  216. package/src/assets/tween.js +381 -381
  217. package/src/index.html +20 -20
  218. package/src/main.ts +11 -11
  219. package/src/manifest.json +33 -0
  220. package/src/polyfills.ts +80 -76
  221. package/src/styles.scss +11 -11
  222. package/src/themes/darkBlueTheme.scss +117 -116
  223. package/src/themes/defaultTheme.scss +50 -49
  224. package/src/themes/highContrastTheme.scss +47 -46
  225. package/src/themes/modernTheme.scss +143 -142
  226. package/src/themes/nightMode.scss +185 -184
  227. package/src/themes/platypusTheme.scss +80 -79
  228. package/src/themes/signalkTheme.scss +112 -111
  229. package/src/tsconfig.app.json +15 -15
  230. package/src/tsconfig.spec.json +20 -20
  231. package/tsconfig.json +23 -23
  232. package/tslint.json +143 -143
  233. package/public/assets/font-awesome/HELP-US-OUT.txt +0 -7
  234. package/public/assets/font-awesome/css/font-awesome.css +0 -2337
  235. package/public/assets/font-awesome/css/font-awesome.min.css +0 -4
  236. package/public/assets/font-awesome/desktop.ini +0 -4
  237. package/public/assets/font-awesome/fonts/FontAwesome.otf +0 -0
  238. package/public/assets/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  239. package/public/assets/font-awesome/fonts/fontawesome-webfont.svg +0 -2671
  240. package/public/assets/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  241. package/public/assets/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  242. package/public/assets/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
  243. package/public/assets/font-awesome/less/animated.less +0 -34
  244. package/public/assets/font-awesome/less/bordered-pulled.less +0 -25
  245. package/public/assets/font-awesome/less/core.less +0 -12
  246. package/public/assets/font-awesome/less/fixed-width.less +0 -6
  247. package/public/assets/font-awesome/less/font-awesome.less +0 -18
  248. package/public/assets/font-awesome/less/icons.less +0 -789
  249. package/public/assets/font-awesome/less/larger.less +0 -13
  250. package/public/assets/font-awesome/less/list.less +0 -19
  251. package/public/assets/font-awesome/less/mixins.less +0 -60
  252. package/public/assets/font-awesome/less/path.less +0 -15
  253. package/public/assets/font-awesome/less/rotated-flipped.less +0 -20
  254. package/public/assets/font-awesome/less/screen-reader.less +0 -5
  255. package/public/assets/font-awesome/less/stacked.less +0 -20
  256. package/public/assets/font-awesome/less/variables.less +0 -800
  257. package/public/assets/font-awesome/scss/_animated.scss +0 -34
  258. package/public/assets/font-awesome/scss/_bordered-pulled.scss +0 -25
  259. package/public/assets/font-awesome/scss/_core.scss +0 -12
  260. package/public/assets/font-awesome/scss/_fixed-width.scss +0 -6
  261. package/public/assets/font-awesome/scss/_icons.scss +0 -789
  262. package/public/assets/font-awesome/scss/_larger.scss +0 -13
  263. package/public/assets/font-awesome/scss/_list.scss +0 -19
  264. package/public/assets/font-awesome/scss/_mixins.scss +0 -60
  265. package/public/assets/font-awesome/scss/_path.scss +0 -15
  266. package/public/assets/font-awesome/scss/_rotated-flipped.scss +0 -20
  267. package/public/assets/font-awesome/scss/_screen-reader.scss +0 -5
  268. package/public/assets/font-awesome/scss/_stacked.scss +0 -20
  269. package/public/assets/font-awesome/scss/_variables.scss +0 -800
  270. package/public/assets/font-awesome/scss/font-awesome.scss +0 -18
  271. package/public/main-es2018.625fb92c9cbb6a4131de.js +0 -1
  272. package/public/main-es5.625fb92c9cbb6a4131de.js +0 -1
  273. package/public/polyfills-es2018.713f95af1f028e444854.js +0 -1
  274. package/public/polyfills-es5.c78877945523541d2597.js +0 -1
  275. package/public/runtime-es2018.a4dadbc03350107420a4.js +0 -1
  276. package/public/runtime-es5.a4dadbc03350107420a4.js +0 -1
  277. package/public/styles.71bb0d04cad96b5efbe1.css +0 -19
  278. package/src/assets/font-awesome/HELP-US-OUT.txt +0 -7
  279. package/src/assets/font-awesome/css/font-awesome.css +0 -2337
  280. package/src/assets/font-awesome/css/font-awesome.min.css +0 -4
  281. package/src/assets/font-awesome/desktop.ini +0 -4
  282. package/src/assets/font-awesome/fonts/FontAwesome.otf +0 -0
  283. package/src/assets/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  284. package/src/assets/font-awesome/fonts/fontawesome-webfont.svg +0 -2671
  285. package/src/assets/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  286. package/src/assets/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  287. package/src/assets/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
  288. package/src/assets/font-awesome/less/animated.less +0 -34
  289. package/src/assets/font-awesome/less/bordered-pulled.less +0 -25
  290. package/src/assets/font-awesome/less/core.less +0 -12
  291. package/src/assets/font-awesome/less/fixed-width.less +0 -6
  292. package/src/assets/font-awesome/less/font-awesome.less +0 -18
  293. package/src/assets/font-awesome/less/icons.less +0 -789
  294. package/src/assets/font-awesome/less/larger.less +0 -13
  295. package/src/assets/font-awesome/less/list.less +0 -19
  296. package/src/assets/font-awesome/less/mixins.less +0 -60
  297. package/src/assets/font-awesome/less/path.less +0 -15
  298. package/src/assets/font-awesome/less/rotated-flipped.less +0 -20
  299. package/src/assets/font-awesome/less/screen-reader.less +0 -5
  300. package/src/assets/font-awesome/less/stacked.less +0 -20
  301. package/src/assets/font-awesome/less/variables.less +0 -800
  302. package/src/assets/font-awesome/scss/_animated.scss +0 -34
  303. package/src/assets/font-awesome/scss/_bordered-pulled.scss +0 -25
  304. package/src/assets/font-awesome/scss/_core.scss +0 -12
  305. package/src/assets/font-awesome/scss/_fixed-width.scss +0 -6
  306. package/src/assets/font-awesome/scss/_icons.scss +0 -789
  307. package/src/assets/font-awesome/scss/_larger.scss +0 -13
  308. package/src/assets/font-awesome/scss/_list.scss +0 -19
  309. package/src/assets/font-awesome/scss/_mixins.scss +0 -60
  310. package/src/assets/font-awesome/scss/_path.scss +0 -15
  311. package/src/assets/font-awesome/scss/_rotated-flipped.scss +0 -20
  312. package/src/assets/font-awesome/scss/_screen-reader.scss +0 -5
  313. package/src/assets/font-awesome/scss/_stacked.scss +0 -20
  314. package/src/assets/font-awesome/scss/_variables.scss +0 -800
  315. package/src/assets/font-awesome/scss/font-awesome.scss +0 -18
@@ -1,79 +1,79 @@
1
- @import '~@angular/material/theming';
2
-
3
- @mixin app-theme($theme) {
4
- $primary: map-get($theme, primary);
5
- $accent: map-get($theme, accent);
6
- $warn: map-get($theme, warn);
7
- $background: map-get($theme, background);
8
- $foreground: map-get($theme, foreground);
9
-
10
- .app-defaults {
11
- background-color: mat-color($background, background);
12
- color: mat-color($foreground, text);
13
- }
14
-
15
- .theme-menu {
16
- background-color: mat-color($accent, A200);
17
- }
18
-
19
- .menuBarButtonGroup {
20
- background-color: mat-color($foreground, divider);
21
- }
22
-
23
- }
24
-
25
- .fullheight {
26
- height: 100%;
27
- }
28
-
29
- .mainContainer {
30
- display: flex;
31
- flex-direction: column;
32
- align-items: stretch;
33
- height: 100%;
34
- }
35
-
36
- .mainWindow {
37
- flex: 30;
38
- }
39
-
40
- .menuBar {
41
- flex: 1;
42
- }
43
-
44
- .menuBarContainer {
45
- display: flex;
46
- flex-direction: row;
47
- justify-content: space-between;
48
- flex-wrap: nowrap;
49
- }
50
-
51
- .menuBarContainer .menuBarButtonGroups {
52
- flex-grow: 1;
53
- }
54
-
55
- .menuBarContainer .menuBarButtonGroups:first-child {
56
- text-align: left;
57
- margin-left: 2px;
58
- }
59
-
60
- .menuBarContainer .menuBarButtonGroups {
61
- text-align: center;
62
- }
63
-
64
- .menuBarContainer .menuBarButtonGroups:last-child {
65
- text-align: right;
66
- margin-right: 2px;
67
- }
68
-
69
- .menuBarButtonGroups .menuBarNavButtons {
70
- width: 99%;
71
- }
72
-
73
- .menuBarButtonGroups .menuBarAlarmsButton {
74
- width: 25%;
75
- }
76
-
77
- .menuBarButtonGroups .menuBarSettingsButton {
78
- width: 25%;
79
- }
1
+ @use '~@angular/material' as mat;
2
+
3
+ @mixin app-theme($theme) {
4
+ $primary: map-get($theme, primary);
5
+ $accent: map-get($theme, accent);
6
+ $warn: map-get($theme, warn);
7
+ $background: map-get($theme, background);
8
+ $foreground: map-get($theme, foreground);
9
+
10
+ .app-defaults {
11
+ background-color: mat.get-color-from-palette($background, background);
12
+ color: mat.get-color-from-palette($foreground, text);
13
+ }
14
+
15
+ .theme-menu {
16
+ background-color: mat.get-color-from-palette($accent, A200);
17
+ }
18
+
19
+ .menuBarButtonGroup {
20
+ background-color: mat.get-color-from-palette($foreground, divider);
21
+ }
22
+
23
+ }
24
+
25
+ .fullheight {
26
+ height: 100%;
27
+ }
28
+
29
+ .mainContainer {
30
+ display: flex;
31
+ flex-direction: column;
32
+ align-items: stretch;
33
+ height: 100%;
34
+ }
35
+
36
+ .mainWindow {
37
+ flex: 30;
38
+ }
39
+
40
+ .menuBar {
41
+ flex: 1;
42
+ }
43
+
44
+ .menuBarContainer {
45
+ display: flex;
46
+ flex-direction: row;
47
+ justify-content: space-between;
48
+ flex-wrap: nowrap;
49
+ }
50
+
51
+ .menuBarContainer .menuBarButtonGroups {
52
+ flex-grow: 1;
53
+ }
54
+
55
+ .menuBarContainer .menuBarButtonGroups:first-child {
56
+ text-align: left;
57
+ margin-left: 2px;
58
+ }
59
+
60
+ .menuBarContainer .menuBarButtonGroups {
61
+ text-align: center;
62
+ }
63
+
64
+ .menuBarContainer .menuBarButtonGroups:last-child {
65
+ text-align: right;
66
+ margin-right: 2px;
67
+ }
68
+
69
+ .menuBarButtonGroups .menuBarNavButtons {
70
+ width: 99%;
71
+ }
72
+
73
+ .menuBarButtonGroups .menuBarAlarmsButton {
74
+ width: 25%;
75
+ }
76
+
77
+ .menuBarButtonGroups .menuBarSettingsButton {
78
+ width: 25%;
79
+ }
@@ -1,32 +1,32 @@
1
- import { TestBed, waitForAsync } from '@angular/core/testing';
2
-
3
- import { AppComponent } from './app.component';
4
-
5
- describe('AppComponent', () => {
6
- beforeEach(waitForAsync(() => {
7
- TestBed.configureTestingModule({
8
- declarations: [
9
- AppComponent
10
- ],
11
- }).compileComponents();
12
- }));
13
-
14
- it('should create the app', waitForAsync(() => {
15
- const fixture = TestBed.createComponent(AppComponent);
16
- const app = fixture.debugElement.componentInstance;
17
- expect(app).toBeTruthy();
18
- }));
19
-
20
- it(`should have as title 'app'`, waitForAsync(() => {
21
- const fixture = TestBed.createComponent(AppComponent);
22
- const app = fixture.debugElement.componentInstance;
23
- expect(app.title).toEqual('app');
24
- }));
25
-
26
- it('should render title in a h1 tag', waitForAsync(() => {
27
- const fixture = TestBed.createComponent(AppComponent);
28
- fixture.detectChanges();
29
- const compiled = fixture.debugElement.nativeElement;
30
- expect(compiled.querySelector('h1').textContent).toContain('Welcome to app!');
31
- }));
32
- });
1
+ import { TestBed, waitForAsync } from '@angular/core/testing';
2
+
3
+ import { AppComponent } from './app.component';
4
+
5
+ describe('AppComponent', () => {
6
+ beforeEach(waitForAsync(() => {
7
+ TestBed.configureTestingModule({
8
+ declarations: [
9
+ AppComponent
10
+ ],
11
+ }).compileComponents();
12
+ }));
13
+
14
+ it('should create the app', waitForAsync(() => {
15
+ const fixture = TestBed.createComponent(AppComponent);
16
+ const app = fixture.debugElement.componentInstance;
17
+ expect(app).toBeTruthy();
18
+ }));
19
+
20
+ it(`should have as title 'app'`, waitForAsync(() => {
21
+ const fixture = TestBed.createComponent(AppComponent);
22
+ const app = fixture.debugElement.componentInstance;
23
+ expect(app.title).toEqual('app');
24
+ }));
25
+
26
+ it('should render title in a h1 tag', waitForAsync(() => {
27
+ const fixture = TestBed.createComponent(AppComponent);
28
+ fixture.detectChanges();
29
+ const compiled = fixture.debugElement.nativeElement;
30
+ expect(compiled.querySelector('h1').textContent).toContain('Welcome to app!');
31
+ }));
32
+ });
@@ -1,192 +1,191 @@
1
- import { Component, OnInit, OnDestroy } from '@angular/core';
2
- import { Subscription } from 'rxjs';
3
- import { OverlayContainer } from '@angular/cdk/overlay';
4
- import { MatSnackBar } from '@angular/material/snack-bar';
5
- import { Howl } from 'howler';
6
- import { LayoutSplitsService } from './layout-splits.service';
7
- import * as screenfull from 'screenfull';
8
-
9
- import { AppSettingsService } from './app-settings.service';
10
- import { DataSetService } from './data-set.service';
11
- import { NotificationsService } from './notifications.service';
12
- import { SignalKConnectionService, SignalKStatus } from './signalk-connection.service';
13
-
14
-
15
- declare var NoSleep: any; //3rd party
16
-
17
- @Component({
18
- selector: 'app-root',
19
- templateUrl: './app.component.html',
20
- styleUrls: ['./app.component.scss']
21
- })
22
- export class AppComponent implements OnInit, OnDestroy {
23
-
24
- noSleep = new NoSleep();
25
-
26
- pageName: string = '';
27
-
28
- unlockStatus: boolean = false;
29
- unlockStatusSub: Subscription;
30
-
31
- fullscreenStatus = false;
32
-
33
- themeName: string;
34
- themeClass: string = 'modern-dark fullheight';
35
- themeNameSub: Subscription;
36
-
37
- isNightMode: boolean = false;
38
-
39
- appNotificationSub: Subscription;
40
- connectionStatusSub: Subscription;
41
-
42
- constructor(
43
- private AppSettingsService: AppSettingsService,
44
- private DataSetService: DataSetService,
45
- private notificationsService: NotificationsService,
46
- private _snackBar: MatSnackBar,
47
- private overlayContainer: OverlayContainer,
48
- private LayoutSplitsService: LayoutSplitsService,
49
- private signalKConnectionService: SignalKConnectionService,
50
- ) { }
51
-
52
-
53
- ngOnInit() {
54
- this.unlockStatusSub = this.AppSettingsService.getUnlockStatusAsO().subscribe(
55
- status => { this.unlockStatus = status; }
56
- );
57
-
58
- this.themeNameSub = this.AppSettingsService.getThemeNameAsO().subscribe(
59
- newTheme => {
60
- this.themeClass = newTheme + ' fullheight'; // need fullheight there to set 100%height
61
- if (this.themeName) {
62
- this.overlayContainer.getContainerElement().classList.remove(this.themeName);
63
- }
64
- this.overlayContainer.getContainerElement().classList.add(newTheme);
65
- this.themeName = newTheme;
66
- }
67
- )
68
- this.DataSetService.startAllDataSets();
69
-
70
-
71
- // Snackbar Notification Code
72
- this.appNotificationSub = this.notificationsService.getSnackbarAppNotifications().subscribe(
73
-
74
- appNotification => {
75
- this._snackBar.open(appNotification.message, 'dismiss', {
76
- duration: appNotification.duration,
77
- verticalPosition: 'top'
78
- });
79
-
80
- if (!this.AppSettingsService.getNotificationConfig().sound.disableSound) {
81
- let sound = new Howl({
82
- src: ['assets/notification.mp3'],
83
- autoUnlock: true,
84
- autoSuspend: false,
85
- autoplay: true,
86
- preload: true,
87
- loop: false,
88
- volume: 0.3,
89
- onend: function() {
90
- // console.log('Finished!');
91
- },
92
- onloaderror: function() {
93
- console.log("snackbar: player onload error");
94
- },
95
- onplayerror: function() {
96
- console.log("snackbar: player locked");
97
- this.howlPlayer.once('unlock', function() {
98
- this.howlPlayer.play();
99
- });
100
- }
101
- });
102
- sound.play();
103
- }
104
- }
105
- )
106
-
107
- // Connection Status Notification sub
108
- this.connectionStatusSub = this.signalKConnectionService.getSignalKConnectionsStatus().subscribe(
109
- status => {
110
- this.displayConnectionsStatusNotification(status);
111
- }
112
- );
113
-
114
-
115
- }
116
-
117
- ngOnDestroy() {
118
- this.unlockStatusSub.unsubscribe();
119
- this.themeNameSub.unsubscribe();
120
- this.appNotificationSub.unsubscribe();
121
- this.connectionStatusSub.unsubscribe();
122
- }
123
-
124
- displayConnectionsStatusNotification(connectionsStatus: SignalKStatus) {
125
- if (connectionsStatus.operation == 1) { // starting server
126
- if (!connectionsStatus.endpoint.status) {
127
- this.notificationsService.sendSnackbarNotification(connectionsStatus.endpoint.message, 5000);
128
- } else {
129
- this.notificationsService.sendSnackbarNotification("Connected to SignalK Server.", 5000);
130
- }
131
- }
132
- if (connectionsStatus.operation == 3) { // URL changed/reset
133
- this.notificationsService.sendSnackbarNotification("Connection Update/Reset successful.", 5000);
134
- }
135
- }
136
-
137
- setTheme(theme: string) {
138
- this.AppSettingsService.setThemName(theme);
139
- }
140
-
141
- setNightMode(nightMode: boolean) {
142
- this.isNightMode = nightMode;
143
- if (this.isNightMode) {
144
- this.AppSettingsService.setThemName("nightMode");
145
- } else {
146
- this.AppSettingsService.setThemName(this.AppSettingsService.getThemeName());
147
- }
148
- }
149
-
150
- unlockPage() {
151
- if (this.unlockStatus) {
152
- console.log("Locking");
153
- this.unlockStatus = false;
154
- } else {
155
- console.log("Unlocking");
156
- this.unlockStatus = true;
157
- }
158
- this.AppSettingsService.setUnlockStatus(this.unlockStatus);
159
- }
160
-
161
-
162
- newPage() {
163
- this.LayoutSplitsService.newRootSplit();
164
- //this.router.navigate(['/page', rootNodes.findIndex(uuid => uuid == newuuid)]);
165
- }
166
-
167
- pageDown() {
168
- this.LayoutSplitsService.previousRoot();
169
-
170
- }
171
-
172
- pageUp() {
173
- this.LayoutSplitsService.nextRoot();
174
-
175
- }
176
-
177
- toggleFullScreen() {
178
- if (screenfull.isEnabled) {
179
- if (!this.fullscreenStatus) {
180
- screenfull.request();
181
- this.noSleep.enable();
182
- } else {
183
- if (screenfull.isFullscreen) {
184
- screenfull.exit();
185
- }
186
- this.noSleep.disable();
187
- }
188
- }
189
- this.fullscreenStatus = !this.fullscreenStatus;
190
- }
191
-
192
- }
1
+ import { Component, OnInit, OnDestroy } from '@angular/core';
2
+ import { Subscription } from 'rxjs';
3
+ import { OverlayContainer } from '@angular/cdk/overlay';
4
+ import { MatSnackBar } from '@angular/material/snack-bar';
5
+ import { Howl } from 'howler';
6
+ import { LayoutSplitsService } from './layout-splits.service';
7
+ import * as screenfull from 'screenfull';
8
+
9
+ import { AppSettingsService } from './app-settings.service';
10
+ import { DataSetService } from './data-set.service';
11
+ import { NotificationsService } from './notifications.service';
12
+ import { SignalKConnectionService, SignalKStatus } from './signalk-connection.service';
13
+
14
+ declare var NoSleep: any; //3rd party
15
+
16
+ @Component({
17
+ selector: 'app-root',
18
+ templateUrl: './app.component.html',
19
+ styleUrls: ['./app.component.scss']
20
+ })
21
+ export class AppComponent implements OnInit, OnDestroy {
22
+
23
+ noSleep = new NoSleep();
24
+
25
+ pageName: string = '';
26
+
27
+ unlockStatus: boolean = false;
28
+ unlockStatusSub: Subscription;
29
+
30
+ fullscreenStatus = false;
31
+
32
+ themeName: string;
33
+ themeClass: string = 'modern-dark fullheight';
34
+ themeNameSub: Subscription;
35
+
36
+ isNightMode: boolean = false;
37
+
38
+ appNotificationSub: Subscription;
39
+ connectionStatusSub: Subscription;
40
+
41
+ constructor(
42
+ private AppSettingsService: AppSettingsService,
43
+ private DataSetService: DataSetService,
44
+ private notificationsService: NotificationsService,
45
+ private _snackBar: MatSnackBar,
46
+ private overlayContainer: OverlayContainer,
47
+ private LayoutSplitsService: LayoutSplitsService,
48
+ private signalKConnectionService: SignalKConnectionService,
49
+ ) { }
50
+
51
+
52
+ ngOnInit() {
53
+ this.unlockStatusSub = this.AppSettingsService.getUnlockStatusAsO().subscribe(
54
+ status => { this.unlockStatus = status; }
55
+ );
56
+
57
+ this.themeNameSub = this.AppSettingsService.getThemeNameAsO().subscribe(
58
+ newTheme => {
59
+ this.themeClass = newTheme + ' fullheight'; // need fullheight there to set 100%height
60
+ if (this.themeName) {
61
+ this.overlayContainer.getContainerElement().classList.remove(this.themeName);
62
+ }
63
+ this.overlayContainer.getContainerElement().classList.add(newTheme);
64
+ this.themeName = newTheme;
65
+ }
66
+ )
67
+ this.DataSetService.startAllDataSets();
68
+
69
+
70
+ // Snackbar Notification Code
71
+ this.appNotificationSub = this.notificationsService.getSnackbarAppNotifications().subscribe(
72
+
73
+ appNotification => {
74
+ this._snackBar.open(appNotification.message, 'dismiss', {
75
+ duration: appNotification.duration,
76
+ verticalPosition: 'top'
77
+ });
78
+
79
+ if (!this.AppSettingsService.getNotificationConfig().sound.disableSound) {
80
+ let sound = new Howl({
81
+ src: ['assets/notification.mp3'],
82
+ autoUnlock: true,
83
+ autoSuspend: false,
84
+ autoplay: true,
85
+ preload: true,
86
+ loop: false,
87
+ volume: 0.3,
88
+ onend: function() {
89
+ // console.log('Finished!');
90
+ },
91
+ onloaderror: function() {
92
+ console.log("snackbar: player onload error");
93
+ },
94
+ onplayerror: function() {
95
+ console.log("snackbar: player locked");
96
+ this.howlPlayer.once('unlock', function() {
97
+ this.howlPlayer.play();
98
+ });
99
+ }
100
+ });
101
+ sound.play();
102
+ }
103
+ }
104
+ )
105
+
106
+ // Connection Status Notification sub
107
+ this.connectionStatusSub = this.signalKConnectionService.getSignalKConnectionsStatus().subscribe(
108
+ status => {
109
+ this.displayConnectionsStatusNotification(status);
110
+ }
111
+ );
112
+
113
+
114
+ }
115
+
116
+ ngOnDestroy() {
117
+ this.unlockStatusSub.unsubscribe();
118
+ this.themeNameSub.unsubscribe();
119
+ this.appNotificationSub.unsubscribe();
120
+ this.connectionStatusSub.unsubscribe();
121
+ }
122
+
123
+ displayConnectionsStatusNotification(connectionsStatus: SignalKStatus) {
124
+ if (connectionsStatus.operation == 1) { // starting server
125
+ if (!connectionsStatus.endpoint.status) {
126
+ this.notificationsService.sendSnackbarNotification(connectionsStatus.endpoint.message, 5000);
127
+ } else {
128
+ this.notificationsService.sendSnackbarNotification("Connected to SignalK Server.", 5000);
129
+ }
130
+ }
131
+ if (connectionsStatus.operation == 3) { // URL changed/reset
132
+ this.notificationsService.sendSnackbarNotification("Connection Update/Reset successful.", 5000);
133
+ }
134
+ }
135
+
136
+ setTheme(theme: string) {
137
+ this.AppSettingsService.setThemName(theme);
138
+ }
139
+
140
+ setNightMode(nightMode: boolean) {
141
+ this.isNightMode = nightMode;
142
+ if (this.isNightMode) {
143
+ this.AppSettingsService.setThemName("nightMode");
144
+ } else {
145
+ this.AppSettingsService.setThemName(this.AppSettingsService.getThemeName());
146
+ }
147
+ }
148
+
149
+ unlockPage() {
150
+ if (this.unlockStatus) {
151
+ console.log("Locking");
152
+ this.unlockStatus = false;
153
+ } else {
154
+ console.log("Unlocking");
155
+ this.unlockStatus = true;
156
+ }
157
+ this.AppSettingsService.setUnlockStatus(this.unlockStatus);
158
+ }
159
+
160
+
161
+ newPage() {
162
+ this.LayoutSplitsService.newRootSplit();
163
+ //this.router.navigate(['/page', rootNodes.findIndex(uuid => uuid == newuuid)]);
164
+ }
165
+
166
+ pageDown() {
167
+ this.LayoutSplitsService.previousRoot();
168
+
169
+ }
170
+
171
+ pageUp() {
172
+ this.LayoutSplitsService.nextRoot();
173
+
174
+ }
175
+
176
+ toggleFullScreen() {
177
+ if (screenfull.isEnabled) {
178
+ if (!this.fullscreenStatus) {
179
+ screenfull.request();
180
+ this.noSleep.enable();
181
+ } else {
182
+ if (screenfull.isFullscreen) {
183
+ screenfull.exit();
184
+ }
185
+ this.noSleep.disable();
186
+ }
187
+ }
188
+ this.fullscreenStatus = !this.fullscreenStatus;
189
+ }
190
+
191
+ }