JAVASCRIPT   50
CatalogFilter
Guest on 18th September 2023 12:25:21 PM


  1. var CatalogFilter = function()
  2. {
  3.     return {
  4.         DOM:{
  5.             control:'ul.catalog_filter li.filter_control',
  6.             content:'li.filter_links',
  7.             modal:'div.catalog-filter-modal'
  8.         },
  9.         init:function(obj)
  10.         {
  11.             var self = this;
  12.             $(self.DOM.control).click(
  13.                 function()
  14.                 {
  15.                     $(self.DOM.modal).html($(this).parent().find(self.DOM.content).html()).modal();
  16.                 }
  17.             );
  18.         }
  19.     };
  20. }
  21.  
  22. var CategoriesMenu = function()
  23. {
  24.     return {
  25.         DOM:{
  26.             control:'ul.catalog-menu-category-item li.category-item-top',
  27.             content:'li.category-item-subs',
  28.             link:'a.category-item-top'
  29.         },
  30.         toggle:function(obj)
  31.         {
  32.             var self = this;
  33.             $(obj.element).parent().find(self.DOM.content).toggle();
  34.         },
  35.         init:function(obj)
  36.         {
  37.             var self = this;
  38.             $(self.DOM.link).click(
  39.                 function()
  40.                 {
  41.                     if ($(this).closest('ul.catalog-menu-category-item').find('li.category-sub').attr('itemprop'))
  42.                     {
  43.                         self.toggle({element:$(this).parent()});
  44.                         return false;
  45.                     }
  46.                 }
  47.             );
  48.            
  49.             $(self.DOM.control).click(
  50.                 function()
  51.                 {
  52.                     if ($(this).closest('ul.catalog-menu-category-item').find('li.category-sub').attr('itemprop'))
  53.                     {
  54.                         self.toggle({element:$(this)});
  55.                     }
  56.                     else
  57.                     {
  58.                         location.href = $(self.DOM.link).attr('href');
  59.                     }
  60.                 }
  61.             );
  62.         }
  63.     }
  64.    
  65. }
  66.  
  67. var SearchByCode = function()
  68. {
  69.     return {
  70.         DOM:{
  71.             field:      'input.product-code',
  72.             container:  'ul.search-by-code li.search-by-code-result'
  73.         },
  74.         init:function(obj)
  75.         {
  76.             var self = this;
  77.            
  78.             $(self.DOM.field).keyup(
  79.                 function(a)
  80.                 {
  81.                    
  82.                     if ($(this).val().length > 3)
  83.                     {
  84.                         var req = {
  85.                             action: 'productsearchbycode',
  86.                             code:   $(this).val()
  87.                         };
  88.                        
  89.                         var request = JSON.stringify(req);
  90.                        
  91.                         $.ajax({
  92.                             url:  AJAX_URL,
  93.                             type: 'POST',
  94.                             data: request
  95.                         }).
  96.                         done(
  97.                             function(response)
  98.                             {
  99.                                 var res = JSON.parse(response);
  100.                                 $(self.DOM.container).html(res.data);
  101.                                 $(self.DOM.container).show();
  102.                             }
  103.                         );
  104.                     }
  105.                     else
  106.                     {
  107.                         $(self.DOM.container).hide();
  108.                     }
  109.                 }
  110.             );
  111.         }
  112.     }
  113.    
  114. }
  115.  
  116. var FilterDisplayControl = function()
  117. {
  118.     return {
  119.         DOM:{
  120.            
  121.         },
  122.         init:function(obj)
  123.         {
  124.             var self = this;
  125.             self.DOM.control = obj.control;
  126.             self.DOM.view = obj.view;
  127.            
  128.             $(self.DOM.control).click(
  129.                 function()
  130.                 {
  131.                     $(this).parent().find(self.DOM.view).toggle();
  132.                 }
  133.             );
  134.            
  135.         }
  136.     }
  137.    
  138. }
  139.  
  140.  
  141. $(document).ready(
  142.     function()
  143.     {
  144.         var categoriesMenu = new CategoriesMenu();
  145.         categoriesMenu.init({});
  146.        
  147.         var catalogFilter = new CatalogFilter();
  148.         catalogFilter.init({});
  149.        
  150.         var searchByCode = new SearchByCode();
  151.         searchByCode.init({});
  152.        
  153.         var sortDisplayControl = new FilterDisplayControl();
  154.         sortDisplayControl.init({
  155.             control:'span.filter-display-control',
  156.             view:   'div.catalog-filters'
  157.         });
  158.        
  159.         var filterDisplayControl = new FilterDisplayControl();
  160.         filterDisplayControl.init({
  161.             control:'ul.filter-control',
  162.             view:   'ul.catalog_filter'
  163.         });
  164.        
  165.        
  166.     }
  167. );

Raw Paste

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