Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Doc: adapt code to use API data v1
Follow the changes done in
readthedocs/readthedocs.org#11205
  • Loading branch information
humitos committed Apr 9, 2024
commit 6fda95c735bcb621c77b69d07416192fc373fe23
79 changes: 39 additions & 40 deletions Doc/tools/templates/layout.html
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
</style>
{{ super() }}

<meta name="readthedocs-addons-api-version" content="0">
<meta name="readthedocs-addons-api-version" content="1">
<script type="text/javascript">
function onSwitch(event) {
const option = event.target.selectedIndex;
Expand All @@ -51,49 +51,48 @@
}

document.addEventListener("readthedocs-addons-data-ready", function(event) {
const config = event.detail;
const languageMapping = {
en: "English",
es: "Spanish",
// ...
}
event.detail.initialize();
event.detail.data().then((config) => {
// TODO: add `selected="selected"` to option
const versionSelect = `
<select id="version_select">
${ config.versions.active.map(
(version) => `
<option
value="${ version.slug }"
${ config.versions.current.slug === version.slug ? 'selected="selected"' : '' }
data-url="${ version.urls.documentation }">
${ version.slug }
</option>`
).join("\n") }
</select>
`;

// TODO: add `selected="selected"` to option
const versionSelect = `
<select id="version_select">
${ config.addons.flyout.versions.map(
(version) => `
<option
value="${ version.slug }"
${ config.versions.current.slug === version.slug ? 'selected="selected"' : '' }
data-url="${ version.url }">
${ version.slug }
</option>`
).join("\n") }
</select>
`;
let languages = config.projects.translations.concat(config.projects.current);
languages = languages.sort((a, b) => a.language.name.localeCompare(b.language.name));

const languageSelect = `
<select id="language_select">
${ config.addons.flyout.translations.map(
(translation) => `
<option
value="${ translation.slug }"
${ config.projects.current.language.code === translation.slug ? 'selected="selected"' : '' }
data-url="${ translation.url }">
${ languageMapping[translation.slug] }
</option>`
).join("\n") }
</select>
`;
const languageSelect = `
<select id="language_select">
${ languages.map(
(translation) => `
<option
value="${ translation.slug }"
${ config.projects.current.slug === translation.slug ? 'selected="selected"' : '' }
data-url="${ translation.urls.documentation }">
${ translation.language.name }
</option>`
).join("\n") }
</select>
`;

const selectVersionElement = document.querySelector("li.switchers div.version_switcher_placeholder");
selectVersionElement.innerHTML = versionSelect;
document.querySelector("li.switchers div.version_switcher_placeholder").addEventListener("change", onSwitch);
const selectVersionElement = document.querySelector("li.switchers div.version_switcher_placeholder");
selectVersionElement.innerHTML = versionSelect;
document.querySelector("li.switchers div.version_switcher_placeholder").addEventListener("change", onSwitch);

const selectLanguageElement = document.querySelector("li.switchers div.language_switcher_placeholder");
selectLanguageElement.innerHTML = languageSelect;
document.querySelector("li.switchers div.language_switcher_placeholder select").addEventListener("change", onSwitch);
const selectLanguageElement = document.querySelector("li.switchers div.language_switcher_placeholder");
selectLanguageElement.innerHTML = languageSelect;
document.querySelector("li.switchers div.language_switcher_placeholder select").addEventListener("change", onSwitch);
});
});
</script>
{% endblock %}