Node-red: добавить модальный диалог в ответ API

Мне нужна помощь с редактором потока Node Red. Я изменил модальное диалоговое окно «Экспорт узлов в буфер обмена» и добавил кнопку после «Экспорт в буфер обмена». При нажатии кнопки я выполняю вызов внешнего API, который работает нормально и получает ответ от сервера. Код для вызова API записан в файле /api/editor/code.js, как показано ниже:

const { flows } = redNodes.getFlows();
axios.post(externalUrl, flows)
    .then((response) => {
        // nice little modal dialog on response
        res.status(200).send(response.data.message);
    })
    .catch((error) => {
        console.info('error', error.message);
    });

Я хочу отображать информацию, которую я получаю от вызова API, в модальном диалоговом окне внутри приложения Node Red. Как мне этого добиться?

Спасибо

Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
0
224
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У вас есть два варианта:

  1. Node-RED использует пользовательский интерфейс jQuery, поэтому вы можете создать свой собственный Диалог jQuery с любым содержимым, которое захотите. Есть много примеров использования этого API - я не буду их здесь повторять.

  2. Node-RED предоставляет API RED.notify для раскрывающихся уведомлений. Вы можете использовать это для отображения результата.

В самом простом случае вы можете вызвать:

RED.notify("This is my message");

и это сообщение будет появляться по умолчанию в течение 5 секунд.

Если вы хотите, чтобы он держался до тех пор, пока пользователь не нажмет кнопку, вы можете сделать что-то вроде:

var myNotification = RED.notify("This is the message to display",{
        modal: true,
        fixed: true,
        buttons: [
            {
                text: "cancel",
                click: function(e) {
                    myNotification.close();
                }
            },
            {
                text: "okay",
                class:"primary",
                click: function(e) {
                    myNotification.close();
                }
            }
        ]
    });

Другие вопросы по теме