node-opcua-aggregates 2.77.0 → 2.78.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.
Files changed (43) hide show
  1. package/dist/aggregates.d.ts +19 -4
  2. package/dist/aggregates.js +95 -20
  3. package/dist/aggregates.js.map +1 -1
  4. package/dist/calculate_bad_good.d.ts +10 -0
  5. package/dist/calculate_bad_good.js +125 -0
  6. package/dist/calculate_bad_good.js.map +1 -0
  7. package/dist/common.js +1 -7
  8. package/dist/common.js.map +1 -1
  9. package/dist/count.d.ts +3 -0
  10. package/dist/count.js +87 -0
  11. package/dist/count.js.map +1 -0
  12. package/dist/duration_bad.d.ts +4 -0
  13. package/dist/duration_bad.js +33 -0
  14. package/dist/duration_bad.js.map +1 -0
  15. package/dist/duration_good.d.ts +4 -0
  16. package/dist/duration_good.js +33 -0
  17. package/dist/duration_good.js.map +1 -0
  18. package/dist/index.d.ts +1 -1
  19. package/dist/index.js +3 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/interval.d.ts +17 -1
  22. package/dist/interval.js +52 -5
  23. package/dist/interval.js.map +1 -1
  24. package/dist/percent_bad.d.ts +4 -0
  25. package/dist/percent_bad.js +26 -0
  26. package/dist/percent_bad.js.map +1 -0
  27. package/dist/percent_good.d.ts +7 -0
  28. package/dist/percent_good.js +50 -0
  29. package/dist/percent_good.js.map +1 -0
  30. package/dist/read_processed_details.js +44 -19
  31. package/dist/read_processed_details.js.map +1 -1
  32. package/package.json +10 -10
  33. package/source/aggregates.ts +118 -62
  34. package/source/calculate_bad_good.ts +148 -0
  35. package/source/common.ts +3 -9
  36. package/source/count.ts +98 -0
  37. package/source/duration_bad.ts +37 -0
  38. package/source/duration_good.ts +37 -0
  39. package/source/index.ts +7 -1
  40. package/source/interval.ts +53 -4
  41. package/source/percent_bad.ts +30 -0
  42. package/source/percent_good.ts +55 -0
  43. package/source/read_processed_details.ts +44 -23
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.AggregateFunction = exports.getAggregateConfiguration = exports.installAggregateConfigurationOptions = exports.addAggregateSupport = void 0;
17
+ exports.AggregateFunction = exports.addAggregateFunctionSupport = exports.addAggregateStandardFunctionSupport = exports.getAggregateConfiguration = exports.installAggregateConfigurationOptions = exports.addAggregateSupport = void 0;
18
18
  /**
19
19
  * @module node-opca-aggregates
20
20
  */
@@ -22,6 +22,8 @@ var aggregates_1 = require("./aggregates");
22
22
  Object.defineProperty(exports, "addAggregateSupport", { enumerable: true, get: function () { return aggregates_1.addAggregateSupport; } });
23
23
  Object.defineProperty(exports, "installAggregateConfigurationOptions", { enumerable: true, get: function () { return aggregates_1.installAggregateConfigurationOptions; } });
24
24
  Object.defineProperty(exports, "getAggregateConfiguration", { enumerable: true, get: function () { return aggregates_1.getAggregateConfiguration; } });
25
+ Object.defineProperty(exports, "addAggregateStandardFunctionSupport", { enumerable: true, get: function () { return aggregates_1.addAggregateStandardFunctionSupport; } });
26
+ Object.defineProperty(exports, "addAggregateFunctionSupport", { enumerable: true, get: function () { return aggregates_1.addAggregateFunctionSupport; } });
25
27
  __exportStar(require("./interpolate"), exports);
26
28
  __exportStar(require("./minmax"), exports);
