/wp-content/plugins/ninja-forms-style/layouts/assets/js/builder/models/cellCollection.js
https://bitbucket.org/djmdigital/total-auto-care-wordpress · JavaScript · 57 lines · 32 code · 7 blank · 18 comment · 1 complexity · a0167b657ce36568ca2c81036345f4dc MD5 · raw file
- /**
- * Holds all of our cell models.
- *
- * @package Ninja Forms Layouts
- * @subpackage Fields
- * @copyright (c) 2016 WP Ninjas
- * @since 3.0
- */
- define( ['models/cellModel'], function( cellModel ) {
- var collection = Backbone.Collection.extend( {
- model: cellModel,
- comparator: 'order',
- initialize: function( models, options ) {
- this.options = options;
- this.on( 'change:fields', this.updateRowModel, this );
- this.on( 'add', this.addCell, this );
- this.on( 'remove', this.updateCellWidths, this );
- },
- addCell: function() {
- this.updateCellWidths();
- this.updateRowModel();
- this.options.rowModel.trigger( 'add:cell', this.options.rowModel );
- },
- updateRowModel: function() {
- this.options.rowModel.set( 'cells', this );
- this.options.rowModel.trigger( 'change:cells', this.options.rowModel );
- },
- /**
- * Update our cell widths.
- * This is called whenever we add or remove a cell from our cell collection.
- *
- * @since 3.0
- * @param Backbone.Model cellModel
- * @return void
- */
- updateCellWidths: function( cellModel ) {
- // Calculate a new width for our cells.
- var width = Math.round( 100 / this.models.length );
- if ( 100 < width * this.models.length ) {
- width = Math.floor( 100 / this.models.length );
- }
- // Set our width for each cell.
- _.each( this.models, function( cell ) {
- cell.set( 'width', width );
- } );
- this.sort();
- }
- } );
- return collection;
- } );