enmi12/glossaire/_posts/tests/2011-10-19-callbacks.html
author ymh <ymh.work@gmail.com>
Mon, 14 Oct 2019 17:39:30 +0200
changeset 7 cf61fcea0001
parent 0 d970ebf37754
permissions -rwxr-xr-x
resynchronize code repo with production
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
---
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
title: Callbacks
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
layout: default
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
category: tests
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
---
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
<section id="copy">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
  <p>Tests that callbacks are triggering properly, after animation/transition has completed.</p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
</section>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
<section id="options" class="clearfix">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
  {% include filter-buttons.html %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
  {% include sort-buttons.html %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
  <h3>Etc</h3>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
  <ul id="etc" class="clearfix">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
    <li id="toggle-sizes"><a href="#toggle-sizes">Toggle variable sizes</a></li>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
    <li id="insert"><a href="#insert">Insert new elements</a></li>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
    <li id="append"><a href='#append'>Append new elements</a></li>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
    <li id="shuffle"><a href='#shuffle'>Shuffle</a></li>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
  </ul>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
</section> <!-- #options -->
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
<div id="container" class="clickable variable-sizes clearfix">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
  {% for elem_number in site.best_of_order %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
    {% assign element = site.elements[elem_number] %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
    {% include element-partial.html %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
  {% endfor %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
</div> <!-- #container -->
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
<script src="../{{ site.jquery_js }}"></script>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
<script src="../{{ site.isotope_js }}"></script>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
<script src="../js/fake-element.js"></script>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
<script>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
  $(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
    var $container = $('#container');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
    {% include random-sizes.js %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
    var colors = ['red', 'green', 'blue', 'yellow', 'purple', 'orange', 'white'],
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
        colorI = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
    function changeBGColor() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
      var color = colors[ colorI % colors.length ];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
      $container.css({ background: color })
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
      colorI++;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
    $container.isotope({
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
      itemSelector : '.element',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
      masonry : {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
        columnWidth : 120
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
      },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
      masonryHorizontal : {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
        rowHeight: 120
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
      },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
      cellsByRow : {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
        columnWidth : 240,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
        rowHeight : 240
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
      },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
      cellsByColumn : {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
        columnWidth : 240,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
        rowHeight : 240
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
      },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
      getSortData : {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
        symbol : function( $elem ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
          return $elem.attr('data-symbol');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
        },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
        category : function( $elem ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
          return $elem.attr('data-category');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
        },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
        number : function( $elem ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
          return parseInt( $elem.find('.number').text(), 10 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
        },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
        weight : function( $elem ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
          return parseFloat( $elem.find('.weight').text().replace( /[\(\)]/g, '') );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
        },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
        name : function ( $elem ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
          return $elem.find('.name').text();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
    }, changeBGColor );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
      
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
    var $optionSets = $('#options .option-set'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
        $optionLinks = $optionSets.find('a');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
    $optionLinks.click(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
      var $this = $(this);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
      // don't proceed if already selected
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
      if ( $this.hasClass('selected') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
        return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
      var $optionSet = $this.parents('.option-set');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
      $optionSet.find('.selected').removeClass('selected');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
      $this.addClass('selected');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
      // make option object dynamically, i.e. { filter: '.my-filter-class' }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
      var options = {},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
          key = $optionSet.attr('data-option-key'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
          value = $this.attr('data-option-value');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
      // parse 'false' as false boolean
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
      value = value === 'false' ? false : value;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
      options[ key ] = value;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
      if ( key === 'layoutMode' && typeof changeLayoutMode === 'function' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
        // changes in layout modes need extra logic
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
        changeLayoutMode( $this, options )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
      } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
        // otherwise, apply new options
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
        $container.isotope( options, changeBGColor );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
      
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
      return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
    });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
    $('#insert a').click(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
      var $newEls = $( fakeElement.getGroup() );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
      $container.isotope( 'insert', $newEls, changeBGColor );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
      return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
    });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
    $('#append a').click(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
      var $newEls = $( fakeElement.getGroup() );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
      $container.append( $newEls ).isotope( 'appended', $newEls, changeBGColor );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
      return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
    });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
    // change size of clicked element
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
    $container.delegate( '.element', 'click', function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
      $(this).toggleClass('large');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
      $container.isotope( 'reLayout', changeBGColor );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
    });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
    // toggle variable sizes of all elements
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
    $('#toggle-sizes').find('a').click(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
      $container
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
        .toggleClass('variable-sizes')
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
        .isotope( 'reLayout', changeBGColor );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
      return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
    });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
    var $sortBy = $('#sort-by');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
    $('#shuffle a').click(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
      $container.isotope( 'shuffle', changeBGColor );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
      $sortBy.find('.selected').removeClass('selected');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
      $sortBy.find('[data-option-value="random"]').addClass('selected');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
      return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
    });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
  });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
</script>