27
29
  __exportStar(require("./interval"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;;GAEG;AACH,2CAAoH;AAA3G,iHAAA,mBAAmB,OAAA;AAAE,kIAAA,oCAAoC,OAAA;AAAE,uHAAA,yBAAyB,OAAA;AAC7F,gDAA8B;AAC9B,2CAAyB;AACzB,6CAA2B;AAC3B,2CAAyB;AACzB,4CAA0B;AAC1B,2DAAyC;AACzC,6DAAyD;AAAhD,yHAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;;GAEG;AACH,2CAMsB;AALlB,iHAAA,mBAAmB,OAAA;AACnB,kIAAA,oCAAoC,OAAA;AACpC,uHAAA,yBAAyB,OAAA;AACzB,iIAAA,mCAAmC,OAAA;AACnC,yHAAA,2BAA2B,OAAA;AAE/B,gDAA8B;AAC9B,2CAAyB;AACzB,6CAA2B;AAC3B,2CAAyB;AACzB,4CAA0B;AAC1B,2DAAyC;AACzC,6DAAyD;AAAhD,yHAAA,iBAAiB,OAAA"}
@@ -9,7 +9,11 @@ export interface AggregateConfigurationOptionsEx extends AggregateConfigurationO
9
9
  stepped?: boolean;
10
10
  }
11
11
  export declare function isGoodish(statusCode: StatusCode): boolean;
12
+ export declare function isGoodish2(statusCode: StatusCode, { treatUncertainAsBad }: {
13
+ treatUncertainAsBad?: boolean;
14
+ }): boolean;
12
15
  export declare function isBad(statusCode: StatusCode): boolean;
16
+ export declare function isUncertain(statusCode: StatusCode): boolean;
13
17
  export declare function isGood(statusCode: StatusCode): boolean;
14
18
  export interface IntervalOptions {
15
19
  startTime: Date;
@@ -17,6 +21,7 @@ export interface IntervalOptions {
17
21
  index: number;
18
22
  count: number;
19
23
  isPartial: boolean;
24
+ processingInterval: number;
20
25
  }
21
26
  interface DataValueWithIndex {
22
27
  index: number;
@@ -31,6 +36,7 @@ export declare class Interval {
31
36
  index: number;
32
37
  count: number;
33
38
  isPartial: boolean;
39
+ processingInterval: number;
34
40
  constructor(options: IntervalOptions);
35
41
  getPercentBad(): number;
36
42
  /**
@@ -45,5 +51,15 @@ export declare class Interval {
45
51
  beforeStartDataValue(bTreatUncertainAsBad: boolean): DataValueWithIndex;
46
52
  nextStartDataValue(bTreatUncertainAsBad: boolean): DataValueWithIndex;
47
53
  toString(): string;
54
+ getEffectiveEndTime(): number;
55
+ /**
56
+ *
57
+ * @returns the interval duration
58
+ */
59
+ duration(): number;
60
+ /**
61
+ * returns the region duration starting at index and finishing at index+1 or end limit of the interval
62
+ */
63
+ regionDuration(index: number): number;
48
64
  }
49
- export declare function getInterval(startTime: Date, duration: number, indexHint: number, dataValues: DataValue[]): Interval;
65
+ export declare function getInterval(startTime: Date, processingInterval: number, indexHint: number, dataValues: DataValue[]): Interval;
package/dist/interval.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getInterval = exports.Interval = exports.adjustProcessingOptions = exports._findGoodDataValueAfter = exports._findGoodDataValueBefore = exports.isGood = exports.isBad = exports.isGoodish = void 0;
3
+ exports.getInterval = exports.Interval = exports.adjustProcessingOptions = exports._findGoodDataValueAfter = exports._findGoodDataValueBefore = exports.isGood = exports.isUncertain = exports.isBad = exports.isGoodish2 = exports.isGoodish = void 0;
4
4
  /**
5
5
  * @module node-opca-aggregates
6
6
  */
@@ -10,10 +10,22 @@ function isGoodish(statusCode) {
10
10
  return statusCode.value < 0x40000000;
11
11
  }
12
12
  exports.isGoodish = isGoodish;
13
+ function isGoodish2(statusCode, { treatUncertainAsBad }) {
14
+ if (isGoodish(statusCode))
15
+ return true;
16
+ if (isUncertain(statusCode))
17
+ return !treatUncertainAsBad;
18
+ return false;
19
+ }
20
+ exports.isGoodish2 = isGoodish2;
13
21
  function isBad(statusCode) {
14
22
  return statusCode.value >= 0x80000000;
15
23
  }
16
24
  exports.isBad = isBad;
25
+ function isUncertain(statusCode) {
26
+ return (statusCode.value & 0x40000000) === 0x40000000 && statusCode.value !== node_opcua_status_code_1.StatusCodes.BadNoData.value;
27
+ }
28
+ exports.isUncertain = isUncertain;
17
29
  function isGood(statusCode) {
18
30
  return statusCode.value === 0x0;
19
31
  }
@@ -82,6 +94,7 @@ class Interval {
82
94
  this.index = options.index;
83
95
  this.count = options.count;
84
96
  this.isPartial = options.isPartial;
97
+ this.processingInterval = options.processingInterval;
85
98
  }
86
99
  getPercentBad() {
87
100
  return 100;
@@ -124,9 +137,42 @@ class Interval {
124
137
  }
125
138
  return str;
126
139
  }
140
+ getEffectiveEndTime() {
141
+ const e = this.startTime.getTime() + this.processingInterval;
142
+ if (!this.dataValues || this.dataValues.length === 0) {
143
+ return e;
144
+ }
145
+ let i = this.dataValues.length - 1;
146
+ while (i >= 0 && this.dataValues[i].statusCode === node_opcua_status_code_1.StatusCodes.BadNoData) {
147
+ i--;
148
+ }
149
+ if (i < 0) {
150
+ return e;
151
+ }
152
+ const lastTimestamp = this.dataValues[i].sourceTimestamp;
153
+ return Math.min(e, lastTimestamp.getTime() + 1);
154
+ }
155
+ /**
156
+ *
157
+ * @returns the interval duration
158
+ */
159
+ duration() {
160
+ const t1 = this.dataValues[this.index].sourceTimestamp.getTime();
161
+ const e = this.getEffectiveEndTime();
162
+ return e - t1;
163
+ }
164
+ /**
165
+ * returns the region duration starting at index and finishing at index+1 or end limit of the interval
166
+ */
167
+ regionDuration(index) {
168
+ const t1 = this.dataValues[index].sourceTimestamp.getTime();
169
+ const e = this.getEffectiveEndTime();
170
+ const t2 = index < this.dataValues.length - 1 ? Math.min(this.dataValues[index + 1].sourceTimestamp.getTime(), e) : e;
171
+ return t2 - t1;
172
+ }
127
173
  }
128
174
  exports.Interval = Interval;
129
- function getInterval(startTime, duration, indexHint, dataValues) {
175
+ function getInterval(startTime, processingInterval, indexHint, dataValues) {
130
176
  let count = 0;
131
177
  let index = -1;
132
178
  for (let i = indexHint; i < dataValues.length; i++) {
@@ -138,7 +184,7 @@ function getInterval(startTime, duration, indexHint, dataValues) {
138
184
  }
139
185
  if (index >= 0) {
140
186
  for (let i = index; i < dataValues.length; i++) {
141
- if (dataValues[i].sourceTimestamp.getTime() >= startTime.getTime() + duration) {
187
+ if (dataValues[i].sourceTimestamp.getTime() >= startTime.getTime() + processingInterval) {
142
188
  break;
143
189
  }
144
190
  count++;
@@ -147,7 +193,7 @@ function getInterval(startTime, duration, indexHint, dataValues) {
147
193
  // check if interval is complete or partial (end or start)
148
194
  let isPartial = false;
149
195
  if (index + count >= dataValues.length &&
150
- dataValues[dataValues.length - 1].sourceTimestamp.getTime() < startTime.getTime() + duration) {
196
+ dataValues[dataValues.length - 1].sourceTimestamp.getTime() < startTime.getTime() + processingInterval) {
151
197
  isPartial = true;
152
198
  }
153
199
  if (index <= 0 && dataValues[0].sourceTimestamp.getTime() > startTime.getTime()) {
@@ -158,7 +204,8 @@ function getInterval(startTime, duration, indexHint, dataValues) {
158
204
  dataValues,
159
205
  index,
160
206
  isPartial,
161
- startTime
207
+ startTime,
208
+ processingInterval
162
209
  });
163
210
  }
164
211
  exports.getInterval = getInterval;
@@ -1 +1 @@
1
- {"version":3,"file":"interval.js","sourceRoot":"","sources":["../source/interval.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interval.js","sourceRoot":"","sources":["../source/interval.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { UAVariable } from "node-opcua-address-space";
2
+ import { DataValue } from "node-opcua-data-value";
3
+ /**Retrieve the percentage of data (0 to 100) in the interval which has Bad StatusCode. */
4
+ export declare function getPercentBadData(node: UAVariable, processingInterval: number, startDate: Date, endDate: Date, callback: (err: Error | null, dataValues?: DataValue[]) => void): void;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPercentBadData = void 0;
4
+ const node_opcua_data_value_1 = require("node-opcua-data-value");
5
+ const node_opcua_variant_1 = require("node-opcua-variant");
6
+ const common_1 = require("./common");
7
+ const interval_1 = require("./interval");
8
+ const calculate_bad_good_1 = require("./calculate_bad_good");
9
+ function calculatePercentBad(interval, options) {
10
+ const { percentBad, statusCode } = (0, calculate_bad_good_1.calculateBadAndGood)(interval, options);
11
+ const value = percentBad;
12
+ if ((0, interval_1.isGoodish)(statusCode)) {
13
+ return new node_opcua_data_value_1.DataValue({
14
+ sourceTimestamp: interval.startTime,
15
+ statusCode,
16
+ value: { dataType: node_opcua_variant_1.DataType.Double, value }
17
+ });
18
+ }
19
+ return new node_opcua_data_value_1.DataValue({ sourceTimestamp: interval.startTime, statusCode, value: { dataType: node_opcua_variant_1.DataType.Null } });
20
+ }
21
+ /**Retrieve the percentage of data (0 to 100) in the interval which has Bad StatusCode. */
22
+ function getPercentBadData(node, processingInterval, startDate, endDate, callback) {
23
+ (0, common_1.getAggregateData)(node, processingInterval, startDate, endDate, calculatePercentBad, callback);
24
+ }
25
+ exports.getPercentBadData = getPercentBadData;
26
+ //# sourceMappingURL=percent_bad.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"percent_bad.js","sourceRoot":"","sources":["../source/percent_bad.ts"],"names":[],"mappings":";;;AACA,iEAAkD;AAClD,2DAA8C;AAE9C,qCAA4C;AAC5C,yCAAgF;AAChF,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,IAAA,oBAAS,EAAC,UAAU,CAAC,EAAE;QACvB,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"}
@@ -0,0 +1,7 @@
1
+ import { UAVariable } from "node-opcua-address-space";
2
+ import { DataValue } from "node-opcua-data-value";
3
+ /**
4
+ *
5
+ * @param node Retrieve the percentage of data (0 to 100) in the interval which has Good StatusCode.
6
+ */
7
+ export declare function getPercentGoodData(node: UAVariable, processingInterval: number, startDate: Date, endDate: Date, callback: (err: Error | null, dataValues?: DataValue[]) => void): void;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPercentGoodData = void 0;
4
+ const node_opcua_data_value_1 = require("node-opcua-data-value");
5
+ const node_opcua_variant_1 = require("node-opcua-variant");
6
+ const node_opcua_status_code_1 = require("node-opcua-status-code");
7
+ const common_1 = require("./common");
8
+ const interval_1 = require("./interval");
9
+ const calculate_bad_good_1 = require("./calculate_bad_good");
10
+ function calculatePercentGood(interval, options) {
11
+ //
12
+ // The PercentGood Aggregate defined in Table 44 performs the following calculation:
13
+ //
14
+ // PercentGood = DurationGood / ProcessingInterval x 100
15
+ // where:
16
+ //
17
+ // DurationGood is the result from the DurationGood *Aggregate*, calculated using the *ProcessingInterval* supplied to *PercentGood* call.
18
+ // ProcessingInterval is the duration of interval.
19
+ // If the last interval is a partial interval then the duration of the partial interval is used in the
20
+ // calculation.
21
+ // Each Aggregate is returned with timestamp of the start of the interval. StatusCodes are Good, Calculated.
22
+ //
23
+ const { percentGood, statusCode } = (0, calculate_bad_good_1.calculateBadAndGood)(interval, options);
24
+ if (percentGood < 0) {
25
+ // special case ! to indicate that no good pointhas been found in the interval
26
+ return new node_opcua_data_value_1.DataValue({
27
+ sourceTimestamp: interval.startTime,
28
+ statusCode: node_opcua_status_code_1.StatusCodes.Bad,
29
+ value: { dataType: node_opcua_variant_1.DataType.Null }
30
+ });
31
+ }
32
+ const value = percentGood;
33
+ if ((0, interval_1.isGoodish)(statusCode)) {
34
+ return new node_opcua_data_value_1.DataValue({
35
+ sourceTimestamp: interval.startTime,
36
+ statusCode,
37
+ value: { dataType: node_opcua_variant_1.DataType.Double, value }
38
+ });
39
+ }
40
+ return new node_opcua_data_value_1.DataValue({ sourceTimestamp: interval.startTime, statusCode, value: { dataType: node_opcua_variant_1.DataType.Null } });
41
+ }
42
+ /**
43
+ *
44
+ * @param node Retrieve the percentage of data (0 to 100) in the interval which has Good StatusCode.
45
+ */
46
+ function getPercentGoodData(node, processingInterval, startDate, endDate, callback) {
47
+ (0, common_1.getAggregateData)(node, processingInterval, startDate, endDate, calculatePercentGood, callback);
48
+ }
49
+ exports.getPercentGoodData = getPercentGoodData;
50
+ //# sourceMappingURL=percent_good.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"percent_good.js","sourceRoot":"","sources":["../source/percent_good.ts"],"names":[],"mappings":";;;AACA,iEAAkD;AAClD,2DAAuD;AACvD,mEAAsF;AAEtF,qCAA4C;AAC5C,yCAA4G;AAC5G,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,IAAA,oBAAS,EAAC,UAAU,CAAC,EAAE;QACvB,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"}
@@ -7,6 +7,11 @@ const node_opcua_service_history_1 = require("node-opcua-service-history");
7
7
  const minmax_1 = require("./minmax");
8
8
  const interpolate_1 = require("./interpolate");
9
9
  const average_1 = require("./average");
10
+ const count_1 = require("./count");
11
+ const percent_bad_1 = require("./percent_bad");
12
+ const percent_good_1 = require("./percent_good");
13
+ const duration_good_1 = require("./duration_good");
14
+ const duration_bad_1 = require("./duration_bad");
10
15
  function _buildResult(err, dataValues, callback2) {
11
16
  if (err) {
12
17
  return callback2(null, new node_opcua_service_history_1.HistoryReadResult({ statusCode: node_opcua_status_code_1.StatusCodes.BadInternalError }));
@@ -26,27 +31,47 @@ function applyAggregate(variable, processingInterval, startTime, endTime, aggreg
26
31
  const buildResult = (err, dataValues) => {
27
32
  _buildResult(err, dataValues, callback2);
28
33
  };
29
- switch (aggregateType.value) {
30
- case node_opcua_constants_1.AggregateFunction.Minimum:
31
- (0, minmax_1.getMinData)(variable, processingInterval, startTime, endTime, buildResult);
32
- break;
33
- case node_opcua_constants_1.AggregateFunction.Maximum:
34
- (0, minmax_1.getMaxData)(variable, processingInterval, startTime, endTime, buildResult);
35
- break;
36
- case node_opcua_constants_1.AggregateFunction.Interpolative:
37
- (0, interpolate_1.getInterpolatedData)(variable, processingInterval, startTime, endTime, buildResult);
38
- break;
39
- case node_opcua_constants_1.AggregateFunction.Average:
40
- (0, average_1.getAverageData)(variable, processingInterval, startTime, endTime, buildResult);
41
- break;
42
- case node_opcua_constants_1.AggregateFunction.Count:
43
- default:
44
- // todo provide correct implementation
45
- return callback2(null, new node_opcua_service_history_1.HistoryReadResult({ statusCode: node_opcua_status_code_1.StatusCodes.BadAggregateNotSupported }));
34
+ if (aggregateType.namespace === 0) {
35
+ switch (aggregateType.value) {
36
+ case node_opcua_constants_1.AggregateFunction.Minimum:
37
+ (0, minmax_1.getMinData)(variable, processingInterval, startTime, endTime, buildResult);
38
+ break;
39
+ case node_opcua_constants_1.AggregateFunction.Maximum:
40
+ (0, minmax_1.getMaxData)(variable, processingInterval, startTime, endTime, buildResult);
41
+ break;
42
+ case node_opcua_constants_1.AggregateFunction.Interpolative:
43
+ (0, interpolate_1.getInterpolatedData)(variable, processingInterval, startTime, endTime, buildResult);
44
+ break;
45
+ case node_opcua_constants_1.AggregateFunction.Average:
46
+ (0, average_1.getAverageData)(variable, processingInterval, startTime, endTime, buildResult);
47
+ break;
48
+ case node_opcua_constants_1.AggregateFunction.DurationGood:
49
+ (0, duration_good_1.getDurationGoodData)(variable, processingInterval, startTime, endTime, buildResult);
50
+ break;
51
+ case node_opcua_constants_1.AggregateFunction.DurationBad:
52
+ (0, duration_bad_1.getDurationBadData)(variable, processingInterval, startTime, endTime, buildResult);
53
+ break;
54
+ case node_opcua_constants_1.AggregateFunction.PercentBad:
55
+ (0, percent_bad_1.getPercentBadData)(variable, processingInterval, startTime, endTime, buildResult);
56
+ break;
57
+ case node_opcua_constants_1.AggregateFunction.PercentGood:
58
+ (0, percent_good_1.getPercentGoodData)(variable, processingInterval, startTime, endTime, buildResult);
59
+ break;
60
+ case node_opcua_constants_1.AggregateFunction.Count:
61
+ (0, count_1.getCountData)(variable, processingInterval, startTime, endTime, buildResult);
62
+ break;
63
+ default:
64
+ // todo provide correct implementation
65
+ return callback2(null, new node_opcua_service_history_1.HistoryReadResult({ statusCode: node_opcua_status_code_1.StatusCodes.BadAggregateNotSupported }));
66
+ }
67
+ }
68
+ else {
69
+ // custom aggregate added by some companion specification
70
+ // to do
71
+ return callback2(null, new node_opcua_service_history_1.HistoryReadResult({ statusCode: node_opcua_status_code_1.StatusCodes.BadAggregateNotSupported }));
46
72
  }
47
73
  }
48
74
  function readProcessedDetails(variable, context, historyReadDetails, indexRange, dataEncoding, continuationData, callback) {
49
- var _a;
50
75
  // OPC Unified Architecture, Part 11 27 Release 1.03
51
76
  //
52
77
  // This structure is used to compute Aggregate values, qualities, and timestamps from data in
@@ -110,7 +135,7 @@ function readProcessedDetails(variable, context, historyReadDetails, indexRange,
110
135
  // starting at startTime and ending at endTime.
111
136
  const processingInterval = historyReadDetails.processingInterval || endTime.getTime() - startTime.getTime();
112
137
  // tslint:disable-next-line: prefer-for-of
113
- if (((_a = historyReadDetails.aggregateType) === null || _a === void 0 ? void 0 : _a.length) !== 1) {
138
+ if (!historyReadDetails.aggregateType || historyReadDetails.aggregateType.length !== 1) {
114
139
  return callback(null, new node_opcua_service_history_1.HistoryReadResult({ statusCode: node_opcua_status_code_1.StatusCodes.BadInternalError }));
115
140
  }
116
141
  return applyAggregate(variable, processingInterval, startTime, endTime, aggregateTypes[0], callback);
@@ -1 +1 @@
1
- {"version":3,"file":"read_processed_details.js","sourceRoot":"","sources":["../source/read_processed_details.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read_processed_details.js","sourceRoot":"","sources":["../source/read_processed_details.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-opcua-aggregates",
3
- "version": "2.77.0",
3
+ "version": "2.78.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,19 +12,19 @@
12
12
  "clean": "npx rimraf node_modules dist *.tsbuildinfo"
13
13
  },
14
14
  "dependencies": {
15
- "node-opcua-address-space": "2.77.0",
15
+ "node-opcua-address-space": "2.78.0",
16
16
  "node-opcua-assert": "2.77.0",
17
17
  "node-opcua-constants": "2.77.0",
18
- "node-opcua-data-model": "2.77.0",
19
- "node-opcua-data-value": "2.77.0",
18
+ "node-opcua-data-model": "2.78.0",
19
+ "node-opcua-data-value": "2.78.0",
20
20
  "node-opcua-nodeid": "2.77.0",
21
- "node-opcua-numeric-range": "2.77.0",
22
- "node-opcua-server": "2.77.0",
23
- "node-opcua-service-history": "2.77.0",
21
+ "node-opcua-numeric-range": "2.78.0",
22
+ "node-opcua-server": "2.78.0",
23
+ "node-opcua-service-history": "2.78.0",
24
24
  "node-opcua-status-code": "2.77.0",
25
- "node-opcua-types": "2.77.0",
25
+ "node-opcua-types": "2.78.0",
26
26
  "node-opcua-utils": "2.77.0",
27
- "node-opcua-variant": "2.77.0"
27
+ "node-opcua-variant": "2.78.0"
28
28
  },
29
29
  "devDependencies": {
30
30
  "node-opcua-leak-detector": "2.77.0",
@@ -46,5 +46,5 @@
46
46
  "internet of things"
47
47
  ],
48
48
  "homepage": "http://node-opcua.github.io/",
49
- "gitHead": "5c8d45772d786fa4ba59369dd26679353ab5482b"
49
+ "gitHead": "31c6eee3c51f52427584364fff2fdb07bbac65be"
50
50
  }