blob: 633eccf82e5ac8d6e7c0040161ee846998358664 [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 Condon35d10642020-02-28 09:50:04 +000036 [linkHighlight]="linksHighlighted.get(link.id)"
Sean Condon1ae15802019-03-02 09:07:18 +000037 (selectedEvent)="updateSelected($event)"
38 [scale]="scale">
Sean Condon91481822019-01-01 13:56:14 +000039 </svg:g>
40</svg:g>
41<svg:g xmlns:svg="http://www.w3.org/2000/svg" class="topo2-nodes">
42 <svg:desc>Topology nodes</svg:desc>
43 <!-- Template explanation - create an SVG Group and
44 line 1) use the svg component onos-devicenodesvg, setting it's device
45 Input parameter to the device item from the next line
46 line 2) Use the built in NgFor directive to iterate through all
47 of the devices in the chosen layer index. The current iteration
48 is in the device variable
49 line 3) Use the onosDraggable directive and pass this device in to
50 its draggableNode Input parameter and setting the draggableInGraph
51 Input parameter to 'graph'
Sean Condon71910542019-02-16 18:16:42 +000052 line 4) event handler of the draggable directive - causes the new location
53 to be written back to the server
Sean Condon1ae15802019-03-02 09:07:18 +000054 line 5) when the onos-devicenodesvg component emits the selectedEvent,
Sean Condon91481822019-01-01 13:56:14 +000055 call the updateSelected() method of this (forcesvg) component
Sean Condon1ae15802019-03-02 09:07:18 +000056 line 6) feed the devicelabeltoggle of this (forcesvg) component in to
57 the labelToggle of the device
58 line 7) feed the scale of this (forcesvg) component in to the scale
59 of the device
Sean Condon91481822019-01-01 13:56:14 +000060 -->
61 <svg:g onos-devicenodesvg [device]="device"
62 *ngFor="let device of regionData.devices[visibleLayerIdx()]"
63 onosDraggableNode [draggableNode]="device" [draggableInGraph]="graph"
Sean Condon71910542019-02-16 18:16:42 +000064 (newLocation)="nodeMoved('device', device.id, $event)"
Sean Condonb2c483c2019-01-16 20:28:55 +000065 (selectedEvent)="updateSelected($event)"
Sean Condon1ae15802019-03-02 09:07:18 +000066 [labelToggle]="deviceLabelToggle"
67 [scale]="scale">
Sean Condon91481822019-01-01 13:56:14 +000068 <svg:desc>Device nodes</svg:desc>
69 </svg:g>
70 <!-- Template explanation - only display the hosts if 'showHosts' is set true -->
71 <svg:g *ngIf="showHosts">
72 <!-- Template explanation - create an SVG Group and
73 line 1) use the svg component onos-hostnodesvg, setting it's host
74 Input parameter to the host item from the next line
75 line 2) Use the built in NgFor directive to iterate through all
76 of the hosts in the chosen layer index. The current iteration
77 is in the 'host' variable
78 line 3) Use the onosDraggable directive and pass this host in to
79 its draggableNode Input parameter and setting the draggableInGraph
80 Input parameter to 'graph'
Sean Condon71910542019-02-16 18:16:42 +000081 line 4) event handler of the draggable directive - causes the new location
82 to be written back to the server
83 line 5) when the onos-hostnodesvg component emits the selectedEvent
Sean Condon91481822019-01-01 13:56:14 +000084 call the updateSelected() method of this (forcesvg) component
Sean Condon1ae15802019-03-02 09:07:18 +000085 line 6) feed the hostLabelToggle of this (forcesvg) component in to
86 the labelToggle of the host
87 line 7) feed the scale of this (forcesvg) component in to the scale
88 of the host
Sean Condon91481822019-01-01 13:56:14 +000089 -->
90 <svg:g onos-hostnodesvg [host]="host"
91 *ngFor="let host of regionData.hosts[visibleLayerIdx()]"
92 onosDraggableNode [draggableNode]="host" [draggableInGraph]="graph"
Sean Condonee545762019-03-09 10:43:58 +000093 (newLocation)="nodeMoved('host', host.id, $event)"
Sean Condonb2c483c2019-01-16 20:28:55 +000094 (selectedEvent)="updateSelected($event)"
Sean Condon1ae15802019-03-02 09:07:18 +000095 [labelToggle]="hostLabelToggle"
96 [scale]="scale">
Sean Condon91481822019-01-01 13:56:14 +000097 <svg:desc>Host nodes</svg:desc>
Sean Condon0c577f62018-11-18 22:40:05 +000098 </svg:g>
99 </svg:g>
Sean Condon91481822019-01-01 13:56:14 +0000100 <svg:g onos-subregionnodesvg [subRegion]="subRegion"
101 *ngFor="let subRegion of regionData.subregions"
Sean Condonff85fbe2019-03-16 14:28:46 +0000102 onosDraggableNode [draggableNode]="subRegion" [draggableInGraph]="graph">
Sean Condon91481822019-01-01 13:56:14 +0000103 <svg:desc>Subregion nodes</svg:desc>
104 </svg:g>
Sean Condonf4f54a12018-10-10 23:25:46 +0100105</svg:g>