<< Click to Display Table of Contents >> Объектная модель > Основные механизмы UserDigest – подсказка с информацией о пользователе |
В веб-клиенте при наведении курсора на имя сотрудника отображаются всплывающие подсказки. Они предназначены для быстрого просмотра информации о сотруднике.
Подсказки отображаются только для типа сущности Sungero.CoreEntities.User и его наследников, например, Sungero.Company.Employee. Чтобы подсказки отображались, необходимо в редакторе типа сущности добавить обработчик события Показ подсказки (GetDigest) и задать в нем код.
Для создания подсказки используется класс Sungero.Core.UserDigest:
public override IDigestModel GetDigest(Sungero.Domain.GetDigestEventArgs e)
{
var digest = UserDigest.Create(_obj);
return digest;
}
Экземпляр класса, полученный с помощью метода Create(), предоставляет методы и свойства:
Методы
Имя |
Описание |
---|---|
AddEntity() |
Добавить ссылку на сущность |
AddHyperlink() |
Добавить ссылку |
Добавить текстовую метку |
Свойства
Имя |
Тип |
Описание |
---|---|---|
Header |
string |
Заголовок подсказки, по умолчанию ФИО сотрудника |
В базовом решении Directum RX уже реализованы стандартные подсказки о пользователях. Для этого в типе справочника Сотрудники (Employee) задан код обработчика события Показ подсказки. В коде вызывается функция GetEmployeePopup(), которая получает подсказку:
public override IDigestModel GetDigest(Sungero.Domain.GetDigestEventArgs e)
{
return Sungero.Company.Functions.Module.GetEmployeePopup(_obj);
}
В свою очередь эта функция вызывает еще одну одноименную функцию GetEmployeePopup(), которая формирует содержимое подсказки:
public virtual Sungero.Core.IDigestModel GetEmployeePopup(IEmployee employee)
{
return Functions.Employee.GetEmployeePopup(employee);
}
Содержимое подсказки заполняется следующим образом:
/// <summary>
/// Сформировать модель подсказки с информацией о сотруднике.
/// </summary>
/// <returns>Всплывающая подсказка.</returns>
public virtual Sungero.Core.IDigestModel GetEmployeePopup()
{
if (_obj.IsSystem == true)
return null;
// Создать экземпляр подсказки.
var digest = Sungero.Core.UserDigest.Create(_obj);
// Добавить ссылку на подразделение, в которое входит сотрудник.
if (_obj.Department != null)
digest.AddEntity(_obj.Department);
// Добавить название должности сотрудника.
if (_obj.JobTitle != null)
digest.AddLabel(_obj.JobTitle.Name);
// Добавить номер телефона сотрудника.
if (!string.IsNullOrWhiteSpace(_obj.Phone))
digest.AddLabel(string.Format("{0} {1}", Company.Employees.Resources.PopupPhoneDescription, _obj.Phone));
if (_obj.Department != null)
{
var manager = _obj.Department.Manager;
if (manager == null && _obj.Department.HeadOffice != null)
manager = _obj.Department.HeadOffice.Manager;
// Добавить ссылку на карточку руководителя.
if (manager != null && !Equals(manager, _obj))
digest.AddEntity(manager, Company.Employees.Resources.PopupManagerDescription);
}
return digest;
}
© Компания Directum, 2024 |