raain-model 1.11.4 → 1.11.5

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 (174) hide show
  1. package/cartesian/CartesianMeasureValue.d.ts +41 -0
  2. package/{src/cartesian/CartesianMeasureValue.ts → cartesian/CartesianMeasureValue.js} +34 -64
  3. package/cartesian/CartesianMeasureValue.js.map +1 -0
  4. package/cartesian/CartesianValue.d.ts +9 -0
  5. package/cartesian/CartesianValue.js +12 -0
  6. package/cartesian/CartesianValue.js.map +1 -0
  7. package/cartesian/ICartesianMeasureValue.d.ts +29 -0
  8. package/cartesian/ICartesianMeasureValue.js +3 -0
  9. package/cartesian/ICartesianMeasureValue.js.map +1 -0
  10. package/cartesian/LatLng.d.ts +12 -0
  11. package/cartesian/LatLng.js +31 -0
  12. package/cartesian/LatLng.js.map +1 -0
  13. package/cartesian/RadarCartesianMeasureValue.d.ts +15 -0
  14. package/cartesian/RadarCartesianMeasureValue.js +22 -0
  15. package/cartesian/RadarCartesianMeasureValue.js.map +1 -0
  16. package/cartesian/RainCartesianMeasureValue.d.ts +17 -0
  17. package/cartesian/RainCartesianMeasureValue.js +25 -0
  18. package/cartesian/RainCartesianMeasureValue.js.map +1 -0
  19. package/gauge/GaugeMeasure.d.ts +20 -0
  20. package/gauge/GaugeMeasure.js +24 -0
  21. package/gauge/GaugeMeasure.js.map +1 -0
  22. package/gauge/GaugeNode.d.ts +24 -0
  23. package/gauge/GaugeNode.js +31 -0
  24. package/gauge/GaugeNode.js.map +1 -0
  25. package/gauge/GaugeNodeMap.d.ts +22 -0
  26. package/gauge/GaugeNodeMap.js +42 -0
  27. package/gauge/GaugeNodeMap.js.map +1 -0
  28. package/{src/index.ts → index.d.ts} +0 -6
  29. package/index.js +56 -0
  30. package/index.js.map +1 -0
  31. package/organization/EventNode.d.ts +22 -0
  32. package/organization/EventNode.js +30 -0
  33. package/organization/EventNode.js.map +1 -0
  34. package/organization/IVersion.js +3 -0
  35. package/organization/IVersion.js.map +1 -0
  36. package/organization/Link.d.ts +16 -0
  37. package/{src/organization/Link.ts → organization/Link.js} +13 -13
  38. package/organization/Link.js.map +1 -0
  39. package/organization/Measure.d.ts +20 -0
  40. package/organization/Measure.js +35 -0
  41. package/organization/Measure.js.map +1 -0
  42. package/organization/PeopleNode.d.ts +18 -0
  43. package/organization/PeopleNode.js +26 -0
  44. package/organization/PeopleNode.js.map +1 -0
  45. package/organization/RaainNode.d.ts +23 -0
  46. package/{src/organization/RaainNode.ts → organization/RaainNode.js} +29 -53
  47. package/organization/RaainNode.js.map +1 -0
  48. package/organization/TeamNode.d.ts +22 -0
  49. package/organization/TeamNode.js +32 -0
  50. package/organization/TeamNode.js.map +1 -0
  51. package/package.json +1 -1
  52. package/polar/AbstractPolarMeasureValue.d.ts +29 -0
  53. package/{src/polar/AbstractPolarMeasureValue.ts → polar/AbstractPolarMeasureValue.js} +29 -53
  54. package/polar/AbstractPolarMeasureValue.js.map +1 -0
  55. package/polar/GaugePolarMeasureValue.d.ts +11 -0
  56. package/polar/GaugePolarMeasureValue.js +14 -0
  57. package/polar/GaugePolarMeasureValue.js.map +1 -0
  58. package/polar/IPolarMeasureValue.d.ts +19 -0
  59. package/polar/IPolarMeasureValue.js +3 -0
  60. package/polar/IPolarMeasureValue.js.map +1 -0
  61. package/polar/MeasureValuePolarContainer.d.ts +11 -0
  62. package/polar/MeasureValuePolarContainer.js +22 -0
  63. package/polar/MeasureValuePolarContainer.js.map +1 -0
  64. package/polar/PolarMeasureValue.d.ts +26 -0
  65. package/{src/polar/PolarMeasureValue.ts → polar/PolarMeasureValue.js} +27 -46
  66. package/polar/PolarMeasureValue.js.map +1 -0
  67. package/polar/PolarValue.d.ts +10 -0
  68. package/polar/PolarValue.js +12 -0
  69. package/polar/PolarValue.js.map +1 -0
  70. package/polar/RadarPolarMeasureValue.d.ts +15 -0
  71. package/polar/RadarPolarMeasureValue.js +34 -0
  72. package/polar/RadarPolarMeasureValue.js.map +1 -0
  73. package/polar/RainPolarMeasureValue.d.ts +18 -0
  74. package/polar/RainPolarMeasureValue.js +42 -0
  75. package/polar/RainPolarMeasureValue.js.map +1 -0
  76. package/quality/QualityPoint.d.ts +35 -0
  77. package/{src/quality/QualityPoint.ts → quality/QualityPoint.js} +23 -48
  78. package/quality/QualityPoint.js.map +1 -0
  79. package/quality/SpeedMatrix.d.ts +81 -0
  80. package/{src/quality/SpeedMatrix.ts → quality/SpeedMatrix.js} +76 -116
  81. package/quality/SpeedMatrix.js.map +1 -0
  82. package/quality/SpeedMatrixContainer.d.ts +79 -0
  83. package/{src/quality/SpeedMatrixContainer.ts → quality/SpeedMatrixContainer.js} +76 -141
  84. package/quality/SpeedMatrixContainer.js.map +1 -0
  85. package/quality/history/CartesianGaugeHistory.d.ts +15 -0
  86. package/quality/history/CartesianGaugeHistory.js +14 -0
  87. package/quality/history/CartesianGaugeHistory.js.map +1 -0
  88. package/quality/history/CartesianRainHistory.d.ts +11 -0
  89. package/quality/history/CartesianRainHistory.js +12 -0
  90. package/quality/history/CartesianRainHistory.js.map +1 -0
  91. package/quality/history/PositionHistory.d.ts +20 -0
  92. package/quality/history/PositionHistory.js +17 -0
  93. package/quality/history/PositionHistory.js.map +1 -0
  94. package/quality/position/Position.d.ts +22 -0
  95. package/quality/position/Position.js +50 -0
  96. package/quality/position/Position.js.map +1 -0
  97. package/quality/position/PositionValue.d.ts +9 -0
  98. package/quality/position/PositionValue.js +12 -0
  99. package/quality/position/PositionValue.js.map +1 -0
  100. package/quality/tools/QualityTools.d.ts +24 -0
  101. package/{src/quality/tools/QualityTools.ts → quality/tools/QualityTools.js} +49 -82
  102. package/quality/tools/QualityTools.js.map +1 -0
  103. package/radar/RadarMeasure.d.ts +17 -0
  104. package/radar/RadarMeasure.js +18 -0
  105. package/radar/RadarMeasure.js.map +1 -0
  106. package/radar/RadarNode.d.ts +24 -0
  107. package/radar/RadarNode.js +31 -0
  108. package/radar/RadarNode.js.map +1 -0
  109. package/radar/RadarNodeMap.d.ts +28 -0
  110. package/radar/RadarNodeMap.js +46 -0
  111. package/radar/RadarNodeMap.js.map +1 -0
  112. package/rain/RainComputation.d.ts +34 -0
  113. package/rain/RainComputation.js +55 -0
  114. package/rain/RainComputation.js.map +1 -0
  115. package/rain/RainComputationAbstract.d.ts +41 -0
  116. package/rain/RainComputationAbstract.js +102 -0
  117. package/rain/RainComputationAbstract.js.map +1 -0
  118. package/rain/RainComputationMap.d.ts +32 -0
  119. package/rain/RainComputationMap.js +45 -0
  120. package/rain/RainComputationMap.js.map +1 -0
  121. package/rain/RainComputationQuality.d.ts +37 -0
  122. package/{src/rain/RainComputationQuality.ts → rain/RainComputationQuality.js} +20 -56
  123. package/rain/RainComputationQuality.js.map +1 -0
  124. package/rain/RainMeasure.d.ts +18 -0
  125. package/rain/RainMeasure.js +19 -0
  126. package/rain/RainMeasure.js.map +1 -0
  127. package/rain/RainNode.d.ts +38 -0
  128. package/{src/rain/RainNode.ts → rain/RainNode.js} +48 -76
  129. package/rain/RainNode.js.map +1 -0
  130. package/.travis.deploy.sh +0 -41
  131. package/.travis.yml +0 -22
  132. package/specs/cartesian/Cartesian.spec.ts +0 -56
  133. package/specs/gauge/Gauge.spec.ts +0 -19
  134. package/specs/organization/Organization.spec.ts +0 -32
  135. package/specs/polar/Polar.spec.ts +0 -25
  136. package/specs/quality/Position.spec.ts +0 -18
  137. package/specs/quality/QualityTools.spec.ts +0 -120
  138. package/specs/quality/SpeedMatrix.spec.ts +0 -125
  139. package/specs/radar/Radar.spec.ts +0 -18
  140. package/specs/rain/Rain.spec.ts +0 -71
  141. package/specs/tsconfig.json +0 -12
  142. package/src/cartesian/CartesianValue.ts +0 -17
  143. package/src/cartesian/ICartesianMeasureValue.ts +0 -27
  144. package/src/cartesian/LatLng.ts +0 -39
  145. package/src/cartesian/RadarCartesianMeasureValue.ts +0 -29
  146. package/src/cartesian/RainCartesianMeasureValue.ts +0 -33
  147. package/src/gauge/GaugeMeasure.ts +0 -36
  148. package/src/gauge/GaugeNode.ts +0 -46
  149. package/src/gauge/GaugeNodeMap.ts +0 -55
  150. package/src/organization/EventNode.ts +0 -44
  151. package/src/organization/Measure.ts +0 -49
  152. package/src/organization/PeopleNode.ts +0 -36
  153. package/src/organization/TeamNode.ts +0 -46
  154. package/src/polar/GaugePolarMeasureValue.ts +0 -15
  155. package/src/polar/IPolarMeasureValue.ts +0 -21
  156. package/src/polar/MeasureValuePolarContainer.ts +0 -28
  157. package/src/polar/PolarValue.ts +0 -16
  158. package/src/polar/RadarPolarMeasureValue.ts +0 -43
  159. package/src/polar/RainPolarMeasureValue.ts +0 -57
  160. package/src/quality/history/CartesianGaugeHistory.ts +0 -23
  161. package/src/quality/history/CartesianRainHistory.ts +0 -18
  162. package/src/quality/history/PositionHistory.ts +0 -31
  163. package/src/quality/position/Position.ts +0 -60
  164. package/src/quality/position/PositionValue.ts +0 -15
  165. package/src/radar/RadarMeasure.ts +0 -27
  166. package/src/radar/RadarNode.ts +0 -46
  167. package/src/radar/RadarNodeMap.ts +0 -65
  168. package/src/rain/RainComputation.ts +0 -82
  169. package/src/rain/RainComputationAbstract.ts +0 -137
  170. package/src/rain/RainComputationMap.ts +0 -68
  171. package/src/rain/RainMeasure.ts +0 -27
  172. package/tsconfig.json +0 -17
  173. package/tslint.json +0 -79
  174. /package/{src/organization/IVersion.ts → organization/IVersion.d.ts} +0 -0
