blob: 026ef87e76e8319e0d600d34e5c94f07305a795b [file] [log] [blame]
Sean Condonf4f54a12018-10-10 23:25:46 +01001<!--
Sean Condon91481822019-01-01 13:56:14 +00002~ Copyright 2019-present Open Networking Foundation
Sean Condonf4f54a12018-10-10 23:25:46 +01003~
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-->
Sean Condon91481822019-01-01 13:56:14 +000016<svg:desc xmlns:svg="http://www.w3.org/2000/svg">The force layout layer. This is
17 an SVG component that displays Nodes (Devices, Hosts and SubRegions) and
18 Links. Positions of each are driven by a forces computation engine</svg:desc>
19<svg:g xmlns:svg="http://www.w3.org/2000/svg" class="topo2-links">
20 <svg:desc>Topology links</svg:desc>
21 <!-- Template explanation: Creates an SVG Group and in
22 line 1) use the svg component onos-linksvg, setting it's link
23 Input parameter to the link item from the next line
24 line 2) Use the built in NgFor directive to iterate through the
25 set of links filtered by the filteredLinks() function.
Sean Condon1ae15802019-03-02 09:07:18 +000026 line 3) feed the highlightPorts of this (forcesvg) component in to
27 the highlightsEnabled of the link component
28 line 5) when the onos-linksvg component emits the selectedEvent,
29 call the updateSelected() method of this (forcesvg) component
30 line 6) feed the scale of this (forcesvg) component in to the scale
31 of the link
Sean Condon91481822019-01-01 13:56:14 +000032 -->
33 <svg:g onos-linksvg [link]="link"
34 *ngFor="let link of filteredLinks()"
35 [highlightsEnabled]="highlightPorts"
Sean Condon1ae15802019-03-02 09:07:18 +000036 (selectedEvent)="updateSelected($event)"
37 [scale]="scale">
Sean Condon91481822019-01-01 13:56:14 +000038 </svg:g>
39</svg:g>
40<svg:g xmlns:svg="http://www.w3.org/2000/svg" class="topo2-nodes">
41 <svg:desc>Topology nodes</svg:desc>
42 <!-- Template explanation - create an SVG Group and
43 line 1) use the svg component onos-devicenodesvg, setting it's device
44 Input parameter to the device item from the next line
45 line 2) Use the built in NgFor directive to iterate through all
46 of the devices in the chosen layer index. The current iteration
47 is in the device variable
48 line 3) Use the onosDraggable directive and pass this device in to
49 its draggableNode Input parameter and setting the draggableInGraph
50 Input parameter to 'graph'
Sean Condon71910542019-02-16 18:16:42 +000051 line 4) event handler of the draggable directive - causes the new location
52 to be written back to the server
Sean Condon1ae15802019-03-02 09:07:18 +000053 line 5) when the onos-devicenodesvg component emits the selectedEvent,
Sean Condon91481822019-01-01 13:56:14 +000054 call the updateSelected() method of this (forcesvg) component
Sean Condon1ae15802019-03-02 09:07:18 +000055 line 6) feed the devicelabeltoggle of this (forcesvg) component in to
56 the labelToggle of the device
57 line 7) feed the scale of this (forcesvg) component in to the scale
58 of the device
Sean Condon91481822019-01-01 13:56:14 +000059 -->
60 <svg:g onos-devicenodesvg [device]="device"
61 *ngFor="let device of regionData.devices[visibleLayerIdx()]"
62 onosDraggableNode [draggableNode]="device" [draggableInGraph]="graph"
Sean Condon71910542019-02-16 18:16:42 +000063 (newLocation)="nodeMoved('device', device.id, $event)"
Sean Condonb2c483c2019-01-16 20:28:55 +000064 (selectedEvent)="updateSelected($event)"
Sean Condon1ae15802019-03-02 09:07:18 +000065 [labelToggle]="deviceLabelToggle"
66 [scale]="scale">
Sean Condon91481822019-01-01 13:56:14 +000067 <svg:desc>Device nodes</svg:desc>
68 </svg:g>
69 <!-- Template explanation - only display the hosts if 'showHosts' is set true -->
70 <svg:g *ngIf="showHosts">
71 <!-- Template explanation - create an SVG Group and
72 line 1) use the svg component onos-hostnodesvg, setting it's host
73 Input parameter to the host item from the next line
74 line 2) Use the built in NgFor directive to iterate through all
75 of the hosts in the chosen layer index. The current iteration
76 is in the 'host' variable
77 line 3) Use the onosDraggable directive and pass this host in to
78 its draggableNode Input parameter and setting the draggableInGraph
79 Input parameter to 'graph'
Sean Condon71910542019-02-16 18:16:42 +000080 line 4) event handler of the draggable directive - causes the new location
81 to be written back to the server
82 line 5) when the onos-hostnodesvg component emits the selectedEvent
Sean Condon91481822019-01-01 13:56:14 +000083 call the updateSelected() method of this (forcesvg) component
Sean Condon1ae15802019-03-02 09:07:18 +000084 line 6) feed the hostLabelToggle of this (forcesvg) component in to
85 the labelToggle of the host
86 line 7) feed the scale of this (forcesvg) component in to the scale
87 of the host
Sean Condon91481822019-01-01 13:56:14 +000088 -->
89 <svg:g onos-hostnodesvg [host]="host"
90 *ngFor="let host of regionData.hosts[visibleLayerIdx()]"
91 onosDraggableNode [draggableNode]="host" [draggableInGraph]="graph"
Sean Condonee545762019-03-09 10:43:58 +000092 (newLocation)="nodeMoved('host', host.id, $event)"
Sean Condonb2c483c2019-01-16 20:28:55 +000093 (selectedEvent)="updateSelected($event)"
Sean Condon1ae15802019-03-02 09:07:18 +000094 [labelToggle]="hostLabelToggle"
95 [scale]="scale">
Sean Condon91481822019-01-01 13:56:14 +000096 <svg:desc>Host nodes</svg:desc>
Sean Condon0c577f62018-11-18 22:40:05 +000097 </svg:g>
98 </svg:g>
Sean Condon91481822019-01-01 13:56:14 +000099 <svg:g onos-subregionnodesvg [subRegion]="subRegion"
100 *ngFor="let subRegion of regionData.subregions"
Sean Condonff85fbe2019-03-16 14:28:46 +0000101 onosDraggableNode [draggableNode]="subRegion" [draggableInGraph]="graph">
Sean Condon91481822019-01-01 13:56:14 +0000102 <svg:desc>Subregion nodes</svg:desc>
103 </svg:g>
Sean Condonf4f54a12018-10-10 23:25:46 +0100104</svg:g>