mirror of
https://github.com/msberends/AMR.git
synced 2024-12-26 16:06:11 +01:00
116 lines
3.3 KiB
JavaScript
116 lines
3.3 KiB
JavaScript
|
/* http://gregfranko.com/blog/jquery-best-practices/ */
|
||
|
(function($) {
|
||
|
$(function() {
|
||
|
|
||
|
$("#sidebar")
|
||
|
.stick_in_parent({offset_top: 40})
|
||
|
.on('sticky_kit:bottom', function(e) {
|
||
|
$(this).parent().css('position', 'static');
|
||
|
})
|
||
|
.on('sticky_kit:unbottom', function(e) {
|
||
|
$(this).parent().css('position', 'relative');
|
||
|
});
|
||
|
|
||
|
$('body').scrollspy({
|
||
|
target: '#sidebar',
|
||
|
offset: 60
|
||
|
});
|
||
|
|
||
|
$('[data-toggle="tooltip"]').tooltip();
|
||
|
|
||
|
var cur_path = paths(location.pathname);
|
||
|
var links = $("#navbar ul li a");
|
||
|
var max_length = -1;
|
||
|
var pos = -1;
|
||
|
for (var i = 0; i < links.length; i++) {
|
||
|
if (links[i].getAttribute("href") === "#")
|
||
|
continue;
|
||
|
// Ignore external links
|
||
|
if (links[i].host !== location.host)
|
||
|
continue;
|
||
|
|
||
|
var nav_path = paths(links[i].pathname);
|
||
|
|
||
|
var length = prefix_length(nav_path, cur_path);
|
||
|
if (length > max_length) {
|
||
|
max_length = length;
|
||
|
pos = i;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Add class to parent <li>, and enclosing <li> if in dropdown
|
||
|
if (pos >= 0) {
|
||
|
var menu_anchor = $(links[pos]);
|
||
|
menu_anchor.parent().addClass("active");
|
||
|
menu_anchor.closest("li.dropdown").addClass("active");
|
||
|
}
|
||
|
});
|
||
|
|
||
|
function paths(pathname) {
|
||
|
var pieces = pathname.split("/");
|
||
|
pieces.shift(); // always starts with /
|
||
|
|
||
|
var end = pieces[pieces.length - 1];
|
||
|
if (end === "index.html" || end === "")
|
||
|
pieces.pop();
|
||
|
return(pieces);
|
||
|
}
|
||
|
|
||
|
// Returns -1 if not found
|
||
|
function prefix_length(needle, haystack) {
|
||
|
if (needle.length > haystack.length)
|
||
|
return(-1);
|
||
|
|
||
|
// Special case for length-0 haystack, since for loop won't run
|
||
|
if (haystack.length === 0) {
|
||
|
return(needle.length === 0 ? 0 : -1);
|
||
|
}
|
||
|
|
||
|
for (var i = 0; i < haystack.length; i++) {
|
||
|
if (needle[i] != haystack[i])
|
||
|
return(i);
|
||
|
}
|
||
|
|
||
|
return(haystack.length);
|
||
|
}
|
||
|
|
||
|
/* Clipboard --------------------------*/
|
||
|
|
||
|
function changeTooltipMessage(element, msg) {
|
||
|
var tooltipOriginalTitle=element.getAttribute('data-original-title');
|
||
|
element.setAttribute('data-original-title', msg);
|
||
|
$(element).tooltip('show');
|
||
|
element.setAttribute('data-original-title', tooltipOriginalTitle);
|
||
|
}
|
||
|
|
||
|
if(ClipboardJS.isSupported()) {
|
||
|
$(document).ready(function() {
|
||
|
var copyButton = "<button type='button' class='btn btn-primary btn-copy-ex' type = 'submit' title='Copy to clipboard' aria-label='Copy to clipboard' data-toggle='tooltip' data-placement='left auto' data-trigger='hover' data-clipboard-copy><i class='fa fa-copy'></i></button>";
|
||
|
|
||
|
$(".examples, div.sourceCode").addClass("hasCopyButton");
|
||
|
|
||
|
// Insert copy buttons:
|
||
|
$(copyButton).prependTo(".hasCopyButton");
|
||
|
|
||
|
// Initialize tooltips:
|
||
|
$('.btn-copy-ex').tooltip({container: 'body'});
|
||
|
|
||
|
// Initialize clipboard:
|
||
|
var clipboardBtnCopies = new ClipboardJS('[data-clipboard-copy]', {
|
||
|
text: function(trigger) {
|
||
|
return trigger.parentNode.textContent;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
clipboardBtnCopies.on('success', function(e) {
|
||
|
changeTooltipMessage(e.trigger, 'Copied!');
|
||
|
e.clearSelection();
|
||
|
});
|
||
|
|
||
|
clipboardBtnCopies.on('error', function() {
|
||
|
changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy');
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
})(window.jQuery || window.$)
|