node-opcua-aggregates 2.85.0 → 2.86.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/average.js +2 -3
- package/dist/average.js.map +1 -1
- package/dist/calculate_bad_good.js +3 -10
- package/dist/calculate_bad_good.js.map +1 -1
- package/dist/common.js.map +1 -1
- package/dist/count.js +3 -3
- package/dist/count.js.map +1 -1
- package/dist/duration_bad.js +1 -2
- package/dist/duration_bad.js.map +1 -1
- package/dist/duration_good.js +1 -2
- package/dist/duration_good.js.map +1 -1
- package/dist/interpolate.js +3 -3
- package/dist/interpolate.js.map +1 -1
- package/dist/interval.d.ts +0 -3
- package/dist/interval.js +7 -19
- package/dist/interval.js.map +1 -1
- package/dist/minmax.js +2 -3
- package/dist/minmax.js.map +1 -1
- package/dist/percent_bad.js +1 -2
- package/dist/percent_bad.js.map +1 -1
- package/dist/percent_good.js +1 -2
- package/dist/percent_good.js.map +1 -1
- package/package.json +14 -14
- package/source/average.ts +4 -4
- package/source/calculate_bad_good.ts +4 -12
- package/source/common.ts +1 -1
- package/source/count.ts +4 -4
- package/source/duration_bad.ts +2 -2
- package/source/duration_good.ts +2 -2
- package/source/interpolate.ts +3 -5
- package/source/interval.ts +7 -17
- package/source/minmax.ts +3 -3
- package/source/percent_bad.ts +2 -2
- package/source/percent_good.ts +2 -2
package/dist/average.js
CHANGED
|
@@ -5,7 +5,6 @@ const node_opcua_data_value_1 = require("node-opcua-data-value");
|
|
|
5
5
|
const node_opcua_variant_1 = require("node-opcua-variant");
|
|
6
6
|
const node_opcua_status_code_1 = require("node-opcua-status-code");
|
|
7
7
|
const common_1 = require("./common");
|
|
8
|
-
const interval_1 = require("./interval");
|
|
9
8
|
function calculateIntervalAverageValue(interval, options) {
|
|
10
9
|
const indexStart = interval.index;
|
|
11
10
|
let statusCode;
|
|
@@ -15,11 +14,11 @@ function calculateIntervalAverageValue(interval, options) {
|
|
|
15
14
|
const values = [];
|
|
16
15
|
for (let i = indexStart; i < indexStart + interval.count; i++) {
|
|
17
16
|
const dataValue = interval.dataValues[i];
|
|
18
|
-
if (dataValue.statusCode
|
|
17
|
+
if (dataValue.statusCode.equals(node_opcua_status_code_1.StatusCodes.BadNoData)) {
|
|
19
18
|
isPartial = true;
|
|
20
19
|
continue;
|
|
21
20
|
}
|
|
22
|
-
if (
|
|
21
|
+
if (dataValue.statusCode.isNotGood()) {
|
|
23
22
|
hasBad = true;
|
|
24
23
|
continue;
|
|
25
24
|
}
|
package/dist/average.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"average.js","sourceRoot":"","sources":["../source/average.ts"],"names":[],"mappings":";;;AACA,iEAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"average.js","sourceRoot":"","sources":["../source/average.ts"],"names":[],"mappings":";;;AACA,iEAAkD;AAClD,2DAA8C;AAC9C,mEAAiE;AAEjE,qCAA4C;AAG5C,SAAS,6BAA6B,CAAC,QAAkB,EAAE,OAAsC;IAC7F,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC;IAClC,IAAI,UAAsB,CAAC;IAC3B,IAAI,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;IAEnC,MAAM,KAAK,GAAG,KAAK,CAAC;IACpB,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,UAAU,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAC3D,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAEzC,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,oCAAW,CAAC,SAAS,CAAC,EAAE;YACpD,SAAS,GAAG,IAAI,CAAC;YACjB,SAAS;SACZ;QAED,IAAI,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE;YAClC,MAAM,GAAG,IAAI,CAAC;YACd,SAAS;SACZ;QACD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KACtC;IAED,IAAI,KAAK,EAAE;QACP,IAAI,MAAM,EAAE;YACR,UAAU,GAAG,oCAAW,CAAC,sBAAsB,CAAC;SACnD;aAAM;YACH,UAAU,GAAG,oCAAW,CAAC,IAAI,CAAC;SACjC;KACJ;SAAM,IAAI,MAAM,EAAE;QACf,UAAU,GAAG,mCAAU,CAAC,cAAc,CAAC,oCAAW,CAAC,sBAAsB,EAAE,qBAAqB,CAAC,CAAC;KACrG;SAAM;QACH,UAAU,GAAG,mCAAU,CAAC,cAAc,CAAC,oCAAW,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;KACnF;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,IAAI,iCAAS,CAAC;YACjB,eAAe,EAAE,QAAQ,CAAC,SAAS;YACnC,UAAU,EAAE,oCAAW,CAAC,SAAS;SACpC,CAAC,CAAC;KACN;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IAE/D,OAAO,IAAI,iCAAS,CAAC;QACjB,eAAe,EAAE,QAAQ,CAAC,SAAS;QACnC,UAAU,EAAE,UAAwB;QACpC,KAAK,EAAE;YACH,QAAQ,EAAE,6BAAQ,CAAC,MAAM;YACzB,KAAK,EAAE,IAAI;SACd;KACJ,CAAC,CAAC;AACP,CAAC;AAED,SAAgB,cAAc,CAC1B,IAAgB,EAChB,kBAA0B,EAC1B,SAAe,EACf,OAAa,EACb,QAA+D;IAE/D,IAAA,yBAAgB,EAAC,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,OAAO,EAAE,6BAA6B,EAAE,QAAQ,CAAC,CAAC;AAC5G,CAAC;AARD,wCAQC"}
|
|
@@ -3,16 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.calculateBadAndGood = void 0;
|
|
4
4
|
const node_opcua_status_code_1 = require("node-opcua-status-code");
|
|
5
5
|
const interval_1 = require("./interval");
|
|
6
|
-
// function isBadWithUncertain(statusCode: StatusCode, treatUncertainAsBad?: boolean): boolean {
|
|
7
|
-
// if (isGoodish(statusCode)) return false;
|
|
8
|
-
// if (isUncertain(statusCode)) {
|
|
9
|
-
// return treatUncertainAsBad || false;
|
|
10
|
-
// }
|
|
11
|
-
// return true;
|
|
12
|
-
// }
|
|
13
6
|
const a = (s, options) => !s || s === node_opcua_status_code_1.StatusCodes.BadNoData
|
|
14
7
|
? node_opcua_status_code_1.StatusCodes.BadNoData
|
|
15
|
-
:
|
|
8
|
+
: s.isBad() || (options.treatUncertainAsBad && (0, interval_1.isUncertain)(s))
|
|
16
9
|
? node_opcua_status_code_1.StatusCodes.Bad
|
|
17
10
|
: node_opcua_status_code_1.StatusCodes.Good;
|
|
18
11
|
function findLowBound(interval, options) {
|
|
@@ -54,13 +47,13 @@ function calculateBadAndGood(interval, options) {
|
|
|
54
47
|
indexStart += 0;
|
|
55
48
|
for (let i = indexStart; i < interval.index + interval.count; i++) {
|
|
56
49
|
const dataValue = interval.dataValues[i];
|
|
57
|
-
if (
|
|
50
|
+
if (dataValue.statusCode.isGoodish()) {
|
|
58
51
|
nbGood++;
|
|
59
52
|
}
|
|
60
53
|
if ((0, interval_1.isUncertain)(dataValue.statusCode)) {
|
|
61
54
|
nbUncertain++;
|
|
62
55
|
}
|
|
63
|
-
if (
|
|
56
|
+
if (dataValue.statusCode.isBad()) {
|
|
64
57
|
nbBad++;
|
|
65
58
|
}
|
|
66
59
|
const currentStatus = a(dataValue.statusCode, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculate_bad_good.js","sourceRoot":"","sources":["../source/calculate_bad_good.ts"],"names":[],"mappings":";;;AAAA,mEAAsF;AAEtF,
|
|
1
|
+
{"version":3,"file":"calculate_bad_good.js","sourceRoot":"","sources":["../source/calculate_bad_good.ts"],"names":[],"mappings":"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"}
|
package/dist/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../source/common.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,uEAAmH;AACnH,iEAAkD;AAClD,iEAAkD;AAClD,2EAAoG;AACpG,mEAAiE;AACjE,yDAAiD;AAEjD,6CAAyD;AACzD,
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../source/common.ts"],"names":[],"mappings":"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"}
|
package/dist/count.js
CHANGED
|
@@ -24,12 +24,12 @@ function calculateCountValue(interval, options) {
|
|
|
24
24
|
let goodDuration = 0;
|
|
25
25
|
for (let i = indexStart; i < indexStart + interval.count; i++) {
|
|
26
26
|
const dataValue = interval.dataValues[i];
|
|
27
|
-
if (dataValue.statusCode
|
|
27
|
+
if (dataValue.statusCode.equals(node_opcua_status_code_1.StatusCodes.BadNoData)) {
|
|
28
28
|
isPartial = true;
|
|
29
29
|
continue;
|
|
30
30
|
}
|
|
31
31
|
const regionDuration = interval.regionDuration(i);
|
|
32
|
-
if (
|
|
32
|
+
if (dataValue.statusCode.isBad()) {
|
|
33
33
|
nbBad++;
|
|
34
34
|
badDuration += regionDuration;
|
|
35
35
|
}
|
|
@@ -37,7 +37,7 @@ function calculateCountValue(interval, options) {
|
|
|
37
37
|
nbUncertain++;
|
|
38
38
|
uncertainDuration += regionDuration;
|
|
39
39
|
}
|
|
40
|
-
else if (
|
|
40
|
+
else if (dataValue.statusCode.isGoodish()) {
|
|
41
41
|
nbGood++;
|
|
42
42
|
goodDuration += regionDuration;
|
|
43
43
|
}
|
package/dist/count.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"count.js","sourceRoot":"","sources":["../source/count.ts"],"names":[],"mappings":";;;AACA,iEAAkD;AAClD,mEAAsF;AACtF,2DAA8C;AAE9C,qCAA4C;AAC5C,
|
|
1
|
+
{"version":3,"file":"count.js","sourceRoot":"","sources":["../source/count.ts"],"names":[],"mappings":"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"}
|
package/dist/duration_bad.js
CHANGED
|
@@ -5,7 +5,6 @@ const node_opcua_data_value_1 = require("node-opcua-data-value");
|
|
|
5
5
|
const node_opcua_variant_1 = require("node-opcua-variant");
|
|
6
6
|
const node_opcua_status_code_1 = require("node-opcua-status-code");
|
|
7
7
|
const common_1 = require("./common");
|
|
8
|
-
const interval_1 = require("./interval");
|
|
9
8
|
const calculate_bad_good_1 = require("./calculate_bad_good");
|
|
10
9
|
function calculateDurationBad(interval, options) {
|
|
11
10
|
const { durationBad, durationUnknown, statusCode } = (0, calculate_bad_good_1.calculateBadAndGood)(interval, options);
|
|
@@ -16,7 +15,7 @@ function calculateDurationBad(interval, options) {
|
|
|
16
15
|
});
|
|
17
16
|
}
|
|
18
17
|
const value = durationBad;
|
|
19
|
-
if (
|
|
18
|
+
if (statusCode.isGoodish()) {
|
|
20
19
|
return new node_opcua_data_value_1.DataValue({
|
|
21
20
|
sourceTimestamp: interval.startTime,
|
|
22
21
|
statusCode,
|
package/dist/duration_bad.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duration_bad.js","sourceRoot":"","sources":["../source/duration_bad.ts"],"names":[],"mappings":";;;AACA,iEAAkD;AAClD,2DAA8C;AAC9C,mEAAqD;AAErD,qCAA4C;
|
|
1
|
+
{"version":3,"file":"duration_bad.js","sourceRoot":"","sources":["../source/duration_bad.ts"],"names":[],"mappings":";;;AACA,iEAAkD;AAClD,2DAA8C;AAC9C,mEAAqD;AAErD,qCAA4C;AAE5C,6DAA2D;AAE3D,SAAS,oBAAoB,CAAC,QAAkB,EAAE,OAAsC;IACpF,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,IAAA,wCAAmB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5F,IAAI,eAAe,GAAG,CAAC,IAAI,WAAW,KAAK,CAAC,EAAE;QAC1C,OAAO,IAAI,iCAAS,CAAC;YACjB,eAAe,EAAE,QAAQ,CAAC,SAAS;YACnC,UAAU,EAAE,oCAAW,CAAC,GAAG;SAC9B,CAAC,CAAC;KACN;IACD,MAAM,KAAK,GAAG,WAAW,CAAC;IAC1B,IAAI,UAAU,CAAC,SAAS,EAAE,EAAE;QACxB,OAAO,IAAI,iCAAS,CAAC;YACjB,eAAe,EAAE,QAAQ,CAAC,SAAS;YACnC,UAAU;YACV,KAAK,EAAE,EAAE,QAAQ,EAAE,6BAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;SAC9C,CAAC,CAAC;KACN;IACD,OAAO,IAAI,iCAAS,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,6BAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAClH,CAAC;AACD,0FAA0F;AAC1F,SAAgB,kBAAkB,CAC9B,IAAgB,EAChB,kBAA0B,EAC1B,SAAe,EACf,OAAa,EACb,QAA+D;IAE/D,IAAA,yBAAgB,EAAC,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,CAAC,CAAC;AACnG,CAAC;AARD,gDAQC"}
|
package/dist/duration_good.js
CHANGED
|
@@ -5,7 +5,6 @@ const node_opcua_data_value_1 = require("node-opcua-data-value");
|
|
|
5
5
|
const node_opcua_variant_1 = require("node-opcua-variant");
|
|
6
6
|
const node_opcua_status_code_1 = require("node-opcua-status-code");
|
|
7
7
|
const common_1 = require("./common");
|
|
8
|
-
const interval_1 = require("./interval");
|
|
9
8
|
const calculate_bad_good_1 = require("./calculate_bad_good");
|
|
10
9
|
function calculateDurationGood(interval, options) {
|
|
11
10
|
const { durationGood, durationUnknown, statusCode } = (0, calculate_bad_good_1.calculateBadAndGood)(interval, options);
|
|
@@ -16,7 +15,7 @@ function calculateDurationGood(interval, options) {
|
|
|
16
15
|
});
|
|
17
16
|
}
|
|
18
17
|
const value = durationGood;
|
|
19
|
-
if (
|
|
18
|
+
if (statusCode.isGoodish()) {
|
|
20
19
|
return new node_opcua_data_value_1.DataValue({
|
|
21
20
|
sourceTimestamp: interval.startTime,
|
|
22
21
|
statusCode,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duration_good.js","sourceRoot":"","sources":["../source/duration_good.ts"],"names":[],"mappings":";;;AACA,iEAAkD;AAClD,2DAA8C;AAC9C,mEAAqD;AAErD,qCAA4C;
|
|
1
|
+
{"version":3,"file":"duration_good.js","sourceRoot":"","sources":["../source/duration_good.ts"],"names":[],"mappings":";;;AACA,iEAAkD;AAClD,2DAA8C;AAC9C,mEAAqD;AAErD,qCAA4C;AAE5C,6DAA2D;AAE3D,SAAS,qBAAqB,CAAC,QAAkB,EAAE,OAAsC;IACrF,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,IAAA,wCAAmB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC7F,IAAI,eAAe,GAAC,CAAC,IAAK,YAAY,KAAI,CAAC,EAAE;QACzC,OAAO,IAAI,iCAAS,CAAC;YACjB,eAAe,EAAE,QAAQ,CAAC,SAAS;YACnC,UAAU,EAAE,oCAAW,CAAC,GAAG;SAC9B,CAAC,CAAC;KACN;IACD,MAAM,KAAK,GAAG,YAAY,CAAC;IAC3B,IAAI,UAAU,CAAC,SAAS,EAAE,EAAE;QACxB,OAAO,IAAI,iCAAS,CAAC;YACjB,eAAe,EAAE,QAAQ,CAAC,SAAS;YACnC,UAAU;YACV,KAAK,EAAE,EAAE,QAAQ,EAAE,6BAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;SAC9C,CAAC,CAAC;KACN;IACD,OAAO,IAAI,iCAAS,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,6BAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAClH,CAAC;AACD,0FAA0F;AAC1F,SAAgB,mBAAmB,CAC/B,IAAgB,EAChB,kBAA0B,EAC1B,SAAe,EACf,OAAa,EACb,QAA+D;IAE/D,IAAA,yBAAgB,EAAC,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,CAAC,CAAC;AACpG,CAAC;AARD,kDAQC"}
|
package/dist/interpolate.js
CHANGED
|
@@ -73,13 +73,13 @@ function interpolatedValue(interval, options) {
|
|
|
73
73
|
}
|
|
74
74
|
const dataValue1 = interval.dataValues[interval.index];
|
|
75
75
|
// if a non-Bad Raw value exists at the timestamp then it is the bounding value;
|
|
76
|
-
if (!
|
|
76
|
+
if (!dataValue1.statusCode.isBad() && interval.hasRawDataAsStart()) {
|
|
77
77
|
return dataValue1;
|
|
78
78
|
}
|
|
79
79
|
// find the first non-Bad Raw value before the timestamp;
|
|
80
80
|
// find previous good value
|
|
81
81
|
const before = interval.beforeStartDataValue(bTreatUncertainAsBad);
|
|
82
|
-
if (
|
|
82
|
+
if (before.dataValue.statusCode.isBad()) {
|
|
83
83
|
return new node_opcua_data_value_1.DataValue({
|
|
84
84
|
sourceTimestamp: interval.startTime,
|
|
85
85
|
statusCode: node_opcua_status_code_1.StatusCodes.BadNoData
|
|
@@ -104,7 +104,7 @@ function interpolatedValue(interval, options) {
|
|
|
104
104
|
// where V
|
|
105
105
|
// x is a value at ‘x’ and Tx is the timestamp associated with Vx.
|
|
106
106
|
const interpolatedDataValue = (0, common_1.interpolateValue)(before.dataValue, next.dataValue, interval.startTime);
|
|
107
|
-
if (before.index + 1 < next.index || !
|
|
107
|
+
if (before.index + 1 < next.index || !next.dataValue.statusCode.isGood() || !before.dataValue.statusCode.isGood()) {
|
|
108
108
|
// tslint:disable:no-bitwise
|
|
109
109
|
// some bad data exist in between = change status code
|
|
110
110
|
const mask = 0x0000ffffff;
|
package/dist/interpolate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interpolate.js","sourceRoot":"","sources":["../source/interpolate.ts"],"names":[],"mappings":";;;AAwCA,yDAA2C;AAC3C,iEAAkD;AAClD,mEAAiE;AAEjE,qCAA8D;AAC9D,
|
|
1
|
+
{"version":3,"file":"interpolate.js","sourceRoot":"","sources":["../source/interpolate.ts"],"names":[],"mappings":"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"}
|
package/dist/interval.d.ts
CHANGED
|
@@ -8,13 +8,10 @@ export { AggregateConfigurationOptions } from "node-opcua-types";
|
|
|
8
8
|
export interface AggregateConfigurationOptionsEx extends AggregateConfigurationOptions {
|
|
9
9
|
stepped?: boolean;
|
|
10
10
|
}
|
|
11
|
-
export declare function isGoodish(statusCode: StatusCode): boolean;
|
|
12
11
|
export declare function isGoodish2(statusCode: StatusCode, { treatUncertainAsBad }: {
|
|
13
12
|
treatUncertainAsBad?: boolean;
|
|
14
13
|
}): boolean;
|
|
15
|
-
export declare function isBad(statusCode: StatusCode): boolean;
|
|
16
14
|
export declare function isUncertain(statusCode: StatusCode): boolean;
|
|
17
|
-
export declare function isGood(statusCode: StatusCode): boolean;
|
|
18
15
|
export interface IntervalOptions {
|
|
19
16
|
startTime: Date;
|
|
20
17
|
dataValues: DataValue[];
|
package/dist/interval.js
CHANGED
|
@@ -1,43 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getInterval = exports.Interval = exports.adjustProcessingOptions = exports._findGoodDataValueAfter = exports._findGoodDataValueBefore = exports.
|
|
3
|
+
exports.getInterval = exports.Interval = exports.adjustProcessingOptions = exports._findGoodDataValueAfter = exports._findGoodDataValueBefore = exports.isUncertain = exports.isGoodish2 = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* @module node-opca-aggregates
|
|
6
6
|
*/
|
|
7
7
|
const node_opcua_data_value_1 = require("node-opcua-data-value");
|
|
8
8
|
const node_opcua_status_code_1 = require("node-opcua-status-code");
|
|
9
|
-
function isGoodish(statusCode) {
|
|
10
|
-
return statusCode.value < 0x40000000;
|
|
11
|
-
}
|
|
12
|
-
exports.isGoodish = isGoodish;
|
|
13
9
|
function isGoodish2(statusCode, { treatUncertainAsBad }) {
|
|
14
|
-
if (isGoodish(
|
|
10
|
+
if (statusCode.isGoodish())
|
|
15
11
|
return true;
|
|
16
12
|
if (isUncertain(statusCode))
|
|
17
13
|
return !treatUncertainAsBad;
|
|
18
14
|
return false;
|
|
19
15
|
}
|
|
20
16
|
exports.isGoodish2 = isGoodish2;
|
|
21
|
-
function isBad(statusCode) {
|
|
22
|
-
return statusCode.value >= 0x80000000;
|
|
23
|
-
}
|
|
24
|
-
exports.isBad = isBad;
|
|
25
17
|
function isUncertain(statusCode) {
|
|
26
18
|
return (statusCode.value & 0x40000000) === 0x40000000 && statusCode.value !== node_opcua_status_code_1.StatusCodes.BadNoData.value;
|
|
27
19
|
}
|
|
28
20
|
exports.isUncertain = isUncertain;
|
|
29
|
-
function isGood(statusCode) {
|
|
30
|
-
return statusCode.value === 0x0;
|
|
31
|
-
}
|
|
32
|
-
exports.isGood = isGood;
|
|
33
21
|
function _findGoodDataValueBefore(dataValues, index, bTreatUncertainAsBad) {
|
|
34
22
|
index--;
|
|
35
23
|
while (index >= 0) {
|
|
36
24
|
const dataValue1 = dataValues[index];
|
|
37
|
-
if (!bTreatUncertainAsBad && !
|
|
25
|
+
if (!bTreatUncertainAsBad && !dataValue1.statusCode.isBad()) {
|
|
38
26
|
return { index, dataValue: dataValue1 };
|
|
39
27
|
}
|
|
40
|
-
if (bTreatUncertainAsBad &&
|
|
28
|
+
if (bTreatUncertainAsBad && dataValue1.statusCode.isGood()) {
|
|
41
29
|
return { index, dataValue: dataValue1 };
|
|
42
30
|
}
|
|
43
31
|
index -= 1;
|
|
@@ -52,13 +40,13 @@ exports._findGoodDataValueBefore = _findGoodDataValueBefore;
|
|
|
52
40
|
function _findGoodDataValueAfter(dataValues, index, bTreatUncertainAsBad) {
|
|
53
41
|
while (index < dataValues.length) {
|
|
54
42
|
const dataValue1 = dataValues[index];
|
|
55
|
-
if (!bTreatUncertainAsBad && !
|
|
43
|
+
if (!bTreatUncertainAsBad && !dataValue1.statusCode.isBad()) {
|
|
56
44
|
return {
|
|
57
45
|
dataValue: dataValue1,
|
|
58
46
|
index
|
|
59
47
|
};
|
|
60
48
|
}
|
|
61
|
-
if (bTreatUncertainAsBad &&
|
|
49
|
+
if (bTreatUncertainAsBad && dataValue1.statusCode.isGood()) {
|
|
62
50
|
return {
|
|
63
51
|
dataValue: dataValue1,
|
|
64
52
|
index
|
|
@@ -143,7 +131,7 @@ class Interval {
|
|
|
143
131
|
return e;
|
|
144
132
|
}
|
|
145
133
|
let i = this.dataValues.length - 1;
|
|
146
|
-
while (i >= 0 && this.dataValues[i].statusCode
|
|
134
|
+
while (i >= 0 && this.dataValues[i].statusCode.equals(node_opcua_status_code_1.StatusCodes.BadNoData)) {
|
|
147
135
|
i--;
|
|
148
136
|
}
|
|
149
137
|
if (i < 0) {
|
package/dist/interval.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interval.js","sourceRoot":"","sources":["../source/interval.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,iEAAkD;AAClD,mEAAiE;
|
|
1
|
+
{"version":3,"file":"interval.js","sourceRoot":"","sources":["../source/interval.ts"],"names":[],"mappings":"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"}
|
package/dist/minmax.js
CHANGED
|
@@ -4,7 +4,6 @@ exports.getMaxData = exports.getMinData = exports.calculateIntervalMaxValue = ex
|
|
|
4
4
|
const node_opcua_data_value_1 = require("node-opcua-data-value");
|
|
5
5
|
const node_opcua_status_code_1 = require("node-opcua-status-code");
|
|
6
6
|
const common_1 = require("./common");
|
|
7
|
-
const interval_1 = require("./interval");
|
|
8
7
|
// eslint-disable-next-line max-statements
|
|
9
8
|
function calculateIntervalMinOrMaxValue(interval, options, predicate) {
|
|
10
9
|
// console.log(interval.toString());
|
|
@@ -17,11 +16,11 @@ function calculateIntervalMinOrMaxValue(interval, options, predicate) {
|
|
|
17
16
|
let hasBad = false;
|
|
18
17
|
for (let i = indexStart; i < indexStart + interval.count; i++) {
|
|
19
18
|
const dataValue = interval.dataValues[i];
|
|
20
|
-
if (dataValue.statusCode
|
|
19
|
+
if (dataValue.statusCode.equals(node_opcua_status_code_1.StatusCodes.BadNoData)) {
|
|
21
20
|
isPartial = true;
|
|
22
21
|
continue;
|
|
23
22
|
}
|
|
24
|
-
if (!
|
|
23
|
+
if (!dataValue.statusCode.isGood()) {
|
|
25
24
|
hasBad = true;
|
|
26
25
|
continue;
|
|
27
26
|
}
|
package/dist/minmax.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minmax.js","sourceRoot":"","sources":["../source/minmax.ts"],"names":[],"mappings":";;;AAuDA,iEAAkD;AAClD,mEAAiE;AAGjE,qCAA4C;
|
|
1
|
+
{"version":3,"file":"minmax.js","sourceRoot":"","sources":["../source/minmax.ts"],"names":[],"mappings":"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"}
|
package/dist/percent_bad.js
CHANGED
|
@@ -4,12 +4,11 @@ exports.getPercentBadData = void 0;
|
|
|
4
4
|
const node_opcua_data_value_1 = require("node-opcua-data-value");
|
|
5
5
|
const node_opcua_variant_1 = require("node-opcua-variant");
|
|
6
6
|
const common_1 = require("./common");
|
|
7
|
-
const interval_1 = require("./interval");
|
|
8
7
|
const calculate_bad_good_1 = require("./calculate_bad_good");
|
|
9
8
|
function calculatePercentBad(interval, options) {
|
|
10
9
|
const { percentBad, statusCode } = (0, calculate_bad_good_1.calculateBadAndGood)(interval, options);
|
|
11
10
|
const value = percentBad;
|
|
12
|
-
if (
|
|
11
|
+
if (statusCode.isGoodish()) {
|
|
13
12
|
return new node_opcua_data_value_1.DataValue({
|
|
14
13
|
sourceTimestamp: interval.startTime,
|
|
15
14
|
statusCode,
|
package/dist/percent_bad.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"percent_bad.js","sourceRoot":"","sources":["../source/percent_bad.ts"],"names":[],"mappings":";;;AACA,iEAAkD;AAClD,2DAA8C;AAE9C,qCAA4C;
|
|
1
|
+
{"version":3,"file":"percent_bad.js","sourceRoot":"","sources":["../source/percent_bad.ts"],"names":[],"mappings":";;;AACA,iEAAkD;AAClD,2DAA8C;AAE9C,qCAA4C;AAE5C,6DAA2D;AAE3D,SAAS,mBAAmB,CAAC,QAAkB,EAAE,OAAsC;IACnF,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAA,wCAAmB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,UAAU,CAAC;IACzB,IAAI,UAAU,CAAC,SAAS,EAAE,EAAE;QACxB,OAAO,IAAI,iCAAS,CAAC;YACjB,eAAe,EAAE,QAAQ,CAAC,SAAS;YACnC,UAAU;YACV,KAAK,EAAE,EAAE,QAAQ,EAAE,6BAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;SAC9C,CAAC,CAAC;KACN;IACD,OAAO,IAAI,iCAAS,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,6BAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAClH,CAAC;AACD,0FAA0F;AAC1F,SAAgB,iBAAiB,CAC7B,IAAgB,EAChB,kBAA0B,EAC1B,SAAe,EACf,OAAa,EACb,QAA+D;IAE/D,IAAA,yBAAgB,EAAC,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,CAAC,CAAC;AAClG,CAAC;AARD,8CAQC"}
|
package/dist/percent_good.js
CHANGED
|
@@ -5,7 +5,6 @@ const node_opcua_data_value_1 = require("node-opcua-data-value");
|
|
|
5
5
|
const node_opcua_variant_1 = require("node-opcua-variant");
|
|
6
6
|
const node_opcua_status_code_1 = require("node-opcua-status-code");
|
|
7
7
|
const common_1 = require("./common");
|
|
8
|
-
const interval_1 = require("./interval");
|
|
9
8
|
const calculate_bad_good_1 = require("./calculate_bad_good");
|
|
10
9
|
function calculatePercentGood(interval, options) {
|
|
11
10
|
//
|
|
@@ -30,7 +29,7 @@ function calculatePercentGood(interval, options) {
|
|
|
30
29
|
});
|
|
31
30
|
}
|
|
32
31
|
const value = percentGood;
|
|
33
|
-
if (
|
|
32
|
+
if (statusCode.isGoodish()) {
|
|
34
33
|
return new node_opcua_data_value_1.DataValue({
|
|
35
34
|
sourceTimestamp: interval.startTime,
|
|
36
35
|
statusCode,
|
package/dist/percent_good.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"percent_good.js","sourceRoot":"","sources":["../source/percent_good.ts"],"names":[],"mappings":";;;AACA,iEAAkD;AAClD,2DAAuD;AACvD,mEAAsF;AAEtF,qCAA4C;
|
|
1
|
+
{"version":3,"file":"percent_good.js","sourceRoot":"","sources":["../source/percent_good.ts"],"names":[],"mappings":";;;AACA,iEAAkD;AAClD,2DAAuD;AACvD,mEAAsF;AAEtF,qCAA4C;AAE5C,6DAA2D;AAE3D,SAAS,oBAAoB,CAAC,QAAkB,EAAE,OAAsC;IACpF,EAAE;IACF,oFAAoF;IACpF,EAAE;IACF,4DAA4D;IAC5D,SAAS;IACT,EAAE;IACF,0IAA0I;IAC1I,kDAAkD;IAClD,sGAAsG;IACtG,eAAe;IACf,4GAA4G;IAC5G,EAAE;IACF,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,IAAA,wCAAmB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3E,IAAI,WAAW,GAAG,CAAC,EAAE;QACjB,8EAA8E;QAC9E,OAAO,IAAI,iCAAS,CAAC;YACjB,eAAe,EAAE,QAAQ,CAAC,SAAS;YACnC,UAAU,EAAE,oCAAW,CAAC,GAAG;YAC3B,KAAK,EAAE,EAAE,QAAQ,EAAE,6BAAQ,CAAC,IAAI,EAAE;SACrC,CAAC,CAAC;KACN;IACD,MAAM,KAAK,GAAG,WAAW,CAAC;IAC1B,IAAI,UAAU,CAAC,SAAS,EAAE,EAAE;QACxB,OAAO,IAAI,iCAAS,CAAC;YACjB,eAAe,EAAE,QAAQ,CAAC,SAAS;YACnC,UAAU;YACV,KAAK,EAAE,EAAE,QAAQ,EAAE,6BAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;SAC9C,CAAC,CAAC;KACN;IACD,OAAO,IAAI,iCAAS,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,6BAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAClH,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAC9B,IAAgB,EAChB,kBAA0B,EAC1B,SAAe,EACf,OAAa,EACb,QAA+D;IAE/D,IAAA,yBAAgB,EAAC,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,CAAC,CAAC;AACnG,CAAC;AARD,gDAQC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-opcua-aggregates",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.86.0",
|
|
4
4
|
"description": "pure nodejs OPCUA SDK - module -end2end-test",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -12,22 +12,22 @@
|
|
|
12
12
|
"clean": "npx rimraf node_modules dist *.tsbuildinfo"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"node-opcua-address-space": "2.
|
|
15
|
+
"node-opcua-address-space": "2.86.0",
|
|
16
16
|
"node-opcua-assert": "2.77.0",
|
|
17
17
|
"node-opcua-constants": "2.77.0",
|
|
18
|
-
"node-opcua-data-model": "2.
|
|
19
|
-
"node-opcua-data-value": "2.
|
|
20
|
-
"node-opcua-nodeid": "2.
|
|
21
|
-
"node-opcua-numeric-range": "2.
|
|
22
|
-
"node-opcua-server": "2.
|
|
23
|
-
"node-opcua-service-history": "2.
|
|
24
|
-
"node-opcua-status-code": "2.
|
|
25
|
-
"node-opcua-types": "2.
|
|
26
|
-
"node-opcua-utils": "2.
|
|
27
|
-
"node-opcua-variant": "2.
|
|
18
|
+
"node-opcua-data-model": "2.86.0",
|
|
19
|
+
"node-opcua-data-value": "2.86.0",
|
|
20
|
+
"node-opcua-nodeid": "2.86.0",
|
|
21
|
+
"node-opcua-numeric-range": "2.86.0",
|
|
22
|
+
"node-opcua-server": "2.86.0",
|
|
23
|
+
"node-opcua-service-history": "2.86.0",
|
|
24
|
+
"node-opcua-status-code": "2.86.0",
|
|
25
|
+
"node-opcua-types": "2.86.0",
|
|
26
|
+
"node-opcua-utils": "2.86.0",
|
|
27
|
+
"node-opcua-variant": "2.86.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"node-opcua-leak-detector": "2.
|
|
30
|
+
"node-opcua-leak-detector": "2.86.0",
|
|
31
31
|
"node-opcua-nodesets": "2.77.0",
|
|
32
32
|
"should": "^13.2.3"
|
|
33
33
|
},
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"internet of things"
|
|
47
47
|
],
|
|
48
48
|
"homepage": "http://node-opcua.github.io/",
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "36afc46fe2c91aa5664a8c5418f4db5a354670c3"
|
|
50
50
|
}
|
package/source/average.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { UAVariable } from "node-opcua-address-space";
|
|
2
2
|
import { DataValue } from "node-opcua-data-value";
|
|
3
|
-
import {
|
|
3
|
+
import { DataType } from "node-opcua-variant";
|
|
4
4
|
import { StatusCode, StatusCodes } from "node-opcua-status-code";
|
|
5
5
|
|
|
6
6
|
import { getAggregateData } from "./common";
|
|
7
|
-
import { Interval, AggregateConfigurationOptions
|
|
7
|
+
import { Interval, AggregateConfigurationOptions } from "./interval";
|
|
8
8
|
|
|
9
9
|
function calculateIntervalAverageValue(interval: Interval, options: AggregateConfigurationOptions): DataValue {
|
|
10
10
|
const indexStart = interval.index;
|
|
@@ -19,12 +19,12 @@ function calculateIntervalAverageValue(interval: Interval, options: AggregateCon
|
|
|
19
19
|
for (let i = indexStart; i < indexStart + interval.count; i++) {
|
|
20
20
|
const dataValue = interval.dataValues[i];
|
|
21
21
|
|
|
22
|
-
if (dataValue.statusCode
|
|
22
|
+
if (dataValue.statusCode.equals(StatusCodes.BadNoData)) {
|
|
23
23
|
isPartial = true;
|
|
24
24
|
continue;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
if (
|
|
27
|
+
if (dataValue.statusCode.isNotGood()) {
|
|
28
28
|
hasBad = true;
|
|
29
29
|
continue;
|
|
30
30
|
}
|
|
@@ -1,20 +1,12 @@
|
|
|
1
1
|
import { extraStatusCodeBits, StatusCode, StatusCodes } from "node-opcua-status-code";
|
|
2
2
|
|
|
3
|
-
import { Interval, AggregateConfigurationOptions, isUncertain
|
|
3
|
+
import { Interval, AggregateConfigurationOptions, isUncertain } from "./interval";
|
|
4
4
|
|
|
5
|
-
// function isBadWithUncertain(statusCode: StatusCode, treatUncertainAsBad?: boolean): boolean {
|
|
6
|
-
// if (isGoodish(statusCode)) return false;
|
|
7
|
-
|
|
8
|
-
// if (isUncertain(statusCode)) {
|
|
9
|
-
// return treatUncertainAsBad || false;
|
|
10
|
-
// }
|
|
11
|
-
// return true;
|
|
12
|
-
// }
|
|
13
5
|
|
|
14
6
|
const a = (s: StatusCode | undefined, options: AggregateConfigurationOptions) =>
|
|
15
7
|
!s || s === StatusCodes.BadNoData
|
|
16
8
|
? StatusCodes.BadNoData
|
|
17
|
-
: isBad(
|
|
9
|
+
: s.isBad() || (options.treatUncertainAsBad && isUncertain(s))
|
|
18
10
|
? StatusCodes.Bad
|
|
19
11
|
: StatusCodes.Good;
|
|
20
12
|
|
|
@@ -77,13 +69,13 @@ export function calculateBadAndGood(
|
|
|
77
69
|
indexStart += 0;
|
|
78
70
|
for (let i = indexStart; i < interval.index + interval.count; i++) {
|
|
79
71
|
const dataValue = interval.dataValues[i];
|
|
80
|
-
if (
|
|
72
|
+
if (dataValue.statusCode.isGoodish()) {
|
|
81
73
|
nbGood++;
|
|
82
74
|
}
|
|
83
75
|
if (isUncertain(dataValue.statusCode)) {
|
|
84
76
|
nbUncertain++;
|
|
85
77
|
}
|
|
86
|
-
if (
|
|
78
|
+
if (dataValue.statusCode.isBad()) {
|
|
87
79
|
nbBad++;
|
|
88
80
|
}
|
|
89
81
|
const currentStatus = a(dataValue.statusCode, options);
|
package/source/common.ts
CHANGED
|
@@ -9,7 +9,7 @@ import { StatusCode, StatusCodes } from "node-opcua-status-code";
|
|
|
9
9
|
import { coerceNodeId } from "node-opcua-nodeid";
|
|
10
10
|
|
|
11
11
|
import { getAggregateConfiguration } from "./aggregates";
|
|
12
|
-
import { getInterval, Interval, AggregateConfigurationOptionsEx
|
|
12
|
+
import { getInterval, Interval, AggregateConfigurationOptionsEx } from "./interval";
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* @internal
|
package/source/count.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { extraStatusCodeBits, StatusCode, StatusCodes } from "node-opcua-status-
|
|
|
4
4
|
import { DataType } from "node-opcua-variant";
|
|
5
5
|
|
|
6
6
|
import { getAggregateData } from "./common";
|
|
7
|
-
import { Interval, AggregateConfigurationOptions,
|
|
7
|
+
import { Interval, AggregateConfigurationOptions, isUncertain } from "./interval";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* The Count Aggregate retrieves a count of all the raw values within an interval.
|
|
@@ -25,18 +25,18 @@ function calculateCountValue(interval: Interval, options: AggregateConfiguration
|
|
|
25
25
|
let goodDuration = 0;
|
|
26
26
|
for (let i = indexStart; i < indexStart + interval.count; i++) {
|
|
27
27
|
const dataValue = interval.dataValues[i];
|
|
28
|
-
if (dataValue.statusCode
|
|
28
|
+
if (dataValue.statusCode.equals(StatusCodes.BadNoData)) {
|
|
29
29
|
isPartial = true;
|
|
30
30
|
continue;
|
|
31
31
|
}
|
|
32
32
|
const regionDuration = interval.regionDuration(i);
|
|
33
|
-
if (
|
|
33
|
+
if (dataValue.statusCode.isBad()) {
|
|
34
34
|
nbBad++;
|
|
35
35
|
badDuration += regionDuration;
|
|
36
36
|
} else if (isUncertain(dataValue.statusCode)) {
|
|
37
37
|
nbUncertain++;
|
|
38
38
|
uncertainDuration += regionDuration;
|
|
39
|
-
} else if (
|
|
39
|
+
} else if (dataValue.statusCode.isGoodish()) {
|
|
40
40
|
nbGood++;
|
|
41
41
|
goodDuration += regionDuration;
|
|
42
42
|
}
|
package/source/duration_bad.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { DataType } from "node-opcua-variant";
|
|
|
4
4
|
import { StatusCodes } from "node-opcua-status-code";
|
|
5
5
|
|
|
6
6
|
import { getAggregateData } from "./common";
|
|
7
|
-
import { Interval, AggregateConfigurationOptions
|
|
7
|
+
import { Interval, AggregateConfigurationOptions } from "./interval";
|
|
8
8
|
import { calculateBadAndGood } from "./calculate_bad_good";
|
|
9
9
|
|
|
10
10
|
function calculateDurationBad(interval: Interval, options: AggregateConfigurationOptions): DataValue {
|
|
@@ -16,7 +16,7 @@ function calculateDurationBad(interval: Interval, options: AggregateConfiguratio
|
|
|
16
16
|
});
|
|
17
17
|
}
|
|
18
18
|
const value = durationBad;
|
|
19
|
-
if (isGoodish(
|
|
19
|
+
if (statusCode.isGoodish()) {
|
|
20
20
|
return new DataValue({
|
|
21
21
|
sourceTimestamp: interval.startTime,
|
|
22
22
|
statusCode,
|
package/source/duration_good.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { DataType } from "node-opcua-variant";
|
|
|
4
4
|
import { StatusCodes } from "node-opcua-status-code";
|
|
5
5
|
|
|
6
6
|
import { getAggregateData } from "./common";
|
|
7
|
-
import { Interval, AggregateConfigurationOptions
|
|
7
|
+
import { Interval, AggregateConfigurationOptions } from "./interval";
|
|
8
8
|
import { calculateBadAndGood } from "./calculate_bad_good";
|
|
9
9
|
|
|
10
10
|
function calculateDurationGood(interval: Interval, options: AggregateConfigurationOptions): DataValue {
|
|
@@ -16,7 +16,7 @@ function calculateDurationGood(interval: Interval, options: AggregateConfigurati
|
|
|
16
16
|
});
|
|
17
17
|
}
|
|
18
18
|
const value = durationGood;
|
|
19
|
-
if (isGoodish(
|
|
19
|
+
if (statusCode.isGoodish()) {
|
|
20
20
|
return new DataValue({
|
|
21
21
|
sourceTimestamp: interval.startTime,
|
|
22
22
|
statusCode,
|
package/source/interpolate.ts
CHANGED
|
@@ -48,8 +48,6 @@ import {
|
|
|
48
48
|
adjustProcessingOptions,
|
|
49
49
|
AggregateConfigurationOptionsEx,
|
|
50
50
|
Interval,
|
|
51
|
-
isBad,
|
|
52
|
-
isGood
|
|
53
51
|
} from "./interval";
|
|
54
52
|
|
|
55
53
|
/*
|
|
@@ -129,14 +127,14 @@ export function interpolatedValue(interval: Interval, options: AggregateConfigur
|
|
|
129
127
|
const dataValue1 = interval.dataValues[interval.index];
|
|
130
128
|
|
|
131
129
|
// if a non-Bad Raw value exists at the timestamp then it is the bounding value;
|
|
132
|
-
if (!
|
|
130
|
+
if (!dataValue1.statusCode.isBad() && interval.hasRawDataAsStart()) {
|
|
133
131
|
return dataValue1;
|
|
134
132
|
}
|
|
135
133
|
// find the first non-Bad Raw value before the timestamp;
|
|
136
134
|
|
|
137
135
|
// find previous good value
|
|
138
136
|
const before = interval.beforeStartDataValue(bTreatUncertainAsBad);
|
|
139
|
-
if (
|
|
137
|
+
if (before.dataValue.statusCode.isBad()) {
|
|
140
138
|
return new DataValue({
|
|
141
139
|
sourceTimestamp: interval.startTime,
|
|
142
140
|
statusCode: StatusCodes.BadNoData
|
|
@@ -164,7 +162,7 @@ export function interpolatedValue(interval: Interval, options: AggregateConfigur
|
|
|
164
162
|
// x is a value at ‘x’ and Tx is the timestamp associated with Vx.
|
|
165
163
|
const interpolatedDataValue = interpolateValue(before.dataValue, next.dataValue, interval.startTime);
|
|
166
164
|
|
|
167
|
-
if (before.index + 1 < next.index || !
|
|
165
|
+
if (before.index + 1 < next.index || !next.dataValue.statusCode.isGood() || !before.dataValue.statusCode.isGood()) {
|
|
168
166
|
// tslint:disable:no-bitwise
|
|
169
167
|
// some bad data exist in between = change status code
|
|
170
168
|
const mask = 0x0000ffffff;
|
package/source/interval.ts
CHANGED
|
@@ -9,28 +9,18 @@ export { AggregateConfigurationOptions } from "node-opcua-types";
|
|
|
9
9
|
export interface AggregateConfigurationOptionsEx extends AggregateConfigurationOptions {
|
|
10
10
|
stepped?: boolean;
|
|
11
11
|
}
|
|
12
|
-
|
|
13
|
-
return statusCode.value < 0x40000000;
|
|
14
|
-
}
|
|
12
|
+
|
|
15
13
|
|
|
16
14
|
export function isGoodish2(statusCode: StatusCode, { treatUncertainAsBad }: { treatUncertainAsBad?: boolean }): boolean {
|
|
17
|
-
if (isGoodish(
|
|
15
|
+
if (statusCode.isGoodish()) return true;
|
|
18
16
|
if (isUncertain(statusCode)) return !treatUncertainAsBad;
|
|
19
17
|
return false;
|
|
20
18
|
}
|
|
21
19
|
|
|
22
|
-
export function isBad(statusCode: StatusCode): boolean {
|
|
23
|
-
return statusCode.value >= 0x80000000;
|
|
24
|
-
}
|
|
25
20
|
|
|
26
21
|
export function isUncertain(statusCode: StatusCode): boolean {
|
|
27
22
|
return (statusCode.value & 0x40000000) === 0x40000000 && statusCode.value !== StatusCodes.BadNoData.value;
|
|
28
23
|
}
|
|
29
|
-
|
|
30
|
-
export function isGood(statusCode: StatusCode): boolean {
|
|
31
|
-
return statusCode.value === 0x0;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
24
|
export interface IntervalOptions {
|
|
35
25
|
startTime: Date;
|
|
36
26
|
dataValues: DataValue[];
|
|
@@ -53,10 +43,10 @@ export function _findGoodDataValueBefore(
|
|
|
53
43
|
index--;
|
|
54
44
|
while (index >= 0) {
|
|
55
45
|
const dataValue1 = dataValues[index];
|
|
56
|
-
if (!bTreatUncertainAsBad && !
|
|
46
|
+
if (!bTreatUncertainAsBad && !dataValue1.statusCode.isBad()) {
|
|
57
47
|
return { index, dataValue: dataValue1 };
|
|
58
48
|
}
|
|
59
|
-
if (bTreatUncertainAsBad &&
|
|
49
|
+
if (bTreatUncertainAsBad && dataValue1.statusCode.isGood()) {
|
|
60
50
|
return { index, dataValue: dataValue1 };
|
|
61
51
|
}
|
|
62
52
|
index -= 1;
|
|
@@ -71,13 +61,13 @@ export function _findGoodDataValueBefore(
|
|
|
71
61
|
export function _findGoodDataValueAfter(dataValues: DataValue[], index: number, bTreatUncertainAsBad: boolean): DataValueWithIndex {
|
|
72
62
|
while (index < dataValues.length) {
|
|
73
63
|
const dataValue1 = dataValues[index];
|
|
74
|
-
if (!bTreatUncertainAsBad && !
|
|
64
|
+
if (!bTreatUncertainAsBad && !dataValue1.statusCode.isBad()) {
|
|
75
65
|
return {
|
|
76
66
|
dataValue: dataValue1,
|
|
77
67
|
index
|
|
78
68
|
};
|
|
79
69
|
}
|
|
80
|
-
if (bTreatUncertainAsBad &&
|
|
70
|
+
if (bTreatUncertainAsBad && dataValue1.statusCode.isGood()) {
|
|
81
71
|
return {
|
|
82
72
|
dataValue: dataValue1,
|
|
83
73
|
index
|
|
@@ -174,7 +164,7 @@ export class Interval {
|
|
|
174
164
|
return e;
|
|
175
165
|
}
|
|
176
166
|
let i = this.dataValues.length - 1;
|
|
177
|
-
while (i >= 0 && this.dataValues[i].statusCode
|
|
167
|
+
while (i >= 0 && this.dataValues[i].statusCode.equals(StatusCodes.BadNoData)) {
|
|
178
168
|
i--;
|
|
179
169
|
}
|
|
180
170
|
if (i < 0) {
|
package/source/minmax.ts
CHANGED
|
@@ -58,7 +58,7 @@ import { StatusCode, StatusCodes } from "node-opcua-status-code";
|
|
|
58
58
|
import { Variant } from "node-opcua-variant";
|
|
59
59
|
|
|
60
60
|
import { getAggregateData } from "./common";
|
|
61
|
-
import { AggregateConfigurationOptions, Interval
|
|
61
|
+
import { AggregateConfigurationOptions, Interval } from "./interval";
|
|
62
62
|
|
|
63
63
|
// eslint-disable-next-line max-statements
|
|
64
64
|
function calculateIntervalMinOrMaxValue(
|
|
@@ -81,12 +81,12 @@ function calculateIntervalMinOrMaxValue(
|
|
|
81
81
|
for (let i = indexStart; i < indexStart + interval.count; i++) {
|
|
82
82
|
const dataValue = interval.dataValues[i];
|
|
83
83
|
|
|
84
|
-
if (dataValue.statusCode
|
|
84
|
+
if (dataValue.statusCode.equals(StatusCodes.BadNoData)) {
|
|
85
85
|
isPartial = true;
|
|
86
86
|
continue;
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
if (!
|
|
89
|
+
if (!dataValue.statusCode.isGood()) {
|
|
90
90
|
hasBad = true;
|
|
91
91
|
continue;
|
|
92
92
|
}
|
package/source/percent_bad.ts
CHANGED
|
@@ -3,13 +3,13 @@ import { DataValue } from "node-opcua-data-value";
|
|
|
3
3
|
import { DataType } from "node-opcua-variant";
|
|
4
4
|
|
|
5
5
|
import { getAggregateData } from "./common";
|
|
6
|
-
import { Interval, AggregateConfigurationOptions
|
|
6
|
+
import { Interval, AggregateConfigurationOptions } from "./interval";
|
|
7
7
|
import { calculateBadAndGood } from "./calculate_bad_good";
|
|
8
8
|
|
|
9
9
|
function calculatePercentBad(interval: Interval, options: AggregateConfigurationOptions): DataValue {
|
|
10
10
|
const { percentBad, statusCode } = calculateBadAndGood(interval, options);
|
|
11
11
|
const value = percentBad;
|
|
12
|
-
if (isGoodish(
|
|
12
|
+
if (statusCode.isGoodish()) {
|
|
13
13
|
return new DataValue({
|
|
14
14
|
sourceTimestamp: interval.startTime,
|
|
15
15
|
statusCode,
|
package/source/percent_good.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { Variant, DataType } from "node-opcua-variant";
|
|
|
4
4
|
import { extraStatusCodeBits, StatusCode, StatusCodes } from "node-opcua-status-code";
|
|
5
5
|
|
|
6
6
|
import { getAggregateData } from "./common";
|
|
7
|
-
import { Interval, AggregateConfigurationOptions
|
|
7
|
+
import { Interval, AggregateConfigurationOptions } from "./interval";
|
|
8
8
|
import { calculateBadAndGood } from "./calculate_bad_good";
|
|
9
9
|
|
|
10
10
|
function calculatePercentGood(interval: Interval, options: AggregateConfigurationOptions): DataValue {
|
|
@@ -30,7 +30,7 @@ function calculatePercentGood(interval: Interval, options: AggregateConfiguratio
|
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
32
|
const value = percentGood;
|
|
33
|
-
if (isGoodish(
|
|
33
|
+
if (statusCode.isGoodish()) {
|
|
34
34
|
return new DataValue({
|
|
35
35
|
sourceTimestamp: interval.startTime,
|
|
36
36
|
statusCode,
|