Advertisement
Guest User

Untitled

a guest
Jul 28th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.85 KB | None | 0 0
  1. var autocomplete = {
  2.    
  3.     lastSearch: null,
  4.    
  5.     fields: [],
  6.     fldIndex: 0,
  7.    
  8.     setup: function() {
  9.        
  10.         $('.ac_item').live('click', function (ev) {
  11.             autocomplete.itemSelect($(this).attr('acid'), $(this).attr('value'), $(this).html());
  12.         });
  13.  
  14.     },
  15.    
  16.     create: function(masterContainer, searchField, searchAction, renderItemCallback, selectItemCallback) {
  17.         var index = autocomplete.fldIndex++;
  18.        
  19.         autocomplete.fields[index] = {
  20.             field: searchField,
  21.             lastVal: "",
  22.             containerOpen: false,
  23.             masterContainer: masterContainer,
  24.             container: null,
  25.             feedback: null,
  26.             action: searchAction,
  27.             renderItemCB: renderItemCallback,
  28.             selectItemCB: selectItemCallback,
  29.             value: null
  30.         };
  31.        
  32.         $(masterContainer).attr('acid', index);
  33.         $(masterContainer).addClass('ac_master_container');
  34.        
  35.         $(searchField).attr('acid', index);
  36.         $(searchField).addClass('ac_field');
  37.        
  38.         $(masterContainer).append("<div class=\"ac_container\" style=\"display: none;\" acid=\""+index+"\"></div>");
  39.         autocomplete.fields[index].container = ".ac_container[acid=\""+index+"\"]";
  40.        
  41.         $(masterContainer).append("<div class=\"ac_feedback\" style=\"display: none;\" acid=\""+index+"\"><img src=\"images/loading.gif\" alt=\"Carregando\" /> Buscando...</div>");
  42.         autocomplete.fields[index].feedback = ".ac_feedback[acid=\""+index+"\"]";
  43.  
  44.         autocomplete.checkUpdates(index);
  45.        
  46.     },
  47.    
  48.     checkUpdates: function(fld) {
  49.         var field = autocomplete.fields[fld];
  50.        
  51.         var value = $(field.field).val();
  52.         if(value != field.lastVal && field.value == null) {
  53.             field.lastVal = value;
  54.             autocomplete.search(fld, value);
  55.             autocomplete.openContainer(fld);
  56.         }
  57.        
  58.         setInterval("autocomplete.checkUpdates("+fld+");", 2500);
  59.        
  60.     },
  61.    
  62.     search: function(fld, query) {
  63.         var field = autocomplete.fields[fld];
  64.        
  65.         autocomplete.openContainer(fld);
  66.        
  67.         autocomplete.setLoading(fld);
  68.  
  69.         if(autocomplete.lastSearch != null) {
  70.             autocomplete.lastSearch.abort();
  71.         }
  72.  
  73.         autocomplete.lastSearch = $.post(
  74.             anchor(field.action),
  75.             {'query': query, 'LEAN_MODE': 'yes'},
  76.             function (raw) {
  77.                 try {
  78.  
  79.                     if(raw == null || typeof raw != "string" || raw == "" || raw.length <= 0) { return; }
  80.                     var data = JSON.parse(raw);
  81.  
  82.                     $(field.container).html("");
  83.  
  84.                     if(data.length <= 0) {
  85.                         autocomplete.closeContainer(fld);
  86.                     } else {
  87.                         for(var i in data) {
  88.                             var html = field.renderItemCB(field, i, data[i]);
  89.                             $(field.container).append("<div class=\"ac_item\" acid=\""+fld+"\" value=\""+data[i].id+"\">" + html + "</div>");
  90.                         }
  91.                        
  92.                         autocomplete.openContainer(fld);
  93.                     }
  94.  
  95.  
  96.                 } catch (e) {
  97.                     announce("Ocorreu um erro ao buscar o banco de dados! " + e.message, "error");
  98.                 }
  99.  
  100.                 autocomplete.setIdle(fld);
  101.             }
  102.         );
  103.     },
  104.    
  105.     itemSelect: function(fld, value, label) {
  106.         var field = autocomplete.fields[fld];
  107.        
  108.         $(field.field).val(value);
  109.        
  110.         field.value = value;
  111.        
  112.         field.selectItemCB(field, value, label);
  113.        
  114.         autocomplete.closeContainer(fld);
  115.        
  116.        
  117.        
  118.     },
  119.    
  120.     restart: function(fld) {
  121.         var field = autocomplete.fields[fld];
  122.         autocomplete.closeContainer(fld);
  123.         $(field.field).val("");
  124.         field.value = null;
  125.         field.restartCB(fld);
  126.         $(field.field).trigger('focus');
  127.     },
  128.    
  129.     openContainer: function(fld) {
  130.         var field = autocomplete.fields[fld];
  131.        
  132.         if(!field.containerOpen) {
  133.             $(field.container).slideDown(500);
  134.             field.containerOpen = true;
  135.         }
  136.        
  137.     },
  138.    
  139.     closeContainer: function(fld) {
  140.         var field = autocomplete.fields[fld];
  141.        
  142.         if(field.containerOpen) {
  143.             $(field.container).slideUp(500);
  144.             field.containerOpen = false;
  145.         }
  146.     },
  147.    
  148.    
  149.    
  150.     setLoading: function(fld) {
  151.         var field = autocomplete.fields[fld];
  152.         $(field.feedback).css('display','block');
  153.     },
  154.    
  155.     setIdle: function(fld) {
  156.         var field = autocomplete.fields[fld];
  157.         $(field.feedback).css('display','none');
  158.     }
  159.    
  160.    
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement