UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

49 lines 5.12 kB
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