From 1c1fa47e561a5f408b267b717cc6d39d93e1e8ec Mon Sep 17 00:00:00 2001 From: Kanishk Kakar Date: Tue, 30 Jul 2019 21:53:47 +0530 Subject: [PATCH] sidebar: Update domains on tab drag. --- app/renderer/js/main.ts | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/app/renderer/js/main.ts b/app/renderer/js/main.ts index 98e4d326a..7452bc659 100644 --- a/app/renderer/js/main.ts +++ b/app/renderer/js/main.ts @@ -94,6 +94,7 @@ class ServerManagerView { $fullscreenEscapeKey: string; loading: AnyObject; activeTabIndex: number; + servers: ServerOrFunctionalTab[]; tabs: ServerOrFunctionalTab[]; functionalTabs: AnyObject; tabIndex: number; @@ -134,6 +135,7 @@ class ServerManagerView { this.loading = {}; this.activeTabIndex = -1; + this.servers = []; this.tabs = []; this.presetOrgs = []; this.functionalTabs = {}; @@ -241,10 +243,32 @@ class ServerManagerView { } } + onEnd(): void { + const newServers: any[] | ServerOrFunctionalTab[] = []; + const tabMap: any = {}; + const tabElements = document.querySelectorAll('#tabs-container .tab'); + tabElements.forEach((el, index) => { + const oldIndex = Number(el.getAttribute('data-tab-id')) % this.servers.length; + tabMap[index] = oldIndex; + newServers.push(this.servers[index]); + el.setAttribute('data-tab-id', index.toString()); + }); + + for (let server = 0; server < newServers.length; ++server) { + DomainUtil.updateDomain(server, newServers[tabMap[server]]); + } + + this.reloadView(); + } + initSidebar(): void { const showSidebar = ConfigUtil.getConfigItem('showSidebar', true); this.toggleSidebar(showSidebar); - this.$sortable = sortable.create(this.$drag, {}); + // Allow dragging of server tabs and update the data-tab-id + this.$sortable = sortable.create(this.$drag, { + dataIdAttr: 'data-sortable-id', + onEnd: this.onEnd.bind(this) + }); } async queueDomain(domain: any): Promise { @@ -314,6 +338,7 @@ class ServerManagerView { initTabs(): void { const servers = DomainUtil.getDomains(); + this.servers = servers; if (servers.length > 0) { for (let i = 0; i < servers.length; i++) { this.initServer(servers[i], i);