Skip to content

Commit 695d8a7

Browse files
committed
MAGETWO-55785: Lightweight configurable product form load and options display
1 parent 5bdba9a commit 695d8a7

File tree

2 files changed

+35
-3
lines changed
  • app/code/Magento/ConfigurableProduct/view/adminhtml

2 files changed

+35
-3
lines changed

app/code/Magento/ConfigurableProduct/view/adminhtml/templates/catalog/product/edit/super/matrix.phtml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,10 @@ $currencySymbol = $block->getCurrencySymbol();
172172
id: $parent.getRowId(variation, 'price'),
173173
name: $parent.getVariationRowName(variation, 'price')
174174
},
175-
value: variation.price
175+
value: variation.price,
176+
event: {
177+
keyup: validatePrice()
178+
}
176179
"/>
177180
<label class="addafter"
178181
data-bind="attr: {for: $parent.getRowId(variation, 'price')">

app/code/Magento/ConfigurableProduct/view/adminhtml/web/js/variations/variations.js

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,14 +82,36 @@ define([
8282
}, this);
8383

8484
$('#save-split-button, #save-split-button .item').click(function () {
85-
this.productMatrixSerialized(JSON.stringify(this.prepareVariations()));
85+
var variations = this.prepareVariations(),
86+
validationError = this.validateVariationPrices(this.variations) || false;
87+
88+
if (validationError) {
89+
pagingObservables.current(
90+
Math.floor(this.variations.indexOf(validationError) / pagingObservables.pageSize() + 1)
91+
);
92+
$('[data-form="edit-product"]').validation('isValid');
93+
94+
return;
95+
}
96+
97+
this.productMatrixSerialized(JSON.stringify(variations));
8698
this.associatedProductsSerialized(JSON.stringify(this.associatedProducts));
8799
this.configurationsSerialized(JSON.stringify(this.configurations));
88100
}.bind(this));
89101

90102
return this;
91103
},
92104

105+
/**
106+
* Validate variations data.
107+
* @param {Array} variations
108+
*/
109+
validateVariationPrices: function (variations) {
110+
return _.find(variations, function (variation) {
111+
return variation.hasOwnProperty('price') && variation.price === '';
112+
});
113+
},
114+
93115
/**
94116
* @param {String} rowIndex
95117
*/
@@ -400,7 +422,14 @@ define([
400422
variationKey: this.getVariationKey(variation.options),
401423
editable: variation.editable === undefined ? !variation.productId : variation.editable,
402424
productUrl: this.buildProductUrl(variation.productId),
403-
status: variation.status === undefined ? 1 : parseInt(variation.status, 10)
425+
status: variation.status === undefined ? 1 : parseInt(variation.status, 10),
426+
427+
/**
428+
* Validates variation price.
429+
*/
430+
validatePrice: function () {
431+
$('[data-form="edit-product"]').validation('isValid');
432+
}
404433
}));
405434
}, this);
406435
this.productMatrix(tempMatrix);

0 commit comments

Comments
 (0)