Skip to content
Snippets Groups Projects
explorer-page.component.html 19.3 KiB
Newer Older
<div id="appWindow" (window:resize)="onResize($event)">
AndiMajore's avatar
AndiMajore committed
  <div class="is-hidden-mobile fullheight" id="appContainer">
    <app-fa-icons></app-fa-icons>
Hartung, Michael's avatar
Hartung, Michael committed
    <app-loading-screen></app-loading-screen>
AndiMajore's avatar
AndiMajore committed
    <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>
Hartung, Michael's avatar
Hartung, Michael committed
    <app-license-agreement></app-license-agreement>

    <app-launch-analysis
      [(show)]="showAnalysisDialog"
      [target]="analysisDialogTarget"
AndiMajore's avatar
AndiMajore committed
      (taskEvent)="emitTaskEvent($event)"
AndiMajore's avatar
AndiMajore committed
    </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"
AndiMajore's avatar
AndiMajore committed
    >
    </app-add-expressed-proteins>

    <!-- Start explorer -->
    <div
      class="drugstone explorer columns is-gapless"
      [ngClass]="{
        'is-flex-direction-row-reverse':
          drugstoneConfig.config.showSidebar === 'right'
AndiMajore's avatar
AndiMajore committed
      <!-- Start left sidebar -->
      <div
        class="drugstone sidebar column"
        *ngIf="drugstoneConfig.config.showSidebar"
      >
Hartung, Michael's avatar
Hartung, Michael committed
        <app-summary-node *ngIf="drugstoneConfig.config.showItemSelector"></app-summary-node>

        <app-network-overview *ngIf="drugstoneConfig.config.showOverview"></app-network-overview>
Zakaria Louadi's avatar
Zakaria Louadi committed

Julian Späth's avatar
Julian Späth committed

          *ngIf="drugstoneConfig.config.showQuery"
          class="card bar-large"
          [ngClass]="{ 'b-text-small': drugstoneConfig.smallStyle }"
AndiMajore's avatar
AndiMajore committed
          <header class="card-header">
            <p class="card-header-title">
              <app-fa-solid-icon icon="search"></app-fa-solid-icon>
              Query Node
AndiMajore's avatar
AndiMajore committed
            </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>
AndiMajore's avatar
AndiMajore committed
            </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>
AndiMajore's avatar
AndiMajore committed
                </div>
Julian Späth's avatar
Julian Späth committed
              </div>
Julian Späth's avatar
Julian Späth committed
            </div>
          </div>
        </div>
Julian Späth's avatar
Julian Späth committed

Hartung, Michael's avatar
Hartung, Michael committed
        <app-quick-drug-target
          *ngIf="drugstoneConfig.config.showConnectGenes"
          (taskEvent)="emitTaskEvent($event)"
        ></app-quick-drug-target>
Hartung, Michael's avatar
Hartung, Michael committed
        <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 }"
AndiMajore's avatar
AndiMajore committed
            <p class="card-header-title">
              <app-fa-solid-icon icon="flask"></app-fa-solid-icon>
AndiMajore's avatar
AndiMajore committed
              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>
AndiMajore's avatar
AndiMajore committed
            </a>
          </header>
          <div *ngIf="collapseAnalysis">
            <div class="card-content">
