diff --git a/index.html b/index.html
index e5e2faa3..d62be6fa 100644
--- a/index.html
+++ b/index.html
@@ -32,7 +32,7 @@
.framebox, iframe {
width: 100%;
- height: calc(100% - 40px);
+ height: 100vh;
margin: 0;
padding: 0;
border: none;
@@ -75,6 +75,7 @@
(function () {
const cacheKey = 'structurelib-doc-versions';
const lastUseKey = 'structurelib-doc-last-use-version';
+
function reload_versions() {
document.getElementById('reload-indicator').classList.remove('hidden')
document.getElementById('use-version').disabled = true
@@ -90,6 +91,7 @@
}, reload_versions_fallback)
}
+
function reload_versions_fallback() {
fetch("https://api.github.com/repos/GTNewHorizons/StructureLib/git/trees/gh-pages")
.then((res) => {
@@ -97,14 +99,15 @@
let versions = rawVersions['tree'].filter((e) => e['type'] === 'tree' && e['path'] !== 'feature')
.map((e) => e['path'])
versions.push('feature/doc')
- localStorage.setItem(cacheKey, JSON.stringify(versions))
set_versions(versions)
})
})
}
+
function set_versions(versions) {
let select = document.getElementById('version-select')
select.textContent = ''
+ localStorage.setItem(cacheKey, JSON.stringify(versions))
versions.forEach((e) => {
let child = document.createElement('option')
child.text = e
@@ -115,6 +118,7 @@
document.getElementById('refresh-version').disabled = false
})
}
+
function set_version(version) {
document.getElementById('current-select').value = version
document.getElementById('frame').src = 'https://gtnewhorizons.github.io/StructureLib/' + version + '/javadoc'
@@ -129,14 +133,29 @@
set_versions(JSON.parse(versionsJson))
}
- let lastUse = localStorage.getItem(lastUseKey)
- console.log('lastUse', lastUse)
- if (lastUse) {
- set_version(lastUse)
+ 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)
+ }
}
+ addEventListener('popstate', set_version)
+
document.getElementById('use-version').onclick = (e) => {
- set_version(document.getElementById('version-select').value)
+ let version = document.getElementById('version-select').value;
+ set_version(version)
+ let p = new URLSearchParams(location.search)
+ p.set('version', version)
+ history.pushState(version, '', '?' + p)
}
document.getElementById('refresh-version').onclick = reload_versions