@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
49 lines • 5.12 kB
JavaScript
import { isString } from 'lodash-es';
export class TypedOption {
constructor(category, key, type, defaultValue, value) {
this.category = category;
this.key = key;
this.type = type;
this.defaultValue = defaultValue;
this.value = value;
}
apply(option) {
this.category = option.category;
this.key = option.key;
this.value = option.value;
}
getValue() {
try {
return this.getValueByType();
}
catch (ex) {
return this.defaultValue;
}
}
getValueByType() {
switch (this.type) {
case 'boolean':
return this.value.toLowerCase() === 'true';
case 'number':
return this.parseNumberValue(this.value);
case 'string':
return this.parseStringValue(this.value);
default:
throw new TypeError();
}
}
parseNumberValue(stringValue) {
const value = Number.parseInt(stringValue, 10);
if (typeof value !== 'number' || isNaN(value)) {
throw new Error();
}
return value;
}
parseStringValue(value) {
if (!isString(value)) {
throw new Error();
}
return value;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWQtb3B0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXV0aC1jb25maWd1cmF0aW9uL2Jhc2ljLXNldHRpbmdzL3R5cGVkLW9wdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXJDLE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFlBQ1MsUUFBZ0IsRUFDaEIsR0FBVyxFQUNYLElBQXFDLEVBQ3JDLFlBQXdDLEVBQ3hDLEtBQWM7UUFKZCxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLFFBQUcsR0FBSCxHQUFHLENBQVE7UUFDWCxTQUFJLEdBQUosSUFBSSxDQUFpQztRQUNyQyxpQkFBWSxHQUFaLFlBQVksQ0FBNEI7UUFDeEMsVUFBSyxHQUFMLEtBQUssQ0FBUztJQUNwQixDQUFDO0lBRUosS0FBSyxDQUFDLE1BQXFDO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDL0IsQ0FBQztRQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDWixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFTyxjQUFjO1FBQ3BCLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xCLEtBQUssU0FBUztnQkFDWixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTSxDQUFDO1lBQzdDLEtBQUssUUFBUTtnQkFDWCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0MsS0FBSyxRQUFRO2dCQUNYLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQztnQkFDRSxNQUFNLElBQUksU0FBUyxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxXQUFtQjtRQUMxQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM5QyxNQUFNLElBQUksS0FBSyxFQUFFLENBQUM7UUFDcEIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQWE7UUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNwQixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJU3lzdGVtT3B0aW9uLCBJVGVuYW50T3B0aW9uIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5leHBvcnQgY2xhc3MgVHlwZWRPcHRpb24gaW1wbGVtZW50cyBJU3lzdGVtT3B0aW9uLCBJVGVuYW50T3B0aW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNhdGVnb3J5OiBzdHJpbmcsXG4gICAgcHVibGljIGtleTogc3RyaW5nLFxuICAgIHB1YmxpYyB0eXBlOiAnc3RyaW5nJyB8ICdib29sZWFuJyB8ICdudW1iZXInLFxuICAgIHB1YmxpYyBkZWZhdWx0VmFsdWU/OiBzdHJpbmcgfCBib29sZWFuIHwgbnVtYmVyLFxuICAgIHB1YmxpYyB2YWx1ZT86IHN0cmluZ1xuICApIHt9XG5cbiAgYXBwbHkob3B0aW9uOiBJU3lzdGVtT3B0aW9uIHwgSVRlbmFudE9wdGlvbikge1xuICAgIHRoaXMuY2F0ZWdvcnkgPSBvcHRpb24uY2F0ZWdvcnk7XG4gICAgdGhpcy5rZXkgPSBvcHRpb24ua2V5O1xuICAgIHRoaXMudmFsdWUgPSBvcHRpb24udmFsdWU7XG4gIH1cblxuICBnZXRWYWx1ZSgpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWVCeVR5cGUoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0VmFsdWVCeVR5cGUoKSB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZU51bWJlclZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VTdHJpbmdWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBhcnNlTnVtYmVyVmFsdWUoc3RyaW5nVmFsdWU6IHN0cmluZykge1xuICAgIGNvbnN0IHZhbHVlID0gTnVtYmVyLnBhcnNlSW50KHN0cmluZ1ZhbHVlLCAxMCk7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgfHwgaXNOYU4odmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVN0cmluZ1ZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAoIWlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIl19