raain-model 2.6.10 → 2.6.11

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 (210) hide show
  1. package/README.md +2 -12
  2. package/RELEASE_PROCESS.md +11 -6
  3. package/cartesian/CartesianMeasureValue.d.ts +40 -0
  4. package/{src/cartesian/CartesianMeasureValue.ts → cartesian/CartesianMeasureValue.js} +41 -73
  5. package/cartesian/CartesianMeasureValue.js.map +1 -0
  6. package/cartesian/CartesianTools.d.ts +32 -0
  7. package/{src/cartesian/CartesianTools.ts → cartesian/CartesianTools.js} +69 -130
  8. package/cartesian/CartesianTools.js.map +1 -0
  9. package/cartesian/CartesianValue.d.ts +14 -0
  10. package/cartesian/CartesianValue.js +17 -0
  11. package/cartesian/CartesianValue.js.map +1 -0
  12. package/cartesian/EarthMap.d.ts +5 -0
  13. package/cartesian/EarthMap.js +3 -0
  14. package/cartesian/EarthMap.js.map +1 -0
  15. package/cartesian/ICartesianMeasureValue.d.ts +23 -0
  16. package/cartesian/ICartesianMeasureValue.js +3 -0
  17. package/cartesian/ICartesianMeasureValue.js.map +1 -0
  18. package/cartesian/LatLng.d.ts +16 -0
  19. package/cartesian/LatLng.js +34 -0
  20. package/cartesian/LatLng.js.map +1 -0
  21. package/cartesian/RadarCartesianMeasureValue.d.ts +17 -0
  22. package/cartesian/RadarCartesianMeasureValue.js +22 -0
  23. package/cartesian/RadarCartesianMeasureValue.js.map +1 -0
  24. package/cartesian/RainCartesianMeasureValue.d.ts +17 -0
  25. package/cartesian/RainCartesianMeasureValue.js +23 -0
  26. package/cartesian/RainCartesianMeasureValue.js.map +1 -0
  27. package/cartesian/index.js +25 -0
  28. package/cartesian/index.js.map +1 -0
  29. package/gauge/GaugeMeasure.d.ts +20 -0
  30. package/gauge/GaugeMeasure.js +30 -0
  31. package/gauge/GaugeMeasure.js.map +1 -0
  32. package/gauge/GaugeNode.d.ts +85 -0
  33. package/{src/gauge/GaugeNode.ts → gauge/GaugeNode.js} +20 -48
  34. package/gauge/GaugeNode.js.map +1 -0
  35. package/gauge/GaugeNodeMap.d.ts +24 -0
  36. package/gauge/GaugeNodeMap.js +40 -0
  37. package/gauge/GaugeNodeMap.js.map +1 -0
  38. package/gauge/index.js +20 -0
  39. package/gauge/index.js.map +1 -0
  40. package/index.js +24 -0
  41. package/index.js.map +1 -0
  42. package/organization/EventNode.d.ts +22 -0
  43. package/organization/EventNode.js +30 -0
  44. package/organization/EventNode.js.map +1 -0
  45. package/organization/IVersion.js +3 -0
  46. package/organization/IVersion.js.map +1 -0
  47. package/organization/Link.d.ts +16 -0
  48. package/{src/organization/Link.ts → organization/Link.js} +15 -15
  49. package/organization/Link.js.map +1 -0
  50. package/organization/Measure.d.ts +22 -0
  51. package/organization/Measure.js +45 -0
  52. package/organization/Measure.js.map +1 -0
  53. package/organization/PeopleNode.d.ts +18 -0
  54. package/{src/organization/PeopleNode.ts → organization/PeopleNode.js} +10 -20
  55. package/organization/PeopleNode.js.map +1 -0
  56. package/organization/RaainNode.d.ts +91 -0
  57. package/{src/organization/RaainNode.ts → organization/RaainNode.js} +38 -63
  58. package/organization/RaainNode.js.map +1 -0
  59. package/organization/TeamNode.d.ts +63 -0
  60. package/{src/organization/TeamNode.ts → organization/TeamNode.js} +13 -36
  61. package/organization/TeamNode.js.map +1 -0
  62. package/organization/index.js +24 -0
  63. package/organization/index.js.map +1 -0
  64. package/package.json +1 -1
  65. package/polar/AbstractPolarMeasureValue.d.ts +29 -0
  66. package/{src/polar/AbstractPolarMeasureValue.ts → polar/AbstractPolarMeasureValue.js} +32 -58
  67. package/polar/AbstractPolarMeasureValue.js.map +1 -0
  68. package/polar/IPolarMeasureValue.d.ts +19 -0
  69. package/polar/IPolarMeasureValue.js +3 -0
  70. package/polar/IPolarMeasureValue.js.map +1 -0
  71. package/polar/MeasureValuePolarContainer.d.ts +19 -0
  72. package/{src/polar/MeasureValuePolarContainer.ts → polar/MeasureValuePolarContainer.js} +13 -29
  73. package/polar/MeasureValuePolarContainer.js.map +1 -0
  74. package/polar/PolarFilter.d.ts +16 -0
  75. package/polar/PolarFilter.js +45 -0
  76. package/polar/PolarFilter.js.map +1 -0
  77. package/polar/PolarMeasureValue.d.ts +51 -0
  78. package/{src/polar/PolarMeasureValue.ts → polar/PolarMeasureValue.js} +62 -125
  79. package/polar/PolarMeasureValue.js.map +1 -0
  80. package/polar/PolarMeasureValueMap.d.ts +45 -0
  81. package/{src/polar/PolarMeasureValueMap.ts → polar/PolarMeasureValueMap.js} +88 -165
  82. package/polar/PolarMeasureValueMap.js.map +1 -0
  83. package/polar/PolarValue.d.ts +10 -0
  84. package/polar/PolarValue.js +12 -0
  85. package/polar/PolarValue.js.map +1 -0
  86. package/polar/RadarPolarMeasureValue.d.ts +27 -0
  87. package/{src/polar/RadarPolarMeasureValue.ts → polar/RadarPolarMeasureValue.js} +21 -34
  88. package/polar/RadarPolarMeasureValue.js.map +1 -0
  89. package/polar/RainPolarMeasureValue.d.ts +20 -0
  90. package/polar/RainPolarMeasureValue.js +42 -0
  91. package/polar/RainPolarMeasureValue.js.map +1 -0
  92. package/polar/index.js +25 -0
  93. package/polar/index.js.map +1 -0
  94. package/quality/QualityPoint.d.ts +37 -0
  95. package/{src/quality/QualityPoint.ts → quality/QualityPoint.js} +33 -56
  96. package/quality/QualityPoint.js.map +1 -0
  97. package/quality/SpeedMatrix.d.ts +83 -0
  98. package/{src/quality/SpeedMatrix.ts → quality/SpeedMatrix.js} +76 -117
  99. package/quality/SpeedMatrix.js.map +1 -0
  100. package/quality/SpeedMatrixContainer.d.ts +102 -0
  101. package/{src/quality/SpeedMatrixContainer.ts → quality/SpeedMatrixContainer.js} +103 -210
  102. package/quality/SpeedMatrixContainer.js.map +1 -0
  103. package/quality/history/CartesianGaugeHistory.d.ts +15 -0
  104. package/quality/history/CartesianGaugeHistory.js +14 -0
  105. package/quality/history/CartesianGaugeHistory.js.map +1 -0
  106. package/quality/history/CartesianRainHistory.d.ts +9 -0
  107. package/quality/history/CartesianRainHistory.js +11 -0
  108. package/quality/history/CartesianRainHistory.js.map +1 -0
  109. package/quality/history/PositionHistory.d.ts +20 -0
  110. package/quality/history/PositionHistory.js +17 -0
  111. package/quality/history/PositionHistory.js.map +1 -0
  112. package/{src/quality/index.ts → quality/index.d.ts} +0 -3
  113. package/quality/index.js +26 -0
  114. package/quality/index.js.map +1 -0
  115. package/quality/position/Position.d.ts +22 -0
  116. package/quality/position/Position.js +50 -0
  117. package/quality/position/Position.js.map +1 -0
  118. package/quality/position/PositionValue.d.ts +9 -0
  119. package/quality/position/PositionValue.js +12 -0
  120. package/quality/position/PositionValue.js.map +1 -0
  121. package/quality/tools/QualityTools.d.ts +9 -0
  122. package/{src/quality/tools/QualityTools.ts → quality/tools/QualityTools.js} +17 -18
  123. package/quality/tools/QualityTools.js.map +1 -0
  124. package/radar/RadarMeasure.d.ts +19 -0
  125. package/radar/RadarMeasure.js +30 -0
  126. package/radar/RadarMeasure.js.map +1 -0
  127. package/radar/RadarNode.d.ts +30 -0
  128. package/{src/radar/RadarNode.ts → radar/RadarNode.js} +19 -41
  129. package/radar/RadarNode.js.map +1 -0
  130. package/radar/RadarNodeMap.d.ts +26 -0
  131. package/radar/RadarNodeMap.js +44 -0
  132. package/radar/RadarNodeMap.js.map +1 -0
  133. package/radar/index.js +20 -0
  134. package/radar/index.js.map +1 -0
  135. package/rain/MergeStrategy.d.ts +13 -0
  136. package/rain/MergeStrategy.js +11 -0
  137. package/rain/MergeStrategy.js.map +1 -0
  138. package/rain/RainComputation.d.ts +42 -0
  139. package/rain/RainComputation.js +65 -0
  140. package/rain/RainComputation.js.map +1 -0
  141. package/rain/RainComputationAbstract.d.ts +73 -0
  142. package/{src/rain/RainComputationAbstract.ts → rain/RainComputationAbstract.js} +69 -135
  143. package/rain/RainComputationAbstract.js.map +1 -0
  144. package/rain/RainComputationMap.d.ts +97 -0
  145. package/{src/rain/RainComputationMap.ts → rain/RainComputationMap.js} +22 -55
  146. package/rain/RainComputationMap.js.map +1 -0
  147. package/rain/RainComputationQuality.d.ts +40 -0
  148. package/{src/rain/RainComputationQuality.ts → rain/RainComputationQuality.js} +42 -80
  149. package/rain/RainComputationQuality.js.map +1 -0
  150. package/rain/RainMeasure.d.ts +17 -0
  151. package/rain/RainMeasure.js +18 -0
  152. package/rain/RainMeasure.js.map +1 -0
  153. package/rain/RainNode.d.ts +46 -0
  154. package/{src/rain/RainNode.ts → rain/RainNode.js} +72 -117
  155. package/rain/RainNode.js.map +1 -0
  156. package/rain/index.js +23 -0
  157. package/rain/index.js.map +1 -0
  158. package/.cursorignore +0 -10
  159. package/.github/workflows/ci.yml +0 -29
  160. package/LICENSE +0 -21
  161. package/RELEASE.md +0 -19
  162. package/specs/REQUIREMENTS.md +0 -42
  163. package/specs/TECHNICAL.md +0 -57
  164. package/specs/cartesian/Cartesian.spec.ts +0 -82
  165. package/specs/cartesian/CartesianTools.spec.ts +0 -121
  166. package/specs/gauge/Gauge.spec.ts +0 -39
  167. package/specs/organization/Organization.spec.ts +0 -38
  168. package/specs/polar/Polar.spec.ts +0 -267
  169. package/specs/quality/Position.spec.ts +0 -18
  170. package/specs/quality/QualityPointEdgeCases.spec.ts +0 -215
  171. package/specs/quality/QualityTools.spec.ts +0 -67
  172. package/specs/quality/SpeedMatrix.spec.ts +0 -214
  173. package/specs/radar/Radar.spec.ts +0 -129
  174. package/specs/rain/Rain.spec.ts +0 -334
  175. package/specs/tsconfig.json +0 -12
  176. package/src/cartesian/CartesianValue.ts +0 -26
  177. package/src/cartesian/EarthMap.ts +0 -5
  178. package/src/cartesian/ICartesianMeasureValue.ts +0 -22
  179. package/src/cartesian/LatLng.ts +0 -43
  180. package/src/cartesian/RadarCartesianMeasureValue.ts +0 -32
  181. package/src/cartesian/RainCartesianMeasureValue.ts +0 -32
  182. package/src/gauge/GaugeMeasure.ts +0 -42
  183. package/src/gauge/GaugeNodeMap.ts +0 -55
  184. package/src/organization/EventNode.ts +0 -43
  185. package/src/organization/Measure.ts +0 -61
  186. package/src/polar/IPolarMeasureValue.ts +0 -21
  187. package/src/polar/PolarFilter.ts +0 -46
  188. package/src/polar/PolarValue.ts +0 -16
  189. package/src/polar/RainPolarMeasureValue.ts +0 -57
  190. package/src/quality/history/CartesianGaugeHistory.ts +0 -23
  191. package/src/quality/history/CartesianRainHistory.ts +0 -15
  192. package/src/quality/history/PositionHistory.ts +0 -31
  193. package/src/quality/position/Position.ts +0 -59
  194. package/src/quality/position/PositionValue.ts +0 -15
  195. package/src/radar/RadarMeasure.ts +0 -41
  196. package/src/radar/RadarNodeMap.ts +0 -61
  197. package/src/rain/MergeStrategy.ts +0 -15
  198. package/src/rain/RainComputation.ts +0 -96
  199. package/src/rain/RainMeasure.ts +0 -25
  200. package/tsconfig.json +0 -17
  201. package/tslint.json +0 -79
  202. package/typedoc.json +0 -31
  203. /package/{src/cartesian/index.ts → cartesian/index.d.ts} +0 -0
  204. /package/{src/gauge/index.ts → gauge/index.d.ts} +0 -0
  205. /package/{src/index.ts → index.d.ts} +0 -0
  206. /package/{src/organization/IVersion.ts → organization/IVersion.d.ts} +0 -0
  207. /package/{src/organization/index.ts → organization/index.d.ts} +0 -0
  208. /package/{src/polar/index.ts → polar/index.d.ts} +0 -0
  209. /package/{src/radar/index.ts → radar/index.d.ts} +0 -0
  210. /package/{src/rain/index.ts → rain/index.d.ts} +0 -0
