diff --git a/src/paths/index/components/versions/VersionList.js b/src/paths/index/components/versions/VersionList.js index ff43e31..0b4f82a 100644 --- a/src/paths/index/components/versions/VersionList.js +++ b/src/paths/index/components/versions/VersionList.js @@ -103,6 +103,20 @@ export default class VersionList extends LitElement { } } + update(changedProperties) { + // Check if the version list was set, this should only happen once. + if (changedProperties.size > 0) { + const oldVersions = changedProperties.get("versions"); + // When this happens, we should unfold the selected version, + // because it came from the URL slug. + if (typeof oldVersions === "undefined" && typeof this.versions !== "undefined") { + this._toggleEntry("main", this.selectedVersion); + } + } + + super.update(changedProperties); + } + render() { return html`
diff --git a/src/paths/index/entry.js b/src/paths/index/entry.js index 129123c..6172f40 100644 --- a/src/paths/index/entry.js +++ b/src/paths/index/entry.js @@ -86,12 +86,32 @@ export default class EntryComponent extends LitElement { if (data) { this._versions = data; + let releaseNames = {}; this._versions.forEach((version) => { + releaseNames[version.name] = []; + version.commit_log = []; version.releases.forEach((release) => { release.commit_log = []; + + releaseNames[version.name].push(release.name); }); }); + + const requested_slug = greports.util.getHistoryHash(); + if (requested_slug !== "") { + const slug_bits = requested_slug.split("-"); + + if (slug_bits[0] !== "" && typeof releaseNames[slug_bits[0]] !== "undefined") { + this._selectedVersion = slug_bits[0]; + + if (slug_bits.length > 1 && releaseNames[slug_bits[0]].indexOf(slug_bits[1]) >= 0) { + this._selectedRelease = slug_bits[1]; + } else { + this._selectedRelease = ""; + } + } + } } else { this._versions = []; } @@ -179,6 +199,11 @@ export default class EntryComponent extends LitElement { this._selectedRelease = event.detail.release; this.requestUpdate(); + let versionString = event.detail.version; + if (event.detail.release !== "") { + versionString += `-${event.detail.release}`; + } + greports.util.setHistoryHash(versionString); window.scrollTo(0, 0); }