Если лид не был просмотрен или открыт ни разу выделить его
Добрый день!
Необходимо выделить лиды которые не были открыты пользователем.
Есть следующий код:
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 можете передать объектом параметры, при необходимости