90 lines
2.8 KiB
Markdown
90 lines
2.8 KiB
Markdown
# Measurement System Documentation
|
|
|
|
This system provides a flexible way to store, retrieve, and analyze measurement data using a chainable API.
|
|
|
|
## Basic Usage
|
|
|
|
```javascript
|
|
const { MeasurementContainer } = require('./index');
|
|
const container = new MeasurementContainer({ windowSize: 20 });
|
|
|
|
// Set values
|
|
container.type('pressure').variant('measured').position('upstream').value(100).unit('psi');
|
|
|
|
// Get values
|
|
const upstreamPressure = container.type('pressure').variant('measured').position('upstream').getCurrentValue();
|
|
console.log(`Upstream pressure: ${upstreamPressure}`);
|
|
```
|
|
|
|
## Chainable API Methods
|
|
|
|
### Setting Context
|
|
- `type(typeName)` - Set the measurement type (pressure, flow, etc.)
|
|
- `variant(variantName)` - Set the variant (measured, predicted, etc.)
|
|
- `position(positionName)` - Set the position (upstream, downstream, etc.)
|
|
|
|
### Setting Data
|
|
- `value(val, [timestamp])` - Add a value with optional timestamp
|
|
- `unit(unitName)` - Set the measurement unit
|
|
|
|
### Getting Data
|
|
- `get()` - Get the measurement object
|
|
- `getCurrentValue()` - Get the most recent value
|
|
- `getAverage()` - Calculate average of all values
|
|
- `getMin()` - Get minimum value
|
|
- `getMax()` - Get maximum value
|
|
|
|
### Calculations
|
|
- `difference()` - Calculate difference between upstream and downstream positions
|
|
|
|
### Listing Available Data
|
|
- `getTypes()` - Get all measurement types
|
|
- `listVariants()` - List variants for current type
|
|
- `listPositions()` - List positions for current type and variant
|
|
|
|
## Example Workflows
|
|
|
|
### Setting and retrieving values
|
|
```javascript
|
|
// Set a measurement
|
|
container.type('flow')
|
|
.variant('measured')
|
|
.position('upstream')
|
|
.value(120)
|
|
.unit('gpm');
|
|
|
|
// Retrieve the same measurement
|
|
const flow = container.type('flow')
|
|
.variant('measured')
|
|
.position('upstream')
|
|
.getCurrentValue();
|
|
```
|
|
|
|
### Calculating differences
|
|
```javascript
|
|
// Set upstream and downstream measurements
|
|
container.type('pressure').variant('measured').position('upstream').value(100).unit('psi');
|
|
container.type('pressure').variant('measured').position('downstream').value(95).unit('psi');
|
|
|
|
// Calculate the difference
|
|
const diff = container.type('pressure').variant('measured').difference();
|
|
console.log(`Pressure drop: ${diff.currentDiff} ${diff.unit}`);
|
|
```
|
|
|
|
### Working with historical data
|
|
```javascript
|
|
// Add multiple values
|
|
container.type('temperature')
|
|
.variant('measured')
|
|
.position('outlet')
|
|
.value(72)
|
|
.value(74)
|
|
.value(73)
|
|
.unit('F');
|
|
|
|
// Get statistics
|
|
const avg = container.type('temperature').variant('measured').position('outlet').getAverage();
|
|
const min = container.type('temperature').variant('measured').position('outlet').getMin();
|
|
const max = container.type('temperature').variant('measured').position('outlet').getMax();
|
|
```
|