raain-model 1.11.4 → 1.11.6

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 +83 -0
  80. package/{src/quality/SpeedMatrix.ts → quality/SpeedMatrix.js} +78 -116
  81. package/quality/SpeedMatrix.js.map +1 -0
  82. package/quality/SpeedMatrixContainer.d.ts +80 -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,83 @@
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
+ remarks: string;
8
+ protected qualityPoints: QualityPoint[];
9
+ protected speed: {
10
+ angleInDegrees: number;
11
+ pixelsPerPeriod: number;
12
+ };
13
+ protected trustedTechnicalIndicator: number;
14
+ protected flattenPositionRange: {
15
+ xMin: number;
16
+ xMax: number;
17
+ yMin: number;
18
+ yMax: number;
19
+ };
20
+ protected roundScale: Position;
21
+ static DEFAULT_MATRIX_RANGE: number;
22
+ static DEFAULT_TRUSTED_INDICATOR: number;
23
+ protected flattenPositionHistory: number[][];
24
+ constructor(name: string, remarks: string, qualityPoints: QualityPoint[], speed?: {
25
+ angleInDegrees: number;
26
+ pixelsPerPeriod: number;
27
+ }, trustedTechnicalIndicator?: number, flattenPositionRange?: {
28
+ xMin: number;
29
+ xMax: number;
30
+ yMin: number;
31
+ yMax: number;
32
+ }, roundScale?: Position);
33
+ static CreateFromJson(json: any | SpeedMatrix): SpeedMatrix;
34
+ /**
35
+ * Get quality indicator based on delta from computed vs reality
36
+ * 0 is ideal
37
+ * 2.56 (for example) is not ideal => can be improved :)
38
+ */
39
+ static ComputeQualityIndicator(points: QualityPoint[]): number;
40
+ static LogPositionValues(positionValues: PositionHistory[], valueDisplayFn: (v: PositionHistory) => string, flattenPositionRange?: {
41
+ xMin: number;
42
+ xMax: number;
43
+ yMin: number;
44
+ yMax: number;
45
+ }, logger?: Console): void;
46
+ static Normalize(values: PositionValue[]): PositionValue[];
47
+ renderFlatten(options: {
48
+ normalize: boolean;
49
+ }): PositionValue[];
50
+ getGaugeIdRelatedValues(id: string): QualityPoint;
51
+ getQualityPoints(): QualityPoint[];
52
+ getMaxRain(): number;
53
+ getMaxGauge(): number;
54
+ getTrustedTechnicalIndicator(): number;
55
+ isConsistent(): boolean;
56
+ toJSON(): {
57
+ name: string;
58
+ remarks: string;
59
+ flattenPositionHistory: number[][];
60
+ flattenPositionRange: {
61
+ xMin: number;
62
+ xMax: number;
63
+ yMin: number;
64
+ yMax: number;
65
+ };
66
+ speed: {
67
+ angleInDegrees: number;
68
+ pixelsPerPeriod: number;
69
+ };
70
+ qualityPoints: QualityPoint[];
71
+ trustedTechnicalIndicator: number;
72
+ roundScale: Position;
73
+ };
74
+ logFlatten(options?: {
75
+ overridingLogger?: any;
76
+ simplify?: boolean;
77
+ }): void;
78
+ getSpeed(): {
79
+ angleInDegrees: number;
80
+ pixelsPerPeriod: number;
81
+ };
82
+ protected getFlatten(): number[][];
83
+ }
@@ -1,55 +1,41 @@
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, remarks, 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.remarks = remarks;
20
+ this.qualityPoints = qualityPoints;
21
+ this.speed = speed;
22
+ this.trustedTechnicalIndicator = trustedTechnicalIndicator;
23
+ this.flattenPositionRange = flattenPositionRange;
24
+ this.roundScale = roundScale;
25
+ }
26
+ static CreateFromJson(json) {
27
+ const created = new SpeedMatrix(json.name, json.remarks, json.qualityPoints, json.speed, json.trustedTechnicalIndicator, json.flattenPositionRange, json.roundScale);
40
28
  if (json.flattenPositionHistory) {
41
29
  created.flattenPositionHistory = json.flattenPositionHistory;
42
30
  }
43
-
44
31
  return created;
45
32
  }
