Иногда превью дашборда не отображается в меню выбора дашборда. Это связано с тем, что виджет не успевает прорисоваться, перед тем как сохраняется preview.
Все операции производим в коде виджета.
Создаём переменную и promise (в начале кода виджета).
var loadHandler = null; var loadedPromise = new Promise((resolve,reject)=>{ // resolve();//вызвать когда виджет отрисовался loadHandler = resolve; });
Добавить в объект виджета highcharts строку(подробно: https://api.highcharts.com/highcharts/chart.events.load ):
chart: { events: { load: loadHandler } }
Метод “load” отслеживает загрузку виджета, после загрузки виджета передаёт значение в переменную, которую мы ждём в promise.
Вставляем строку кода (в конец кода виджета):
({ isLoaded: function(){ return loadedPromise } })
promise отрабатывает и мы передаём его успешное выполнение во внутреннюю функцию, которую вызываем в отдельном блоке.
При использовании другой библиотеки, отличной от highcharts, можно использовать timeout вместо метода “load”