Skip to content

Commit

Permalink
Merge pull request #1316 from cobicarmel/release/1.3.0
Browse files Browse the repository at this point in the history
optimization: remove defaults before save
  • Loading branch information
KingYes committed Feb 19, 2017
2 parents bd73bca + fc334f7 commit ac543fd
Show file tree
Hide file tree
Showing 4 changed files with 97 additions and 15 deletions.
15 changes: 11 additions & 4 deletions assets/dev/js/editor/editor.js
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,18 @@ App = Marionette.Application.extend( {
return elementData.controls;
}

var isInner = modelElement.get( 'isInner' );
var isInner = modelElement.get( 'isInner' ),
controls = {};

return _.filter( elementData.controls, function( controlData ) {
return ! ( isInner && controlData.hide_in_inner || ! isInner && controlData.hide_in_top );
_.each( elementData.controls, function( controlData, controlKey ) {
if ( isInner && controlData.hide_in_inner || ! isInner && controlData.hide_in_top ) {
return;
}

controls[ controlKey ] = controlData;
} );

return controls;
},

getControlView: function( controlID ) {
Expand Down Expand Up @@ -443,7 +450,7 @@ App = Marionette.Application.extend( {
}, options );

var self = this,
newData = elementor.elements.toJSON();
newData = elementor.elements.toJSON( { removeDefault: true } );

return this.ajax.send( 'save_builder', {
data: {
Expand Down
36 changes: 35 additions & 1 deletion assets/dev/js/editor/models/base-settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -111,9 +111,11 @@ BaseSettingsModel = Backbone.Model.extend( {
return new BaseSettingsModel( elementor.helpers.cloneObject( this.attributes ), elementor.helpers.cloneObject( this.options ) );
},

toJSON: function() {
toJSON: function( options ) {
var data = Backbone.Model.prototype.toJSON.call( this );

options = options || {};

delete data.widgetType;
delete data.elType;
delete data.isInner;
Expand All @@ -124,6 +126,38 @@ BaseSettingsModel = Backbone.Model.extend( {
}
} );

if ( options.removeDefault ) {
var controls = this.controls;

_.each( data, function( value, key ) {
var control = controls[ key ];

if ( control ) {
if ( ( 'text' === control.type || 'textarea' === control.type ) && data[ key ] ) {
return;
}

if ( 'object' === typeof data[ key ] ) {
var isEqual = true;

_.each( data[ key ], function( propertyValue, propertyKey ) {
if ( data[ key ][ propertyKey ] !== control[ 'default' ][ propertyKey ] ) {
return isEqual = false;
}
} );

if ( isEqual ) {
delete data[ key ];
}
} else {
if ( data[ key ] === control[ 'default' ] ) {
delete data[ key ];
}
}
}
} );
}

return data;
}
} );
Expand Down
51 changes: 46 additions & 5 deletions assets/js/editor.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions assets/js/editor.min.js

Large diffs are not rendered by default.

0 comments on commit ac543fd

Please sign in to comment.