AndiMajore's avatar
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."
                  [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>
AndiMajore's avatar
AndiMajore committed
                  </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>
AndiMajore's avatar
AndiMajore committed
                    <span>
                      {{ drugstoneConfig.config.taskDrugName }}
AndiMajore's avatar
AndiMajore committed
                  </button>
                </div>
              </div>
              <div class="field" *ngIf="!drugstoneConfig.config.showAdvAnalysisContent || drugstoneConfig.config.showAdvAnalysisContent.includes('enrichment-gprofiler')">
AndiMajore's avatar
AndiMajore committed
                <div class="control">
                  <a
                    *ngIf="analysis.getCount() > 0"
                    (click)="openExternal(gProfilerLink())"
                    target="_blank"
Hartung, Michael's avatar
Hartung, Michael committed
                    [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
AndiMajore's avatar
AndiMajore committed
                  </a>
                  <a
                    *ngIf="analysis.getCount() === 0"
                    disabled
Hartung, Michael's avatar
Hartung, Michael committed
                    [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
AndiMajore's avatar
AndiMajore committed
                  </a>
                </div>
              </div>
Julian Matschinske's avatar
Julian Matschinske committed
            </div>
          </div>
ge54hev's avatar
ge54hev committed
        </div>
Julian Matschinske's avatar
Julian Matschinske committed

        <div *ngIf="drugstoneConfig.config.showTasks" class="card bar-large">
          <header
            class="card-header"
            [ngClass]="{ 'b-text-small': drugstoneConfig.smallStyle }"
AndiMajore's avatar
AndiMajore committed
            <p class="card-header-title">
              <app-fa-solid-icon icon="tasks"></app-fa-solid-icon>
              Tasks ({{ analysis.tasks != null ? analysis.tasks.length : 0 }})
AndiMajore's avatar
AndiMajore committed
            </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>
AndiMajore's avatar
AndiMajore committed
            </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>
AndiMajore's avatar
AndiMajore committed
            </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."
AndiMajore's avatar
AndiMajore committed
                [tooltipStyleClass]="'drgstn drgstn-tooltip drgstn-tooltip-top'"
                tooltipPosition="top"
              >
                <app-fa-solid-icon icon="trash"></app-fa-solid-icon>
                <span> Delete all </span>
AndiMajore's avatar
AndiMajore committed
              </a>
            </footer>
          </div>
        </div>
        <div
          *ngIf="drugstoneConfig.config.showSelection"
          class="card bar-large"
        >
          <header
            class="card-header"
            [ngClass]="{ 'b-text-small': drugstoneConfig.smallStyle }"
AndiMajore's avatar
AndiMajore committed
            <p class="card-header-title">
              <app-fa-solid-icon icon="filter"></app-fa-solid-icon>
              Selection ({{ analysis.getCount() }})
AndiMajore's avatar
AndiMajore committed
            </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' }"
Michael Hartung's avatar
Michael Hartung committed
              <table
                class="table selection-table"
                *ngIf="analysis.getCount() > 0"
              >
                <thead>
AndiMajore's avatar
AndiMajore committed
                  <td *ngIf="drugstoneConfig.currentConfig().identifier !== 'symbol'">
AndiMajore's avatar
AndiMajore committed
                  <td *ngIf="drugstoneConfig.currentConfig().identifier !== 'uniprot'">
Michael Hartung's avatar
Michael Hartung committed
                </thead>
                <tr *ngFor="let p of analysis.getSelection()">
                  <td>
                    <p class="is-capitalized">{{ p.data.label }}</p>
                  </td>
                  <td>
                    <p>
                      {{
AndiMajore's avatar
AndiMajore committed
                      drugstoneConfig.currentConfig().nodeGroups[p.data['_group']][
AndiMajore's avatar
AndiMajore committed
                  <td *ngIf="drugstoneConfig.currentConfig().identifier !== 'symbol'">
AndiMajore's avatar
AndiMajore committed
                    *ngIf="drugstoneConfig.currentConfig().identifier !== 'uniprot'"
                    title="{{ p.data.uniprot }}"
                    <p>{{ p.data.uniprot }}</p>
                  <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>
Michael Hartung's avatar
Michael Hartung committed
                </tbody>
              </table>
              <i *ngIf="analysis.getCount() === 0">
                Double-click on a node to select it for the analysis.
              </i>
Julian Matschinske's avatar
Julian Matschinske committed

Michael Hartung's avatar
Michael Hartung committed
            <footer class="card-footer">
Hartung, Michael's avatar
Hartung, Michael committed
              <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)"
AndiMajore's avatar
AndiMajore committed
                    [nodeGroups]="drugstoneConfig.currentConfig().nodeGroups"
                  ></app-group-selection>
                </span>
              </a>
            </footer>
            <footer class="card-footer">
              <a
                (click)="
                  analysis.invertSelection(
                    networkHandler.activeNetwork.currentViewNodes
                  )
                "
Hartung, Michael's avatar
Hartung, Michael committed
                class="card-footer-item text-primary"
                tooltipPosition="top"
                pTooltip="Invert the current selection."
              >
                <app-fa-solid-icon icon="sync"></app-fa-solid-icon>
Hartung, Michael's avatar
Hartung, Michael committed
                <span> Invert </span>
              </a>
Michael Hartung's avatar
Michael Hartung committed
              <a
                *ngIf="analysis.getSelection().length"
                (click)="analysis.resetSelection()"
                class="card-footer-item has-text-danger"
Michael Hartung's avatar
Michael Hartung committed
                tooltipPosition="top"
                pTooltip="Remove all entries from the selection."
              >
                <app-fa-solid-icon icon="broom"></app-fa-solid-icon>
Michael Hartung's avatar
Michael Hartung committed
                <span> Reset </span>
              </a>
            </footer>
Julian Matschinske's avatar
Julian Matschinske committed

Michael Hartung's avatar
Michael Hartung committed
            <!-- </div> -->
            <!-- </div>  -->
AndiMajore's avatar
AndiMajore committed
          </div>
        </div>
      </div>
      <!-- Start network block -->
Michael Hartung's avatar
Michael Hartung committed
      <div class="drugstone network column" id="main-column">
        <!-- analysis panel with analysis network -->
          <app-analysis-panel
            [(token)]="selectedAnalysisToken"
            (showDetailsChange)="
              networkHandler.activeNetwork.selectedWrapper = $event
            "
            (visibleItems)="analysisWindowChanged($event)"
          ></app-analysis-panel>
        </div>
        <!-- explorer network -->
Hartung, Michael's avatar
Hartung, Michael committed
        <app-network networkType="explorer" [nodeData]="nodeData"></app-network>
      <div class="is-hidden-tablet mobile-fallback">
Michael Hartung's avatar
Michael Hartung committed
        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.
AndiMajore's avatar
AndiMajore committed
  </div>
Hartung, Michael's avatar
Hartung, Michael committed

  <app-toast></app-toast>
Julian Matschinske's avatar
Julian Matschinske committed
</div>