fluid-meter
Version:
a dependency free library that draws a circular meter where progress is displayed as the amount of liquid on it
110 lines • 3.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Speed = exports.FluidLayerHelper = void 0;
const ColorUtils_1 = require("../../../utils/ColorUtils");
var Speed;
(function (Speed) {
Speed[Speed["SLOW"] = 0] = "SLOW";
Speed[Speed["NORMAL"] = 1] = "NORMAL";
Speed[Speed["FAST"] = 2] = "FAST";
})(Speed || (Speed = {}));
exports.Speed = Speed;
class FluidLayerSettings {
}
Object.defineProperty(FluidLayerSettings, "ANGULAR_SPEED_NORMAL", {
enumerable: true,
configurable: true,
writable: true,
value: Math.PI / 2
});
Object.defineProperty(FluidLayerSettings, "ANGULAR_SPEED_FAST", {
enumerable: true,
configurable: true,
writable: true,
value: Math.PI
});
Object.defineProperty(FluidLayerSettings, "ANGULAR_SPEED_SLOW", {
enumerable: true,
configurable: true,
writable: true,
value: Math.PI / 4
});
Object.defineProperty(FluidLayerSettings, "HORIZONTAL_SPEED_NORMAL", {
enumerable: true,
configurable: true,
writable: true,
value: 55
});
Object.defineProperty(FluidLayerSettings, "HORIZONTAL_SPEED_FAST", {
enumerable: true,
configurable: true,
writable: true,
value: 155
});
Object.defineProperty(FluidLayerSettings, "HORIZONTAL_SPEED_SLOW", {
enumerable: true,
configurable: true,
writable: true,
value: 25
});
class FluidLayerHelper {
static buildFluidLayersFromConfiguration(configuration, meterDiameter) {
// determine values
let waveSpeed = FluidLayerSettings.ANGULAR_SPEED_NORMAL;
let horizontalSpeed = FluidLayerSettings.HORIZONTAL_SPEED_NORMAL;
const frequency = this.calculateFrequency(meterDiameter);
switch (configuration.horizontalSpeed) {
case Speed.FAST:
horizontalSpeed = FluidLayerSettings.HORIZONTAL_SPEED_FAST;
break;
case Speed.SLOW:
horizontalSpeed = FluidLayerSettings.HORIZONTAL_SPEED_SLOW;
break;
default:
horizontalSpeed = FluidLayerSettings.HORIZONTAL_SPEED_NORMAL;
break;
}
switch (configuration.waveSpeed) {
case Speed.FAST:
waveSpeed = FluidLayerSettings.ANGULAR_SPEED_FAST;
break;
case Speed.SLOW:
waveSpeed = FluidLayerSettings.ANGULAR_SPEED_SLOW;
break;
default:
waveSpeed = FluidLayerSettings.ANGULAR_SPEED_NORMAL;
break;
}
const backgroundColor = ColorUtils_1.ColorUtils.pSBC(-0.75, configuration.color || '#ffffff');
const waveAmplitude = this.calculateWaveAmplitude(meterDiameter);
const foreGroundLayer = {
angle: 0,
horizontalPosition: 0,
color: configuration.color || '#ffffff',
frequency: frequency,
waveAmplitude: waveAmplitude,
horizontalSpeed: horizontalSpeed,
waveSpeed: waveSpeed
};
const backgroundLayer = {
angle: 0,
horizontalPosition: 0,
color: backgroundColor
? backgroundColor
: configuration.color || '#ffffff',
frequency: frequency,
waveAmplitude: waveAmplitude,
horizontalSpeed: -horizontalSpeed,
waveSpeed: waveSpeed
};
return [backgroundLayer, foreGroundLayer];
}
static calculateWaveAmplitude(meterDiameter) {
return meterDiameter * 0.021;
}
static calculateFrequency(meterDiameter) {
return meterDiameter / 11;
}
}
exports.FluidLayerHelper = FluidLayerHelper;
//# sourceMappingURL=FluidLayer.js.map