@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,553 +0,0 @@
1
- import { ViewChild, ElementRef, Component, Input, OnInit, OnDestroy, AfterContentInit, AfterContentChecked } from '@angular/core';
2
- import { Subscription } from 'rxjs';
3
- import { MatDialog } from '@angular/material/dialog';
4
- import { ResizedEvent } from 'angular-resize-event';
5
-
6
- import { SignalKService } from '../signalk.service';
7
- import { ModalWidgetComponent } from '../modal-widget/modal-widget.component';
8
- import { WidgetManagerService, IWidget, IWidgetConfig } from '../widget-manager.service';
9
- import { UnitsService } from '../units.service';
10
- import { AppSettingsService, IZone, ZoneState } from '../app-settings.service';
11
- import { RadialGauge, RadialGaugeOptions } from '../gauges-module/radial-gauge';
12
-
13
- const defaultConfig: IWidgetConfig = {
14
- displayName: null,
15
- filterSelfPaths: true,
16
- paths: {
17
- "gaugePath": {
18
- description: "Numeric Data",
19
- path: null,
20
- source: null,
21
- pathType: "number",
22
- isPathConfigurable: true,
23
- convertUnitTo: "unitless"
24
- }
25
- },
26
- gaugeType: 'ngRadial', //ngLinearVertical or ngLinearHorizontal
27
- gaugeTicks: false,
28
- radialSize: 'measuring',
29
- compassUseNumbers: false,
30
- minValue: 0,
31
- maxValue: 100,
32
- numInt: 1,
33
- numDecimal: 0,
34
- barColor: 'accent', // theme palette to select
35
- };
36
-
37
- interface IDataHighlight extends Array<{
38
- from : number;
39
- to : number;
40
- color: string;
41
- }> {};
42
-
43
- @Component({
44
- selector: 'app-widget-gauge-ng-radial',
45
- templateUrl: './widget-gauge-ng-radial.component.html',
46
- styleUrls: ['./widget-gauge-ng-radial.component.scss']
47
- })
48
- export class WidgetGaugeNgRadialComponent implements OnInit, OnDestroy, AfterContentInit, AfterContentChecked {
49
-
50
- @ViewChild('wrapperDiv', {static: true, read: ElementRef}) private wrapper: ElementRef;
51
- @ViewChild('radialGauge', {static: true, read: RadialGauge}) public radialGauge: RadialGauge;
52
-
53
- @Input('widgetUUID') widgetUUID: string;
54
- @Input('unlockStatus') unlockStatus: boolean;
55
-
56
- // hack to access material-theme palette colors
57
- @ViewChild('primary', {static: true, read: ElementRef}) private primaryElement: ElementRef;
58
- @ViewChild('accent', {static: true, read: ElementRef}) private accentElement: ElementRef;
59
- @ViewChild('warn', {static: true, read: ElementRef}) private warnElement: ElementRef;
60
- @ViewChild('primaryDark', {static: true, read: ElementRef}) private primaryDarkElement: ElementRef;
61
- @ViewChild('accentDark', {static: true, read: ElementRef}) private accentDarkElement: ElementRef;
62
- @ViewChild('warnDark', {static: true, read: ElementRef}) private warnDarkElement: ElementRef;
63
- @ViewChild('background', {static: true, read: ElementRef}) private backgroundElement: ElementRef;
64
- @ViewChild('text', {static: true, read: ElementRef}) private textElement: ElementRef;
65
-
66
- activeWidget: IWidget;
67
- config: IWidgetConfig;
68
-
69
- public dataValue = 0;
70
- valueSub: Subscription = null;
71
-
72
- // dynamics theme support
73
- themeNameSub: Subscription = null;
74
-
75
- public gaugeOptions = {} as RadialGaugeOptions;
76
- // fix for RadialGauge GaugeOptions object ** missing color-stroke-ticks property
77
- public colorStrokeTicks: string = "";
78
- public unitName: string = null;
79
-
80
- zones: Array<IZone> = [];
81
- zonesSub: Subscription;
82
-
83
- constructor(
84
- public dialog:MatDialog,
85
- private SignalKService: SignalKService,
86
- private WidgetManagerService: WidgetManagerService,
87
- private UnitsService: UnitsService,
88
- private AppSettingsService: AppSettingsService, // need for theme change subscription
89
- ) { }
90
-
91
- ngOnInit() {
92
- this.activeWidget = this.WidgetManagerService.getWidget(this.widgetUUID);
93
- if (this.activeWidget.config === null) {
94
- // no data, let's set some!
95
- this.WidgetManagerService.updateWidgetConfig(this.widgetUUID, defaultConfig);
96
- this.config = defaultConfig; // load default config.
97
- } else {
98
- this.config = this.activeWidget.config;
99
- //new config option, might not be set.
100
- if (!('compassUseNumbers' in this.config)) {
101
- console.log("compassUseNumbers not set");
102
- this.config.compassUseNumbers = false;
103
- }
104
- }
105
- this.subscribePath();
106
- this.subscribeTheme();
107
- this.subscribeZones();
108
- }
109
-
110
- ngOnDestroy() {
111
- this.unsubscribePath();
112
- this.unsubscribeTheme();
113
- this.unsubscribeZones();
114
- }
115
-
116
- ngAfterContentInit() {
117
- this.updateGaugeConfig();
118
- }
119
-
120
- ngAfterContentChecked() {
121
- // this.resizeWidget();
122
- }
123
-
124
- subscribePath() {
125
- this.unsubscribePath();
126
- if (typeof(this.config.paths['gaugePath'].path) != 'string') { return } // nothing to sub to...
127
-
128
- this.valueSub = this.SignalKService.subscribePath(this.widgetUUID, this.config.paths['gaugePath'].path, this.config.paths['gaugePath'].source).subscribe(
129
- newValue => {
130
- this.dataValue = this.UnitsService.convertUnit(this.config.paths['gaugePath'].convertUnitTo, newValue.value);
131
-
132
-
133
- // set colors for zone state
134
- switch (newValue.state) {
135
- case ZoneState.warning:
136
- this.gaugeOptions.colorValueText = getComputedStyle(this.warnDarkElement.nativeElement).color;
137
- break;
138
- case ZoneState.alarm:
139
- this.gaugeOptions.colorValueText = getComputedStyle(this.warnDarkElement.nativeElement).color;
140
- break;
141
- default:
142
- this.gaugeOptions.colorValueText = getComputedStyle(this.textElement.nativeElement).color;
143
-
144
- }
145
-
146
- }
147
- );
148
- }
149
-
150
- unsubscribePath() {
151
- if (this.valueSub !== null) {
152
- this.valueSub.unsubscribe();
153
- this.valueSub = null;
154
- this.SignalKService.unsubscribePath(this.widgetUUID, this.config.paths['gaugePath'].path)
155
- }
156
- }
157
-
158
- // Subscribe to theme event
159
- subscribeTheme() {
160
- this.themeNameSub = this.AppSettingsService.getThemeNameAsO().subscribe(
161
- themeChange => {
162
- setTimeout(() => { // need a delay so browser getComputedStyles has time to complete theme application.
163
- this.updateGaugeConfig();
164
- }, 50);
165
- })
166
- }
167
-
168
- unsubscribeTheme(){
169
- if (this.themeNameSub !== null) {
170
- this.themeNameSub.unsubscribe();
171
- this.themeNameSub = null;
172
- }
173
- }
174
-
175
- // Subscribe to Zones
176
- subscribeZones() {
177
- this.zonesSub = this.AppSettingsService.getZonesAsO().subscribe(
178
- zones => {
179
- this.zones = zones;
180
- this.updateGaugeConfig();
181
- });
182
- }
183
-
184
- unsubscribeZones(){
185
- if (this.zonesSub !== null) {
186
- this.zonesSub.unsubscribe();
187
- this.zonesSub = null;
188
- }
189
- }
190
-
191
- openWidgetSettings() {
192
- let dialogRef = this.dialog.open(ModalWidgetComponent, {
193
- width: '80%',
194
- data: this.config
195
- });
196
-
197
- dialogRef.afterClosed().subscribe(result => {
198
- // save new settings
199
- if (result) {
200
- console.log(result);
201
- this.unsubscribePath(); //unsub now as we will change variables so wont know what was subbed before...
202
- this.config = result;
203
- this.WidgetManagerService.updateWidgetConfig(this.widgetUUID, this.config);
204
- this.subscribePath();
205
- this.updateGaugeConfig();
206
- }
207
- });
208
- }
209
-
210
- updateGaugeConfig(){
211
- //// Hack to get Theme colors using hidden mixin, DIV and @ViewChild
212
- let themePaletteColor = "";
213
- let themePaletteDarkColor = "";
214
-
215
- this.gaugeOptions.colorTitle = this.gaugeOptions.colorUnits = getComputedStyle(this.textElement.nativeElement).color;
216
-
217
- this.gaugeOptions.colorPlate = getComputedStyle(this.wrapper.nativeElement).backgroundColor;
218
- this.gaugeOptions.colorBar = getComputedStyle(this.backgroundElement.nativeElement).color;
219
- this.gaugeOptions.colorNeedleShadowUp = "";
220
- this.gaugeOptions.colorNeedleShadowDown = "black";
221
- this.gaugeOptions.colorNeedleCircleInner = this.gaugeOptions.colorPlate;
222
- this.gaugeOptions.colorNeedleCircleInnerEnd = this.gaugeOptions.colorPlate;
223
- this.gaugeOptions.colorNeedleCircleOuter = this.gaugeOptions.colorPlate;
224
- this.gaugeOptions.colorNeedleCircleOuterEnd = this.gaugeOptions.colorPlate;
225
-
226
- // Theme colors
227
- switch (this.config.barColor) {
228
- case "primary":
229
- themePaletteColor = getComputedStyle(this.primaryElement.nativeElement).color;
230
- themePaletteDarkColor = getComputedStyle(this.primaryDarkElement.nativeElement).color;
231
- this.gaugeOptions.colorBarProgress = themePaletteColor;
232
- this.gaugeOptions.colorNeedle = themePaletteDarkColor;
233
- this.gaugeOptions.colorNeedleEnd = themePaletteDarkColor;
234
- break;
235
-
236
- case "accent":
237
- themePaletteColor = getComputedStyle(this.accentElement.nativeElement).color;
238
- themePaletteDarkColor = getComputedStyle(this.accentDarkElement.nativeElement).color;
239
- this.gaugeOptions.colorBarProgress = themePaletteColor;
240
- this.gaugeOptions.colorNeedle = themePaletteDarkColor;
241
- this.gaugeOptions.colorNeedleEnd = themePaletteDarkColor;
242
- break;
243
-
244
- case "warn":
245
- themePaletteColor = getComputedStyle(this.warnElement.nativeElement).color;
246
- themePaletteDarkColor = getComputedStyle(this.warnDarkElement.nativeElement).color;
247
- this.gaugeOptions.colorBarProgress = themePaletteColor;
248
- this.gaugeOptions.colorNeedle = themePaletteDarkColor;
249
- this.gaugeOptions.colorNeedleEnd = themePaletteDarkColor;
250
- break;
251
-
252
- default:
253
- break;
254
- }
255
-
256
- // highlights
257
- let myZones: IDataHighlight = [];
258
- this.zones.forEach(zone => {
259
- // get zones for our path
260
- if (zone.path == this.config.paths['gaugePath'].path) {
261
- let lower = zone.lower || this.config.minValue;
262
- let upper = zone.upper || this.config.maxValue;
263
- let color: string;
264
- switch (zone.state) {
265
- case 1:
266
- color = getComputedStyle(this.warnElement.nativeElement).color;
267
- break;
268
- case ZoneState.alarm:
269
- color = getComputedStyle(this.warnDarkElement.nativeElement).color;
270
- break;
271
- default:
272
- color = getComputedStyle(this.primaryElement.nativeElement).color;
273
- }
274
-
275
- myZones.push({from: lower, to: upper, color: color});
276
- }
277
- });
278
- this.gaugeOptions.highlights = myZones;
279
-
280
- // Config storage values
281
- this.gaugeOptions.valueInt = this.config.numInt;
282
- this.gaugeOptions.valueDec = this.config.numDecimal;
283
-
284
- this.gaugeOptions.majorTicksInt = this.config.numInt;
285
- this.gaugeOptions.majorTicksDec = this.config.numDecimal;
286
-
287
- // Radial gauge type
288
- switch(this.config.radialSize) {
289
- case "capacity":
290
- this.unitName = this.config.paths['gaugePath'].convertUnitTo;
291
- this.gaugeOptions.colorMajorTicks = this.gaugeOptions.colorPlate; // bug with MajorTicks drawing firs tick always and using color="" does not work
292
- this.gaugeOptions.colorNumbers = this.gaugeOptions.colorMinorTicks = "";
293
- this.gaugeOptions.fontTitleSize = 60;
294
- this.gaugeOptions.minValue = this.config.minValue;
295
- this.gaugeOptions.maxValue = this.config.maxValue;
296
- this.gaugeOptions.barProgress = true;
297
- this.gaugeOptions.barWidth = 15;
298
-
299
- this.gaugeOptions.valueBox = true;
300
- this.gaugeOptions.fontValueSize = 110;
301
- this.gaugeOptions.valueBoxWidth = 100;
302
- this.gaugeOptions.valueBoxBorderRadius = 0;
303
- this.gaugeOptions.valueBoxStroke = 0;
304
- this.gaugeOptions.colorValueBoxBackground = "";
305
-
306
- this.gaugeOptions.ticksAngle = 360;
307
- this.gaugeOptions.startAngle = 180;
308
- this.gaugeOptions.exactTicks = false;
309
- this.gaugeOptions.strokeTicks = false;
310
- this.gaugeOptions.majorTicks = [];
311
- this.gaugeOptions.minorTicks = 0;
312
- this.gaugeOptions.numbersMargin = 0;
313
- this.gaugeOptions.fontNumbersSize = 0;
314
- this.gaugeOptions.highlightsWidth = 15;
315
-
316
- this.gaugeOptions.needle = true;
317
- this.gaugeOptions.needleType = "line";
318
- this.gaugeOptions.needleWidth = 2;
319
- this.gaugeOptions.needleShadow = false;
320
- this.gaugeOptions.needleStart = 80;
321
- this.gaugeOptions.needleEnd = 95;
322
- this.gaugeOptions.needleCircleSize = 1;
323
- this.gaugeOptions.needleCircleInner = false;
324
- this.gaugeOptions.needleCircleOuter = false;
325
-
326
- this.gaugeOptions.borders = true;
327
- this.gaugeOptions.borderOuterWidth = 0;
328
- this.gaugeOptions.borderMiddleWidth = 2;
329
- this.gaugeOptions.borderInnerWidth = 2;
330
- this.gaugeOptions.borderShadowWidth = 0;
331
-
332
- this.gaugeOptions.animationTarget = "needle";
333
- this.gaugeOptions.useMinPath = false;
334
- break;
335
-
336
- case "measuring":
337
- this.unitName = this.config.paths['gaugePath'].convertUnitTo;
338
- let calculatedMajorTicks = this.calculateMajorTicks(this.config.minValue, this.config.maxValue);
339
-
340
- this.gaugeOptions.colorTitle = this.colorStrokeTicks = this.gaugeOptions.colorMinorTicks = this.gaugeOptions.colorNumbers = this.gaugeOptions.colorTitle;
341
-
342
- this.gaugeOptions.fontTitleSize = 20;
343
- this.gaugeOptions.minValue = this.config.minValue;
344
- this.gaugeOptions.maxValue = this.config.maxValue;
345
- this.gaugeOptions.barProgress = true;
346
- this.gaugeOptions.barWidth = 15;
347
-
348
- this.gaugeOptions.valueBox = true;
349
- this.gaugeOptions.fontValueSize = 60;
350
- this.gaugeOptions.valueBoxWidth = 100;
351
- this.gaugeOptions.valueBoxBorderRadius = 0;
352
- this.gaugeOptions.valueBoxStroke = 0;
353
- this.gaugeOptions.colorValueBoxBackground = "";
354
-
355
- this.gaugeOptions.ticksAngle = 270;
356
- this.gaugeOptions.startAngle = 45;
357
- this.gaugeOptions.exactTicks = false;
358
- this.gaugeOptions.strokeTicks = true;
359
- this.gaugeOptions.majorTicks = [calculatedMajorTicks.toString()];
360
- this.gaugeOptions.minorTicks = 2;
361
- this.gaugeOptions.numbersMargin = 3;
362
- this.gaugeOptions.fontNumbersSize = 15;
363
- this.gaugeOptions.highlightsWidth = 15;
364
-
365
- this.gaugeOptions.needle = true;
366
- this.gaugeOptions.needleType = "line";
367
- this.gaugeOptions.needleWidth = 2;
368
- this.gaugeOptions.needleShadow = false;
369
- this.gaugeOptions.needleStart = 0;
370
- this.gaugeOptions.needleEnd = 95;
371
- this.gaugeOptions.needleCircleSize = 10;
372
- this.gaugeOptions.needleCircleInner = false;
373
- this.gaugeOptions.needleCircleOuter = false;
374
-
375
- this.gaugeOptions.borders = false;
376
- this.gaugeOptions.borderOuterWidth = 0;
377
- this.gaugeOptions.borderMiddleWidth = 0;
378
- this.gaugeOptions.borderInnerWidth = 0;
379
- this.gaugeOptions.borderShadowWidth = 0;
380
-
381
- this.gaugeOptions.animationTarget = "needle";
382
- this.gaugeOptions.useMinPath = false;
383
- break;
384
-
385
- case "marineCompass":
386
- // overwrite min/max/unit to make sure we don't limit
387
- this.config.minValue = 0;
388
- this.config.maxValue = 360;
389
- this.config.paths["gaugePath"].convertUnitTo = "deg";
390
- this.unitName = null;
391
-
392
-
393
- this.gaugeOptions.colorMajorTicks = this.gaugeOptions.colorNumbers = this.gaugeOptions.colorMinorTicks = this.gaugeOptions.colorUnits;
394
- this.gaugeOptions.fontTitleSize = 60;
395
- this.gaugeOptions.minValue = 0;
396
- this.gaugeOptions.maxValue = 360;
397
- this.gaugeOptions.barProgress = false;
398
- this.gaugeOptions.barWidth = 0;
399
-
400
- this.gaugeOptions.valueBox = true
401
- this.gaugeOptions.fontValueSize = 50;
402
- this.gaugeOptions.valueBoxWidth = 0;
403
- this.gaugeOptions.valueBoxBorderRadius = 5;
404
- this.gaugeOptions.valueBoxStroke = 0;
405
- this.gaugeOptions.colorValueBoxBackground = this.gaugeOptions.colorBar;
406
-
407
- this.gaugeOptions.ticksAngle = 360;
408
- this.gaugeOptions.startAngle = 180;
409
- this.gaugeOptions.exactTicks = false;
410
- this.gaugeOptions.strokeTicks = false;
411
-
412
- this.gaugeOptions.majorTicks = this.config.compassUseNumbers ? ["0,45,90,135,180,225,270,315,0"] : ["N,NE,E,SE,S,SW,W,NW,N"];
413
- this.gaugeOptions.numbersMargin = 3;
414
- this.gaugeOptions.fontNumbersSize = 15;
415
- this.gaugeOptions.minorTicks = 22;
416
- this.gaugeOptions.highlights = [];
417
- this.gaugeOptions.highlightsWidth = 0;
418
-
419
- this.gaugeOptions.needle = true;
420
- this.gaugeOptions.needleType = "line";
421
- this.gaugeOptions.needleWidth = 3;
422
- this.gaugeOptions.needleShadow = false;
423
- this.gaugeOptions.needleStart = 75;
424
- this.gaugeOptions.needleEnd = 99;
425
- this.gaugeOptions.needleCircleSize = 2;
426
- this.gaugeOptions.needleCircleInner = false;
427
- this.gaugeOptions.needleCircleOuter = false;
428
-
429
- this.gaugeOptions.borders = true;
430
- this.gaugeOptions.borderOuterWidth = 0;
431
- this.gaugeOptions.borderMiddleWidth = 2;
432
- this.gaugeOptions.borderInnerWidth = 2;
433
- this.gaugeOptions.borderShadowWidth = 0;
434
-
435
- this.gaugeOptions.animationTarget = "plate";
436
- this.gaugeOptions.useMinPath = true;
437
- break;
438
-
439
- case "baseplateCompass":
440
- // overwrite min/max/unit to make sure we don't limit
441
- this.config.minValue = 0;
442
- this.config.maxValue = 360;
443
- this.config.paths["gaugePath"].convertUnitTo = "deg";
444
- this.unitName = null;
445
-
446
- this.gaugeOptions.colorMajorTicks = this.gaugeOptions.colorNumbers = this.gaugeOptions.colorMinorTicks = this.gaugeOptions.colorUnits;
447
- this.gaugeOptions.fontTitleSize = 60;
448
- this.gaugeOptions.minValue = 0;
449
- this.gaugeOptions.maxValue = 360;
450
- this.gaugeOptions.barProgress = false;
451
- this.gaugeOptions.barWidth = 0;
452
-
453
- this.gaugeOptions.valueBox = true
454
- this.gaugeOptions.fontValueSize = 50;
455
- this.gaugeOptions.valueBoxWidth = 0;
456
- this.gaugeOptions.valueBoxBorderRadius = 5;
457
- this.gaugeOptions.valueBoxStroke = 0;
458
- this.gaugeOptions.colorValueBoxBackground = this.gaugeOptions.colorBar;
459
-
460
- this.gaugeOptions.ticksAngle = 360;
461
- this.gaugeOptions.startAngle = 180;
462
- this.gaugeOptions.exactTicks = false;
463
- this.gaugeOptions.strokeTicks = false;
464
- this.gaugeOptions.majorTicks = this.config.compassUseNumbers ? ["0,45,90,135,180,225,270,315,0"] : ["N,NE,E,SE,S,SW,W,NW,N"];
465
- this.gaugeOptions.numbersMargin = 3;
466
- this.gaugeOptions.fontNumbersSize = 15;
467
- this.gaugeOptions.minorTicks = 22;
468
- this.gaugeOptions.highlights = [];
469
- this.gaugeOptions.highlightsWidth = 0;
470
-
471
- this.gaugeOptions.needle = true;
472
- this.gaugeOptions.needleType = "line";
473
- this.gaugeOptions.needleWidth = 3;
474
- this.gaugeOptions.needleShadow = false;
475
- this.gaugeOptions.needleStart = 75;
476
- this.gaugeOptions.needleEnd = 99;
477
- this.gaugeOptions.needleCircleSize = 2;
478
- this.gaugeOptions.needleCircleInner = false;
479
- this.gaugeOptions.needleCircleOuter = false;
480
-
481
- this.gaugeOptions.borders = true;
482
- this.gaugeOptions.borderOuterWidth = 0;
483
- this.gaugeOptions.borderMiddleWidth = 2;
484
- this.gaugeOptions.borderInnerWidth = 2;
485
- this.gaugeOptions.borderShadowWidth = 0;
486
-
487
- this.gaugeOptions.animationTarget = "needle";
488
- this.gaugeOptions.useMinPath = true;
489
- break;
490
-
491
- default:
492
- break;
493
- }
494
- }
495
-
496
- onResized(event: ResizedEvent) {
497
- this.gaugeOptions.height = Math.floor(event.newHeight * 0.88);
498
- this.gaugeOptions.width = Math.floor(event.newWidth * 0.88);
499
- }
500
-
501
- // Method to calculate nice values for min, max and range for the gaugeOptions.majorTicks
502
- calculateMajorTicks(minValue: number, maxValue: number): string[]|number[] {
503
- let niceMinValue = minValue;
504
- let niceMaxValue = maxValue;
505
- let niceRange = maxValue - minValue;
506
- let majorTickSpacing = 0;
507
- let maxNoOfMajorTicks = 10;
508
- let tickArray = [] as Array<number>;
509
-
510
- niceRange = this.calcNiceNumber(maxValue - minValue, false);
511
- majorTickSpacing = this.calcNiceNumber(niceRange / (maxNoOfMajorTicks - 1), true);
512
- niceMinValue = Math.floor(minValue / majorTickSpacing) * majorTickSpacing;
513
- niceMaxValue = Math.ceil(maxValue / majorTickSpacing) * majorTickSpacing;
514
-
515
- tickArray.push(niceMinValue);
516
-
517
- for (let index = 0; index < (niceRange / majorTickSpacing); index++) {
518
- if (tickArray[index] < niceMaxValue) {
519
- tickArray.push(tickArray[index] + majorTickSpacing);
520
- }
521
- }
522
- return tickArray;
523
- }
524
-
525
- calcNiceNumber(range: number, round: boolean): number {
526
- let exponent = Math.floor(Math.log10(range)), // exponent of range
527
- fraction = range / Math.pow(10, exponent), // fractional part of range
528
- niceFraction: number; // nice, rounded fraction
529
-
530
- if (round) {
531
- if (1.5 > fraction) {
532
- niceFraction = 1;
533
- } else if (3 > fraction) {
534
- niceFraction = 2;
535
- } else if (7 > fraction) {
536
- niceFraction = 5;
537
- } else {
538
- niceFraction = 10;
539
- }
540
- } else {
541
- if (1 >= fraction) {
542
- niceFraction = 1;
543
- } else if (2 >= fraction) {
544
- niceFraction = 2;
545
- } else if (5 >= fraction) {
546
- niceFraction = 5;
547
- } else {
548
- niceFraction = 10;
549
- }
550
- }
551
- return niceFraction * Math.pow(10, exponent);
552
- }
553
- }
@@ -1,31 +0,0 @@
1
- .mainWrapper {
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
- }
13
-
14
- .chart-container {
15
- position: relative;
16
- margin: auto;
17
- height: 100%;
18
- width: 100%;
19
- }
20
-
21
- .tab-group {
22
- border: 1px solid #e8e8e8;
23
- }
24
-
25
- .tab-content {
26
- padding: 16px;
27
- }
28
-
29
- .full-width {
30
- width: 100%;
31
- }
@@ -1,14 +0,0 @@
1
- <div class="mainWrapper">
2
-
3
- <div class="chart-container" >
4
- <canvas #lineGraph id="chart"></canvas>
5
- </div>
6
-
7
-
8
- <div class="settingsButton" *ngIf="unlockStatus">
9
- <button color="accent" mat-mini-fab class="selector-fab" (click)="openWidgetSettings()">
10
- <span class="fa fa-cog"></span>
11
- </button>
12
- </div>
13
-
14
- </div>
@@ -1,25 +0,0 @@
1
- import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
2
-
3
- import { WidgetHistoricalComponent } from './widget-historical.component';
4
-
5
- describe('WidgetHistoricalComponent', () => {
6
- let component: WidgetHistoricalComponent;
7
- let fixture: ComponentFixture<WidgetHistoricalComponent>;
8
-
9
- beforeEach(waitForAsync(() => {
10
- TestBed.configureTestingModule({
11
- declarations: [ WidgetHistoricalComponent ]
12
- })
13
- .compileComponents();
14
- }));
15
-
16
- beforeEach(() => {
17
- fixture = TestBed.createComponent(WidgetHistoricalComponent);
18
- component = fixture.componentInstance;
19
- fixture.detectChanges();
20
- });
21
-
22
- it('should be created', () => {
23
- expect(component).toBeTruthy();
24
- });
25
- });