(Arne Babenhauserheide)
2014-02-09: include sjl.js (steve loshs sidebar-title-javascript include sjl.js (steve loshs sidebar-title-javascript
diff --git a/sjl.js b/sjl.js new file mode 100644 --- /dev/null +++ b/sjl.js @@ -0,0 +1,56 @@ +var h2s = null; + +function place_scrolly_header () { + var soff = 75; + + var y = $(window).scrollTop(); + + var target_content = null; + var opacity = null; + var header_y = null; + h2s.each(function() { + var pre_header_y = $(this).position()['top'] - soff; + if (y < pre_header_y) { + return false; + }; + header_y = pre_header_y; + + target_content = $(this).html().replace(/ /g, ' '); + + var opacity_y = y - (header_y + soff); + opacity = opacity_y / soff; + if (opacity > 1.0) { + opacity = 1.0; + } + + if (opacity > 0.99) { + var next_headers = $(this).nextAll('h2'); + if (next_headers.length) { + var next_header_y = next_headers.first().position()['top']; + var next_header_distance = next_header_y - y; + if (next_header_distance <= soff*2) { + opacity = 1.0 / (soff - next_header_distance/2); + }; + } + } + }); + $('#scrolling-header').css({ opacity: opacity }) + .css('left', h2s.first().position()['left'] - 180 - 35) + .html(target_content); +} + +$(function() { + jQuery('span.timeago').timeago(); + + if ($('#leaf-stats').length) { + $('body').append('<div id="scrolling-header"></div>'); + h2s = $('#leaf-content h2'); + + $(window).scroll(function () { + place_scrolly_header(); + }); + $(window).resize(function () { + place_scrolly_header(); + }); + } +}); diff --git a/staticsite.py b/staticsite.py --- a/staticsite.py +++ b/staticsite.py @@ -41,6 +41,7 @@ templates = { <link href='http://fonts.googleapis.com/css?family=OFL+Sorts+Mill+Goudy+TT:regular,italic' rel='stylesheet' type='text/css' /> <link rel="stylesheet" href="{relpath}style.css" type="text/css" media="screen" /> <link rel="stylesheet" href="{relpath}print.css" type="text/css" media="print" /> + <script data-cfasync="false" src="{relpath}sjl.js" type="text/javascript"></script> <title>{title}</title> </head> <body> @@ -1357,6 +1358,12 @@ def parsesite(ui, repo, target, **opts): highlightingfile = os.path.join(target, pretty) if not os.path.isfile(highlightingfile) or not samefilecontent(highlightingsrc, highlightingfile): shutil.copyfile(highlightingsrc, highlightingfile) + # and add steve loshs sidebar-title + for sjl in ["sjl.js"]: + sjlsrc = os.path.join(os.path.dirname(__file__), sjl) + sjlfile = os.path.join(target, sjl) + if not os.path.isfile(sjlfile) or not samefilecontent(sjlsrc, sjlfile): + shutil.copyfile(sjlsrc, sjlfile) ui.debug("[staticsite] writeoverview\n") # then the overview