<!--
~ 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.
-->

<!-- YANG Model partial HTML -->
<div id="ov-yang-model">
<!--     yangfiledrop on-file-drop="yangDropped()">-->
    <onos-loading [theme]="'light'" [running]="loadingIconShown"></onos-loading>
    <div class="tabular-header">
        <h2>YANG Models ({{tableData.length}} total)</h2>
        <div class="ctrl-btns">
            <div class="refresh" (click)="toggleRefresh()">
            <onos-icon [classes]="autoRefresh?'active refresh':'refresh'"
                       [iconId]="'refresh'" [iconSize]="36"
                       [toolTip]="autoRefreshTip"></onos-icon>
            </div>
            <div class="separator"></div>

<!--            <form id="inputYangFileForm">-->
<!--                <input id="uploadYangFile"-->
<!--                       type="file" size="50" accept=".zip, *.jar, *.yang"-->
<!--                       yang-file-model="yangFile">-->
<!--            </form>-->
            <div class="active"  (click)="triggerForm()">
                <onos-icon classes="{{ 'active-rect upload' }}" [iconSize]="36"
                           [iconId]="'nav_yang'" [toolTip]="'Upload a YANG file (.yang)'"></onos-icon>
            </div>
        </div>
    </div>

    <div class="summary-list" onosTableResize>
        <div class="table-header">
            <table>
                <tr>
                    <td colId="modelId">Model ID</td>
                    <td colId="id">Module</td>
                    <td colId="revision">Revision</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 ymodel of tableData | filter: tableDataFilter"
                    (click)="selectCallback($event, ymodel)"
                    [ngClass]="{selected: ymodel.id === selId, 'data-change': isChanged(ymodel.id)}">
                    <td>{{ymodel.modelId}}</td>
                    <td>{{ymodel.id}}</td>
                    <td>{{ymodel.revision}}</td>
                </tr>
            </table>
        </div>
    </div>

    <onos-yangdetails class="floatpanels" [id]="selId" [modelId]="selectedModel?.modelId" [revision]="selectedModel?.revision"
                      (closeEvent)="deselectRow($event)"></onos-yangdetails>

</div>

