JAVASCRIPT   114

ajax search js

Guest on 9th May 2022 01:59:36 AM

  1. angular.module(angAppName)
  2.     .directive('ajaxSearch', function(customFilterService){
  3.        
  4.         return{
  5.            
  6.             restrict:"AE",
  7.             require: "?ngModel",
  8.             scope:true,
  9.             bindToController: true,
  10.             controllerAs: 'vm',
  11.             link:function( scope, elem, attrs, ngModel ) {
  12.                
  13.                                 var activePostsList = [];
  14.  
  15.                                 var searchType = attrs.searchType;
  16.  
  17.                                 scope.ajaxSearch = function(){
  18.                                        
  19.                                         var searchQ,
  20.                                                 query = {},
  21.                                                 field_exists = false,
  22.                                                 field;
  23.  
  24.                                                 switch ( searchType ) {
  25.                                                        
  26.                                                         case "general-search":
  27.                                                                
  28.                                                                 searchQ = scope.pxsearch;
  29.                                                                
  30.                                                                 field_exists = false;
  31.  
  32.                                                                 for ( var c=0; i < scope.actionSettings.customFields.length; i++ ) {
  33.                                                                         field = scope.actionSettings.customFields[c];
  34.                                                                         if ( 'ajax-main-search' == field.ID ) {
  35.                                                                                 scope.actionSettings.customFields[c].value = searchQ;
  36.                                                                                 field_exists = true;
  37.                                                                         }
  38.                                                                 }
  39.                                                                
  40.                                                                 if ( false === field_exists ) {
  41.  
  42.                                                                         query = {
  43.                                                                                 "ID":"ajax-main-search",
  44.                                                                                 "filter_as":null,
  45.                                                                                 "type":"main-search",
  46.                                                                                 "value":searchQ
  47.                                                                         };
  48.  
  49.                                                                         scope.actionSettings.customFields.push(query);
  50.                                                                 }
  51.                                                                                                                
  52.                                                                 break;
  53.                                                        
  54.                                                         case "woo-product-sku":
  55.                                                                
  56.                                                                 searchQ = scope.pxsearch_woo_sku;
  57.                                                                
  58.                                                                 field_exists = false;
  59.  
  60.                                                                 for ( var i=0; i < scope.actionSettings.customFields.length; i++ ) {
  61.                                                                         field = scope.actionSettings.customFields[i];
  62.                                                                         if ( 'ajax-product-sku-search' == field.ID ) {
  63.                                                                                 scope.actionSettings.customFields[i].value = searchQ;
  64.                                                                                 field_exists = true;
  65.                                                                         }
  66.                                                                 }
  67.  
  68.                                                                 if ( false === field_exists ) {
  69.  
  70.                                                                         query = {
  71.                                                                                 "ID":"ajax-product-sku-search",
  72.                                                                                 "filter_as":null,
  73.                                                                                 "type":"main-search",
  74.                                                                                 "value":searchQ
  75.                                                                         };
  76.  
  77.                                                                         scope.actionSettings.customFields.push(query);
  78.  
  79.                                                                 }
  80.                                                                
  81.                                                                
  82.                                                                 break;
  83.                                                 }
  84.  
  85.  
  86.  
  87.                                                 scope.loadMoreBtn.postsLoading = true;
  88.  
  89.  
  90.                                                 customFilterService.getPosts( scope.postType, scope.postsPerPage, 1, scope.actionSettings.customFields )
  91.                                                         .success(function( data ) {
  92.  
  93.                                                                 scope.actionSettings.postsCount = data.postsCount;
  94.                                                                 scope.actionSettings.pagesCount = data.pages;
  95.                                                                 scope.actionSettings.pxCurrentPage = 2;
  96.  
  97.                                                                 if ( scope.actionSettings.pxCurrentPage <= data.pages) scope.loadMoreBtn.morePostsAvailable = true;
  98.                                                                 else scope.loadMoreBtn.morePostsAvailable = false;
  99.  
  100.                                                                 scope.actionSettings.filterPostsTemplate = data.posts;
  101.                                                                 scope.filterPostsTemplate.posts = data.posts;
  102.                                                                 scope.loadMoreBtn.postsLoading = false;
  103.  
  104.                                                                 scope.directiveInfo.afterPostsLoadCallback();
  105.  
  106.                                                         });
  107.  
  108.                                 };
  109.  
  110.                                 elem.bind("keydown keypress", function (event) {
  111.                                        
  112.                                         if ( event.which === 13 ) {
  113.  
  114.                                                 scope.ajaxSearch();
  115.  
  116.                                                 event.preventDefault();
  117.  
  118.                                         }
  119.                                 });
  120.  
  121.                                 elem.bind("blur", function(event){
  122.                                         scope.ajaxSearch();
  123.                                 });
  124.  
  125.             }
  126.            
  127.         };
  128.        
  129.     });

Raw Paste


Login or Register to edit or fork this paste. It's free.