Приоритет уведомлений

Библиотека Noty предоставляет гибкую систему уведомлений для веб-приложений. Одним из важных аспектов является приоритет уведомлений, позволяющий управлять очередностью их отображения и предотвращать визуальный хаос при множественных событиях на странице.

В Noty уведомления по умолчанию добавляются в очередь и отображаются в порядке их создания. Управление приоритетом достигается несколькими способами: через опции конфигурации, методы enqueue/dequeue, а также кастомную обработку очереди уведомлений.


Настройка очередности уведомлений

Основной механизм приоритета в Noty основан на позиции уведомления и количестве одновременно отображаемых уведомлений.

  • maxVisible – максимальное количество уведомлений, отображаемых одновременно.
  • queue – стандартная очередь уведомлений, которая работает по принципу FIFO (First In, First Out).

Пример конфигурации:

new Noty({
    text: 'Важное уведомление',
    type: 'alert',
    layout: 'topRight',
    timeout: 5000,
    progressBar: true,
    maxVisible: 3
}).show();

В данном случае, если одновременно создаются более трёх уведомлений, они помещаются в очередь и отображаются по мере освобождения места.


Использование кастомного приоритета

Для реализации кастомного приоритета можно расширить стандартную очередь. Например, добавить уровень приоритета к каждому уведомлению и отображать уведомления с более высоким приоритетом раньше.

Пример:

const notificationsQueue = [];

function addNotification(options, priority = 1) {
    notificationsQueue.push({options, priority});
    notificationsQueue.sort((a, b) => b.priority - a.priority);
    renderNotifications();
}

function renderNotifications() {
    const visibleNotifications = notificationsQueue.splice(0, 3); // maxVisible = 3
    visibleNotifications.forEach(item => {
        new Noty(item.options).show();
    });
}

В этом примере уведомления сортируются по приоритету перед показом, что обеспечивает вывод более важных сообщений раньше менее значимых.


Приоритет через тип уведомления

Noty имеет встроенные типы уведомлений: alert, success, warning, error, info. Можно использовать их как индикатор приоритета:

  • error – высокий приоритет
  • warning – средний приоритет
  • info и success – низкий приоритет

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

function showNotification(type, message) {
    let priority = 1;
    switch(type) {
        case 'error': priority = 3; break;
        case 'warning': priority = 2; break;
        case 'info':
        case 'success': priority = 1; break;
    }
    addNotification({text: message, type, layout: 'topRight', timeout: 4000}, priority);
}

Такой подход упрощает управление очередью без необходимости вручную задавать числовой приоритет для каждого уведомления.


Управление одновременным показом

Для соблюдения приоритета важно контролировать количество одновременных уведомлений. Noty предоставляет метод maxVisible, но в сложных сценариях можно реализовать динамическое управление:

let activeNotifications = 0;
const maxVisible = 3;

function showNextNotification() {
    if(activeNotifications >= maxVisible || notificationsQueue.length === 0) return;
    const {options} = notificationsQueue.shift();
    activeNotifications++;
    const n = new Noty(options).show();
    n.on('onClose', () => {
        activeNotifications--;
        showNextNotification();
    });
}

Это позволяет гарантировать, что уведомления с более высоким приоритетом будут показаны раньше, даже если очередь насыщена большим количеством низкоприоритетных сообщений.


Интеграция с событиями приложения

Часто приоритет уведомлений зависит от событий в приложении, например:

  • ошибки системы или сервера (высокий приоритет)
  • предупреждения пользователя (средний приоритет)
  • информационные сообщения (низкий приоритет)

Использование функции addNotification с сортировкой по приоритету позволяет централизованно управлять уведомлениями и обеспечивать согласованное поведение при интенсивных событиях.


Выводы по приоритету

  • Приоритет в Noty контролируется через очередь и maxVisible
  • Тип уведомления может использоваться как индикатор приоритета
  • Кастомные уровни приоритета позволяют точно управлять последовательностью отображения
  • Динамическое управление активными уведомлениями предотвращает перегрузку интерфейса

Такая организация уведомлений обеспечивает интуитивную иерархию важности, улучшает UX и предотвращает потерю критической информации среди менее значимых сообщений.