<div id="appWindow" (window:resize)="onResize($event)"> <div class="is-hidden-mobile fullheight" id="appContainer"> <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> <app-license-agreement></app-license-agreement> <app-launch-analysis [(show)]="showAnalysisDialog" [target]="analysisDialogTarget" (taskEvent)="emitTaskEvent($event)" > </app-launch-analysis> <app-add-expressed-proteins [(show)]="showThresholdDialog" [selectedTissue]="networkHandler.activeNetwork.currentViewSelectedTissue" [visibleNodes]="networkHandler.activeNetwork.currentViewNodes" [currentViewProteins]="networkHandler.activeNetwork.currentViewProteins" [expressionMap]="networkHandler.activeNetwork.expressionMap" > </app-add-expressed-proteins> <!-- Start explorer --> <div class="drugstone explorer columns is-gapless" [ngClass]="{ 'is-flex-direction-row-reverse': drugstoneConfig.config.showSidebar === 'right' }" > <!-- Start left sidebar --> <div class="drugstone sidebar column" *ngIf="drugstoneConfig.config.showSidebar" > <app-summary-node *ngIf="drugstoneConfig.config.showItemSelector"></app-summary-node> <app-network-overview *ngIf="drugstoneConfig.config.showOverview"></app-network-overview> <div *ngIf="drugstoneConfig.config.showQuery" class="card bar-large" [ngClass]="{ 'b-text-small': drugstoneConfig.smallStyle }" > <header class="card-header"> <p class="card-header-title"> <app-fa-solid-icon icon="search"></app-fa-solid-icon> Query Node </p> <a (click)="collapseQuery = !collapseQuery" data-action="collapse" class="card-header-icon is-hidden-fullscreen" aria-label="more options" > <app-fa-solid-icon *ngIf="collapseQuery" icon="angle-down" ></app-fa-solid-icon> <app-fa-solid-icon *ngIf="!collapseQuery" icon="angle-left" ></app-fa-solid-icon> </a> </header> <div *ngIf="collapseQuery"> <div class="card-content"> <div class="field"> <div class="control"> <app-query-tile-component (selectItem)="queryAction($event)" [queryItems]="networkHandler.activeNetwork.queryItems" ></app-query-tile-component> </div> </div> </div> </div> </div> <app-quick-drug-target *ngIf="drugstoneConfig.config.showConnectGenes" (taskEvent)="emitTaskEvent($event)" ></app-quick-drug-target> <app-quick-drug *ngIf="drugstoneConfig.config.showSimpleAnalysis" (taskEvent)="emitTaskEvent($event)" ></app-quick-drug> <div *ngIf="drugstoneConfig.config.showAdvAnalysis" class="card bar-large" > <header class="card-header" [ngClass]="{ 'b-text-small': drugstoneConfig.smallStyle }" > <p class="card-header-title"> <app-fa-solid-icon icon="flask"></app-fa-solid-icon> Analysis </p> <a (click)="collapseAnalysis = !collapseAnalysis" data-action="collapse" class="card-header-icon is-hidden-fullscreen" aria-label="more options" > <app-fa-solid-icon *ngIf="collapseAnalysis" icon="angle-down" ></app-fa-solid-icon> <app-fa-solid-icon *ngIf="!collapseAnalysis" icon="angle-left" ></app-fa-solid-icon> </a> </header> <div *ngIf="collapseAnalysis"> <div class="card-content"> <div class="field" *ngIf="!drugstoneConfig.config.showAdvAnalysisContent || drugstoneConfig.config.showAdvAnalysisContent.includes('drug-target-search')"> <div class="control" pTooltip="Find drug targets for the selected proteins." [tooltipStyleClass]=" 'drgstn drgstn-tooltip drgstn-tooltip-top' " tooltipPosition="top" > <button (click)=" analysisDialogTarget = 'drug-target'; showAnalysisDialog = true " class="button is-primary is-fullwidth is-rounded has-tooltip" [disabled]="analysis.getCount() === 0" [ngClass]="{ 'text-small': drugstoneConfig.smallStyle }" > <app-fa-solid-icon icon="crosshairs" classString="first-item-in-button"></app-fa-solid-icon> <span>{{ drugstoneConfig.config.taskTargetName }}</span> </button> </div> </div> <div class="field" *ngIf="!drugstoneConfig.config.showAdvAnalysisContent || drugstoneConfig.config.showAdvAnalysisContent.includes('drug-search')"> <div class="control" pTooltip="Find drugs for the selected proteins." [tooltipStyleClass]=" 'drgstn drgstn-tooltip drgstn-tooltip-top' " tooltipPosition="top" > <button (click)=" analysisDialogTarget = 'drug'; showAnalysisDialog = true " class="button is-primary is-fullwidth is-rounded has-tooltip" [disabled]="analysis.getCount() === 0" [ngClass]="{ 'text-small': drugstoneConfig.smallStyle }" > <app-fa-solid-icon icon="capsules" classString="first-item-in-button"></app-fa-solid-icon> <span> {{ drugstoneConfig.config.taskDrugName }} </span> </button> </div> </div> <div class="field" *ngIf="!drugstoneConfig.config.showAdvAnalysisContent || drugstoneConfig.config.showAdvAnalysisContent.includes('enrichment-gprofiler')"> <div class="control"> <a *ngIf="analysis.getCount() > 0" (click)="openExternal(gProfilerLink())" target="_blank" [ngClass]="{ 'text-small': drugstoneConfig.smallStyle }" class="button is-primary is-fullwidth is-rounded has-tooltip" pTooltip="Use enrichment analysis via g:Profiler (external)." [tooltipStyleClass]=" 'drgstn drgstn-tooltip drgstn-tooltip-top' " tooltipPosition="top" > <app-fa-solid-icon classString="first-item-in-button" icon="external-link-alt" ></app-fa-solid-icon> <span [ngClass]="{ 'text-small': drugstoneConfig.smallStyle }" > g:Profiler Enrichment Analysis </span> </a> <a *ngIf="analysis.getCount() === 0" disabled [ngClass]="{ 'text-small': drugstoneConfig.smallStyle }" class="button is-primary is-fullwidth is-rounded has-tooltip" pTooltip="Use enrichment analysis via g:Profiler (external)." [tooltipStyleClass]=" 'drgstn drgstn-tooltip drgstn-tooltip-top' " tooltipPosition="top" > <app-fa-solid-icon icon="external-link-alt" classString="first-item-in-button" ></app-fa-solid-icon> <span [ngClass]="{ 'text-small': drugstoneConfig.smallStyle }" > g:Profiler Enrichment Analysis </span> </a> </div> </div> <div class="field" *ngIf="!drugstoneConfig.config.showAdvAnalysisContent || drugstoneConfig.config.showAdvAnalysisContent.includes('enrichment-digest')"> <div class="control"> <a *ngIf="analysis.getCount() > 0" (click)="openDigest()" target="_blank" [ngClass]="{ 'text-small': drugstoneConfig.smallStyle }" class="button is-primary is-fullwidth is-rounded has-tooltip" pTooltip="Use enrichment analysis via DIGEST (external)." [tooltipStyleClass]=" 'drgstn drgstn-tooltip drgstn-tooltip-top' " tooltipPosition="top" > <app-fa-solid-icon classString="first-item-in-button" icon="external-link-alt" ></app-fa-solid-icon> <span [ngClass]="{ 'text-small': drugstoneConfig.smallStyle }" > DIGEST Enrichment Analysis </span> </a> <a *ngIf="analysis.getCount() === 0" disabled [ngClass]="{ 'text-small': drugstoneConfig.smallStyle }" class="button is-primary is-fullwidth is-rounded has-tooltip" pTooltip="Use enrichment analysis via DIGEST (external)." [tooltipStyleClass]=" 'drgstn drgstn-tooltip drgstn-tooltip-top' " tooltipPosition="top" > <app-fa-solid-icon icon="external-link-alt" classString="first-item-in-button" ></app-fa-solid-icon> <span [ngClass]="{ 'text-small': drugstoneConfig.smallStyle }" > DIGEST Enrichment Analysis </span> </a> </div> </div> </div> </div> </div> <div *ngIf="drugstoneConfig.config.showTasks" class="card bar-large"> <header class="card-header" [ngClass]="{ 'b-text-small': drugstoneConfig.smallStyle }" > <p class="card-header-title"> <app-fa-solid-icon icon="tasks"></app-fa-solid-icon> Tasks ({{ analysis.tasks != null ? analysis.tasks.length : 0 }}) </p> <a (click)="collapseTask = !collapseTask" data-action="collapse" class="card-header-icon is-hidden-fullscreen" aria-label="more options" > <app-fa-solid-icon *ngIf="collapseTask" icon="angle-down" ></app-fa-solid-icon> <app-fa-solid-icon *ngIf="!collapseTask" icon="angle-left" ></app-fa-solid-icon> </a> </header> <div *ngIf="collapseTask"> <div class="card-content overflow task-list-container" *ngIf="analysis.tasks && analysis.tasks.length > 0" > <app-task-list [(token)]="selectedAnalysisToken"></app-task-list> </div> <footer class="card-footer"> <a *ngIf="analysis.tasks && analysis.tasks.length > 0" (click)=" analysis.removeAllTasks(); selectedAnalysisToken = null " class="card-footer-item has-text-danger" pTooltip="Delete all tasks." [tooltipStyleClass]="'drgstn drgstn-tooltip drgstn-tooltip-top'" tooltipPosition="top" > <app-fa-solid-icon icon="trash"></app-fa-solid-icon> <span> Delete all </span> </a> </footer> </div> </div> <div *ngIf="drugstoneConfig.config.showSelection" class="card bar-large" > <header class="card-header" [ngClass]="{ 'b-text-small': drugstoneConfig.smallStyle }" > <p class="card-header-title"> <app-fa-solid-icon icon="filter"></app-fa-solid-icon> Selection ({{ analysis.getCount() }}) </p> <a (click)="collapseSelection = !collapseSelection" data-action="collapse" class="card-header-icon is-hidden-fullscreen" aria-label="more options" > <app-fa-solid-icon *ngIf="collapseSelection" icon="angle-down" ></app-fa-solid-icon> <app-fa-solid-icon *ngIf="!collapseSelection" icon="angle-left" ></app-fa-solid-icon> </a> </header> <div *ngIf="collapseSelection" class="seed-selection" [ngClass]="{ 'text-normal': 'drugstoneConfig.smallStyle' }" > <div class="card-content"> <table class="table selection-table" *ngIf="analysis.getCount() > 0" > <thead> <tr> <td>Label</td> <td>Group</td> <td *ngIf="drugstoneConfig.currentConfig().identifier !== 'symbol'"> Symbol </td> <td *ngIf="drugstoneConfig.currentConfig().identifier !== 'uniprot'"> Uniprot </td> <td>Actions</td> </tr> </thead> <tbody class="overflow"> <tr *ngFor="let p of analysis.getSelection()"> <td> <p class="is-capitalized">{{ p.data.label }}</p> </td> <td> <p> {{ drugstoneConfig.currentConfig().nodeGroups[p.data['_group']][ "groupName" ] }} </p> </td> <td *ngIf="drugstoneConfig.currentConfig().identifier !== 'symbol'"> <p>{{ p.data.symbol }}</p> </td> <td *ngIf="drugstoneConfig.currentConfig().identifier !== 'uniprot'" class="uniprot" title="{{ p.data.uniprot }}" > <p>{{ p.data.uniprot }}</p> </td> <td style="text-align: center"> <button (click)="analysis.removeItems([p])" class="button is-small is-danger is-outlined has-tooltip" [tooltipStyleClass]="'drgstn drgstn-tooltip drgstn-tooltip-top'" tooltipPosition="top" pTooltip="Remove from selection." > <app-fa-solid-icon icon="trash"></app-fa-solid-icon> </button> </td> </tr> </tbody> </table> <i *ngIf="analysis.getCount() === 0"> Double-click on a node to select it for the analysis. </i> </div> <footer class="card-footer"> <a (click)="analysis.addAllToSelection()" class="card-footer-item text-primary" tooltipPosition="top" pTooltip="Add all proteins to the selection." > <app-fa-solid-icon icon="plus"></app-fa-solid-icon> <span> Add all </span> </a> </footer> <footer class="card-footer"> <a class="card-footer-item text-primary" tooltipPosition="top" pTooltip="Add all proteins to the selection." > <app-fa-solid-icon icon="plus"></app-fa-solid-icon> <span class="is-fullwidth"> <app-group-selection (selectGroupEmitter)="analysis.addGroupToSelection($event)" [nodeGroups]="drugstoneConfig.currentConfig().nodeGroups" ></app-group-selection> </span> </a> </footer> <footer class="card-footer"> <a (click)=" analysis.invertSelection( networkHandler.activeNetwork.currentViewNodes ) " class="card-footer-item text-primary" tooltipPosition="top" pTooltip="Invert the current selection." > <app-fa-solid-icon icon="sync"></app-fa-solid-icon> <span> Invert </span> </a> <a *ngIf="analysis.getSelection().length" (click)="analysis.resetSelection()" class="card-footer-item has-text-danger" tooltipPosition="top" pTooltip="Remove all entries from the selection." > <app-fa-solid-icon icon="broom"></app-fa-solid-icon> <span> Reset </span> </a> </footer> <!-- </div> --> <!-- </div> --> </div> </div> </div> <!-- Start network block --> <div class="drugstone network column" id="main-column"> <!-- analysis panel with analysis network --> <div *ngIf="selectedAnalysisToken"> <app-analysis-panel [(token)]="selectedAnalysisToken" (showDetailsChange)=" networkHandler.activeNetwork.selectedWrapper = $event " (visibleItems)="analysisWindowChanged($event)" ></app-analysis-panel> </div> <!-- explorer network --> <app-network networkType="explorer" [nodeData]="nodeData"></app-network> </div> <!-- End network block --> <div class="is-hidden-tablet mobile-fallback"> Sorry, drugstone is not available for mobile phones. To find information about drugstone, please check the <a routerLink="/about">About</a> page or visit this page with another device with a larger screen. </div> </div> </div> <app-toast></app-toast> </div>