index.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. // Botao de voltar para o topo da pagina
  2. let btnVoltar = document.getElementById("ifr__btn__backToTop");
  3. window.onscroll = function () {
  4. scrollFunction();
  5. };
  6. function scrollFunction() {
  7. if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
  8. btnVoltar.style.display = "block";
  9. } else {
  10. btnVoltar.style.display = "none";
  11. }
  12. }
  13. function backToTop() {
  14. document.body.scrollTop = 0;
  15. document.documentElement.scrollTop = 0;
  16. }
  17. // Insere em todos rodapés
  18. // let footer = document.getElementById("footer");
  19. // footer.innerHTML =
  20. // "<p>Atualizado pela ultima vez em: 3 de Outubro de 2023 -- por <a href='http://www.ime.usp.br/~laira'>Laira</a>.</p>";
  21. // Insere em todos rodapés
  22. const baseUrl = "/about";
  23. const lastUpdate =
  24. "Atualizado pela ultima vez em: 25 de março de 2025 -- por <a href='http://www.ime.usp.br/~laira'>Laira</a>.";
  25. let footer = document.getElementById("footer");
  26. footer.innerHTML = `
  27. <div class="row">
  28. <div class="col-md-6 d-flex flex-column align-items-center justify-content-end">
  29. <a href="https://line.ime.usp.br/" title="Seguir para a página principal do LInE">
  30. <img src="${baseUrl}/assets/logo_line_no_sub.png" height="70"/>
  31. </a>
  32. <span>Free Education, Private Data</span>
  33. </div>
  34. <div class="col-md-6 d-flex flex-column align-items-center justify-content-end">
  35. <span>
  36. <a href="/index.html" target="_self" title="Seguir para a página principal do iFrações">iFrações</a> |
  37. <a href="https://line.ime.usp.br/" title="Seguir para a página principal do LInE">LInE</a> |
  38. <a href="https://www.matematica.br/" title="Seguir para a página principal do iMática">iM&aacute;tica</a>
  39. </span>
  40. </div>
  41. </div>
  42. <hr/>
  43. <p>${lastUpdate}</p>
  44. </div>`;
  45. // Cria menu de navegação
  46. let nav = document.querySelector(".navbar");
  47. nav.innerHTML = `
  48. <div class="container-fluid">
  49. <a class="navbar-brand" aria-current="page" target="_self" href="index.html">iFractions</a>
  50. <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavDropdown"
  51. aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
  52. <span class="navbar-toggler-icon"></span>
  53. </button>
  54. <div class="collapse navbar-collapse" id="navbarNavDropdown">
  55. <ul class="navbar-nav">
  56. <li class="nav-item">
  57. <a class="nav-link" target="_self" href="index.html#download">Download</a>
  58. </li>
  59. <li class="nav-item">
  60. <a class="nav-link" target="_self" href="./paginas/sobre/page_1.html">Conhecendo o iFractions</a>
  61. </li>
  62. <li class="nav-item dropdown">
  63. <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button"
  64. data-bs-toggle="dropdown" aria-expanded="false"> Documentação
  65. </a>
  66. <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
  67. <li><a class="dropdown-item" target="_self" href='./paginas/documentacao.html'>Início</a>
  68. </li>
  69. <li><a class="dropdown-item" target="_self" href='./paginas/documentacao.html#sou-prof'>Sou Professor</a>
  70. </li>
  71. <li><a class="dropdown-item" target="_self" href='./paginas/documentacao.html#sou-admin'>Sou
  72. Administrador Moodle</a>
  73. </li>
  74. <li><a class="dropdown-item" target="_self" href='./paginas/documentacao.html#sou-dev'>Sou
  75. Desenvolvedor</a>
  76. </li>
  77. </ul>
  78. </li>
  79. <li class="nav-item">
  80. <a class="nav-link" target="_self" href="./paginas/publicacoes.html">Publicações</a>
  81. </li>
  82. </ul>
  83. </div>
  84. </div>
  85. `;
  86. // Coloca imagem no modal
  87. const modal = document.getElementById("myModal");
  88. let img = document.getElementsByClassName("ifr__img");
  89. for (let i = 0; i < img.length; i++) {
  90. img[i].addEventListener("click", function () {
  91. modal.style.display = "block";
  92. document.getElementById("myModal-img").src = img[i].src;
  93. document.getElementById("caption").innerHTML = this.alt;
  94. });
  95. }
  96. let span = document.getElementsByClassName("close")[0];
  97. span.onclick = () => (modal.style.display = "none");
  98. // Gera indice
  99. const toc = document.querySelector(".ifr__toc");
  100. if (toc) {
  101. const sections_all = document.querySelectorAll("section");
  102. sections_all.forEach((section_h2) => {
  103. const h2 = section_h2.querySelectorAll("h2")[0];
  104. if (h2) {
  105. const h2_ul = document.createElement("ul");
  106. const h2_li = document.createElement("li");
  107. const h3_ul = document.createElement("ul");
  108. const sections_h3 = section_h2.querySelectorAll("section");
  109. sections_h3.forEach((section_h3) => {
  110. const h3 = section_h3.querySelectorAll("h3")[0];
  111. if (h3) {
  112. const h3_li = document.createElement("li");
  113. h3_li.innerHTML = `<a href="#${section_h3.id}" target="_self">${h3.innerHTML}</a>`;
  114. h3_ul.appendChild(h3_li);
  115. }
  116. });
  117. h2_li.innerHTML = `<a href="#${section_h2.id}" target="_self">${h2.innerHTML}</a>`;
  118. h2_ul.appendChild(h2_li);
  119. h2_ul.appendChild(h3_ul);
  120. toc.appendChild(h2_ul);
  121. }
  122. });
  123. }
  124. // Insere em todos rodapés
  125. const updateMenu = (depth) => {
  126. const path = depth == 1 ? "../" : "../../";
  127. const semiPath = depth == 1 ? "./" : "../";
  128. nav.innerHTML = `
  129. <div class="container-fluid">
  130. <a class="navbar-brand" aria-current="page" target="_self" href="${path}index.html">iFractions</a>
  131. <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavDropdown"
  132. aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
  133. <span class="navbar-toggler-icon"></span>
  134. </button>
  135. <div class="collapse navbar-collapse" id="navbarNavDropdown">
  136. <ul class="navbar-nav">
  137. <li class="nav-item">
  138. <a class="nav-link" target="_self" href="${path}index.html#download">Download</a>
  139. </li>
  140. <li class="nav-item">
  141. <a class="nav-link" target="_self" href="${semiPath}sobre/page_1.html">Conhecendo o iFractions</a>
  142. </li>
  143. <li class="nav-item dropdown">
  144. <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button"
  145. data-bs-toggle="dropdown" aria-expanded="false"> Documentação
  146. </a>
  147. <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
  148. <li><a class="dropdown-item" target="_self" href='${semiPath}documentacao.html'>Início</a>
  149. </li>
  150. <li><a class="dropdown-item" target="_self" href='${semiPath}documentacao.html#sou-prof'>Sou Professor</a>
  151. </li>
  152. <li><a class="dropdown-item" target="_self" href='${semiPath}documentacao.html#sou-dev'>Sou
  153. Administrador Moodle</a>
  154. </li>
  155. <li><a class="dropdown-item" target="_self" href='${semiPath}documentacao.html#sou-admin'>Sou
  156. Desenvolvedor</a>
  157. </li>
  158. </ul>
  159. </li>
  160. <li class="nav-item">
  161. <a class="nav-link" target="_self" href="${semiPath}publicacoes.html">Publicações</a>
  162. </li>
  163. </ul>
  164. </div>
  165. </div>
  166. `;
  167. };