All Downloads are FREE. Search and download functionalities are using the official Maven repository.

apiref.js.api-site.js Maven / Gradle / Ivy

(function() {

  var pageCache;

  $(document).ready(function() {
    pageCache = $('.api-documentation').html();

    // Show the proper JSON/XML example when toggled
    $('.example-select').on('change', function(e) {
      $(e.currentTarget).find(':selected').tab('show')
    });

    // Change the text on the expando buttons when appropriate
    $('.api-detail')
      .on('hide.bs.collapse', function(e) {
        processButton(this, 'detail');
      })
      .on('show.bs.collapse', function(e) {
        processButton(this, 'close');
      });

    // Wire up the search button
    $('#search-btn').on('click', function(e) {
      searchPage();
    });

    // Wire up the search box enter
    $('#search-box').on('keydown', function(e) {
      if (e.keyCode === 13) {
        searchPage();
        return false;
      }
    });
  });

  /**
   * highlight terms based on the regex in the provided $element
   */
  function highlightTextNodes($element, regex) {
    var markup = $element.html();

    // Do regex replace
    // Inject span with class of 'highlighted termX' for google style highlighting
    $element.html(markup.replace(regex, '>$1$2$3<'));
  }

  function searchPage() {
    $(".api-documentation").html(pageCache);

    //make sure that all div's are expanded/hidden accordingly
    $('.api-detail.in').each(function (e) {
      $(this).collapse('hide');
    });

    var startTime = new Date().getTime(),
      searchTerm = $('#search-box').val();

    // The regex is the secret, it prevents text within tag declarations to be affected
    var regex = new RegExp(">([^<]*)?(" + searchTerm + ")([^>]*)?<", "ig");
    highlightTextNodes($('.api-documentation'), regex);

    // Once we've highlighted the node, lets expand any with a search match in them
    $('.api-detail').each(function () {

      var $elem = $(this);

      if ($elem.html().indexOf('') !== -1) {
        $elem.collapse('show');
        processButton($elem, 'close');
      }
    });

    // log the results
    if (console.log) {
      console.log("search completed in: " + ((new Date().getTime()) - startTime) + "ms");
    }

    $('.api-detail')
      .on('hide.bs.collapse', function (e) {
        processButton(this, 'detail');
      })
      .on('show.bs.collapse', function (e) {
        processButton(this, 'close');
      });
  }

  /**
   * Helper function for setting the text, styles for expandos
   */
  function processButton(button, text) {
    $('#' + $(button).attr('id') + '-btn').text(text)
      .toggleClass('btn-info')
      .toggleClass('btn-default');
  }
})();




© 2015 - 2025 Weber Informatics LLC | Privacy Policy