From 10e8f0970cdcd642ac4031e34319b54499099a95 Mon Sep 17 00:00:00 2001
From: AndiMajore <andi.majore@googlemail.com>
Date: Wed, 3 May 2023 17:40:23 +0200
Subject: [PATCH] fixed manual selection dragEnd issue

---
 .../analysis-panel.component.ts               |  4 +--
 .../explorer-page/explorer-page.component.ts  | 28 ++++++++++++++-----
 .../network-handler.service.ts                |  6 +++-
 3 files changed, 28 insertions(+), 10 deletions(-)

diff --git a/src/app/components/analysis-panel/analysis-panel.component.ts b/src/app/components/analysis-panel/analysis-panel.component.ts
index 896103bd..76804290 100644
--- a/src/app/components/analysis-panel/analysis-panel.component.ts
+++ b/src/app/components/analysis-panel/analysis-panel.component.ts
@@ -238,7 +238,7 @@ export class AnalysisPanelComponent implements OnInit, OnChanges, AfterViewInit
       }).then(() => {
         this.networkHandler.activeNetwork.networkInternal.on('dragEnd', (properties) => {
           const node_ids = this.networkHandler.activeNetwork.networkInternal.getSelectedNodes();
-          if (node_ids.length === 0) {
+          if (node_ids.length === 0|| !this.networkHandler.shiftDown) {
             return;
           }
           this.analysis.addNodesByIdsToSelection(node_ids);
@@ -487,7 +487,7 @@ export class AnalysisPanelComponent implements OnInit, OnChanges, AfterViewInit
             }, 1000);
             analysisNetwork.networkInternal.on('dragEnd', (properties) => {
               const node_ids = analysisNetwork.networkInternal.getSelectedNodes();
-              if (node_ids.length === 0) {
+              if (node_ids.length === 0|| !this.networkHandler.shiftDown) {
                 return;
               }
               this.analysis.addNodesByIdsToSelection(node_ids);
diff --git a/src/app/pages/explorer-page/explorer-page.component.ts b/src/app/pages/explorer-page/explorer-page.component.ts
index 959f9071..01a8c837 100644
--- a/src/app/pages/explorer-page/explorer-page.component.ts
+++ b/src/app/pages/explorer-page/explorer-page.component.ts
@@ -506,17 +506,31 @@ export class ExplorerPageComponent implements OnInit, AfterViewInit {
         }
       });
 
-      this.networkHandler.activeNetwork.networkInternal.on('dragEnd', (properties) => {
-        let node_ids = this.networkHandler.activeNetwork.networkInternal.getSelectedNodes();
-        if (node_ids.length === 0) {
-          return;
+      // this.networkHandler.activeNetwork.networkInternal.on('dragEnd', (properties) => {
+      //   let node_ids = this.networkHandler.activeNetwork.networkInternal.getSelectedNodes();
+      //   if (node_ids.length === 0) {
+      //     return;
+      //   }
+      //   this.analysis.addNodesByIdsToSelection(node_ids);
+      //   this.networkHandler.activeNetwork.networkInternal.unselectAll();
+      // });
+
+      //  check if shift key is pressed
+      window.addEventListener('keydown', (event) => {
+        if (event.key === 'Shift') {
+          this.networkHandler.shiftDown = true;
         }
-        this.analysis.addNodesByIdsToSelection(node_ids);
-        this.networkHandler.activeNetwork.networkInternal.unselectAll();
       });
+
+      window.addEventListener('keyup', (event) => {
+        if (event.key === 'Shift') {
+          this.networkHandler.shiftDown = false;
+        }
+      });
+
       this.networkHandler.activeNetwork.networkInternal.on('dragEnd', (properties) => {
         let node_ids = this.networkHandler.activeNetwork.networkInternal.getSelectedNodes();
-        if (node_ids.length === 0) {
+        if (node_ids.length === 0 || !this.networkHandler.shiftDown) {
           return;
         }
         this.analysis.addNodesByIdsToSelection(node_ids);
diff --git a/src/app/services/network-handler/network-handler.service.ts b/src/app/services/network-handler/network-handler.service.ts
index 798c3e35..439da562 100644
--- a/src/app/services/network-handler/network-handler.service.ts
+++ b/src/app/services/network-handler/network-handler.service.ts
@@ -1,7 +1,7 @@
 import {Type, Injectable} from '@angular/core';
 import {Subject} from 'rxjs';
 import {NetworkComponent} from 'src/app/components/network/network.component';
-import {NetworkType} from 'src/app/interfaces';
+import {getWrapperFromNode, NetworkType} from 'src/app/interfaces';
 import {AnalysisService} from '../analysis/analysis.service';
 import {DrugstoneConfigService} from '../drugstone-config/drugstone-config.service';
 import {NetexControllerService} from '../netex-controller/netex-controller.service';
@@ -22,6 +22,9 @@ export class NetworkHandlerService {
   public networks: { NetworkType: NetworkComponent } | {} = {};
   public activeNetwork: NetworkComponent = new NetworkComponent(this.legendService, this.networkHandler, this.analysis, this.drugstoneConfig, this.netex, this.omnipath, this.loadingScreen);
 
+
+  public shiftDown = false;
+
   public showSeedsButton = true;
 
 
@@ -64,4 +67,5 @@ export class NetworkHandlerService {
       }
     });
   }
+
 }
-- 
GitLab