Добрый день!
Необходимо выделить лиды которые не были открыты пользователем.
Есть следующий код:
define("LeadSectionV2", [], function() {
return {
entitySchemaName: "Lead",
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
methods: {
prepareResponseCollectionItem: function(item) {
this.callParent(arguments);
var scope = this;
var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
rootSchemaName: "UsrLeadStatusByUser"
});
esq.addColumn("Id");
var esqFirstFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "UsrLead", item.get("Id"));
var esqSecondFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "UsrContact", Terrasoft.SysValue.CURRENT_USER_CONTACT.value);
esq.filters.logicalOperation = Terrasoft.LogicalOperatorType.AND;
esq.filters.add("esqFirstFilter", esqFirstFilter);
esq.filters.add("esqSecondFilter", esqSecondFilter);
esq.getEntityCollection(function (result) {
if (result.success && result.collection.collection.items.length > 0) {
//Лид уже был просмотрен
item.customStyle = null;
}else{
//Лид еще ни разу не открывали
item.customStyle = {
"color": "white",
"background": "#8ecb60",
"font-weight": "bold"
};
}
}, scope);
}
}
};
});Он работает не совсем как ожидалось. Выделение цветом происходит после того как зайдешь в лид и выйдешь из него, к тому же выделяются только те записи, которые были подгружены первично. Если же пролистать ниже, то подгруженные позже записи не выделяются цветом.
Подскажите, пожалуйста, красивое решение вопроса.
Нравится
В объектной модели Лида, добавьте например булево значения IsViewed, в момент открытия карточки, обновляйте это значение.
А подкрашивание грида, делайте уже от этого параметра IsVewed (true/false).
В объектной модели Лида, добавьте например булево значения IsViewed, в момент открытия карточки, обновляйте это значение.
А подкрашивание грида, делайте уже от этого параметра IsVewed (true/false).
Спасибо, Павел! Скорее всего так и поступлю. Хотел сделать по пользователям, но откажусь от этой затеи.
Теперь возникла другая проблема, после закрытия лида в реестре раздела у просмотренного лида не обновляется стиль. После перезагрузки страницы страницы - все в порядке. Как сделать чтобы это происходило автоматически?
Руслан Хасанов пишет:
Теперь возникла другая проблема, после закрытия лида в реестре раздела у просмотренного лида не обновляется стиль. После перезагрузки страницы страницы - все в порядке. Как сделать чтобы это происходило автоматически?
Путем использования сообщений, вызовите в разделе метод this.refreshGridData();
Примерно так:
init: function() {
this.callParent(arguments);
this.sandbox.subscribe("NeedReloadLeadGrid", this.customMethod, this);
},
customMethod: function() {
//если нужно что-то еще сделать, то делаете, а потом:
this.refreshGridData();
}
messages: {
"NeedReloadLeadGrid": {
"mode": Terrasoft.MessageMode.PTP,
"direction": Terrasoft.MessageDirectionType.SUBSCRIBE
}
}
На карточке лида, по сохранению/закрытии/изменении параметра, в общем там, где вам нужно, вызываете публикацию данного сообщения.
messages: {
"NeedReloadLeadGrid": {
"mode": Terrasoft.MessageMode.PTP,
"direction": Terrasoft.MessageDirectionType.PUBLISH
}
}
callPublish_YourCustomMethod: function() {
this.sandbox.publish("NeedReloadLeadGrid", null, ["_NeedReloadLeadGrid"]);
}
//вместо null можете передать объектом параметры, при необходимости