@mxtommy/kip 1.3.0 → 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 (273) hide show
  1. package/CHANGELOG.md +38 -3
  2. package/CONTRIBUTORS.md +4 -4
  3. package/KipGaugeSample3-1024x508.png +0 -0
  4. package/LICENSE +21 -0
  5. package/README.md +80 -42
  6. package/package.json +52 -46
  7. package/public/3rdpartylicenses.txt +61 -412
  8. package/public/assets/NoSleep.min.js +2 -2
  9. package/public/assets/icon-64x64.png +0 -0
  10. package/public/index.html +3 -3
  11. package/public/main.9dba30de44eed02b.js +1 -0
  12. package/public/manifest.json +9 -4
  13. package/public/polyfills.d1da7d2e907c253a.js +1 -0
  14. package/public/runtime.e75056c32c37f59d.js +1 -0
  15. package/public/styles.6b1c2c92be18a2cc.css +1 -0
  16. package/.angulardoc.json +0 -4
  17. package/angular.json +0 -162
  18. package/e2e/app.e2e-spec.ts +0 -14
  19. package/e2e/app.po.ts +0 -11
  20. package/e2e/tsconfig.e2e.json +0 -14
  21. package/karma.conf.js +0 -31
  22. package/public/main-es2018.98175eb4c61ccaf7eb17.js +0 -1
  23. package/public/main-es5.98175eb4c61ccaf7eb17.js +0 -1
  24. package/public/polyfills-es2018.3a61665863c173cd6ba3.js +0 -1
  25. package/public/polyfills-es5.44827ae4ff4e41de51fb.js +0 -1
  26. package/public/runtime-es2018.baedb88c6d2abacae2b8.js +0 -1
  27. package/public/runtime-es5.baedb88c6d2abacae2b8.js +0 -1
  28. package/public/styles.b92ae2c466c89712209d.css +0 -5
  29. package/src/app/alarm-menu/alarm-menu.component.html +0 -55
  30. package/src/app/alarm-menu/alarm-menu.component.scss +0 -52
  31. package/src/app/alarm-menu/alarm-menu.component.spec.ts +0 -25
  32. package/src/app/alarm-menu/alarm-menu.component.ts +0 -186
  33. package/src/app/app-help/app-help.component.css +0 -4
  34. package/src/app/app-help/app-help.component.html +0 -135
  35. package/src/app/app-help/app-help.component.ts +0 -45
  36. package/src/app/app-settings.service.spec.ts +0 -15
  37. package/src/app/app-settings.service.ts +0 -478
  38. package/src/app/app.component.css +0 -39
  39. package/src/app/app.component.html +0 -93
  40. package/src/app/app.component.scss +0 -79
  41. package/src/app/app.component.spec.ts +0 -32
  42. package/src/app/app.component.ts +0 -191
  43. package/src/app/app.module.ts +0 -200
  44. package/src/app/config.blank.const.ts +0 -52
  45. package/src/app/config.blank.notification.const.ts +0 -19
  46. package/src/app/config.blank.units.const.ts +0 -23
  47. package/src/app/config.demo.const.ts +0 -384
  48. package/src/app/data-browser/data-browser.component.css +0 -29
  49. package/src/app/data-browser/data-browser.component.html +0 -44
  50. package/src/app/data-browser/data-browser.component.spec.ts +0 -25
  51. package/src/app/data-browser/data-browser.component.ts +0 -91
  52. package/src/app/data-browser-row/data-browser-row-unit-modal.html +0 -17
  53. package/src/app/data-browser-row/data-browser-row.component.css +0 -10
  54. package/src/app/data-browser-row/data-browser-row.component.html +0 -5
  55. package/src/app/data-browser-row/data-browser-row.component.ts +0 -79
  56. package/src/app/data-set.service.spec.ts +0 -15
  57. package/src/app/data-set.service.ts +0 -273
  58. package/src/app/dynamic-widget.directive.spec.ts +0 -8
  59. package/src/app/dynamic-widget.directive.ts +0 -11
  60. package/src/app/filter-self.pipe.spec.ts +0 -8
  61. package/src/app/filter-self.pipe.ts +0 -14
  62. package/src/app/fit-text.directive.spec.ts +0 -8
  63. package/src/app/fit-text.directive.ts +0 -61
  64. package/src/app/gauge-steel/gauge-steel.component.css +0 -5
  65. package/src/app/gauge-steel/gauge-steel.component.html +0 -4
  66. package/src/app/gauge-steel/gauge-steel.component.spec.ts +0 -25
  67. package/src/app/gauge-steel/gauge-steel.component.ts +0 -282
  68. package/src/app/gauges-module/base-gauge.ts +0 -301
  69. package/src/app/gauges-module/gauges.module.ts +0 -17
  70. package/src/app/gauges-module/linear-gauge.ts +0 -50
  71. package/src/app/gauges-module/radial-gauge.ts +0 -48
  72. package/src/app/layout-split/layout-split.component.html +0 -30
  73. package/src/app/layout-split/layout-split.component.scss +0 -33
  74. package/src/app/layout-split/layout-split.component.spec.ts +0 -25
  75. package/src/app/layout-split/layout-split.component.ts +0 -59
  76. package/src/app/layout-splits.service.spec.ts +0 -15
  77. package/src/app/layout-splits.service.ts +0 -284
  78. package/src/app/modal-path-selector/modal-path-selector.component.html +0 -62
  79. package/src/app/modal-path-selector/modal-path-selector.component.scss +0 -39
  80. package/src/app/modal-path-selector/modal-path-selector.component.spec.ts +0 -25
  81. package/src/app/modal-path-selector/modal-path-selector.component.ts +0 -132
  82. package/src/app/modal-widget/modal-widget.component.css +0 -33
  83. package/src/app/modal-widget/modal-widget.component.html +0 -341
  84. package/src/app/modal-widget/modal-widget.component.spec.ts +0 -25
  85. package/src/app/modal-widget/modal-widget.component.ts +0 -84
  86. package/src/app/notifications.service.spec.ts +0 -12
  87. package/src/app/notifications.service.ts +0 -392
  88. package/src/app/object-keys.pipe.spec.ts +0 -8
  89. package/src/app/object-keys.pipe.ts +0 -13
  90. package/src/app/reset-config/reset-config.component.css +0 -0
  91. package/src/app/reset-config/reset-config.component.html +0 -3
  92. package/src/app/reset-config/reset-config.component.spec.ts +0 -25
  93. package/src/app/reset-config/reset-config.component.ts +0 -31
  94. package/src/app/root-display/root-display.component.css +0 -0
  95. package/src/app/root-display/root-display.component.html +0 -4
  96. package/src/app/root-display/root-display.component.spec.ts +0 -25
  97. package/src/app/root-display/root-display.component.ts +0 -57
  98. package/src/app/safe.pipe.ts +0 -16
  99. package/src/app/settings/settings.component.css +0 -9
  100. package/src/app/settings/settings.component.html +0 -25
  101. package/src/app/settings/settings.component.spec.ts +0 -25
  102. package/src/app/settings/settings.component.ts +0 -22
  103. package/src/app/settings-config/settings-config.component.css +0 -39
  104. package/src/app/settings-config/settings-config.component.html +0 -118
  105. package/src/app/settings-config/settings-config.component.spec.ts +0 -25
  106. package/src/app/settings-config/settings-config.component.ts +0 -161
  107. package/src/app/settings-datasets/settings-datasets.component.html +0 -43
  108. package/src/app/settings-datasets/settings-datasets.component.scss +0 -39
  109. package/src/app/settings-datasets/settings-datasets.component.spec.ts +0 -25
  110. package/src/app/settings-datasets/settings-datasets.component.ts +0 -98
  111. package/src/app/settings-datasets/settings-datasets.modal.html +0 -54
  112. package/src/app/settings-notifications/settings-notifications.component.css +0 -0
  113. package/src/app/settings-notifications/settings-notifications.component.html +0 -65
  114. package/src/app/settings-notifications/settings-notifications.component.spec.ts +0 -25
  115. package/src/app/settings-notifications/settings-notifications.component.ts +0 -29
  116. package/src/app/settings-signalk/settings-signalk.component.css +0 -3
  117. package/src/app/settings-signalk/settings-signalk.component.html +0 -89
  118. package/src/app/settings-signalk/settings-signalk.component.spec.ts +0 -25
  119. package/src/app/settings-signalk/settings-signalk.component.ts +0 -174
  120. package/src/app/settings-units/settings-units.component.css +0 -4
  121. package/src/app/settings-units/settings-units.component.html +0 -19
  122. package/src/app/settings-units/settings-units.component.spec.ts +0 -25
  123. package/src/app/settings-units/settings-units.component.ts +0 -62
  124. package/src/app/settings-zones/settings-zones.component.css +0 -22
  125. package/src/app/settings-zones/settings-zones.component.html +0 -70
  126. package/src/app/settings-zones/settings-zones.component.ts +0 -154
  127. package/src/app/settings-zones/settings-zones.modal.css +0 -14
  128. package/src/app/settings-zones/settings-zones.modal.html +0 -39
  129. package/src/app/signalk-connection.service.ts +0 -344
  130. package/src/app/signalk-delta.service.spec.ts +0 -15
  131. package/src/app/signalk-delta.service.ts +0 -97
  132. package/src/app/signalk-full.service.spec.ts +0 -15
  133. package/src/app/signalk-full.service.ts +0 -99
  134. package/src/app/signalk-interfaces.ts +0 -129
  135. package/src/app/signalk-requests.service.spec.ts +0 -12
  136. package/src/app/signalk-requests.service.ts +0 -180
  137. package/src/app/signalk.service.spec.ts +0 -15
  138. package/src/app/signalk.service.ts +0 -428
  139. package/src/app/svg-autopilot/svg-autopilot.component.html +0 -1036
  140. package/src/app/svg-autopilot/svg-autopilot.component.spec.ts +0 -25
  141. package/src/app/svg-autopilot/svg-autopilot.component.ts +0 -174
  142. package/src/app/svg-simple-linear-gauge/svg-simple-linear-gauge.component.html +0 -119
  143. package/src/app/svg-simple-linear-gauge/svg-simple-linear-gauge.component.scss +0 -0
  144. package/src/app/svg-simple-linear-gauge/svg-simple-linear-gauge.component.spec.ts +0 -25
  145. package/src/app/svg-simple-linear-gauge/svg-simple-linear-gauge.component.ts +0 -49
  146. package/src/app/svg-wind/svg-wind.component.css +0 -0
  147. package/src/app/svg-wind/svg-wind.component.html +0 -969
  148. package/src/app/svg-wind/svg-wind.component.scss +0 -76
  149. package/src/app/svg-wind/svg-wind.component.spec.ts +0 -25
  150. package/src/app/svg-wind/svg-wind.component.ts +0 -280
  151. package/src/app/unit-window/unit-window.component.css +0 -37
  152. package/src/app/unit-window/unit-window.component.html +0 -8
  153. package/src/app/unit-window/unit-window.component.spec.ts +0 -25
  154. package/src/app/unit-window/unit-window.component.ts +0 -134
  155. package/src/app/unit-window/unit-window.modal.html +0 -25
  156. package/src/app/units.service.ts +0 -300
  157. package/src/app/widget-autopilot/widget-autopilot.component.html +0 -78
  158. package/src/app/widget-autopilot/widget-autopilot.component.scss +0 -191
  159. package/src/app/widget-autopilot/widget-autopilot.component.spec.ts +0 -25
  160. package/src/app/widget-autopilot/widget-autopilot.component.ts +0 -774
  161. package/src/app/widget-blank/widget-blank.component.html +0 -5
  162. package/src/app/widget-blank/widget-blank.component.scss +0 -21
  163. package/src/app/widget-blank/widget-blank.component.spec.ts +0 -25
  164. package/src/app/widget-blank/widget-blank.component.ts +0 -17
  165. package/src/app/widget-gauge/widget-gauge.component.css +0 -26
  166. package/src/app/widget-gauge/widget-gauge.component.html +0 -29
  167. package/src/app/widget-gauge/widget-gauge.component.spec.ts +0 -25
  168. package/src/app/widget-gauge/widget-gauge.component.ts +0 -120
  169. package/src/app/widget-gauge-ng-linear/widget-gauge-ng-linear.component.html +0 -126
  170. package/src/app/widget-gauge-ng-linear/widget-gauge-ng-linear.component.scss +0 -94
  171. package/src/app/widget-gauge-ng-linear/widget-gauge-ng-linear.component.spec.ts +0 -25
  172. package/src/app/widget-gauge-ng-linear/widget-gauge-ng-linear.component.ts +0 -424
  173. package/src/app/widget-gauge-ng-radial/widget-gauge-ng-radial.component.html +0 -122
  174. package/src/app/widget-gauge-ng-radial/widget-gauge-ng-radial.component.scss +0 -69
  175. package/src/app/widget-gauge-ng-radial/widget-gauge-ng-radial.component.spec.ts +0 -25
  176. package/src/app/widget-gauge-ng-radial/widget-gauge-ng-radial.component.ts +0 -553
  177. package/src/app/widget-historical/widget-historical.component.css +0 -31
  178. package/src/app/widget-historical/widget-historical.component.html +0 -14
  179. package/src/app/widget-historical/widget-historical.component.scss +0 -0
  180. package/src/app/widget-historical/widget-historical.component.spec.ts +0 -25
  181. package/src/app/widget-historical/widget-historical.component.ts +0 -306
  182. package/src/app/widget-iframe/widget-iframe.component.css +0 -12
  183. package/src/app/widget-iframe/widget-iframe.component.html +0 -21
  184. package/src/app/widget-iframe/widget-iframe.component.spec.ts +0 -25
  185. package/src/app/widget-iframe/widget-iframe.component.ts +0 -63
  186. package/src/app/widget-list.service.spec.ts +0 -15
  187. package/src/app/widget-list.service.ts +0 -135
  188. package/src/app/widget-manager.service.spec.ts +0 -15
  189. package/src/app/widget-manager.service.ts +0 -141
  190. package/src/app/widget-numeric/widget-numeric.component.html +0 -13
  191. package/src/app/widget-numeric/widget-numeric.component.scss +0 -52
  192. package/src/app/widget-numeric/widget-numeric.component.spec.ts +0 -25
  193. package/src/app/widget-numeric/widget-numeric.component.ts +0 -457
  194. package/src/app/widget-simple-linear/widget-simple-linear.component.html +0 -28
  195. package/src/app/widget-simple-linear/widget-simple-linear.component.scss +0 -64
  196. package/src/app/widget-simple-linear/widget-simple-linear.component.spec.ts +0 -25
  197. package/src/app/widget-simple-linear/widget-simple-linear.component.ts +0 -199
  198. package/src/app/widget-state/widget-state.component.html +0 -27
  199. package/src/app/widget-state/widget-state.component.scss +0 -68
  200. package/src/app/widget-state/widget-state.component.spec.ts +0 -25
  201. package/src/app/widget-state/widget-state.component.ts +0 -178
  202. package/src/app/widget-switch/widget-switch.component.css +0 -70
  203. package/src/app/widget-switch/widget-switch.component.html +0 -17
  204. package/src/app/widget-switch/widget-switch.component.spec.ts +0 -25
  205. package/src/app/widget-switch/widget-switch.component.ts +0 -134
  206. package/src/app/widget-text-generic/widget-text-generic.component.css +0 -55
  207. package/src/app/widget-text-generic/widget-text-generic.component.html +0 -9
  208. package/src/app/widget-text-generic/widget-text-generic.component.spec.ts +0 -25
  209. package/src/app/widget-text-generic/widget-text-generic.component.ts +0 -253
  210. package/src/app/widget-tutorial/widget-tutorial.component.css +0 -0
  211. package/src/app/widget-tutorial/widget-tutorial.component.html +0 -34
  212. package/src/app/widget-tutorial/widget-tutorial.component.spec.ts +0 -25
  213. package/src/app/widget-tutorial/widget-tutorial.component.ts +0 -18
  214. package/src/app/widget-unknown/widget-unknown.component.css +0 -0
  215. package/src/app/widget-unknown/widget-unknown.component.html +0 -3
  216. package/src/app/widget-unknown/widget-unknown.component.spec.ts +0 -25
  217. package/src/app/widget-unknown/widget-unknown.component.ts +0 -15
  218. package/src/app/widget-wind/widget-wind.component.css +0 -24
  219. package/src/app/widget-wind/widget-wind.component.html +0 -20
  220. package/src/app/widget-wind/widget-wind.component.spec.ts +0 -25
  221. package/src/app/widget-wind/widget-wind.component.ts +0 -369
  222. package/src/assets/.gitkeep +0 -0
  223. package/src/assets/NoSleep.min.js +0 -2
  224. package/src/assets/alarm.mp3 +0 -0
  225. package/src/assets/alert.mp3 +0 -0
  226. package/src/assets/alertl.old.mp3 +0 -0
  227. package/src/assets/emergency.mp3 +0 -0
  228. package/src/assets/fontawesome6/css/all.min.css +0 -6
  229. package/src/assets/fontawesome6/webfonts/fa-brands-400.ttf +0 -0
  230. package/src/assets/fontawesome6/webfonts/fa-brands-400.woff2 +0 -0
  231. package/src/assets/fontawesome6/webfonts/fa-regular-400.ttf +0 -0
  232. package/src/assets/fontawesome6/webfonts/fa-regular-400.woff2 +0 -0
  233. package/src/assets/fontawesome6/webfonts/fa-solid-900.ttf +0 -0
  234. package/src/assets/fontawesome6/webfonts/fa-solid-900.woff2 +0 -0
  235. package/src/assets/fontawesome6/webfonts/fa-v4compatibility.ttf +0 -0
  236. package/src/assets/fontawesome6/webfonts/fa-v4compatibility.woff2 +0 -0
  237. package/src/assets/icon-192x192.png +0 -0
  238. package/src/assets/icon-256x256.png +0 -0
  239. package/src/assets/icon-384x384.png +0 -0
  240. package/src/assets/icon-512x512.png +0 -0
  241. package/src/assets/notification.mp3 +0 -0
  242. package/src/assets/steelseries-min.js +0 -25
  243. package/src/assets/steelseries-min.js.map +0 -8
  244. package/src/assets/steelseries.js +0 -15834
  245. package/src/assets/svg-autopilot-inkscape-plain.svg +0 -983
  246. package/src/assets/svg-wind-inkscape.svg +0 -1358
  247. package/src/assets/tween-min.js +0 -1
  248. package/src/assets/tween.js +0 -381
  249. package/src/assets/warn.mp3 +0 -0
  250. package/src/environments/environment.prod.ts +0 -3
  251. package/src/environments/environment.ts +0 -8
  252. package/src/favicon.ico +0 -0
  253. package/src/index.html +0 -20
  254. package/src/main.ts +0 -11
  255. package/src/manifest.json +0 -33
  256. package/src/polyfills.ts +0 -80
  257. package/src/styles.css +0 -47
  258. package/src/styles.scss +0 -157
  259. package/src/test.ts +0 -32
  260. package/src/themes/darkBlueTheme.scss +0 -117
  261. package/src/themes/defaultTheme.scss +0 -50
  262. package/src/themes/highContrastTheme.scss +0 -47
  263. package/src/themes/modernTheme.scss +0 -143
  264. package/src/themes/nightMode.scss +0 -185
  265. package/src/themes/platypusTheme.scss +0 -80
  266. package/src/themes/signalkTheme.scss +0 -112
  267. package/src/tsconfig.app.json +0 -15
  268. package/src/tsconfig.spec.json +0 -20
  269. package/src/typings.d.ts +0 -5
  270. package/tsconfig.json +0 -24
  271. package/tslint.json +0 -143
  272. /package/{KipGaugeSample-1-1024x545.png → KipGaugeSample1-1024x545.png} +0 -0
  273. /package/{KipMonitor-1024x488.png → KipGaugeSample2-1024x488.png} +0 -0
