Jump To …

visualsearch.js

This is the annotated source code for VisualSearch.js, a rich search box for real data.

The annotated source HTML is generated by Docco.

/** @license VisualSearch.js 0.3.0
 *  (c) 2011 Samuel Clay, @samuelclay, DocumentCloud Inc.
 *  VisualSearch.js may be freely distributed under the MIT license.
 *  For all details and documentation:
 *  http://documentcloud.github.com/visualsearch
 */

(function() {

  var $ = jQuery; // Handle namespaced jQuery

Setting up VisualSearch globals. These will eventually be made instance-based.

  if (!window.VS) window.VS = {};
  if (!VS.app)    VS.app    = {};
  if (!VS.ui)     VS.ui     = {};
  if (!VS.model)  VS.model  = {};
  if (!VS.utils)  VS.utils  = {};

Sets the version for VisualSearch to be used programatically elsewhere.

  VS.VERSION = '0.3.0';

  VS.VisualSearch = function(options) {
    var defaults = {
      container   : '',
      query       : '',
      autosearch  : true,
      unquotable  : [],
      remainder   : 'text',
      showFacets  : true,
      callbacks   : {
        search          : $.noop,
        focus           : $.noop,
        blur            : $.noop,
        facetMatches    : $.noop,
        valueMatches    : $.noop
      }
    };
    this.options           = _.extend({}, defaults, options);
    this.options.callbacks = _.extend({}, defaults.callbacks, options.callbacks);
    
    VS.app.hotkeys.initialize();
    this.searchQuery   = new VS.model.SearchQuery();
    this.searchBox     = new VS.ui.SearchBox({
        app: this, 
        showFacets: this.options.showFacets
    });

    if (options.container) {
      var searchBox = this.searchBox.render().el;
      $(this.options.container).html(searchBox);
    }
    this.searchBox.value(this.options.query || '');

Disable page caching for browsers that incorrectly cache the visual search inputs. This is forced the browser to re-render the page when it is retrieved in its history.

    $(window).bind('unload', function(e) {});

Gives the user back a reference to the searchBox so they can use public methods.

    return this;
  };

Entry-point used to tie all parts of VisualSearch together. It will either attach itself to options.container, or pass back the searchBox so it can be rendered at will.

  VS.init = function(options) {
    return new VS.VisualSearch(options);
  };

})();