Advertisement
Guest User

Untitled

a guest
Mar 5th, 2015
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.     jQuery(document).ready(function($){
  3.  
  4.         var $workshops = $('article.workshop');
  5.        
  6.         /////////// FILTER BY AGE ////////////
  7.  
  8.         var $removeBtn = $('.filter .remove');
  9.         var $pottyTrained = $('.filter .potty-trained');
  10.         var $pottyTrainedInput = $pottyTrained.find('input[type=checkbox]');
  11.         var $slider    = $('.filter .slider');
  12.         var $rangeValues    = $(".value");
  13.         var rangeValueSel  = ".value.val-";
  14.         var ageFilter = -1;
  15.  
  16.         $slider.noUiSlider({
  17.             start: [2.0],      
  18.             step: 0.5,
  19.             //margin: 0.5,
  20.             range: {
  21.                 'min':  2.0,
  22.                 '9.09%' :   2.5,
  23.                 '18.18%' : 3.0,
  24.                 '27.27%' : 3.5,
  25.                 '36.36%' : 4.0,
  26.                 '43.43%' : 5.0,
  27.                 '50.50%' : 6.0,
  28.                 '56.56%' : 7.0,
  29.                 '63.63%' : 8.0,
  30.                 '69.69%' : 9.0,
  31.                 '76.76%' : 10.0,
  32.                 '85.85%' : 11.0,
  33.                 'max':  12
  34.             },
  35.             snap : true,
  36.             serialization: {
  37.                 lower: [
  38.                     //customToolTip
  39.                 ],
  40.                 upper : [
  41.                     //customToolTip
  42.                 ],
  43.                 format: {
  44.                     decimals: 2,
  45.                     mark: ','
  46.                 }
  47.             },
  48.         }).on('set slide', function(){
  49.             var current = $slider.val();
  50.             // Filter active
  51.             $removeBtn.show();
  52.  
  53.             // Highlight
  54.             var selector = current.replace(',','-').replace(/(50)/g, '5').replace(/(00)/g, '0');
  55.             $rangeValues.removeClass('active');
  56.             $(rangeValueSel + selector).toggleClass('active');
  57.             // Filter          
  58.             current = current.replace(',','.').replace(/(50)/g, '5').replace(/(00)/g, '0');
  59.             current = parseFloat(current);
  60.  
  61.            
  62.             if( current >= 2 && current <= 4){
  63.                 $pottyTrainedInput.removeAttr('disabled');
  64.             }
  65.             else {             
  66.                 $pottyTrainedInput.attr('disabled','disabled');
  67.             }
  68.             ageFilter = current;
  69.             apply_filters($workshops, ageFilter, weekFilter);
  70.         });
  71.  
  72.         $('.noUi-handle.noUi-handle-lower').mousedown(function(){
  73.             $slider.trigger('set');
  74.         })
  75.  
  76.         $removeBtn.on('click', function(){
  77.             $(this).fadeOut('fast');
  78.             ageFilter = -1;
  79.             $pottyTrainedInput.attr('disabled', 'disabled');
  80.             apply_filters($workshops, ageFilter, weekFilter);
  81.             $rangeValues.removeClass('active');
  82.         })     
  83.  
  84.         /////////// FILTER BY WEEK ////////////
  85.         var $widgetWeeks = $('.widget.weeks');
  86.         var $weeks = $widgetWeeks.find('.week');
  87.         var $allWeeks = $widgetWeeks.find('.week[data-week=all-weeks]');
  88.         var weekFilter = ['all-weeks'];
  89.  
  90.         $widgetWeeks.find('.week:not(.active)').on('click', function() {
  91.             var $this = $(this);            
  92.             var weekVal = $this.attr('data-week');
  93.            
  94.             if( weekFilter.indexOf(weekVal) == -1 )
  95.                 weekFilter.push(weekVal);                      
  96.            
  97.             apply_filters($workshops, ageFilter, weekFilter);
  98.  
  99.             $this.addClass('active');
  100.         });
  101.  
  102.         $weeks.find('.remove-week').on('click', function(e) {            
  103.             $week = $(this).parent();
  104.  
  105.             $week.removeClass('active');            
  106.            
  107.             var weekVal = $week.attr('data-week');
  108.  
  109.             var index = weekFilter.indexOf(weekVal);
  110.             if( index > -1 )
  111.                 weekFilter.splice(index, 1);  
  112.            
  113.             apply_filters($workshops, ageFilter, weekFilter);
  114.  
  115.             e.stopPropagation();
  116.         });
  117.  
  118.         ////////////// FILTER POTTY TRAINED/////////////
  119.         $pottyTrainedInput.attr('disabled', 'disabled');
  120.         $pottyTrained.find('input[type=checkbox]').on('click', function(){
  121.             apply_filters($workshops, ageFilter, weekFilter);          
  122.         })
  123.     })
  124.  
  125.     function apply_filters($workshops, ageFilter, weekFilter)
  126.     {      
  127.         $ = jQuery;
  128.         $workshops.each(function(){
  129.             // This workshop
  130.             var $workshop = $(this);
  131.  
  132.             // Workshop weeks
  133.             var workshopWeeks = $workshop.attr('data-weeks');
  134.             workshopWeeks = workshopWeeks.split(',');
  135.             var matchWeeks = false;
  136.             // Workshop ages
  137.             var from = parseFloat($workshop.attr('data-age-from'));
  138.             var to = parseFloat($workshop.attr('data-age-to'));    
  139.             var matchAge = false;
  140.             // Potty trained
  141.             var pottyTrainedInput = $('.filter .potty-trained').find('input[type=checkbox]:checked');          
  142.             var workshopRequirements = $workshop.attr('data-requirements');
  143.             var matchRequirements = false;
  144.            
  145.             if( (ageFilter > 4 || ageFilter == -1) || pottyTrainedInput.size() > 0) {
  146.                 matchRequirements = true;
  147.             }
  148.  
  149.             if( weekFilter.length > 1 ){
  150.                 for(var i=0; i < weekFilter.length; i++)
  151.                 {
  152.                     if( workshopWeeks.indexOf(weekFilter[i]) > -1 ){                   
  153.                         matchWeeks = true;
  154.                     }
  155.                 }
  156.             }else {
  157.                 matchWeeks = true;
  158.             }
  159.            
  160.             ////////////////////
  161.             if( ageFilter != -1 ){
  162.                 if( (ageFilter >= from) && (ageFilter <= to) ){
  163.                     matchAge = true;
  164.                 }
  165.                 else if( ageFilter == 12 ){
  166.                     if( from >= ageFilter && to >= ageFilter ){
  167.                         matchAge = true;
  168.                     }
  169.                     else{                  
  170.                     }
  171.                 }
  172.                 else {
  173.                     matchAge = false;
  174.                 }
  175.             }else {
  176.                 matchAge = true;
  177.             }
  178.  
  179.             if( matchAge && matchWeeks )
  180.                 if( !matchRequirements && workshopRequirements == "potty_trained"  )
  181.                     $workshop.fadeOut('fast');
  182.                 else
  183.                     $workshop.fadeIn('fast');
  184.             else
  185.                 $workshop.fadeOut('fast');
  186.         });
  187.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement