@public-ui/components
Version:
Contains all web components that belong to KoliBri - The accessible HTML-Standard.
108 lines (107 loc) • 3.27 kB
JavaScript
/*!
* KoliBri - The accessible HTML-Standard
*/
import { clampedNumberValueProp, highProp, labelProp, lowProp, maxProp, minProp, optimumProp, orientationProp, unitProp } from "../../props";
import { BaseController } from "../base-controller";
import { meterPropsConfig } from "./api";
export class MeterController extends BaseController {
constructor(stateAccess) {
super(stateAccess, meterPropsConfig);
this.meterData = { high: undefined, low: undefined, optimum: undefined };
}
componentWillLoad(props) {
const { high, label, low, max, min, optimum, orientation, unit, value } = props;
this.watchHigh(high);
this.watchLabel(label);
this.watchLow(low);
this.watchMax(max);
this.watchMin(min);
this.watchOptimum(optimum);
this.watchOrientation(orientation);
this.watchUnit(unit);
this.watchValue(value);
this.setState('liveValue', this.getRenderProp('value'));
this.startLiveValueInterval();
}
destroy() {
if (this.interval) {
clearInterval(this.interval);
this.interval = undefined;
}
}
getMeterData() {
return this.meterData;
}
watchHigh(value) {
if (value === undefined) {
this.meterData.high = undefined;
}
else {
highProp.apply(value, (v) => {
this.meterData.high = v;
});
}
}
watchLabel(value) {
labelProp.apply(value, (v) => {
this.setRenderProp('label', v);
});
}
watchLow(value) {
if (value === undefined) {
this.meterData.low = undefined;
}
else {
lowProp.apply(value, (v) => {
this.meterData.low = v;
});
}
}
watchMax(value) {
maxProp.apply(value, (v) => {
this.setRenderProp('max', v);
this.watchValue(this.getRawProp('value'));
});
}
watchMin(value) {
minProp.apply(value, (v) => {
this.setRenderProp('min', v);
this.watchValue(this.getRawProp('value'));
});
}
watchOptimum(value) {
if (value === undefined) {
this.meterData.optimum = undefined;
}
else {
optimumProp.apply(value, (v) => {
this.meterData.optimum = v;
});
}
}
watchOrientation(value) {
orientationProp.apply(value, (v) => {
this.setRenderProp('orientation', v);
});
}
watchUnit(value) {
unitProp.apply(value, (v) => {
this.setRenderProp('unit', v);
});
}
watchValue(value) {
this.setRawProp('value', value);
clampedNumberValueProp.apply(value, (v) => {
this.setRenderProp('value', v);
}, { min: this.getRenderProp('min'), max: this.getRenderProp('max') });
}
startLiveValueInterval() {
this.interval = setInterval(() => {
const value = this.getRenderProp('value');
if (this.getState('liveValue') !== value) {
this.setState('liveValue', value);
}
}, 5000);
}
}
//# sourceMappingURL=controller.js.map