blob: bbf6f86b357b74fd88d6b14f581962cb6a6224cc [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/**
* Qi4j Documentation WebSite Progressive Enhancement.
*/
$( document ).ready( function($){
var atHome = window.location.hostname == "zest.apache.org"
/**
* Glossary.
*/
// Add Alphabetical scroll?
function glossary( $section ) {
// Better style
var $dts = $section.find('dt');
$dts.css('margin','2em 0 1em 0');
$dts.css('padding','0 0 0.3em 0.5em');
$dts.css('border-bottom','1px solid #ddd');
$dts.css('color','#0B75BC');
// Better behavior
function highlight( hash ) {
if ( hash ) {
var target = $dts.find(hash);
var dt = target.parent();
var dd = dt.next();
// Scroll
$.scrollTo( dt, 200, { 'offset': -96 });
// Highlight
dd.fadeOut(50).fadeIn(200);
}
}
$( window ).bind( 'hashchange', function() {
highlight( window.location.hash );
});
highlight( window.location.hash );
}
// Global enhancements
// Hide first tab (use the logo link instead)
$( "div.toc dl dt:first" ).hide();
// Open external user links in a new window/tab
$("a.ulink[href^='http:']").attr('target','_blank');
$("a.ulink[href^='https:']").attr('target','_blank');
// Add links to different versions
$.getJSON( "../versions.json", function( versions )
{
// alert( JSON.stringify( versions ) );
var currentPathFragment = window.location.href.substring( 0, window.location.href.lastIndexOf( '/' ) );
currentPathFragment = currentPathFragment.substring( currentPathFragment.lastIndexOf( '/' ) + 1 );
var currentVersion = Object.keys( versions ).filter( function( key ) { return versions[ key ] === currentPathFragment } )[ 0 ];
// alert( "Current version is " + currentVersion + "\nCurrent path fragment is: " + currentPathFragment );
if( currentVersion )
{
var switcher_html ='<p style="margin-top:2em; text-align: center"><select style="font-size: 0.5em">';
var ifselect = function( candidate )
{
return candidate == currentVersion ? "selected=\"selected\"" : "";
}
$.each( versions, function( displayName, pathFragment )
{
switcher_html += '<option value="' + displayName + '" ' + ifselect( displayName ) + '>' + displayName + '</option>';
} );
switcher_html += '</select></p>';
$( "div.logo" ).append( switcher_html );
var toURL = function( displayName )
{
if( atHome )
{
return "../" + versions[ displayName ];
}
else
{
return "https://zest.apache.org/java/" + versions[ displayName ];
}
}
$( "div.logo select" ).change( function()
{
window.location = toURL( $( this ).val() );
} );
}
else
{
console.log( "Documentation loaded locally? No version switcher" );
}
} );
// Title links to their own anchor
$( "body > div.section .title" ).each( function( idx, title ) {
var $title = $( title );
var id = $title.find( 'a' ).attr( 'id' );
if( id ) {
$title.click( function() {
window.location.hash = id;
} );
}
} );
// Scroll down a bit on hash change so that target is not hidden under the floating top menu
function scrollToHash( hash ) {
if( hash ) {
var $target = $( hash );
if( $target ) {
setTimeout( function() { $.scrollTo( $target, 100, { 'offset': -96 }) }, 50 );
}
}
};
$( window ).bind( 'hashchange', function() {
scrollToHash( window.location.hash );
});
scrollToHash( window.location.hash );
// Enhance left nav
$( "div.sub-nav div.toc dt" ).each( function( idx, dt ) {
var $dt = $( dt );
var item = $dt.find( "span.section:first-child" ).text().trim();
switch( item )
{
// Overview everywhere
case "Overview":
$dt.attr( "style", "margin-bottom: 24px" );
// Tutorials
case "Zest\u2122 in 2 hours":
case "Leverage Properties":
case "Use I/O API":
$dt.attr( "style", "margin-bottom: 24px" );
break;
// JavaDocs
case "JavaDocs":
$dt.hide();
break;
// Libraries
case "Alarms":
$dt.attr( "style", "margin-top: 24px" );
break;
// Extensions
case "Ehcache Cache":
case "Memory EntityStore":
case "ElasticSearch Index/Query":
case "Yammer Metrics":
case "Migration":
$dt.attr( "style", "margin-top: 24px" );
break;
}
} );
// Section specific enhancements
var $section = $( 'body > div.section' );
if( $section.attr( 'title' ) )
{
var section_title = $section.attr( 'title' ).trim();
switch( section_title ) {
case "Glossary":
glossary( $section );
break;
default:
break;
}
}
} );