UNPKG

lavva.exalushome

Version:

Library implementing communication and abstraction layers for ExalusHome system

110 lines 4.88 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import { Api } from "../../Api"; import { LoggerService } from "../Logging/LoggerService"; import { ChannelsGroupsService } from "./ChannelsGroupsService"; import { DevicesService } from "./DevicesService"; export var SetObjectsInGroupAndOrderResponseCode; (function (SetObjectsInGroupAndOrderResponseCode) { SetObjectsInGroupAndOrderResponseCode["Success"] = "Success"; SetObjectsInGroupAndOrderResponseCode["GroupDoesNotExists"] = "GroupDoesNotExists"; SetObjectsInGroupAndOrderResponseCode["ObjectDoesNotExists"] = "ObjectDoesNotExists"; SetObjectsInGroupAndOrderResponseCode["FatalError"] = "FatalError"; SetObjectsInGroupAndOrderResponseCode["FunctionNotSupported"] = "FunctionNotSupported"; })(SetObjectsInGroupAndOrderResponseCode || (SetObjectsInGroupAndOrderResponseCode = {})); export var AddNewGroupErrorCode; (function (AddNewGroupErrorCode) { AddNewGroupErrorCode["Success"] = "Success"; AddNewGroupErrorCode["NoPermissions"] = "NoPermissions"; AddNewGroupErrorCode["NameToShort"] = "NameToShort"; AddNewGroupErrorCode["NameAlreadyExists"] = "NameAlreadyExists"; AddNewGroupErrorCode["OtherError"] = "OtherError"; AddNewGroupErrorCode["UnknownError"] = "UnknownError"; })(AddNewGroupErrorCode || (AddNewGroupErrorCode = {})); export class ChannelsGroup { constructor() { this._guid = ""; this._name = ""; this._iconName = ""; this._position = 0; this._objectsOrder = {}; if (ChannelsGroup._devicesService == null) ChannelsGroup._devicesService = Api.Get(DevicesService.ServiceName); } GetDevicesChannelsInGroupAsync() { return __awaiter(this, arguments, void 0, function* (withScenes = false) { let channels = []; let sortedChannels = []; const devs = yield ChannelsGroup._devicesService.GetDevicesAsync(withScenes); if (this._objectsOrder === undefined || this._objectsOrder === null || Object.entries(this._objectsOrder).length == 0) { Api.Get(LoggerService.ServiceName).Error("Old controller API fallback to old groups API."); for (let device of devs) { for (let channel of device.Channels.where(channel => channel.ChannelGroups.any(group => group === this._guid))) { sortedChannels.push(channel); } } return sortedChannels; } const sortedKeys = Object.keys(this._objectsOrder) .map(Number) // convert strings to numbers .sort((a, b) => a - b); // sort by numeric values Object.values(this._objectsOrder).forEach(value => { const channel = devs.select(a => a.Channels.where(b => b.ChannelId === value)); if (channel !== null) for (let c of channel) for (let ch of c) channels.push(ch); }); for (let s of sortedKeys) { const ch = channels.firstOrDefault(a => a.ChannelId === this._objectsOrder[s]); if (ch !== null) sortedChannels.push(ch); } return sortedChannels; }); } get Guid() { return this._guid; } set Guid(value) { this._guid = value; } get Name() { return this._name; } set Name(value) { this._name = value; } get IconName() { return this._iconName; } set IconName(value) { this._iconName = value; } get OrderPosition() { return this._position; } set OrderPosition(value) { this._position = value; } get ObjectsOrder() { return this._objectsOrder; } set ObjectsOrder(value) { this._objectsOrder = value; } ChangeNameAsync(name) { return Api.Get(ChannelsGroupsService.ServiceName).ChangeGroupNameAsync(this, name); } ChangeIconNameAsync(iconName) { return Api.Get(ChannelsGroupsService.ServiceName).ChangeGroupIconNameAsync(this, iconName); } } //# sourceMappingURL=IChannelsGroupsService.js.map