46
-
47
33
  /**
48
34
  * Get quality indicator based on delta from computed vs reality
49
35
  * 0 is ideal
50
36
  * 2.56 (for example) is not ideal => can be improved :)
51
37
  */
52
- public static ComputeQualityIndicator(points: QualityPoint[]): number {
38
+ static ComputeQualityIndicator(points) {
53
39
  let indicator = 0;
54
40
  for (const point of points) {
55
41
  indicator += point.getDelta();
@@ -57,40 +43,34 @@ export class SpeedMatrix {
57
43
  if (points.length > 0) {
58
44
  indicator = indicator / points.length;
59
45
  }
60
-
61
46
  return indicator;
62
47
  }
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) => {
48
+ static LogPositionValues(positionValues, valueDisplayFn, flattenPositionRange = {
49
+ xMin: -SpeedMatrix.DEFAULT_MATRIX_RANGE,
50
+ xMax: SpeedMatrix.DEFAULT_MATRIX_RANGE,
51
+ yMin: -SpeedMatrix.DEFAULT_MATRIX_RANGE,
52
+ yMax: SpeedMatrix.DEFAULT_MATRIX_RANGE
53
+ }, logger = console) {
54
+ const labelWithSign = (val) => {
75
55
  if (val < 0) {
76
56
  return '' + val;
77
- } else if (val === 0) {
57
+ }
58
+ else if (val === 0) {
78
59
  return ' ' + 0;
79
60
  }
80
61
  return '+' + val;
81
- }
82
- const labelX = (x: number) => {
62
+ };
63
+ const labelX = (x) => {
83
64
  return 'x' + labelWithSign(x - flattenPositionRange.xMax);
84
65
  };
85
- const labelY = (y: number) => {
66
+ const labelY = (y) => {
86
67
  return 'y' + labelWithSign(y - flattenPositionRange.yMax);
87
68
  };
88
-
89
69
  const matrixToRender = {};
90
70
  for (let y = flattenPositionRange.yMax - flattenPositionRange.yMin; y >= 0; y--) {
91
71
  const xObject = {};
92
72
  for (let x = 0; x <= flattenPositionRange.xMax - flattenPositionRange.xMin; x++) {
93
- xObject[labelX(x)] = valueDisplayFn(new PositionHistory({
73
+ xObject[labelX(x)] = valueDisplayFn(new PositionHistory_1.PositionHistory({
94
74
  id: 'id',
95
75
  label: 'label',
96
76
  date: new Date(),
@@ -111,65 +91,54 @@ export class SpeedMatrix {
111
91
  matrixToRender[labelY(yOfMatrix)][labelX(xOfMatrix)] = valueDisplayFn(value);
112
92
  }
113
93
  }
114
-
115
94
  logger.table(matrixToRender);
116
95
  }
117
-
118
-
119
- public static Normalize(values: PositionValue[]): PositionValue[] {
120
- const built: PositionValue[] = [];
96
+ static Normalize(values) {
97
+ const built = [];
121
98
  let maxValue = Number.EPSILON;
122
99
  for (const pos of values) {
123
100
  maxValue = Math.max(maxValue, pos.value);
124
101
  }
125
102
  for (const pos of values) {
126
103
  const normalizedValue = pos.value / maxValue;
127
- built.push(new PositionValue({x: pos.x, y: pos.y, value: normalizedValue}));
104
+ built.push(new PositionValue_1.PositionValue({ x: pos.x, y: pos.y, value: normalizedValue }));
128
105
  }
129
106
  return built;
130
107
  }
131
-
132
- renderFlatten(options: { normalize: boolean }): PositionValue[] {
133
-
108
+ renderFlatten(options) {
134
109
  const positionMatrix = this.getFlatten();
135
110
  if (positionMatrix.length === 0) {
136
111
  return [];
137
112
  }
138
-
139
- const positionHistories: PositionValue[] = [];
113
+ const positionHistories = [];
140
114
  let maxValue = 0;
141
115
  for (const [iX, posX] of positionMatrix.entries()) {
142
116
  for (const [iY, value] of posX.entries()) {
143
117
  const x = iX + this.flattenPositionRange.xMin;
144
118
  const y = iY + this.flattenPositionRange.yMin;
145
119
  maxValue = Math.max(maxValue, value);
146
- positionHistories.push(new PositionValue({x, y, value}));
120
+ positionHistories.push(new PositionValue_1.PositionValue({ x, y, value }));
147
121
  }
148
122
  }
149
-
150
123
  // Normalize
151
124
  if (maxValue && options.normalize) {
152
125
  positionHistories.forEach(p => {
153
126
  p.value = p.value / maxValue;
154
127
  });
155
128
  }
156
-
157
129
  return positionHistories;
158
130
  }
159
-
160
- getGaugeIdRelatedValues(id: string): QualityPoint {
131
+ getGaugeIdRelatedValues(id) {
161
132
  const points = this.qualityPoints.filter(p => p.gaugeId === id);
162
133
  if (points.length === 1) {
163
134
  return points[0];
164
135
  }
165
136
  return null;
166
137
  }
167
-
168
- getQualityPoints(): QualityPoint[] {
169
- return this.qualityPoints.map(p => new QualityPoint(p));
138
+ getQualityPoints() {
139
+ return this.qualityPoints.map(p => new QualityPoint_1.QualityPoint(p));
170
140
  }
171
-
172
- getMaxRain(): number {
141
+ getMaxRain() {
173
142
  const qualityPoints = this.getQualityPoints();
174
143
  let max = -1;
175
144
  for (const p of qualityPoints) {
@@ -177,8 +146,7 @@ export class SpeedMatrix {
177
146
  }
178
147
  return max;
179
148
  }
180
-
181
- getMaxGauge(): number {
149
+ getMaxGauge() {
182
150
  const qualityPoints = this.getQualityPoints();
183
151
  let max = -1;
184
152
  for (const p of qualityPoints) {
@@ -186,18 +154,16 @@ export class SpeedMatrix {
186
154
  }
187
155
  return max;
188
156
  }
189
-
190
- getTrustedTechnicalIndicator(): number {
157
+ getTrustedTechnicalIndicator() {
191
158
  return this.trustedTechnicalIndicator;
192
159
  }
193
-
194
- isConsistent(): boolean {
160
+ isConsistent() {
195
161
  return this.trustedTechnicalIndicator > SpeedMatrix.DEFAULT_TRUSTED_INDICATOR / 2;
196
162
  }
197
-
198
163
  toJSON() {
199
164
  return {
200
165
  name: this.name,
166
+ remarks: this.remarks,
201
167
  flattenPositionHistory: this.flattenPositionHistory,
202
168
  flattenPositionRange: this.flattenPositionRange,
203
169
  speed: this.speed,
@@ -206,16 +172,13 @@ export class SpeedMatrix {
206
172
  roundScale: this.roundScale,
207
173
  };
208
174
  }
209
-
210
- logFlatten(options: { overridingLogger?: any, simplify?: boolean }
211
- = {overridingLogger: null, simplify: false}) {
175
+ logFlatten(options = { overridingLogger: null, simplify: false }) {
212
176
  let logger = options.overridingLogger;
213
177
  if (!logger) {
214
178
  logger = console;
215
179
  }
216
-
217
- const flatten = this.renderFlatten({normalize: false});
218
- const positionHistories = flatten.map(pv => new PositionHistory({
180
+ const flatten = this.renderFlatten({ normalize: false });
181
+ const positionHistories = flatten.map(pv => new PositionHistory_1.PositionHistory({
219
182
  id: '-',
220
183
  label: '-',
221
184
  date: null,
@@ -225,69 +188,68 @@ export class SpeedMatrix {
225
188
  valueFromGauge: -1,
226
189
  valueFromRain: -1
227
190
  }));
228
-
229
- const valueDisplay = (pv: PositionValue): string => {
191
+ const valueDisplay = (pv) => {
230
192
  const v = pv.value;
231
193
  if (options.simplify) {
232
194
  if (v === 1) {
233
195
  return '##';
234
- } else if (v >= 0.8) {
196
+ }
197
+ else if (v >= 0.8) {
235
198
  return '#';
236
- } else if (v >= 0.5) {
199
+ }
200
+ else if (v >= 0.5) {
237
201
  return '=';
238
- } else if (v >= 0.2) {
202
+ }
203
+ else if (v >= 0.2) {
239
204
  return '_';
240
205
  }
241
206
  return ' ';
242
207
  }
243
208
  return '' + Math.round(v * 1000) / 1000;
244
- }
245
-
209
+ };
246
210
  SpeedMatrix.LogPositionValues(positionHistories, valueDisplay, this.flattenPositionRange, logger);
247
211
  }
248
-
249
212
  getSpeed() {
250
213
  if (!this.speed) {
251
- return {angleInDegrees: 0, pixelsPerPeriod: 0};
214
+ return { angleInDegrees: 0, pixelsPerPeriod: 0 };
252
215
  }
253
216
  return this.speed;
254
217
  }
255
-
256
- protected getFlatten(): number[][] {
218
+ getFlatten() {
257
219
  if (this.flattenPositionHistory) {
258
220
  return this.flattenPositionHistory;
259
221
  }
260
-
261
222
  this.flattenPositionHistory = [];
262
223
  const yWidth = this.flattenPositionRange.yMax - this.flattenPositionRange.yMin + 1;
263
224
  const xWidth = this.flattenPositionRange.xMax - this.flattenPositionRange.xMin + 1;
264
225
  for (let y = 0; y < yWidth; y++) {
265
226
  this.flattenPositionHistory.push(new Array(xWidth).fill(0));
266
227
  }
267
-
268
228
  // same position => add value
269
229
  for (const qualityPoint of this.qualityPoints) {
270
230
  const ratio = qualityPoint.getRatio();
271
- const cartesianValue = new CartesianValue({
231
+ const cartesianValue = new CartesianValue_1.CartesianValue({
272
232
  value: ratio,
273
233
  lat: qualityPoint.getRainLat() - qualityPoint.gaugeCartesianValue.lat,
274
234
  lng: qualityPoint.getRainLng() - qualityPoint.gaugeCartesianValue.lng,
275
235
  });
276
- const position = QualityTools.MapLatLngToPosition(cartesianValue, false, new LatLng({
277
- lat: QualityTools.DEFAULT_SCALE,
278
- lng: QualityTools.DEFAULT_SCALE
236
+ const position = QualityTools_1.QualityTools.MapLatLngToPosition(cartesianValue, false, new LatLng_1.LatLng({
237
+ lat: QualityTools_1.QualityTools.DEFAULT_SCALE,
238
+ lng: QualityTools_1.QualityTools.DEFAULT_SCALE
279
239
  }));
280
-
281
240
  const positionX = Math.round((position.x / this.roundScale.x) - this.flattenPositionRange.xMin);
282
241
  const positionY = Math.round((position.y / this.roundScale.y) - this.flattenPositionRange.yMin);
283
-
284
242
  if (0 <= positionX && positionX < xWidth && 0 <= positionY && positionY < yWidth) {
285
243
  this.flattenPositionHistory[positionX][positionY] += cartesianValue.value;
286
- } else {
244
+ }
245
+ else {
287
246
  throw new Error('Matrix ranges and positions are not consistent.');
288
247
  }
289
248
  }
290
-
291
249
  return this.flattenPositionHistory;
292
250
  }
293
251
  }
252
+ SpeedMatrix.DEFAULT_MATRIX_RANGE = 8;
253
+ SpeedMatrix.DEFAULT_TRUSTED_INDICATOR = 1;
254
+ exports.SpeedMatrix = SpeedMatrix;
255
+ //# 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,80 @@
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
+ remarks: string;
59
+ flattenPositionHistory: number[][];
60
+ flattenPositionRange: {
61
+ xMin: number;
62
+ xMax: number;
63
+ yMin: number;
64
+ yMax: number;
65
+ };
66
+ speed: {
67
+ angleInDegrees: number;
68
+ pixelsPerPeriod: number;
69
+ };
70
+ qualityPoints: QualityPoint[];
71
+ trustedTechnicalIndicator: number;
72
+ roundScale: import("..").Position;
73
+ }[];
74
+ };
75
+ merge(speedMatrixContainerToMergeIn: SpeedMatrixContainer): this;
76
+ logMergedMatrix(options?: {
77
+ normalize?: boolean;
78
+ }): void;
79
+ protected storeFlattenMatrices(): PositionValue[][];
80
+ }