<!--
~ Copyright 2018-present Open Networking Foundation
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~     http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<div id="ov-alarm-table">
    <onos-loading [theme]="'light'" [running]="loadingIconShown"></onos-loading>
    <div class="tabular-header">
    <h2>Alarms  for {{ "all devices."}} ({{ tableData.length }} total)</h2>
    <div class="ctrl-btns">
      <div class="refresh" (click)="toggleRefresh()">
        <!-- See icon.theme.css for the defintions of the classes active and refresh-->
        <onos-icon classes="{{ autoRefresh?'active refresh':'refresh' }}" iconId="refresh" iconSize="36" toolTip="{{ autoRefreshTip }}"></onos-icon>
      </div>
      <!--div class="separator"></div>
      <div (click)="(!!selId) ? confirmAction(AlarmActionEnum.ACKNOWLEDGE) : ''">
        <onos-icon classes="{{ ctrlBtnState.acknowledged?'active-rect play':'play' }}"
                   iconId="play" iconSize="42" toolTip="{{ acknowledgeTip }}"></onos-icon>
      </div>
      <div (click)="(!!selId) ? confirmAction(AlarmActionEnum.CLEAR) : ''">
        <onos-icon classes="{{ ctrlBtnState.cleared?'active-rect stop':'stop' }}"
                   iconId="stop" iconSize="42" toolTip="{{ clearTip }}"></onos-icon>
      </div-->
    </div>
  </div>

  <div class="summary-list" class="summary-list" onosTableResize>

    <div class="table-header">
      <table>
        <tr>
          <td colId="alarmId" (click)="onSort('id')">Id
              <onos-icon classes="active-sort" [iconSize]="10" [iconId]="sortIcon('id')"></onos-icon>
          </td>
          <td colId="alarmDeviceId" (click)="onSort('alarmDeviceId')">Device
              <onos-icon classes="active-sort" [iconSize]="10" [iconId]="sortIcon('alarmDeviceId')"></onos-icon>
          </td>
          <td colId="alarmDesc" (click)="onSort('alarmDesc')">Description
              <onos-icon classes="active-sort" [iconSize]="10" [iconId]="sortIcon('alarmDesc')"></onos-icon>
          </td>
          <td colId="alarmSource" (click)="onSort('alarmSource')">Source
              <onos-icon classes="active-sort" [iconSize]="10" [iconId]="sortIcon('alarmSource')"></onos-icon>
          </td>
          <td colId="alarmTimeRaised" (click)="onSort('alarmTimeRaised')">Time Raised
              <onos-icon classes="active-sort" [iconSize]="10" [iconId]="sortIcon('alarmTimeRaised')"></onos-icon>
          </td>
          <td colId="alarmSeverity" (click)="onSort('alarmSeverity')">Severity
              <onos-icon classes="active-sort" [iconSize]="10" [iconId]="sortIcon('alarmSeverity')"></onos-icon>
          </td>
          <td colId="alarmAcknowledged" (click)="onSort('alarmAcknowledged')">Acknowledged
              <onos-icon classes="active-sort" [iconSize]="10" [iconId]="sortIcon('alarmAcknowledged')"></onos-icon>
          </td>
        </tr>
      </table>
    </div>

    <div class="table-body">
      <table>
        <tr class="table-body" *ngIf="tableData.length === 0" class="no-data">
          <td colspan="9">{{ annots.noRowsMsg }}</td>
        </tr>
        <tr *ngFor="let item of tableData | filter : tableDataFilter" (click)="selectCallback($event, item)" [ngClass]="{selected: item.id === selId, 'data-change': isChanged(item.id)}">
          <td>{{ item.id }}</td>
          <td>{{ item.alarmDeviceId }}</td>
          <td>{{ item.alarmDesc }}</td>
          <td>{{ item.alarmSource }}</td>
          <td>{{ item.alarmTimeRaised }}</td>
          <td>{{ item.alarmSeverity }}</td>
          <td class="table-icon">
            <onos-icon [iconId]="ackIcon(item.alarmAcknowledged)"></onos-icon>
          </td>
        </tr>
      </table>
    </div>
  </div>

  <onos-alarmdetails class="floatpanels" id="{{ selId }}" (closeEvent)="deselectRow($event)"></onos-alarmdetails>
</div>
