В этом руководстве показано, как сделать две полезные вещи в SugarCRM 7.
Во-первых, как вызывать действия при обновлении строк в списке записей
SugarCRM, а во-вторых, как устанавливать информацию на основе данных строки. Приведенный здесь
пример существенно обновит цвета таблицы на основе
конкретного значения данных в каждой строке. Итак, скажем, у вас есть раскрывающийся список со значениями
Red, Green, Orange и Yellow, это обновит строки до указанного
цвета. Ключевым вызовом здесь является this.collection.on(‘data:sync:complete’), который, по сути, срабатывает, когда синхронизация данных sidecar(read backbone) завершена.
Этот код будет находиться в custom/modules/‹YOUR_MODULE›/clients/base/views/recordlist/recordlist.js.
({ this.collection.on(‘data:sync:complete’, function() { this.render_colors(); }, this); }, render_colors : function() { setTimeout( function() { $(“tr[name^=’’]”).each(function () { //loop over each row if ($(this).find(‘div[data-original-title=”Red”]’).length > 0) { //check value of TD $(this).find($(‘td’)).each(function () { $(this).css(“background-color”, “#FFBABA”); }); } else if ($(this).find(‘div[data-original-title=”Green”]’).length > 0) { $(this).find($(‘td’)).each(function () { $(this).css(“background-color”, “#C3F8B5”); }); } else if ($(this).find(‘div[data-original-title=”Orange”]’).length > 0) { $(this).find($(‘td’)).each(function () { $(this).css(“background-color”, “#FFCF8F”); }); } else if ($(this).find(‘div[data-original-title=”Yellow”]’).length > 0) { $(this).find($(‘td’)).each(function () { $(this).css(“background-color”, “#FAFE8E”); }); } }); }, 1000); } })
Одна вещь, которую вы могли бы заметить, это setTimeout с задержкой в 1 секунду.
Это просто потому, что таблица не будет отображаться, как только синхронизация завершится,
поэтому было добавлено ожидание в секунду разрешить браузеру
отображать таблицу, прежде чем перебирать строки и устанавливать
соответствующие цвета. Честно говоря, я просто не смог найти никакой документации или
примеров кода, чтобы увидеть, срабатывает ли даже при повторном отображении таблицы,
но я обновлю его здесь, если найду лучшее решение.