$()

in assets/js/documentation.js [1:91]


$(document).ready(function() {

    var markdownApi = new MarkdownApi();

    function renderDoc(name, f) {
        markdownApi.convert('../documentation/md/' + name +'.md', f); 
    }

    function convertDone(html) {
        var includecommon = $('#doccontent').attr('data-include-common');
        if (includecommon === 'true') {
            markdownApi.convert('../documentation/md/common.md', function(commonHtml) {
                updateContent(html, commonHtml);            
            }); 
        } else {
            updateContent(html);
        }
    }

    function updateContent(html, common) {
            
        var name = $('#doccontent').attr('data-file');

        $('#doccontent').empty();
        $('#doccontent').append('<a class="edit-me" href="https://github.com/guardian/open-platform-site/edit/gh-pages/documentation/md/' + name + '.md">edit</a>');   
        $('#doccontent').append(html);
        /* include common content */
        if (common !== undefined) {$('#doccontent h2').eq(2).after(common);}

        /* handle special item endpoint */
        if (name === 'item') {
                
                markdownApi.convert('../documentation/md/content_search.md', function(contentHtml) {
                
                    var filtersContent = $('<div/>').append(contentHtml).find('h3:contains("Filters")').nextUntil('h3').andSelf();
                    var orderingContent = $('<div/>').append(contentHtml).find('h3:contains("Ordering")').nextUntil('h3').andSelf();
                    var addContent = $('<div/>').append(contentHtml).find('h3:contains("Additional information")').nextUntil('h2');

                    $('h3:contains("Additional information")').before(filtersContent);
                    $('h3:contains("Additional information")').before(orderingContent);
                    $('h3:contains("Additional information")').after(addContent);

                    enhanceAppearance();
                });

        } else {
            /* enhance apparence */    
            enhanceAppearance();
        }
    }

    function enhanceAppearance() {
        $('table').addClass('table table-condensed'); 

        var tables5 = $( "tr").filter(function() {return $(this).children().length == 5 });
        var tables4 = $( "tr").filter(function() {return $(this).children().length <= 4 });

        tables4.find( "th:nth-child(1)" ).addClass('col-xs-2');
        tables4.find( "th:nth-child(2)" ).addClass('col-xs-5');
        tables4.find( "th:nth-child(3)" ).addClass('col-xs-2');
        tables4.find( "th:nth-child(4)" ).addClass('col-xs-3');


        tables5.find( "th:nth-child(1)" ).addClass('col-xs-2');
        tables5.find( "th:nth-child(2)" ).addClass('col-xs-5');
        tables5.find( "th:nth-child(3)" ).addClass('col-xs-2');
        tables5.find( "th:nth-child(4)" ).addClass('col-xs-1');
        tables5.find( "th:nth-child(5)" ).addClass('col-xs-1');
        
        renderDoc('types', function(html){ 
            $('tr th:contains("Type")').append('<div class="btn btn-default btn-help"><i class="glyphicon glyphicon-triangle-bottom"></i></div>').find('.btn-help').attr('data-content', html).popover({ placement : 'bottom', html: true});
        });

        renderDoc('boolean_operators', function(html) {
            $('tr th:contains("Boolean operators")').append('<div class="btn btn-default btn-help"><i class="glyphicon glyphicon-triangle-bottom"></i></div>').find('.btn-help').attr('data-content', html).popover({ placement : 'bottom', html: true});

            $('tr td').filter(function() {return $(this).text() === 'false'}).empty().append('<i class="glyphicon glyphicon-remove"></i>');
            $('tr td').filter(function() {return $(this).text() === 'true'}).empty().append('<i class="glyphicon glyphicon-ok"></i>');
        }); 

        /* display beautiful json */
        $('pre code').text(function(i, t){return JSON.stringify($.parseJSON(t), null, 4)});
        $('pre code').each(function(i, e) {hljs.highlightBlock(e)});
    }

    var file = $('#doccontent').attr('data-file');
    if (file !== undefined) {
        renderDoc(file, convertDone);
    }

});