CRM-12872 - Search js - fix searchBuilder to work with new ajax
authorColeman Watts <coleman@civicrm.org>
Fri, 24 Jan 2014 07:17:45 +0000 (23:17 -0800)
committerColeman Watts <coleman@civicrm.org>
Fri, 24 Jan 2014 07:17:45 +0000 (23:17 -0800)
templates/CRM/Contact/Form/Search/Builder.js

index 5f641ce0d905e9078f4a5adf5510f5efb11ccde0..8319feca54212f799f03e0222aa28925baa2b43a 100644 (file)
 
   // Initialize display: Hide empty blocks & fields
   var newBlock = CRM.searchBuilder && CRM.searchBuilder.newBlock || 0;
-  $('.crm-search-block', '#Builder').each(function(blockNo) {
-    var block = $(this);
-    var empty = blockNo + 1 > newBlock;
-    var skippedRow = false;
-    $('tr:not(.crm-search-builder-add-row)', block).each(function(rowNo) {
-      var row = $(this);
-      if ($('select:first', row).val() === '') {
-        if (!skippedRow && (rowNo == 0 || blockNo + 1 == newBlock)) {
-          skippedRow = true;
+  function initialize() {
+    $('.crm-search-block', '#Builder').each(function(blockNo) {
+      var block = $(this);
+      var empty = blockNo + 1 > newBlock;
+      var skippedRow = false;
+      $('tr:not(.crm-search-builder-add-row)', block).each(function(rowNo) {
+        var row = $(this);
+        if ($('select:first', row).val() === '') {
+          if (!skippedRow && (rowNo == 0 || blockNo + 1 == newBlock)) {
+            skippedRow = true;
+          }
+          else {
+            row.hide();
+          }
         }
         else {
-          row.hide();
+          empty = false;
         }
-      }
-      else {
-        empty = false;
+      });
+      if (empty) {
+        block.hide();
       }
     });
-    if (empty) {
-      block.hide();
-    }
-  });
+  }
 
-  $('#Builder')
+  $('#crm-main-content-wrapper')
     // Reset and hide row
     .on('click', '.crm-reset-builder-row', function() {
       var row = $(this).closest('tr');
       }
       $(this).siblings('input').val(value);
     })
-  ;
+    .on('crmLoad', function() {
+      initialize();
+      $('select[id^=mapper][id$="_1"]', '#Builder').each(handleUserInputField);
+    });
 
   $().crmAccordions();
+  initialize();
 
   // Fetch initial options during page refresh - it's more efficient to bundle them in a single ajax request
   var initialFields = {}, fetchFields = false;