UNPKG

ravendb

Version:
126 lines 4.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TypedTimeSeriesRollupEntry = void 0; const TimeSeriesValuesHelper_js_1 = require("./TimeSeriesValuesHelper.js"); class TypedTimeSeriesRollupEntry { _clazz; timestamp; tag; rollup; _first; _last; _max; _min; _sum; _count; _average; constructor(clazz, timestamp) { this._clazz = clazz; this.rollup = true; this.timestamp = timestamp; } _createInstance() { return new this._clazz(); } get max() { if (!this._max) { this._max = this._createInstance(); } return this._max; } get min() { if (!this._min) { this._min = this._createInstance(); } return this._min; } get count() { if (!this._count) { this._count = this._createInstance(); } return this._count; } get first() { if (!this._first) { this._first = this._createInstance(); } return this._first; } get last() { if (!this._last) { this._last = this._createInstance(); } return this._last; } get sum() { if (!this._sum) { this._sum = this._createInstance(); } return this._sum; } get average() { if (this._average) { return this._average; } const valuesCount = TimeSeriesValuesHelper_js_1.TimeSeriesValuesHelper.getFieldsMapping(this._clazz).length; const sums = TimeSeriesValuesHelper_js_1.TimeSeriesValuesHelper.getValues(this._clazz, this._sum); const counts = TimeSeriesValuesHelper_js_1.TimeSeriesValuesHelper.getValues(this._clazz, this._count); const averages = new Array(valuesCount); for (let i = 0; i < valuesCount; i++) { if (!counts[i]) { averages[i] = Number.NaN; } else { averages[i] = sums[i] / counts[i]; } } this._average = TimeSeriesValuesHelper_js_1.TimeSeriesValuesHelper.setFields(this._clazz, averages); return this._average; } getValuesFromMembers() { const valuesCount = TimeSeriesValuesHelper_js_1.TimeSeriesValuesHelper.getFieldsMapping(this._clazz).length; const result = new Array(valuesCount * 6); this._assignRollup(result, this._first, 0); this._assignRollup(result, this._last, 1); this._assignRollup(result, this._min, 2); this._assignRollup(result, this._max, 3); this._assignRollup(result, this._sum, 4); this._assignRollup(result, this._count, 5); return result; } _assignRollup(target, source, offset) { if (source) { const values = TimeSeriesValuesHelper_js_1.TimeSeriesValuesHelper.getValues(this._clazz, source); if (values) { for (let i = 0; i < values.length; i++) { target[i * 6 + offset] = values[i]; } } } } static fromEntry(entry, clazz) { const result = new TypedTimeSeriesRollupEntry(clazz, entry.timestamp); result.rollup = true; result.tag = entry.tag; const values = entry.values; result._first = TimeSeriesValuesHelper_js_1.TimeSeriesValuesHelper.setFields(clazz, TypedTimeSeriesRollupEntry._extractValues(values, 0)); result._last = TimeSeriesValuesHelper_js_1.TimeSeriesValuesHelper.setFields(clazz, TypedTimeSeriesRollupEntry._extractValues(values, 1)); result._min = TimeSeriesValuesHelper_js_1.TimeSeriesValuesHelper.setFields(clazz, TypedTimeSeriesRollupEntry._extractValues(values, 2)); result._max = TimeSeriesValuesHelper_js_1.TimeSeriesValuesHelper.setFields(clazz, TypedTimeSeriesRollupEntry._extractValues(values, 3)); result._sum = TimeSeriesValuesHelper_js_1.TimeSeriesValuesHelper.setFields(clazz, TypedTimeSeriesRollupEntry._extractValues(values, 4)); result._count = TimeSeriesValuesHelper_js_1.TimeSeriesValuesHelper.setFields(clazz, TypedTimeSeriesRollupEntry._extractValues(values, 5)); return result; } static _extractValues(input, offset) { const length = Math.ceil((input.length - offset) / 6); let idx = 0; const result = new Array(length); while (idx < length) { result[idx] = input[offset + idx * 6]; idx++; } return result; } } exports.TypedTimeSeriesRollupEntry = TypedTimeSeriesRollupEntry; //# sourceMappingURL=TypedTimeSeriesRollupEntry.js.map