diff --git a/src/app/components/analysis-panel/analysis-panel.component.ts b/src/app/components/analysis-panel/analysis-panel.component.ts index be1a6a759bc1070a05241028a6b3e19d5cc1f877..e74a5f044539e671eb331d72ca280f664d3ee628 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 5487e3792dee68f51e054bb0c001d50e0fcbbc28..d2cde1f3d4de7e0e49efeb1ebed74a3a353df374 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 575343967a80fe0b17e19117a3991d1d6d716657..9fd49fea129e5e9cd50e2a680add40eddf943c55 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 9fd9175a97f3cb5b36a212e131cf157f6d6026a1..6ec2ddea20f8c1db2e61da7712754dc00b154f12 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 e5f74c2e2bd10e0fab31cf4da841788eea252313..730bb1a9643056f96912a2e4a826d661e38a682e 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 9304b0381fb998aee9e37bd5c4b72e4213627600..38ff9a9053258d0fc7e6d358e9bcdd85d4a0be17 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 2701e463a98a780214442fa780efa7186d2c917e..e48c865c89a9e597b92037a68ce420d489f2ddc3 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 fa27760bfef0e93bec516b19df4d54a04d96c980..52ec8c03e828afa9ad86245edb5fe192103c1ae7 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>