enmi12/glossaire/_posts/tests/2012-02-07-onlayout.html
author ymh <ymh.work@gmail.com>
Mon, 08 Sep 2025 19:44:41 +0200
changeset 23 417f20492bf7
parent 0 d970ebf37754
permissions -rwxr-xr-x
Update Docker configuration and plugin versions - Upgrade MariaDB from 10.6 to 11 with auto-upgrade support - Add WordPress debug environment variable to FPM container - Update PHP-FPM Dockerfile base image - Update Include Mastodon Feed plugin with bug fixes and improvements - Update Portfolio plugin (v2.58) with latest translations and demo data enhancements - Remove old README.md from Mastodon Feed plugin 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
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: onLayout
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 <a href="../docs/options.html#onlayout">onLayout callback</a> is 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( $elems, instance ) {
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
      // console.log( $elems.length, instance.$filteredAtoms.length );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
    function lmk() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
      // console.log('callback still works');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
    $container.isotope({
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
      itemSelector : '.element',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
      onLayout: changeBGColor,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
      masonry : {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
        columnWidth : 120
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
      },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
      masonryHorizontal : {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
        rowHeight: 120
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
      },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
      cellsByRow : {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
        columnWidth : 240,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
        rowHeight : 240
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
      },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
      cellsByColumn : {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
        columnWidth : 240,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
        rowHeight : 240
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
      },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
      getSortData : {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
        symbol : function( $elem ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
          return $elem.attr('data-symbol');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
        },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
        category : function( $elem ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
          return $elem.attr('data-category');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
        },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
        number : function( $elem ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
          return parseInt( $elem.find('.number').text(), 10 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
        },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
        weight : function( $elem ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
          return parseFloat( $elem.find('.weight').text().replace( /[\(\)]/g, '') );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
        },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
        name : function ( $elem ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
          return $elem.find('.name').text();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
    }, lmk );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
      
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
    var $optionSets = $('#options .option-set'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
        $optionLinks = $optionSets.find('a');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
    $optionLinks.click(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
      var $this = $(this);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
      // don't proceed if already selected
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
      if ( $this.hasClass('selected') ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
        return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
      var $optionSet = $this.parents('.option-set');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
      $optionSet.find('.selected').removeClass('selected');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
      $this.addClass('selected');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
      // make option object dynamically, i.e. { filter: '.my-filter-class' }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
      var options = {},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
          key = $optionSet.attr('data-option-key'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
          value = $this.attr('data-option-value');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
      // parse 'false' as false boolean
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
      value = value === 'false' ? false : value;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
      options[ key ] = value;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
      if ( key === 'layoutMode' && typeof changeLayoutMode === 'function' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
        // changes in layout modes need extra logic
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
        changeLayoutMode( $this, options )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
      } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
        // otherwise, apply new options
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
        $container.isotope( options, lmk );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
      
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
      return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
    });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
    $('#insert a').click(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
      var $newEls = $( fakeElement.getGroup() );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
      $container.isotope( 'insert', $newEls, lmk );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
      return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
    });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
    $('#append a').click(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
      var $newEls = $( fakeElement.getGroup() );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
      $container.append( $newEls ).isotope( 'appended', $newEls, lmk );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
      return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
    });
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
    // change size of clicked element
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
    $container.delegate( '.element', 'click', function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
      $(this).toggleClass('large');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
      $container.isotope( 'reLayout', lmk );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
    });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
    // toggle variable sizes of all elements
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
    $('#toggle-sizes').find('a').click(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
      $container
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
        .toggleClass('variable-sizes')
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
        .isotope( 'reLayout', lmk );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
      return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
    });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
    var $sortBy = $('#sort-by');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
    $('#shuffle a').click(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
      $container.isotope( 'shuffle', lmk );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
      $sortBy.find('.selected').removeClass('selected');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
      $sortBy.find('[data-option-value="random"]').addClass('selected');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
      return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
    });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
  });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
</script>