raain-model 2.6.10 → 3.0.1

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 (215) hide show
  1. package/CHANGELOG.md +94 -7
  2. package/README.md +14 -13
  3. package/RELEASE_PROCESS.md +91 -4
  4. package/cartesian/CartesianMeasureValue.d.ts +46 -0
  5. package/{src/cartesian/CartesianMeasureValue.ts → cartesian/CartesianMeasureValue.js} +41 -73
  6. package/cartesian/CartesianMeasureValue.js.map +1 -0
  7. package/cartesian/CartesianTools.d.ts +32 -0
  8. package/{src/cartesian/CartesianTools.ts → cartesian/CartesianTools.js} +69 -130
  9. package/cartesian/CartesianTools.js.map +1 -0
  10. package/cartesian/CartesianValue.d.ts +14 -0
  11. package/cartesian/CartesianValue.js +17 -0
  12. package/cartesian/CartesianValue.js.map +1 -0
  13. package/cartesian/EarthMap.d.ts +5 -0
  14. package/cartesian/EarthMap.js +3 -0
  15. package/cartesian/EarthMap.js.map +1 -0
  16. package/cartesian/ICartesianMeasureValue.d.ts +23 -0
  17. package/cartesian/ICartesianMeasureValue.js +3 -0
  18. package/cartesian/ICartesianMeasureValue.js.map +1 -0
  19. package/cartesian/LatLng.d.ts +16 -0
  20. package/cartesian/LatLng.js +34 -0
  21. package/cartesian/LatLng.js.map +1 -0
  22. package/cartesian/RadarCartesianMeasureValue.d.ts +27 -0
  23. package/cartesian/RadarCartesianMeasureValue.js +24 -0
  24. package/cartesian/RadarCartesianMeasureValue.js.map +1 -0
  25. package/cartesian/RainCartesianMeasureValue.d.ts +25 -0
  26. package/cartesian/RainCartesianMeasureValue.js +25 -0
  27. package/cartesian/RainCartesianMeasureValue.js.map +1 -0
  28. package/cartesian/index.js +25 -0
  29. package/cartesian/index.js.map +1 -0
  30. package/gauge/GaugeMeasure.d.ts +30 -0
  31. package/gauge/GaugeMeasure.js +30 -0
  32. package/gauge/GaugeMeasure.js.map +1 -0
  33. package/gauge/GaugeNode.d.ts +95 -0
  34. package/{src/gauge/GaugeNode.ts → gauge/GaugeNode.js} +28 -54
  35. package/gauge/GaugeNode.js.map +1 -0
  36. package/gauge/GaugeNodeMap.d.ts +35 -0
  37. package/gauge/GaugeNodeMap.js +42 -0
  38. package/gauge/GaugeNodeMap.js.map +1 -0
  39. package/gauge/index.js +20 -0
  40. package/gauge/index.js.map +1 -0
  41. package/index.js +24 -0
  42. package/index.js.map +1 -0
  43. package/organization/EventNode.d.ts +30 -0
  44. package/organization/EventNode.js +30 -0
  45. package/organization/EventNode.js.map +1 -0
  46. package/organization/IVersion.js +3 -0
  47. package/organization/IVersion.js.map +1 -0
  48. package/organization/Link.d.ts +16 -0
  49. package/{src/organization/Link.ts → organization/Link.js} +15 -15
  50. package/organization/Link.js.map +1 -0
  51. package/organization/Measure.d.ts +30 -0
  52. package/organization/Measure.js +51 -0
  53. package/organization/Measure.js.map +1 -0
  54. package/organization/PeopleNode.d.ts +23 -0
  55. package/{src/organization/PeopleNode.ts → organization/PeopleNode.js} +10 -20
  56. package/organization/PeopleNode.js.map +1 -0
  57. package/organization/RaainNode.d.ts +95 -0
  58. package/{src/organization/RaainNode.ts → organization/RaainNode.js} +38 -63
  59. package/organization/RaainNode.js.map +1 -0
  60. package/organization/TeamNode.d.ts +51 -0
  61. package/organization/TeamNode.js +52 -0
  62. package/organization/TeamNode.js.map +1 -0
  63. package/organization/index.js +24 -0
  64. package/organization/index.js.map +1 -0
  65. package/package.json +4 -2
  66. package/polar/AbstractPolarMeasureValue.d.ts +31 -0
  67. package/{src/polar/AbstractPolarMeasureValue.ts → polar/AbstractPolarMeasureValue.js} +34 -62
  68. package/polar/AbstractPolarMeasureValue.js.map +1 -0
  69. package/polar/IPolarMeasureValue.d.ts +19 -0
  70. package/polar/IPolarMeasureValue.js +3 -0
  71. package/polar/IPolarMeasureValue.js.map +1 -0
  72. package/polar/MeasureValuePolarContainer.d.ts +24 -0
  73. package/{src/polar/MeasureValuePolarContainer.ts → polar/MeasureValuePolarContainer.js} +13 -29
  74. package/polar/MeasureValuePolarContainer.js.map +1 -0
  75. package/polar/PolarFilter.d.ts +16 -0
  76. package/polar/PolarFilter.js +45 -0
  77. package/polar/PolarFilter.js.map +1 -0
  78. package/polar/PolarMeasureValue.d.ts +51 -0
  79. package/{src/polar/PolarMeasureValue.ts → polar/PolarMeasureValue.js} +62 -125
  80. package/polar/PolarMeasureValue.js.map +1 -0
  81. package/polar/PolarMeasureValueMap.d.ts +45 -0
  82. package/{src/polar/PolarMeasureValueMap.ts → polar/PolarMeasureValueMap.js} +88 -165
  83. package/polar/PolarMeasureValueMap.js.map +1 -0
  84. package/polar/PolarValue.d.ts +10 -0
  85. package/polar/PolarValue.js +12 -0
  86. package/polar/PolarValue.js.map +1 -0
  87. package/polar/RadarPolarMeasureValue.d.ts +33 -0
  88. package/{src/polar/RadarPolarMeasureValue.ts → polar/RadarPolarMeasureValue.js} +31 -39
  89. package/polar/RadarPolarMeasureValue.js.map +1 -0
  90. package/polar/RainPolarMeasureValue.d.ts +24 -0
  91. package/polar/RainPolarMeasureValue.js +46 -0
  92. package/polar/RainPolarMeasureValue.js.map +1 -0
  93. package/polar/index.js +25 -0
  94. package/polar/index.js.map +1 -0
  95. package/quality/QualityPoint.d.ts +37 -0
  96. package/{src/quality/QualityPoint.ts → quality/QualityPoint.js} +33 -56
  97. package/quality/QualityPoint.js.map +1 -0
  98. package/quality/SpeedMatrix.d.ts +83 -0
  99. package/{src/quality/SpeedMatrix.ts → quality/SpeedMatrix.js} +76 -117
  100. package/quality/SpeedMatrix.js.map +1 -0
  101. package/quality/SpeedMatrixContainer.d.ts +102 -0
  102. package/{src/quality/SpeedMatrixContainer.ts → quality/SpeedMatrixContainer.js} +103 -210
  103. package/quality/SpeedMatrixContainer.js.map +1 -0
  104. package/quality/history/CartesianGaugeHistory.d.ts +15 -0
  105. package/quality/history/CartesianGaugeHistory.js +14 -0
  106. package/quality/history/CartesianGaugeHistory.js.map +1 -0
  107. package/quality/history/CartesianRainHistory.d.ts +9 -0
  108. package/quality/history/CartesianRainHistory.js +11 -0
  109. package/quality/history/CartesianRainHistory.js.map +1 -0
  110. package/quality/history/PositionHistory.d.ts +20 -0
  111. package/quality/history/PositionHistory.js +17 -0
  112. package/quality/history/PositionHistory.js.map +1 -0
  113. package/{src/quality/index.ts → quality/index.d.ts} +0 -3
  114. package/quality/index.js +26 -0
  115. package/quality/index.js.map +1 -0
  116. package/quality/position/Position.d.ts +22 -0
  117. package/quality/position/Position.js +50 -0
  118. package/quality/position/Position.js.map +1 -0
  119. package/quality/position/PositionValue.d.ts +9 -0
  120. package/quality/position/PositionValue.js +12 -0
  121. package/quality/position/PositionValue.js.map +1 -0
  122. package/quality/tools/QualityTools.d.ts +9 -0
  123. package/{src/quality/tools/QualityTools.ts → quality/tools/QualityTools.js} +17 -18
  124. package/quality/tools/QualityTools.js.map +1 -0
  125. package/radar/RadarMeasure.d.ts +38 -0
  126. package/radar/RadarMeasure.js +33 -0
  127. package/radar/RadarMeasure.js.map +1 -0
  128. package/radar/RadarNode.d.ts +41 -0
  129. package/radar/RadarNode.js +58 -0
  130. package/radar/RadarNode.js.map +1 -0
  131. package/radar/RadarNodeMap.d.ts +51 -0
  132. package/radar/RadarNodeMap.js +50 -0
  133. package/radar/RadarNodeMap.js.map +1 -0
  134. package/radar/index.js +20 -0
  135. package/radar/index.js.map +1 -0
  136. package/rain/MergeStrategy.d.ts +13 -0
  137. package/rain/MergeStrategy.js +11 -0
  138. package/rain/MergeStrategy.js.map +1 -0
  139. package/rain/RainComputation.d.ts +59 -0
  140. package/rain/RainComputation.js +68 -0
  141. package/rain/RainComputation.js.map +1 -0
  142. package/rain/RainComputationAbstract.d.ts +89 -0
  143. package/rain/RainComputationAbstract.js +207 -0
  144. package/rain/RainComputationAbstract.js.map +1 -0
  145. package/rain/RainComputationMap.d.ts +113 -0
  146. package/{src/rain/RainComputationMap.ts → rain/RainComputationMap.js} +26 -60
  147. package/rain/RainComputationMap.js.map +1 -0
  148. package/rain/RainComputationQuality.d.ts +58 -0
  149. package/{src/rain/RainComputationQuality.ts → rain/RainComputationQuality.js} +52 -89
  150. package/rain/RainComputationQuality.js.map +1 -0
  151. package/rain/RainMeasure.d.ts +17 -0
  152. package/rain/RainMeasure.js +18 -0
  153. package/rain/RainMeasure.js.map +1 -0
  154. package/rain/RainNode.d.ts +60 -0
  155. package/rain/RainNode.js +198 -0
  156. package/rain/RainNode.js.map +1 -0
  157. package/{src/rain/index.ts → rain/index.d.ts} +1 -0
  158. package/rain/index.js +24 -0
  159. package/rain/index.js.map +1 -0
  160. package/.cursorignore +0 -10
  161. package/.github/workflows/ci.yml +0 -29
  162. package/LICENSE +0 -21
  163. package/RELEASE.md +0 -19
  164. package/specs/REQUIREMENTS.md +0 -42
  165. package/specs/TECHNICAL.md +0 -57
  166. package/specs/cartesian/Cartesian.spec.ts +0 -82
  167. package/specs/cartesian/CartesianTools.spec.ts +0 -121
  168. package/specs/gauge/Gauge.spec.ts +0 -39
  169. package/specs/organization/Organization.spec.ts +0 -38
  170. package/specs/polar/Polar.spec.ts +0 -267
  171. package/specs/quality/Position.spec.ts +0 -18
  172. package/specs/quality/QualityPointEdgeCases.spec.ts +0 -215
  173. package/specs/quality/QualityTools.spec.ts +0 -67
  174. package/specs/quality/SpeedMatrix.spec.ts +0 -214
  175. package/specs/radar/Radar.spec.ts +0 -129
  176. package/specs/rain/Rain.spec.ts +0 -334
  177. package/specs/tsconfig.json +0 -12
  178. package/src/cartesian/CartesianValue.ts +0 -26
  179. package/src/cartesian/EarthMap.ts +0 -5
  180. package/src/cartesian/ICartesianMeasureValue.ts +0 -22
  181. package/src/cartesian/LatLng.ts +0 -43
  182. package/src/cartesian/RadarCartesianMeasureValue.ts +0 -32
  183. package/src/cartesian/RainCartesianMeasureValue.ts +0 -32
  184. package/src/gauge/GaugeMeasure.ts +0 -42
  185. package/src/gauge/GaugeNodeMap.ts +0 -55
  186. package/src/organization/EventNode.ts +0 -43
  187. package/src/organization/Measure.ts +0 -61
  188. package/src/organization/TeamNode.ts +0 -91
  189. package/src/polar/IPolarMeasureValue.ts +0 -21
  190. package/src/polar/PolarFilter.ts +0 -46
  191. package/src/polar/PolarValue.ts +0 -16
  192. package/src/polar/RainPolarMeasureValue.ts +0 -57
  193. package/src/quality/history/CartesianGaugeHistory.ts +0 -23
  194. package/src/quality/history/CartesianRainHistory.ts +0 -15
  195. package/src/quality/history/PositionHistory.ts +0 -31
  196. package/src/quality/position/Position.ts +0 -59
  197. package/src/quality/position/PositionValue.ts +0 -15
  198. package/src/radar/RadarMeasure.ts +0 -41
  199. package/src/radar/RadarNode.ts +0 -78
  200. package/src/radar/RadarNodeMap.ts +0 -61
  201. package/src/rain/MergeStrategy.ts +0 -15
  202. package/src/rain/RainComputation.ts +0 -96
  203. package/src/rain/RainComputationAbstract.ts +0 -262
  204. package/src/rain/RainMeasure.ts +0 -25
  205. package/src/rain/RainNode.ts +0 -235
  206. package/tsconfig.json +0 -17
  207. package/tslint.json +0 -79
  208. package/typedoc.json +0 -31
  209. /package/{src/cartesian/index.ts → cartesian/index.d.ts} +0 -0
  210. /package/{src/gauge/index.ts → gauge/index.d.ts} +0 -0
  211. /package/{src/index.ts → index.d.ts} +0 -0
  212. /package/{src/organization/IVersion.ts → organization/IVersion.d.ts} +0 -0
  213. /package/{src/organization/index.ts → organization/index.d.ts} +0 -0
  214. /package/{src/polar/index.ts → polar/index.d.ts} +0 -0
  215. /package/{src/radar/index.ts → radar/index.d.ts} +0 -0
