Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
task-list.component.html 5.68 KiB
<div class="content">
  <div
    class="list is-hoverable"
    [ngClass]="{ 'text-normal': drugstoneConfig.smallStyle }"
  >
    <a
      *ngFor="let task of analysis.tasks"
      class="list-item box small-box"
      [class.is-active]="task.token === token"
    >
      <div *ngIf="!task.info.startedAt">
        <div class="columns mb-0">
          <div class="column is-8">
            <span class="is-capitalized"
              ><i
                class="fa"
                [class.fa-capsules]="task.info.target === 'drug'"
                [class.fa-crosshairs]="task.info.target === 'drug-target'"
              ></i>
              {{ algorithmNames[task.info.algorithm] }}</span
            >
          </div>
          <div class="column">
            <app-fa-solid-icon
              classString="is-pulled-right has-text-warning"
              icon="pause"
            ></app-fa-solid-icon>
          </div>
        </div>
        <div class="columns mb-0">
          <div class="column is-8 pt-0 pb-0">
            <small
              *ngIf="
                task.stats.queueLength > 0 && task.stats.queuePosition === 1
              "
            >
              Queued: 1 other task to finish
            </small>
            <small
              *ngIf="task.stats.queueLength > 0 && task.stats.queuePosition > 1"
            >
              Queued: {{ task.stats.queuePosition }} other tasks to finish
            </small>
            <small
              *ngIf="
                task.stats.queueLength === 0 || task.stats.queuePosition === 0
              "
            >
              Execution imminent...
            </small>
          </div>
          <div class="column pt-0 pb-0">
            <a
              (click)="analysis.removeTask(task.token)"
              class="has-text-danger is-pulled-right"
            >
              <app-fa-solid-icon icon="trash"></app-fa-solid-icon>
            </a>
          </div>
        </div>
      </div>
      <div *ngIf="!task.info.done && !task.info.failed && task.info.startedAt">
        <div class="columns mb-0">
          <div class="column is-8">
            <span class="is-capitalized"
              ><i
                class="fa"
                [class.fa-capsules]="task.info.target === 'drug'"
                [class.fa-crosshairs]="task.info.target === 'drug-target'"
              ></i>
              {{ algorithmNames[task.info.algorithm] }}</span
            >
          </div>
          <div class="column">
            <app-fa-solid-icon
              classString="is-pulled-right"
              icon="spinner"
            ></app-fa-solid-icon>
          </div>
        </div>
        <div class="columns mb-0">
          <div class="column is-8 pt-0 pb-0">
            <small>Started {{ task.info.startedAt | date: "short" }}</small>
          </div>
          <div class="column pt-0 pb-0">
            <a
              (click)="analysis.removeTask(task.token)"
              class="has-text-danger is-pulled-right"
            >
              <app-fa-solid-icon icon="trash"></app-fa-solid-icon>
            </a>
          </div>
        </div>
        <progress
          class="progress is-success"
          [value]="task.info.progress * 100"
          max="100"
        ></progress>
      </div>
      <div
        *ngIf="task.info.done"
        (click)="open(task.token)"
        pTooltip="Show analysis results"
        [tooltipStyleClass]="'drgstn drgstn-tooltip drgstn-tooltip-top'"
        tooltipPosition="top"
      >
        <div class="columns mb-0">
          <div class="column is-8">
            <span class="is-capitalized"
              ><i
                class="fa"
                [class.fa-capsules]="task.info.target === 'drug'"
                [class.fa-crosshairs]="task.info.target === 'drug-target'"
              ></i>
              {{ algorithmNames[task.info.algorithm] }}</span
            >
          </div>
          <div class="column">
            <app-fa-solid-icon
              classString="is-pulled-right has-text-success"
              icon="check"
            ></app-fa-solid-icon>
          </div>
        </div>
        <div class="columns mb-0">
          <div class="column is-8 pt-0 pb-0">
            <small>Finished {{ task.info.finishedAt | date: "short" }}</small>
          </div>
          <div class="column pt-0 pb-0">
            <a
              (click)="analysis.removeTask(task.token)"
              class="has-text-danger is-pulled-right"
            >
              <app-fa-solid-icon icon="trash"></app-fa-solid-icon>
            </a>
          </div>
        </div>
      </div>
      <div *ngIf="task.info.failed">
        <div class="columns mb-0">
          <div class="column is-8">
            <span class="is-capitalized"
              ><i
                class="fa"
                [class.fa-capsules]="task.info.target === 'drug'"
                [class.fa-crosshairs]="task.info.target === 'drug-target'"
              ></i>
              {{ algorithmNames[task.info.algorithm] }}</span
            >
          </div>
          <div class="column">
            <app-fa-solid-icon
              classString="is-pulled-right"
              icon="exclamation-triangle"
            ></app-fa-solid-icon>
          </div>
        </div>
        <div class="columns mb-0">
          <div class="column is-8 pt-0 pb-0 has-text-danger">
            <small class="status-field">{{ task.info.status }}</small>
          </div>
          <div class="column pt-0 pb-0">
            <a
              (click)="analysis.removeTask(task.token)"
              class="has-text-danger is-pulled-right"
            >
              <app-fa-solid-icon icon="trash"></app-fa-solid-icon>
            </a>
          </div>
        </div>
      </div>
    </a>
  </div>
</div>