227 lines
7.8 KiB
JavaScript
227 lines
7.8 KiB
JavaScript
// Blocks
|
|
docReady(function() {
|
|
var boxesNames = {
|
|
"seealso": "See also",
|
|
"definition": "Definition",
|
|
"exampl": "Example",
|
|
"exercice": "Exercice",
|
|
"question": "Question",
|
|
"summary": "Summary",
|
|
"note": "Note",
|
|
"answer": "Answer",
|
|
"hint": "Hint",
|
|
"important": "Important",
|
|
"caution": "Caution",
|
|
"warning": "Warning"
|
|
};
|
|
for (var className in boxesNames) {
|
|
let boxes = document.querySelectorAll('div.' + className);
|
|
|
|
for (let box of boxes) {
|
|
let boxTitle = document.createElement('p');
|
|
boxTitle.className = "admonition-title " + className;
|
|
boxTitle.textContent = boxesNames[className];
|
|
|
|
box.parentNode.insertBefore(boxTitle, box);
|
|
}
|
|
}
|
|
});
|
|
|
|
// Copy Source Block
|
|
docReady(function() {
|
|
let srcContainers = document.querySelectorAll('pre.src');
|
|
|
|
function copyClickFunction() {
|
|
let boxCopy = this;
|
|
|
|
// Create a clone the node to not affect the original one
|
|
let nodeClone = boxCopy.parentNode.cloneNode(true);
|
|
|
|
// Remove Line Numbers and Copy Button
|
|
let linenumNodes = nodeClone.querySelectorAll('.linenr,.src-copy');
|
|
for (var i = linenumNodes.length - 1 ; i >= 0 ; --i) {
|
|
nodeClone.removeChild(linenumNodes[i]);
|
|
}
|
|
|
|
// Copy the filetered content to the clipboard
|
|
let srcText = nodeClone.textContent;
|
|
navigator.clipboard.writeText(srcText).then(function() {
|
|
boxCopy.textContent = "Copied";
|
|
boxCopy.classList.add("src-copied");
|
|
setTimeout(function() {
|
|
boxCopy.textContent = "Copy";
|
|
boxCopy.classList.remove("src-copied");
|
|
}, 2000);
|
|
});
|
|
}
|
|
|
|
for (let srcContrainer of srcContainers) {
|
|
let boxCopy = document.createElement('div');
|
|
boxCopy.className = "src-copy";
|
|
boxCopy.textContent = "Copy";
|
|
|
|
boxCopy.onclick = copyClickFunction;
|
|
|
|
srcContrainer.prepend(boxCopy);
|
|
}
|
|
});
|
|
|
|
// Wrap Images and Tables
|
|
docReady(function() {
|
|
let wrap_elements = document.querySelectorAll('[float=wrap-right]');
|
|
for (let wrap_el of wrap_elements) {
|
|
wrap_el.closest('.figure').classList.add('wrap-right');
|
|
}
|
|
|
|
wrap_elements = document.querySelectorAll('[float=wrap-left]');
|
|
for (let wrap_el of wrap_elements) {
|
|
wrap_el.closest('.figure').classList.add('wrap-left');
|
|
}
|
|
});
|
|
|
|
// Equivalent of Jquery $.ready
|
|
function docReady(fn) {
|
|
// see if DOM is already available
|
|
if (document.readyState === "complete" || document.readyState === "interactive") {
|
|
// call on next available tick
|
|
setTimeout(fn, 1);
|
|
} else {
|
|
document.addEventListener("DOMContentLoaded", fn);
|
|
}
|
|
}
|
|
|
|
|
|
// Load Jquery
|
|
var scr = document.createElement('script'),
|
|
head = document.head || document.getElementsByTagName('head')[0];
|
|
scr.src = 'https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js';
|
|
scr.async = false; // optionally
|
|
|
|
head.insertBefore(scr, head.firstChild);
|
|
|
|
|
|
// Load Bootstrap.js
|
|
var scr = document.createElement('script'),
|
|
head = document.head || document.getElementsByTagName('head')[0];
|
|
scr.src = 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js';
|
|
scr.async = false; // optionally
|
|
|
|
head.insertBefore(scr, head.firstChild);
|
|
|
|
// After it is loaded
|
|
scr.addEventListener('load', () => {
|
|
$(document).ready(function() {
|
|
$('#text-table-of-contents ul').first().addClass('nav');
|
|
// ScrollSpy also requires that we use
|
|
// a Bootstrap nav component.
|
|
$('body').scrollspy({target: '#text-table-of-contents'});
|
|
|
|
// set the height of tableOfContents
|
|
var $postamble = $('#postamble');
|
|
var $tableOfContents = $('#table-of-contents');
|
|
$tableOfContents.css({paddingBottom: $postamble.outerHeight()});
|
|
|
|
// add TOC button
|
|
var toggleSidebar = $('<div id="toggle-sidebar"><a href="#table-of-contents"><h2>Table of Contents</h2></a></div>');
|
|
$('#content').prepend(toggleSidebar);
|
|
|
|
// add close button when sidebar showed in mobile screen
|
|
var closeBtn = $('<a class="close-sidebar" href="#">Close</a>');
|
|
var tocTitle = $('#table-of-contents').find('h2');
|
|
tocTitle.append(closeBtn);
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
// function collapse_toc_elements_on_click (nav_li_a){
|
|
// /*
|
|
// When an `a' element in the TOC is clicked, its parent
|
|
// `li' element's active attribute is toggled. This causes
|
|
// the element to toggle between minimized and maximized
|
|
// states. The active attribute is documented in bootstrap.
|
|
// https://getbootstrap.com/docs/4.0/components/navbar/#nav
|
|
// */
|
|
// $(nav_li_a).parent().toggleClass("active");
|
|
// }
|
|
|
|
// $( document ).ready(function() {
|
|
// // When the document is loaded and ready, bind the
|
|
// // function `collapse_toc_elements_on_click' to the
|
|
// // `a' elements in the table of contents.
|
|
// $("#text-table-of-contents a").click(function() {
|
|
// collapse_toc_elements_on_click(this);
|
|
// });
|
|
// });
|
|
|
|
// $( document ).ready(function() {
|
|
|
|
// // Shift nav in mobile when clicking the menu.
|
|
// $(document).on('click', "[data-toggle='wy-nav-top']", function() {
|
|
// $("[data-toggle='wy-nav-shift']").toggleClass("shift");
|
|
// $("[data-toggle='rst-versions']").toggleClass("shift");
|
|
// });
|
|
// // Close menu when you click a link.
|
|
// $(document).on('click', ".wy-menu-vertical .current ul li a", function() {
|
|
// $("[data-toggle='wy-nav-shift']").removeClass("shift");
|
|
// $("[data-toggle='rst-versions']").toggleClass("shift");
|
|
// });
|
|
// $(document).on('click', "[data-toggle='rst-current-version']", function() {
|
|
// $("[data-toggle='rst-versions']").toggleClass("shift-up");
|
|
// });
|
|
// // Make tables responsive
|
|
// $("table.docutils:not(.field-list)").wrap("<div class='wy-table-responsive'></div>");
|
|
// });
|
|
|
|
// $( document ).ready(function() {
|
|
// $('#text-table-of-contents ul').first().addClass('nav');
|
|
// // ScrollSpy also requires that we use
|
|
// // a Bootstrap nav component.
|
|
// $('body').scrollspy({target: '#text-table-of-contents'});
|
|
|
|
// // set the height of tableOfContents
|
|
// var $postamble = $('#postamble');
|
|
// var $tableOfContents = $('#table-of-contents');
|
|
// $tableOfContents.css({paddingBottom: $postamble.outerHeight()});
|
|
|
|
// // add TOC button
|
|
// var toggleSidebar = $('<div id="toggle-sidebar"><a href="#table-of-contents"><h2>Table of Contents</h2></a></div>');
|
|
// $('#content').prepend(toggleSidebar);
|
|
|
|
// // add close button when sidebar showed in mobile screen
|
|
// var closeBtn = $('<a class="close-sidebar" href="#">Close</a>');
|
|
// var tocTitle = $('#table-of-contents').find('h2');
|
|
// tocTitle.append(closeBtn);
|
|
// });
|
|
|
|
// window.SphinxRtdTheme = (function (jquery) {
|
|
// var stickyNav = (function () {
|
|
// var navBar,
|
|
// win,
|
|
// stickyNavCssClass = 'stickynav',
|
|
// applyStickNav = function () {
|
|
// if (navBar.height() <= win.height()) {
|
|
// navBar.addClass(stickyNavCssClass);
|
|
// } else {
|
|
// navBar.removeClass(stickyNavCssClass);
|
|
// }
|
|
// },
|
|
// enable = function () {
|
|
// applyStickNav();
|
|
// win.on('resize', applyStickNav);
|
|
// },
|
|
// init = function () {
|
|
// navBar = jquery('nav.wy-nav-side:first');
|
|
// win = jquery(window);
|
|
// };
|
|
// jquery(init);
|
|
// return {
|
|
// enable : enable
|
|
// };
|
|
// }());
|
|
// return {
|
|
// StickyNav : stickyNav
|
|
// };
|
|
// }($));
|