| <!-- Flow partial HTML --> |
| <div id="ov-flow"> |
| <div class="tabular-header"> |
| <h2> |
| Flows for Device {{devId || "(No device selected)"}} |
| ({{tableData.length}} total) |
| </h2> |
| |
| <div class="ctrl-btns"> |
| <div class="refresh" ng-class="{active: autoRefresh}" |
| icon icon-size="42" icon-id="refresh" |
| tooltip tt-msg="autoRefreshTip" |
| ng-click="toggleRefresh()"></div> |
| |
| <div class="separator"></div> |
| |
| <span ng-if="brief"> |
| <div class="active" |
| icon icon-id="plus" icon-size="42" |
| tooltip tt-msg="detailTip" |
| ng-click="briefToggle()"> </div> |
| </span> |
| |
| <span ng-if="!brief"> |
| <div class="active" |
| icon icon-id="minus" icon-size="42" |
| tooltip tt-msg="briefTip" |
| ng-click="briefToggle()"> </div> |
| </span> |
| |
| <div class="separator"></div> |
| |
| <div class="active" |
| icon icon-id="deviceTable" icon-size="42" |
| tooltip tt-msg="deviceTip" |
| ng-click="nav('device')"></div> |
| |
| <div class="current-view" |
| icon icon-id="flowTable" icon-size="42"></div> |
| |
| <div class="active" |
| icon icon-id="portTable" icon-size="42" |
| tooltip tt-msg="portTip" |
| ng-click="nav('port')"></div> |
| |
| <div class="active" |
| icon icon-id="groupTable" icon-size="42" |
| tooltip tt-msg="groupTip" |
| ng-click="nav('group')"></div> |
| |
| <div class="active" |
| icon icon-id="meterTable" icon-size="42" |
| tooltip tt-msg="meterTip" |
| ng-click="nav('meter')"></div> |
| |
| </div> |
| |
| <div class="search"> |
| <input type="text" ng-model="queryTxt" placeholder="Search Text"/> |
| <select ng-model="queryBy"> |
| <option value="" disabled>Search By</option> |
| <option value="$">All Fields</option> |
| <option value="id">Flow ID</option> |
| <option value="appId">App ID</option> |
| <option value="groupId">Group ID</option> |
| <option value="tableId">Table ID</option> |
| <option value="priority">Priority</option> |
| <option value="timeout">Timeout</option> |
| </select> |
| </div> |
| |
| </div> |
| |
| <div class="summary-list" onos-table-resize> |
| <div class="table-header" onos-sortable-header> |
| <table> |
| <tr> |
| <td colId="id" col-width="180px" sortable>Flow ID </td> |
| <td colId="appId" sortable>App ID </td> |
| <td colId="groupId" sortable>Group ID </td> |
| <td colId="tableId" sortable>Table ID </td> |
| <td colId="priority" sortable>Priority </td> |
| <td colId="timeout" sortable>Timeout </td> |
| <td colId="permanent" sortable>Permanent </td> |
| <td colId="state" sortable>State </td> |
| <td class="right" colId="packets" sortable>Packets </td> |
| <td class="right" colId="bytes" sortable>Bytes </td> |
| </tr> |
| </table> |
| </div> |
| |
| <div class="table-body"> |
| <table onos-flash-changes id-prop="id"> |
| <tr ng-if="!tableData.length" class="no-data"> |
| <td colspan="10"> |
| {{annots.no_rows_msg}} |
| </td> |
| </tr> |
| |
| <tr ng-repeat-start="flow in tableData | filter:queryFilter track by $index" |
| ng-click="selectCallback($event, flow)" |
| ng-class="{selected: flow.id === selId}" |
| ng-repeat-complete row-id="{{flow.id}}"> |
| <td>{{flow.id}}</td> |
| <td>{{flow.appId}}</td> |
| <td>{{flow.groupId}}</td> |
| <td>{{flow.tableId}}</td> |
| <td>{{flow.priority}}</td> |
| <td>{{flow.timeout}}</td> |
| <td>{{flow.permanent}}</td> |
| <td>{{flow.state}}</td> |
| <td class="right">{{flow.packets}}</td> |
| <td class="right">{{flow.bytes}}</td> |
| </tr> |
| <tr row-id="{{flow.id}}" ng-hide="brief"> |
| <td class="selector" colspan="10" >{{flow.selector}} </td> |
| </tr> |
| <tr row-id="{{flow.id}}" ng-repeat-end ng-hide="brief"> |
| <td class="treatment" colspan="10">{{flow.treatment}}</td> |
| </tr> |
| </table> |
| </div> |
| |
| </div> |
| <flow-details-panel></flow-details-panel> |
| |
| </div> |