Adapt new UI for ODL
[netconf.git] / restconf / sal-rest-docgen / src / main / resources / explorer / swagger-initializer.js
index 8ea0ea3afc39da4d2cb66232b9c2208cdd821570..21e0b5d4263bde08759f929c792f440166694750 100644 (file)
@@ -1,20 +1,62 @@
 window.onload = function() {
-  //<editor-fold desc="Changeable Configuration Block">
+    var xmlHttp = new XMLHttpRequest();
+    xmlHttp.open("GET", document.URL.split('/apidoc')[0] + "/apidoc/openapi3/apis/mounts", false);
+    xmlHttp.send( null );
 
-  // the following lines will be replaced by docker/configurator, when it runs in a docker-container
-  window.ui = SwaggerUIBundle({
-    url: "https://petstore.swagger.io/v2/swagger.json",
-    dom_id: '#swagger-ui',
-    deepLinking: true,
-    presets: [
-      SwaggerUIBundle.presets.apis,
-      SwaggerUIStandalonePreset
-    ],
-    plugins: [
-      SwaggerUIBundle.plugins.DownloadUrl
-    ],
-    layout: "StandaloneLayout"
-  });
+    var base_url_rfc = document.URL.split('/apidoc')[0] + '/apidoc/openapi3/apis/mounts/';
+    var swagger_urls = [{url: document.URL.split('/apidoc')[0] + "/apidoc/openapi3/apis/single", name: "Controller resources - RestConf RFC 8040"}];
+    var devices = JSON.parse(xmlHttp.responseText);
+    for (var i =0; i < devices.length; i++) {
+      var device_name = devices[i]['instance'].split('=')[2].replace('/', '');
+      var dveice_id = devices[i]['id'];
+      var dict = {
+        url: base_url_rfc + dveice_id,
+        name: device_name + " resources - RestConf RFC 8040",
+      };
+      swagger_urls.push(dict);
+    }
 
-  //</editor-fold>
-};
+    // Begin Swagger UI call region
+    const ui = SwaggerUIBundle({
+      urls: swagger_urls,
+      dom_id: '#swagger-ui',
+      docExpansion: 'none',
+      deepLinking: true,
+      showAlternativeSchemaExample: true,
+      onComplete: function(swaggerApi, swaggerUi){
+        var wrappers = document.getElementsByClassName('wrapper');
+        var topbar = document.getElementsByClassName('topbar-wrapper');
+        var node2 = document.createElement("H2");
+        var node = document.createElement("IMG");
+        node.height = 40;
+        node.src = 'logo_small.png';
+        node2.innerText = "OpenDaylight RestConf API Documentation";
+        node2.prepend(node);
+        topbar[0].children[0].remove();
+        topbar[0].prepend(node2);
+        node.style = "padding-right: 18px;";
+        topbar[0].children[0].style="color:white; display: contents;";
+
+        var modules = document.getElementsByClassName('opblock-tag-section')
+        for(var i = 0; i < modules.length; i++) {
+          var innerText = modules[i].getElementsByTagName('a')[0].innerText;
+          var arrayInnerText = innerText.split(' ')
+          if (arrayInnerText.length > 0) {
+            modules[i].getElementsByTagName('a')[0].innerText = arrayInnerText[arrayInnerText.length - 1];
+          }
+        }
+        document.getElementsByClassName("select-label")[0].style = "max-width: max-content; padding-left: 20px";
+        document.getElementById("select").style = "flex: 0"
+      },
+      presets: [
+        SwaggerUIBundle.presets.apis,
+        SwaggerUIStandalonePreset
+      ],
+      plugins: [
+        SwaggerUIBundle.plugins.DownloadUrl
+      ],
+      layout: "StandaloneLayout"
+    });
+
+    window.ui = ui;
+}