Advertisement
benshepherd

js problem

Feb 12th, 2015
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     var selectedRange = null;
  2.     var selectedStyle = null;
  3.     var selectedColour = null;
  4.     var ranges = [];
  5.     var styles = [];
  6.     var colours = [];
  7.     var dropdownStyleClickable = false;
  8.     var dropdownColourClickable = false;    
  9.  
  10.     $(function() {
  11.  
  12.         //Load ranges
  13.         $.getJSON('wallAjax?action=getRanges', function(response)
  14.         {
  15.             console.log('ranges');
  16.             console.log(response);
  17.             ranges = response;
  18.  
  19.             updateUi();
  20.         });
  21.  
  22.         // top selection actions for dropdowns
  23.         $(".wall-selection .span4 a").click(function(e) {
  24.  
  25.             e.preventDefault();
  26.  
  27.             var target = $(this).data("dropdown");  // range, style, colour
  28.             var dropdown = $(".wall-dropdown."+target);
  29.             var delay = 0;
  30.  
  31.             //Check if we're allowed to view these dropdowns
  32.             if(target == 'styles' && !dropdownStyleClickable) return;
  33.             if(target == 'colours' && !dropdownColourClickable) return;
  34.  
  35.             //If a dropdown is visible, hide it, and add delay to show clicked dropdown
  36.             if(dropdown.is(':visible'))
  37.             {
  38.                 dropdown.slideUp(500);
  39.             }
  40.             else
  41.             {
  42.                 if($(".wall-dropdown").is(':visible'))
  43.                 {
  44.                     $(".wall-dropdown").slideUp(500);
  45.                     delay = 600;
  46.                 }
  47.  
  48.                 dropdown.delay(delay).slideDown(500);
  49.             }
  50.         });
  51.     });
  52.  
  53.     function updateUi()
  54.     {
  55.         bindClickEvents();
  56.  
  57.         var dropdownRangeText = $(".text.range");
  58.         var dropdownStyleText = $(".text.style");
  59.         var dropdownColourText = $(".text.colour");
  60.         var textRange = $(".selected.range");
  61.         var textStyle = $(".selected.style");
  62.         var textColour = $(".selected.colour");
  63.  
  64.  
  65.         // NOT selected range
  66.         // NOT selected style
  67.         // NOT selected colour
  68.         if(selectedRange == null && selectedStyle == null && selectedColour == null)
  69.         {
  70.             dropdownRangeText.html('Cork Collections');
  71.             dropdownStyleText.html('Select your collection first');
  72.             dropdownColourText.html('Select your collection first');
  73.             textRange.html('');
  74.             textStyle.html('');
  75.             textColour.html('');
  76.             dropdownStyleClickable = false;
  77.             dropdownColourClickable = false;
  78.  
  79.             updateRangesDropdown();
  80.         }
  81.  
  82.         // Selected range
  83.         // NOT selected style
  84.         // NOT selected colour
  85.         if(selectedRange != null && selectedStyle == null && selectedColour == null)
  86.         {
  87.             dropdownRangeText.html('Cork Collections');
  88.             dropdownStyleText.html('Cork Range');
  89.             dropdownColourText.html('Select your collection first');
  90.  
  91.             if(typeof ranges[selectedRange] != 'undefined')
  92.                 textRange.html(' - ' + ranges[selectedRange]['RN Range']);
  93.            
  94.             textStyle.html('');
  95.             textColour.html('');
  96.  
  97.             dropdownStyleClickable = true;
  98.             dropdownColourClickable = false;          
  99.  
  100.             updateStylesDropdown();
  101.         }
  102.  
  103.         // Selected range
  104.         // Selected style
  105.         // NOT selected colour
  106.         if(selectedRange != null && selectedStyle != null && selectedColour == null)
  107.         {
  108.             dropdownRangeText.html('Cork Collections');
  109.             dropdownStyleText.html('Cork Range');
  110.             dropdownColourText.html('Cork Colour');
  111.  
  112.             if(typeof ranges[selectedRange] != 'undefined')
  113.                 textRange.html(' - ' + ranges[selectedRange]['RN Range']);
  114.            
  115.             if(typeof styles[selectedStyle] != 'undefined')
  116.                 textStyle.html(' - ' + styles[selectedStyle]['SY Style']);
  117.  
  118.             textColour.html('');
  119.  
  120.             dropdownStyleClickable = true;
  121.             dropdownColourClickable = true;
  122.  
  123.             updateColoursDropdown();  
  124.         }
  125.  
  126.         // Selected range
  127.         // Selected style
  128.         // Selected colour
  129.         if(selectedRange != null && selectedStyle != null && selectedColour != null)
  130.         {
  131.  
  132.         }
  133.     }
  134.  
  135.     function runFilter()
  136.     {
  137.         $.getJSON('wallAjax?action=runFilter&rangeId='+selectedRange+'&styleId='+selectedStyle+'&colourId='+selectedColour, function(response)
  138.         {
  139.             styles = response['styles'];
  140.             colours = response['colours'];
  141.  
  142.             console.log('Filter result');
  143.             console.log(response);
  144.             updateUi();
  145.         });        
  146.     }
  147.  
  148.     function updateColoursDropdown()
  149.     {
  150.         return;
  151.        
  152.         var dropdown = $(".wall-dropdown.styles .container");
  153.  
  154.         dropdown.html('');
  155.  
  156.         for(var k in colours)
  157.         {
  158.             var id = k;
  159.             var name = colours[id]['SY Style'];
  160.  
  161.             var $div = $('<div></div>');
  162.             $div.addClass('item');
  163.             $div.addClass('style');
  164.             $div.data('id', id);
  165.  
  166.             var $img = $('<img>');
  167.             $img.attr('src', 'images/no_picture.jpg');
  168.  
  169.             var $p = $('<p></p>');
  170.             $p.html(name);
  171.  
  172.             $div.append($p);
  173.             $div.append($img);
  174.  
  175.             dropdown.append($div);
  176.         }        
  177.     }    
  178.  
  179.     function updateStylesDropdown()
  180.     {
  181.         var dropdown = $(".wall-dropdown.styles .container");
  182.  
  183.         dropdown.html('');
  184.  
  185.         for(var k in styles)
  186.         {
  187.             var id = k;
  188.             var name = styles[id]['SY Style'];
  189.  
  190.             var $div = $('<div></div>');
  191.             $div.addClass('item');
  192.             $div.addClass('style');
  193.             $div.data('id', id);
  194.  
  195.             var $img = $('<img>');
  196.             $img.attr('src', 'images/no_picture.jpg');
  197.  
  198.             var $p = $('<p></p>');
  199.             $p.html(name);
  200.  
  201.             $div.append($p);
  202.             $div.append($img);
  203.  
  204.             dropdown.append($div);
  205.         }        
  206.     }
  207.  
  208.     function updateRangesDropdown()
  209.     {
  210.         var dropdown = $(".wall-dropdown.ranges .container");
  211.  
  212.         dropdown.html('');
  213.  
  214.         for(var k in ranges)
  215.         {
  216.             var id = k;
  217.             var name = ranges[id]['RN Range'];
  218.  
  219.             var $div = $('<div></div>');
  220.             $div.addClass('item');
  221.             $div.addClass('range');
  222.             $div.data('id', id);
  223.  
  224.             var $img = $('<img>');
  225.             $img.attr('src', 'images/no_picture.jpg');
  226.  
  227.             var $p = $('<p></p>');
  228.             $p.html(name);
  229.  
  230.             $div.append($p);
  231.             $div.append($img);
  232.  
  233.             dropdown.append($div);
  234.         }
  235.     }  
  236.  
  237.     function bindClickEvents()
  238.     {
  239.         console.log('bindClickEvents');
  240.  
  241.         $(".wall-dropdown .item").unbind('click').on('click', function() {
  242.  
  243.             console.log('Item clicked');
  244.  
  245.             if($(this).hasClass('range'))
  246.             {
  247.                 $(".item.range").removeClass('active');
  248.  
  249.                 selectedRange = $(this).data('id');
  250.  
  251.                 $(this).addClass('active');
  252.  
  253.                 selectedStyle = null;
  254.                 selectedColour = null;
  255.             }
  256.  
  257.             if($(this).hasClass('style'))
  258.             {
  259.                 $(".item.style").removeClass('active');
  260.  
  261.                 selectedStyle = $(this).data('id');
  262.  
  263.                 $(this).addClass('active');
  264.  
  265.                 selectedColour = null;
  266.             }
  267.  
  268.             if($(this).hasClass('colour'))
  269.             {
  270.                 $(".item.colour").removeClass('active');
  271.  
  272.                 selectedColour = $(this).data('id');
  273.  
  274.                 $(this).addClass('active');
  275.             }            
  276.  
  277.             runFilter();
  278.         });        
  279.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement