Newer
Older
<div id="appWindow" (window:resize)="onResize($event)">
<div class="is-hidden-mobile fullheight" id="appContainer">
<app-fa-icons></app-fa-icons>
<app-launch-analysis
[(show)]="showAnalysisDialog"
[target]="analysisDialogTarget"
<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'
}"
>

Hartung, Michael
committed
<div
class="drugstone sidebar column"
*ngIf="drugstoneConfig.config.showSidebar"
>
<div
*ngIf="drugstoneConfig.config.showItemSelector"
class="card bar-large mt-0"
>
<header
class="card-header"
[ngClass]="{ 'b-text-small': drugstoneConfig.smallStyle }"
>
<p class="card-header-title">

Hartung, Michael
committed
<ng-container
*ngIf="!networkHandler.activeNetwork.selectedWrapper"
>
<app-fa-solid-icon icon="info"></app-fa-solid-icon>

Hartung, Michael
committed
<span> No item selected </span>
</ng-container>
<ng-container
*ngIf="networkHandler.activeNetwork.selectedWrapper"

Hartung, Michael
committed
<span>
{{ drugstoneConfig.currentConfig().nodeGroups[networkHandler.activeNetwork.selectedWrapper.data[networkHandler.activeNetwork.selectedWrapper.data.group === 'selectedNode' ? '_group':'group']].groupName}}

Hartung, Michael
committed
</span>
</ng-container>
</p>
<a
(click)="collapseDetails = !collapseDetails"
data-action="collapse"
class="card-header-icon is-hidden-fullscreen"
aria-label="more options"
>
<app-fa-solid-icon
*ngIf="collapseDetails"
icon="angle-down"
></app-fa-solid-icon>
<app-fa-solid-icon
*ngIf="!collapseDetails"
icon="angle-left"
></app-fa-solid-icon>
</a>
</header>
<div *ngIf="collapseDetails">
<div class="card-content">
[wrapper]="networkHandler.activeNetwork.selectedWrapper"
></app-info-tile>
</div>
</div>
</div>
*ngIf="drugstoneConfig.config.showOverview"
[ngClass]="{ 'b-text-small': drugstoneConfig.smallStyle }"
<header class="card-header">
<p class="card-header-title">
<app-fa-solid-icon icon="info"></app-fa-solid-icon>
<a
(click)="collapseOverview = !collapseOverview"
data-action="collapse"
class="card-header-icon is-hidden-fullscreen"
aria-label="more options"
>
<app-fa-solid-icon
*ngIf="collapseOverview"
icon="angle-down"
></app-fa-solid-icon>
<app-fa-solid-icon
*ngIf="!collapseOverview"
icon="angle-left"
></app-fa-solid-icon>
</a>
</header>
<div *ngIf="collapseOverview">
<div class="card-content">
<nav class="level" *ngIf="proteinData">
<!-- TO DO : CHANGE THIS LATER
<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">Nodes</p>
<p class="title">
AndiMajore
committed
networkHandler.activeNetwork.currentViewNodes != null
? networkHandler.activeNetwork.currentViewNodes.length
: 0
<div class="level-item has-text-centered">
<div>
<p class="heading">Edges</p>
AndiMajore
committed
networkHandler.activeNetwork.currentViewEdges != null
? networkHandler.activeNetwork.currentViewEdges.length
: 0
*ngIf="drugstoneConfig.config.showQuery"
[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>
<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-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"
>
[ngClass]="{ 'b-text-small': drugstoneConfig.smallStyle }"
<app-fa-solid-icon icon="flask"></app-fa-solid-icon>
<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">
AndiMajore
committed
<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."

Hartung, Michael
committed
[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>
<div class="field" *ngIf="!drugstoneConfig.config.showAdvAnalysisContent || drugstoneConfig.config.showAdvAnalysisContent.includes('drug-search')">
<div
class="control"
pTooltip="Find drugs for the selected proteins."

Hartung, Michael
committed
[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 }"
AndiMajore
committed
<app-fa-solid-icon icon="capsules" classString="first-item-in-button"></app-fa-solid-icon>
{{ drugstoneConfig.config.taskDrugName }}
AndiMajore
committed
<div class="field" *ngIf="!drugstoneConfig.config.showAdvAnalysisContent || drugstoneConfig.config.showAdvAnalysisContent.includes('enrichment-gprofiler')">
<a
*ngIf="analysis.getCount() > 0"
(click)="openExternal(gProfilerLink())"
[ngClass]="{ 'text-small': drugstoneConfig.smallStyle }"
class="button is-primary is-fullwidth is-rounded has-tooltip"
pTooltip="Use enrichment analysis via g:Profiler (external)."

Hartung, Michael
committed
[tooltipStyleClass]="
'drgstn drgstn-tooltip drgstn-tooltip-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
<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)."

Hartung, Michael
committed
[tooltipStyleClass]="
'drgstn drgstn-tooltip drgstn-tooltip-top'
"
<app-fa-solid-icon
icon="external-link-alt"
classString="first-item-in-button"
></app-fa-solid-icon>
<span
[ngClass]="{ 'text-small': drugstoneConfig.smallStyle }"
>
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
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
<div *ngIf="drugstoneConfig.config.showTasks" class="card bar-large">
[ngClass]="{ 'b-text-small': drugstoneConfig.smallStyle }"
<app-fa-solid-icon icon="tasks"></app-fa-solid-icon>
Tasks ({{ analysis.tasks != null ? analysis.tasks.length : 0 }})
<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>
<a
*ngIf="analysis.tasks && analysis.tasks.length > 0"
(click)="
analysis.removeAllTasks(); selectedAnalysisToken = null
"
class="card-footer-item has-text-danger"
[tooltipStyleClass]="'drgstn drgstn-tooltip drgstn-tooltip-top'"
<app-fa-solid-icon icon="trash"></app-fa-solid-icon>
<div
*ngIf="drugstoneConfig.config.showSelection"
class="card bar-large"
>
[ngClass]="{ 'b-text-small': drugstoneConfig.smallStyle }"
<app-fa-solid-icon icon="filter"></app-fa-solid-icon>
<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 overflow">
<table
class="table selection-table"
*ngIf="analysis.getCount() > 0"
>
<thead>
AndiMajore
committed
<tr>
<td>Label</td>
<td>Group</td>
<td *ngIf="drugstoneConfig.currentConfig().identifier !== 'symbol'">
AndiMajore
committed
Symbol
</td>
<td *ngIf="drugstoneConfig.currentConfig().identifier !== 'uniprot'">
AndiMajore
committed
Uniprot
</td>
<td>Actions</td>
</tr>
AndiMajore
committed
<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']][
AndiMajore
committed
"groupName"
]
}}
</p>
</td>
<td *ngIf="drugstoneConfig.currentConfig().identifier !== 'symbol'">
AndiMajore
committed
<p>{{ p.data.symbol }}</p>
</td>
<td
*ngIf="drugstoneConfig.currentConfig().identifier !== 'uniprot'"
AndiMajore
committed
class="uniprot"
title="{{ p.data.uniprotAc }}"
>
<p>{{ p.data.uniprotAc }}</p>
</td>
<td>
<button
(click)="analysis.removeItems([p])"
class="button is-small is-danger is-outlined has-tooltip"
tooltipPosition="top"
pTooltip="Remove from selection."
AndiMajore
committed
<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>
(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>
<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>
<!-- Start network block -->
<!-- analysis panel with analysis network -->
<div class="analysis-view" *ngIf="selectedAnalysisToken">
<app-analysis-panel
[(token)]="selectedAnalysisToken"
(showDetailsChange)="
networkHandler.activeNetwork.selectedWrapper = $event
"
(visibleItems)="analysisWindowChanged($event)"
></app-analysis-panel>
</div>
<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.