У меня есть ExtJS GridPanel со связанными RowSelectionModel и GridView. Когда пользователь выбирает несколько строк и нажимает кнопку «Перейти», я бы хотел, чтобы все выбранные строки мигали несколько раз.
В настоящее время я делаю что-то вроде:
selModel.each(function (record) {
var doEffect = function (effect, row, color, count, classToToggle) {
var effectCallback = function (count, max) {
if (count < max) {
return (function () { row[effect](color); });
}
else {
return (function () { row.addClass(classToToggle); });
}
};
row.removeClass(classToToggle);
for (var i = 1; i <= count; i++) {
row[effect](color, { callback: effectCallback(i, count) });
}
};
// highlight selected rows
var row = Ext.get(grid.getView().getRow(grid.store.indexOf(record)));
// essentially calling row.highlight() 3 times
doEffect('highlight', row, 'f8f7d6', 3, 'x-grid3-row-selected');
}
Проблема в том, что с увеличением количества выбранных строк визуальный эффект больше не возникает одновременно. Я знаю, что вы можете указать одновременность в конфигурации эффектов, в результате чего все эффекты, помещенные в очередь для этого элемента, будут происходить одновременно, но поскольку все строки являются отдельными элементами, это не совсем работает.
Было бы замечательно, если бы я мог как-то указать параллелизм в родительском контейнере так, чтобы анимация не происходила, пока последняя выбранная строка не была готова к отправке.
Кто-нибудь сталкивался с подобными вещами раньше?