@@ -1,334 +0,0 @@
1
- import {expect} from 'chai';
2
- import {
3
- CartesianTools,
4
- CartesianValue,
5
- LatLng,
6
- MergeStrategy,
7
- PolarMeasureValue,
8
- RadarNode,
9
- RainCartesianMeasureValue,
10
- RainComputation,
11
- RainComputationMap,
12
- RainComputationQuality,
13
- RainMeasure,
14
- RainNode,
15
- RainPolarMeasureValue,
16
- SpeedMatrixContainer,
17
- TeamNode
18
- } from '../../src';
19
-
20
- // tslint:disable-next-line:only-arrow-functions
21
- describe('Rain', function () {
22
-
23
- this.timeout(100000);
24
- const optionalTrace = (...log: any[]) => {
25
- // console.log(new Date().toISOString(), log)
26
- }
27
-
28
- it('should create simple ones', () => {
29
- const rainNodeEmpty = new RainNode({
30
- id: 'notEmpty',
31
- name: '',
32
- links: [],
33
- team: null
34
- });
35
- expect(JSON.stringify(rainNodeEmpty.toJSON()))
36
- .eq('{"id":"notEmpty","links":[],"name":"","status":-1,"quality":-1,"team":null,' +
37
- '"radars":[],"gauges":[],"lastCompletedComputations":[]}');
38
- expect(rainNodeEmpty.getCenter().lat).eq(0);
39
- expect(rainNodeEmpty.getCenter().lng).eq(0);
40
-
41
- const radarNode1 = new RadarNode({
42
- id: 'rid',
43
- latitude: 1, longitude: 1,
44
- name: 'rname',
45
- team: null
46
- });
47
- const radarNode2 = new RadarNode({
48
- id: 'rid',
49
- latitude: 4, longitude: 6,
50
- name: 'rname',
51
- team: null
52
- });
53
- const rainNodeWithRadars = new RainNode({
54
- id: 'notEmpty',
55
- name: '',
56
- team: null,
57
- radars: [radarNode1, radarNode2],
58
- });
59
- expect(JSON.stringify(rainNodeWithRadars.toJSON()))
60
- .eq('{"id":"notEmpty","links":[{"rel":"radar","href":"../radars/rid"}],"name":"","status":-1,"quality":-1,"team":null,' +
61
- '"latLngRectsAsJSON":"[[{\\"lat\\":2,\\"lng\\":0},{\\"lat\\":0,\\"lng\\":2}],[{\\"lat\\":5,\\"lng\\":5},{\\"lat\\":3,\\"lng\\":7}]]",' +
62
- '"radars":["rid"],"gauges":[],"lastCompletedComputations":[]}');
63
-
64
- expect(rainNodeWithRadars.getCenter().lat).eq(2.5);
65
- expect(rainNodeWithRadars.getCenter().lng).eq(3.5);
66
- expect(JSON.stringify(rainNodeWithRadars.getLimitPoints())).eq('[{"lat":0,"lng":0},{"lat":5,"lng":7}]');
67
-
68
-
69
- });
70
-
71
- it('should create some', () => {
72
-
73
- const team1 = new TeamNode({
74
- id: 'tid1',
75
- name: 'team1',
76
- description: 'team...',
77
- contracts: ['basic'],
78
- contacts: []
79
- });
80
- const radarNode = new RadarNode({
81
- id: 'r1',
82
- latitude: 1, longitude: 1,
83
- name: 'any name',
84
- team: team1
85
- });
86
- const rainComputationEmpty = new RainComputation({
87
- id: 'rc1',
88
- date: new Date(10000000),
89
- isReady: null,
90
- results: null,
91
- version: '1.0.0'
92
- });
93
-
94
- const topLeft1 = new LatLng({lat: 1.23, lng: 2.65});
95
- const bottomRight1 = new LatLng({lat: 1.13, lng: 2.75});
96
- const topLeft2 = new LatLng({lat: 2.23, lng: 3.65});
97
- const bottomRight2 = new LatLng({lat: 2.13, lng: 3.75});
98
- const latLngRects = [[topLeft1, bottomRight1], [topLeft2, bottomRight2]]
99
- const rainNode = new RainNode({
100
- id: 'RainNode looks OK.',
101
- name: 'name',
102
- links: [radarNode, rainComputationEmpty, null],
103
- latLngRectsAsJSON: JSON.stringify(latLngRects),
104
- team: team1
105
- });
106
- expect(rainNode.id).eq('RainNode looks OK.');
107
- expect(JSON.stringify(rainNode.toJSON())).eq('' +
108
- '{"id":"RainNode looks OK.",' +
109
- '"links":[' +
110
- '{"rel":"radar","href":"../radars/r1"},' +
111
- '{"rel":"rain-computation","href":"../rain-computations/1970-01-01T02:46:40.000Z/1.0.0/rc1"}],' +
112
- '"name":"name","status":-1,"quality":-1,"team":"tid1",' +
113
- '"latLngRectsAsJSON":"[[{\\"lat\\":1.23,\\"lng\\":2.65},{\\"lat\\":1.13,\\"lng\\":2.75}],[{\\"lat\\":2.23,\\"lng\\":3.65},{\\"lat\\":2.13,\\"lng\\":3.75}]]",' +
114
- '"radars":["r1"],"gauges":[],"lastCompletedComputations":["rc1"]}');
115
-
116
- expect(rainNode.getCenter().lat).eq(1.68);
117
- expect(rainNode.getCenter().lng).eq(3.2);
118
- expect(rainNode.getLinksCount()).eq(2);
119
- expect(rainNode.getLinksCount(RadarNode.TYPE)).eq(1);
120
- expect(rainNode.getLinkIds().toString()).eq('r1,rc1');
121
- expect(rainNode.getLink('radar', 0).getId()).eq('r1');
122
-
123
- const rainComputation = new RainComputation({
124
- id: 'rc1',
125
- date: new Date('2022-01-01'),
126
- links: [radarNode, radarNode, null],
127
- quality: 1,
128
- progressIngest: 1,
129
- progressComputing: 1,
130
- timeSpentInMs: 100,
131
- isReady: true,
132
- isDoneDate: new Date(),
133
- results: [new RainPolarMeasureValue({
134
- polarMeasureValue:
135
- new PolarMeasureValue({measureValuePolarContainers: [], azimuthsCount: 0, polarEdgesCount: 0}),
136
- version: 'version2'
137
- })],
138
- launchedBy: 'oneUser',
139
- version: 'v1',
140
- });
141
-
142
- expect(rainComputation.id).eq('rc1');
143
- expect(rainComputation.getVersion()).eq('v1');
144
-
145
- const rainComputationQuality = new RainComputationQuality({
146
- id: 'rcq1',
147
- date: new Date('2026-07-08'),
148
- links: [radarNode],
149
- quality: 1,
150
- isReady: true,
151
- rainComputation,
152
- qualitySpeedMatrixContainer: new SpeedMatrixContainer({matrices: []}),
153
- version: 'v1'
154
- });
155
- expect(rainComputationQuality.id).eq('rcq1');
156
- expect(rainComputationQuality.getVersion()).eq('v1');
157
- expect(JSON.stringify(rainComputationQuality.toJSON()))
158
- .eq('{' +
159
- '"id":"rcq1",' +
160
- '"links":[' +
161
- '{"rel":"radar","href":"../radars/r1"},' +
162
- '{"rel":"rain-computation","href":"../rain-computations/2022-01-01T00:00:00.000Z/v1/rc1"}' +
163
- '],' +
164
- '"version":"v1",' +
165
- '"date":"2026-07-08T00:00:00.000Z",' +
166
- '"quality":1,' +
167
- '"progressIngest":-1,' +
168
- '"progressComputing":-1,' +
169
- '"isReady":true,' +
170
- '"qualitySpeedMatrixContainer":{"qualityPoints":[],"trustedIndicators":[],"flattenMatrices":[],"speed":{"angleInDegrees":0,"pixelsPerPeriod":0},"matrices":[]},' +
171
- '"rainComputation":"rc1"' +
172
- '}');
173
-
174
- const cartesianValues = [
175
- new CartesianValue({value: 123, lat: 10, lng: 20}),
176
- new CartesianValue({value: 321, lat: 10 + CartesianTools.DEFAULT_SCALE, lng: 20 + CartesianTools.DEFAULT_SCALE})];
177
- const rainCartesianMeasureValue = new RainCartesianMeasureValue({
178
- cartesianValues,
179
- version: 'test',
180
- limitPoints: undefined
181
- })
182
- const rainMeasure = new RainMeasure({id: 'measure', values: [rainCartesianMeasureValue], configurationAsJSON: '{"test": true}'});
183
- expect(JSON.stringify(rainMeasure.toJSON()))
184
- .eq('{"id":"measure","links":[],"validity":-1,"configurationAsJSON":"{\\"test\\":true}","values":[{"cartesianValues":[{"lat":10,"lng":20,"value":123},{"lat":10.01,"lng":20.01,"value":321}],"limitPoints":[{"lat":10,"lng":20},{"lat":10.01,"lng":20.01}],"version":"test"}]}');
185
-
186
- const rainComputationMap = new RainComputationMap({
187
- id: 'rc1',
188
- date: new Date('2022-01-01'),
189
- links: [radarNode, radarNode, null],
190
- quality: 1,
191
- progressIngest: 1,
192
- progressComputing: 1,
193
- timeSpentInMs: 100,
194
- isReady: true,
195
- isDoneDate: new Date('1988-01-01'),
196
- map: [rainMeasure],
197
- launchedBy: 'oneUser',
198
- version: 'v1',
199
- });
200
-
201
- expect(JSON.stringify(rainComputationMap.toJSON()))
202
- .eq('{"id":"rc1","links":[{"rel":"radar","href":"../radars/r1"}],"version":"v1","date":"2022-01-01T00:00:00.000Z","quality":1,"progressIngest":1,"progressComputing":1,"timeSpentInMs":100,"isReady":true,"isDoneDate":"1988-01-01T00:00:00.000Z","launchedBy":"oneUser","map":"[{\\"id\\":\\"measure\\",\\"links\\":[],\\"validity\\":-1,\\"configurationAsJSON\\":\\"{\\\\\\"test\\\\\\":true}\\",\\"values\\":[{\\"cartesianValues\\":[{\\"lat\\":10,\\"lng\\":20,\\"value\\":123},{\\"lat\\":10.01,\\"lng\\":20.01,\\"value\\":321}],\\"limitPoints\\":[{\\"lat\\":10,\\"lng\\":20},{\\"lat\\":10.01,\\"lng\\":20.01}],\\"version\\":\\"test\\"}]}]"}');
203
-
204
- rainComputationMap.setMapData([rainMeasure, rainMeasure], {mergeStrategy: MergeStrategy.NONE});
205
- expect(JSON.stringify(rainComputationMap.toJSON()))
206
- .eq('{"id":"rc1","links":[{"rel":"radar","href":"../radars/r1"}],"version":"v1","date":"2022-01-01T00:00:00.000Z","quality":1,"progressIngest":1,"progressComputing":1,"timeSpentInMs":100,"isReady":true,"isDoneDate":"1988-01-01T00:00:00.000Z","launchedBy":"oneUser","map":"[{\\"id\\":\\"measure\\",\\"links\\":[],\\"validity\\":-1,\\"configurationAsJSON\\":\\"{\\\\\\"test\\\\\\":true}\\",\\"values\\":[{\\"cartesianValues\\":[{\\"lat\\":10,\\"lng\\":20,\\"value\\":123},{\\"lat\\":10.01,\\"lng\\":20.01,\\"value\\":321}],\\"limitPoints\\":[{\\"lat\\":10,\\"lng\\":20},{\\"lat\\":10.01,\\"lng\\":20.01}],\\"version\\":\\"test\\"}]},{\\"id\\":\\"measure\\",\\"links\\":[],\\"validity\\":-1,\\"configurationAsJSON\\":\\"{\\\\\\"test\\\\\\":true}\\",\\"values\\":[{\\"cartesianValues\\":[{\\"lat\\":10,\\"lng\\":20,\\"value\\":123},{\\"lat\\":10.01,\\"lng\\":20.01,\\"value\\":321}],\\"limitPoints\\":[{\\"lat\\":10,\\"lng\\":20},{\\"lat\\":10.01,\\"lng\\":20.01}],\\"version\\":\\"test\\"}]}]"}');
207
-
208
- const cartesianTools = new CartesianTools();
209
- cartesianTools.buildLatLngEarthMap();
210
-
211
- const mergeLimitPoints: [LatLng, LatLng] = [new LatLng({lat: 10, lng: 11}), new LatLng({lat: 11, lng: 11.5})];
212
- rainComputationMap.setMapData([rainMeasure, rainMeasure], {
213
- mergeStrategy: MergeStrategy.AVERAGE,
214
- cartesianTools,
215
- mergeLimitPoints,
216
- removeNullValues: false,
217
- });
218
- expect(JSON.stringify(rainComputationMap.toJSON()))
219
- .eq('{"id":"rc1","links":[{"rel":"radar","href":"../radars/r1"}],"version":"v1","date":"2022-01-01T00:00:00.000Z","quality":1,"progressIngest":1,"progressComputing":1,"timeSpentInMs":100,"isReady":true,"isDoneDate":"1988-01-01T00:00:00.000Z","launchedBy":"oneUser","map":"[{\\"id\\":\\"measure\\",\\"links\\":[],\\"validity\\":-1,\\"configurationAsJSON\\":\\"{\\\\\\"test\\\\\\":true}\\",\\"values\\":[{\\"cartesianValues\\":[],\\"limitPoints\\":[{\\"lat\\":10,\\"lng\\":11},{\\"lat\\":11,\\"lng\\":11.5}]}]}]"}');
220
-
221
- });
222
-
223
- it('should challenge rainComputationMap.setMapData', () => {
224
-
225
- const cartesianPixelWidthToCompute = new LatLng({lat: 0.012, lng: 0.00876});
226
-
227
- optionalTrace('build..');
228
- const rainMeasures = [];
229
- const mergeLimitPoints: [LatLng, LatLng] = [new LatLng({lat: 1, lng: 2}), new LatLng({lat: 3, lng: 5})];
230
- for (let valueId = 1; valueId < 5; valueId++) {
231
- const cartesianValues = [];
232
- let value = valueId;
233
- for (let lat = mergeLimitPoints[0].lat; lat <= mergeLimitPoints[1].lat; lat += cartesianPixelWidthToCompute.lat) {
234
- for (let lng = mergeLimitPoints[0].lng; lng <= mergeLimitPoints[1].lng; lng += cartesianPixelWidthToCompute.lng) {
235
- cartesianValues.push(new CartesianValue({value: value++, lat, lng}))
236
- }
237
- }
238
-
239
- const rainCartesianMeasureValue = new RainCartesianMeasureValue({
240
- cartesianValues,
241
- version: 'test',
242
- limitPoints: undefined,
243
- });
244
- const rainMeasure = new RainMeasure({
245
- id: 'm_' + valueId,
246
- values: [rainCartesianMeasureValue],
247
- configurationAsJSON: '{"test": true}'
248
- });
249
-
250
- rainMeasures.push(rainMeasure);
251
- optionalTrace('rainMeasures pushed', value, 'values');
252
- }
253
- optionalTrace('build done');
254
-
255
- const rainComputationMap = new RainComputationMap({
256
- id: 'rc1',
257
- date: new Date('2022-01-01'),
258
- links: [],
259
- quality: 1,
260
- progressIngest: 1,
261
- progressComputing: 1,
262
- timeSpentInMs: 100,
263
- isReady: true,
264
- isDoneDate: new Date('1988-01-01'),
265
- map: [rainMeasures[0]],
266
- launchedBy: 'test',
267
- version: 'v1',
268
- });
269
-
270
- const cartesianTools = new CartesianTools();
271
- cartesianTools.buildLatLngEarthMap();
272
-
273
- optionalTrace('setMapData...');
274
- rainComputationMap.setMapData(rainMeasures, {
275
- mergeStrategy: MergeStrategy.MAX,
276
- cartesianTools,
277
- mergeLimitPoints,
278
- removeNullValues: true,
279
- });
280
-
281
- optionalTrace('setMapData done');
282
- const mappedRainMeasures = rainComputationMap.getMapData().map(m => new RainMeasure(m as any));
283
- expect(mappedRainMeasures.length).eq(1);
284
- const mappedRainCartesianMeasureValues = mappedRainMeasures[0].values.map(m => new RainCartesianMeasureValue(m as any));
285
- expect(mappedRainCartesianMeasureValues.length).eq(1);
286
- expect(mappedRainCartesianMeasureValues[0].getCartesianValues().length).eq(50267);
287
-
288
- });
289
-
290
- it('should challenge rainComputation merge', () => {
291
-
292
- const cartesianPixelWidthOfEach = new LatLng({lat: 0.05, lng: 0.05});
293
- const mergeLimitPoints: [LatLng, LatLng] = [new LatLng({lat: 2, lng: 1}), new LatLng({lat: 3, lng: 2})];
294
- const limitPointsOfEach: [LatLng, LatLng] = [new LatLng({lat: 1, lng: 1.5}), new LatLng({lat: 2.5, lng: 2})];
295
- const rainCartesianMeasureValues = [];
296
- for (let valueId = 1; valueId < 5; valueId++) {
297
- const cartesianValues = [];
298
- for (let lat = limitPointsOfEach[0].lat; lat <= limitPointsOfEach[1].lat; lat += cartesianPixelWidthOfEach.lat) {
299
- for (let lng = limitPointsOfEach[0].lng; lng <= limitPointsOfEach[1].lng; lng += cartesianPixelWidthOfEach.lng) {
300
- cartesianValues.push(new CartesianValue({lat, lng, value: 1}));
301
- }
302
- }
303
- const rainPolarMeasureValue = new RainCartesianMeasureValue({
304
- cartesianValues,
305
- limitPoints: limitPointsOfEach,
306
- version: 'v'
307
- });
308
- rainCartesianMeasureValues.push(rainPolarMeasureValue);
309
- }
310
-
311
- const rainComputation = new RainComputation({
312
- id: 'cartesian1', date: new Date('2022-01-01'), isReady: true,
313
- results: rainCartesianMeasureValues
314
- });
315
-
316
- const cartesianTools = new CartesianTools();
317
- cartesianTools.buildLatLngEarthMap();
318
-
319
- const mergedRainCartesianMeasureValues = rainComputation.mergeCartesianResults({
320
- mergeStrategy: MergeStrategy.SUM,
321
- cartesianTools,
322
- mergeLimitPoints,
323
- removeNullValues: true,
324
- });
325
-
326
- expect(mergedRainCartesianMeasureValues.length).eq(1);
327
- expect(mergedRainCartesianMeasureValues[0].values.length).eq(1);
328
- const cartesianValuesFound: CartesianValue[] = (mergedRainCartesianMeasureValues[0].values[0] as any).cartesianValues;
329
- expect(cartesianValuesFound.length).eq(110);
330
- expect(cartesianValuesFound[0].lat).eq(2);
331
- expect(cartesianValuesFound[0].lng).eq(1.5);
332
- });
333
-
334
- });
@@ -1,12 +0,0 @@
1
- {
2
- "extends": "../tsconfig.json",
3
- "compilerOptions": {
4
- "baseUrl": "./"
5
- },
6
- "exclude": [
7
- "../node_modules"
8
- ],
9
- "include": [
10
- "./**/*.spec.ts"
11
- ]
12
- }
@@ -1,26 +0,0 @@
1
- import {LatLng} from './LatLng';
2
-
3
- export class CartesianValue extends LatLng {
4
-
5
- public value: number;
6
-
7
- constructor(json: {
8
- value: number,
9
- lat: number,
10
- lng: number
11
- }
12
- ) {
13
- super(json);
14
- this.value = json.value;
15
- }
16
-
17
- toJSON(): {
18
- value: number,
19
- lat: number,
20
- lng: number
21
- } {
22
- const json = super.toJSON() as any;
23
- json.value = this.value;
24
- return json;
25
- }
26
- }
@@ -1,5 +0,0 @@
1
- export interface EarthMap {
2
- latitudeScale: number,
3
- latitudes: number[],
4
- latitudeLongitudeScales: number[],
5
- }
@@ -1,22 +0,0 @@
1
- import {CartesianValue} from './CartesianValue';
2
- import {LatLng} from './LatLng';
3
-
4
- export interface ICartesianMeasureValue {
5
-
6
- getLimitPoints(): [LatLng, LatLng];
7
-
8
- getCartesianValuesStringified(): string;
9
-
10
- getCartesianValues(): CartesianValue[];
11
-
12
- toJSON(): any;
13
-
14
- toJSONWithCartesianValuesStringified(): any;
15
-
16
- getCartesianValue(json: { lat: number, lng: number }): CartesianValue;
17
-
18
- getCartesianValueRounded(json: { lat: number, lng: number, scale: LatLng }): CartesianValue;
19
-
20
- setCartesianValue(json: { lat: number, lng: number, value: number }): void;
21
-
22
- }
@@ -1,43 +0,0 @@
1
- import {CartesianTools} from './CartesianTools';
2
-
3
- export class LatLng {
4
-
5
- public lat: number;
6
- public lng: number;
7
-
8
- constructor(json: {
9
- lat: number,
10
- lng: number,
11
- }) {
12
- if (typeof json?.lat === 'undefined' || typeof json?.lng === 'undefined') {
13
- throw new Error('LatLng needs valid latitude && longitude');
14
- }
15
-
16
- this.lat = json.lat;
17
- this.lng = json.lng;
18
- }
19
-
20
- public equals(v: LatLng) {
21
- return this.lat === v.lat && this.lng === v.lng;
22
- }
23
-
24
- setPrecision(precision: number = 12) {
25
- const tenPower = Math.pow(10, precision);
26
- this.lat = Math.round(this.lat * tenPower) / tenPower;
27
- this.lng = Math.round(this.lng * tenPower) / tenPower;
28
- }
29
-
30
- rounded(scale: LatLng) {
31
- this.lat = CartesianTools.RoundLatLng(this.lat, scale.lat, true);
32
- this.lng = CartesianTools.RoundLatLng(this.lng, scale.lng, true);
33
- }
34
-
35
- limitPrecision(precision = 12) {
36
- this.lat = CartesianTools.LimitWithPrecision(this.lat, precision);
37
- this.lng = CartesianTools.LimitWithPrecision(this.lng, precision);
38
- }
39
-
40
- toJSON() {
41
- return {lat: this.lat, lng: this.lng};
42
- }
43
- }
@@ -1,32 +0,0 @@
1
- import {CartesianValue} from './CartesianValue';
2
- import {CartesianMeasureValue} from './CartesianMeasureValue';
3
- import {LatLng} from './LatLng';
4
-
5
- export class RadarCartesianMeasureValue extends CartesianMeasureValue {
6
-
7
- public angle: number; // In degrees. Radar incidence angle, from 0° to 90°, from the ground to the top
8
- public axis: number; // In degrees. Polarization angle 0° = horizontal, 90°= vertical.
9
-
10
- constructor(json: {
11
- cartesianValues: string | CartesianValue[],
12
- angle: number,
13
- axis: number,
14
- limitPoints: [LatLng, LatLng],
15
- }) {
16
-
17
- super(json);
18
- this.angle = json.angle;
19
- this.axis = json.axis;
20
- }
21
-
22
- toJSON(options = {stringify: false}): any {
23
- const json: any = super.toJSON(options);
24
- json.angle = this.angle;
25
- json.axis = this.axis;
26
- return json;
27
- }
28
-
29
- toJSONWithCartesianValuesStringified(): any {
30
- return this.toJSON({stringify: true});
31
- }
32
- }
@@ -1,32 +0,0 @@
1
- import {IVersion} from '../organization';
2
- import {CartesianValue} from './CartesianValue';
3
- import {CartesianMeasureValue} from './CartesianMeasureValue';
4
- import {LatLng} from './LatLng';
5
-
6
- export class RainCartesianMeasureValue extends CartesianMeasureValue implements IVersion {
7
-
8
- private readonly version: string;
9
-
10
- constructor(json: {
11
- cartesianValues: string | CartesianValue[],
12
- limitPoints: [LatLng, LatLng],
13
- version: string,
14
- }) {
15
- super(json);
16
- this.version = json.version;
17
- }
18
-
19
- getVersion(): string {
20
- return this.version;
21
- }
22
-
23
- toJSON(options = {stringify: false}): any {
24
- const json: any = super.toJSON(options);
25
- json.version = this.getVersion();
26
- return json;
27
- }
28
-
29
- toJSONWithCartesianValuesStringified(): any {
30
- return this.toJSON({stringify: true});
31
- }
32
- }
@@ -1,42 +0,0 @@
1
- import {Measure} from '../organization';
2
- import {IPolarMeasureValue} from '../polar';
3
- import {ICartesianMeasureValue} from '../cartesian';
4
- import {GaugeNode} from './GaugeNode';
5
-
6
- /**
7
- * api/gauges/:id/measures/:id
8
- */
9
- export class GaugeMeasure extends Measure {
10
-
11
- public static TYPE = 'gauge-measure';
12
-
13
- public gauge: string;
14
-
15
- constructor(json: {
16
- id: string,
17
- values: IPolarMeasureValue[] | ICartesianMeasureValue[] | number[],
18
- date?: Date,
19
- validity?: number,
20
- configurationAsJSON?: string,
21
- gauge?: string
22
- }
23
- ) {
24
- super(json);
25
- if (json.gauge) {
26
- this.addLinks([new GaugeNode({id: json.gauge, latitude: NaN, longitude: NaN, team: null, name: null})]);
27
- }
28
- }
29
-
30
- public toJSON(options?: any): any {
31
- const json = super.toJSON(options);
32
- const gaugeLink = this.getLink(GaugeNode.TYPE);
33
- if (gaugeLink) {
34
- json['gauge'] = gaugeLink.getId();
35
- }
36
- return json;
37
- }
38
-
39
- protected getLinkType(): string {
40
- return GaugeMeasure.TYPE;
41
- }
42
- }
@@ -1,55 +0,0 @@
1
- import {Link, RaainNode, TeamNode} from '../organization';
2
- import {GaugeNode} from './GaugeNode';
3
- import {GaugeMeasure} from './GaugeMeasure';
4
-
5
- /**
6
- * api/gauges/:id?format=map&begin=...
7
- */
8
- export class GaugeNodeMap extends GaugeNode {
9
-
10
- private map: string; // GaugeMeasure[]; stringified
11
-
12
- constructor(json: {
13
- id: string,
14
- latitude: number,
15
- longitude: number,
16
- name: string,
17
- description: string,
18
- team: TeamNode,
19
- configurationAsJSON?: any,
20
- map?: string,
21
- links?: Link[] | RaainNode[],
22
- version?: string,
23
- }) {
24
- super(json);
25
- this.setMapData(json.map);
26
- }
27
-
28
- public toJSON(): any {
29
- const json = super.toJSON();
30
- json.map = this.map;
31
- return json;
32
- }
33
-
34
- public setMapData(mapData: GaugeMeasure[] | string) {
35
- if (!mapData) {
36
- return;
37
- }
38
-
39
- let map = mapData;
40
- try {
41
- if (typeof (mapData) !== 'string') {
42
- map = JSON.stringify(mapData);
43
- }
44
- } catch (e) {
45
- }
46
- this.map = map.toString();
47
- }
48
-
49
- public getMapData(): GaugeMeasure[] {
50
- if (!this.map) {
51
- return [];
52
- }
53
- return JSON.parse(this.map);
54
- }
55
- }
@@ -1,43 +0,0 @@
1
- /**
2
- * api/notifications/:id
3
- */
4
- export class EventNode {
5
- public id: string;
6
- public title: string;
7
- public status: number;
8
- public red: boolean;
9
- public description: string;
10
- public created: Date;
11
- public modified: Date;
12
-
13
- constructor(json: {
14
- id: string,
15
- title: string,
16
- status: number,
17
- red: boolean,
18
- description: string,
19
- created: Date,
20
- modified: Date
21
- }
22
- ) {
23
- this.id = json.id;
24
- this.title = json.title;
25
- this.status = json.status;
26
- this.red = json.red;
27
- this.description = json.description;
28
- this.created = json.created;
29
- this.modified = json.modified;
30
- }
31
-
32
- public toJSON(): any {
33
- return {
34
- id: this.id,
35
- title: this.title,
36
- status: this.status,
37
- red: this.red,
38
- description: this.description,
39
- created: this.created,
40
- modified: this.modified,
41
- } as any;
42
- }
43
- }