Динамическая высота встроенной панели мониторинга в GoodData

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

Есть ли способ, как это сделать? Распространяет ли GoodData пространство, необходимое для отображения панели мониторинга?

Спасибо.

1 ответ

Решение

На самом деле существует отправленное postMessage() событие с именем ui.frameinfo, которое вы можете использовать для определения высоты вкладки панели мониторинга (при использовании dashboard.html). Он отправляется каждый раз, когда вкладка меняет свою высоту.

Следующий слушатель должен распечатать внутреннюю высоту iframe:

window.addEventListener('message', function(e) {
    var message;
    try {
        message = JSON.parse(e.data);
    } catch (e) {
        // valid messages are JSON
        message = {};
    }
    // drop other than GoodData events
    if (!message.gdc) return;

    if (message.gdc.name === 'ui.frameinfo') {
        console.log('frame height:', message.gdc.data.height);
    }
}

Обратите внимание, что это не является официальной функцией (пока) и потенциально может быть изменено.

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