--- /dev/null
+// Copyright (c) 2018 Maen Artimy\r
+// \r
+// Licensed under the Apache License, Version 2.0 (the "License");\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+// \r
+// http://www.apache.org/licenses/LICENSE-2.0\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an "AS IS" BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+\r
+\r
+var BAR_IDX = 1;\r
+var CONTAINER_IDX = 2;\r
+\r
+var cardControl = ( function() {\r
+ console.log("cardControl");\r
+ var expand = function(e) {\r
+ var size = e.parentElement.parentElement.parentElement.style.width;\r
+ if(size==='96%') { // first value of size is ""\r
+ e.parentElement.parentElement.parentElement.style.width = '45%';\r
+ } else {\r
+ e.parentElement.parentElement.parentElement.style.width = '96%';\r
+ }\r
+ //e.classList.toggle("active");\r
+ };\r
+\r
+ var collapse = function(e) {\r
+ var c = e.parentElement.parentElement.parentElement.childNodes.item(CONTAINER_IDX);\r
+ var disp = c.style.display;\r
+ if(disp == "none") {\r
+ c.style.display = "block"\r
+ } else {\r
+ c.style.display = "none";\r
+ }\r
+ };\r
+\r
+ return {\r
+ expand: expand,\r
+ collapse: collapse\r
+ }\r
+})();\r
+\r
+// Generate cards dynamicly based on the template given by local 'html' variable\r
+// and data from the 'views' list. Cards are added to the 'parent' element\r
+// passed as argument.\r
+var generateCards = ( function() {\r
+ console.log("generateCards");\r
+ var html = "<div class=\"header\"><h1>{Title}</h1> \\r
+ <div class=\"topnav\"><a href=\"javascript:void(0)\" onclick=\"cardControl.collapse(this)\">−</a> \\r
+ <a href=\"javascript:void(0)\" onclick=\"cardControl.expand(this)\">↔</a> \\r
+ </div></div><div class=\"bar\"></div><div class=\"container\"><p>No data to display...</p> \\r
+ </div><div class=\"footing\"></div>";\r
+\r
+ // <a href=\"#refresh\">↺</a>\r
+\r
+ var run = function(views, parent) {\r
+ console.log("generateCards.run");\r
+ var doc = document.getElementById(parent);\r
+ doc.innerHTML = "";\r
+ for (var idx in views) {\r
+ var d = document.createElement("div");\r
+ d.id = views[idx].id;\r
+ d.classList.add("card");\r
+ var card = html.replace("{Title}", views[idx].dsc);\r
+ d.innerHTML = card;\r
+ doc.appendChild(d);\r
+ }\r
+ };\r
+\r
+ /*var loadModules = function(views) {\r
+ for (var idx in views) {\r
+ if(views[idx].call) {\r
+ var card = document.getElementById(views[idx].id);\r
+ var container = card.childNodes.item(CONTAINER_IDX)\r
+\r
+ var myModule = new BaseModule(views[idx].cmd);\r
+ myModule.callback = views[idx].call;\r
+ myModule.run(container);\r
+ }\r
+ }\r
+ };*/\r
+\r
+ return {\r
+ run: run\r
+ }\r
+})();\r
+\r
+var views = [\r
+{id:"mSwitch", cmd:"/listswitch", dsc:"Open V Switch ID(s)", call:dpList, ref:true},\r
+{id:"mTableStats", cmd:"/tablestatus?tablestat=<dpid>", dsc:"Table stats", call:dpTable, ref:true},\r
+{id:"mPortDesc", cmd:"/portsdesc?portdesc=<dpid>", dsc:"Port Desc", call:dpTable, ref:true},\r
+{id:"mPorts", cmd:"/portsstat?portstat=<dpid>", dsc:"Ports stats", call:dpTable, ref:true},\r
+//{id:"mTableFeature", cmd:"/data?tablefeature=<dpid>", dsc:"Table Features", call:dpTable, ref:true},\r
+//{id:"mQueueStats", cmd:"/data?queuestat=<dpid>", dsc:"Queue Stats", call:dpTable, ref:true},\r
+//{id:"mQueueConfig", cmd:"/data?queueconfig=<dpid>", dsc:"Queue Configuration", call:dpTable, ref:true},\r
+//{id:"mMeters", cmd:"/data?meterstat=<dpid>", dsc:"Meter stats", call:dpTable, ref:true}\r
+];\r