<app-launch-analysis [(show)]="showAnalysisDialog" [target]="analysisDialogTarget"></app-launch-analysis> <div class="covex explorer"> <div class="covex left-window"> <div> <div class="covex bar-left"> <div class="card bar-large"> <header class="card-header"> <p class="card-header-title"> <span class="icon"> <i class="fas fa-database" aria-hidden="true"></i> </span> Choose Dataset </p> <a (click)="collabsData = !collabsData" data-action="collapse" class="card-header-icon is-hidden-fullscreen" aria-label="more options"> <span class="icon"> <i *ngIf="collabsData" class="fas fa-angle-up" aria-hidden="true"></i> <i *ngIf="!collabsData" class="fas fa-angle-down" aria-hidden="true"></i> </span> </a> </header> <div *ngIf="collabsData"> <div class="card-content"> <app-select-dataset [datasetItems]="datasetItems" [selectedDataset]="selectedDataset" (selectedDatasetChange)="selectedDataset = $event; createNetwork($event.data)"> </app-select-dataset> </div> </div> </div> <div class="card bar-large"> <header class="card-header"> <p class="card-header-title"> <span class="icon"> <i class="fas fa-info" aria-hidden="true"></i> </span> Network Overview </p> <a (click)="collabsOverview= !collabsOverview" data-action="collapse" class="card-header-icon is-hidden-fullscreen" aria-label="more options"> <span class="icon"> <i *ngIf="collabsOverview" class="fas fa-angle-up" aria-hidden="true"></i> <i *ngIf="!collabsOverview" class="fas fa-angle-down" aria-hidden="true"></i> </span> </a> </header> <div *ngIf="collabsOverview"> <div class="card-content"> <nav class="level" *ngIf="proteinData"> <div class="level-item has-text-centered"> <div> <p class="heading">Viral<br>Proteins</p> <p class="title"> {{ proteinData.effects.length }}</p> </div> </div> <div class="level-item has-text-centered"> <div> <p class="heading">Host<br>Proteins</p> <p class="title">{{ proteinData.proteins.length }}</p> </div> </div> <div class="level-item has-text-centered"> <div> <p class="heading">Virus-Host<br>Interactions</p> <p class="title">{{ proteinData.edges.length }}</p> </div> </div> </nav> </div> </div> </div> <div class="card bar-large"> <header class="card-header"> <p class="card-header-title"> <span class="icon"> <i class="fas fa-search" aria-hidden="true"></i> </span> Query Protein </p> <a (click)="collabsQuery = !collabsQuery" data-action="collapse" class="card-header-icon is-hidden-fullscreen" aria-label="more options"> <span class="icon"> <i *ngIf="collabsQuery" class="fas fa-angle-up" aria-hidden="true"></i> <i *ngIf="!collabsQuery" class="fas fa-angle-down" aria-hidden="true"></i> </span> </a> </header> <div *ngIf="collabsQuery"> <div class="card-content"> <div class="field"> <div class="control"> <app-query-component [queryItems]="queryItems" (selectItem)="queryAction($event)"></app-query-component> </div> </div> </div> </div> </div> <div class="card bar-large"> <header class="card-header"> <p class="card-header-title"> <span class="icon"> <i class="fas fa-filter" aria-hidden="true"></i> </span> Filter Viral Proteins </p> <a (click)="collabsDFilter = !collabsDFilter" data-action="collapse" class="card-header-icon is-hidden-fullscreen" aria-label="more options"> <span class="icon"> <i *ngIf="collabsDFilter" class="fas fa-angle-up" aria-hidden="true"></i> <i *ngIf="!collabsDFilter" class="fas fa-angle-down" aria-hidden="true"></i> </span> </a> </header> <div *ngIf="collabsDFilter"> <div class="card-content overflow"> <div *ngFor="let bait of viralProteinCheckboxes"> <label class="checkbox"> <input type="checkbox" class="checkbox" [ngModel]="bait.checked" (ngModelChange)="bait.checked = $event; filterNodes()"> {{ bait.data.effectName }} </label> </div> </div> <footer class="card-footer"> <a (click)="reset($event);" class="card-footer-item has-text-danger"> <span class="icon"> <i class="fa fa-refresh"></i> </span> <span> Reset </span> </a> </footer> </div> </div> </div> <div class="covex network"> <div class="card network"> <header class="card-header"> <p class="card-header-title"> Protein-Protein Interaction Network </p> </header> <div class="card-content"> <div class="card-image" id="0"> <div class="parent"> <div class="network center image1" #network> <button class="button is-loading center" alt="Snow">Loading</button> </div> <div class="image2"> <img src="assets/legend.png" width="160px"/> </div> </div> </div> <footer class="card-footer toolbar"> <button (click)="toCanvas()" class="button is-primary is-rounded"> <span class="icon"> <i class="fas fa-camera" aria-hidden="true"></i> </span> <span>Screenshot</span> </button> <div class="field has-addons footer-toggle-buttons"> <p class="control"> <button class="button is-rounded" [class.is-primary]="physicsEnabled" (click)="updatePhysicsEnabled(true)"> <span class="icon is-small"> <i class="fas fa-wind"></i> </span> <span>Animation On</span> </button> </p> <p class="control"> <button class="button is-rounded" [class.is-primary]="!physicsEnabled" (click)="updatePhysicsEnabled(false)"> <span>Off</span> </button> </p> </div> </footer> </div> </div> </div> </div> <div class="analysis-view" *ngIf="selectedAnalysisToken"> <app-analysis-window [(token)]="selectedAnalysisToken" (showDetailsChange)="showDetails = $event[0]; changeInfo($event[1])"></app-analysis-window> </div> </div> <div class="covex bar-right"> <div class="card bar-large"> <header class="card-header"> <p class="card-header-title"> <span class="icon"> <i *ngIf="!showDetails" class="fas fa-info" aria-hidden="true"></i> <i *ngIf="selectedType === 'Host Protein'" class="fas fa-dna" aria-hidden="true"></i> <i *ngIf="selectedType === 'Viral Protein'" class="fas fa-virus" aria-hidden="true"></i> <i *ngIf="selectedType === 'Drug'" class="fas fa-capsules" aria-hidden="true"></i> </span> {{ selectedType }} </p> <a (click)="collabsDetails = !collabsDetails" data-action="collapse" class="card-header-icon is-hidden-fullscreen" aria-label="more options"> <span class="icon"> <i *ngIf="collabsDetails" class="fas fa-angle-up" aria-hidden="true"></i> <i *ngIf="!collabsDetails" class="fas fa-angle-down" aria-hidden="true"></i> </span> </a> </header> <div *ngIf="collabsDetails"> <div class="card-content"> <div *ngIf="showDetails"> <p *ngIf="selectedName && selectedType=='Drug'"><b><span>Name:</span></b> {{ selectedName }} <span class="icon is-small"> <i class="fas fa-capsules"></i> </span></p> <p *ngIf="selectedName && selectedType=='Host Protein'"><b><span>Gene Name:</span></b> {{ selectedName }} <span class="icon is-small"> <i class="fas fa-dna"></i> </span></p> <p *ngIf="selectedVirusName"><b><span>Virus:</span></b> {{ selectedVirusName }} <span class="icon is-small"> <i class="fas fa-virus"></i> </span></p> <p *ngIf="selectedName && selectedType=='Viral Protein'"><b>Effect:</b> {{ selectedName }}</p> <p *ngIf="selectedId && selectedType == 'Host Protein'"><b>Uniprot AC:</b> <a href="https://www.uniprot.org/uniprot/{{ selectedId }}" target="_blank"> {{ selectedId }}</a> </p> <p *ngIf="selectedId && selectedType == 'Drug'"><b>DrugBank ID:</b> <a href="https://www.drugbank.ca/drugs/{{ selectedId }}" target="_blank"> {{ selectedId }}</a> </p> <p *ngIf="selectedStatus === 'investigational' "><b>Status:</b> Investigational <span class="icon is-small"><i class="fas fa-search investigational"></i></span> <p *ngIf="selectedStatus === 'approved' "><b>Status:</b> Approved <span class="icon is-small"><i class="fas fa-check"></i></span> </p> <div class="field has-addons add-remove-toggle"> <p *ngIf="selectedType !== 'Drug'" class="control"> <button class="button is-rounded" [class.is-success]="!analysis.inSelection(selectedName)" [disabled]="analysis.inSelection(selectedName)" (click)="analysis.addItem(selectedItem)"> <span class="icon is-small"> <i class="fas fa-plus"></i> </span> <span>Add to Analysis</span> </button> </p> <p *ngIf="selectedType !== 'Drug'" class="control"> <button class="button is-rounded" [class.is-danger]="analysis.inSelection(selectedName)" [disabled]="!analysis.inSelection(selectedName)" (click)="analysis.removeItem(selectedName)"> <span>Remove</span> <span class="icon is-small"> <i class="fas fa-trash"></i> </span> </button> </p> </div> </div> <div *ngIf="!showDetails"> Please select a node for further information. <!-- <a (click)="selectedAnalysisToken = 'oy4UsXfBDobTucdQBhN9IUzfnpqKwzqx'"> Open Analysis Window </a>--> </div> </div> </div> </div> <div class="card bar-large"> <header class="card-header"> <p class="card-header-title"> <span class="icon"> <i class="fas fa-flask" aria-hidden="true"></i> </span> Analysis </p> <a (click)="collabsAnalysis = !collabsAnalysis" data-action="collapse" class="card-header-icon is-hidden-fullscreen" aria-label="more options"> <span class="icon"> <i *ngIf="collabsAnalysis" class="fas fa-angle-up" aria-hidden="true"></i> <i *ngIf="!collabsAnalysis" class="fas fa-angle-down" aria-hidden="true"></i> </span> </a> </header> <div *ngIf="collabsAnalysis"> <div class="card-content"> <div class="field"> <div class="control"> <button (click)="analysisDialogTarget = 'drug-target'; showAnalysisDialog = true;" class="button is-primary is-fullwidth is-rounded" [disabled]="analysis.getCount() === 0"> <span class="icon"> <i class="fa fa-crosshairs"></i> </span> <span> Find Drug Targets </span> </button> </div> </div> <div class="field"> <div class="control"> <button (click)="analysisDialogTarget = 'drug'; showAnalysisDialog = true;" class="button is-primary is-fullwidth is-rounded" [disabled]="analysis.getCount() === 0"> <span class="icon"> <i class="fa fa-capsules"></i> </span> <span> Find Drugs </span> </button> </div> </div> </div> </div> </div> <div class="card bar-large"> <header class="card-header"> <p class="card-header-title"> <span class="icon"> <i class="fas fa-filter" aria-hidden="true"></i> </span> Tasks </p> <a (click)="collabsTask = !collabsTask" data-action="collapse" class="card-header-icon is-hidden-fullscreen" aria-label="more options"> <span class="icon"> <i *ngIf="collabsSelection" class="fas fa-angle-up" aria-hidden="true"></i> <i *ngIf="!collabsSelection" class="fas fa-angle-down" aria-hidden="true"></i> </span> </a> </header> <div *ngIf="collabsTask"> <div class="card-content overflow"> <app-task-list [(token)]="selectedAnalysisToken"></app-task-list> </div> <footer class="card-footer"> <a (click)="analysis.removeAllTasks(); selectedAnalysisToken = null;" class="card-footer-item has-text-danger"> <span class="icon"> <i class="fa fa-trash"></i> </span> <span> Delete All </span> </a> </footer> </div> </div> <div class="card bar-large"> <header class="card-header"> <p class="card-header-title"> <span class="icon"> <i class="fas fa-filter" aria-hidden="true"></i> </span> Selection </p> <a (click)="collabsSelection = !collabsSelection" data-action="collapse" class="card-header-icon is-hidden-fullscreen" aria-label="more options"> <span class="icon"> <i *ngIf="collabsSelection" class="fas fa-angle-up" aria-hidden="true"></i> <i *ngIf="!collabsSelection" class="fas fa-angle-down" aria-hidden="true"></i> </span> </a> </header> <div *ngIf="collabsSelection"> <div class="card-content overflow"> <table class="table" *ngIf="analysis.getCount() > 0"> <thead> <tr> <td>AC</td> <td>Actions</td> </tr> </thead> <tbody> <tr *ngFor="let p of analysis.getSelection()"> <td>{{p.name}}</td> <td> <button (click)="analysis.removeItem(p.name)" class="button is-small is-danger is-outlined"> <i class="fa fa-trash"></i> </button> </td> </tr> </tbody> </table> <i *ngIf="analysis.getCount() === 0"> To select proteins, click them while pressing CTRL. </i> </div> <footer class="card-footer"> <a (click)="addAllHostProteins()" class="card-footer-item has-text-success"> <span class="icon"> <i class="fa fa-plus"></i> </span> <span> Host Proteins </span> </a> <a (click)="addAllViralProteins()" class="card-footer-item has-text-success"> <span class="icon"> <i class="fa fa-plus"></i> </span> <span> Viral Proteins </span> </a> </footer> <footer class="card-footer"> <a (click)="analysis.resetSelection()" class="card-footer-item has-text-danger"> <span class="icon"> <i class="fa fa-refresh"></i> </span> <span> Reset </span> </a> </footer> </div> </div> </div> </div>