@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,141 +1,141 @@
1
- import { Injectable } from '@angular/core';
2
- import { AppSettingsService } from './app-settings.service';
3
- import { Format, Policy } from "./signalk-interfaces";
4
-
5
- export interface IWidget {
6
- uuid: string;
7
- type: string;
8
- config: IWidgetConfig;
9
- }
10
-
11
- export interface IWidgetConfig {
12
- displayName?: string;
13
- filterSelfPaths?: boolean; //widget filter self paths only?
14
- paths?: {
15
- [key: string]: IWidgetPaths;
16
- },
17
- convertUnitTo?: string;
18
- usage?: {
19
- [key: string]: string[]; // Autopilot: key should match key in paths, specifies autopilot widget possible paths for AP mode
20
- },
21
- typeVal?: {
22
- [key: string]: string; // Autopilot: key should match key in paths, specifies autopilot widget paths value type for AP mode
23
- },
24
-
25
- //numeric data
26
- numDecimal?: number; // number of decimal places if a number
27
- numInt?: number;
28
- showMin?: boolean;
29
- showMax?: boolean;
30
-
31
- //Wind Gauge data
32
- windSectorEnable?: boolean;
33
- windSectorWindowSeconds?: number;
34
- laylineEnable?: boolean;
35
- laylineAngle?: number;
36
-
37
- //gauge Data
38
- gaugeType?: string;
39
- gaugeUnitLabelFormat?: string;
40
- gaugeTicks?: boolean;
41
- barGraph?: boolean;
42
- backgroundColor?: string;
43
- frameColor?: string;
44
- barColor?: string;
45
- radialSize?: string;
46
- minValue?: number;
47
- maxValue?: number;
48
- rotateFace?: boolean;
49
- autoStart?: boolean;
50
- compassUseNumbers?: boolean;
51
-
52
- //Historical
53
- dataSetUUID?: string;
54
- invertData?: boolean;
55
- displayMinMax?: boolean;
56
- animateGraph?: boolean;
57
- includeZero?: boolean;
58
- verticalGraph?: boolean;
59
-
60
- //Puts
61
- putEnable?: boolean;
62
- putMomentary?: boolean;
63
- putMomentaryValue?: boolean;
64
-
65
- //iFrame
66
- widgetUrl?: string;
67
- }
68
-
69
- interface IWidgetPaths {
70
- description: string;
71
- path: string | null; //can be null or set
72
- source: string | null; //can be null or set
73
- pathType: string | null;
74
- pathFilter?: string, //Future - use to filter path list ie. self.navigation.* or *.navigation.*.blabla.*
75
- convertUnitTo?: string; // Convert SignalK value to specific format for display. Also used as a source to identify conversion group
76
- isPathConfigurable: boolean; // should we show this path in Widget Path config or is it static and hidden
77
- period?: number; // SignalK - period=[millisecs] becomes the transmission rate, e.g. every period/1000 seconds. Default: 1000
78
- format?: Format; // SignalK - format=[delta|full] specifies delta or full format. Default: delta
79
- policy?: Policy; // SignalK - policy=[instant|ideal|fixed]. Default: ideal
80
- minPeriod?: number; // SignalK - minPeriod=[millisecs] becomes the fastest message transmission rate allowed, e.g. every minPeriod/1000 seconds. This is only relevant for policy='instant' to avoid swamping the client or network.
81
- }
82
-
83
-
84
-
85
- @Injectable()
86
- export class WidgetManagerService {
87
-
88
- widgets: Array<IWidget>;
89
-
90
- constructor(
91
- private AppSettingsService: AppSettingsService
92
- ) {
93
- this.widgets = this.AppSettingsService.getWidgets();
94
- }
95
-
96
-
97
-
98
- private newUuid() {
99
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
100
- var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
101
- return v.toString(16);
102
- });
103
- }
104
-
105
- getWidget(uuid: string) {
106
- return this.widgets.find(w => w.uuid == uuid);
107
- }
108
-
109
- newWidget() {
110
- let uuid = this.newUuid();
111
- this.widgets.push({ uuid: uuid, type: "WidgetBlank", config: null });
112
- this.saveWidgets();
113
- return uuid;
114
- }
115
-
116
- deleteWidget(uuid) {
117
- let wIndex = this.widgets.findIndex(w => w.uuid == uuid)
118
- if (wIndex < 0) { return; } // not found
119
- this.widgets.splice(wIndex, 1);
120
- }
121
-
122
- updateWidgetType(uuid: string, newNodeType: string) {
123
- let wIndex = this.widgets.findIndex(w => w.uuid == uuid)
124
- if (wIndex < 0) { return; } // not found
125
- this.widgets[wIndex].config = null;
126
- this.widgets[wIndex].type = newNodeType;
127
- this.saveWidgets();
128
- }
129
-
130
- updateWidgetConfig(uuid: string, newConfig) {
131
- let wIndex = this.widgets.findIndex(w => w.uuid == uuid)
132
- if (wIndex < 0) { return; } // not found
133
- this.widgets[wIndex].config = newConfig;
134
- this.saveWidgets();
135
- }
136
-
137
- saveWidgets() {
138
- this.AppSettingsService.saveWidgets(this.widgets);
139
- }
140
-
141
- }
1
+ import { Injectable } from '@angular/core';
2
+ import { AppSettingsService } from './app-settings.service';
3
+ import { Format, Policy } from "./signalk-interfaces";
4
+
5
+ export interface IWidget {
6
+ uuid: string;
7
+ type: string;
8
+ config: IWidgetConfig;
9
+ }
10
+
11
+ export interface IWidgetConfig {
12
+ displayName?: string;
13
+ filterSelfPaths?: boolean; //widget filter self paths only?
14
+ paths?: {
15
+ [key: string]: IWidgetPaths;
16
+ },
17
+ convertUnitTo?: string;
18
+ usage?: {
19
+ [key: string]: string[]; // Autopilot: key should match key in paths, specifies autopilot widget possible paths for AP mode
20
+ },
21
+ typeVal?: {
22
+ [key: string]: string; // Autopilot: key should match key in paths, specifies autopilot widget paths value type for AP mode
23
+ },
24
+
25
+ //numeric data
26
+ numDecimal?: number; // number of decimal places if a number
27
+ numInt?: number;
28
+ showMin?: boolean;
29
+ showMax?: boolean;
30
+
31
+ //Wind Gauge data
32
+ windSectorEnable?: boolean;
33
+ windSectorWindowSeconds?: number;
34
+ laylineEnable?: boolean;
35
+ laylineAngle?: number;
36
+
37
+ //gauge Data
38
+ gaugeType?: string;
39
+ gaugeUnitLabelFormat?: string;
40
+ gaugeTicks?: boolean;
41
+ barGraph?: boolean;
42
+ backgroundColor?: string;
43
+ frameColor?: string;
44
+ barColor?: string;
45
+ radialSize?: string;
46
+ minValue?: number;
47
+ maxValue?: number;
48
+ rotateFace?: boolean;
49
+ autoStart?: boolean;
50
+ compassUseNumbers?: boolean;
51
+
52
+ //Historical
53
+ dataSetUUID?: string;
54
+ invertData?: boolean;
55
+ displayMinMax?: boolean;
56
+ animateGraph?: boolean;
57
+ includeZero?: boolean;
58
+ verticalGraph?: boolean;
59
+
60
+ //Puts
61
+ putEnable?: boolean;
62
+ putMomentary?: boolean;
63
+ putMomentaryValue?: boolean;
64
+
65
+ //iFrame
66
+ widgetUrl?: string;
67
+ }
68
+
69
+ interface IWidgetPaths {
70
+ description: string;
71
+ path: string | null; //can be null or set
72
+ source: string | null; //can be null or set
73
+ pathType: string | null;
74
+ pathFilter?: string, //Future - use to filter path list ie. self.navigation.* or *.navigation.*.blabla.*
75
+ convertUnitTo?: string; // Convert SignalK value to specific format for display. Also used as a source to identify conversion group
76
+ isPathConfigurable: boolean; // should we show this path in Widget Path config or is it static and hidden
77
+ period?: number; // SignalK - period=[millisecs] becomes the transmission rate, e.g. every period/1000 seconds. Default: 1000
78
+ format?: Format; // SignalK - format=[delta|full] specifies delta or full format. Default: delta
79
+ policy?: Policy; // SignalK - policy=[instant|ideal|fixed]. Default: ideal
80
+ minPeriod?: number; // SignalK - minPeriod=[millisecs] becomes the fastest message transmission rate allowed, e.g. every minPeriod/1000 seconds. This is only relevant for policy='instant' to avoid swamping the client or network.
81
+ }
82
+
83
+
84
+
85
+ @Injectable()
86
+ export class WidgetManagerService {
87
+
88
+ widgets: Array<IWidget>;
89
+
90
+ constructor(
91
+ private AppSettingsService: AppSettingsService
92
+ ) {
93
+ this.widgets = this.AppSettingsService.getWidgets();
94
+ }
95
+
96
+
97
+
98
+ private newUuid() {
99
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
100
+ var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
101
+ return v.toString(16);
102
+ });
103
+ }
104
+
105
+ getWidget(uuid: string) {
106
+ return this.widgets.find(w => w.uuid == uuid);
107
+ }
108
+
109
+ newWidget() {
110
+ let uuid = this.newUuid();
111
+ this.widgets.push({ uuid: uuid, type: "WidgetBlank", config: null });
112
+ this.saveWidgets();
113
+ return uuid;
114
+ }
115
+
116
+ deleteWidget(uuid) {
117
+ let wIndex = this.widgets.findIndex(w => w.uuid == uuid)
118
+ if (wIndex < 0) { return; } // not found
119
+ this.widgets.splice(wIndex, 1);
120
+ }
121
+
122
+ updateWidgetType(uuid: string, newNodeType: string) {
123
+ let wIndex = this.widgets.findIndex(w => w.uuid == uuid)
124
+ if (wIndex < 0) { return; } // not found
125
+ this.widgets[wIndex].config = null;
126
+ this.widgets[wIndex].type = newNodeType;
127
+ this.saveWidgets();
128
+ }
129
+
130
+ updateWidgetConfig(uuid: string, newConfig) {
131
+ let wIndex = this.widgets.findIndex(w => w.uuid == uuid)
132
+ if (wIndex < 0) { return; } // not found
133
+ this.widgets[wIndex].config = newConfig;
134
+ this.saveWidgets();
135
+ }
136
+
137
+ saveWidgets() {
138
+ this.AppSettingsService.saveWidgets(this.widgets);
139
+ }
140
+
141
+ }
@@ -7,7 +7,7 @@
7
7
 
