Files
StructureLib/index.html
T

164 lines
5.6 KiB
HTML
Raw Normal View History

2022-08-29 11:41:49 +08:00
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>StructureLib API Documentation Index</title>
<meta name="viewport" content="width=device-width">
<meta name="description" content="Automatically generated API documentation for StructureLib.">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<!-- Look, I'm not a frontend developer. Laugh at my JS/HTML/CSS as you wish. I won't feel ashamed. I made this to work.-->
<style>
.navbar {
top: 0;
position: fixed;
height: 40px;
width: 100%;
background-color: #4D7A97;
color: #FFFFFF;
}
.navbar-content {
margin: 8px;
}
body {
margin: 0;
}
.framebox {
top: 40px;
}
.framebox, iframe {
width: 100%;
2023-03-20 21:32:49 +08:00
height: calc(100vh - 40px);
2022-08-29 11:41:49 +08:00
margin: 0;
padding: 0;
border: none;
overflow: hidden;
position: fixed;
}
2022-08-29 12:05:05 +08:00
.navbar-left {
float: left;
}
.navbar-right {
float: right;
}
.hidden {
display: none;
}
2022-08-29 11:41:49 +08:00
</style>
</head>
<body>
<div class="navbar">
<div class="navbar-content">
2022-08-29 12:05:05 +08:00
<div class="navbar-left">
<span>Current Version: <input disabled id="current-select"></span>
<label for="version-select">Select version/branch: </label>
<select id="version-select"></select>
<button id="use-version" disabled>Switch Version</button>
<button id="refresh-version" disabled>Refresh Version</button>
<i id="reload-indicator" class="fa fa-spinner fa-spin hidden" style="font-size:24px"></i>
</div>
<div class="navbar-right">
</div>
2022-08-29 11:41:49 +08:00
</div>
</div>
<div class="framebox">
<iframe id="frame"></iframe>
</div>
<script type="application/javascript">
(function () {
const cacheKey = 'structurelib-doc-versions';
const lastUseKey = 'structurelib-doc-last-use-version';
2022-08-29 11:41:49 +08:00
function reload_versions() {
2022-08-29 12:05:05 +08:00
document.getElementById('reload-indicator').classList.remove('hidden')
2022-08-29 11:41:49 +08:00
document.getElementById('use-version').disabled = true
document.getElementById('refresh-version').disabled = true
2023-05-02 10:55:23 +01:00
fetch("https://www.gtnewhorizons.com/StructureLib/index.txt", {cache: "no-cache"})
2022-08-29 12:19:55 +08:00
.then((res) => {
if (!res.ok)
reload_versions_fallback()
res.text().then(
2022-08-29 12:35:23 +08:00
(text) => set_versions(text.trim().split('\n').map((e) => e.trim()).filter((e) => e.length !== 0)),
2022-08-29 12:19:55 +08:00
reload_versions_fallback
)
2022-08-29 12:35:23 +08:00
}, reload_versions_fallback)
2022-08-29 12:19:55 +08:00
}
2022-08-29 12:19:55 +08:00
function reload_versions_fallback() {
2023-05-02 10:55:23 +01:00
fetch("https://api.github.com/repos/GTNewHorizons/StructureLib/git/trees/gh-pages", {cache: "no-cache"})
2022-08-29 11:41:49 +08:00
.then((res) => {
res.json().then((rawVersions) => {
2022-08-29 12:05:05 +08:00
let versions = rawVersions['tree'].filter((e) => e['type'] === 'tree' && e['path'] !== 'feature')
2022-08-29 11:41:49 +08:00
.map((e) => e['path'])
2022-08-29 12:05:05 +08:00
set_versions(versions)
2022-08-29 11:41:49 +08:00
})
})
}
2022-08-29 12:05:05 +08:00
function set_versions(versions) {
2022-08-29 11:41:49 +08:00
let select = document.getElementById('version-select')
select.textContent = ''
localStorage.setItem(cacheKey, JSON.stringify(versions))
2022-08-29 11:41:49 +08:00
versions.forEach((e) => {
2022-08-29 12:05:05 +08:00
let child = document.createElement('option')
child.text = e
child.value = e
select.appendChild(child)
document.getElementById('reload-indicator').classList.add('hidden')
document.getElementById('use-version').disabled = false
document.getElementById('refresh-version').disabled = false
2022-08-29 11:41:49 +08:00
})
}
2022-08-29 11:41:49 +08:00
function set_version(version) {
2022-08-29 12:05:05 +08:00
document.getElementById('current-select').value = version
2023-05-02 10:55:23 +01:00
document.getElementById('frame').src = 'https://www.gtnewhorizons.com/StructureLib/' + version + '/javadoc/index.html?overview-summary.html'
2022-08-29 11:41:49 +08:00
localStorage.setItem(lastUseKey, version)
}
let versionsJson = localStorage.getItem(cacheKey)
2022-08-29 12:05:05 +08:00
console.log('versionsJson', versionsJson)
2022-08-29 11:41:49 +08:00
if (!versionsJson) {
reload_versions()
} else {
2022-08-29 12:05:05 +08:00
set_versions(JSON.parse(versionsJson))
2022-08-29 11:41:49 +08:00
}
let p = new URLSearchParams(location.search)
if (p.has('version')) {
let ver = p.get('version')
set_version(ver)
history.replaceState(ver, '')
} else {
let lastUse = localStorage.getItem(lastUseKey)
console.log('lastUse', lastUse)
if (lastUse) {
set_version(lastUse)
p.set('version', lastUse)
history.pushState(lastUse, '', '?' + p)
}
2022-08-29 11:41:49 +08:00
}
addEventListener('popstate', set_version)
2022-08-29 11:41:49 +08:00
document.getElementById('use-version').onclick = (e) => {
let version = document.getElementById('version-select').value;
set_version(version)
let p = new URLSearchParams(location.search)
p.set('version', version)
history.pushState(version, '', '?' + p)
2022-08-29 11:41:49 +08:00
}
document.getElementById('refresh-version').onclick = reload_versions
})()
</script>
</body>
</html>