Modify nemo-ui(Add mapping-table)
[nemo.git] / nemo-ui / src / main / resources / nemo / nemo.tpl.html
1 <html xmlns="http://www.w3.org/1999/xhtml">\r
2 <head>\r
3     <meta http-equiv="Content-Type" content="text/html"; charset="utf-8" />\r
4     <title>nemo-ui-en</title>\r
5     <link href="src/app/nemo/css/jquery-ui.min.css" rel="stylesheet" />\r
6     <link href="src/app/nemo/css/nemo_user_main.css" rel="stylesheet" />\r
7     <link href="src/app/nemo/css/nemo_main.css" rel="stylesheet" />\r
8 \r
9      <!-- // <script src="src/app/nemo/module/migrate_js.js"></script> -->\r
10     <script src="src/app/nemo/js/Nemo_Main.js"></script>\r
11     <script src="src/app/nemo/module/keyWords.js"></script>\r
12     <!-- // <script src="src/app/nemo/module/migrate.js"></script> -->\r
13     <!-- SFC -->\r
14     <!-- // <script src="src/app/nemo/module/test/servicechain_userJson.js"></script>  -->\r
15     <!-- Bod -->\r
16      <!-- // <script src="src/app/nemo/module/test/bod_userJson.js"></script>  -->\r
17 \r
18     <script src="src/app/nemo/js/Nemo_Annouce_vis.js"></script>\r
19     <script src="src/app/nemo/js/phyNetwork.js"></script>\r
20     <script src="src/app/nemo/js/intentTopo.js"></script>\r
21     <script src="src/app/nemo/js/vnMapping.js"></script>\r
22     <script src="src/app/nemo/js/virNetwork.js"></script>\r
23 \r
24     <script>\r
25    \r
26         function guid() {\r
27             function S4() {\r
28                 return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\r
29             }\r
30             return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());\r
31         }\r
32 \r
33         jQuery(document).ready(function ($) {\r
34         var userNames=['--default--'];\r
35         jQuery.ajax({\r
36             url: "/restconf/config/nemo-intent:users/",\r
37             type: "GET",\r
38             async: false,\r
39             dataType: "json",\r
40             success: function(data) {\r
41                 console.log(data);\r
42             userNames=[];\r
43             var data_list=data["users"]["user"];\r
44             for (var item in data_list) {\r
45             userNames[data_list[item]['user-id']]=data_list[item]['user-name'];           \r
46             }\r
47             },\r
48             error: function(data) {\r
49                 console.log(data);\r
50             }\r
51         });\r
52         //add useruame to select \r
53         $("#selectUser select").empty();\r
54         for(var item in userNames){\r
55             $("#selectUser select").append('<option value="'+item+'">'+userNames[item]+'</option>');\r
56         }\r
57         \r
58 \r
59         $(".tabs ul li[aria-controls='PhyNet']").click(function(){\r
60              analy_topo(physicalData);\r
61              create_physical_topo();\r
62              creataPhysicalTables.createPhyicalNodeTable('phyNodeTab',null)\r
63              creataPhysicalTables.createPhyicalLinkTable('phyLinkTab',null)\r
64         });\r
65 \r
66         $(".tabs ul li[aria-controls='PhyNet']").click();\r
67 \r
68         $(".tabs ul li[aria-controls='intent_info']").click(function(){\r
69             //alert('intent_topo');\r
70             var userId=$("#selectUser option:selected").val();\r
71             console.log(userId);\r
72 \r
73             // SFC\r
74             //userId='af4fc2be-e3f4-4388-a8ef-3aabae872f2b';\r
75             //Bod\r
76             //userId='14ce424a-3e50-4a2a-ad5c-b29845158c8b'\r
77              //if(userId=='0') userId='14ce424a-3e50-4a2a-ad5c-b29845158c8b';\r
78             $('#service_svg2').empty();\r
79             $("#nemo_str_show").empty();\r
80             console.log(userId);\r
81             if(!IntentInfos) return;\r
82             var user_data = getIntentInfoById(userId);\r
83             if(!user_data) return;\r
84 \r
85             analyjson_topo(user_data);\r
86             parseNemoLan(user_data);\r
87         //set keyWords style\r
88         $("#nemo_str_show p").each(function(){\r
89             var $res=$(this);\r
90             keyWords.forEach(function(item,index,array){\r
91                 $res.html($res.html().replace(item,"<span class='keyWords'>"+item+"</span>"));\r
92             });\r
93         });\r
94     });\r
95 \r
96         $(".tabs ul li[aria-controls='VirNet']").click(function(){\r
97            // var virtualData=getVirtualJson();\r
98             var userId=$("#selectUser option:selected").val();\r
99             jQuery('#vir_graph').empty();\r
100             jQuery("#virNodeTab").find('tr:gt(1)').empty();\r
101             jQuery("#virLinkTab").find('tr:gt(1)').empty();\r
102             // SFC\r
103             //userId='af4fc2be-e3f4-4388-a8ef-3aabae872f2b';\r
104             //Bod\r
105             //userId='14ce424a-3e50-4a2a-ad5c-b29845158c8b'\r
106 \r
107             //if(userId=='0') userId='14ce424a-3e50-4a2a-ad5c-b29845158c8b';\r
108             // virtualData=virtualJson;\r
109 \r
110             if(!IntentInfos||!MappingResults||!VirtualDatas) return;\r
111             if(!getVirtualInfoById(userId)||!getIntentInfoById(userId)||!getMappingResultById(userId)) return;\r
112             create_virtual_topo(getVirtualInfoById(userId),getIntentInfoById(userId),getMappingResultById(userId));\r
113             creataVirtualTables.createVirtualNodeTable('virNodeTab',getVirtualInfoById(userId));\r
114             creataVirtualTables.createVirtualLinkTable('virLinkTab',getVirtualInfoById(userId));\r
115         });\r
116          // $(".tabs ul li[aria-controls='Mapping']").click();\r
117         $(".tabs ul li[aria-controls='Mapping']").click(function(){\r
118             var userId=$("#selectUser option:selected").val();\r
119             //if(userId=='0') userId='14ce424a-3e50-4a2a-ad5c-b29845158c8b';\r
120             jQuery("#mapVirNodeTab").find('tr:gt(1)').empty();\r
121             jQuery("#mapVirLinkTab").find('tr:gt(1)').empty();\r
122             if(!physicalData||!PnMappingResults||!VirtualDatas) return;\r
123             var virtualData = getVirtualInfoById(userId);\r
124             if(!virtualData) return;\r
125             if(!getPnMappingResultById(userId)) return;\r
126             // console.log(createMappingTables);\r
127               createMappingTables.createVirtualNodeTable('mapVirNodeTab',virtualData);\r
128             // console.log(linkArray);\r
129               createMappingTables.createVirtualLinkTable('mapVirLinkTab',virtualData,getPnMappingResultById(userId),physicalData);\r
130             // getPaths(linkArray,getPnMappingResultById(userId,PnMappingJson),physicalJson);\r
131         });\r
132 \r
133         $('#selectUser input[type=button]').click(function(){\r
134             // $(".tabs ul li[aria-controls='intent_info']").trigger('click');\r
135             $('a[href="#intent_info"]').click();\r
136             var userId=$("#selectUser option:selected").val();\r
137             \r
138             // SFC\r
139             //userId='af4fc2be-e3f4-4388-a8ef-3aabae872f2b';\r
140             //Bod\r
141             //userId='14ce424a-3e50-4a2a-ad5c-b29845158c8b'\r
142 \r
143             //if(userId=='0') userId='14ce424a-3e50-4a2a-ad5c-b29845158c8b';\r
144             if(!intent_info) return;\r
145             var user_data = getIntentInfoById(userId);\r
146             if(!user_data) return;\r
147             analyjson_topo(user_data);\r
148             parseNemoLan(user_data);\r
149         //set keyWords style\r
150            $("#nemo_str_show p").each(function(){\r
151             var $res=$(this);\r
152             keyWords.forEach(function(item,index,array){\r
153                 // console.log(item);\r
154                 $res.html($res.html().replace(item,"<span class='keyWords'>"+item+"</span>"));\r
155             });\r
156         });\r
157 \r
158     });\r
159 \r
160         });\r
161     </script>\r
162 </head>\r
163 <body>\r
164       <div class="header">\r
165         <p>Hello Admin!</p>\r
166         <div id='selectUser'>\r
167             <p>Tenant:</p>\r
168             <select value="intentUser">\r
169             </select>\r
170             <input type="button" class='btn_' value='Query'/></div>\r
171       </div>\r
172 \r
173         <div class="group">\r
174                 <div class="tabs">\r
175                     <ul>\r
176                         <li><a href="#PhyNet">Physical Network</a></li>\r
177                         <li><a href="#intent_info">NEMO Intent</a></li>\r
178                         <li><a href="#VirNet">Virtual Network</a></li>\r
179                         <li><a href="#Mapping">VN-PN Mapping</a></li>\r
180                     </ul>\r
181                 <div id='PhyNet'>\r
182                     <div id="phy_graph"></div>\r
183                     <div id='physicalTables'>\r
184                          <table id="phyNodeTab" border='1'>\r
185                     <caption>Physical Node</caption>\r
186                        <tr>\r
187                         <th>Physical Node ID</th><th>Physical Node Type</th>\r
188                         <th>Internal Physical Port Number</th><th>External Physical Port Number</th>\r
189                         </tr>\r
190                    </table>\r
191 \r
192                     <table id="phyLinkTab" border='1'>\r
193                     <caption>Physical Link</caption>\r
194                        <tr>\r
195                         <th>Physical Link ID</th><th>Source Physical Node</th>\r
196                        <th>Destination Physical Node</th><th>Metric</th>\r
197                        <th>Bandwidth</th> <th>Delay</th>\r
198                        </tr>\r
199                    </table>\r
200                     </div>\r
201                 </div>\r
202 \r
203                 <div id="intent_info">\r
204                      <div id="intent_topo">\r
205                     \r
206                     <svg id="service_svg2"  width="800" height="560"  viewBox="100 40 900 780">\r
207                     <defs>\r
208                     <marker id="idArrow2" viewBox="0 0 20 20" refX="0" refY="10" markerUnits="strokeWidth" markerWidth="6" markerHeight="15" orient="auto"><path d="M 0 0 L 20 10 L0 20 z"fill="purple"stroke="black"/> </marker>\r
209                     <marker id="idtext2" viewBox="0 0 120 50" refX="0" refY="0" markerUnits="strokeWidth" markerWidth="20" markerHeight="20"  orient="auto"><text style="font-family:sans-serif; font-size:14pt;"  x="20" y="20">text</text></marker>  \r
210                     </defs>\r
211                     </svg>\r
212                    </div>\r
213                     \r
214                    <div class="tabs">\r
215                     <ul>\r
216                         <li><a href="#nemo_str_show">NEMO Language</a></li>\r
217                     </ul>\r
218                     <div id="nemo_str_show"></div>\r
219                    </div>\r
220                </div>\r
221 \r
222                <div id="VirNet">\r
223                 <div id="vir_graph"></div>\r
224                 <div id='virtualTables'>\r
225                          <table id="virNodeTab" border='1'>\r
226                     <caption>Virtual Node</caption>\r
227                        <tr>\r
228                         <th>Virtual Node ID</th><th>Virtual Node Name</th>\r
229                         <th>Virtual Node Type</th>\r
230                         <th>Internal Virtual Port Number</th><th>External Virtual Port Number</th>\r
231                         </tr>\r
232                    </table>\r
233 \r
234                     <table id="virLinkTab" border='1'>\r
235                     <caption>Virtual Link</caption>\r
236                        <tr>\r
237                         <th>Virtual Link ID</th><th>Virtual Link Name</th>\r
238                         <th>Source Virtual Node</th>\r
239                        <th>Destination Virtual Node</th>\r
240                        <!-- <th>Metric</th> -->\r
241                        <th>Bandwidth</th> <th>Delay</th>\r
242                        </tr>\r
243                    </table>\r
244                     </div>\r
245                </div>\r
246                <div id="Mapping">\r
247                    <table id="mapVirNodeTab" border='1'>\r
248                     <caption>Virtual Node Mapping Table</caption>\r
249                        <tr><th>Virtual Node</th><th>Physical Node</th></tr>\r
250                    </table>\r
251 \r
252                     <table id="mapVirLinkTab" border='1'>\r
253                     <caption>Virtual Link Mapping Table</caption>\r
254                        <tr>\r
255                         <th>Virtual Link</th><th>Source Virtual Node</th>\r
256                        <th>Destination Virtual Node</th><th>Physical Path</th>\r
257                        <th>Physical Nodes passed by Path</th>\r
258                        </tr>\r
259                    </table>\r
260                </div>\r
261         </div>\r
262 \r
263 \r
264         <!-- dialog start -->\r
265         <div id="dialog" title="info" style='display:none;'>\r
266             <p>\r
267             <!-- Create By LiuTong , 2015-12-06   -->\r
268             </p>\r
269         </div>\r
270         <!-- dialog end -->\r
271 </body>\r
272 </html>\r