<!--
~ Copyright 2019-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.
-->
<!-- Port partial HTML -->
<div id="ov-roadm-port">
    <!--<onos-loading [theme]="'light'" [running]="loadingIconShown"></onos-loading>-->
    <div class="tabular-header">
        <h2>
            Ports for Optical Device {{devId}} ({{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="42" toolTip="{{ autoRefreshTip }}"></onos-icon>
            </div>

            <div class="separator"></div>

            <div routerLink="/roadm-gui" [queryParams]="{ devId: devId }" routerLinkActive="active">
                <onos-icon classes="{{ devId ? 'active-rect':undefined }}" iconId="deviceTable" iconSize="42" toolTip="{{deviceTip}}"></onos-icon>
            </div>

            <!--<div routerLink="/flow" [queryParams]="{ devId: devId }" routerLinkActive="active">-->
                <!--<onos-icon classes="{{ devId ? 'active-rect' :undefined}}" iconId="flowTable" iconSize="42" toolTip="{{ flowTip }}"></onos-icon>-->
            <!--</div>-->

            <div>
                <onos-icon classes="{{ devId ? 'current-view' :undefined}}" iconId="portTable" iconSize="42"></onos-icon>
            </div>

        </div>

        <div class="search">
            <input id="searchinput" [(ngModel)]="tableDataFilter.queryStr" type="search" #search placeholder="Search" />
            <select [(ngModel)]="tableDataFilter.queryBy">
                <option value="" disabled>Search By</option>
                <option value="$">All Fields</option>
                <option value="id">Port ID</option>
                <option value="name">Pkts Received</option>
                <option value="type">Pkts Sent</option>
                <option value="enabled">Bytes Received</option>
                <option value="grid">Bytes Sent</option>
                <option value="hasTargetPower">Pkts RX Dropped</option>
            </select>
        </div>
    </div>

    <div class="summary-list" onosTableResize>
        <div class="table-header">
            <table>
                <tr>
                    <td colId="id">Port ID</td>
                    <td colId="reversePort">Reverse Port</td>
                    <td colId="name">Name</td>
                    <td colId="type">Type</td>
                    <td colId="enabled">Enabled</td>
                    <td colId="minFreq">Min Freq (GHz)</td>
                    <td colId="maxFreq">Max Freq (GHz)</td>
                    <td colId="grid">Grid (GHz)</td>
                    <td colId="powerRange">Power Range (dBm)</td>
                    <td colId="currentPower">Current Power (dBm)</td>
                    <td colId="targetPower">Target Power (dBm)</td>
                    <td colId="hasTargetPower">Has Target Power</td>
                    <td colId="serviceState">Service State</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 port of tableData | filter : tableDataFilter" (click)="selectCallback($event, port)" [ngClass]="{selected: port.id === selId, 'data-change': isChanged(port.id)}">
                    <td>{{port.id}}</td>
                    <td [ngClass]="(isDelta() ? 'delta' : '')">{{port.reversePort}}</td>
                    <td [ngClass]="(isDelta() ? 'delta' : '')">{{port.name}}</td>
                    <td [ngClass]="(isDelta() ? 'delta' : '')">{{port.type}}</td>
                    <td [ngClass]="(isDelta() ? 'delta' : '')">{{port.enabled}}</td>
                    <td [ngClass]="(isDelta() ? 'delta' : '')">{{port.type=='OCH'?port.minFreq:""}}</td>
                    <td [ngClass]="(isDelta() ? 'delta' : '')">{{port.type=='OCH'?port.maxFreq:""}}</td>
                    <td [ngClass]="(isDelta() ? 'delta' : '')">{{port.type=='OCH'?port.grid:""}}</td>
                    <td [ngClass]="(isDelta() ? 'delta' : '')">{{port.powerRange}}</td>
                    <td [ngClass]="(isDelta() ? 'delta' : '')">{{port.currentPower}}</td>
                    <td [ngClass]="(isDelta() ? 'delta' : '')">
                        <form [formGroup]="powerForm" (ngSubmit)="submitPower(devId, port.id)" *ngIf="port.type=='OCH'">
                            <input type="number" step="any" style="width:50px" value="{{port.targetPower}}" formControlName="newPower" required>
                            <button type="submit">Submit</button>
                        </form>
                    </td>
                    <td [ngClass]="(isDelta() ? 'delta' : '')">{{port.hasTargetPower}}</td>
                    <td [ngClass]="(isDelta() ? 'delta' : '')">{{port.serviceState}}</td>
                </tr>
            </table>
        </div>
    </div>
</div>
