From 3c003cefd34a552a9808a0ebdd81ef955d98be03 Mon Sep 17 00:00:00 2001
From: AndiMajore <andi.majore@googlemail.com>
Date: Tue, 24 Jan 2023 11:12:21 +0100
Subject: [PATCH] added warning for missing nodes in network conifg

---
 src/app/app.module.ts                         |  2 +
 .../explorer-page.component.html              |  1 +
 .../explorer-page/explorer-page.component.ts  | 44 +++++++++++--------
 .../drugstone-config.service.ts               |  1 +
 src/stylesheets/variables.scss                |  3 +-
 5 files changed, 31 insertions(+), 20 deletions(-)

diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index acf1ccd6..29c00da0 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -52,6 +52,7 @@ import {NgbModule} from '@ng-bootstrap/ng-bootstrap';
 import { SummaryNodeComponent } from './pages/explorer-page/summary-node/summary-node/summary-node.component';
 import { NetworkOverviewComponent } from './pages/explorer-page/network-overview/network-overview/network-overview.component';
 import { InfoTileEdgeComponent } from './components/info-tile-edge/info-tile-edge/info-tile-edge.component';
+import { NetworkEmptyWarningComponent } from './components/network-empty-warning/network-empty-warning.component';
 
 
 @NgModule({
@@ -93,6 +94,7 @@ import { InfoTileEdgeComponent } from './components/info-tile-edge/info-tile-edg
     SummaryNodeComponent,
     NetworkOverviewComponent,
     InfoTileEdgeComponent,
+    NetworkEmptyWarningComponent,
   ],
   imports: [
     BrowserModule,
diff --git a/src/app/pages/explorer-page/explorer-page.component.html b/src/app/pages/explorer-page/explorer-page.component.html
index ddd01a8a..f47c1a05 100644
--- a/src/app/pages/explorer-page/explorer-page.component.html
+++ b/src/app/pages/explorer-page/explorer-page.component.html
@@ -4,6 +4,7 @@
     <app-fa-icons></app-fa-icons>
     <app-loading-screen></app-loading-screen>
     <app-network-warning></app-network-warning>
+    <app-network-empty-warning></app-network-empty-warning>
     <app-group-warning></app-group-warning>
     <app-parser-warning></app-parser-warning>
     <app-privacy-banner></app-privacy-banner>
diff --git a/src/app/pages/explorer-page/explorer-page.component.ts b/src/app/pages/explorer-page/explorer-page.component.ts
index 5bc5533e..72e46f3e 100644
--- a/src/app/pages/explorer-page/explorer-page.component.ts
+++ b/src/app/pages/explorer-page/explorer-page.component.ts
@@ -15,15 +15,15 @@ import {
   Tissue,
   Wrapper
 } from '../../interfaces';
-import { ProteinNetwork, mapNetexEdge } from '../../main-network';
-import { AnalysisService } from '../../services/analysis/analysis.service';
-import { NetworkSettings } from '../../network-settings';
-import { defaultConfig, EdgeGroup, NodeGroup } from '../../config';
-import { NetexControllerService } from 'src/app/services/netex-controller/netex-controller.service';
+import {ProteinNetwork, mapNetexEdge} from '../../main-network';
+import {AnalysisService} from '../../services/analysis/analysis.service';
+import {NetworkSettings} from '../../network-settings';
+import {defaultConfig, EdgeGroup, NodeGroup} from '../../config';
+import {NetexControllerService} from 'src/app/services/netex-controller/netex-controller.service';
 import * as merge from 'lodash/fp/merge';
 import * as JSON5 from 'json5';
-import { DrugstoneConfigService } from 'src/app/services/drugstone-config/drugstone-config.service';
-import { NetworkHandlerService } from 'src/app/services/network-handler/network-handler.service';
+import {DrugstoneConfigService} from 'src/app/services/drugstone-config/drugstone-config.service';
+import {NetworkHandlerService} from 'src/app/services/network-handler/network-handler.service';
 
 
 declare var vis: any;
@@ -77,7 +77,13 @@ export class ExplorerPageComponent implements OnInit, AfterViewInit {
       return;
     }
     try {
-      this.networkJSON = JSON.stringify(typeof network === 'string' ? JSON5.parse(network) : network);
+      const nw = typeof network === 'string' ? JSON5.parse(network) : network;
+      if (!nw.nodes || nw.nodes.length === 0) {
+        this.drugstoneConfig.gettingNetworkEmpty = true;
+        console.log('No nodes specified in network config.');
+        return;
+      }
+      this.networkJSON = JSON.stringify(nw);
     } catch (e) {
       this.drugstoneConfig.parsingIssueNetwork = true;
       console.error('Failed parsing input network');
@@ -111,7 +117,7 @@ export class ExplorerPageComponent implements OnInit, AfterViewInit {
   // public edges: NodeInteraction[];
 
   // this will store the vis Dataset
-  public nodeData: { nodes: any, edges: any } = { nodes: null, edges: null };
+  public nodeData: { nodes: any, edges: any } = {nodes: null, edges: null};
 
   public showAnalysisDialog = false;
   public showThresholdDialog = false;
@@ -243,9 +249,9 @@ export class ExplorerPageComponent implements OnInit, AfterViewInit {
     this.networkHandler.networkSidebarOpen = this.drugstoneConfig.config.expandNetworkMenu;
     // trigger updates on config e.g. in legend
     if (this.drugstoneConfig.analysisConfig) {
-      this.drugstoneConfig.analysisConfig = { ...this.drugstoneConfig.analysisConfig };
+      this.drugstoneConfig.analysisConfig = {...this.drugstoneConfig.analysisConfig};
     } else {
-      this.drugstoneConfig.config = { ...this.drugstoneConfig.config };
+      this.drugstoneConfig.config = {...this.drugstoneConfig.config};
     }
     if (updateNetworkFlag && typeof this.networkJSON !== 'undefined') {
       // update network if network config has changed and networkJSON exists
@@ -298,7 +304,7 @@ export class ExplorerPageComponent implements OnInit, AfterViewInit {
       if (this.networkHandler.activeNetwork.networkPositions) {
         this.proteinData.updateNodePositions(this.networkHandler.activeNetwork.networkPositions);
       }
-      let { nodes, edges } = this.proteinData.mapDataToNetworkInput(this.drugstoneConfig.currentConfig(), this.drugstoneConfig);
+      let {nodes, edges} = this.proteinData.mapDataToNetworkInput(this.drugstoneConfig.currentConfig(), this.drugstoneConfig);
       if (this.drugstoneConfig.config.autofillEdges && nodes.length) {
         let node_map = {};
         nodes.filter(n => n.drugstoneType === 'protein').forEach(node => {
@@ -440,7 +446,7 @@ export class ExplorerPageComponent implements OnInit, AfterViewInit {
         node.id = this.removeEnsemblVersion(node.id);
       });
       if (network.edges != null)
-      // @ts-ignore
+        // @ts-ignore
       {
         network.edges.forEach(edge => {
           edge.from = this.removeEnsemblVersion(edge.from);
@@ -588,12 +594,12 @@ export class ExplorerPageComponent implements OnInit, AfterViewInit {
    * @param values
    */
   public setConfigEdgeGroup(key: string, edgeGroups: {
-    [key
-      :
-      string
-    ]:
-    EdgeGroup;
-  }
+                              [key
+                                :
+                                string
+                                ]:
+                                EdgeGroup;
+                            }
   ) {
     // make sure that default-groups are set
     const defaultNodeGroups = JSON.parse(JSON.stringify(defaultConfig.edgeGroups));
diff --git a/src/app/services/drugstone-config/drugstone-config.service.ts b/src/app/services/drugstone-config/drugstone-config.service.ts
index 9c72d451..c83d3f68 100644
--- a/src/app/services/drugstone-config/drugstone-config.service.ts
+++ b/src/app/services/drugstone-config/drugstone-config.service.ts
@@ -12,6 +12,7 @@ export class DrugstoneConfigService {
   public parsingIssueNetwork = false;
   public parsingIssueGroups = false;
   public gettingNetworkIssue = true;
+  public gettingNetworkEmpty = false;
   public groupIssue = false;
   public groupIssueList = [];
   public smallStyle = false;
diff --git a/src/stylesheets/variables.scss b/src/stylesheets/variables.scss
index 53044816..11611a97 100644
--- a/src/stylesheets/variables.scss
+++ b/src/stylesheets/variables.scss
@@ -64,7 +64,8 @@ $text-normal-font-size: 12px;
 $text-small-font-size: 11px;
 
 $privacy-banner-z: 40;
-$parser-issue-banner-z: 41;
+$network-empty-banner-z: 41;
+$parser-issue-banner-z: 42;
 
 $fullscreen-z: 2147483646;
 $toast-z: 2147483647;
-- 
GitLab