From 0994fd846d78816125baf9a5072571443916d5c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20Sp=C3=A4th?= <julian.spaeth@wzw.tum.de> Date: Thu, 2 Apr 2020 17:18:42 +0200 Subject: [PATCH] Accumulate bait filters --- angular.json | 2 +- .../explorer-page.component.html | 4 +- .../explorer-page/explorer-page.component.ts | 65 +++++++++++-------- src/main.ts | 1 + tslint.json | 11 +--- 5 files changed, 44 insertions(+), 39 deletions(-) diff --git a/angular.json b/angular.json index 8b3458c4..10b05b83 100644 --- a/angular.json +++ b/angular.json @@ -129,4 +129,4 @@ "cli": { "analytics": "bb00cc29-2ec5-4bd5-9235-62ac2e9e51b5" } -} \ No newline at end of file +} diff --git a/src/app/pages/explorer-page/explorer-page.component.html b/src/app/pages/explorer-page/explorer-page.component.html index 0a397a99..d897d23a 100644 --- a/src/app/pages/explorer-page/explorer-page.component.html +++ b/src/app/pages/explorer-page/explorer-page.component.html @@ -74,7 +74,7 @@ <label class="checkbox"> <input type="checkbox" class="checkbox" [ngModel]="bait.checked" (ngModelChange)="bait.checked = $event; filterNodes()"> - Bait {{ bait.data.effectId }} + {{ bait.data.effectName }} </label> </div> </div> @@ -173,7 +173,7 @@ <button class="button is-primary" *ngIf="!inSelection(currentProteinAc)" (click)="addToSelection(currentProteinAc)">Select for analysis </button> - <button class="button is-primary" *ngIf="inSelection(currentProteinAc)" + <button class="button is-danger" *ngIf="inSelection(currentProteinAc)" (click)="removeFromSelection(currentProteinAc)">Remove from analysis </button> </div> diff --git a/src/app/pages/explorer-page/explorer-page.component.ts b/src/app/pages/explorer-page/explorer-page.component.ts index 915709bb..22f8ae3f 100644 --- a/src/app/pages/explorer-page/explorer-page.component.ts +++ b/src/app/pages/explorer-page/explorer-page.component.ts @@ -157,11 +157,19 @@ export class ExplorerPageComponent implements OnInit, AfterViewInit { this.proteinData.linkNodes(); // Populate baits + const effectNames = []; + this.proteinData.effects.sort((a, b) => { + return a.effectName.localeCompare(b.effectName); + }); this.proteinData.effects.forEach((effect) => { - this.viralProteinCheckboxes.push({ - checked: false, - data: effect, - }); + const effectName = effect.effectName; + if (effectNames.indexOf(effectName) === -1) { + effectNames.push(effectName); + this.viralProteinCheckboxes.push({ + checked: false, + data: effect, + }); + } }); const {nodes, edges} = this.mapDataToNodes(this.proteinData); @@ -188,9 +196,7 @@ export class ExplorerPageComponent implements OnInit, AfterViewInit { this.network.on('click', (properties) => { const id: Array<string> = properties.nodes; // TODO use groupID - console.log(id); if (id.length > 0) { - console.log('clicked node:', id); if (id[0].startsWith('pg_')) { const protein = this.proteinData.getProtein(id[0].substr(3)); this.openSummary(protein, false); @@ -202,6 +208,7 @@ export class ExplorerPageComponent implements OnInit, AfterViewInit { if (this.dumpPositions) { this.network.on('stabilizationIterationsDone', () => { + // tslint:disable-next-line:no-console console.log(JSON.stringify(this.network.getPositions())); }); this.network.stabilize(); @@ -224,26 +231,32 @@ export class ExplorerPageComponent implements OnInit, AfterViewInit { const addNodes = new Map<string, Node>(); const showAll = !this.viralProteinCheckboxes.find((eff) => eff.checked); - console.log(showAll); - const connectedProteinAcs = new Set<string>(); - this.viralProteinCheckboxes.forEach((bait) => { - const nodeId = `eff_${bait.data.effectId}`; - const found = visibleIds.has(nodeId); - if ((bait.checked || showAll) && !found) { - const node = this.mapEffectToNode(bait.data); - // this.nodeData.nodes.add(node); - addNodes.set(node.id, node); - } else if ((!showAll && !bait.checked) && found) { - // this.nodeData.nodes.remove(nodeId); - removeIds.add(nodeId); - } - if (bait.checked || showAll) { - bait.data.proteins.forEach((pg) => { - connectedProteinAcs.add(pg.proteinAc); - }); - } + this.viralProteinCheckboxes.forEach((cb) => { + const effects = []; + this.proteinData.effects.forEach((effect) => { + if (effect.effectName === cb.data.effectName) { + effects.push(effect); + } + }); + effects.forEach((effect) => { + const nodeId = `eff_${effect.effectId}`; + const found = visibleIds.has(nodeId); + if ((cb.checked || showAll) && !found) { + const node = this.mapEffectToNode(effect); + // this.nodeData.nodes.add(node); + addNodes.set(node.id, node); + } else if ((!showAll && !cb.checked) && found) { + // this.nodeData.nodes.remove(nodeId); + removeIds.add(nodeId); + } + if (cb.checked || showAll) { + effect.proteins.forEach((pg) => { + connectedProteinAcs.add(pg.proteinAc); + }); + } + }); }); this.filteredProteins = []; for (const protein of this.proteinData.proteins) { @@ -256,7 +269,6 @@ export class ExplorerPageComponent implements OnInit, AfterViewInit { if (contains && !found) { const node = this.mapProteinToNode(protein); // this.nodeData.nodes.add(node); - addNodes.set(node.id, node); } else if (!contains && found) { // this.nodeData.nodes.remove(nodeId); @@ -264,11 +276,10 @@ export class ExplorerPageComponent implements OnInit, AfterViewInit { } } - this.nodeData.nodes.remove(Array.from(removeIds.values())); this.nodeData.nodes.add(Array.from(addNodes.values())); this.fillQueryItems(); - } + } public updatePhysicsEnabled() { diff --git a/src/main.ts b/src/main.ts index d9eac7e0..6e7e3153 100644 --- a/src/main.ts +++ b/src/main.ts @@ -12,4 +12,5 @@ if (environment.production) { } platformBrowserDynamic().bootstrapModule(AppModule) + // tslint:disable-next-line:no-console .catch(err => console.error(err)); diff --git a/tslint.json b/tslint.json index c8d70f15..8f6066ba 100644 --- a/tslint.json +++ b/tslint.json @@ -44,14 +44,7 @@ } ], "no-consecutive-blank-lines": false, - "no-console": [ - true, - "debug", - "info", - "time", - "timeEnd", - "trace" - ], + "no-console": true, "no-empty": false, "no-inferrable-types": [ true, @@ -88,4 +81,4 @@ "rulesDirectory": [ "codelyzer" ] -} \ No newline at end of file +} -- GitLab