From 683fa42cbca910d61b7265f236a209202bb611cf Mon Sep 17 00:00:00 2001
From: Eugen Ciur <eugen@papermerge.com>
Date: Sat, 19 Mar 2022 09:48:48 +0100
Subject: [PATCH] pretty good swap panels feature

---
 app/controllers/authenticated/document.js | 34 ++++++++++++++++++-----
 app/controllers/authenticated/nodes.js    | 29 +++++++++----------
 app/templates/authenticated/document.hbs  | 12 ++++++--
 3 files changed, 49 insertions(+), 26 deletions(-)

diff --git a/app/controllers/authenticated/document.js b/app/controllers/authenticated/document.js
index 7f4f96c..1377304 100644
--- a/app/controllers/authenticated/document.js
+++ b/app/controllers/authenticated/document.js
@@ -1,9 +1,12 @@
 import { action } from '@ember/object';
 import DualPanelBaseController from "./dualpanel_base";
+import { service } from '@ember/service';
 
 
 export default class DocumentController extends DualPanelBaseController {
 
+  @service router;
+
   @action
   async onPanelToggle(hint) {
     /*
@@ -38,17 +41,34 @@ export default class DocumentController extends DualPanelBaseController {
 
   @action
   onSwapPanels() {
-    console.log(`onSwapPanels`);
-  }
+    let document_id = this.router.currentRoute.params['document_id'],
+      query_params;
 
-  @action
-  onLeftDuplicate() {
-    console.log(`onLeftDuplicate`);
+    query_params = {
+      'queryParams': {
+        'extra_id': document_id,
+        'extra_type': 'doc'
+      }
+    };
+
+    if (this.extra_id && this.extra_type == 'folder') {
+      this.router.transitionTo(
+        'authenticated.nodes',
+        this.extra_id,
+        query_params
+      );
+    } else if (this.extra_id && this.extra_type == 'doc') {
+      this.router.transitionTo(
+        'authenticated.document',
+        this.extra_id,
+        query_params
+      )
+    }
   }
 
   @action
-  onRightDuplicate() {
-    console.log(`onRightDuplicate`);
+  onDuplicatePanel() {
+    console.log(`onDuplicatePanel`);
   }
 
 }
diff --git a/app/controllers/authenticated/nodes.js b/app/controllers/authenticated/nodes.js
index 490ff5d..1afc9d6 100644
--- a/app/controllers/authenticated/nodes.js
+++ b/app/controllers/authenticated/nodes.js
@@ -40,32 +40,29 @@ export default class NodesController extends DualPanelBaseController {
 
   @action
   onSwapPanels() {
-    let node_id;
+    let node_id,
+      query_params;
+
+    node_id = this.router.currentRoute.params['node_id'];
+    query_params = {
+      'queryParams': {
+        'extra_id': node_id,
+        'extra_type': 'folder'
+      }
+    }
 
     if (this.extra_id && this.extra_type == 'folder') {
-      node_id = this.router.currentRoute.params['node_id'];
       this.router.transitionTo(
         'authenticated.nodes',
         this.extra_id,
-        {
-          'queryParams': {
-            'extra_id': node_id,
-            'extra_type': 'folder',
-          }
-        }
+        query_params
       );
     } else if (this.extra_id && this.extra_type == 'doc') {
-      node_id = this.router.currentRoute.params['node_id'];
       this.router.transitionTo(
         'authenticated.document',
         this.extra_id,
-        {
-          'queryParams': {
-            'extra_id': node_id,
-            'extra_type': 'folder'
-          }
-        }
-      )
+        query_params
+      );
     }
   }
 
diff --git a/app/templates/authenticated/document.hbs b/app/templates/authenticated/document.hbs
index ea82c27..a4e8dae 100644
--- a/app/templates/authenticated/document.hbs
+++ b/app/templates/authenticated/document.hbs
@@ -6,7 +6,9 @@
     @extradoc={{@mode.extra.doc}}
     @onPanelToggle={{this.onPanelToggle}}
     @dualPanelMode={{this.dualpanel_mode}}
-    @hint="left" />
+    @hint="left"
+    @onSwapPanels={{this.onSwapPanels}}
+    @onDuplicatePanel={{this.onDuplicatePanel}} />
 
   {{#if @model.extra}}
     {{#if @model.extra.doc}}
@@ -17,7 +19,9 @@
         @extradoc={{@model.doc}}
         @onPanelToggle={{this.onPanelToggle}}
         @dualPanelMode={{this.dualpanel_mode}}
-        @hint="right" />
+        @hint="right"
+        @onSwapPanels={{this.onSwapPanels}}
+        @onDuplicatePanel={{this.onDuplicatePanel}} />
     {{else}}
       <Commander
         @node={{@model.extra.current_node}}
@@ -26,7 +30,9 @@
         @extradoc={{@model.doc}}
         @onPanelToggle={{this.onPanelToggle}}
         @dualPanelMode={{this.dualpanel_mode}}
-        @hint="right" />
+        @hint="right"
+        @onSwapPanels={{this.onSwapPanels}}
+        @onDuplicatePanel={{this.onDuplicatePanel}} />
     {{/if}}
   {{/if}}
 </div>
-- 
GitLab