8
8
  <div class="settingsButton" *ngIf="unlockStatus">
9
9
  <button color="accent" mat-mini-fab class="selector-fab" (click)="openWidgetSettings()">
10
- <span class="fa fa-cog"></span>
10
+ <span class="fa-solid fa-cog"></span>
11
11
  </button>
12
12
  </div>
13
13
  </div>
@@ -1,4 +1,4 @@
1
- @import '~@angular/material/theming';
1
+ @use '~@angular/material' as mat;
2
2
 
3
3
  @mixin widget-numeric-theme($theme) {
4
4
  $primary: map-get($theme, primary);
@@ -8,11 +8,11 @@
8
8
  $wind: map-get($theme, wind);
9
9
 
10
10
  .warn {
11
- color: mat-color($warn, 500);
11
+ color: mat.get-color-from-palette($warn, 500);
12
12
  }
13
13
 
14
14
  .warn-contrast {
15
- color: mat-contrast($warn, 500);
15
+ color: mat.get-contrast-color-from-palette($warn, 500);
16
16
  }
17
17
 
18
18
  }
@@ -1,25 +1,25 @@
1
- import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
2
-
3
- import { WidgetNumericComponent } from './widget-numeric.component';
4
-
5
- describe('WidgetNumericComponent', () => {
6
- let component: WidgetNumericComponent;
7
- let fixture: ComponentFixture<WidgetNumericComponent>;
8
-
9
- beforeEach(waitForAsync(() => {
10
- TestBed.configureTestingModule({
11
- declarations: [ WidgetNumericComponent ]
12
- })
13
- .compileComponents();
14
- }));
15
-
16
- beforeEach(() => {
17
- fixture = TestBed.createComponent(WidgetNumericComponent);
18
- component = fixture.componentInstance;
19
- fixture.detectChanges();
20
- });
21
-
22
- it('should be created', () => {
23
- expect(component).toBeTruthy();
24
- });
25
- });
1
+ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
2
+
3
+ import { WidgetNumericComponent } from './widget-numeric.component';
4
+
5
+ describe('WidgetNumericComponent', () => {
6
+ let component: WidgetNumericComponent;
7
+ let fixture: ComponentFixture<WidgetNumericComponent>;
8
+
9
+ beforeEach(waitForAsync(() => {
10
+ TestBed.configureTestingModule({
11
+ declarations: [ WidgetNumericComponent ]
12
+ })
13
+ .compileComponents();
14
+ }));
15
+
16
+ beforeEach(() => {
17
+ fixture = TestBed.createComponent(WidgetNumericComponent);
18
+ component = fixture.componentInstance;
19
+ fixture.detectChanges();
20
+ });
21
+
22
+ it('should be created', () => {
23
+ expect(component).toBeTruthy();
24
+ });
25
+ });
@@ -1,28 +1,28 @@
1
- <div id="{{widgetUUID}}" #simpleLinear class="simpleLinearWidget" style="margin: 0px; padding: 0px; width: 100%; height: 100%;">
2
-
3
- <svg-simple-linear-gauge class="simpleLinearGauge"
4
- [displayName]="config.displayName"
5
- [unitLabel]="unitsLabel"
6
- [dataValue]="dataValue"
7
- [barColor]="barColor"
8
- [barColorGradient]="barColorGradient"
9
- [barColorBackground]="barColorBackground"
10
- [gaugeValue]="gaugeValue"
11
- [gaugeMaxValue]="config.maxValue"
12
- [gaugeMinValue]="config.minValue"
13
- ></svg-simple-linear-gauge>
14
-
15
- <div class="settingsButton" *ngIf="unlockStatus">
16
- <button type="button" color="accent" mat-mini-fab class="selector-fab" (click)="openWidgetSettings()">
17
- <span class="fa fa-cog"></span>
18
- </button>
19
- </div>
20
- <div #primary class='primary' style="display: none;"></div>
21
- <div #accent class='accent' style="display: none;"></div>
22
- <div #warn class='warn' style="display: none;"></div>
23
- <div #primaryDark class='primaryDark' style="display: none;"></div>
24
- <div #accentDark class='accentDark' style="display: none;"></div>
25
- <div #warnDark class='warnDark' style="display: none;"></div>
26
- <div #background class='background' style="display: none;"></div>
27
- <div #text class='text' style="display: none;"></div>
28
- </div>
1
+ <div id="{{widgetUUID}}" #simpleLinear class="simpleLinearWidget" style="margin: 0px; padding: 0px; width: 100%; height: 100%;">
2
+
3
+ <svg-simple-linear-gauge class="simpleLinearGauge"
4
+ [displayName]="config.displayName"
5
+ [unitLabel]="unitsLabel"
6
+ [dataValue]="dataValue"
7
+ [barColor]="barColor"
8
+ [barColorGradient]="barColorGradient"
9
+ [barColorBackground]="barColorBackground"
10
+ [gaugeValue]="gaugeValue"
11
+ [gaugeMaxValue]="config.maxValue"
12
+ [gaugeMinValue]="config.minValue"
13
+ ></svg-simple-linear-gauge>
14
+
15
+ <div class="settingsButton" *ngIf="unlockStatus">
16
+ <button type="button" color="accent" mat-mini-fab class="selector-fab" (click)="openWidgetSettings()">
17
+ <span class="fa-solid fa-cog"></span>
18
+ </button>
19
+ </div>
20
+ <div #primary class='primary' style="display: none;"></div>
21
+ <div #accent class='accent' style="display: none;"></div>
22
+ <div #warn class='warn' style="display: none;"></div>
23
+ <div #primaryDark class='primaryDark' style="display: none;"></div>
24
+ <div #accentDark class='accentDark' style="display: none;"></div>
25
+ <div #warnDark class='warnDark' style="display: none;"></div>
26
+ <div #background class='background' style="display: none;"></div>
27
+ <div #text class='text' style="display: none;"></div>
28
+ </div>
@@ -1,64 +1,64 @@
1
- @import '~@angular/material/theming';
2
-
3
- @mixin widget-simple-linear-theme($theme) {
4
-
5
- $ngGauge: map-get($theme, ngGauge);
6
- $themeForeground: map-get($theme, foreground);
7
-
8
- app-widget-simple-linear {
9
- .primary {
10
- color: mat-color($ngGauge, primary-gaugeFaceLight);
11
- }
12
- .accent {
13
- color: mat-color($ngGauge, accent-gaugeFaceLight);
14
- }
15
- .warn {
16
- color: mat-color($ngGauge, warn-gaugeFaceLight);
17
- }
18
- .primaryDark {
19
- color: mat-color($ngGauge, primary-gaugeFaceDark);
20
- }
21
- .accentDark {
22
- color: mat-color($ngGauge, accent-gaugeFaceDark);
23
- }
24
- .warnDark {
25
- color: mat-color($ngGauge, warn-gaugeFaceDark);
26
- }
27
- .background {
28
- color: mat-color($themeForeground, divider);
29
- }
30
- .text {
31
- color: mat-color($themeForeground, text);
32
- }
33
- }
34
- }
35
-
36
- .simpleLinearGauge {
37
- display:block;
38
- position: relative;
39
- border:none;
40
- margin: 0px;
41
- padding: 5px 0px;
42
- width: 100%;
43
- height: 100%;
44
- }
45
-
46
- .settingsButton {
47
- position: absolute;
48
- bottom: 5%;
49
- left: 50%;
50
- transform: translate(-50%);
51
- }
52
-
53
-
54
- .tab-group {
55
- border: 1px solid #e8e8e8;
56
- }
57
-
58
- .tab-content {
59
- padding: 16px;
60
- }
61
-
62
- .full-width {
63
- width: 100%;
64
- }
1
+ @use '~@angular/material' as mat;
2
+
3
+ @mixin widget-simple-linear-theme($theme) {
4
+
5
+ $ngGauge: map-get($theme, ngGauge);
6
+ $themeForeground: map-get($theme, foreground);
7
+
8
+ app-widget-simple-linear {
9
+ .primary {
10
+ color: mat.get-color-from-palette($ngGauge, primary-gaugeFaceLight);
11
+ }
12
+ .accent {
13
+ color: mat.get-color-from-palette($ngGauge, accent-gaugeFaceLight);
14
+ }
15
+ .warn {
16
+ color: mat.get-color-from-palette($ngGauge, warn-gaugeFaceLight);
17
+ }
18
+ .primaryDark {
19
+ color: mat.get-color-from-palette($ngGauge, primary-gaugeFaceDark);
20
+ }
21
+ .accentDark {
22
+ color: mat.get-color-from-palette($ngGauge, accent-gaugeFaceDark);
23
+ }
24
+ .warnDark {
25
+ color: mat.get-color-from-palette($ngGauge, warn-gaugeFaceDark);
26
+ }
27
+ .background {
28
+ color: mat.get-color-from-palette($themeForeground, divider);
29
+ }
30
+ .text {
31
+ color: mat.get-color-from-palette($themeForeground, text);
32
+ }
33
+ }
34
+ }
35
+
36
+ .simpleLinearGauge {
37
+ display:block;
38
+ position: relative;
39
+ border:none;
40
+ margin: 0px;
41
+ padding: 5px 0px;
42
+ width: 100%;
43
+ height: 100%;
44
+ }
45
+
46
+ .settingsButton {
47
+ position: absolute;
48
+ bottom: 5%;
49
+ left: 50%;
50
+ transform: translate(-50%);
51
+ }
52
+
53
+
54
+ .tab-group {
55
+ border: 1px solid #e8e8e8;
56
+ }
57
+
58
+ .tab-content {
59
+ padding: 16px;
60
+ }
61
+
62
+ .full-width {
63
+ width: 100%;
64
+ }
@@ -1,25 +1,25 @@
1
- import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
2
-
3
- import { WidgetSimpleLinearComponent } from './widget-simple-linear.component';
4
-
5
- describe('WidgetSimpleLinearComponent', () => {
6
- let component: WidgetSimpleLinearComponent;
7
- let fixture: ComponentFixture<WidgetSimpleLinearComponent>;
8
-
9
- beforeEach(waitForAsync(() => {
10
- TestBed.configureTestingModule({
11
- declarations: [ WidgetSimpleLinearComponent ]
12
- })
13
- .compileComponents();
14
- }));
15
-
16
- beforeEach(() => {
17
- fixture = TestBed.createComponent(WidgetSimpleLinearComponent);
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 { WidgetSimpleLinearComponent } from './widget-simple-linear.component';
4
+
5
+ describe('WidgetSimpleLinearComponent', () => {
6
+ let component: WidgetSimpleLinearComponent;
7
+ let fixture: ComponentFixture<WidgetSimpleLinearComponent>;
8
+
9
+ beforeEach(waitForAsync(() => {
10
+ TestBed.configureTestingModule({
11
+ declarations: [ WidgetSimpleLinearComponent ]
12
+ })
13
+ .compileComponents();
14
+ }));
15
+
16
+ beforeEach(() => {
17
+ fixture = TestBed.createComponent(WidgetSimpleLinearComponent);
18
+ component = fixture.componentInstance;
19
+ fixture.detectChanges();
20
+ });
21
+
22
+ it('should create', () => {
23
+ expect(component).toBeTruthy();
24
+ });
25
+ });