@mxtommy/kip 1.2.3 → 2.0.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 (354) hide show
  1. package/CHANGELOG.md +180 -135
  2. package/CONTRIBUTORS.md +16 -16
  3. package/KipGaugeSample3-1024x508.png +0 -0
  4. package/LICENSE +21 -0
  5. package/README.md +140 -102
  6. package/package.json +93 -84
  7. package/public/3rdpartylicenses.txt +68 -139
  8. package/public/assets/NoSleep.min.js +2 -2
  9. package/public/assets/fontawesome6/css/all.min.css +6 -0
  10. package/public/assets/fontawesome6/webfonts/fa-brands-400.ttf +0 -0
  11. package/public/assets/fontawesome6/webfonts/fa-brands-400.woff2 +0 -0
  12. package/public/assets/fontawesome6/webfonts/fa-regular-400.ttf +0 -0
  13. package/public/assets/fontawesome6/webfonts/fa-regular-400.woff2 +0 -0
  14. package/public/assets/fontawesome6/webfonts/fa-solid-900.ttf +0 -0
  15. package/public/assets/fontawesome6/webfonts/fa-solid-900.woff2 +0 -0
  16. package/public/assets/fontawesome6/webfonts/fa-v4compatibility.ttf +0 -0
  17. package/public/assets/fontawesome6/webfonts/fa-v4compatibility.woff2 +0 -0
  18. package/public/assets/icon-192x192.png +0 -0
  19. package/public/assets/icon-256x256.png +0 -0
  20. package/public/assets/icon-384x384.png +0 -0
  21. package/public/assets/icon-512x512.png +0 -0
  22. package/public/assets/icon-64x64.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.9dba30de44eed02b.js +1 -0
  31. package/public/manifest.json +38 -0
  32. package/public/polyfills.d1da7d2e907c253a.js +1 -0
  33. package/public/runtime.e75056c32c37f59d.js +1 -0
  34. package/public/styles.6b1c2c92be18a2cc.css +1 -0
  35. package/.angulardoc.json +0 -4
  36. package/angular.json +0 -153
  37. package/e2e/app.e2e-spec.ts +0 -14
  38. package/e2e/app.po.ts +0 -11
  39. package/e2e/tsconfig.e2e.json +0 -14
  40. package/karma.conf.js +0 -31
  41. package/public/assets/font-awesome/HELP-US-OUT.txt +0 -7
  42. package/public/assets/font-awesome/css/font-awesome.css +0 -2337
  43. package/public/assets/font-awesome/css/font-awesome.min.css +0 -4
  44. package/public/assets/font-awesome/desktop.ini +0 -4
  45. package/public/assets/font-awesome/fonts/FontAwesome.otf +0 -0
  46. package/public/assets/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  47. package/public/assets/font-awesome/fonts/fontawesome-webfont.svg +0 -2671
  48. package/public/assets/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  49. package/public/assets/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  50. package/public/assets/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
  51. package/public/assets/font-awesome/less/animated.less +0 -34
  52. package/public/assets/font-awesome/less/bordered-pulled.less +0 -25
  53. package/public/assets/font-awesome/less/core.less +0 -12
  54. package/public/assets/font-awesome/less/fixed-width.less +0 -6
  55. package/public/assets/font-awesome/less/font-awesome.less +0 -18
  56. package/public/assets/font-awesome/less/icons.less +0 -789
  57. package/public/assets/font-awesome/less/larger.less +0 -13
  58. package/public/assets/font-awesome/less/list.less +0 -19
  59. package/public/assets/font-awesome/less/mixins.less +0 -60
  60. package/public/assets/font-awesome/less/path.less +0 -15
  61. package/public/assets/font-awesome/less/rotated-flipped.less +0 -20
  62. package/public/assets/font-awesome/less/screen-reader.less +0 -5
  63. package/public/assets/font-awesome/less/stacked.less +0 -20
  64. package/public/assets/font-awesome/less/variables.less +0 -800
  65. package/public/assets/font-awesome/scss/_animated.scss +0 -34
  66. package/public/assets/font-awesome/scss/_bordered-pulled.scss +0 -25
  67. package/public/assets/font-awesome/scss/_core.scss +0 -12
  68. package/public/assets/font-awesome/scss/_fixed-width.scss +0 -6
  69. package/public/assets/font-awesome/scss/_icons.scss +0 -789
  70. package/public/assets/font-awesome/scss/_larger.scss +0 -13
  71. package/public/assets/font-awesome/scss/_list.scss +0 -19
  72. package/public/assets/font-awesome/scss/_mixins.scss +0 -60
  73. package/public/assets/font-awesome/scss/_path.scss +0 -15
  74. package/public/assets/font-awesome/scss/_rotated-flipped.scss +0 -20
  75. package/public/assets/font-awesome/scss/_screen-reader.scss +0 -5
  76. package/public/assets/font-awesome/scss/_stacked.scss +0 -20
  77. package/public/assets/font-awesome/scss/_variables.scss +0 -800
  78. package/public/assets/font-awesome/scss/font-awesome.scss +0 -18
  79. package/public/main-es2018.ab0adc5af3ab3e70c849.js +0 -1
  80. package/public/main-es5.ab0adc5af3ab3e70c849.js +0 -1
  81. package/public/polyfills-es2018.713f95af1f028e444854.js +0 -1
  82. package/public/polyfills-es5.c78877945523541d2597.js +0 -1
  83. package/public/runtime-es2018.a4dadbc03350107420a4.js +0 -1
  84. package/public/runtime-es5.a4dadbc03350107420a4.js +0 -1
  85. package/public/styles.71bb0d04cad96b5efbe1.css +0 -19
  86. package/src/app/alarm-menu/alarm-menu.component.html +0 -55
  87. package/src/app/alarm-menu/alarm-menu.component.scss +0 -53
  88. package/src/app/alarm-menu/alarm-menu.component.spec.ts +0 -25
  89. package/src/app/alarm-menu/alarm-menu.component.ts +0 -186
  90. package/src/app/app-help/app-help.component.css +0 -4
  91. package/src/app/app-help/app-help.component.html +0 -135
  92. package/src/app/app-help/app-help.component.ts +0 -45
  93. package/src/app/app-settings.service.spec.ts +0 -15
  94. package/src/app/app-settings.service.ts +0 -478
  95. package/src/app/app.component.css +0 -39
  96. package/src/app/app.component.html +0 -93
  97. package/src/app/app.component.scss +0 -79
  98. package/src/app/app.component.spec.ts +0 -32
  99. package/src/app/app.component.ts +0 -192
  100. package/src/app/app.module.ts +0 -200
  101. package/src/app/config.blank.const.ts +0 -52
  102. package/src/app/config.blank.notification.const.ts +0 -19
  103. package/src/app/config.blank.units.const.ts +0 -23
  104. package/src/app/config.demo.const.ts +0 -384
  105. package/src/app/data-browser/data-browser.component.css +0 -29
  106. package/src/app/data-browser/data-browser.component.html +0 -44
  107. package/src/app/data-browser/data-browser.component.spec.ts +0 -25
  108. package/src/app/data-browser/data-browser.component.ts +0 -91
  109. package/src/app/data-browser-row/data-browser-row-unit-modal.html +0 -17
  110. package/src/app/data-browser-row/data-browser-row.component.css +0 -10
  111. package/src/app/data-browser-row/data-browser-row.component.html +0 -5
  112. package/src/app/data-browser-row/data-browser-row.component.ts +0 -79
  113. package/src/app/data-set.service.spec.ts +0 -15
  114. package/src/app/data-set.service.ts +0 -273
  115. package/src/app/dynamic-widget.directive.spec.ts +0 -8
  116. package/src/app/dynamic-widget.directive.ts +0 -11
  117. package/src/app/filter-self.pipe.spec.ts +0 -8
  118. package/src/app/filter-self.pipe.ts +0 -14
  119. package/src/app/fit-text.directive.spec.ts +0 -8
  120. package/src/app/fit-text.directive.ts +0 -61
  121. package/src/app/gauge-steel/gauge-steel.component.css +0 -5
  122. package/src/app/gauge-steel/gauge-steel.component.html +0 -4
  123. package/src/app/gauge-steel/gauge-steel.component.spec.ts +0 -25
  124. package/src/app/gauge-steel/gauge-steel.component.ts +0 -282
  125. package/src/app/gauges-module/base-gauge.ts +0 -301
  126. package/src/app/gauges-module/gauges.module.ts +0 -17
  127. package/src/app/gauges-module/linear-gauge.ts +0 -50
  128. package/src/app/gauges-module/radial-gauge.ts +0 -48
  129. package/src/app/layout-split/layout-split.component.html +0 -30
  130. package/src/app/layout-split/layout-split.component.scss +0 -33
  131. package/src/app/layout-split/layout-split.component.spec.ts +0 -25
  132. package/src/app/layout-split/layout-split.component.ts +0 -59
  133. package/src/app/layout-splits.service.spec.ts +0 -15
  134. package/src/app/layout-splits.service.ts +0 -284
  135. package/src/app/modal-path-selector/modal-path-selector.component.html +0 -62
  136. package/src/app/modal-path-selector/modal-path-selector.component.scss +0 -39
  137. package/src/app/modal-path-selector/modal-path-selector.component.spec.ts +0 -25
  138. package/src/app/modal-path-selector/modal-path-selector.component.ts +0 -132
  139. package/src/app/modal-widget/modal-widget.component.css +0 -33
  140. package/src/app/modal-widget/modal-widget.component.html +0 -341
  141. package/src/app/modal-widget/modal-widget.component.spec.ts +0 -25
  142. package/src/app/modal-widget/modal-widget.component.ts +0 -84
  143. package/src/app/notifications.service.spec.ts +0 -12
  144. package/src/app/notifications.service.ts +0 -392
  145. package/src/app/object-keys.pipe.spec.ts +0 -8
  146. package/src/app/object-keys.pipe.ts +0 -13
  147. package/src/app/reset-config/reset-config.component.css +0 -0
  148. package/src/app/reset-config/reset-config.component.html +0 -3
  149. package/src/app/reset-config/reset-config.component.spec.ts +0 -25
  150. package/src/app/reset-config/reset-config.component.ts +0 -31
  151. package/src/app/root-display/root-display.component.css +0 -0
  152. package/src/app/root-display/root-display.component.html +0 -4
  153. package/src/app/root-display/root-display.component.spec.ts +0 -25
  154. package/src/app/root-display/root-display.component.ts +0 -57
  155. package/src/app/safe.pipe.ts +0 -16
  156. package/src/app/settings/settings.component.css +0 -9
  157. package/src/app/settings/settings.component.html +0 -25
  158. package/src/app/settings/settings.component.spec.ts +0 -25
  159. package/src/app/settings/settings.component.ts +0 -22
  160. package/src/app/settings-config/settings-config.component.css +0 -39
  161. package/src/app/settings-config/settings-config.component.html +0 -118
  162. package/src/app/settings-config/settings-config.component.spec.ts +0 -25
  163. package/src/app/settings-config/settings-config.component.ts +0 -161
  164. package/src/app/settings-datasets/settings-datasets.component.html +0 -43
  165. package/src/app/settings-datasets/settings-datasets.component.scss +0 -39
  166. package/src/app/settings-datasets/settings-datasets.component.spec.ts +0 -25
  167. package/src/app/settings-datasets/settings-datasets.component.ts +0 -98
  168. package/src/app/settings-datasets/settings-datasets.modal.html +0 -54
  169. package/src/app/settings-notifications/settings-notifications.component.css +0 -0
  170. package/src/app/settings-notifications/settings-notifications.component.html +0 -65
  171. package/src/app/settings-notifications/settings-notifications.component.spec.ts +0 -25
  172. package/src/app/settings-notifications/settings-notifications.component.ts +0 -29
  173. package/src/app/settings-signalk/settings-signalk.component.css +0 -3
  174. package/src/app/settings-signalk/settings-signalk.component.html +0 -89
  175. package/src/app/settings-signalk/settings-signalk.component.spec.ts +0 -25
  176. package/src/app/settings-signalk/settings-signalk.component.ts +0 -174
  177. package/src/app/settings-units/settings-units.component.css +0 -4
  178. package/src/app/settings-units/settings-units.component.html +0 -19
  179. package/src/app/settings-units/settings-units.component.spec.ts +0 -25
  180. package/src/app/settings-units/settings-units.component.ts +0 -62
  181. package/src/app/settings-zones/settings-zones.component.css +0 -22
  182. package/src/app/settings-zones/settings-zones.component.html +0 -70
  183. package/src/app/settings-zones/settings-zones.component.ts +0 -154
  184. package/src/app/settings-zones/settings-zones.modal.css +0 -14
  185. package/src/app/settings-zones/settings-zones.modal.html +0 -39
  186. package/src/app/signalk-connection.service.ts +0 -344
  187. package/src/app/signalk-delta.service.spec.ts +0 -15
  188. package/src/app/signalk-delta.service.ts +0 -97
  189. package/src/app/signalk-full.service.spec.ts +0 -15
  190. package/src/app/signalk-full.service.ts +0 -99
  191. package/src/app/signalk-interfaces.ts +0 -129
  192. package/src/app/signalk-requests.service.spec.ts +0 -12
  193. package/src/app/signalk-requests.service.ts +0 -180
  194. package/src/app/signalk.service.spec.ts +0 -15
  195. package/src/app/signalk.service.ts +0 -428
  196. package/src/app/svg-autopilot/svg-autopilot.component.html +0 -1036
  197. package/src/app/svg-autopilot/svg-autopilot.component.spec.ts +0 -25
  198. package/src/app/svg-autopilot/svg-autopilot.component.ts +0 -174
  199. package/src/app/svg-simple-linear-gauge/svg-simple-linear-gauge.component.html +0 -119
  200. package/src/app/svg-simple-linear-gauge/svg-simple-linear-gauge.component.scss +0 -0
  201. package/src/app/svg-simple-linear-gauge/svg-simple-linear-gauge.component.spec.ts +0 -25
  202. package/src/app/svg-simple-linear-gauge/svg-simple-linear-gauge.component.ts +0 -49
  203. package/src/app/svg-wind/svg-wind.component.css +0 -0
  204. package/src/app/svg-wind/svg-wind.component.html +0 -969
  205. package/src/app/svg-wind/svg-wind.component.scss +0 -76
  206. package/src/app/svg-wind/svg-wind.component.spec.ts +0 -25
  207. package/src/app/svg-wind/svg-wind.component.ts +0 -280
  208. package/src/app/unit-window/unit-window.component.css +0 -37
  209. package/src/app/unit-window/unit-window.component.html +0 -8
  210. package/src/app/unit-window/unit-window.component.spec.ts +0 -25
  211. package/src/app/unit-window/unit-window.component.ts +0 -134
  212. package/src/app/unit-window/unit-window.modal.html +0 -25
  213. package/src/app/units.service.ts +0 -300
  214. package/src/app/widget-autopilot/widget-autopilot.component.html +0 -85
  215. package/src/app/widget-autopilot/widget-autopilot.component.scss +0 -191
  216. package/src/app/widget-autopilot/widget-autopilot.component.spec.ts +0 -25
  217. package/src/app/widget-autopilot/widget-autopilot.component.ts +0 -781
  218. package/src/app/widget-blank/widget-blank.component.html +0 -5
  219. package/src/app/widget-blank/widget-blank.component.scss +0 -22
  220. package/src/app/widget-blank/widget-blank.component.spec.ts +0 -25
  221. package/src/app/widget-blank/widget-blank.component.ts +0 -17
  222. package/src/app/widget-gauge/widget-gauge.component.css +0 -26
  223. package/src/app/widget-gauge/widget-gauge.component.html +0 -29
  224. package/src/app/widget-gauge/widget-gauge.component.spec.ts +0 -25
  225. package/src/app/widget-gauge/widget-gauge.component.ts +0 -120
  226. package/src/app/widget-gauge-ng-linear/widget-gauge-ng-linear.component.html +0 -126
  227. package/src/app/widget-gauge-ng-linear/widget-gauge-ng-linear.component.scss +0 -93
  228. package/src/app/widget-gauge-ng-linear/widget-gauge-ng-linear.component.spec.ts +0 -25
  229. package/src/app/widget-gauge-ng-linear/widget-gauge-ng-linear.component.ts +0 -424
  230. package/src/app/widget-gauge-ng-radial/widget-gauge-ng-radial.component.html +0 -122
  231. package/src/app/widget-gauge-ng-radial/widget-gauge-ng-radial.component.scss +0 -69
  232. package/src/app/widget-gauge-ng-radial/widget-gauge-ng-radial.component.spec.ts +0 -25
  233. package/src/app/widget-gauge-ng-radial/widget-gauge-ng-radial.component.ts +0 -553
  234. package/src/app/widget-historical/widget-historical.component.css +0 -31
  235. package/src/app/widget-historical/widget-historical.component.html +0 -14
  236. package/src/app/widget-historical/widget-historical.component.scss +0 -0
  237. package/src/app/widget-historical/widget-historical.component.spec.ts +0 -25
  238. package/src/app/widget-historical/widget-historical.component.ts +0 -306
  239. package/src/app/widget-iframe/widget-iframe.component.css +0 -12
  240. package/src/app/widget-iframe/widget-iframe.component.html +0 -21
  241. package/src/app/widget-iframe/widget-iframe.component.spec.ts +0 -25
  242. package/src/app/widget-iframe/widget-iframe.component.ts +0 -63
  243. package/src/app/widget-list.service.spec.ts +0 -15
  244. package/src/app/widget-list.service.ts +0 -135
  245. package/src/app/widget-manager.service.spec.ts +0 -15
  246. package/src/app/widget-manager.service.ts +0 -141
  247. package/src/app/widget-numeric/widget-numeric.component.html +0 -13
  248. package/src/app/widget-numeric/widget-numeric.component.scss +0 -52
  249. package/src/app/widget-numeric/widget-numeric.component.spec.ts +0 -25
  250. package/src/app/widget-numeric/widget-numeric.component.ts +0 -457
  251. package/src/app/widget-simple-linear/widget-simple-linear.component.html +0 -28
  252. package/src/app/widget-simple-linear/widget-simple-linear.component.scss +0 -64
  253. package/src/app/widget-simple-linear/widget-simple-linear.component.spec.ts +0 -25
  254. package/src/app/widget-simple-linear/widget-simple-linear.component.ts +0 -199
  255. package/src/app/widget-state/widget-state.component.html +0 -27
  256. package/src/app/widget-state/widget-state.component.scss +0 -68
  257. package/src/app/widget-state/widget-state.component.spec.ts +0 -25
  258. package/src/app/widget-state/widget-state.component.ts +0 -178
  259. package/src/app/widget-switch/widget-switch.component.css +0 -70
  260. package/src/app/widget-switch/widget-switch.component.html +0 -17
  261. package/src/app/widget-switch/widget-switch.component.spec.ts +0 -25
  262. package/src/app/widget-switch/widget-switch.component.ts +0 -134
  263. package/src/app/widget-text-generic/widget-text-generic.component.css +0 -55
  264. package/src/app/widget-text-generic/widget-text-generic.component.html +0 -9
  265. package/src/app/widget-text-generic/widget-text-generic.component.spec.ts +0 -25
  266. package/src/app/widget-text-generic/widget-text-generic.component.ts +0 -253
  267. package/src/app/widget-tutorial/widget-tutorial.component.css +0 -0
  268. package/src/app/widget-tutorial/widget-tutorial.component.html +0 -34
  269. package/src/app/widget-tutorial/widget-tutorial.component.spec.ts +0 -25
  270. package/src/app/widget-tutorial/widget-tutorial.component.ts +0 -18
  271. package/src/app/widget-unknown/widget-unknown.component.css +0 -0
  272. package/src/app/widget-unknown/widget-unknown.component.html +0 -3
  273. package/src/app/widget-unknown/widget-unknown.component.spec.ts +0 -25
  274. package/src/app/widget-unknown/widget-unknown.component.ts +0 -15
  275. package/src/app/widget-wind/widget-wind.component.css +0 -24
  276. package/src/app/widget-wind/widget-wind.component.html +0 -20
  277. package/src/app/widget-wind/widget-wind.component.spec.ts +0 -25
  278. package/src/app/widget-wind/widget-wind.component.ts +0 -369
  279. package/src/assets/.gitkeep +0 -0
  280. package/src/assets/NoSleep.min.js +0 -2
  281. package/src/assets/alarm.mp3 +0 -0
  282. package/src/assets/alert.mp3 +0 -0
  283. package/src/assets/alertl.old.mp3 +0 -0
  284. package/src/assets/emergency.mp3 +0 -0
  285. package/src/assets/font-awesome/HELP-US-OUT.txt +0 -7
  286. package/src/assets/font-awesome/css/font-awesome.css +0 -2337
  287. package/src/assets/font-awesome/css/font-awesome.min.css +0 -4
  288. package/src/assets/font-awesome/desktop.ini +0 -4
  289. package/src/assets/font-awesome/fonts/FontAwesome.otf +0 -0
  290. package/src/assets/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  291. package/src/assets/font-awesome/fonts/fontawesome-webfont.svg +0 -2671
  292. package/src/assets/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  293. package/src/assets/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  294. package/src/assets/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
  295. package/src/assets/font-awesome/less/animated.less +0 -34
  296. package/src/assets/font-awesome/less/bordered-pulled.less +0 -25
  297. package/src/assets/font-awesome/less/core.less +0 -12
  298. package/src/assets/font-awesome/less/fixed-width.less +0 -6
  299. package/src/assets/font-awesome/less/font-awesome.less +0 -18
  300. package/src/assets/font-awesome/less/icons.less +0 -789
  301. package/src/assets/font-awesome/less/larger.less +0 -13
  302. package/src/assets/font-awesome/less/list.less +0 -19
  303. package/src/assets/font-awesome/less/mixins.less +0 -60
  304. package/src/assets/font-awesome/less/path.less +0 -15
  305. package/src/assets/font-awesome/less/rotated-flipped.less +0 -20
  306. package/src/assets/font-awesome/less/screen-reader.less +0 -5
  307. package/src/assets/font-awesome/less/stacked.less +0 -20
  308. package/src/assets/font-awesome/less/variables.less +0 -800
  309. package/src/assets/font-awesome/scss/_animated.scss +0 -34
  310. package/src/assets/font-awesome/scss/_bordered-pulled.scss +0 -25
  311. package/src/assets/font-awesome/scss/_core.scss +0 -12
  312. package/src/assets/font-awesome/scss/_fixed-width.scss +0 -6
  313. package/src/assets/font-awesome/scss/_icons.scss +0 -789
  314. package/src/assets/font-awesome/scss/_larger.scss +0 -13
  315. package/src/assets/font-awesome/scss/_list.scss +0 -19
  316. package/src/assets/font-awesome/scss/_mixins.scss +0 -60
  317. package/src/assets/font-awesome/scss/_path.scss +0 -15
  318. package/src/assets/font-awesome/scss/_rotated-flipped.scss +0 -20
  319. package/src/assets/font-awesome/scss/_screen-reader.scss +0 -5
  320. package/src/assets/font-awesome/scss/_stacked.scss +0 -20
  321. package/src/assets/font-awesome/scss/_variables.scss +0 -800
  322. package/src/assets/font-awesome/scss/font-awesome.scss +0 -18
  323. package/src/assets/notification.mp3 +0 -0
  324. package/src/assets/steelseries-min.js +0 -25
  325. package/src/assets/steelseries-min.js.map +0 -8
  326. package/src/assets/steelseries.js +0 -15834
  327. package/src/assets/svg-autopilot-inkscape-plain.svg +0 -983
  328. package/src/assets/svg-wind-inkscape.svg +0 -1358
  329. package/src/assets/tween-min.js +0 -1
  330. package/src/assets/tween.js +0 -381
  331. package/src/assets/warn.mp3 +0 -0
  332. package/src/environments/environment.prod.ts +0 -3
  333. package/src/environments/environment.ts +0 -8
  334. package/src/favicon.ico +0 -0
  335. package/src/index.html +0 -20
  336. package/src/main.ts +0 -11
  337. package/src/polyfills.ts +0 -76
  338. package/src/styles.css +0 -47
  339. package/src/styles.scss +0 -157
  340. package/src/test.ts +0 -32
  341. package/src/themes/darkBlueTheme.scss +0 -116
  342. package/src/themes/defaultTheme.scss +0 -49
  343. package/src/themes/highContrastTheme.scss +0 -46
  344. package/src/themes/modernTheme.scss +0 -142
  345. package/src/themes/nightMode.scss +0 -184
  346. package/src/themes/platypusTheme.scss +0 -79
  347. package/src/themes/signalkTheme.scss +0 -111
  348. package/src/tsconfig.app.json +0 -15
  349. package/src/tsconfig.spec.json +0 -20
  350. package/src/typings.d.ts +0 -5
  351. package/tsconfig.json +0 -24
  352. package/tslint.json +0 -143
  353. /package/{KipGaugeSample-1-1024x545.png → KipGaugeSample1-1024x545.png} +0 -0
  354. /package/{KipMonitor-1024x488.png → KipGaugeSample2-1024x488.png} +0 -0
