homebridge-virtual-accessories
Version:
Virtual HomeKit accessories for Homebridge.
52 lines • 2.07 kB
JavaScript
/* 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