Modify nemo-ui
[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              createPhysicalTopo();\r
61              analy_topo(physicalData);\r
62              // create_physical_topo();\r
63               creataPhysicalTables.createPhyicalNodeTable('phyNodeTab',null)\r
64               creataPhysicalTables.createPhyicalLinkTable('phyLinkTab',null)\r
65         });\r
66 \r
67         $(".tabs ul li[aria-controls='PhyNet']").click();\r
68 \r
69         $(".tabs ul li[aria-controls='intent_info']").click(function(){\r
70             //alert('intent_topo');\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             //userId='14ce424a-3e50-4a2a-ad5c-b29845158c8b'\r
78              //if(userId=='0') userId='14ce424a-3e50-4a2a-ad5c-b29845158c8b';\r
79             $('#service_svg2').empty();\r
80             $("#nemo_str_show").empty();\r
81             console.log(userId);\r
82             if(!IntentInfos) return;\r
83             var user_data = getIntentInfoById(userId);\r
84             if(!user_data) return;\r
85 \r
86             analyjson_topo(user_data);\r
87             parseNemoLan(user_data);\r
88         //set keyWords style\r
89         $("#nemo_str_show p").each(function(){\r
90             var $res=$(this);\r
91             keyWords.forEach(function(item,index,array){\r
92                 $res.html($res.html().replace(item,"<span class='keyWords'>"+item+"</span>"));\r
93             });\r
94         });\r
95     });\r
96 \r
97         $(".tabs ul li[aria-controls='VirNet']").click(function(){\r
98            // var virtualData=getVirtualJson();\r
99             var userId=$("#selectUser option:selected").val();\r
100             jQuery('#vir_graph').empty();\r
101             jQuery("#virNodeTab").find('tr:gt(1)').empty();\r
102             jQuery("#virLinkTab").find('tr:gt(1)').empty();\r
103             // SFC\r
104             //userId='af4fc2be-e3f4-4388-a8ef-3aabae872f2b';\r
105             //Bod\r
106             //userId='14ce424a-3e50-4a2a-ad5c-b29845158c8b'\r
107 \r
108             //if(userId=='0') userId='14ce424a-3e50-4a2a-ad5c-b29845158c8b';\r
109             // virtualData=virtualJson;\r
110 \r
111             if(!IntentInfos||!MappingResults||!VirtualDatas) return;\r
112             if(!getVirtualInfoById(userId)||!getIntentInfoById(userId)||!getMappingResultById(userId)) return;\r
113             create_virtual_topo(getVirtualInfoById(userId),getIntentInfoById(userId),getMappingResultById(userId));\r
114             creataVirtualTables.createVirtualNodeTable('virNodeTab',getVirtualInfoById(userId));\r
115             creataVirtualTables.createVirtualLinkTable('virLinkTab',getVirtualInfoById(userId));\r
116         });\r
117          // $(".tabs ul li[aria-controls='Mapping']").click();\r
118         $(".tabs ul li[aria-controls='Mapping']").click(function(){\r
119             var userId=$("#selectUser option:selected").val();\r
120             //if(userId=='0') userId='14ce424a-3e50-4a2a-ad5c-b29845158c8b';\r
121             jQuery("#mapVirNodeTab").find('tr:gt(1)').empty();\r
122             jQuery("#mapVirLinkTab").find('tr:gt(1)').empty();\r
123             if(!physicalData||!PnMappingResults||!VirtualDatas) return;\r
124             var virtualData = getVirtualInfoById(userId);\r
125             if(!virtualData) return;\r
126             if(!getPnMappingResultById(userId)) return;\r
127             // console.log(createMappingTables);\r
128               createMappingTables.createVirtualNodeTable('mapVirNodeTab',virtualData);\r
129             // console.log(linkArray);\r
130               createMappingTables.createVirtualLinkTable('mapVirLinkTab',virtualData,getPnMappingResultById(userId),physicalData);\r
131             // getPaths(linkArray,getPnMappingResultById(userId,PnMappingJson),physicalJson);\r
132         });\r
133 \r
134         $('#selectUser input[type=button]').click(function(){\r
135             // $(".tabs ul li[aria-controls='intent_info']").trigger('click');\r
136             $('a[href="#intent_info"]').click();\r
137             var userId=$("#selectUser option:selected").val();\r
138             \r
139             // SFC\r
140             //userId='af4fc2be-e3f4-4388-a8ef-3aabae872f2b';\r
141             //Bod\r
142             //userId='14ce424a-3e50-4a2a-ad5c-b29845158c8b'\r
143 \r
144             //if(userId=='0') userId='14ce424a-3e50-4a2a-ad5c-b29845158c8b';\r
145             if(!intent_info) return;\r
146             var user_data = getIntentInfoById(userId);\r
147             if(!user_data) return;\r
148             analyjson_topo(user_data);\r
149             parseNemoLan(user_data);\r
150         //set keyWords style\r
151            $("#nemo_str_show p").each(function(){\r
152             var $res=$(this);\r
153             keyWords.forEach(function(item,index,array){\r
154                 // console.log(item);\r
155                 $res.html($res.html().replace(item,"<span class='keyWords'>"+item+"</span>"));\r
156             });\r
157         });\r
158 \r
159     });\r
160 \r
161        $('#logout').click(function(){\r
162         // alert(1);\r
163         setCookie('nemo_userpwd','',-1);\r
164         $("#pageContent").empty();\r
165         $("#pageContent").load('src/app/nemo/register.html');\r
166         // alert(2);\r
167        });\r
168 \r
169         });\r
170     </script>\r
171 </head>\r
172 <body>\r
173       <div class="header">\r
174         <p>Hello Admin!</p><span id='logout'>Logout</span>\r
175         <div id='selectUser'>\r
176             <p>Tenant:</p>\r
177             <select value="intentUser">\r
178             </select>\r
179             <input type="button" class='btn_' value='Query'/></div>\r
180       </div>\r
181 \r
182         <div class="group">\r
183                 <div class="tabs">\r
184                     <ul>\r
185                         <li><a href="#PhyNet">Physical Network</a></li>\r
186                         <li><a href="#intent_info">NEMO Intent</a></li>\r
187                         <li><a href="#VirNet">Virtual Network</a></li>\r
188                         <li><a href="#Mapping">VN-PN Mapping</a></li>\r
189                     </ul>\r
190                 <div id='PhyNet'>\r
191                     <div id="phy_graph"></div>\r
192                     <div id='physicalTables'>\r
193                          <table id="phyNodeTab" border='1'>\r
194                     <caption>Physical Node</caption>\r
195                        <tr>\r
196                         <th>Physical Node ID</th><th>Physical Node Type</th>\r
197                         <th>Internal Physical Port Number</th><th>External Physical Port Number</th>\r
198                         </tr>\r
199                    </table>\r
200 \r
201                     <table id="phyLinkTab" border='1'>\r
202                     <caption>Physical Link</caption>\r
203                        <tr>\r
204                         <th>Physical Link ID</th><th>Source Physical Node</th>\r
205                        <th>Destination Physical Node</th><th>Metric</th>\r
206                        <th>Bandwidth</th> <th>Delay</th>\r
207                        </tr>\r
208                    </table>\r
209                     </div>\r
210                 </div>\r
211 \r
212                 <div id="intent_info">\r
213                      <div id="intent_topo">\r
214                     \r
215                     <svg id="service_svg2"  width="800" height="560"  viewBox="100 40 900 780">\r
216                     <defs>\r
217                     <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
218                     <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
219                     </defs>\r
220                     </svg>\r
221                    </div>\r
222                     \r
223                    <div class="tabs">\r
224                     <ul>\r
225                         <li><a href="#nemo_str_show">NEMO Language</a></li>\r
226                     </ul>\r
227                     <div id="nemo_str_show"></div>\r
228                    </div>\r
229                </div>\r
230 \r
231                <div id="VirNet">\r
232                 <div id="vir_graph"></div>\r
233                 <div id='virtualTables'>\r
234                          <table id="virNodeTab" border='1'>\r
235                     <caption>Virtual Node</caption>\r
236                        <tr>\r
237                         <th>Virtual Node ID</th><th>Virtual Node Name</th>\r
238                         <th>Virtual Node Type</th>\r
239                         <th>Internal Virtual Port Number</th><th>External Virtual Port Number</th>\r
240                         </tr>\r
241                    </table>\r
242 \r
243                     <table id="virLinkTab" border='1'>\r
244                     <caption>Virtual Link</caption>\r
245                        <tr>\r
246                         <th>Virtual Link ID</th><th>Virtual Link Name</th>\r
247                         <th>Source Virtual Node</th>\r
248                        <th>Destination Virtual Node</th>\r
249                        <!-- <th>Metric</th> -->\r
250                        <th>Bandwidth</th> <th>Delay</th>\r
251                        </tr>\r
252                    </table>\r
253                     </div>\r
254                </div>\r
255                <div id="Mapping">\r
256                    <table id="mapVirNodeTab" border='1'>\r
257                     <caption>Virtual Node Mapping Table</caption>\r
258                        <tr><th>Virtual Node</th><th>Physical Node</th></tr>\r
259                    </table>\r
260 \r
261                     <table id="mapVirLinkTab" border='1'>\r
262                     <caption>Virtual Link Mapping Table</caption>\r
263                        <tr>\r
264                         <th>Virtual Link</th><th>Source Virtual Node</th>\r
265                        <th>Destination Virtual Node</th><th>Physical Path</th>\r
266                        <th>Physical Nodes passed by Path</th>\r
267                        </tr>\r
268                    </table>\r
269                </div>\r
270         </div>\r
271 \r
272 \r
273         <!-- dialog start -->\r
274         <div id="dialog" title="info" style='display:none;'>\r
275             <p>\r
276             <!-- Create By LiuTong , 2015-12-06   -->\r
277             </p>\r
278         </div>\r
279         <!-- dialog end -->\r
280 </body>\r
281 </html>\r