Skip to content
This repository was archived by the owner on Apr 29, 2019. It is now read-only.

Commit 6f70d06

Browse files
MAGETWO-83993: Fixed a js bug where ui_component labels have the wrong sort order. #11846
1 parent 0f948ac commit 6f70d06

File tree

3 files changed

+46
-27
lines changed

3 files changed

+46
-27
lines changed

app/code/Magento/Catalog/view/adminhtml/web/js/components/dynamic-rows-tier-price.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ define([
99
], function (_, DynamicRows) {
1010
'use strict';
1111

12+
/**
13+
* @deprecated Parent method contains labels sorting.
14+
* @see Magento_Ui/js/dynamic-rows/dynamic-rows
15+
*/
1216
return DynamicRows.extend({
1317

1418
/**

app/code/Magento/Ui/view/base/web/js/dynamic-rows/dynamic-rows.js

Lines changed: 4 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -533,7 +533,8 @@ define([
533533
* Init header elements
534534
*/
535535
initHeader: function () {
536-
var data;
536+
var labels = [],
537+
data;
537538

538539
if (!this.labels().length) {
539540
_.each(this.childTemplate.children, function (cell) {
@@ -547,15 +548,9 @@ define([
547548
sortOrder: cell.config.sortOrder
548549
});
549550

550-
this.labels.push(data);
551-
552-
/**
553-
* Sort the array after an element was added to fix an bug where
554-
* additional added field labels in ui_components haven't the right
555-
* sort order.
556-
*/
557-
this.labels.sort(this._compare);
551+
labels.push(data);
558552
}, this);
553+
this.labels(_.sortBy(labels, 'sortOrder'));
559554
}
560555
},
561556

@@ -921,24 +916,6 @@ define([
921916
}));
922917
},
923918

924-
/**
925-
* Compare two objects by the sortOrder property.
926-
*
927-
* @param {Object} $object1
928-
* @param {Object} $object2
929-
* @returns {Number}
930-
* @private
931-
*/
932-
_compare: function ($object1, $object2) {
933-
if ($object1.sortOrder > $object2.sortOrder) {
934-
return 1;
935-
} else if ($object1.sortOrder < $object2.sortOrder) {
936-
return -1;
937-
}
938-
939-
return 0;
940-
},
941-
942919
/**
943920
* Set new data to dataSource,
944921
* delete element

dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/dynamic-rows/dynamic-rows.test.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,5 +131,43 @@ define([
131131
model.deleteRecord(1, 1);
132132
expect(model.recordData()).toEqual([]);
133133
});
134+
135+
it('"initHeader" sortOrder', function () {
136+
var labels = [{
137+
name: 'Name 1',
138+
config: {
139+
label: 'Label 1',
140+
validation: false,
141+
columnsHeaderClasses: '',
142+
sortOrder: 10
143+
}
144+
}, {
145+
name: 'Name 2',
146+
config: {
147+
label: 'Label 2',
148+
validation: false,
149+
columnsHeaderClasses: '',
150+
sortOrder: 5
151+
}
152+
}],
153+
result = [{
154+
label: 'Label 2',
155+
name: 'Name 2',
156+
required: false,
157+
columnsHeaderClasses: '',
158+
sortOrder: 5
159+
}, {
160+
label: 'Label 1',
161+
name: 'Name 1',
162+
required: false,
163+
columnsHeaderClasses: '',
164+
sortOrder: 10
165+
}];
166+
167+
model.childTemplate = {
168+
children: labels
169+
};
170+
expect(JSON.stringify(model.labels())).toEqual(JSON.stringify(result));
171+
});
134172
});
135173
});

0 commit comments

Comments
 (0)