Creation of a Weighed series

This commit is contained in:
Jaap van Ekris 2024-01-09 20:48:00 +01:00 committed by GitHub
parent 5ea6de180b
commit ba2ab13316
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 103 additions and 0 deletions

View File

@ -0,0 +1,103 @@
'use strict'
/*
Open Rowing Monitor, https://github.com/laberning/openrowingmonitor
This creates a series with weights
It allows for determining the Average, Weighed Average, Median, Number of Positive, number of Negative
*/
import { createSeries } from './Series.js'
function createWeighedSeries (maxSeriesLength) {
const dataArray = createSeries(maxSeriesLength)
const weightArray = createSeries(maxSeriesLength)
const weightedArray = createSeries(maxSeriesLength)
function push (value, weight) {
dataArray.push(value)
weightArray.push(weight)
weightedArray.push(value * weight)
}
function length () {
return dataArray.length()
}
function atSeriesBegin () {
return dataArray.atSeriesBegin()
}
function atSeriesEnd () {
return dataArray.atSeriesEnd()
}
function get (position) {
return dataArray.get(position)
}
function numberOfValuesAbove (testedValue) {
return dataArray.numberOfValuesAbove(testedValue)
}
function numberOfValuesEqualOrBelow (testedValue) {
return dataArray.numberOfValuesEqualOrBelow(testedValue)
}
function sum () {
return dataArray.sum()
}
function average () {
return dataArray.average()
}
function weighedAverage () {
if (dataArray.length() > 0 && weightArray.sum() !== 0) {
return (weightedArray.sum() / weightArray.sum())
} else {
return undefined
}
}
function minimum () {
return dataArray.minimum()
}
function maximum () {
return dataArray.maximum()
}
function median () {
return dataArray.median()
}
function series () {
return dataArray.series()
}
function reset () {
dataArray.reset()
weightArray.reset()
weightedArray.reset()
}
return {
push,
length,
atSeriesBegin,
atSeriesEnd,
get,
numberOfValuesAbove,
numberOfValuesEqualOrBelow,
sum,
average,
weighedAverage,
minimum,
maximum,
median,
series,
reset
}
}
export { createWeighedSeries }