page.html 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. {% extends "!page.html" %}
  2. {% block footer %}
  3. <style>
  4. .wy-side-nav-search > div[role="search"] {
  5. color: black;
  6. }
  7. </style>
  8. <script type="text/javascript">
  9. $(document).ready(function() {
  10. $(".toggle > *").hide();
  11. $(".toggle .header").show();
  12. $(".toggle .header").click(function() {
  13. $(this).parent().children().not(".header").toggle(400);
  14. $(this).parent().children(".header").toggleClass("open");
  15. })
  16. });
  17. </script>
  18. <script type="text/javascript">
  19. function add_version_selector()
  20. {
  21. return fetch("https://raw.githubusercontent.com/lvgl/docs_compiled/gh-pages/versionlist.txt")
  22. .then(res => res.text())
  23. .then(text => {
  24. const versions = text.split("\n").filter(version => version.trim().length > 0);
  25. let p = document.getElementById("rtd-search-form").parentElement;
  26. p.innerHTML = `
  27. <select name="versions" id="versions" onchange="ver_sel()" style="border-radius:5px; margin-bottom:15px">
  28. ${versions.map(version => {
  29. let versionName = "";
  30. if(version == "master") versionName = "master (latest)";
  31. else versionName = "v" + ((version.indexOf(".") != -1) ? version : (version + " (latest minor)"));
  32. return `<option value="${version}">${versionName}</option>`;
  33. })}
  34. </select>` + p.innerHTML;
  35. });
  36. }
  37. function ver_sel()
  38. {
  39. var x = document.getElementById("versions").value;
  40. window.location.href = window.location.protocol + "//" + window.location.host + "/" + x + "/";
  41. }
  42. document.addEventListener('DOMContentLoaded', (event) => {
  43. add_version_selector().then(() => {
  44. var value = window.location.pathname.split('/')[1];
  45. document.getElementById("versions").value = value;
  46. });
  47. })
  48. document.addEventListener('DOMContentLoaded', (event) => {
  49. function onIntersection(entries) {
  50. entries.forEach(entry => {
  51. let currentlyLoaded = entry.target.getAttribute("data-is-loaded") == "true";
  52. let shouldBeLoaded = entry.intersectionRatio > 0;
  53. if(currentlyLoaded != shouldBeLoaded) {
  54. entry.target.setAttribute("data-is-loaded", shouldBeLoaded);
  55. if(shouldBeLoaded) {
  56. let iframe = document.createElement("iframe");
  57. iframe.src = entry.target.getAttribute("data-real-src");
  58. entry.target.appendChild(iframe);
  59. } else {
  60. let iframe = entry.target.querySelector("iframe");
  61. iframe.parentNode.removeChild(iframe);
  62. }
  63. }
  64. });
  65. }
  66. const config = {
  67. rootMargin: '600px 0px',
  68. threshold: 0.01
  69. };
  70. let observer = new IntersectionObserver(onIntersection, config);
  71. document.querySelectorAll(".lv-example").forEach(iframe => {
  72. observer.observe(iframe);
  73. });
  74. });
  75. </script>
  76. {% endblock %}