Add support for linking directly to a specific version

This commit is contained in:
Yuri Sizov
2023-04-27 18:14:39 +02:00
parent 4122255952
commit cea8afe867
2 changed files with 39 additions and 0 deletions

View File

@@ -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`
<div class="version-list">

View File

@@ -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);
}