UNPKG

homebridge-virtual-accessories

Version:
53 lines 2.45 kB
/* eslint-disable curly */ import { SecuritySystemArmedMode, SecuritySystemState } from '../schema.js'; import { Utils } from '../../utils/utils.js'; /** * */ export class SecuritySystemConfiguration { defaultState; armedModes; armingDelay = 0; errorFields = []; fieldNames = Utils.proxiedPropertiesOf(this); isValid(prefix) { const isValidDefaultState = (Utils.required(this.defaultState) && SecuritySystemState.States.includes(this.defaultState) && this.armedModesContainsDefaultState()); const isValidArmedModes = (Utils.notEmpty(this.armedModes)); const isValidArmingDelay = (Utils.required(this.armingDelay) && (this.armingDelay >= 0 && this.armingDelay <= 60)); // Store fields failing validation if (!isValidDefaultState) this.errorFields.push(prefix + '.' + this.fieldNames.defaultState); if (!isValidArmedModes) this.errorFields.push(prefix + '.' + this.fieldNames.armedModes); if (!isValidArmingDelay) this.errorFields.push(prefix + '.' + this.fieldNames.armingDelay); return [ (isValidDefaultState && isValidArmedModes && isValidArmingDelay), this.errorFields, ]; } // TODO: remove this method once ng-formworks feature 'Feature request: Implement multi select using oneOf as set of checkboxes' // (https://github.com/zahmo/ng-formworks/issues/26) is complete /** * This method is necessary becasue the values for * states are: 'disarmed', 'armedaway', 'armednight', 'armedstay' * while values for * armed modes are: 'Away', 'Night', 'Home' */ armedModesContainsDefaultState() { let armedModesContainsDefaultState = false; if ((this.defaultState === SecuritySystemState.ArmedAway && this.armedModes.includes(SecuritySystemArmedMode.ArmedAway)) || (this.defaultState === SecuritySystemState.ArmedNight && this.armedModes.includes(SecuritySystemArmedMode.ArmedNight)) || (this.defaultState === SecuritySystemState.ArmedStay && this.armedModes.includes(SecuritySystemArmedMode.ArmedStay)) || (this.defaultState === SecuritySystemState.Disarmed)) { armedModesContainsDefaultState = true; } return armedModesContainsDefaultState; } } //# sourceMappingURL=configurationSecuritySystem.js.map