PartPicker: nicht global cachen sondern mit $.data ans DOM objekt packen
authorSven Schöling <s.schoeling@linet-services.de>
Fri, 12 Jul 2013 13:33:50 +0000 (15:33 +0200)
committerSven Schöling <s.schoeling@linet-services.de>
Fri, 12 Jul 2013 13:33:50 +0000 (15:33 +0200)
js/autocomplete_part.js
templates/webpages/part/_part_picker_result.html
templates/webpages/part/part_picker_search.html

index b9ef3e9..339801b 100644 (file)
@@ -1,6 +1,9 @@
 namespace('kivi', function(k){
-  k.PartPickerCache = { }
   k.PartPicker = function($real, options) {
+    // short circuit in case someone double inits us
+    if ($real.data("part_picker"))
+      return $real.data("part_picker");
+
     var o = $.extend({
       limit: 20,
       delay: 50,
@@ -151,7 +154,7 @@ namespace('kivi', function(k){
     pcont.append(picker);
     picker.addClass('icon16 CRM--Schnellsuche').click(open_dialog);
 
-    return {
+    var pp = {
       real:           function() { return $real },
       dummy:          function() { return $dummy },
       type:           function() { return $type },
@@ -180,11 +183,13 @@ namespace('kivi', function(k){
         });
       }
     }
+    $real.data('part_picker', pp);
+    return pp;
   }
 });
 
 $(function(){
   $('input.part_autocomplete').each(function(i,real){
-    kivi.PartPickerCache[real.id] = new kivi.PartPicker($(real));
+    kivi.PartPicker($(real));
   })
 });
index 0512b49..6b848f3 100644 (file)
@@ -26,6 +26,5 @@
 [% L.paginate_controls(target='#part_picker_result', selector='#part_picker_result') %]
 
 <script type='text/javascript'>
-  var pp = kivi.PartPickerCache[$('#part_picker_real_id').val()];
-  pp.init_results();
+  kivi.PartPicker($('#'+$('#part_picker_real_id').val())).init_results()
 </script>
index 69dca1b..a3cf406 100644 (file)
@@ -15,7 +15,7 @@
 
 <script type='text/javascript'>
   var timer;
-  var pp = kivi.PartPickerCache['[% FORM.real_id %]'];
+  var pp = kivi.PartPicker($('#[% FORM.real_id %]'));
   $(function(){
     $('#part_picker_filter').focus();
     pp.update_results();