UNPKG

homebridge-virtual-accessories

Version:
52 lines 2.07 kB
/* eslint-disable curly */ import { SunEvent } from '../schema.js'; import { Utils } from '../../utils/utils.js'; import { ZoneId } from '@js-joda/core'; import '@js-joda/timezone'; /** * */ export class SunEventsTriggerConfiguration { event; offset = 0; latitude; longitude; zoneId; isDisabled = false; static latitudePattern = '^[-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?)$'; static longitudePattern = '^[-+]?(180(\\.0+)?|((1[0-7]\\d)|([1-9]?\\d))(\\.\\d+)?)$'; errorFields = []; fieldNames = Utils.proxiedPropertiesOf(this); isValid(prefix) { const isValidEvent = (Utils.required(this.event) && SunEvent.Events.includes(this.event)); const latitudeRegex = new RegExp(SunEventsTriggerConfiguration.latitudePattern); const isValidLatitude = (Utils.required(this.latitude) && latitudeRegex.test(this.latitude)); const longitudeRegex = new RegExp(SunEventsTriggerConfiguration.longitudePattern); const isValidLongitude = (Utils.required(this.longitude) && longitudeRegex.test(this.longitude)); const isValidZoneId = (this.zoneId === undefined) || this.isValidZoneId(this.zoneId); if (!isValidEvent) this.errorFields.push(prefix + '.' + this.fieldNames.event); if (!isValidLatitude) this.errorFields.push(prefix + '.' + this.fieldNames.latitude); if (!isValidLongitude) this.errorFields.push(prefix + '.' + this.fieldNames.longitude); if (!isValidZoneId) this.errorFields.push(prefix + '.' + this.fieldNames.zoneId); return [ (isValidEvent && isValidLatitude && isValidLongitude && isValidZoneId), this.errorFields, ]; } isValidZoneId(zoneId) { const availableZoneIds = ZoneId.getAvailableZoneIds(); const isValidZoneId = availableZoneIds.includes(zoneId); return isValidZoneId; } } //# sourceMappingURL=configurationSunEventsTrigger.js.map