lavva.exalushome
Version:
Library implementing communication and abstraction layers for ExalusHome system
110 lines • 4.88 kB
JavaScript
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