95c275abba913afe5092dbe02217193936419d98
[kivitendo-erp.git] / js / kivi.QuickSearch.js
1 namespace('kivi', function(k){
2   k.QuickSearch = function($real, options) {
3     if ($real.data("quick_search"))
4       return $real.data("quick_search");
5
6     var KEY = {
7       ENTER:     13,
8     };
9     var o = $.extend({
10       limit: 20,
11       delay: 50,
12     }, options);
13
14     function send_query(action, term, id, success) {
15       var data = { module: o.module };
16       if (term != undefined) data.term = term;
17       if (id   != undefined) data.id   = id;
18       $.ajax($.extend(o, {
19         url:      'controller.pl?action=TopQuickSearch/' + action,
20         dataType: "json",
21         data:     data,
22         success:  success
23       }));
24     }
25
26     function submit_search(term) {
27       send_query('do_search', term, undefined, kivi.eval_json_result);
28     }
29
30     $real.autocomplete({
31       source: function(req, rsp) {
32         send_query('query_autocomplete', req.term, undefined, function (data){ rsp(data) });
33       },
34       select: function(event, ui) {
35         send_query('select_autocomplete', undefined, ui.item.id, kivi.eval_json_result);
36       },
37     });
38     $real.keydown(function(event){
39       if (event.which == KEY.ENTER) {
40         if ($real.val() != '') {
41           submit_search($real.val());
42         }
43       }
44     });
45
46     $real.data('quick_search', {});
47   }
48 });
49
50 $(function(){
51   $('input[id^=top-quick-search]').each(function(_,e){
52     kivi.QuickSearch($(e), { module: $(e).attr('module') })
53   })
54 })