| {% extends "!search.html" %} |
| {% block extrahead %} |
| {{ super() }} |
| <meta name="robots" content="noindex"> |
| <script type="text/javascript"> |
| const GLOSSARY_PAGE = 'glossary.html'; |
| |
| document.addEventListener('DOMContentLoaded', function() { |
| fetch('_static/glossary.json') |
| .then(function(response) { |
| if (response.ok) { |
| return response.json(); |
| } else { |
| throw new Error('Failed to fetch glossary.json'); |
| } |
| }) |
| .then(function(glossary) { |
| const RESULT_TEMPLATE = '<div style="display: none" class="admonition seealso" id="glossary-result">' + |
| ' <p class="topic-title">' + |
| ' <a class="glossary-title" href="#"></a>' + |
| ' </p>' + |
| ' <div class="glossary-body"></div>' + |
| '</div>'; |
| let searchResults = document.getElementById('search-results'); |
| searchResults.insertAdjacentHTML('afterbegin', RESULT_TEMPLATE); |
| |
| const params = new URLSearchParams(document.location.search).get("q"); |
| if (params) { |
| const searchParam = params.toLowerCase(); |
| const glossaryItem = glossary[searchParam]; |
| if (glossaryItem) { |
| let resultDiv = document.getElementById('glossary-result'); |
| |
| // set up the title text with a link to the glossary page |
| let glossaryTitle = resultDiv.querySelector('.glossary-title'); |
| glossaryTitle.textContent = 'Glossary: ' + glossaryItem.title; |
| const linkTarget = searchParam.replace(/ /g, '-'); |
| glossaryTitle.href = GLOSSARY_PAGE + '#term-' + linkTarget; |
| |
| // rewrite any anchor links (to other glossary terms) |
| // to have a full reference to the glossary page |
| let body = document.createElement('div'); |
| body.innerHTML = glossaryItem.body; |
| const anchorLinks = body.querySelectorAll('a[href^="#"]'); |
| anchorLinks.forEach(function(link) { |
| const currentUrl = link.getAttribute('href'); |
| link.href = GLOSSARY_PAGE + currentUrl; |
| }); |
| resultDiv.querySelector('.glossary-body').appendChild(body); |
| |
| resultDiv.style.display = ''; |
| } else { |
| document.getElementById('glossary-result').style.display = 'none'; |
| } |
| } |
| }) |
| .catch(function(error) { |
| console.error(error); |
| }); |
| }); |
| </script> |
| {% endblock %} |