Skip to content

Commit b67085a

Browse files
committed
MC-15981: Page Builder Render
1 parent 336ad5d commit b67085a

File tree

4 files changed

+25
-28
lines changed

4 files changed

+25
-28
lines changed

app/code/Magento/PageBuilder/composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"magento/module-rule": "*",
1717
"magento/module-directory": "*",
1818
"magento/module-email": "*",
19+
"magento/module-requirejs": "*",
1920
"php": "~7.1.3||~7.2.0"
2021
},
2122
"conflict": {

app/code/Magento/PageBuilder/view/adminhtml/web/js/form/form-mixin.js

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@
33
* See COPYING.txt for license details.
44
*/
55

6-
define(['jquery', 'Magento_PageBuilder/js/events', 'consoleLogger'], function ($, events, consoleLogger) {
6+
define([
7+
'underscore',
8+
'jquery',
9+
'Magento_PageBuilder/js/events',
10+
'consoleLogger'
11+
], function (_, $, events, consoleLogger) {
712
'use strict';
813

914
var mixin = {
@@ -35,32 +40,29 @@ define(['jquery', 'Magento_PageBuilder/js/events', 'consoleLogger'], function ($
3540
* @param {Object} data
3641
*/
3742
save: function (redirect, data) {
38-
var self = this,
39-
submit = this._super.bind(self, redirect, data),
40-
locks,
43+
var submit = this._super.bind(this, redirect, data),
4144
timeout;
4245

43-
if (this.pageBuilderInstances.length === 0) {
46+
if (_.isEmpty(this.pageBuilderInstances)) {
4447
submit();
4548
} else {
46-
locks = this.pageBuilderInstances.map(function (instance) {
47-
return instance.stage.renderingLock;
48-
});
49+
timeout = setTimeout(function () {
50+
consoleLogger.error('Page Builder was rendering for 5 seconds without releasing locks.');
51+
}, 5000);
4952

50-
if (locks.length === 0) {
51-
submit();
52-
} else {
53-
timeout = setTimeout(function () {
54-
consoleLogger.error('Page Builder was rendering for 5 seconds without releasing locks.');
55-
}, 5000);
53+
$('body').trigger('processStart');
5654

57-
$('body').trigger('processStart');
58-
$.when.apply(null, locks).then(function () {
59-
$('body').trigger('processStop');
60-
clearTimeout(timeout);
61-
submit();
62-
});
63-
}
55+
// Wait for all rendering locks within Page Builder stages to resolve
56+
$.when.apply(
57+
null,
58+
this.pageBuilderInstances.map(function (instance) {
59+
return instance.stage.renderingLock;
60+
})
61+
).then(function () {
62+
$('body').trigger('processStop');
63+
clearTimeout(timeout);
64+
submit();
65+
});
6466
}
6567
}
6668
};

app/code/Magento/PageBuilder/view/adminhtml/web/js/stage.js

Lines changed: 0 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/stage.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export default class Stage {
3636
* We always complete a single render when the stage is first loaded, so we can set the lock when the stage is
3737
* created. The lock is used to halt the parent forms submission when Page Builder is rendering.
3838
*/
39-
public renderingLock: JQueryDeferred<boolean> = $.Deferred();
39+
public renderingLock: JQueryDeferred<void>;
4040
private template: string = "Magento_PageBuilder/content-type/preview";
4141
private render: Render;
4242
private collection: Collection = new Collection();

0 commit comments

Comments
 (0)