@@ -1,26 +1,8 @@
1
- import {CartesianValue} from '../cartesian/CartesianValue';
2
-
3
- export class QualityPoint {
4
-
5
- public gaugeId: string;
6
- public gaugeLabel: string;
7
- public gaugeDate: Date;
8
- public rainDate: Date;
9
- public gaugeCartesianValue: CartesianValue;
10
- public rainCartesianValues: CartesianValue[];
11
- public speed: { x: number, y: number };
12
- public remark: string;
13
-
14
- constructor(json: {
15
- gaugeId: string,
16
- gaugeLabel: string,
17
- gaugeDate: Date,
18
- rainDate: Date,
19
- gaugeCartesianValue: CartesianValue,
20
- rainCartesianValues: CartesianValue[],
21
- speed: { x: number, y: number },
22
- remark: string,
23
- }) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QualityPoint = void 0;
4
+ class QualityPoint {
5
+ constructor(json) {
24
6
  this.gaugeId = json.gaugeId;
25
7
  this.gaugeLabel = json.gaugeLabel;
26
8
  this.gaugeDate = new Date(json.gaugeDate);
@@ -30,59 +12,52 @@ export class QualityPoint {
30
12
  this.speed = json.speed;
31
13
  this.remark = json.remark;
32
14
  }
33
-
34
- getGaugeValue(): number {
35
- return this.gaugeCartesianValue?.value;
15
+ getGaugeValue() {
16
+ var _a;
17
+ return (_a = this.gaugeCartesianValue) === null || _a === void 0 ? void 0 : _a.value;
36
18
  }
37
-
38
- getRainValue(): number {
19
+ getRainValue() {
39
20
  const sum = this.rainCartesianValues.reduce((prev, rcv) => prev + rcv.value, 0);
40
21
  return this.rainCartesianValues.length ? sum / this.rainCartesianValues.length : 0;
41
22
  }
42
-
43
- getRainLat(): number {
44
- return this.getMiddleValue()?.lat;
23
+ getRainLat() {
24
+ var _a;
25
+ return (_a = this.getMiddleValue()) === null || _a === void 0 ? void 0 : _a.lat;
45
26
  }
46
-
47
- getRainLng(): number {
48
- return this.getMiddleValue()?.lng;
27
+ getRainLng() {
28
+ var _a;
29
+ return (_a = this.getMiddleValue()) === null || _a === void 0 ? void 0 : _a.lng;
49
30
  }
50
-
51
- getDelta(): number {
31
+ getDelta() {
52
32
  return Math.abs(this.getRainValue() - this.getGaugeValue());
53
33
  }
54
-
55
- getRatio(): number {
56
-
34
+ getRatio() {
57
35
  let ratio = 0;
58
36
  if (this.getRainValue() === 0) {
59
37
  return ratio;
60
38
  }
61
-
62
39
  if (this.getGaugeValue() > this.getRainValue()) {
63
40
  ratio = this.getRainValue() / this.getGaugeValue();
64
- } else {
41
+ }
42
+ else {
65
43
  ratio = this.getGaugeValue() / this.getRainValue();
66
44
  }
67
-
68
45
  return ratio;
69
46
  }
70
-
71
- getTimeDeltaInMinutes(): number {
47
+ getTimeDeltaInMinutes() {
72
48
  const delta = this.rainDate.getTime() - this.gaugeDate.getTime();
73
49
  return Math.round(delta / 60000);
74
50
  }
75
-
76
- private getMiddleValue(): CartesianValue {
51
+ getMiddleValue() {
77
52
  if (!this.rainCartesianValues || this.rainCartesianValues.length === 0) {
78
53
  return null;
79
54
  }
80
-
81
55
  const sortedValues = this.rainCartesianValues.sort((a, b) => {
82
56
  return (a.lat - b.lat) * (a.lng - b.lng);
83
57
  });
84
58
  const middlePos = Math.floor(sortedValues.length / 2);
85
59
  return sortedValues[middlePos];
86
60
  }
87
-
88
61
  }
62
+ exports.QualityPoint = QualityPoint;
63
+ //# sourceMappingURL=QualityPoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QualityPoint.js","sourceRoot":"","sources":["../../src/quality/QualityPoint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import { PositionHistory } from './history/PositionHistory';
2
+ import { PositionValue } from './position/PositionValue';
3
+ import { Position } from './position/Position';
4
+ import { QualityPoint } from './QualityPoint';
5
+ export declare class SpeedMatrix {
6
+ name: string;
7
+ protected qualityPoints: QualityPoint[];
8
+ protected speed: {
9
+ angleInDegrees: number;
10
+ pixelsPerPeriod: number;
11
+ };
12
+ protected trustedTechnicalIndicator: number;
13
+ protected flattenPositionRange: {
14
+ xMin: number;
15
+ xMax: number;
16
+ yMin: number;
17
+ yMax: number;
18
+ };
19
+ protected roundScale: Position;
20
+ static DEFAULT_MATRIX_RANGE: number;
21
+ static DEFAULT_TRUSTED_INDICATOR: number;
22
+ protected flattenPositionHistory: number[][];
23
+ constructor(name: string, qualityPoints: QualityPoint[], speed?: {
24
+ angleInDegrees: number;
25
+ pixelsPerPeriod: number;
26
+ }, trustedTechnicalIndicator?: number, flattenPositionRange?: {
27
+ xMin: number;
28
+ xMax: number;
29
+ yMin: number;
30
+ yMax: number;
31
+ }, roundScale?: Position);
32
+ static CreateFromJson(json: any | SpeedMatrix): SpeedMatrix;
33
+ /**
34
+ * Get quality indicator based on delta from computed vs reality
35
+ * 0 is ideal
36
+ * 2.56 (for example) is not ideal => can be improved :)
37
+ */
38
+ static ComputeQualityIndicator(points: QualityPoint[]): number;
39
+ static LogPositionValues(positionValues: PositionHistory[], valueDisplayFn: (v: PositionHistory) => string, flattenPositionRange?: {
40
+ xMin: number;
41
+ xMax: number;
42
+ yMin: number;
43
+ yMax: number;
44
+ }, logger?: Console): void;
45
+ static Normalize(values: PositionValue[]): PositionValue[];
46
+ renderFlatten(options: {
47
+ normalize: boolean;
48
+ }): PositionValue[];
49
+ getGaugeIdRelatedValues(id: string): QualityPoint;
50
+ getQualityPoints(): QualityPoint[];
51
+ getMaxRain(): number;
52
+ getMaxGauge(): number;
53
+ getTrustedTechnicalIndicator(): number;
54
+ isConsistent(): boolean;
55
+ toJSON(): {
56
+ name: string;
57
+ flattenPositionHistory: number[][];
58
+ flattenPositionRange: {
59
+ xMin: number;
60
+ xMax: number;
61
+ yMin: number;
62
+ yMax: number;
63
+ };
64
+ speed: {
65
+ angleInDegrees: number;
66
+ pixelsPerPeriod: number;
67
+ };
68
+ qualityPoints: QualityPoint[];
69
+ trustedTechnicalIndicator: number;
70
+ roundScale: Position;
71
+ };
72
+ logFlatten(options?: {
73
+ overridingLogger?: any;
74
+ simplify?: boolean;
75
+ }): void;
76
+ getSpeed(): {
77
+ angleInDegrees: number;
78
+ pixelsPerPeriod: number;
79
+ };
80
+ protected getFlatten(): number[][];
81
+ }
@@ -1,55 +1,40 @@
1
- import {PositionHistory} from './history/PositionHistory';
2
- import {PositionValue} from './position/PositionValue';
3
- import {QualityTools} from './tools/QualityTools';
4
- import {Position} from './position/Position';
5
- import {QualityPoint} from './QualityPoint';
6
- import {CartesianValue} from '../cartesian/CartesianValue';
7
- import {LatLng} from '../cartesian/LatLng';
8
-
9
- export class SpeedMatrix {
10
-
11
- public static DEFAULT_MATRIX_RANGE = 8;
12
- public static DEFAULT_TRUSTED_INDICATOR = 1;
13
-
14
- protected flattenPositionHistory: number[][];
15
-
16
- constructor(
17
- public name: string,
18
- protected qualityPoints: QualityPoint[],
19
- protected speed: { angleInDegrees: number, pixelsPerPeriod: number } = {angleInDegrees: 0, pixelsPerPeriod: 0},
20
- protected trustedTechnicalIndicator = SpeedMatrix.DEFAULT_TRUSTED_INDICATOR,
21
- protected flattenPositionRange: { xMin: number, xMax: number, yMin: number, yMax: number } = {
22
- xMin: -SpeedMatrix.DEFAULT_MATRIX_RANGE,
23
- xMax: SpeedMatrix.DEFAULT_MATRIX_RANGE,
24
- yMin: -SpeedMatrix.DEFAULT_MATRIX_RANGE,
25
- yMax: SpeedMatrix.DEFAULT_MATRIX_RANGE
26
- },
27
- protected roundScale: Position = new Position({x: QualityTools.DEFAULT_SCALE, y: QualityTools.DEFAULT_SCALE})
28
- ) {
29
- }
30
-
31
- public static CreateFromJson(json: any | SpeedMatrix): SpeedMatrix {
32
- const created = new SpeedMatrix(
33
- json.name,
34
- json.qualityPoints,
35
- json.speed,
36
- json.trustedTechnicalIndicator,
37
- json.flattenPositionRange,
38
- json.roundScale);
39
-
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SpeedMatrix = void 0;
4
+ const PositionHistory_1 = require("./history/PositionHistory");
5
+ const PositionValue_1 = require("./position/PositionValue");
6
+ const QualityTools_1 = require("./tools/QualityTools");
7
+ const Position_1 = require("./position/Position");
8
+ const QualityPoint_1 = require("./QualityPoint");
9
+ const CartesianValue_1 = require("../cartesian/CartesianValue");
10
+ const LatLng_1 = require("../cartesian/LatLng");
11
+ class SpeedMatrix {
12
+ constructor(name, qualityPoints, speed = { angleInDegrees: 0, pixelsPerPeriod: 0 }, trustedTechnicalIndicator = SpeedMatrix.DEFAULT_TRUSTED_INDICATOR, flattenPositionRange = {
13
+ xMin: -SpeedMatrix.DEFAULT_MATRIX_RANGE,
14
+ xMax: SpeedMatrix.DEFAULT_MATRIX_RANGE,
15
+ yMin: -SpeedMatrix.DEFAULT_MATRIX_RANGE,
16
+ yMax: SpeedMatrix.DEFAULT_MATRIX_RANGE
17
+ }, roundScale = new Position_1.Position({ x: QualityTools_1.QualityTools.DEFAULT_SCALE, y: QualityTools_1.QualityTools.DEFAULT_SCALE })) {
18
+ this.name = name;
19
+ this.qualityPoints = qualityPoints;
20
+ this.speed = speed;
21
+ this.trustedTechnicalIndicator = trustedTechnicalIndicator;
22
+ this.flattenPositionRange = flattenPositionRange;
23
+ this.roundScale = roundScale;
24
+ }
25
+ static CreateFromJson(json) {
26
+ const created = new SpeedMatrix(json.name, json.qualityPoints, json.speed, json.trustedTechnicalIndicator, json.flattenPositionRange, json.roundScale);
40
27
  if (json.flattenPositionHistory) {
41
28
  created.flattenPositionHistory = json.flattenPositionHistory;
42
29
  }
43
-
44
30
  return created;
45
31
  }
46
-
47
32
  /**
48
33
  * Get quality indicator based on delta from computed vs reality
49
34
  * 0 is ideal
50
35
  * 2.56 (for example) is not ideal => can be improved :)
51
36
  */
52
- public static ComputeQualityIndicator(points: QualityPoint[]): number {
37
+ static ComputeQualityIndicator(points) {
53
38
  let indicator = 0;
54
39
  for (const point of points) {
55
40
  indicator += point.getDelta();
@@ -57,40 +42,34 @@ export class SpeedMatrix {
57
42
  if (points.length > 0) {
58
43
  indicator = indicator / points.length;
59
44
  }
60
-
61
45
  return indicator;
62
46
  }
63
-
64
- static LogPositionValues(positionValues: PositionHistory[],
65
- valueDisplayFn: (v: PositionHistory) => string,
66
- flattenPositionRange: { xMin: number, xMax: number, yMin: number, yMax: number } = {
67
- xMin: -SpeedMatrix.DEFAULT_MATRIX_RANGE,
68
- xMax: SpeedMatrix.DEFAULT_MATRIX_RANGE,
69
- yMin: -SpeedMatrix.DEFAULT_MATRIX_RANGE,
70
- yMax: SpeedMatrix.DEFAULT_MATRIX_RANGE
71
- },
72
- logger = console) {
73
-
74
- const labelWithSign = (val: number) => {
47
+ static LogPositionValues(positionValues, valueDisplayFn, flattenPositionRange = {
48
+ xMin: -SpeedMatrix.DEFAULT_MATRIX_RANGE,
49
+ xMax: SpeedMatrix.DEFAULT_MATRIX_RANGE,
50
+ yMin: -SpeedMatrix.DEFAULT_MATRIX_RANGE,
51
+ yMax: SpeedMatrix.DEFAULT_MATRIX_RANGE
52
+ }, logger = console) {
53
+ const labelWithSign = (val) => {
75
54
  if (val < 0) {
76
55
  return '' + val;
77
- } else if (val === 0) {
56
+ }
57
+ else if (val === 0) {
78
58
  return ' ' + 0;
79
59
  }
80
60
  return '+' + val;
81
- }
82
- const labelX = (x: number) => {
61
+ };
62
+ const labelX = (x) => {
83
63
  return 'x' + labelWithSign(x - flattenPositionRange.xMax);
84
64
  };
85
- const labelY = (y: number) => {
65
+ const labelY = (y) => {
86
66
  return 'y' + labelWithSign(y - flattenPositionRange.yMax);
87
67
  };
88
-
89
68
  const matrixToRender = {};
90
69
  for (let y = flattenPositionRange.yMax - flattenPositionRange.yMin; y >= 0; y--) {
91
70
  const xObject = {};
92
71
  for (let x = 0; x <= flattenPositionRange.xMax - flattenPositionRange.xMin; x++) {
93
- xObject[labelX(x)] = valueDisplayFn(new PositionHistory({
72
+ xObject[labelX(x)] = valueDisplayFn(new PositionHistory_1.PositionHistory({
94
73
  id: 'id',
95
74
  label: 'label',
96
75
  date: new Date(),
@@ -111,65 +90,54 @@ export class SpeedMatrix {
111
90
  matrixToRender[labelY(yOfMatrix)][labelX(xOfMatrix)] = valueDisplayFn(value);
112
91
  }
113
92
  }
114
-
115
93
  logger.table(matrixToRender);
116
94
  }
117
-
118
-
119
- public static Normalize(values: PositionValue[]): PositionValue[] {
120
- const built: PositionValue[] = [];
95
+ static Normalize(values) {
96
+ const built = [];
121
97
  let maxValue = Number.EPSILON;
122
98
  for (const pos of values) {
123
99
  maxValue = Math.max(maxValue, pos.value);
124
100
  }
125
101
  for (const pos of values) {
126
102
  const normalizedValue = pos.value / maxValue;
127
- built.push(new PositionValue({x: pos.x, y: pos.y, value: normalizedValue}));
103
+ built.push(new PositionValue_1.PositionValue({ x: pos.x, y: pos.y, value: normalizedValue }));
128
104
  }
129
105
  return built;
130
106
  }
131
-
132
- renderFlatten(options: { normalize: boolean }): PositionValue[] {
133
-
107
+ renderFlatten(options) {
134
108
  const positionMatrix = this.getFlatten();
135
109
  if (positionMatrix.length === 0) {
136
110
  return [];
137
111
  }
138
-
139
- const positionHistories: PositionValue[] = [];
112
+ const positionHistories = [];
140
113
  let maxValue = 0;
141
114
  for (const [iX, posX] of positionMatrix.entries()) {
142
115
  for (const [iY, value] of posX.entries()) {
143
116
  const x = iX + this.flattenPositionRange.xMin;
144
117
  const y = iY + this.flattenPositionRange.yMin;
145
118
  maxValue = Math.max(maxValue, value);
146
- positionHistories.push(new PositionValue({x, y, value}));
119
+ positionHistories.push(new PositionValue_1.PositionValue({ x, y, value }));
147
120
  }
148
121
  }
149
-
150
122
  // Normalize
151
123
  if (maxValue && options.normalize) {
152
124
  positionHistories.forEach(p => {
153
125
  p.value = p.value / maxValue;
154
126
  });
155
127
  }
156
-
157
128
  return positionHistories;
158
129
  }
159
-
160
- getGaugeIdRelatedValues(id: string): QualityPoint {
130
+ getGaugeIdRelatedValues(id) {
161
131
  const points = this.qualityPoints.filter(p => p.gaugeId === id);
162
132
  if (points.length === 1) {
163
133
  return points[0];
164
134
  }
165
135
  return null;
166
136
  }
167
-
168
- getQualityPoints(): QualityPoint[] {
169
- return this.qualityPoints.map(p => new QualityPoint(p));
137
+ getQualityPoints() {
138
+ return this.qualityPoints.map(p => new QualityPoint_1.QualityPoint(p));
170
139
  }
171
-
172
- getMaxRain(): number {
140
+ getMaxRain() {
173
141
  const qualityPoints = this.getQualityPoints();
174
142
  let max = -1;
175
143
  for (const p of qualityPoints) {
@@ -177,8 +145,7 @@ export class SpeedMatrix {
177
145
  }
178
146
  return max;
179
147
  }
180
-
181
- getMaxGauge(): number {
148
+ getMaxGauge() {
182
149
  const qualityPoints = this.getQualityPoints();
183
150
  let max = -1;
184
151
  for (const p of qualityPoints) {
@@ -186,15 +153,12 @@ export class SpeedMatrix {
186
153
  }
187
154
  return max;
188
155
  }
189
-
190
- getTrustedTechnicalIndicator(): number {
156
+ getTrustedTechnicalIndicator() {
191
157
  return this.trustedTechnicalIndicator;
192
158
  }
193
-
194
- isConsistent(): boolean {
159
+ isConsistent() {
195
160
  return this.trustedTechnicalIndicator > SpeedMatrix.DEFAULT_TRUSTED_INDICATOR / 2;
196
161
  }
197
-
198
162
  toJSON() {
199
163
  return {
200
164
  name: this.name,
@@ -206,16 +170,13 @@ export class SpeedMatrix {
206
170
  roundScale: this.roundScale,
207
171
  };
208
172
  }
209
-
210
- logFlatten(options: { overridingLogger?: any, simplify?: boolean }
211
- = {overridingLogger: null, simplify: false}) {
173
+ logFlatten(options = { overridingLogger: null, simplify: false }) {
212
174
  let logger = options.overridingLogger;
213
175
  if (!logger) {
214
176
  logger = console;
215
177
  }
216
-
217
- const flatten = this.renderFlatten({normalize: false});
218
- const positionHistories = flatten.map(pv => new PositionHistory({
178
+ const flatten = this.renderFlatten({ normalize: false });
179
+ const positionHistories = flatten.map(pv => new PositionHistory_1.PositionHistory({
219
180
  id: '-',
220
181
  label: '-',
221
182
  date: null,
@@ -225,69 +186,68 @@ export class SpeedMatrix {
225
186
  valueFromGauge: -1,
226
187
  valueFromRain: -1
227
188
  }));
228
-
229
- const valueDisplay = (pv: PositionValue): string => {
189
+ const valueDisplay = (pv) => {
230
190
  const v = pv.value;
231
191
  if (options.simplify) {
232
192
  if (v === 1) {
233
193
  return '##';
234
- } else if (v >= 0.8) {
194
+ }
195
+ else if (v >= 0.8) {
235
196
  return '#';
236
- } else if (v >= 0.5) {
197
+ }
198
+ else if (v >= 0.5) {
237
199
  return '=';
238
- } else if (v >= 0.2) {
200
+ }
201
+ else if (v >= 0.2) {
239
202
  return '_';
240
203
  }
241
204
  return ' ';
242
205
  }
243
206
  return '' + Math.round(v * 1000) / 1000;
244
- }
245
-
207
+ };
246
208
  SpeedMatrix.LogPositionValues(positionHistories, valueDisplay, this.flattenPositionRange, logger);
247
209
  }
248
-
249
210
  getSpeed() {
250
211
  if (!this.speed) {
251
- return {angleInDegrees: 0, pixelsPerPeriod: 0};
212
+ return { angleInDegrees: 0, pixelsPerPeriod: 0 };
252
213
  }
253
214
  return this.speed;
254
215
  }
255
-
256
- protected getFlatten(): number[][] {
216
+ getFlatten() {
257
217
  if (this.flattenPositionHistory) {
258
218
  return this.flattenPositionHistory;
259
219
  }
260
-
261
220
  this.flattenPositionHistory = [];
262
221
  const yWidth = this.flattenPositionRange.yMax - this.flattenPositionRange.yMin + 1;
263
222
  const xWidth = this.flattenPositionRange.xMax - this.flattenPositionRange.xMin + 1;
264
223
  for (let y = 0; y < yWidth; y++) {
265
224
  this.flattenPositionHistory.push(new Array(xWidth).fill(0));
266
225
  }
267
-
268
226
  // same position => add value
269
227
  for (const qualityPoint of this.qualityPoints) {
270
228
  const ratio = qualityPoint.getRatio();
271
- const cartesianValue = new CartesianValue({
229
+ const cartesianValue = new CartesianValue_1.CartesianValue({
272
230
  value: ratio,
273
231
  lat: qualityPoint.getRainLat() - qualityPoint.gaugeCartesianValue.lat,
274
232
  lng: qualityPoint.getRainLng() - qualityPoint.gaugeCartesianValue.lng,
275
233
  });
276
- const position = QualityTools.MapLatLngToPosition(cartesianValue, false, new LatLng({
277
- lat: QualityTools.DEFAULT_SCALE,
278
- lng: QualityTools.DEFAULT_SCALE
234
+ const position = QualityTools_1.QualityTools.MapLatLngToPosition(cartesianValue, false, new LatLng_1.LatLng({
235
+ lat: QualityTools_1.QualityTools.DEFAULT_SCALE,
236
+ lng: QualityTools_1.QualityTools.DEFAULT_SCALE
279
237
  }));
280
-
281
238
  const positionX = Math.round((position.x / this.roundScale.x) - this.flattenPositionRange.xMin);
282
239
  const positionY = Math.round((position.y / this.roundScale.y) - this.flattenPositionRange.yMin);
283
-
284
240
  if (0 <= positionX && positionX < xWidth && 0 <= positionY && positionY < yWidth) {
285
241
  this.flattenPositionHistory[positionX][positionY] += cartesianValue.value;
286
- } else {
242
+ }
243
+ else {
287
244
  throw new Error('Matrix ranges and positions are not consistent.');
288
245
  }
289
246
  }
290
-
291
247
  return this.flattenPositionHistory;
292
248
  }
293
249
  }
250
+ SpeedMatrix.DEFAULT_MATRIX_RANGE = 8;
251
+ SpeedMatrix.DEFAULT_TRUSTED_INDICATOR = 1;
252
+ exports.SpeedMatrix = SpeedMatrix;
253
+ //# sourceMappingURL=SpeedMatrix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpeedMatrix.js","sourceRoot":"","sources":["../../src/quality/SpeedMatrix.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import { SpeedMatrix } from './SpeedMatrix';
2
+ import { PositionValue } from './position/PositionValue';
3
+ import { QualityPoint } from './QualityPoint';
4
+ export declare class SpeedMatrixContainer {
5
+ protected qualityPoints: any;
6
+ protected trustedIndicators: number[];
7
+ protected flattenMatrices: PositionValue[][];
8
+ protected matrices: SpeedMatrix[];
9
+ constructor(json: {
10
+ matrices: SpeedMatrix[];
11
+ });
12
+ static CreateFromJson(json: any): SpeedMatrixContainer;
13
+ protected static mergeStillComputed(v1: any, v2: any): any;
14
+ protected static mergeDateMin(d1: Date, d2: Date): Date;
15
+ protected static mergeDateMax(d1: Date, d2: Date): Date;
16
+ protected static mergeAvg(v1: number, v2: number): number;
17
+ protected static mergeMin(v1: number, v2: number): number;
18
+ protected static mergeConcat(a1: Array<any>, a2: Array<any>): Array<any>;
19
+ protected static mergeReduce(a1: Array<QualityPoint>, a2: Array<QualityPoint>): Array<QualityPoint>;
20
+ getMatrix(index?: number): SpeedMatrix;
21
+ getMatrixByName(name: string): SpeedMatrix;
22
+ getMatrices(): SpeedMatrix[];
23
+ getQualityPoints(matrixName?: string): QualityPoint[];
24
+ getMaxGauge(): number;
25
+ getMaxRain(): number;
26
+ /**
27
+ * Get summed quality indicator (0 ideally)
28
+ * @link SpeedMatrix.ComputeQualityIndicator
29
+ */
30
+ getQuality(): number;
31
+ getTrustedIndicators(): number[];
32
+ getSpeed(): {
33
+ angleInDegrees: number;
34
+ pixelsPerPeriod: number;
35
+ };
36
+ isConsistent(): boolean;
37
+ getFlattenMatrixCount(): number;
38
+ renderFlattenMatrix(index?: number, options?: {
39
+ normalize?: boolean;
40
+ }): PositionValue[];
41
+ renderMergedMatrix(options?: {
42
+ normalize?: boolean;
43
+ }): PositionValue[];
44
+ toJSON(options?: {
45
+ removeFlatten?: boolean;
46
+ removeMatrices?: boolean;
47
+ removeIndicators?: boolean;
48
+ }): {
49
+ qualityPoints: QualityPoint[];
50
+ trustedIndicators: number[];
51
+ flattenMatrices: PositionValue[][];
52
+ speed: {
53
+ angleInDegrees: number;
54
+ pixelsPerPeriod: number;
55
+ };
56
+ matrices: {
57
+ name: string;
58
+ flattenPositionHistory: number[][];
59
+ flattenPositionRange: {
60
+ xMin: number;
61
+ xMax: number;
62
+ yMin: number;
63
+ yMax: number;
64
+ };
65
+ speed: {
66
+ angleInDegrees: number;
67
+ pixelsPerPeriod: number;
68
+ };
69
+ qualityPoints: QualityPoint[];
70
+ trustedTechnicalIndicator: number;
71
+ roundScale: import("..").Position;
72
+ }[];
73
+ };
74
+ merge(speedMatrixContainerToMergeIn: SpeedMatrixContainer): this;
75
+ logMergedMatrix(options?: {
76
+ normalize?: boolean;
77
+ }): void;
78
+ protected storeFlattenMatrices(): PositionValue[][];
79
+ }