forked from peter-evans/swagger-github-pages
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
71 lines (59 loc) · 2.31 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<!-- HTML for static distribution bundle build -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Swagger UI</title>
<link rel="stylesheet" type="text/css" href="dist/swagger-ui.css" />
<link rel="stylesheet" type="text/css" href="dist/index.css" />
<link rel="icon" type="image/png" href="dist/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="dist/favicon-16x16.png" sizes="16x16" />
</head>
<body>
<div id="swagger-ui"></div>
<script src="dist/swagger-ui-bundle.js" charset="UTF-8"> </script>
<script src="dist/swagger-ui-standalone-preset.js" charset="UTF-8"> </script>
<!-- <script src="dist/swagger-initializer.js" charset="UTF-8"> </script> -->
<script>
renderSwagger = (url, availableVersions) => {
window.ui = SwaggerUIBundle({
url: url,
dom_id: '#swagger-ui',
deepLinking: true,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout"
});
let wrapper = document.getElementsByClassName("download-url-wrapper")[0];
let options = [];
wrapper.innerHTML = "<label class=\"select-label\" for=\"select\"><span>Select a version</span><select id=\"select\" onchange=\"onVersionChange()\"></select></label>";
Object.keys(availableVersions).forEach((key) => {
if(url == availableVersions[key]){
options.push(`<option selected=\"selected\" value=\"${availableVersions[key]}\">${key}</option>`);
} else {
options.push(`<option value=\"${availableVersions[key]}\">${key}</option>`);
}
})
document.getElementById("select").innerHTML = options.join();
}
onVersionChange = () => {
let availableVersions = {};
let options = Array.from(document.getElementById("select").options);
options.forEach((option) => {
availableVersions[option.outerText] = option.value;
})
renderSwagger(document.getElementById("select").value, availableVersions);
}
fetch('./versions.json')
.then((response) => response.json())
.then((availableVersions) => {
renderSwagger(Object.values(availableVersions)[0], availableVersions);
});
</script>
</body>
</html>