All files / src/app/components/signal-card signal-card.component.html

93.38% Statements 127/136
89.47% Branches 34/38
0% Functions 0/1
95.71% Lines 67/70

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 1311905x             12x   12x   3162x 3150x 2997x     12x         12x 3162x   12x     12x 3162x   12x     12x 3162x     12x 3150x   2334x   11x 2334x 11x 2334x 785x   2334x 1560x 64x 10x   11x   2334x       11x 2334x   166x   3x   166x 3x 332x     332x 335x   3x     3x   2334x     11x 2345x   11x   2334x     11x 11x 2334x 1137x   11x 41x       11x   11x   3150x       12x 2350x   12x     12x 2350x     12x   3162x 12x 3150x 11x 1493x 11x     12x    
@if (signal) {
  <div class="card">
    <div class="card-content">
      <div class="media">
        <div class="media-left">
          <figure class="image is-48x48">
            <!-- <img src="assets/signal.png" alt="Placeholder image"/> -->
            <span class="icon"><i class="iconoir-antenna-signal"></i></span>
          </figure>
        </div>
        <div class="media-content">
          <p class="title is-4 clickable" [routerLink]="['/signals', signal.signal_id]">{{signal.ticker}}</p>
          @if (device) {
            <p class="subtitle is-6">{{signal.type}} of device <a [routerLink]="['/devices', signal.device_id]">{{device.name}}</a></p>
          }
        </div>
      </div>
      <div class="content">
        <div class="field is-grouped is-grouped-multiline">
          <div class="control">
            <div class="tags has-addons">
              <span class="tag is-dark">type</span>
              <span class="tag is-info">{{signal.type}}</span>
            </div>
          </div>
          <div class="control">
            <div class="tags has-addons">
              <span class="tag is-dark">data type</span>
              <span title="{{enumOptions}}" class="tag is-success">{{dataType}}</span>
            </div>
          </div>
          <div class="control">
            <div class="tags has-addons">
              <span class="tag is-dark">unit</span>
              <span class="tag is-primary">{{signal.unit ? signal.unit: 'No unit'}}</span>
            </div>
          </div>
        </div>
        @if (lastSample) {
          <div class="field is-grouped is-grouped-multiline">
            <div  class="control" [id]="signal.device_id + '_' + signal.ticker + '_value' ">
              <div class="tags has-addons">
                <span class="tag is-dark">Value</span>
                @if (lastSample.value !== null) {
                  <span class="tag is-info">
                    @if (dataType === 'epoch') {
                      <span>{{ asNumber(lastSample.value) * 1000 | date:'yyyy/MM/dd - HH:mm:ss' }}</span>
                    }
                    @if (dataType !== 'epoch') {
                      <span>{{ lastSample.value | value }}@if (signal.unit) {
                        {{ signal.unit }}
                      }</span>
                    }
                  </span>
                }
                @if (!lastSample.value === null || lastSample === null) {
                  <span class="tag is-info">No data</span>
                }
              </div>
            </div>
            @if (lastSample.forced_value !== null && lastSample.forced_value !== undefined) {
              <div class="control"
                [id]="signal.device_id + '_' + signal.ticker + '_forced-value' ">
                <div class="tags has-addons">
                  <span class="tag is-dark">Forced Value
                    <!-- eslint-disable-next-line -->
                    <button class="delete" (click)="unForce()" [disabled]="!canControlSignal" [id]="signal.device_id + '_' + signal.ticker + '_unforce_small'"></button>
                  </span>
                  @if (dataType === 'epoch') {
                    <span class="tag is-warning">{{ asNumber(lastSample.forced_value) * 1000 | date:'yyyy/MM/dd - HH:mm:ss' }}</span>
                  }
                  @if (dataType !== 'epoch') {
                    <span class="tag is-warning">{{ lastSample.forced_value | value }}@if (signal.unit) {
                      {{ signal.unit }}
                    }</span>
                  }
                </div>
              </div>
            }
            @if (lastSample !== null && lastSample !== undefined) {
              <div class="control">
                <div class="tags has-addons">
                  <span class="tag is-dark">Last Value</span>
                  <span class="tag is-link">{{lastSample.timestamp*1000 | date:'short'}}</span>
                </div>
              </div>
            }
            @if (lastSample !== null && lastSample !== undefined) {
              <div class="control">
                <div class="tags has-addons">
                  <span class="tag is-dark">Delay</span>
                  <span class="tag is-link">
                    @if (delay < 1) {
                      {{delay * 1000 | number: '1.0-0'}} ms ago
                    }
                    @else {
                    {{delay | number: '1.3-3'}} seconds ago
                  }
                </span>
              </div>
            </div>
          }
        </div>
      }
      @if (sampleStats) {
        <div class="field is-grouped is-grouped-multiline">
          <div class="control">
            <div class="tags has-addons">
              <span class="tag is-dark">Number samples</span>
              <span class="tag is-primary">{{ sampleStats.number_samples }}</span>
            </div>
          </div>
          <div class="control">
            <div class="tags has-addons">
              <span class="tag is-dark">Data size</span>
              <span class="tag is-link">{{ sampleStats.size | numberSuffix }}B</span>
            </div>
          </div>
        </div>
      }
      {{signal.description}}
    </div>
    @if (signal.forcible || signal.commandable) {
      <div class="content">
        <app-signal-command [signal]="signal" [forcedValue]="lastSample !== null ? lastSample.forced_value : null"></app-signal-command>
      </div>
    }
  </div>
</div>
}