Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.
Информация

Иногда превью дашборда не отображается в меню выбора дашборда. Это связано с тем, что картинка дашборда виджет не успевает загрузитьсяпрорисоваться, перед тем как вызывается функция прорисовкисохраняется preview.

Все операции производим в коде виджета.

  1. Создаём переменную и promise (в начале кода виджета).

    Блок кода
    var loadHandler = null;
    var loadedPromise = new Promise((resolve,reject)=>{
                // resolve();//вызвать когда виджет отрисовался
                loadHandler = resolve;
            });
  2. Добавить в объект виджета highcharts строку(подробно: https://api.highcharts.com/highcharts/chart.events.load ):

    Блок кода
    chart: {
            events: {
                load: loadHandler
            }
        }

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

  3. Вставляем строку кода (в конец кода виджета):

    Блок кода
    ({
        isLoaded: function(){
            return loadedPromise
        }
    })

Метод isLoaded возвращает promise во внешнюю функцию, которая отслеживает загрузку виджета. И когда promise будет resolve, внешняя функция поймёт что виджет загрузился и можно делать скриншот.

Информация

При использовании другой библиотеки, отличной от highcharts, можно использовать timeout вместо метода “load”