e5f6d4b03be6c79f2a973ce728e02f28c768d397
[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             if(!physicalData) return;\r
61              createPhysicalTopo();\r
62              analy_topo(physicalData);\r
63              // create_physical_topo();\r
64               creataPhysicalTables.createPhyicalNodeTable('phyNodeTab',null)\r
65               creataPhysicalTables.createPhyicalLinkTable('phyLinkTab',null)\r
66         });\r
67 \r
68         $(".tabs ul li[aria-controls='PhyNet']").click();\r
69 \r
70         $(".tabs ul li[aria-controls='intent_info']").click(function(){\r
71             var userId=$("#selectUser option:selected").val();\r
72             console.log(userId);\r
73 \r
74             // SFC\r
75             // userId='af4fc2be-e3f4-4388-a8ef-3aabae872f2b';\r
76             //Bod\r
77             // var userId='14ce424a-3e50-4a2a-ad5c-b29845158c8b'\r
78 \r
79             $('#service_svg2').empty();\r
80             $("#nemo_str_show").empty();\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 userId=$("#selectUser option:selected").val();\r
98             jQuery('#vir_graph').empty();\r
99             jQuery("#virNodeTab").find('tr').remove();\r
100             jQuery("#virLinkTab").find('tr').remove();\r
101             // SFC\r
102             //userId='af4fc2be-e3f4-4388-a8ef-3aabae872f2b';\r
103             //Bod\r
104             //userId='14ce424a-3e50-4a2a-ad5c-b29845158c8b'\r
105 \r
106              if(!IntentInfos||!MappingResults||!VirtualDatas) return;\r
107              if(!getVirtualInfoById(userId)||!getIntentInfoById(userId)||!getMappingResultById(userId)) return;\r
108             create_virtual_topo(getVirtualInfoById(userId),getIntentInfoById(userId),getMappingResultById(userId));\r
109             creataVirtualTables.createVirtualNodeTable('virNodeTab',getVirtualInfoById(userId));\r
110             creataVirtualTables.createVirtualLinkTable('virLinkTab',getVirtualInfoById(userId));\r
111         });\r
112 \r
113         $(".tabs ul li[aria-controls='Mapping']").click(function(){\r
114             var userId=$("#selectUser option:selected").val();\r
115             jQuery("#mapVirNodeTab").find('tr').remove();\r
116             jQuery("#mapVirLinkTab").find('tr').remove();\r
117              if(!physicalData||!PnMappingResults||!VirtualDatas) return;\r
118             var virtualData = getVirtualInfoById(userId);\r
119              if(!virtualData) return;\r
120              if(!getPnMappingResultById(userId)) return;\r
121             // console.log(createMappingTables);\r
122             console.log(virtualData);\r
123               createMappingTables.createVirtualNodeTable('mapVirNodeTab',virtualData);\r
124             // console.log(linkArray);\r
125               createMappingTables.createVirtualLinkTable('mapVirLinkTab',virtualData,getPnMappingResultById(userId),physicalData);\r
126             // getPaths(linkArray,getPnMappingResultById(userId,PnMappingJson),physicalJson);\r
127         });\r
128 \r
129         $('#selectUser input[type=button]').click(function(){\r
130             $('a[href="#intent_info"]').click();\r
131 \r
132     });\r
133 \r
134        $('#logout').click(function(){\r
135         setCookie('nemo_userpwd','',-1);\r
136         $("#pageContent").empty();\r
137         $("#pageContent").load('src/app/nemo/register.html');\r
138        });\r
139 \r
140         });\r
141     </script>\r
142 </head>\r
143 <body>\r
144       <div class="header">\r
145         <p>Hello Admin!</p><span id='logout'>Logout</span>\r
146         <div id='selectUser'>\r
147             <p>Tenant:</p>\r
148             <select value="intentUser">\r
149             </select>\r
150             <input type="button" class='btn_' value='Query'/></div>\r
151       </div>\r
152 \r
153         <div class="group">\r
154                 <div class="tabs">\r
155                     <ul>\r
156                         <li><a href="#PhyNet">Physical Network</a></li>\r
157                         <li><a href="#intent_info">NEMO Intent</a></li>\r
158                         <li><a href="#VirNet">Virtual Network</a></li>\r
159                         <li><a href="#Mapping">VN-PN Mapping</a></li>\r
160                     </ul>\r
161                 <div id='PhyNet'>\r
162                     <div id="phy_graph"></div>\r
163                     <div id='physicalTables'>\r
164                       <table class='tableHead'>\r
165                         <caption>Physical Node</caption>\r
166                          <colgroup>\r
167                          <col style="width: 25%;"/>\r
168                          <col style="width: 25%;" />\r
169                          <col style="width: 25%;"/>\r
170                          <col style="width: 25%;" />\r
171                          </colgroup>\r
172                         <tr>\r
173                         <th>Physical Node ID</th><th>Physical Node Type</th>\r
174                         <th>Internal Physical Port Number</th><th>External Physical Port Number</th>\r
175                         </tr>\r
176                       </table>\r
177 \r
178                       <div class='tableBodyContainer'>\r
179                          <table id="phyNodeTab" border='1'>\r
180                          <colgroup>\r
181                          <col style="width: 25%;"/>\r
182                          <col style="width: 25%;" />\r
183                          <col style="width: 25%;"/>\r
184                          <col style="width: 25%;" />\r
185                          </colgroup>\r
186                          </table>\r
187                       </div>\r
188 \r
189                         <table class='tableHead'>\r
190                         <caption>Physical Link</caption>\r
191                          <colgroup>\r
192                          <col style="width: 30%;"/>\r
193                          <col style="width: 20%;" />\r
194                          <col style="width: 20%;"/>\r
195                          <col style="width: 10%;" />\r
196                          <col style="width: 10%;" />\r
197                          <col style="width: 10%;" />\r
198                          </colgroup>\r
199                         <tr>\r
200                         <th>Physical Link ID</th><th>Source Physical Node</th>\r
201                         <th>Destination Physical Node</th><th>Metric</th>\r
202                         <th>Bandwidth</th><th>Delay</th>\r
203                         </tr>\r
204                      </table>\r
205                     \r
206                     <div class='tableBodyContainer'>\r
207                     <table id="phyLinkTab" border='1'>                    \r
208                        <colgroup>\r
209                          <col style="width: 30%;"/>\r
210                          <col style="width: 20%;" />\r
211                          <col style="width: 20%;"/>\r
212                          <col style="width: 10%;" />\r
213                          <col style="width: 10%;" />\r
214                          <col style="width: 10%;" />\r
215                          </colgroup>\r
216                     </table>\r
217                     </div>\r
218                     \r
219                     </div>\r
220                 </div>\r
221 \r
222                 <div id="intent_info">\r
223                      <div id="intent_topo">\r
224                     \r
225                     <svg id="service_svg2"  width="800" height="560"  viewBox="100 20 900 780">\r
226                     <defs>\r
227                     <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
228                     <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
229                     </defs>\r
230                     </svg>\r
231                    </div>\r
232                     \r
233                    <div class="tabs">\r
234                     <ul>\r
235                         <li><a href="#nemo_str_show">NEMO Language</a></li>\r
236                     </ul>\r
237                     <div id="nemo_str_show"></div>\r
238                    </div>\r
239                </div>\r
240 \r
241                <div id="VirNet">\r
242                 <div id="vir_graph"></div>\r
243                 <div id='virtualTables'>\r
244 \r
245                    <table class='tableHead' border='1'>\r
246                     <caption>Virtual Node</caption>\r
247                     <colgroup>\r
248                     <col style="width: 20%;"/>\r
249                     <col style="width: 20%;" />\r
250                     <col style="width: 20%;"/>\r
251                     <col style="width: 20%;" />\r
252                     <col style="width: 20%;"/>\r
253                     </colgroup>\r
254                        <tr>\r
255                         <th>Virtual Node ID</th><th>Virtual Node Name</th>\r
256                         <th>Virtual Node Type</th>\r
257                         <th>Internal Virtual Port Number</th><th>External Virtual Port Number</th>\r
258                         </tr>\r
259                    </table>\r
260 \r
261                     <div class='tableBodyContainer'>\r
262                     <table id="virNodeTab" border='1'>\r
263                     <colgroup>\r
264                     <col style="width: 20%;"/>\r
265                     <col style="width: 20%;" />\r
266                     <col style="width: 20%;"/>\r
267                     <col style="width: 20%;" />\r
268                     <col style="width: 20%;"/>\r
269                     </colgroup>\r
270                    </table>\r
271                     </div>\r
272                \r
273                    <table class='tableHead' border='1'>\r
274                     <caption>Virtual Link</caption>\r
275                     <colgroup>\r
276                     <col style="width: 20%;" />\r
277                     <col style="width: 20%;"/>\r
278                     <col style="width: 20%;" />\r
279                     <col style="width: 20%;"/>\r
280                     <col style="width: 10%;" />\r
281                     <col style="width: 10%;"/>\r
282                     </colgroup>\r
283                        <tr>\r
284                         <th>Virtual Link ID</th><th>Virtual Link Name</th>\r
285                         <th>Source Virtual Node</th>\r
286                        <th>Destination Virtual Node</th>\r
287                        <!-- <th>Metric</th> -->\r
288                        <th>Bandwidth</th> <th>Delay</th>\r
289                        </tr>\r
290                    </table>\r
291                \r
292 \r
293                     <div class='tableBodyContainer'>\r
294                     <table id="virLinkTab" border='1'>\r
295                       <colgroup>\r
296                     <col style="width: 20%;" />\r
297                     <col style="width: 20%;"/>\r
298                     <col style="width: 20%;" />\r
299                     <col style="width: 20%;"/>\r
300                     <col style="width: 10%;" />\r
301                     <col style="width: 10%;"/>\r
302                     </colgroup>\r
303                    </table>\r
304                    </div>\r
305                     </div>\r
306                </div>\r
307                <div id="Mapping">\r
308                     \r
309                     <div id='mappingTable'>\r
310                    <table class='tableHead' border='1'>\r
311                     <caption>Virtual Node Mapping Table</caption>\r
312                     <colgroup>\r
313                     <col style="width: 50%;" />\r
314                     <col style="width: 50%;"/>\r
315                     </colgroup>\r
316                        <tr><th>Virtual Node</th><th>Physical Node</th></tr>\r
317                    </table>\r
318                     \r
319                    <div class='tableBodyContainer'>\r
320                    <table id="mapVirNodeTab" border='1'>\r
321                     <colgroup>\r
322                     <col style="width: 50%;" />\r
323                     <col style="width: 50%;"/>\r
324                     </colgroup>\r
325                    </table>\r
326                     </div> \r
327 \r
328                      <table class='tableHead' border='1'>\r
329                     <caption>Virtual Link Mapping Table</caption>\r
330                     <colgroup>\r
331                     <col style="width: 20%;">\r
332                     <col style="width: 15%;">\r
333                     <col style="width: 15%;">\r
334                     <col style="width: 20%;">\r
335                     <col style="width: 30%;">\r
336                     </colgroup>                     \r
337                        <tr>\r
338                         <th>Virtual Link</th><th>Source Virtual Node</th>\r
339                        <th>Destination Virtual Node</th><th>Physical Path</th>\r
340                        <th>Physical Nodes passed by Path</th>\r
341                        </tr>\r
342                    </table>\r
343                     \r
344                     <div class='tableBodyContainer'>\r
345                     <table id="mapVirLinkTab" border='1'>\r
346                     <colgroup>\r
347                     <col style="width: 20%;">\r
348                     <col style="width: 15%;">\r
349                     <col style="width: 15%;">\r
350                     <col style="width: 20%;">\r
351                     <col style="width: 30%;">\r
352                     </colgroup>\r
353                    </table>\r
354                    </div>\r
355                   </div>\r
356                </div>\r
357         </div>\r
358 \r
359 \r
360         <!-- dialog start -->\r
361         <div id="dialog" title="info" style='display:none;'>\r
362             <p>\r
363             <!-- Create By LiuTong , 2015-12-06   -->\r
364             </p>\r
365         </div>\r
366         <!-- dialog end -->\r
367 </body>\r
368 </html>\r