@@ -1,300 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as Qty from 'js-quantities';
3
-
4
- import { AppSettingsService } from './app-settings.service';
5
- import { Subscription } from 'rxjs';
6
-
7
- /**
8
- * Group of Kip units array
9
- */
10
- export interface IUnitGroup {
11
- group: string;
12
- units: IUnit[];
13
- }[]
14
-
15
- /**
16
- * Individual Kip units system measures definition
17
- */
18
- export interface IUnit {
19
- measure: string;
20
- description: string;
21
- }
22
-
23
- /**
24
- * Interface for defaults Units per unit Groups to be applied
25
- */
26
- export interface IUnitDefaults {
27
- [key: string]: string;
28
- }
29
-
30
- @Injectable()
31
-
32
- export class UnitsService {
33
-
34
-
35
-
36
- defaultUnits: IUnitDefaults;
37
- defaultUnitsSub: Subscription;
38
-
39
- /**
40
- * Definition of available Kip units to be used for conversion.
41
- * Measure property has to match one Unit Conversion Function for proper operation.
42
- * Description is human readable property.
43
- */
44
- conversionList: IUnitGroup[] = [
45
- { group: 'Unitless', units: [
46
- { measure: 'unitless', description: "As-Is numeric value" }
47
- ] },
48
- { group: 'Speed', units: [
49
- { measure: 'knots', description: "Knots - Nautical miles per hour"},
50
- { measure: 'kph', description: "kph - Kilometers per hour"},
51
- { measure: 'mph', description: "mph - Miles per hour"},
52
- { measure: 'm/s', description: "m/s - Meters per second (default)"}
53
- ] },
54
- { group: 'Flow', units: [
55
- { measure: 'm3/s', description: "Cubic meters per second (default)"},
56
- { measure: 'l/min', description: "Litters per minute"},
57
- { measure: 'l/h', description: "Litters per hour"},
58
- { measure: 'g/min', description: "Gallons per minute"},
59
- { measure: 'g/h', description: "Gallons per hour"}
60
- ] },
61
- { group: 'Temperature', units: [
62
- { measure: 'K', description: "Kelvin (default)"},
63
- { measure: 'celsius', description: "Celsius"},
64
- { measure: 'fahrenheit', description: "Fahrenheit"}
65
- ] },
66
- { group: 'Length', units: [
67
- { measure: 'm', description: "Metres (default)"},
68
- { measure: 'fathom', description: "Fathoms"},
69
- { measure: 'feet', description: "Feets"},
70
- { measure: 'km', description: "Kilometers"},
71
- { measure: 'nm', description: "Nautical Miles"},
72
- { measure: 'mi', description: "Miles"},
73
- ] },
74
- { group: 'Volume', units: [
75
- { measure: 'liter', description: "Liters (default)"},
76
- { measure: 'm3', description: "Cubic Meters"},
77
- { measure: 'gallon', description: "Gallons"},
78
- ] },
79
- { group: 'Current', units: [
80
- { measure: 'A', description: "Amperes"},
81
- { measure: 'mA', description: "Milliamperes"}
82
- ] },
83
- { group: 'Potential', units: [
84
- { measure: 'V', description: "Volts"},
85
- { measure: 'mV', description: "Millivolts"}
86
- ] },
87
- { group: 'Charge', units: [ { measure: 'C', description: "Current"} ] },
88
- { group: 'Power', units: [
89
- { measure: 'W', description: "Watts"},
90
- { measure: 'mW', description: "Milliwatts"},
91
- ] },
92
- { group: 'Energy', units: [ { measure: 'J', description: "Joules"} ] },
93
- { group: 'Pressure', units: [
94
- { measure: 'Pa', description: "Pascal (default)" },
95
- { measure: 'bar', description: "Bars" },
96
- { measure: 'psi', description: "psi" },
97
- { measure: 'mmHg', description: "mmHg" },
98
- { measure: 'inHg', description: "inHg" },
99
- { measure: 'hPa', description: "hPa" },
100
- { measure: 'mbar', description: "mbar" },
101
- ] },
102
- { group: 'Density', units: [ { measure: 'kg/m3', description: "Air density - kg/cubic meter"} ] },
103
- { group: 'Time', units: [
104
- { measure: 's', description: "Seconds (default)" },
105
- { measure: 'Minutes', description: "Minutes" },
106
- { measure: 'Hours', description: "Hours" },
107
- { measure: 'Days', description: "Days" },
108
- { measure: 'HH:MM:SS', description: "Hours:Minute:seconds"}
109
- ] },
110
- { group: 'Angular Velocity', units: [
111
- { measure: 'rad/s', description: "Radians per second" },
112
- { measure: 'deg/s', description: "Degrees per second" },
113
- { measure: 'deg/min', description: "Degrees per minute" },
114
- ] },
115
- { group: 'Angle', units: [
116
- { measure: 'rad', description: "Radians" },
117
- { measure: 'deg', description: "Degrees" },
118
- { measure: 'grad', description: "Gradians" },
119
- ] },
120
- { group: 'Frequency', units: [
121
- { measure: 'rpm', description: "RPM - Rotations per minute" },
122
- { measure: 'Hz', description: "Hz - Hertz (default)" },
123
- { measure: 'KHz', description: "KHz - KiloHertz" },
124
- { measure: 'MHz', description: "MHz - MegaHertz" },
125
- { measure: 'GHz', description: "GHz - GigaHertz" },
126
- ] },
127
- { group: 'Ratio', units: [
128
- { measure: 'percent', description: "% - Percentage value (value multiplied by 100)" },
129
- { measure: 'percentraw', description: "% - Percentage value (value unchanged)" },
130
- { measure: 'ratio', description: "Ratio 0-1 (value multiplied by 100)" }
131
- ] },
132
- { group: 'Position', units: [
133
- { measure: 'latitudeMin', description: "Latitude in minutes" },
134
- { measure: 'latitudeSec', description: "Latitude in seconds" },
135
- { measure: 'longitudeMin', description: "Longitude in minutes" },
136
- { measure: 'longitudeSec', description: "Longitude in seconds" },
137
- ] },
138
- ];
139
-
140
-
141
- constructor( private AppSettingsService: AppSettingsService,
142
- ) {
143
- this.defaultUnitsSub = this.AppSettingsService.getDefaultUnitsAsO().subscribe(
144
- newDefaults => {
145
- this.defaultUnits = newDefaults;
146
- }
147
- );
148
- // console.log(Qty.getKinds());
149
- // console.log(Qty.getUnits());
150
- // console.log(Qty.getAliases('naut-mile'));
151
- //build list for others.
152
- /* Object.keys(this.conversions).forEach(group => {
153
- this.conversionList[group] = [];
154
- Object.keys(this.conversions[group]).forEach(unit => {
155
- this.conversionList[group].push(unit);
156
- });
157
- }); */
158
- }
159
-
160
-
161
- unitConversionFunctions = {
162
- 'unitless': function(v) { return v; },
163
- // speed
164
- 'knots': Qty.swiftConverter("m/s", "kn"),
165
- 'kph': Qty.swiftConverter("m/s", "kph"),
166
- 'm/s': function(v) { return v; },
167
- 'mph': Qty.swiftConverter("m/s", "mph"),
168
- // volume
169
- "liter": Qty.swiftConverter('m^3', 'liter'),
170
- "gallon": Qty.swiftConverter('m^3', 'gallon'),
171
- "m3": function(v) { return v; },
172
- // flow
173
- 'm3/s': function(v) { return v; },
174
- 'l/min': Qty.swiftConverter("m^3/s", "liter/minute"),
175
- 'l/h': Qty.swiftConverter("m^3/s", "liter/hour"),
176
- 'g/min': Qty.swiftConverter("m^3/s", "gallon/minute"),
177
- 'g/h': Qty.swiftConverter("m^3/s", "gallon/hour"),
178
- // temp
179
- "K": function(v) { return v; },
180
- "celsius": Qty.swiftConverter("tempK", "tempC"),
181
- "fahrenheit": Qty.swiftConverter("tempK", "tempF"),
182
- // length
183
- "m": function(v) { return v; },
184
- "fathom": Qty.swiftConverter('m', 'fathom'),
185
- "feet": Qty.swiftConverter('m', 'foot'),
186
- "km": Qty.swiftConverter('m', 'km'),
187
- "nm": Qty.swiftConverter('m', 'nmi'),
188
- "mi": Qty.swiftConverter('m', 'mi'),
189
- // Potential
190
- "V": function(v) { return v; },
191
- "mV": function(v) { return v*1000; },
192
- // Current
193
- "A": function(v) { return v; },
194
- "mA": function(v) { return v*1000; },
195
- // charge
196
- "C": function(v) { return v; },
197
- // Power
198
- "W": function(v) { return v; },
199
- "mW": function(v) { return v*1000; },
200
- // Energy
201
- "J": function(v) { return v; },
202
- // pressure
203
- "Pa": function(v) { return v; },
204
- "bar": Qty.swiftConverter('Pa', 'bar'),
205
- "psi": Qty.swiftConverter('Pa', 'psi'),
206
- "mmHg": Qty.swiftConverter('Pa', 'mmHg'),
207
- "inHg": Qty.swiftConverter('Pa', 'inHg'),
208
- "hPa": Qty.swiftConverter('Pa', 'hPa'),
209
- "mbar": Qty.swiftConverter('Pa', 'millibar'),
210
- // Density - Description: Current outside air density
211
- "kg/m3": function(v) { return v; },
212
- // Time
213
- "s": function(v) { return v; },
214
- "Minutes": Qty.swiftConverter('s', 'minutes'),
215
- "Hours": Qty.swiftConverter('s', 'hours'),
216
- "Days": Qty.swiftConverter('s', 'days'),
217
- "HH:MM:SS": function(v) {
218
- v = parseInt(v, 10);
219
- if (v < 0) { v = v *-1} // always positive
220
-
221
- var h = Math.floor(v / 3600);
222
- var m = Math.floor(v % 3600 / 60);
223
- var s = Math.floor(v % 3600 % 60);
224
- return ('0' + h).slice(-2) + ":" + ('0' + m).slice(-2) + ":" + ('0' + s).slice(-2);
225
- },
226
- // angularVelocity
227
- "rad/s": function(v) { return v; },
228
- "deg/s": Qty.swiftConverter('rad/s', 'deg/s'),
229
- "deg/min": Qty.swiftConverter('rad/s', 'deg/min'),
230
- // frequency
231
- "rpm": function(v) { return v*60; },
232
- "Hz": function(v) { return v; },
233
- "KHz": function(v) { return v/1000; },
234
- "MHz": function(v) { return v/1000000; },
235
- "GHz": function(v) { return v/1000000000; },
236
- // angle
237
- "rad": function(v) { return v; },
238
- "deg": Qty.swiftConverter('rad', 'deg'),
239
- "grad": Qty.swiftConverter('rad', 'grad'),
240
- // ratio
241
- 'percent': function(v) { return (v * 100) + '%' },
242
- 'percentraw': function(v) { return v + '%' },
243
- 'ratio': function(v) { return v * 100 },
244
- // lat/lon
245
- 'latitudeMin': function(v) {
246
- v = Qty(v, 'rad').to('deg').scalar ;
247
- let degree = Math.trunc(v);
248
- let s = 'N';
249
- if (v < 0) { s = 'S'; degree = degree * -1 }
250
- let r = (v % 1) * 60; // decimal part of input, * 60 to get minutes
251
- return degree + '° ' + r.toFixed(2).padStart(5, '0') + '\' ' + s;
252
- },
253
- 'latitudeSec': function(v) {
254
- v = Qty(v, 'rad').to('deg').scalar ;
255
- let degree = Math.trunc(v);
256
- let s = 'N';
257
- if (v < 0) { s = 'S'; degree = degree * -1 }
258
- let r = (v % 1) * 60; // decimal part of input, * 60 to get minutes
259
- let minutes = Math.trunc(r);
260
- let seconds = (r % 1) * 60;
261
-
262
- return degree + '° ' + minutes + '\' ' + seconds.toFixed(2).padStart(5, '0') + '" ' + s;
263
- },
264
- 'longitudeMin': function(v) {
265
- v = Qty(v, 'rad').to('deg').scalar ;
266
- let degree = Math.trunc(v);
267
- let s = 'E';
268
- if (v < 0) { s = 'W'; degree = degree * -1 }
269
- let r = (v % 1) * 60; // decimal part of input, * 60 to get minutes
270
- return degree + '° ' + r.toFixed(2).padStart(5, '0') + '\' ' + s;
271
- },
272
- 'longitudeSec': function(v) {
273
- v = Qty(v, 'rad').to('deg').scalar ;
274
- let degree = Math.trunc(v);
275
- let s = 'E';
276
- if (v < 0) { s = 'W'; degree = degree * -1 }
277
- let r = (v % 1) * 60; // decimal part of input, * 60 to get minutes
278
- let minutes = Math.trunc(r);
279
- let seconds = (r % 1) * 60;
280
-
281
- return degree + '° ' + minutes + '\' ' + seconds.toFixed(2).padStart(5, '0') + '" ' + s;
282
- },
283
- }
284
-
285
-
286
-
287
- convertUnit(unit: string, value: number): number {
288
- if (!(unit in this.unitConversionFunctions)) { return null; }
289
- if (value === null) { return null; }
290
- return this.unitConversionFunctions[unit](value);
291
- }
292
-
293
- getDefaults(): IUnitDefaults {
294
- return this.defaultUnits;
295
- }
296
- getConversions(): IUnitGroup[] {
297
- return this.conversionList;
298
- }
299
-
300
- }
@@ -1,78 +0,0 @@
1
- <div id="{{widgetUUID}}" #autopilot class="autopilotWidget">
2
- <div class="headerAutopilot">
3
- <div class="apTitle">
4
- <span>N2K Autopilot</span>
5
- </div>
6
- <div class="apPower">
7
- <button mat-flat-button color="primary" class="powerBtn" id="powerBtn" #powerBtn disabled="false" (click)="powerBtnClick($event)">
8
- <i class="fa-solid fa-power-off" aria-hidden="true"></i>
9
- </button>
10
- </div>
11
- </div>
12
- <app-svg-autopilot #appSvgAutopilot
13
- [compassHeading]="currentHeading"
14
- [appWindAngle]="currentAppWindAngle"
15
- [rudderAngle]="currentRudder"
16
- [apState]="currentAPState"
17
- [apTargetAppWindAngle]="currentAPTargetAppWind"
18
- [isApConnected]="isApConnected"
19
- ></app-svg-autopilot>
20
- <div class="autopilotGridBtnContainer">
21
- <div class="itemStbTack">
22
- <button type="button" mat-flat-button color="accent" class="autoPilotBtn" id="stbTackBtn" #stbTackBtn disabled="true" (click)="buildAndSendCommand('tackToStarboard')">Std Tack</button>
23
- </div>
24
- <div class="itemPlus1">
25
- <button type="button" mat-flat-button color="accent" class="autoPilotBtn" id="plus1Btn" #plus1Btn disabled="true" (click)="buildAndSendCommand('+1')">+1°</button>
26
- </div>
27
- <div class="itemMinus1">
28
- <button type="button" mat-flat-button color="accent" class="autoPilotBtn" id="minus1Btn" #minus1Btn disabled="true" (click)="buildAndSendCommand('-1')">-1°</button>
29
- </div>
30
- <div class="itemPrtTack">
31
- <button type="button" mat-flat-button color="accent" class="autoPilotBtn" id="prtTackBtn" #prtTackBtn disabled="true" (click)="buildAndSendCommand('tackToPort')">Prt Tack</button>
32
- </div>
33
- <div class="itemStandby">
34
- <button type="button" mat-flat-button color="warn" class="autoPilotBtn" id="standbyBtn" #standbyBtn disabled="true" (click)="buildAndSendCommand('standby')">Standby</button>
35
- </div>
36
- <div class="itemPlus10">
37
- <button type="button" mat-flat-button color="accent" class="autoPilotBtn" id="plus10Btn" #plus10Btn disabled="true" (click)="buildAndSendCommand('+10')">+10°</button>
38
- </div>
39
- <div class="itemMinus10">
40
- <button type="button" mat-flat-button color="accent" class="autoPilotBtn" id="minus10Btn" #minus10Btn disabled="true" (click)="buildAndSendCommand('-10')">-10°</button>
41
- </div>
42
- <div class="itemAuto">
43
- <button type="button" mat-flat-button color="warn" class="autoPilotBtn" id="autoBtn" #autoBtn disabled="true" (click)="buildAndSendCommand('auto')">Auto</button>
44
- </div>
45
- <div class="itemWindmode">
46
- <button type="button" mat-flat-button color="warn" class="autoPilotBtn" id="windModeBtn" #windModeBtn disabled="true" (click)="buildAndSendCommand('wind')">Wind</button>
47
- </div>
48
- <div class="itemTrackmode">
49
- <button type="button" mat-flat-button color="primary" class="autoPilotBtn" id="trackModeBtn" #trackModeBtn disabled="true" (click)="buildAndSendCommand('route')">Route</button>
50
- </div>
51
- <div class="itemMute">
52
- <button type="button" mat-mini-fab color="primary" class="autoPilotBtnCtrl" id="muteBtn" #muteBtn disabled="true" (click)="sendSilence()">
53
- <i *ngIf="alarmsCount" class="fa-solid fa-bell-slash" aria-hidden="true"></i>
54
- <i *ngIf="!alarmsCount" class="fa-solid fa-bell" aria-hidden="true"></i>
55
- </button>
56
- </div>
57
- <div class="itemMessage">
58
- <button type="button" mat-mini-fab color="primary" class="autoPilotBtnCtrl" id="messageBtn" #messageBtn disabled="true" (click)="notificationScroll()">
59
- <span class="fa-solid fa-envelope" aria-hidden="true"></span>
60
- <span *ngIf="alarmsCount" matBadge="{{alarmsCount}}" matBadgeColor="warn" matBadgeSize="medium" matBadgeHidden="false" matBadgeOverlap="false"></span>
61
- </button>
62
- </div>
63
- </div>
64
- <div class="settingsButton" *ngIf="unlockStatus">
65
- <button type="button" color="accent" mat-mini-fab class="selector-fab" (click)="openWidgetSettings()">
66
- <span class="fa-solid fa-cog"></span>
67
- </button>
68
- </div>
69
- <div #primary class='primary' style="display: none;"></div>
70
- <div #accent class='accent' style="display: none;"></div>
71
- <div #warn class='warn' style="display: none;"></div>
72
- <div #primaryDark class='primaryDark' style="display: none;"></div>
73
- <div #accentDark class='accentDark' style="display: none;"></div>
74
- <div #warnDark class='warnDark' style="display: none;"></div>
75
- <div #background class='background' style="display: none;"></div>
76
- <div #text class='text' style="display: none;"></div>
77
- </div>
78
-
@@ -1,191 +0,0 @@
1
- @use '~@angular/material' as mat;
2
-
3
-
4
- @mixin widget-autopilot-theme($theme) {
5
-
6
- $primary: map-get($theme, primary);
7
- $warn: map-get($theme, warn);
8
- $background: map-get($theme, background);
9
- $foreground: map-get($theme, foreground);
10
- $wind: map-get($theme, wind);
11
-
12
- DIV.apScreen {
13
- display: block;
14
- position: relative;
15
- width: 360px;
16
- height: calc(202px + 18.5px); // add status bar
17
- margin: auto;
18
- text-align: center;
19
- border-radius: 5px;
20
- border: 1px solid mat.get-color-from-palette($foreground, divider);
21
- // box-shadow: inset 0px 2px 1px -1px rgba(0, 0, 0, 0.2), inset 0px 1px 1px 0px rgba(0, 0, 0, 0.14), inset 0px 1px 3px 0px rgba(0, 0, 0, 0.12);
22
- background-color: mat.get-color-from-palette($foreground, dividers);
23
- }
24
-
25
- .apScreen .apCompass {
26
- position: relative;
27
- width: 360px;
28
- height: 202px;
29
- margin: auto;
30
- border-radius: 5px;
31
- }
32
-
33
- .apStatusBar {
34
- width: 360px;
35
- height: 18.5px;
36
- border-bottom-left-radius: 5px;
37
- border-bottom-right-radius: 5px;
38
- background-color: black;
39
- }
40
-
41
- .apStatusBar, .apStatusBar DIV {
42
- display: inline-block;
43
- position: relative;
44
- }
45
-
46
- .apStatusBar DIV {
47
-
48
- }
49
-
50
- .apScreen .apStencil {
51
- position: absolute;
52
- top: 0px;
53
- left: 0px;
54
- width: 100%;
55
- height: 100%;
56
- margin: auto;
57
- border-radius: 5px;
58
- z-index: 10;
59
- vertical-align: middle;
60
- background-color: mat.get-color-from-palette($background, background);
61
- }
62
-
63
- .apStencil.confirmCommand {
64
- z-index: 5;
65
- visibility: hidden;
66
- }
67
-
68
- .apStencil.error {
69
- z-index: 6;
70
- visibility: hidden;
71
- }
72
- }
73
-
74
- div.autopilotWidget {
75
- display:block;
76
- position: relative;
77
- border:none;
78
- margin: 0px;
79
- padding: 5px 0px;
80
- width: 100%;
81
- height: calc(100% - 10px);
82
- }
83
-
84
- .headerAutopilot {
85
- display: block;
86
- position: relative;
87
- width: 346px;
88
- margin: auto;
89
- margin-bottom: 5px;
90
- }
91
-
92
- .headerAutopilot .apTitle {
93
- display: inline-block;
94
- font-weight: bold;
95
- width: calc(100% - 64px);
96
- margin: 0px;
97
- }
98
-
99
- .headerAutopilot .apPower {
100
- display: inline-block;
101
- width: 64px;
102
- margin: 0px;
103
- }
104
-
105
- .powerBtn {
106
-
107
- }
108
-
109
- .autoPilotBtn {
110
- width:85px;
111
- }
112
-
113
- .autopilotGridBtnContainer {
114
- display: grid;
115
- width: fit-content;
116
- margin: auto;
117
- margin-top: 5px;
118
- height: 160px;
119
- grid-template-columns: [col-start] 25% [col1-end] 25% [col2-end] 25% [col3-end] 25% [col-End];
120
- grid-template-rows: [row-start] 25% [row1-end] 25% [row2-end] 25% [row3-end] 25% [row-end];
121
- grid-template-areas:
122
- ". mute message ."
123
- "port minus1 plus1 starboard"
124
- "windmode minus10 plus10 trackmode"
125
- "standby . . auto1";
126
- row-gap: 0px;
127
- column-gap: 2px;
128
- justify-items: center;
129
- align-items: center;
130
- justify-content: center;
131
- align-content: start;
132
- }
133
-
134
- .itemStbTack {
135
- grid-area: starboard;
136
- }
137
-
138
- .itemMute {
139
- grid-area: mute;
140
- }
141
-
142
- .itemMessage {
143
- grid-area: message;
144
- }
145
-
146
- .itemPrtTack {
147
- grid-area: port;
148
- }
149
-
150
- .itemPlus1 {
151
- grid-area: plus1;
152
- }
153
-
154
- .itemMinus1 {
155
- grid-area: minus1;
156
- }
157
-
158
- .itemStandby {
159
- grid-area: standby;
160
- }
161
-
162
- .itemPlus10 {
163
- grid-area: plus10;
164
- }
165
-
166
- .itemMinus10 {
167
- grid-area: minus10;
168
- }
169
-
170
- .itemAuto {
171
- grid-area: auto1;
172
- }
173
-
174
- .itemWindmode {
175
- grid-area: windmode;
176
- }
177
-
178
- .itemTrackmode {
179
- grid-area: trackmode;
180
- }
181
-
182
- .itemNxtWp {
183
- grid-area: nxtWp;
184
- }
185
-
186
- .counterText {
187
- font-weight: bold;
188
- font-size: 7em;
189
- margin-top: 0px;
190
- margin-bottom: 0px;
191
- }
@@ -1,25 +0,0 @@
1
- import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
2
-
3
- import { WidgetAutopilotComponent } from './widget-autopilot.component';
4
-
5
- describe('WidgetAutopilotComponent', () => {
6
- let component: WidgetAutopilotComponent;
7
- let fixture: ComponentFixture<WidgetAutopilotComponent>;
8
-
9
- beforeEach(waitForAsync(() => {
10
- TestBed.configureTestingModule({
11
- declarations: [ WidgetAutopilotComponent ]
12
- })
13
- .compileComponents();
14
- }));
15
-
16
- beforeEach(() => {
17
- fixture = TestBed.createComponent(WidgetAutopilotComponent);
18
- component = fixture.componentInstance;
19
- fixture.detectChanges();
20
- });
21
-
22
- it('should create', () => {
23
- expect(component).toBeTruthy();
24
- });
25
- });