@@ -1,96 +1,63 @@
1
- import {SpeedMatrix} from './SpeedMatrix';
2
- import {PositionValue} from './position/PositionValue';
3
- import {PositionHistory} from './history/PositionHistory';
4
- import {QualityPoint} from './QualityPoint';
5
- import {CartesianValue} from '../cartesian/CartesianValue';
6
- import {RainComputationQuality} from '../rain/RainComputationQuality';
7
-
8
- export interface ICompares {
9
- comparesPerDate: IComparePerDate[],
10
- compareCumulative: ICompare,
11
- }
12
-
13
- export interface IComparePerDate {
14
- date: Date,
15
- rainComputationQuality: RainComputationQuality,
16
- compareTimeline: ICompare[],
17
- }
18
-
19
- export interface ICompare {
20
- name: string,
21
- date: Date,
22
- qualityPointsLegacy: QualityPoint[],
23
- qualityPoints: QualityPoint[],
24
- maxValue: number,
25
- remarks: string,
26
- }
27
-
28
- export class SpeedMatrixContainer {
29
-
30
- protected qualityPoints: any;
31
- protected trustedIndicators: number[];
32
- protected flattenMatrices: PositionValue[][];
33
- protected matrices: SpeedMatrix[];
34
-
35
- constructor(json: {
36
- matrices: SpeedMatrix[]
37
- }) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SpeedMatrixContainer = void 0;
4
+ const SpeedMatrix_1 = require("./SpeedMatrix");
5
+ const PositionValue_1 = require("./position/PositionValue");
6
+ const PositionHistory_1 = require("./history/PositionHistory");
7
+ const QualityPoint_1 = require("./QualityPoint");
8
+ const CartesianValue_1 = require("../cartesian/CartesianValue");
9
+ class SpeedMatrixContainer {
10
+ constructor(json) {
38
11
  this.qualityPoints = {};
39
12
  this.trustedIndicators = [];
40
13
  this.flattenMatrices = [];
41
14
  this.matrices = json.matrices;
42
15
  }
43
-
44
- static CreateFromJson(json: any): SpeedMatrixContainer {
45
- const created = new SpeedMatrixContainer({matrices: []});
46
- if (json?.qualityPoints) {
16
+ static CreateFromJson(json) {
17
+ const created = new SpeedMatrixContainer({ matrices: [] });
18
+ if (json === null || json === void 0 ? void 0 : json.qualityPoints) {
47
19
  created.qualityPoints = json.qualityPoints;
48
20
  }
49
- if (json?.matrices) {
50
- created.matrices = json.matrices.map((m: any) => SpeedMatrix.CreateFromJson(m));
21
+ if (json === null || json === void 0 ? void 0 : json.matrices) {
22
+ created.matrices = json.matrices.map((m) => SpeedMatrix_1.SpeedMatrix.CreateFromJson(m));
51
23
  }
52
- if (json?.trustedIndicators) {
24
+ if (json === null || json === void 0 ? void 0 : json.trustedIndicators) {
53
25
  created.trustedIndicators = json.trustedIndicators;
54
26
  }
55
- if (json?.flattenMatrices) {
27
+ if (json === null || json === void 0 ? void 0 : json.flattenMatrices) {
56
28
  created.flattenMatrices = json.flattenMatrices;
57
29
  }
58
30
  return created;
59
31
  }
60
-
61
- static BuildCompares(qualities: RainComputationQuality[],
62
- removeDuplicates = true): ICompares {
32
+ static BuildCompares(qualities, removeDuplicates = true) {
33
+ var _a;
63
34
  const qualitiesSorted = qualities
64
35
  .sort((a, b) => a.date.getTime() - b.date.getTime());
65
- const comparesPerDate: IComparePerDate[] = [];
66
- const compareCumulative: ICompare = {
36
+ const comparesPerDate = [];
37
+ const compareCumulative = {
67
38
  name: 'cumulative_' + qualities.reduce((p, rcq) => p + '_' + rcq.date.toISOString(), ''),
68
- date: qualities[0]?.date,
39
+ date: (_a = qualities[0]) === null || _a === void 0 ? void 0 : _a.date,
69
40
  qualityPointsLegacy: [],
70
41
  qualityPoints: [],
71
42
  maxValue: 0,
72
43
  remarks: '',
73
44
  };
74
45
  const minDeltaPerDate_GaugeId = {};
75
-
76
46
  let dateMin = new Date();
77
47
  let dateMax = new Date();
78
48
  if (qualitiesSorted.length > 0) {
79
49
  dateMin = qualitiesSorted[0].date;
80
50
  dateMax = qualitiesSorted[qualitiesSorted.length - 1].date;
81
51
  }
82
-
83
52
  // build timelines and store
84
53
  for (const rainComputationQuality of qualitiesSorted) {
85
54
  const compareTimeline = SpeedMatrixContainer.BuildCompareTimeline(rainComputationQuality, dateMin, dateMax);
86
-
87
55
  comparesPerDate.push({
88
56
  date: rainComputationQuality.date,
89
57
  rainComputationQuality,
90
58
  compareTimeline
91
59
  });
92
-
93
- const qualityPoints: QualityPoint[] = compareTimeline.reduce((p, a) => p.concat(a.qualityPoints), []);
60
+ const qualityPoints = compareTimeline.reduce((p, a) => p.concat(a.qualityPoints), []);
94
61
  for (const qualityPoint of qualityPoints) {
95
62
  const key = qualityPoint.gaugeDate.toISOString() + '_' + qualityPoint.gaugeId;
96
63
  if (typeof minDeltaPerDate_GaugeId[key] === 'undefined') {
@@ -99,7 +66,6 @@ export class SpeedMatrixContainer {
99
66
  minDeltaPerDate_GaugeId[key] = Math.min(minDeltaPerDate_GaugeId[key], qualityPoint.getDelta());
100
67
  }
101
68
  }
102
-
103
69
  // loop and search for unique points
104
70
  const qualityPointToUsePerDate_GaugeId = {};
105
71
  comparesPerDate.forEach(compare => {
@@ -110,7 +76,8 @@ export class SpeedMatrixContainer {
110
76
  if (!qualityPointToUsePerDate_GaugeId[key] && typeof minDeltaPerDate_GaugeId[key] !== 'undefined'
111
77
  && minDeltaPerDate_GaugeId[key] === qualityPoint.getDelta()) {
112
78
  qualityPointToUsePerDate_GaugeId[key] = qualityPoint;
113
- } else {
79
+ }
80
+ else {
114
81
  if (removeDuplicates) {
115
82
  timeline.qualityPoints.splice(i, 1);
116
83
  }
@@ -118,56 +85,47 @@ export class SpeedMatrixContainer {
118
85
  }
119
86
  });
120
87
  });
121
-
122
88
  // compute cumulative based on unique points
123
89
  const qualityPointPerGaugeId = {};
124
90
  const qps = Object.values(qualityPointToUsePerDate_GaugeId);
125
91
  for (const qp of qps) {
126
- const qualityPoint = qp as QualityPoint;
92
+ const qualityPoint = qp;
127
93
  if (!qualityPointPerGaugeId[qualityPoint.gaugeId]) {
128
- qualityPointPerGaugeId[qualityPoint.gaugeId] = QualityPoint.CreateFromJSON(qualityPoint);
129
- } else {
94
+ qualityPointPerGaugeId[qualityPoint.gaugeId] = QualityPoint_1.QualityPoint.CreateFromJSON(qualityPoint);
95
+ }
96
+ else {
130
97
  qualityPointPerGaugeId[qualityPoint.gaugeId].accumulateValues(qualityPoint);
131
98
  }
132
99
  }
133
-
134
100
  compareCumulative.qualityPoints = Object.values(qualityPointPerGaugeId);
135
101
  compareCumulative.qualityPointsLegacy = Object.values(qualityPointPerGaugeId);
136
102
  const maxRain = Math.max(...compareCumulative.qualityPoints.map(p => p.getRainValue()));
137
103
  const maxGauge = Math.max(...compareCumulative.qualityPoints.map(p => p.getGaugeValue()));
138
104
  compareCumulative.maxValue = Math.max(maxRain, maxGauge);
139
-
140
- return {comparesPerDate, compareCumulative};
105
+ return { comparesPerDate, compareCumulative };
141
106
  }
142
-
143
- static BuildCompareTimeline(currentQuality: RainComputationQuality, dateMin: Date, dateMax: Date): ICompare[] {
144
- const compares: ICompare[] = [];
107
+ static BuildCompareTimeline(currentQuality, dateMin, dateMax) {
108
+ var _a;
109
+ const compares = [];
145
110
  const qualitySpeedMatrixContainer = currentQuality.qualitySpeedMatrixContainer;
146
111
  if (!qualitySpeedMatrixContainer) {
147
112
  return compares;
148
113
  }
149
-
150
114
  const compareNames = qualitySpeedMatrixContainer.getMatrices()
151
115
  .map(m => m.name)
152
116
  .sort((a, b) => parseInt(a, 10) - parseInt(b, 10));
153
-
154
117
  for (const [index, name] of compareNames.entries()) {
155
-
156
118
  const qualityPointsLegacy = qualitySpeedMatrixContainer.getQualityPoints(name);
157
119
  const maxValue = Math.max(qualitySpeedMatrixContainer.getMaxGauge(), qualitySpeedMatrixContainer.getMaxRain());
158
- const remarks = qualitySpeedMatrixContainer.getMatrix(index)?.remarks;
159
-
120
+ const remarks = (_a = qualitySpeedMatrixContainer.getMatrix(index)) === null || _a === void 0 ? void 0 : _a.remarks;
160
121
  const delta = parseInt(name, 10);
161
122
  const compareDate = new Date(currentQuality.date.getTime() - delta * 60 * 1000);
162
-
163
123
  if (dateMin.getTime() <= compareDate.getTime() && compareDate.getTime() <= dateMax.getTime()) {
164
-
165
124
  let renamed = compareDate.toLocaleString();
166
125
  renamed += delta > 0 ? ' since ' : ' in ';
167
126
  renamed += Math.abs(delta) + ' minutes';
168
- const qualityPoints = qualityPointsLegacy.filter((p: any) => p); // no real filter
169
-
170
- const compare: ICompare = {
127
+ const qualityPoints = qualityPointsLegacy.filter((p) => p); // no real filter
128
+ const compare = {
171
129
  name: renamed,
172
130
  date: compareDate,
173
131
  qualityPointsLegacy,
@@ -175,15 +133,12 @@ export class SpeedMatrixContainer {
175
133
  maxValue,
176
134
  remarks,
177
135
  };
178
-
179
136
  compares.push(compare);
180
137
  }
181
138
  }
182
-
183
139
  return compares;
184
140
  }
185
-
186
- protected static mergeStillComputed(v1: any, v2: any): any {
141
+ static mergeStillComputed(v1, v2) {
187
142
  if (!v1 && !v2) {
188
143
  return undefined;
189
144
  }
@@ -195,8 +150,7 @@ export class SpeedMatrixContainer {
195
150
  }
196
151
  return null;
197
152
  }
198
-
199
- protected static mergeDateMin(d1: Date, d2: Date): Date {
153
+ static mergeDateMin(d1, d2) {
200
154
  const stillComputed = this.mergeStillComputed(d1, d2);
201
155
  if (stillComputed === null) {
202
156
  return new Date(Math.min(new Date(d1).getTime(), new Date(d2).getTime()));
@@ -206,8 +160,7 @@ export class SpeedMatrixContainer {
206
160
  }
207
161
  return stillComputed;
208
162
  }
209
-
210
- protected static mergeDateMax(d1: Date, d2: Date): Date {
163
+ static mergeDateMax(d1, d2) {
211
164
  const stillComputed = this.mergeStillComputed(d1, d2);
212
165
  if (stillComputed === null) {
213
166
  return new Date(Math.max(new Date(d1).getTime(), new Date(d2).getTime()));
@@ -217,41 +170,35 @@ export class SpeedMatrixContainer {
217
170
  }
218
171
  return stillComputed;
219
172
  }
220
-
221
- protected static mergeAvg(v1: number, v2: number): number {
173
+ static mergeAvg(v1, v2) {
222
174
  if (v1 === 0 && v2 === 0) {
223
175
  return 0;
224
176
  }
225
-
226
177
  const stillComputed = this.mergeStillComputed(v1, v2);
227
178
  if (stillComputed === null) {
228
179
  return (v1 + v2) / 2;
229
180
  }
230
181
  return stillComputed;
231
182
  }
232
-
233
- protected static mergeMin(v1: number, v2: number): number {
183
+ static mergeMin(v1, v2) {
234
184
  const stillComputed = this.mergeStillComputed(v1, v2);
235
185
  if (stillComputed === null) {
236
186
  return Math.min(v1, v2);
237
187
  }
238
188
  return stillComputed;
239
189
  }
240
-
241
- protected static mergeConcat(a1: Array<any>, a2: Array<any>): Array<any> {
190
+ static mergeConcat(a1, a2) {
242
191
  const stillComputed = this.mergeStillComputed(a1, a2);
243
192
  if (stillComputed === null) {
244
193
  return a1.concat(a2);
245
194
  }
246
195
  return stillComputed;
247
196
  }
248
-
249
- protected static mergeReduce(a1: Array<QualityPoint>, a2: Array<QualityPoint>): Array<QualityPoint> {
197
+ static mergeReduce(a1, a2) {
250
198
  const stillComputed = this.mergeStillComputed(a1, a2);
251
199
  if (stillComputed === null) {
252
-
253
200
  const ids = new Map();
254
- const concatted: QualityPoint[] = a1.concat(a2);
201
+ const concatted = a1.concat(a2);
255
202
  for (const qualityPoint of concatted) {
256
203
  const oldValue = {
257
204
  gaugeValue: 0,
@@ -274,14 +221,13 @@ export class SpeedMatrixContainer {
274
221
  remark: qualityPoint.remark,
275
222
  });
276
223
  }
277
-
278
224
  return [...ids].map(([id, value]) => {
279
- return new QualityPoint({
225
+ return new QualityPoint_1.QualityPoint({
280
226
  gaugeId: id,
281
227
  gaugeLabel: value.gaugeLabel,
282
228
  gaugeDate: value.gaugeDate,
283
229
  rainDate: value.rainDate,
284
- gaugeCartesianValue: new CartesianValue({value: value.gaugeValue, lat: value.gaugeLat, lng: value.gaugeLng}),
230
+ gaugeCartesianValue: new CartesianValue_1.CartesianValue({ value: value.gaugeValue, lat: value.gaugeLat, lng: value.gaugeLng }),
285
231
  rainCartesianValues: value.rainCartesianValues,
286
232
  speed: null,
287
233
  remark: value.remark,
@@ -290,76 +236,62 @@ export class SpeedMatrixContainer {
290
236
  }
291
237
  return stillComputed;
292
238
  }
293
-
294
239
  getMatrix(index = 0) {
295
240
  if (this.matrices.length <= index) {
296
241
  return null;
297
242
  }
298
243
  return this.matrices[index];
299
244
  }
300
-
301
- getMatrixByName(name: string) {
245
+ getMatrixByName(name) {
302
246
  const found = this.matrices.filter(m => m.name === name);
303
247
  if (found.length === 1) {
304
248
  return found[0];
305
249
  }
306
250
  return null;
307
251
  }
308
-
309
- getMatrices(): SpeedMatrix[] {
252
+ getMatrices() {
310
253
  return this.matrices;
311
254
  }
312
-
313
- getQualityPoints(matrixName?: string): QualityPoint[] {
314
-
255
+ getQualityPoints(matrixName) {
256
+ var _a;
315
257
  if (this.matrices.length === 0) {
316
258
  return [];
317
259
  }
318
-
319
260
  this.storeFlattenMatrices();
320
-
321
261
  let matrixNames = [matrixName];
322
262
  if (!matrixName) {
323
263
  matrixNames = this.matrices.map(m => m.name);
324
- } else {
325
- if (this.qualityPoints[matrixName]?.length > 0 && this.flattenMatrices.length > 0) {
264
+ }
265
+ else {
266
+ if (((_a = this.qualityPoints[matrixName]) === null || _a === void 0 ? void 0 : _a.length) > 0 && this.flattenMatrices.length > 0) {
326
267
  return this.qualityPoints[matrixName];
327
268
  }
328
269
  }
329
-
330
- let qualityPoints: QualityPoint[] = [];
270
+ let qualityPoints = [];
331
271
  for (const name of matrixNames) {
332
272
  const matricesWithSameName = this.matrices.filter(m => m.name === name);
333
273
  if (matricesWithSameName.length === 1) {
334
- const points = matricesWithSameName[0].getQualityPoints().map(p => new QualityPoint(p));
274
+ const points = matricesWithSameName[0].getQualityPoints().map(p => new QualityPoint_1.QualityPoint(p));
335
275
  qualityPoints = qualityPoints.concat(points);
336
-
337
276
  // store
338
277
  this.qualityPoints[name] = points;
339
278
  }
340
279
  }
341
-
342
280
  return qualityPoints;
343
281
  }
344
-
345
- getQualityPointsByHistoricalPosition(position: number = 0): QualityPoint[] {
346
-
282
+ getQualityPointsByHistoricalPosition(position = 0) {
347
283
  if (this.matrices.length <= 1) {
348
284
  return [];
349
285
  }
350
-
351
286
  const matrixFound = this.matrices
352
287
  .sort((a, b) => parseInt(a.name, 10) - parseInt(b.name, 10))
353
288
  .filter((m, index) => index === position);
354
-
355
289
  if (matrixFound.length === 1) {
356
290
  return this.getQualityPoints(matrixFound[0].name);
357
291
  }
358
-
359
292
  return [];
360
293
  }
361
-
362
- getMaxGauge(matrixName?: string): number {
294
+ getMaxGauge(matrixName) {
363
295
  const qualityPoints = this.getQualityPoints(matrixName);
364
296
  let max = -1;
365
297
  for (const p of qualityPoints) {
@@ -367,8 +299,7 @@ export class SpeedMatrixContainer {
367
299
  }
368
300
  return max;
369
301
  }
370
-
371
- getMaxRain(matrixName?: string): number {
302
+ getMaxRain(matrixName) {
372
303
  const qualityPoints = this.getQualityPoints(matrixName);
373
304
  let max = -1;
374
305
  for (const p of qualityPoints) {
@@ -376,88 +307,75 @@ export class SpeedMatrixContainer {
376
307
  }
377
308
  return max;
378
309
  }
379
-
380
310
  /**
381
311
  * Get summed quality indicator (0 ideally)
382
312
  * @link SpeedMatrix.ComputeQualityIndicator
383
313
  */
384
- getQuality(matrixName?: string): number {
314
+ getQuality(matrixName) {
385
315
  const qualityPoints = this.getQualityPoints(matrixName);
386
- return SpeedMatrix.ComputeQualityIndicator(qualityPoints);
316
+ return SpeedMatrix_1.SpeedMatrix.ComputeQualityIndicator(qualityPoints);
387
317
  }
388
-
389
- getTrustedIndicators(): number[] {
318
+ getTrustedIndicators() {
390
319
  if (this.trustedIndicators.length > 0) {
391
320
  return this.trustedIndicators;
392
321
  }
393
-
394
322
  this.trustedIndicators = [];
395
323
  for (const matrix of this.matrices) {
396
324
  this.trustedIndicators.push(matrix.getTrustedTechnicalIndicator());
397
325
  }
398
-
399
326
  return this.trustedIndicators;
400
327
  }
401
-
402
- getSpeed(): { angleInDegrees: number, pixelsPerPeriod: number } {
403
- let mergedSpeed: { angleInDegrees: number, pixelsPerPeriod: number };
404
-
328
+ getSpeed() {
329
+ let mergedSpeed;
405
330
  for (const matrix of this.matrices) {
406
331
  if (!mergedSpeed) {
407
332
  mergedSpeed = matrix.getSpeed();
408
- } else {
333
+ }
334
+ else {
409
335
  mergedSpeed = {
410
336
  angleInDegrees: SpeedMatrixContainer.mergeAvg(mergedSpeed.angleInDegrees, matrix.getSpeed().angleInDegrees),
411
337
  pixelsPerPeriod: SpeedMatrixContainer.mergeAvg(mergedSpeed.pixelsPerPeriod, matrix.getSpeed().pixelsPerPeriod),
412
- }
338
+ };
413
339
  }
414
340
  }
415
-
416
341
  if (!mergedSpeed) {
417
- mergedSpeed = {angleInDegrees: 0, pixelsPerPeriod: 0};
342
+ mergedSpeed = { angleInDegrees: 0, pixelsPerPeriod: 0 };
418
343
  }
419
-
420
344
  return mergedSpeed;
421
345
  }
422
-
423
- isConsistent(): boolean {
346
+ isConsistent() {
424
347
  const indics = this.getTrustedIndicators();
425
348
  let indicAverage = 0;
426
349
  for (const indic of indics) {
427
350
  indicAverage += indic;
428
351
  }
429
352
  indicAverage = indicAverage / (indics.length ? indics.length : 1);
430
- return indicAverage > (SpeedMatrix.DEFAULT_TRUSTED_INDICATOR / 2);
353
+ return indicAverage > (SpeedMatrix_1.SpeedMatrix.DEFAULT_TRUSTED_INDICATOR / 2);
431
354
  }
432
-
433
- getFlattenMatrixCount(): number {
355
+ getFlattenMatrixCount() {
434
356
  return this.flattenMatrices.length;
435
357
  }
436
-
437
- renderFlattenMatrix(index = 0,
438
- options: { normalize?: boolean } = {normalize: true}): PositionValue[] {
439
-
440
- let rendered: PositionValue[];
358
+ renderFlattenMatrix(index = 0, options = { normalize: true }) {
359
+ let rendered;
441
360
  if (this.flattenMatrices && this.flattenMatrices[index]) {
442
361
  rendered = this.flattenMatrices[index];
443
- } else {
362
+ }
363
+ else {
444
364
  this.getQualityPoints();
445
365
  rendered = this.flattenMatrices[index];
446
366
  }
447
-
448
367
  if (options.normalize) {
449
- rendered = SpeedMatrix.Normalize(rendered);
368
+ rendered = SpeedMatrix_1.SpeedMatrix.Normalize(rendered);
450
369
  }
451
-
452
370
  return rendered;
453
371
  }
454
-
455
- renderMergedMatrix(options: { normalize?: boolean } = {normalize: true}): PositionValue[] {
372
+ renderMergedMatrix(options = { normalize: true }) {
373
+ var _a;
456
374
  const count = this.flattenMatrices.length;
457
- const size = Math.sqrt(this.flattenMatrices[0]?.length);
375
+ const size = Math.sqrt((_a = this.flattenMatrices[0]) === null || _a === void 0 ? void 0 : _a.length);
458
376
  const range = (size - 1) / 2;
459
377
  let maxValue = 0;
460
- let matrix: PositionValue[] = [];
378
+ let matrix = [];
461
379
  for (let x = -range; x <= range; x++) {
462
380
  for (let y = -range; y <= range; y++) {
463
381
  let value = 0;
@@ -467,22 +385,15 @@ export class SpeedMatrixContainer {
467
385
  maxValue = Math.max(maxValue, value);
468
386
  }
469
387
  value = value / count;
470
- matrix.push(new PositionValue({x, y, value}));
388
+ matrix.push(new PositionValue_1.PositionValue({ x, y, value }));
471
389
  }
472
390
  }
473
-
474
391
  if (options.normalize) {
475
- matrix = SpeedMatrix.Normalize(matrix);
392
+ matrix = SpeedMatrix_1.SpeedMatrix.Normalize(matrix);
476
393
  }
477
-
478
394
  return matrix;
479
395
  }
480
-
481
- toJSON(options?: {
482
- removeFlatten?: boolean,
483
- removeMatrices?: boolean,
484
- removeIndicators?: boolean,
485
- }) {
396
+ toJSON(options) {
486
397
  const json = {
487
398
  qualityPoints: this.getQualityPoints(),
488
399
  trustedIndicators: this.getTrustedIndicators(),
@@ -492,38 +403,26 @@ export class SpeedMatrixContainer {
492
403
  .filter(m => !!m)
493
404
  .map(m => m.toJSON()),
494
405
  };
495
-
496
- if (options?.removeMatrices) {
406
+ if (options === null || options === void 0 ? void 0 : options.removeMatrices) {
497
407
  delete json.matrices;
498
408
  }
499
-
500
- if (options?.removeFlatten) {
409
+ if (options === null || options === void 0 ? void 0 : options.removeFlatten) {
501
410
  delete json.flattenMatrices;
502
411
  }
503
-
504
- if (options?.removeIndicators) {
412
+ if (options === null || options === void 0 ? void 0 : options.removeIndicators) {
505
413
  delete json.trustedIndicators;
506
414
  }
507
-
508
415
  return json;
509
416
  }
510
-
511
- merge(speedMatrixContainerToMergeIn: SpeedMatrixContainer) {
512
-
513
- this.trustedIndicators = SpeedMatrixContainer.mergeConcat(this.getTrustedIndicators(),
514
- speedMatrixContainerToMergeIn.getTrustedIndicators());
515
- this.matrices = SpeedMatrixContainer.mergeConcat(this.matrices,
516
- speedMatrixContainerToMergeIn.matrices);
517
- this.flattenMatrices = SpeedMatrixContainer.mergeConcat(this.flattenMatrices,
518
- speedMatrixContainerToMergeIn.flattenMatrices);
519
-
417
+ merge(speedMatrixContainerToMergeIn) {
418
+ this.trustedIndicators = SpeedMatrixContainer.mergeConcat(this.getTrustedIndicators(), speedMatrixContainerToMergeIn.getTrustedIndicators());
419
+ this.matrices = SpeedMatrixContainer.mergeConcat(this.matrices, speedMatrixContainerToMergeIn.matrices);
420
+ this.flattenMatrices = SpeedMatrixContainer.mergeConcat(this.flattenMatrices, speedMatrixContainerToMergeIn.flattenMatrices);
520
421
  return this;
521
422
  }
522
-
523
- logMergedMatrix(options: { normalize: boolean, logger: any } = {normalize: true, logger: null}) {
524
-
423
+ logMergedMatrix(options = { normalize: true, logger: null }) {
525
424
  const mergedMatrix = this.renderMergedMatrix(options);
526
- const positionHistories = mergedMatrix.map(pv => new PositionHistory({
425
+ const positionHistories = mergedMatrix.map(pv => new PositionHistory_1.PositionHistory({
527
426
  id: '-',
528
427
  label: '-',
529
428
  date: null,
@@ -533,37 +432,31 @@ export class SpeedMatrixContainer {
533
432
  valueFromGauge: -1,
534
433
  valueFromRain: -1
535
434
  }));
536
-
537
- const valueDisplay = (pv: PositionValue): string => {
435
+ const valueDisplay = (pv) => {
538
436
  if (!pv) {
539
437
  return '';
540
438
  }
541
439
  return '' + Math.round(pv.value * 1000) / 1000;
542
- }
543
-
544
- SpeedMatrix.LogPositionValues(positionHistories, valueDisplay, {
545
- xMin: -SpeedMatrix.DEFAULT_MATRIX_RANGE,
546
- xMax: SpeedMatrix.DEFAULT_MATRIX_RANGE,
547
- yMin: -SpeedMatrix.DEFAULT_MATRIX_RANGE,
548
- yMax: SpeedMatrix.DEFAULT_MATRIX_RANGE
549
- },
550
- options?.logger);
440
+ };
441
+ SpeedMatrix_1.SpeedMatrix.LogPositionValues(positionHistories, valueDisplay, {
442
+ xMin: -SpeedMatrix_1.SpeedMatrix.DEFAULT_MATRIX_RANGE,
443
+ xMax: SpeedMatrix_1.SpeedMatrix.DEFAULT_MATRIX_RANGE,
444
+ yMin: -SpeedMatrix_1.SpeedMatrix.DEFAULT_MATRIX_RANGE,
445
+ yMax: SpeedMatrix_1.SpeedMatrix.DEFAULT_MATRIX_RANGE
446
+ }, options === null || options === void 0 ? void 0 : options.logger);
551
447
  }
552
-
553
- protected storeFlattenMatrices() {
554
-
448
+ storeFlattenMatrices() {
555
449
  if (this.flattenMatrices.length === this.matrices.length) {
556
450
  return this.flattenMatrices;
557
451
  }
558
-
559
452
  const flattenMatrices = [];
560
453
  for (const matrix of this.matrices) {
561
454
  if (matrix.isConsistent()) {
562
- flattenMatrices.push(matrix.renderFlatten({normalize: true}));
455
+ flattenMatrices.push(matrix.renderFlatten({ normalize: true }));
563
456
  }
564
457
  }
565
-
566
458
  this.flattenMatrices = flattenMatrices;
567
459
  }
568
-
569
460
  }
461
+ exports.SpeedMatrixContainer = SpeedMatrixContainer;
462
+ //# sourceMappingURL=SpeedMatrixContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpeedMatrixContainer.js","sourceRoot":"","sources":["../../src/quality/SpeedMatrixContainer.ts"],"names":[],"mappings":"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"}