Кастомизация разметки и работы компонента чат
В компоненте as.messages предусмотрены JS коллбеки, через которые можно менять разметку отдельных элементов чата.
- as.messages.makeup.getChatToolbar(cont, params, data) - разметка верхней панели компонента чат (там где кнопки startChat chatSearch).
- as.messages.makeup.getNoRooms(cont, params, data)- сообщение слева, что нет переписок.
- as.messages.makeup.getRoomListItem(item, sNotRead, time) - разметка элемента комнаты слева в списке комнат.
- as.messages.makeup.getStartText(cont, params, data) Разметка начального состояния справа (когда не выбрана комната).
- as.messages.makeup.getNoMessages(cont, params, data) - нет сообщений в конате.
- as.messages.makeup.getRoomToolbar(cont, params, data) - верх комнаты (заголовок и панель кнопок)
- as.messages.makeup.getMessage(item, user, options, text, deliveryStatus) - разметка одного сообщения.
- as.messages.makeup.newMessage(cont, params, data) - разметка для добавления нового сообщения в комнату (где поле ввода, кнопка Отправить и добавление файлов).
Все они возвращают строку. Если функция определена, то она будет использована вместо стандартной разметки.
В выходной разметке можно использовать также дополнительные компоненты (формы, таблицы), тем самым получая еще больше гибкости по функциональности чата.
Пример использования кастом разметки (используется специальный коллбек as.messagesInitCallback, т.к. компонент as.messages загружается асинхронно):
$(function(){
as.messagesInitCallback = function(){
console.log("X111111111111111")
as.messages.makeup.getRoomToolbar = function(cont, params, data){
var res = "XXXXXXXXXXXXXX";
return res;
}
}
});
Коллбеки после загрузки списка комнат и после загрузки сообщений комнаты
as.messagescallbacks["{typeCode}_getRoom"]=function(cont, params, data){}
as.messagescallbacks["{typeCode}_getRooms"]=function(cont, params, data){}
typeCode берется из атрибута data-code от as-messages (по умолчанию userChat).
Расширение формата данных, передаваемых для чата с сервера
Вы можете использовать специальные поля json с последующей обработкой в коллбеках (через JSON.parse).
В каких местах добавляется в модель поле json:
Процедура as_msg_getRoom:
- select 1 json -модель комнаты
- select 2 json - поле для Юзера
- select 3 json - поле для Message
Процедура as_msg_getRooms
- select 1 json - общие данные по загружаемому чату.
- select 2 json - данные по элементу комнаты в списке комнат.