From 3edd0db12322aa60b6c872cd754b6aacdd4c3dfc Mon Sep 17 00:00:00 2001
From: "Hartung, Michael" <michael.hartung@uni-hamburg.de>
Date: Fri, 4 Nov 2022 23:07:54 +0100
Subject: [PATCH] variable backend URL

---
 .../analysis-panel.component.ts               |  4 +--
 .../components/network/network.component.ts   |  1 -
 .../privacy-banner.component.ts               |  1 -
 src/app/config.ts                             |  2 ++
 .../add-expressed-proteins.component.ts       |  5 +--
 src/app/services/analysis/analysis.service.ts |  4 +--
 .../netex-controller.service.ts               | 32 ++++++++++++-------
 src/index.html                                |  2 +-
 8 files changed, 30 insertions(+), 21 deletions(-)

diff --git a/src/app/components/analysis-panel/analysis-panel.component.ts b/src/app/components/analysis-panel/analysis-panel.component.ts
index be1a6a75..e74a5f04 100644
--- a/src/app/components/analysis-panel/analysis-panel.component.ts
+++ b/src/app/components/analysis-panel/analysis-panel.component.ts
@@ -357,7 +357,7 @@ export class AnalysisPanelComponent implements OnInit, OnChanges, AfterViewInit
   }
 
   private async getTask(token: string): Promise<any> {
-    return await this.http.get(`${environment.backend}task/?token=${token}`).toPromise();
+    return await this.http.get(`${this.netex.getBackend()}task/?token=${token}`).toPromise();
   }
 
   close() {
@@ -410,7 +410,7 @@ export class AnalysisPanelComponent implements OnInit, OnChanges, AfterViewInit
   }
 
   public downloadLink(view: string): string {
-    return `${environment.backend}task_result/?token=${this.token}&view=${view}&fmt=csv`;
+    return `${this.netex.getBackend()}task_result/?token=${this.token}&view=${view}&fmt=csv`;
   }
 
   /**
diff --git a/src/app/components/network/network.component.ts b/src/app/components/network/network.component.ts
index 5487e379..d2cde1f3 100644
--- a/src/app/components/network/network.component.ts
+++ b/src/app/components/network/network.component.ts
@@ -532,7 +532,6 @@ export class NetworkComponent implements OnInit {
       if (!node) {
         continue;
       }
-      console.log(node);
       const pos = this.networkHandler.activeNetwork.networkInternal.getPositions([node.id]);
       node.x = pos[node.id].x;
       node.y = pos[node.id].y;
diff --git a/src/app/components/privacy-banner/privacy-banner.component.ts b/src/app/components/privacy-banner/privacy-banner.component.ts
index 57534396..9fd49fea 100644
--- a/src/app/components/privacy-banner/privacy-banner.component.ts
+++ b/src/app/components/privacy-banner/privacy-banner.component.ts
@@ -10,7 +10,6 @@ export class PrivacyBannerComponent implements OnInit {
   constructor() { }
 
   ngOnInit(): void {
-    console.log(localStorage.getItem(this.privacyBannerCookieKey) )
     if (localStorage.getItem(this.privacyBannerCookieKey) === 'true') {
       this.disable();
     };
diff --git a/src/app/config.ts b/src/app/config.ts
index 9fd9175a..6ec2ddea 100644
--- a/src/app/config.ts
+++ b/src/app/config.ts
@@ -40,6 +40,7 @@ export type InteractionDatabase = 'omnipath';
 
 export interface IConfig {
   title: string;
+  backendUrl: string;
   legendUrl: string;
   legendClass: string;
   legendPos: 'left' | 'right';
@@ -135,6 +136,7 @@ connectorNodeGroup.groupName = 'Connector Nodes';
  */
 export const defaultConfig: IConfig = {
   title: 'Drugst.One',
+  backendUrl: '',
   legendUrl: '',
   legendClass: 'legend',
   legendPos: 'left',
diff --git a/src/app/dialogs/add-expressed-proteins/add-expressed-proteins.component.ts b/src/app/dialogs/add-expressed-proteins/add-expressed-proteins.component.ts
index e5f74c2e..730bb1a9 100644
--- a/src/app/dialogs/add-expressed-proteins/add-expressed-proteins.component.ts
+++ b/src/app/dialogs/add-expressed-proteins/add-expressed-proteins.component.ts
@@ -3,6 +3,7 @@ import {AnalysisService} from '../../services/analysis/analysis.service';
 import {getWrapperFromNode, Node, Tissue, NodeAttributeMap} from '../../interfaces';
 import {environment} from '../../../environments/environment';
 import {HttpClient} from '@angular/common/http';
+import { NetexControllerService } from 'src/app/services/netex-controller/netex-controller.service';
 
 @Component({
   selector: 'app-add-expressed-proteins',
@@ -29,7 +30,7 @@ export class AddExpressedProteinsComponent implements OnChanges {
   public addedCount: number | null = null;
   public loading = false;
 
-  constructor(private http: HttpClient, private analysis: AnalysisService) {
+  constructor(private http: HttpClient, private analysis: AnalysisService, private netex: NetexControllerService) {
   }
 
   ngOnChanges(changes: SimpleChanges): void {
@@ -38,7 +39,7 @@ export class AddExpressedProteinsComponent implements OnChanges {
 
   public async addProteins() {
     this.loading = true;
-    const result = await this.http.post<any>(`${environment.backend}query_tissue_proteins/`,
+    const result = await this.http.post<any>(`${this.netex.getBackend()}query_tissue_proteins/`,
       {tissueId: this.selectedTissue.drugstoneId, threshold: this.threshold}).toPromise();
     const items = [];
     for (const detail of result) {
diff --git a/src/app/services/analysis/analysis.service.ts b/src/app/services/analysis/analysis.service.ts
index 9304b038..38ff9a90 100644
--- a/src/app/services/analysis/analysis.service.ts
+++ b/src/app/services/analysis/analysis.service.ts
@@ -282,7 +282,7 @@ export class AnalysisService {
     };
 
 
-    const resp = await this.http.post<any>(`${environment.backend}task/`, {
+    const resp = await this.http.post<any>(`${this.netex.getBackend()}task/`, {
       algorithm: algorithm,
       target: target,
       parameters: parameters,
@@ -307,7 +307,7 @@ export class AnalysisService {
       });
       return '';
     }
-    const resp = await this.http.post<any>(`${environment.backend}task/`, {
+    const resp = await this.http.post<any>(`${this.netex.getBackend()}task/`, {
       algorithm,
       target,
       parameters,
diff --git a/src/app/services/netex-controller/netex-controller.service.ts b/src/app/services/netex-controller/netex-controller.service.ts
index 2701e463..e48c865c 100644
--- a/src/app/services/netex-controller/netex-controller.service.ts
+++ b/src/app/services/netex-controller/netex-controller.service.ts
@@ -4,27 +4,35 @@ import {HttpClient, HttpParams} from '@angular/common/http';
 import {Observable} from 'rxjs';
 import {Tissue, Node, EdgeType, QuickAlgorithmType, AlgorithmType} from 'src/app/interfaces';
 import {InteractionDrugProteinDB, InteractionProteinProteinDB} from 'src/app/config';
+import { DrugstoneConfigService } from '../drugstone-config/drugstone-config.service';
 
 @Injectable({
   providedIn: 'root'
 })
 export class NetexControllerService {
 
-  constructor(private http: HttpClient) {
+
+  constructor(private http: HttpClient, private drugstoneConfig: DrugstoneConfigService) {
+  }
+
+  public getBackend() {
+    return this.drugstoneConfig.config.backendUrl || environment.backend;
   }
 
   public async getTasks(tokens): Promise<any> {
+    console.log(this.drugstoneConfig.config.backendUrl)
+    console.log(this.getBackend())
     /**
      * returns promise of tasks status
      */
-    return this.http.post<any>(`${environment.backend}tasks/`, {tokens: JSON.stringify(tokens)}).toPromise();
+    return this.http.post<any>(`${this.getBackend()}tasks/`, {tokens: JSON.stringify(tokens)}).toPromise();
   }
 
   public getTaskResult(token) {
     /**
      * returns promise of task result of COMPLETED task
      */
-    return this.http.get<any>(`${environment.backend}task_result/?token=${token}`).toPromise();
+    return this.http.get<any>(`${this.getBackend()}task_result/?token=${token}`).toPromise();
   }
 
   public async mapNodes(nodes, identifier): Promise<any> {
@@ -33,14 +41,14 @@ export class NetexControllerService {
      * Returns list of mapped nodes if node was found, otherwise original node to not lose information
      */
     const payload = {nodes: nodes, identifier: identifier};
-    return this.http.post(`${environment.backend}map_nodes/`, payload).toPromise();
+    return this.http.post(`${this.getBackend()}map_nodes/`, payload).toPromise();
   }
 
   public tissues(): Observable<any> {
     /**
      * Lists all available tissues with id and name
      */
-    return this.http.get<Tissue[]>(`${environment.backend}tissues/`);
+    return this.http.get<Tissue[]>(`${this.getBackend()}tissues/`);
   }
 
   public digest_request(payload): Promise<any> {
@@ -50,7 +58,7 @@ export class NetexControllerService {
   public maxTissueExpression(tissue: Tissue): Promise<any> {
     const params = new HttpParams()
       .set('tissue', tissue.drugstoneId);
-    return this.http.get(environment.backend + 'tissue_max_expression/', {params}).toPromise();
+    return this.http.get(this.getBackend() + 'tissue_max_expression/', {params}).toPromise();
   }
 
 
@@ -64,7 +72,7 @@ export class NetexControllerService {
       tissue: tissue.drugstoneId,
       proteins: JSON.stringify(genesBackendIds)
     }
-    return this.http.post(`${environment.backend}tissue_expression/`, payload);
+    return this.http.post(`${this.getBackend()}tissue_expression/`, payload);
   }
 
   public adjacentDisorders(nodes: Node[], nodeType: string, dataset: string, licenced: boolean): Observable<any> {
@@ -74,7 +82,7 @@ export class NetexControllerService {
     } else if (nodeType === 'drugs') {
       params['drugs'] = nodes.map((node: Node) => node.drugId && node.drugstoneType === 'drug' ? node.drugstoneId.slice(2) : undefined).filter(id => id != null);
     }
-    return this.http.post<any>(`${environment.backend}adjacent_disorders/`, params);
+    return this.http.post<any>(`${this.getBackend()}adjacent_disorders/`, params);
   }
 
   public adjacentDrugs(pdiDataset: InteractionDrugProteinDB, licenced: boolean, nodes: Node[]): Observable<any> {
@@ -88,7 +96,7 @@ export class NetexControllerService {
       proteins: genesBackendIds,
       licenced: licenced
     };
-    return this.http.post<any>(`${environment.backend}adjacent_drugs/`, params);
+    return this.http.post<any>(`${this.getBackend()}adjacent_drugs/`, params);
   }
 
   public graphExport(graph_data: { edges: EdgeType[], nodes: Node[] }) {
@@ -96,7 +104,7 @@ export class NetexControllerService {
      * Sends complete graph data to backend where it is written to graphml or json File.
      * The file is returned as download for the user.
      */
-    return this.http.post(`${environment.backend}graph_export/`, graph_data, {responseType: 'text'});
+    return this.http.post(`${this.getBackend()}graph_export/`, graph_data, {responseType: 'text'});
   }
 
   public async fetchEdges(nodes: Node[], dataset: InteractionProteinProteinDB, licenced: boolean): Promise<any> {
@@ -105,7 +113,7 @@ export class NetexControllerService {
      * Returns list of mapped nodes if node was found, otherwise original node to not lose information
      */
     const payload = {nodes: nodes, dataset: dataset, licenced: licenced};
-    return this.http.post(`${environment.backend}fetch_edges/`, payload).toPromise();
+    return this.http.post(`${this.getBackend()}fetch_edges/`, payload).toPromise();
   }
 
 
@@ -113,6 +121,6 @@ export class NetexControllerService {
     /**
      * returns promise of task status
      */
-    return this.http.get(`${environment.backend}get_license`).toPromise();
+    return this.http.get(`${this.getBackend()}get_license`).toPromise();
   }
 }
diff --git a/src/index.html b/src/index.html
index fa27760b..52ec8c03 100644
--- a/src/index.html
+++ b/src/index.html
@@ -112,7 +112,7 @@ Export As Graphml Button<br>
 
   <drugst-one id="tatata"
               groups='{ "nodeGroups" : { "selectedNode": { "borderWidth": 3,"borderWidthSelected": 4,"color": { "border": "#ff1818","highlight": {"border": "#ff1818"}},"font": { "color": "#F8981","size": 14 }},"Protein":{"shape":"circle","groupName":"Protein","type":"Protein","color":"#172b4d","font":{"color":"#ffffff"}}}}'
-              config='{ "identifier":"symbol","title":"ROBUST output network", "taskDrugName": "Drug Search", "showLegendNodes": true, "showLegendEdges": true, "showSidebar": "left", "showOverview": true, "legendPos": "left", "legendClass": "legend", "showQuery": true, "showItemSelector": true,"showSimpleAnalysis": false,"showAdvAnalysis": true,"showSelection": true,"showTasks": true,"showNetworkMenu": "right","showLegend": true,"showNetworkMenuButtonExpression": true, "showNetworkMenuButtonScreenshot": true,"showNetworkMenuButtonExportGraphml": true,"showNetworkMenuButtonAdjacentDrugs": true,"showNetworkMenuButtonCenter": true,"showConnectGenes": false,"networkMenuButtonAdjacentDrugsLabel": "Drugs","showNetworkMenuButtonAdjacentDisordersProteins": true,"networkMenuButtonAdjacentDisordersProteinsLabel": "Disorders (protein)","showNetworkMenuButtonAdjacentDisordersDrugs": true,"networkMenuButtonAdjacentDisordersDrugsLabel": "Disorders (drug)","showNetworkMenuButtonAnimation": true,"networkMenuButtonAnimationLabel": "Animation", "autofillEdges": true, "physicsOn": false,"useNedrexLicenced": true,"selfReferences": false, "interactionDrugProtein": "NeDRex", "indicationDrugDisorder": "NeDRex","nodeShadow": true,"edgeShadow": true, "algorithms": {"drug": ["trustrank", "closeness", "degree", "proximity"], "drug-target": ["trustrank", "multisteiner", "keypathwayminer", "degree", "closeness", "betweenness"]}, "associatedProteinDisorder": "NeDRex", "expandNetworkMenu": true}'
+              config='{"identifier":"symbol","title":"ROBUST output network", "taskDrugName": "Drug Search", "showLegendNodes": true, "showLegendEdges": true, "showSidebar": "left", "showOverview": true, "legendPos": "left", "legendClass": "legend", "showQuery": true, "showItemSelector": true,"showSimpleAnalysis": false,"showAdvAnalysis": true,"showSelection": true,"showTasks": true,"showNetworkMenu": "right","showLegend": true,"showNetworkMenuButtonExpression": true, "showNetworkMenuButtonScreenshot": true,"showNetworkMenuButtonExportGraphml": true,"showNetworkMenuButtonAdjacentDrugs": true,"showNetworkMenuButtonCenter": true,"showConnectGenes": false,"networkMenuButtonAdjacentDrugsLabel": "Drugs","showNetworkMenuButtonAdjacentDisordersProteins": true,"networkMenuButtonAdjacentDisordersProteinsLabel": "Disorders (protein)","showNetworkMenuButtonAdjacentDisordersDrugs": true,"networkMenuButtonAdjacentDisordersDrugsLabel": "Disorders (drug)","showNetworkMenuButtonAnimation": true,"networkMenuButtonAnimationLabel": "Animation", "autofillEdges": true, "physicsOn": false,"useNedrexLicenced": true,"selfReferences": false, "interactionDrugProtein": "NeDRex", "indicationDrugDisorder": "NeDRex","nodeShadow": true,"edgeShadow": true, "algorithms": {"drug": ["trustrank", "closeness", "degree", "proximity"], "drug-target": ["trustrank", "multisteiner", "keypathwayminer", "degree", "closeness", "betweenness"]}, "associatedProteinDisorder": "NeDRex", "expandNetworkMenu": true}'
               network='{"nodes": [{"id":"PSEN1","group":"Protein","label":"PSEN1"},{"id":"PSEN2","group":"Protein","label":"PSEN2"},{"id":"APP","group":"Protein","label":"APP"},{"id":"APOE","group":"Protein","label":"APOE"},{"id":"RNF32","group":"Protein","label":"RNF32"},{"id":"STX5","group":"Protein","label":"STX5"},{"id":"TRAF3IP1","group":"Protein","label":"TRAF3IP1"},{"id":"PHB1","group":"Protein","label":"PHB1"},{"id":"MAPT","group":"Protein","label":"MAPT"},{"id":"ESR1","group":"Protein","label":"ESR1"},{"id":"IRF3","group":"Protein","label":"IRF3"},{"id":"DYNC1H1","group":"Protein","label":"DYNC1H1"},{"id":"CUL3","group":"Protein","label":"CUL3"},{"id":"HMGB1","group":"Protein","label":"HMGB1"},{"id":"DNAJC7","group":"Protein","label":"DNAJC7"},{"id":"NEFM","group":"Protein","label":"NEFM"},{"id":"DISC1","group":"Protein","label":"DISC1"},{"id":"PPP5C","group":"Protein","label":"PPP5C"},{"id":"CTNNB1","group":"Protein","label":"CTNNB1"},{"id":"KRAS","group":"Protein","label":"KRAS"}]}'
   ></drugst-one>
 
-- 
GitLab