blob: 4d4e8f61b579dfb3aaa855d63489a06cb3a6234a [file] [log] [blame]
Yi Tsenga87b40c2017-09-10 00:59:03 -07001<!--
2 ~ Copyright 2017-present Open Networking Foundation
3 ~
4 ~ Licensed under the Apache License, Version 2.0 (the "License");
5 ~ you may not use this file except in compliance with the License.
6 ~ You may obtain a copy of the License at
7 ~
8 ~ http://www.apache.org/licenses/LICENSE-2.0
9 ~
10 ~ Unless required by applicable law or agreed to in writing, software
11 ~ distributed under the License is distributed on an "AS IS" BASIS,
12 ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 ~ See the License for the specific language governing permissions and
14 ~ limitations under the License.
15 -->
16
17<div id="ov-pipeconf">
18 <div class="tabular-header">
19 <h2>
20 Pipeconf for Device {{devId || "(No device selected)"}}
21 </h2>
22
23 <div class="ctrl-btns">
24 <div class="refresh" ng-class="{active: autoRefresh}"
25 icon icon-size="42" icon-id="refresh"
26 tooltip tt-msg="autoRefreshTip"
27 ng-click="autoRefresh = !autoRefresh"></div>
28
29 <div class="separator"></div>
30
31 <div class="active"
32 icon icon-id="deviceTable" icon-size="42"
33 tooltip tt-msg="deviceTip"
34 ng-click="nav('device')"></div>
35
36 <div class="active"
37 icon icon-id="flowTable" icon-size="42"
38 tooltip tt-msg="flowTip"
39 ng-click="nav('flow')"></div>
40
41 <div class="active"
42 icon icon-id="portTable" icon-size="42"
43 tooltip tt-msg="portTip"
44 ng-click="nav('port')"></div>
45
46 <div class="active"
47 icon icon-id="groupTable" icon-size="42"
48 tooltip tt-msg="groupTip"
49 ng-click="nav('group')"></div>
50
51 <div class="active"
52 icon icon-id="meterTable" icon-size="42"
53 tooltip tt-msg="meterTip"
54 ng-click="nav('meter')"></div>
55
56 <div class="current-view"
57 icon icon-id="pipeconfTable" icon-size="42"
58 tooltip tt-msg="pipeconfTip"></div>
59 </div>
60 </div>
61 <div id="pipeconf-info" auto-height>
62 <div id="pipeconf-basic">
63 <h2>Basic information</h2>
64 <table class="pipeconf-table">
65 <tr>
66 <th class="text-center" style="width: 160px">Name</th>
67 <th>Info</th>
68 </tr>
69 <tr ng-show="collapsePipeconf">
70 <td colspan="2" class="text-center">....</td>
71 </tr>
72 <tr ng-show="pipeconf === null">
73 <td colspan="2" class="no-data">
74 No PiPipeconf for this device
75 </td>
76 </tr>
77 <tr ng-show-start="!collapsePipeconf && pipeconf !== null">
78 <td class="text-center">ID</td>
79 <td>{{pipeconf.id}}</td>
80 </tr>
81 <tr>
82 <td class="text-center">Behaviors</td>
83 <td>{{pipeconf.behaviors.join(", ")}}</td>
84 </tr>
85 <tr ng-show-end>
86 <td class="text-center">Extensions</td>
87 <td>{{pipeconf.extensions.join(", ")}}</td>
88 </tr>
89 </table>
90 </div>
91 <!-- ng-show-start for checking pipeconf !== null -->
92 <h2 ng-show-start="pipeconf !== null">Pipeline Model</h2>
93 <div id="pipeconf-headers">
94 <h3>Headers</h3>
95 <div ng-show="!collapseHeaders"
96 class="collapse-btn" icon icon-id="plus" icon-size="30"
97 ng-click="collapseHeaders = !collapseHeaders"></div>
98 <div ng-show="collapseHeaders"
99 class="collapse-btn" icon icon-id="minus" icon-size="30"
100 ng-click="collapseHeaders = !collapseHeaders"></div>
101 <table class="pipeconf-table">
102 <tr>
103 <th style="width: 160px">Name</th>
104 <th class="text-center" style="width: 100px">Is metadata</th>
105 <th class="text-center" style="width: 100px">Index</th>
106 <th>Header type</th>
107 </tr>
108 <tr ng-show="collapseHeaders">
109 <td colspan="4" class="clickable text-center"
110 ng-click="collapseHeaders = !collapseHeaders">....</td>
111 </tr>
112 <tr ng-show="!collapseHeaders && pipelineModel.headers.length === 0">
113 <td colspan="4" class="no-data">No Data</td>
114 </tr>
115 <tr ng-show="!collapseHeaders"
116 ng-repeat="header in pipelineModel.headers"
117 ng-click="headerSelectCb($event, header)"
118 ng-class="{selected: header.name === selectedId.name && selectedId.type === 'header'}"
119 class="clickable">
120 <td>{{header.name}}</td>
121 <td class="text-center">{{header.isMetadata}}</td>
122 <td class="text-center">{{header.index}}</td>
123 <td>{{header.type.name}}</td>
124 </tr>
125 </table>
126 </div>
127 <div id="pipeconf-actions">
128 <h3>Actions</h3>
129 <div ng-show="!collapseActions"
130 class="collapse-btn" icon icon-id="plus" icon-size="30"
131 ng-click="collapseActions = !collapseActions"></div>
132 <div ng-show="collapseActions"
133 class="collapse-btn" icon icon-id="minus" icon-size="30"
134 ng-click="collapseActions = !collapseActions"></div>
135 <table class="pipeconf-table">
136 <tr>
137 <th style="width: 160px">Name</th>
138 <th>Action parameters</th>
139 </tr>
140 <tr ng-show="collapseActions">
141 <td colspan="2" class="clickable text-center"
142 ng-click="collapseActions = !collapseActions">....</td>
143 </tr>
144 <tr ng-show="!collapseActions && pipelineModel.actions.length === 0">
145 <td colspan="2" class="no-data">No Data</td>
146 </tr>
147 <tr ng-show="!collapseActions"
148 ng-repeat="action in pipelineModel.actions"
149 ng-click="actionSelectCb($event, action)"
150 ng-class="{selected: action.name === selectedId.name && selectedId.type === 'action'}"
151 class="clickable">
152 <td style="width: 160px">{{action.name}}</td>
153 <td ng-show="action.params.length != 0">{{ mapToNames(action.params).join(', ') }}</td>
154 <td ng-show="action.params.length == 0">No action params</td>
155 </tr>
156 </table>
157 </div>
158
159 <div id="pipeconf-tables" ng-show-end>
160 <h3>Tables</h3>
161 <div ng-show="!collapseTables" class="collapse-btn"
162 icon icon-id="plus" icon-size="30"
163 ng-click="collapseTables = !collapseTables"></div>
164 <div ng-show="collapseTables" class="collapse-btn"
165 icon icon-id="minus" icon-size="30"
166 ng-click="collapseTables = !collapseTables"></div>
167 <table class="pipeconf-table">
168 <tr>
169 <th class="text-center" style="width: 160px">Name</th>
170 <th class="text-center" style="width: 100px">Max size</th>
171 <th class="text-center" style="width: 100px">Has Counters</th>
172 <th class="text-center" style="width: 100px">Support Aging</th>
173 <th>Match fields</th>
174 <th>Actions</th>
175 </tr>
176 <tr ng-show="collapseTables">
177 <td colspan="6" class="clickable text-center"
178 ng-click="collapseTables = !collapseTables">....</td>
179 </tr>
180 <tr ng-show="!collapseTables && pipelineModel.tables.length === 0">
181 <td colspan="6" class="no-data">No Data</td>
182 </tr>
183 <tr ng-show="!collapseTables"
184 ng-repeat="table in pipelineModel.tables"
185 ng-click="tableSelectCb($event, table)"
186 ng-class="{selected: table.name === selectedId.name && selectedId.type === 'table'}"
187 class="clickable">
188 <td class="text-center">{{table.name}}</td>
189 <td class="text-center">{{table.maxSize}}</td>
190 <td class="text-center">{{table.hasCounters}}</td>
191 <td class="text-center">{{table.supportAging}}</td>
192 <td ng-show="table.matchFields.length != 0">
193 {{matMatchFields(table.matchFields).join(', ')}}
194 </td>
195 <td ng-show="table.matchFields.length == 0">No match fields</td>
196 <td ng-show="table.actions.length != 0">{{table.actions.join(", ")}}</td>
197 <td ng-show="table.actions.length == 0">No table actions</td>
198 </tr>
199 </table>
200 </div>
201 <!-- ng-show-end for checking pipeconf !== null -->
202 </div>
203 <pipeconf-view-detail-panel></pipeconf-view-detail-panel>
204</div>