<thead>
<tr>
<th class="minimal-width">EVC ID</th>
- <th>UNIs</th>
- <th>Network Name</th>
- <th>SVC Type</th>
- <th>EVC Type</th>
- <th colspan="2" >Tenant</th>
+ <th class="minimal-width">Network Name</th>
+ <th class="minimal-width">SVC Type</th>
+ <th class="minimal-width">EVC Type</th>
+ <th class="minimal-width">Tenant</th>
+ <th colspan="2">UNIs</th>
</tr>
</thead>
<tbody id="l2_table">
- <tr ng-repeat-start="item in evcs | orderBy : sortEvc">
- <td rowspan="{{ 1 + unisTables[item['svc-id']] }}" class="minimal-width">{{ item.evc['evc-id'] }}</td>
+ <tr ng-repeat="item in evcs | orderBy : sortEvc">
+ <td class="minimal-width">{{ item.evc['evc-id'] }}</td>
+ <td class="minimal-width">{{ networkNames[item['svc-id']] }}</td>
+ <td class="minimal-width">{{ item['svc-type'] }}</td>
+ <td class="minimal-width">{{ title(item.evc['evc-type']) }}</td>
+ <td class="minimal-width">{{ item['tenant-id'] }}</td>
+
<td >
- <button ng-show="!unisTables[item['svc-id']]" class="btn add-row btn-block" ng-click="unisTables[item['svc-id']] = true;">Show Unis</button>
- <button ng-show="unisTables[item['svc-id']]" class="btn add-row btn-block" ng-click="unisTables[item['svc-id']] = false;">Hide Unis</button>
+ <button class="btn add-row" ng-click="unisTables[item['svc-id']] = false" ng-if="unisTables[item['svc-id']]">
+ <i class="icon-plus"></i> Show UNIs
+ </button>
+ <table class="footable table table-striped inner-table" ng-if="!unisTables[item['svc-id']]">
+ <thead>
+ <tr>
+ <th class="minimal-width">
+ <button class="btn add-row" ng-click="unisTables[item['svc-id']] = true">
+ <i class="icon-minus"></i>
+ </button>
+ </th>
+ <th>Device</th>
+ <th>UNI</th>
+ <th ng-if="item.isTree" >Role</th>
+ <th class="minimal-width">VLANs <span style="font-size:small;color:inherit;"> (click to edit)</span></th>
+ <th class="delete-tr"><button class="btn btn-md btn-info" ng-click="linkEvcUniDialog.show($event, {'svc':item,'unis':unis,'ces':ces})"> <i class="icon-plus"></i> </button></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr ng-repeat-start="(ce, unis) in item.device2unis | orderBy : ce ">
+ <td colspan="2" rowspan="{{unis.length}}">{{ cesDisplayNames[ce] }}</td>
+ <td ng-repeat-start="uni in unis | orderBy: sortUni | limitTo :1">{{ uni.prettyID }}</td>
+ <td ng-if="item.isTree">{{ uni['role'] }}</td>
+ <td class="clickable" ng-click="!item.evc['preserve-ce-vlan-id'] ? editVlanDialog.show($event, {svcid:item['svc-id'], uniid:uni['uni-id'], vlans:uni.vlans}) : 0">
+ {{ uni.vlans.join(', ') }} {{item.evc['preserve-ce-vlan-id'] ? '(Preserved)' : ''}}
+ </td>
+ <td ng-repeat-end class="delete-tr" style="white-space: nowrap;">
+ <button class="btn btn-md btn-danger" ng-click="deleteEvcUni(item['svc-id'], uni['uni-id'])"> <i class="icon-trash"></i> </button>
+ </td>
+ </tr>
+ <tr ng-repeat-end ng-repeat="uni in unis | orderBy: sortUni | limitTo :(unis.length-1) :1">
+ <td>{{ uni.prettyID }}</td>
+ <td ng-if="item.isTree">{{ uni['role'] }}</td>
+ <td class="clickable" ng-click="!item.evc['preserve-ce-vlan-id'] ? editVlanDialog.show($event, {svcid:item['svc-id'], uniid:uni['uni-id'], vlans:uni.vlans}) : 0">
+ {{ uni.vlans.join(', ') }} {{item.evc['preserve-ce-vlan-id'] ? '(Preserved)' : ''}}
+ </td>
+ <td class="delete-tr" style="white-space: nowrap;">
+ <button class="btn btn-md btn-danger" ng-click="deleteEvcUni(item['svc-id'], uni['uni-id'])"> <i class="icon-trash"></i> </button>
+ </td>
+ </tr>
+ </tbody>
+ </table>
</td>
- <td >{{ networkNames[item['svc-id']] }}</td>
- <td >{{ item['svc-type'] }}</td>
- <td >{{ title(item.evc['evc-type']) }}</td>
- <td>{{ item['tenant-id'] }}</td>
+
<td class="delete-tr"><button class="btn btn-md btn-danger" ng-click="deleteEvc(item['svc-id'])"> <i class="icon-trash"></i> </button></td>
</tr>
+
+ <!--
+ <td >
+ <button ng-show="!unisTables[item['svc-id']]" class="btn add-row btn-block" ng-click="unisTables[item['svc-id']] = true;">Show Unis</button>
+ <button ng-show="unisTables[item['svc-id']]" class="btn add-row btn-block" ng-click="unisTables[item['svc-id']] = false;">Hide Unis</button>
+ </td>
<tr ng-repeat-end ng-show="unisTables[item['svc-id']]">
<td colspan="6">
<table class="footable table table-striped inner-table">
</table>
</td>
</tr>
+ -->
</tbody>
</table>
- <div><a class="btn btn-info add-row" ng-click="evcDialog.show($event,{'svcTypes':svcTypes})" >Create EVC</a></div>
+ <div><a class="btn add-row" ng-click="evcDialog.show($event,{'svcTypes':svcTypes})" >Create EVC</a></div>
</div>
<div ng-show="isTabSet('tenantData',2)">
<div class="table-header">IPVCs Table</div>
<thead>
<tr>
<th class="minimal-width">IPVC ID</th>
- <th>UNIs</th>
- <th>IPVC Type</th>
- <th colspan="2" >Tenant</th>
+ <th class="minimal-width">IPVC Type</th>
+ <th class="minimal-width">Tenant</th>
+ <th colspan="2">UNIs</th>
</tr>
</thead>
<tbody id="l2_table">
- <tr ng-repeat-start="ipvc in ipvcs | orderBy : sortIpvc">
- <td rowspan="{{ 1 + unisTables[ipvc.ipvc['ipvc-id']] }}" class="minimal-width">{{ ipvc.ipvc['ipvc-id'] }}</td>
+ <tr ng-repeat="ipvc in ipvcs | orderBy : sortIpvc">
+ <td class="minimal-width">{{ ipvc.ipvc['ipvc-id'] }}</td>
+ <td class="minimal-width">{{ ipvc.ipvc['ipvc-type'] }}</td>
+ <td class="minimal-width">{{ ipvc['tenant-id'] }}</td>
<td >
+ <button class="btn add-row" ng-click="unisTables[ipvc.ipvc['ipvc-id']] = false" ng-if="unisTables[ipvc.ipvc['ipvc-id']]">
+ <i class="icon-plus"></i> Show UNIs
+ </button>
+ <table class="footable table table-striped inner-table" ng-if="!unisTables[ipvc.ipvc['ipvc-id']]">
+ <thead>
+ <tr>
+ <th class="minimal-width">
+ <button class="btn add-row" ng-click="unisTables[ipvc.ipvc['ipvc-id']] = true">
+ <i class="icon-minus"></i>
+ </button>
+ </th>
+ <th>Device</th>
+ <th>UNI</th>
+ <th>IP Address</th>
+ <th>vlan</th>
+ <th class="delete-tr"><button class="btn btn-md btn-info" ng-click="linkIpvcUniDialog.show($event, {'svc':ipvc,'unis':unis,'ces':ces})"> <i class="icon-plus"></i> </button></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr ng-repeat="ipuni in ipvc.ipvc.unis.uni">
+ <td colspan="2" ng-init="serviceIpuni = getMefInterfaceIpvc(ipuni['uni-id'],ipuni['ip-uni-id'])">{{ cesDisplayNames[ipuni.device] }}</td>
+ <td>{{ ipuni.prettyID }}</td>
+ <td>{{serviceIpuni['ip-address']}}</td>
+ <td>{{serviceIpuni.vlan}}</td>
+ <td class="delete-tr"><button class="btn btn-md btn-danger" ng-click="deleteIpvcUni(ipvc['svc-id'], ipuni['uni-id'])"> <i class="icon-trash"></i> </button></td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ <td class="delete-tr"><button class="btn btn-md btn-danger" ng-click="deleteEvc(ipvc['svc-id'])"> <i class="icon-trash"></i> </button></td>
+ <!--
<button ng-show="!unisTables[ipvc.ipvc['ipvc-id']]" class="btn add-row btn-block" ng-click="unisTables[ipvc.ipvc['ipvc-id']] = true;">Show Unis</button>
<button ng-show="unisTables[ipvc.ipvc['ipvc-id']]" class="btn add-row btn-block" ng-click="unisTables[ipvc.ipvc['ipvc-id']] = false;">Hide Unis</button>
</td>
- <td >{{ ipvc.ipvc['ipvc-type'] }}</td>
- <td>{{ ipvc['tenant-id'] }}</td>
<td class="delete-tr"><button class="btn btn-md btn-danger" ng-click="deleteEvc(ipvc['svc-id'])"> <i class="icon-trash"></i> </button></td>
</tr>
<tr ng-repeat-end ng-show="unisTables[ipvc.ipvc['ipvc-id']]">
</tbody>
</table>
</td>
+ -->
</tr>
</tbody>
</table>
- <div><a class="btn btn-info add-row" ng-click="ipvcDialog.show($event,{'svcTypes':svcTypes})" >Create IPVC</a></div>
+ <div><a class="btn add-row" ng-click="ipvcDialog.show($event,{'svcTypes':svcTypes})" >Create IPVC</a></div>
</div>
<div ng-show="isTabSet('tenantData',3)">
<div class="table-header">Tenant UNIs</div>
<td class="minimal-width">{{ cesDisplayNames[uni.device] }}</td>
<td class="minimal-width">{{ uni.prettyID }}</td>
<td>
- <button class="btn btn-info add-row" ng-click="expandFlags.tuni[uni['uni-id']] = false" ng-if="expandFlags.tuni[uni['uni-id']]">
+ <button class="btn add-row" ng-click="expandFlags.tuni[uni['uni-id']] = false" ng-if="expandFlags.tuni[uni['uni-id']]">
<i class="icon-plus"></i> Show Ports
</button>
<table class="footable table table-striped inner-table" ng-if="!expandFlags.tuni[uni['uni-id']]">
<thead>
<tr>
<th class="minimal-width">
- <button class="btn btn-info add-row" ng-click="expandFlags.tuni[uni['uni-id']] = true">
+ <button class="btn add-row" ng-click="expandFlags.tuni[uni['uni-id']] = true">
<i class="icon-minus"></i>
</button>
</th>
<td class="minimal-width">{{ ipuni.vlan }}</td>
<td class="minimal-width">{{ ipuni['ip-address'] }}</td>
<td>
- <button class="btn btn-info add-row" ng-click="expandFlags.ipuni[ipuni['ip-uni-id']] = true" ng-if="!expandFlags.ipuni[ipuni['ip-uni-id']]">
+ <button class="btn add-row" ng-click="expandFlags.ipuni[ipuni['ip-uni-id']] = true" ng-if="!expandFlags.ipuni[ipuni['ip-uni-id']]">
<i class="icon-plus"></i> Show Subnets
</button>
<table class="footable table table-striped inner-table" ng-if="expandFlags.ipuni[ipuni['ip-uni-id']]">
<thead>
<tr>
<th class="minimal-width">
- <button class="btn btn-info add-row" ng-click="expandFlags.ipuni[ipuni['ip-uni-id']] = false">
+ <button class="btn add-row" ng-click="expandFlags.ipuni[ipuni['ip-uni-id']] = false">
<i class="icon-minus"></i>
</button>
</th>