mirror of
https://github.com/nunocoracao/blowfish.git
synced 2025-02-02 11:32:30 -06:00
86 lines
2 KiB
JavaScript
86 lines
2 KiB
JavaScript
/**
|
|
* CellsByRow example
|
|
*/
|
|
|
|
( function( window, factory ) {
|
|
/* jshint strict: false */ /* globals define, module, require */
|
|
if ( typeof define == 'function' && define.amd ) {
|
|
// AMD
|
|
define( [
|
|
'../outlayer'
|
|
],
|
|
factory );
|
|
} else if ( typeof module == 'object' && module.exports ) {
|
|
module.exports = factory(
|
|
require('../outlayer')
|
|
);
|
|
} else {
|
|
// browser global
|
|
window.CellsByRow = factory(
|
|
window.Outlayer
|
|
);
|
|
}
|
|
|
|
}( window, function factory( Outlayer) {
|
|
'use strict';
|
|
|
|
var CellsByRow = Outlayer.create( 'cellsByRow', {
|
|
columnWidth: 100,
|
|
rowHeight: 100
|
|
});
|
|
|
|
CellsByRow.prototype._resetLayout = function() {
|
|
this.getSize();
|
|
|
|
this._getMeasurement( 'columnWidth', 'outerWidth' );
|
|
this._getMeasurement( 'rowHeight', 'outerHeight' );
|
|
|
|
var isHorizontal = this._getOption('horizontal');
|
|
if ( isHorizontal ) {
|
|
this.rows = Math.floor( this.size.innerHeight / this.rowHeight );
|
|
this.rows = Math.max( this.rows, 1 );
|
|
} else {
|
|
this.cols = Math.floor( this.size.innerWidth / this.columnWidth );
|
|
this.cols = Math.max( this.cols, 1 );
|
|
}
|
|
|
|
this.itemIndex = 0;
|
|
};
|
|
|
|
CellsByRow.prototype._getItemLayoutPosition = function( item ) {
|
|
item.getSize();
|
|
var column, row;
|
|
|
|
var isHorizontal = this._getOption('horizontal');
|
|
if ( isHorizontal ) {
|
|
row = this.itemIndex % this.rows;
|
|
column = Math.floor( this.itemIndex / this.rows );
|
|
} else {
|
|
column = this.itemIndex % this.cols;
|
|
row = Math.floor( this.itemIndex / this.cols );
|
|
}
|
|
var x = column * this.columnWidth;
|
|
var y = row * this.rowHeight;
|
|
this.itemIndex++;
|
|
return {
|
|
x: x,
|
|
y: y
|
|
};
|
|
};
|
|
|
|
CellsByRow.prototype._getContainerSize = function() {
|
|
var isHorizontal = this._getOption('horizontal');
|
|
if ( isHorizontal ) {
|
|
return {
|
|
width: Math.ceil( this.itemIndex / this.rows ) * this.columnWidth
|
|
};
|
|
} else {
|
|
return {
|
|
height: Math.ceil( this.itemIndex / this.cols ) * this.rowHeight
|
|
};
|
|
}
|
|
};
|
|
|
|
return CellsByRow;
|
|
|
|
}));
|