Добрый день.
Как мне из схемы конфигурации ActivityMiniPage получить данные привязанного лида ?
При наведении на активность в боковой панели вызываю функцию getEmail. В ней пытаюсь получить сначала id лида, потом по этому id получить объект из БД. Как это правильно сделать?
getEmail: function() { var id = ??; var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "Lead" }); esq.addColumn("Id"); esq.addColumn("Email"); esq.getEntity(id, function(result) { this.console.log(result.entity.get("Email")); }, this);
Нравится
" При наведении на активность в боковой панели вызываю функцию "
Так. стоп. Т.е вы наводите на активность, появляется миникаточка, и тут где-то в недрах комм. панели происходит вызов функции? Просто я немного не понимаю скоуп вызова метода.
Если он всё-таки вызывается в миникарточке, то
var id = this.get("Lead") ? this.get("Lead").value : null;
Если в другой схеме, то тут надо реализовывать логику через сообщения
я пробовала уже так. постоянно null, даже когда лид привязан. функцию вызываю тут:
{ "operation": "insert", "name": "ContactEmailButton", "parentName": "ActivityGeneralInfoContainer", "propertyName": "items", "values": { "itemType": Terrasoft.ViewItemType.LABEL, "caption": {"bindTo": "getEmail"}, }, "visible": { "bindTo": "isIconVisible" } }
>Т.е вы наводите на активность, появляется миникаточка, и тут где-то в недрах комм. панели происходит вызов функции
да
Ужас какой
1) ActivityGeneralInfoContainer, есть в ActivityMiniPage. Всё-таки туда вы добали esq, а не в комм.панель.
2) "caption": {"bindTo": "getEmail"}. Не сработает. Кепшн биндится на статичную переменную, а не асинхронную функцию.
Попробуйте добавить аттрибут, тип текст. В diff кепшн биндите на этот аттрибут, а на onEntityInitialized запускайте свою функцию (там лид скорее всего будет известен) и после того как вытащите из лида email перенесите его в аттрибут
или ещё легче.
это в аттрибуты
"Lead": { "lookupListConfig": { "columns": ["Email"] } }, "MyLabelCaption": { dataValueType: 1, value: "" }
это в методы
onEntityInitialized: function(){ this.callParent(arguments); this.set("MyLabelCaption", this.get("Lead") ? this.get("Lead").Email : "лид не найден"); }
это в дифф
{ "operation": "insert", "name": "ContactEmailButton", "parentName": "ActivityGeneralInfoContainer", "propertyName": "items", "values": { "itemType": Terrasoft.ViewItemType.LABEL, "caption": {"bindTo": "MyLabelCaption"}, "visible": {"bindTo": "isIconVisible"} } }
а не подскажите еще, пожалуйста, как мне этот имейл сделать в таком вот виде http://prntscr.com/gwf5yb ? или хотя бы как обработать клик по элементу ?
это кнопка, с пустым кэпшеном, стиль - "transparent", наложена иконка с изображением, ну и с каким-то обработчиком.
при нажатии на имейл надо чтобы открывало окно с отправкой имейла. делаю вот так :
onTypeIconButtonClick: function() { var value = this.get("Lead").Email; if (value) { var path = this.getLinkUrl(value); this.console.log(path); if (path) { this.onLinkClick(path.url) } } }, getLinkUrl: function(value) { if (!value || Ext.isEmpty(value)) { return {}; } var emailUrl = EmailHelper.getEmailUrl(value); if (Ext.isEmpty(emailUrl)) { return {}; } return { url: emailUrl, caption: value }; return {}; }, onLinkClick: function(path) { window.location.href = path; },
в консоле: http://prntscr.com/gwhngk
и на страницу с отправкой имейла не переходит
попробуйте
onTypeIconButtonClick: function() { var value = this.get("Lead").Email; if (value) { this.openCard("EmailPageV2", "add", Terrasoft.generateGUID()); } }