Sha256: 54140535bf1ed02fadca6ec969b0085507aa108652b8c212263e04fe8a0bff1f

Contents?: true

Size: 1.43 KB

Versions: 20

Compression:

Stored size: 1.43 KB

Contents

/*jslint vars: true, browser: true, white: true */
/*global jQuery, IQVOC */

IQVOC.quicksearch = (function($) {

"use strict";

var defaults = {
  minLength: 3,
  autoFocus: true,
  source: getConcepts,
  focus: function(ev, ui) { ev.preventDefault(); },
  select: onSelect
};

function onSelect(ev, ui) {
  if(ui.item.value) {
    $(ev.target).val(ui.item.label);
    document.location = ui.item.value;
  }
  ev.preventDefault();
}

function getConcepts(req, callback) {
  var form = $(this.element).closest("form");
  $.ajax({
    type: form.attr("method"),
    url: form.attr("action"),
    data: form.serialize(),
    success: function(data, status, xhr) {
      callback(extractConcepts(data));
    }
  });
}

function extractConcepts(html) {
  // disable scripts (adapted from jQuery's `load`)
  var rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;
  var html = html.replace(rscript, "");

  var concepts = $("<div />").append(html).find(".concept-items .concept-item");
  concepts = concepts.map(function(i, node) {
    var el = $("a", node);
    return {
      value: el.attr("href"),
      label: $.trim(el.parent().text()).replace(/\s+/, " ")
    };
  });

  return concepts.length ? Array.prototype.slice.call(concepts, 0) :
      [{ value: null, label: "no matches" }]; // TODO: i18n
}

return function(selector, options) {
  options = options ? $.extend(defaults, options) : defaults;
  $(selector).autocomplete(options);
};

}(jQuery));

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
iqvoc-4.12.1 app/assets/javascripts/iqvoc/quicksearch.js
iqvoc-4.12.0 app/assets/javascripts/iqvoc/quicksearch.js
iqvoc-4.11.1 app/assets/javascripts/iqvoc/quicksearch.js
iqvoc-4.11.0 app/assets/javascripts/iqvoc/quicksearch.js
iqvoc-4.10.0 app/assets/javascripts/iqvoc/quicksearch.js
iqvoc-4.9.0 app/assets/javascripts/iqvoc/quicksearch.js
iqvoc-4.3.3 app/assets/javascripts/iqvoc/quicksearch.js
iqvoc-4.8.2 app/assets/javascripts/iqvoc/quicksearch.js
iqvoc-4.8.1 app/assets/javascripts/iqvoc/quicksearch.js
iqvoc-4.8.0 app/assets/javascripts/iqvoc/quicksearch.js
iqvoc-4.7.0 app/assets/javascripts/iqvoc/quicksearch.js
iqvoc-4.6.1 app/assets/javascripts/iqvoc/quicksearch.js
iqvoc-4.5.2 app/assets/javascripts/iqvoc/quicksearch.js
iqvoc-4.6.0 app/assets/javascripts/iqvoc/quicksearch.js
iqvoc-4.5.1 app/assets/javascripts/iqvoc/quicksearch.js
iqvoc-4.5.0 app/assets/javascripts/iqvoc/quicksearch.js
iqvoc-4.4.0 app/assets/javascripts/iqvoc/quicksearch.js
iqvoc-4.3.2 app/assets/javascripts/iqvoc/quicksearch.js
iqvoc-4.3.1 app/assets/javascripts/iqvoc/quicksearch.js
iqvoc-4.3.0 app/assets/javascripts/iqvoc/quicksearch.js