AXForum  
Вернуться   AXForum > Блоги > CRM, SharePoint и Черная Магия
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

Добро пожаловать в мой блог! Изначально он не задумывался как блог CRM разработчика, но жизнь сама внесла нужные коррективы. Тут я публикою все свои наблюдения относительно обозначенных в заголовке систем. Если Вы найдете в нем что-то интересное для Вас, как для заказчика, то буду рад сотрудничать с Вами! В моей компетенции 100% задач по MS CRM 3.0/4.0/2011:
  • Консалтинг
  • Проектирование
  • Разработка
  • Обучение


MVP 2010, 2011
Оценить эту запись

Уведомления в стиле CRM

Запись от Артем Enot Грунин размещена 03.11.2009 в 13:31

Бытует мнение, что при разработке пользовательского интерфейса не следует злоупотреблять модальными, диалоговыми и всплывающими и окнами. Я полностью его разделяю, так как все эти типы окошек являются непростительно навязчивыми. В качестве альтернативы можно использовать области уведомлений или подсказки ("воздушные шарики"). Даже в MS CRM некоторые типы уведомлений показываются не как "алерты", а в виде панели информации вверху формы. Недавно блог бот принес на форум статью как можно имитировать подобный функционал из JavaScript кода: Show custom notifications on Microsoft Dynamics CRM. Данный пост, как и цитированный в нем первоисточник, используют странный, на мой взгляд, подход: копирование готового кода MS вместо того, чтобы его переиспользовать! Почему бы не сэкономить строки кода? Вот мой вариант:
Код:
// Тип иконки уведомления: параметр iSeverity:
var ERROR = 1;
var WARNING = 2;
var INFORMATION = 3;

// sId - уникальное имя метки (с одним именем две метки не добавятся)
// iSeverity - ERROR, WARNING или INFORMATION
// sText - текст сообщения
function AddNotification(sId, iSeverity, sText)
{
    var oNotifications = crmForm.all.Notifications;
    oNotifications.AddNotification(sId, iSeverity, "notused", sText);
}

// sId - уникальное имя метки
// iSeverity - ERROR, WARNING или INFORMATION
// sText - текст сообщения
function EditNotification(sId, iSeverity, sText)
{
    var oNotifications = crmForm.all.Notifications;
    var oNotificationsSet = oNotifications.GetNotifications();
    var oNewSet = new Array(oNotificationsSet.length);

    for (var i = 0; i < oNotificationsSet.length; i++)
    {
        var oNotification = oNotificationsSet[i];
        if (oNotification.Id == sId)
        {
            oNotification.Text = sText;
            oNotification.Severity = iSeverity;
        }
        oNewSet[i] = oNotification;
    }
    oNotifications.SetNotifications(oNewSet, "notused");
}

// sId - уникальное имя метки
function DeleteNotification(sId)
{
    var oNotifications = crmForm.all.Notifications;
    var oNotificationsSet = oNotifications.GetNotifications();
    var oNewSet = new Array();

    for (var i = 0; i < oNotificationsSet.length; i++)
    {
        var oNotification = oNotificationsSet[i];
        if (oNotification.Id != sId)
        {
            oNewSet.push(oNotification);
        }
    }
    oNotifications.SetNotifications(oNewSet, "notused");
}


// Пример использования

// Добавляем уведомления
AddNotification("err", ERROR, "just added");
AddNotification("war", WARNING, "to be changed");
AddNotification("info", INFORMATION, "to be deleted");

// Среднее уведомление будет переименовано через 3 секунды
// Нижнее уведомление будет удалено через 6 секунд
window.setTimeout("do_ren()", 3000);
window.setTimeout("do_del()", 6000);

do_ren = function()
{
    EditNotification("war", INFORMATION, 'was changed');    
}

do_del = function()
{
    DeleteNotification("info");    
}
Данный код можно поместить на OnLoad формы или любой другой обработчик. В нем напрямую используются функции описанные в CRMWeb\_static\_controls\notifications\NotificationList.htc, так что решение, разумеется, не поддерживаемое. Плюс данного подхода: меньше кода и больше функций - код MS проводит проверку на уникальность уведомлений, а так же сортирует их по типу при добавлении.



p.s. Уведомления работают на пользовательских объектах.
p.p.s. Уведомлениями тоже не стоит злоупотреблять, так как они меняют размер формы.
Миниатюры
Нажмите на изображение для увеличения
Название: Notifications.JPG
Просмотров: 556
Размер:	25.2 Кб
ID:	22  
Размещено в CRM
Просмотров 18182 Комментарии 0
Всего комментариев 0

Комментарии

 


Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:44.