@@ -1,306 +0,0 @@
1
- import { Component, OnInit, ViewChild, ElementRef, OnDestroy, Input, Inject } from '@angular/core';
2
- import Chart from 'chart.js/auto';
3
- import 'chartjs-adapter-moment';
4
- import { MatDialog } from '@angular/material/dialog';
5
- import { Subscription } from 'rxjs';
6
-
7
- import { ModalWidgetComponent } from '../modal-widget/modal-widget.component';
8
-
9
- import { dataPoint, DataSetService } from '../data-set.service';
10
- import { WidgetManagerService, IWidget, IWidgetConfig } from '../widget-manager.service';
11
- import { UnitsService } from '../units.service';
12
- import { AppSettingsService } from '../app-settings.service';
13
-
14
- const defaultConfig: IWidgetConfig = {
15
- displayName: null,
16
- filterSelfPaths: true,
17
- convertUnitTo: "unitless",
18
- dataSetUUID: null,
19
- invertData: false,
20
- displayMinMax: false,
21
- includeZero: true,
22
- minValue: null,
23
- maxValue: null,
24
- verticalGraph: true,
25
- };
26
-
27
- interface IDataSetOptions {
28
- label: string;
29
- data: any;
30
- fill: string;
31
- //borderWidth: 1
32
- borderColor: any;
33
- borderDash?: number[];
34
- }
35
-
36
- @Component({
37
- selector: 'app-widget-historical',
38
- templateUrl: './widget-historical.component.html',
39
- styleUrls: ['./widget-historical.component.css']
40
- })
41
- export class WidgetHistoricalComponent implements OnInit, OnDestroy {
42
-
43
- @Input('widgetUUID') widgetUUID: string;
44
- @Input('unlockStatus') unlockStatus: boolean;
45
-
46
- @ViewChild('lineGraph', {static: true, read: ElementRef}) lineGraph: ElementRef;
47
-
48
- activeWidget: IWidget;
49
- config: IWidgetConfig;
50
-
51
- chartCtx;
52
- chart = null;
53
-
54
- chartDataMin = [];
55
- chartDataAvg = [];
56
- chartDataMax = [];
57
-
58
- textColor; // store the color of text for the graph...
59
-
60
- dataSetSub: Subscription = null;
61
-
62
- // dynamics theme support
63
- themeNameSub: Subscription = null;
64
-
65
- constructor(
66
- public dialog:MatDialog,
67
- private DataSetService: DataSetService,
68
- private WidgetManagerService: WidgetManagerService,
69
- private UnitsService: UnitsService,
70
- private AppSettingsService: AppSettingsService, // need for theme change subscription
71
- ) { }
72
-
73
- ngOnInit() {
74
- this.activeWidget = this.WidgetManagerService.getWidget(this.widgetUUID);
75
- if (this.activeWidget.config === null) {
76
- // no data, let's set some!
77
- this.WidgetManagerService.updateWidgetConfig(this.widgetUUID, defaultConfig);
78
- this.config = defaultConfig; // load default config.
79
- } else {
80
- this.config = this.activeWidget.config;
81
- }
82
-
83
- //TODO, this only works on chart init... need to find when theme changes...
84
- this.textColor = window.getComputedStyle(this.lineGraph.nativeElement).color;
85
-
86
- this.chartCtx = this.lineGraph.nativeElement.getContext('2d');
87
- this.startChart();
88
- this.subscribeDataSet();
89
- //setTimeout(this.subscribeDataSet(),1000);//TODO, see why destroy called before we even get subbed (or just after...)
90
- this.subscribeTheme();
91
-
92
- }
93
-
94
- ngOnDestroy() {
95
- if (this.chart !== null) {
96
- //this.chart.destroy(); // doesn't seem to be needed since chart is destoryed when destroying component. was giving errors. (maybe html was destroyed before this is called?)
97
- }
98
- this.unsubscribeDataSet();
99
- console.log("stopped Sub");
100
- this.unsubscribeTheme();
101
-
102
- }
103
-
104
- startChart() {
105
- if (this.chart !== null) {
106
- this.chart.destroy();
107
- }
108
- // Setup DataSets
109
- let ds: IDataSetOptions[] = [
110
- {
111
- label: this.config.displayName + '-Avg.',
112
- data: this.chartDataAvg,
113
- fill: 'false',
114
- //borderWidth: 1
115
- borderColor: this.textColor
116
- }
117
- ];
118
- if (this.config.displayMinMax) {
119
- ds.push(
120
- {
121
- label: this.config.displayName + '-Min',
122
- data: this.chartDataMin,
123
- fill: '+1',
124
- //borderWidth: 1
125
- borderColor: this.textColor,
126
- borderDash: [10, 10]
127
- },
128
- {
129
- label: this.config.displayName + '-Max',
130
- data: this.chartDataMax,
131
- fill: '-1',
132
- //borderWidth: 1
133
- borderColor: this.textColor,
134
- borderDash: [5, 5]
135
- }
136
- );
137
- }
138
- let xAxis = this.config.verticalGraph ? 'y' : 'x';
139
- let yAxis = this.config.verticalGraph ? 'x' : 'y';
140
-
141
- this.chart = new Chart(this.chartCtx,{
142
- type: 'line',
143
- data: {
144
- datasets: ds
145
- },
146
- options: {
147
- maintainAspectRatio: false,
148
- indexAxis: this.config.verticalGraph ? 'y' : 'x',
149
- parsing: {
150
- xAxisKey: xAxis,
151
- yAxisKey: yAxis,
152
- },
153
- scales: {
154
- [yAxis]: {
155
- position: this.config.verticalGraph ? 'top' : 'right',
156
- ...(this.config.minValue !== null && {suggestedMin: this.config.minValue}),
157
- ...(this.config.maxValue !== null && {suggestedMax: this.config.maxValue}),
158
- ...(this.config.includeZero && { beginAtZero: true}),
159
- },
160
- [xAxis]: {
161
- position: this.config.verticalGraph ? 'right': 'bottom',
162
- type: 'time',
163
- time: {
164
- minUnit: 'second',
165
- round: 'second',
166
- },
167
- ticks: {
168
- callback: timeDifferenceFromNow,
169
- }
170
- }
171
- }
172
- }
173
- });
174
-
175
- function timeDifferenceFromNow(_value, index, values) {
176
- let tickTime = values[index].value;
177
- let nowTime = Date.now();
178
- let timeDiff = Math.floor((nowTime - tickTime) / 1000);
179
- if (timeDiff < 60) {
180
- return "0:" + timeDiff.toString().padStart(2, "0") + " secs ago";
181
- } else if (timeDiff < 3600) {
182
- let minDiff = Math.floor(timeDiff / 60);
183
- let secDiff = timeDiff % 60;
184
- return (minDiff.toString() + ":" + secDiff.toString().padStart(2, "0") + " mins ago");
185
- } else if (timeDiff < 86400) {
186
- let hourDiff = Math.floor(timeDiff / 3600);
187
- return (hourDiff.toString() + " hours ago");
188
- } else {
189
- let dayDiff = Math.floor(timeDiff / 86400);
190
- return (dayDiff.toString() + " days ago");
191
- }
192
- }
193
- }
194
-
195
- subscribeDataSet() {
196
- this.unsubscribeDataSet();
197
- if (this.config.dataSetUUID === null) { return } // nothing to sub to...
198
-
199
- this.dataSetSub = this.DataSetService.subscribeDataSet(this.widgetUUID, this.config.dataSetUUID).subscribe(
200
- dataSet => {
201
- if (dataSet === null) {
202
- return; // we will get null back if we subscribe to a dataSet before the app has started it.when it learns about it we will get first value
203
- }
204
- let invert = 1;
205
- if (this.config.invertData) { invert = -1; }
206
- //Avg
207
- this.chartDataAvg = [];
208
- for (let i=0;i<dataSet.length;i++){
209
- if (dataSet[i].average === null) {
210
- this.chartDataAvg.push({x: dataSet[i].timestamp, y: null });
211
- continue;
212
- }
213
- this.chartDataAvg.push({
214
- x: dataSet[i].timestamp,
215
- y: (this.UnitsService.convertUnit(this.config.convertUnitTo, dataSet[i].average) * invert)
216
- });
217
- }
218
- this.chart.config.data.datasets[0].data = this.chartDataAvg;
219
-
220
- //min/max
221
- if (this.config.displayMinMax) {
222
- this.chartDataMin = [];
223
- this.chartDataMax = [];
224
- for (let i=0;i<dataSet.length;i++){
225
- //process datapoint and add it to our chart.
226
- if (dataSet[i].average === null) {
227
- this.chartDataMin.push({x: dataSet[i].timestamp, y: null });
228
- } else {
229
- this.chartDataMin.push({
230
- x: dataSet[i].timestamp,
231
- y: (this.UnitsService.convertUnit(this.config.convertUnitTo, dataSet[i].minValue) * invert)
232
- });
233
- this.chartDataMax.push({
234
- x: dataSet[i].timestamp,
235
- y: (this.UnitsService.convertUnit(this.config.convertUnitTo, dataSet[i].maxValue) * invert)
236
- });
237
- }
238
- }
239
- this.chart.config.data.datasets[1].data = this.chartDataMin;
240
- this.chart.config.data.datasets[2].data = this.chartDataMax;
241
- }
242
-
243
- const average = arr => arr.reduce((p, c) => p + c, 0) / arr.length;
244
- //if (this.widgetConfig.animateGraph) {
245
- // this.chart.update();
246
- //} else {
247
- // append the cumulated average to the label text
248
- this.chart.data.datasets[0].label = this.config.displayName + " [" + average(this.chartDataAvg.map(e => e.y)).toFixed(2) + "]";
249
- if (this.config.displayMinMax) {
250
- this.chart.data.datasets[1].label = this.config.displayName + " [" + average(this.chartDataMin.map(e => e.y)).toFixed(2) + "]";
251
- this.chart.data.datasets[2].label = this.config.displayName + " [" + average(this.chartDataMax.map(e => e.y)).toFixed(2) + "]";
252
- }
253
- this.chart.update('none');
254
- //}
255
- }
256
- );
257
- }
258
-
259
- unsubscribeDataSet() {
260
- if (this.dataSetSub !== null) {
261
- this.dataSetSub.unsubscribe();
262
- this.dataSetSub = null;
263
- }
264
- }
265
-
266
-
267
- // Subscribe to theme event
268
- subscribeTheme() {
269
- this.themeNameSub = this.AppSettingsService.getThemeNameAsO().subscribe(
270
- themeChange => {
271
- setTimeout(() => { // need a delay so browser getComputedStyles has time to complete theme application.
272
- this.textColor = window.getComputedStyle(this.lineGraph.nativeElement).color;
273
- this.startChart()
274
- }, 100);
275
- })
276
- }
277
-
278
- unsubscribeTheme(){
279
- if (this.themeNameSub !== null) {
280
- this.themeNameSub.unsubscribe();
281
- this.themeNameSub = null;
282
- }
283
- }
284
-
285
- openWidgetSettings() {
286
-
287
- let dialogRef = this.dialog.open(ModalWidgetComponent, {
288
- width: '80%',
289
- data: this.config
290
- });
291
-
292
- dialogRef.afterClosed().subscribe(result => {
293
- // save new settings
294
- if (result) {
295
- console.log(result);
296
- this.config = result;
297
- this.WidgetManagerService.updateWidgetConfig(this.widgetUUID, this.config);
298
- this.startChart(); //need to recreate chart to update options :P
299
- this.subscribeDataSet();
300
- }
301
-
302
- });
303
-
304
- }
305
-
306
- }
@@ -1,12 +0,0 @@
1
- .wrapper {
2
- position: relative;
3
- width: 100%;
4
- height: 100%;
5
- }
6
-
7
- .settingsButton {
8
- position: absolute;
9
- bottom: 5%;
10
- left: 50%;
11
- transform: translate(-50%);
12
- }
@@ -1,21 +0,0 @@
1
- <div class="wrapper">
2
- <iframe *ngIf="widgetUrl" [src]="widgetUrl | safe" width="100%" height="100%" frameborder="0"></iframe>
3
- <div *ngIf="!widgetUrl">
4
- Please set URL
5
- <p>For Example in Graphana, select share for the graph you want, go to embed tab, and take the "src" url. Note you should probably change
6
- the from/to timestamps to "from=now-15m" and "to=now" andmake sure you have "refresh=30" in the parameters as well!</p>
7
- <p>Of note, cross-domain loading security rules apply! <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options" target="_blank">Link!</a></p>
8
- </div>
9
-
10
-
11
-
12
- <div class="settingsButton" *ngIf="unlockStatus">
13
- <button color="accent" mat-mini-fab class="selector-fab" (click)="openWidgetSettings()">
14
- <span class="fa fa-cog"></span>
15
- </button>
16
- </div>
17
- </div>
18
-
19
-
20
-
21
-
@@ -1,25 +0,0 @@
1
- import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
2
-
3
- import { WidgetIframeComponent } from './widget-iframe.component';
4
-
5
- describe('WidgetIframeComponent', () => {
6
- let component: WidgetIframeComponent;
7
- let fixture: ComponentFixture<WidgetIframeComponent>;
8
-
9
- beforeEach(waitForAsync(() => {
10
- TestBed.configureTestingModule({
11
- declarations: [ WidgetIframeComponent ]
12
- })
13
- .compileComponents();
14
- }));
15
-
16
- beforeEach(() => {
17
- fixture = TestBed.createComponent(WidgetIframeComponent);
18
- component = fixture.componentInstance;
19
- fixture.detectChanges();
20
- });
21
-
22
- it('should create', () => {
23
- expect(component).toBeTruthy();
24
- });
25
- });
@@ -1,63 +0,0 @@
1
- import { Component, Input, OnInit, OnDestroy, Inject } from '@angular/core';
2
- import { MatDialog } from '@angular/material/dialog';
3
-
4
-
5
-
6
-
7
- import { ModalWidgetComponent } from '../modal-widget/modal-widget.component';
8
- import { WidgetManagerService, IWidget, IWidgetConfig } from '../widget-manager.service';
9
-
10
- const defaultConfig: IWidgetConfig = {
11
- widgetUrl: null
12
- };
13
-
14
- @Component({
15
- selector: 'app-widget-iframe',
16
- templateUrl: './widget-iframe.component.html',
17
- styleUrls: ['./widget-iframe.component.css']
18
- })
19
- export class WidgetIframeComponent implements OnInit {
20
-
21
- @Input('widgetUUID') widgetUUID: string;
22
- @Input('unlockStatus') unlockStatus: boolean;
23
-
24
- config: IWidgetConfig;
25
-
26
- widgetUrl: string = null;
27
- activeWidget: IWidget;
28
-
29
- constructor(
30
- public dialog:MatDialog,
31
- private WidgetManagerService: WidgetManagerService) {
32
- }
33
-
34
- ngOnInit() {
35
- this.activeWidget = this.WidgetManagerService.getWidget(this.widgetUUID);
36
- if (this.activeWidget.config === null) {
37
- // no data, let's set some!
38
- this.WidgetManagerService.updateWidgetConfig(this.widgetUUID, defaultConfig);
39
- this.config = defaultConfig; // load default config.
40
- } else {
41
- this.config = this.activeWidget.config;
42
- }
43
- this.widgetUrl = this.config.widgetUrl;
44
- }
45
-
46
- openWidgetSettings(content) {
47
-
48
- let dialogRef = this.dialog.open(ModalWidgetComponent, {
49
- width: '80%',
50
- data: this.config
51
- });
52
-
53
- dialogRef.afterClosed().subscribe(result => {
54
- // save new settings
55
- if (result) {
56
- console.log(result);
57
- this.config = result;
58
- this.WidgetManagerService.updateWidgetConfig(this.widgetUUID, this.config);
59
- }
60
- });
61
- }
62
-
63
- }
@@ -1,15 +0,0 @@
1
- import { TestBed, inject } from '@angular/core/testing';
2
-
3
- import { WidgetListService } from './widget-list.service';
4
-
5
- describe('WidgetListService', () => {
6
- beforeEach(() => {
7
- TestBed.configureTestingModule({
8
- providers: [WidgetListService]
9
- });
10
- });
11
-
12
- it('should be created', inject([WidgetListService], (service: WidgetListService) => {
13
- expect(service).toBeTruthy();
14
- }));
15
- });
@@ -1,135 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
-
3
- import { WidgetBlankComponent } from './widget-blank/widget-blank.component';
4
- import { WidgetUnknownComponent } from './widget-unknown/widget-unknown.component';
5
- import { WidgetNumericComponent } from './widget-numeric/widget-numeric.component';
6
- import { WidgetTextGenericComponent } from './widget-text-generic/widget-text-generic.component';
7
- import { WidgetHistoricalComponent } from './widget-historical/widget-historical.component';
8
- import { WidgetWindComponent } from './widget-wind/widget-wind.component';
9
- import { WidgetGaugeComponent } from './widget-gauge/widget-gauge.component';
10
- import { WidgetStateComponent } from './widget-state/widget-state.component';
11
- import { WidgetSwitchComponent } from './widget-switch/widget-switch.component';
12
- import { WidgetIframeComponent } from './widget-iframe/widget-iframe.component';
13
- import { WidgetTutorialComponent } from './widget-tutorial/widget-tutorial.component';
14
- import { WidgetGaugeNgLinearComponent} from './widget-gauge-ng-linear/widget-gauge-ng-linear.component';
15
- import { WidgetGaugeNgRadialComponent} from './widget-gauge-ng-radial/widget-gauge-ng-radial.component';
16
- import { WidgetAutopilotComponent } from "./widget-autopilot/widget-autopilot.component";
17
- import { WidgetSimpleLinearComponent } from "./widget-simple-linear/widget-simple-linear.component";
18
-
19
- class widgetInfo {
20
- name: string;
21
- componentName;
22
- description: string;
23
- }
24
-
25
- export class widgetList {
26
- [groupname: string]: widgetInfo[];
27
- }
28
-
29
-
30
- @Injectable()
31
- export class WidgetListService {
32
-
33
- constructor() { }
34
-
35
-
36
- widgetList: widgetList = {
37
- "Basic": [
38
- {
39
- name: 'WidgetBlank',
40
- componentName: WidgetBlankComponent,
41
- description: 'Blank',
42
- },
43
- {
44
- name: 'WidgetNumeric',
45
- componentName: WidgetNumericComponent,
46
- description: 'Numeric Value',
47
- },
48
- {
49
- name: 'WidgetTextGeneric',
50
- componentName: WidgetTextGenericComponent,
51
- description: 'Text Value',
52
- },
53
- {
54
- name: 'WidgetStateComponent',
55
- componentName: WidgetStateComponent,
56
- description: 'State (boolean) Value',
57
- },
58
- ],
59
- "Gauge": [
60
- {
61
- name: 'WidgetSimpleLinearComponent',
62
- componentName: WidgetSimpleLinearComponent,
63
- description: "Linear Electrical Gauge"
64
- },
65
- {
66
- name: 'WidgetGaugeNgLinearComponent',
67
- componentName: WidgetGaugeNgLinearComponent,
68
- description: "Linear Gauge"
69
- },
70
- {
71
- name: 'WidgetGaugeNgRadialComponent',
72
- componentName: WidgetGaugeNgRadialComponent,
73
- description: "Radial Gauge"
74
- },
75
- {
76
- name: 'WidgetGaugeComponent',
77
- componentName: WidgetGaugeComponent,
78
- description: "Steel Gauge (Radial/Linear)"
79
- },
80
- ],
81
- "Components": [
82
- {
83
- name: 'WidgetHistorical',
84
- componentName: WidgetHistoricalComponent,
85
- description: 'Historical DataSet',
86
- },
87
- {
88
- name: 'WidgetWindComponent',
89
- componentName: WidgetWindComponent,
90
- description: 'Wind Gauge',
91
- },
92
- {
93
- name: 'WidgetAutopilotComponent',
94
- componentName: WidgetAutopilotComponent,
95
- description: 'N2k Autopilot',
96
- },
97
- {
98
- name: 'WidgetIframeComponent',
99
- componentName: WidgetIframeComponent,
100
- description: 'Embed Webpage',
101
- },
102
- {
103
- name: 'WidgetTutorial',
104
- componentName: WidgetTutorialComponent,
105
- description: 'Tutorial'
106
- }
107
- ]
108
-
109
- };
110
-
111
-
112
- /*
113
- {
114
- name: 'WidgetSwitchComponent',
115
- componentName: WidgetSwitchComponent,
116
- description: 'Switch Input',
117
- }, */
118
-
119
-
120
-
121
-
122
-
123
- getComponentName(typeName: string) {
124
- for (let [group, widgetList] of Object.entries(this.widgetList)) {
125
- let widget = widgetList.find(c => c.name == typeName);
126
- if (widget) { return widget.componentName; }
127
- }
128
- return WidgetUnknownComponent;
129
- }
130
-
131
-
132
- getList (){
133
- return this.widgetList;
134
- }
135
- }
@@ -1,15 +0,0 @@
1
- import { TestBed, inject } from '@angular/core/testing';
2
-
3
- import { WidgetManagerService } from './widget-manager.service';
4
-
5
- describe('WidgetManagerService', () => {
6
- beforeEach(() => {
7
- TestBed.configureTestingModule({
8
- providers: [WidgetManagerService]
9
- });
10
- });
11
-
12
- it('should be created', inject([WidgetManagerService], (service: WidgetManagerService) => {
13
- expect(service).toBeTruthy();
14
- }));
15
- });