Добавление целевой страницы в визуальный элемент Power BI

Целевая страница визуального элемента Power BI может отображать сведения в визуальном карта Power BI перед получением данных карта. Целевая страница визуального элемента может отображать:

  • Текст, который объясняет, как использовать визуальный элемент.
  • Ссылка на веб-сайт.
  • Ссылка на видео.

Screenshot of a Power BI visual's example landing page.

В этой статье объясняется, как разработать целевую страницу для визуального элемента. Целевая страница отображается всякий раз, когда визуальный элемент не имеет данных в нем.

Примечание.

Проектирование целевой страницы визуального элемента Power BI поддерживается в API версии 2.3.0 и выше. Чтобы узнать, какая версия используется, проверка apiVersion в файле pbiviz.json.

Создание целевой страницы

Чтобы создать целевую страницу, в файле необходимо задать capabilities.json две возможности.

  • Включите целевую страницу supportsLandingPage.
  • Для отображения целевой страницы в режиме просмотра или для интерактивного визуального элемента даже в режиме без ролей данных включите supportsEmptyDataView.
    {
        "supportsLandingPage": true,
        "supportsEmptyDataView": true,
    }

Пример визуального элемента с целевой страницей

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

export class BarChart implements IVisual {
    //...
    private element: HTMLElement;
    private isLandingPageOn: boolean;
    private LandingPageRemoved: boolean;
    private LandingPage: d3.Selection<any>;

    constructor(options: VisualConstructorOptions) {
            //...
            this.element = options.element;
            //...
    }

    public update(options: VisualUpdateOptions) {
    //...
        this.HandleLandingPage(options);
    }

    private HandleLandingPage(options: VisualUpdateOptions) {
        if(!options.dataViews || !options.dataViews[0]?.metadata?.columns?.length){
            if(!this.isLandingPageOn) {
                this.isLandingPageOn = true;
                const SampleLandingPage: Element = this.createSampleLandingPage(); //create a landing page
                this.element.appendChild(SampleLandingPage);
                this.LandingPage = d3.select(SampleLandingPage);
            }

        } else {
                if(this.isLandingPageOn && !this.LandingPageRemoved){
                    this.LandingPageRemoved = true;
                    this.LandingPage.remove();
                }
        }
    }