/// /// /// /// /// /// class ChannelTree { constructor(client, htmlTree) { this.client = client; this.htmlTree = htmlTree; this.reset(); } initialiseHead(serverName) { this.server = new ServerEntry(this, serverName); this.server.htmlTag.appendTo(this.htmlTree); this.server.initializeListener(); } __deleteAnimation(element) { $(this.htmlTree).find(element.htmlTag).fadeOut("slow", function () { $(this).remove(); if (element instanceof ChannelEntry) { if (element.parentChannel()) element.parentChannel().adjustSize(true); } else if (element instanceof ClientEntry) { element.currentChannel().adjustSize(true); } }); } deleteChannel(channel) { const _this = this; for (let index = 0; index < this.channels.length; index++) { let entry = this.channels[index]; let currentEntry = this.channels[index]; while (currentEntry != undefined && currentEntry != null) { if (currentEntry == channel) { _this.channels.remove(entry); _this.__deleteAnimation(entry); entry.channelTree = null; index--; break; } else currentEntry = currentEntry.parentChannel(); } } this.channels.remove(channel); this.__deleteAnimation(channel); channel.channelTree = null; } insertChannel(channel) { channel.channelTree = this; this.channels.push(channel); let elm = undefined; let tag = this.htmlTree; let prevChannel = null; if (channel.hasParent()) { let parent = channel.parentChannel(); let siblings = parent.siblings(); if (siblings.length == 0) { elm = parent.htmlTag; prevChannel = null; } else { prevChannel = siblings.last(); elm = prevChannel.htmlTag; } tag = parent.siblingTag(); } channel.prevChannel = prevChannel; let entry = channel.htmlTag.css({ display: "none" }).fadeIn("slow"); entry.appendTo(tag); channel.originalHeight = entry.outerHeight(true); if (elm != undefined) elm.after(entry); channel.adjustSize(true); channel.initializeListener(); } findChannel(channelId) { for (let index = 0; index < this.channels.length; index++) if (this.channels[index].getChannelId() == channelId) return this.channels[index]; return undefined; } moveChannel(channel, prevChannel, parent) { if (prevChannel != null && prevChannel.parent != parent) { console.error("Invalid channel move (different parents! (" + prevChannel.parent + "|" + parent + ")"); return; } let oldParent = channel.parentChannel(); channel.prevChannel = prevChannel; channel.parent = parent; if (prevChannel) prevChannel.htmlTag.after(channel.htmlTag); else { if (parent) { var siblings = parent.siblings(); if (siblings.length <= 1) { var left = channel.htmlTag; left.appendTo($(parent.siblingTag())); } else { channel.prevChannel = siblings[siblings.length - 2]; channel.prevChannel.htmlTag.after(channel.htmlTag); } } else this.htmlTree.find(".server").after(channel.htmlTag); } if (oldParent) oldParent.adjustSize(); if (channel) channel.adjustSize(); } deleteClient(client) { this.clients.remove(client); this.__deleteAnimation(client); client.onDelete(); } insertClient(client, channel) { let newClient = this.findClient(client.clientId()); if (newClient) client = newClient; //Got new client :) else this.clients.push(client); client.channelTree = this; client["_channel"] = channel; let tag = client.htmlTag.css({ display: "none" }).fadeIn("slow"); tag.appendTo(channel.clientTag()); channel.adjustSize(true); client.initializeListener(); return client; } registerClient(client) { this.clients.push(client); client.channelTree = this; client.initializeListener(); } moveClient(client, channel) { let oldChannel = client.currentChannel(); client["_channel"] = channel; let tag = client.htmlTag; tag.detach(); tag.appendTo(client.currentChannel().clientTag()); if (oldChannel) oldChannel.adjustSize(); if (client.currentChannel()) client.currentChannel().adjustSize(); } findClient(clientId) { for (let index = 0; index < this.clients.length; index++) if (this.clients[index].clientId() == clientId) return this.clients[index]; return null; } onSelect(entry) { $(this.htmlTree).find(".selected").each(function (idx, e) { $(e).removeClass("selected"); }); if (entry instanceof ChannelEntry) entry.htmlTag.find("> .channelLine").addClass("selected"); else if (entry instanceof ClientEntry) entry.htmlTag.addClass("selected"); else if (entry instanceof ServerEntry) entry.htmlTag.addClass("selected"); this.client.selectInfo.currentSelected = entry; } clientsByGroup(group) { let result = []; for (let client of this.clients) { if (client.groupAssigned(group)) result.push(client); } return result; } clientsByChannel(channel) { let result = []; for (let client of this.clients) { if (client.currentChannel() == channel) result.push(client); } return result; } reset() { this.server = null; this.clients = []; this.channels = []; this.htmlTree.empty(); } } //# sourceMappingURL=view.js.map