Jaa


Valintaikkunan luominen Power BI -visualisoinnille

Joskus visualisointia luodessasi on hyödyllistä näyttää asiakkaalle lisätietoja erillisessä ikkunassa. Saatat esimerkiksi haluta:

  • Näytä lisätietoja , kuten tekstihuomautus tai video
  • Näytä syötetietojen valintaikkuna – esimerkiksi päivämäärä -valintaikkuna

Näitä tarkoituksia varten voit luoda valintaikkunan ponnahdusikkunan, jota kutsutaan valintaikkunaksi tässä artikkelissa.

Valintaikkunan huomioitavat seikat

Kun luot valintaikkunan visualisoinnille, muista, että:

  • Voit kehityksen aikana määrittää valintaikkunan koon ja sijainnin.
  • Kun valintaikkuna käynnistyy, raportin tausta näkyy harmaana.
  • Valintaikkunan otsikko sisältää visualisoinnin kuvakkeen ja sen näyttönimen otsikkona.
  • Valintaikkunassa voi olla enintään kolme toimintopainiketta. Voit valita, mitkä painikkeet näytetään tietystä valinnasta.
  • Valintaikkunassa on käytössä monipuolinen HTML iframe.
  • Kun valintaikkuna on näkyvissä, raportissa ei voi suorittaa mitään toimia, ennen kuin se hylätään.
  • Valintaikkunakoodi voi käyttää ulkoisia npm-kirjastoja samalla tavalla kuin visualisointia.

Tärkeä

Valintaikkunaa ei pidä käynnistää spontaanisti. Sen pitäisi olla käyttäjän toiminnon välitön tulos.

Valintaikkunan suunnitteleminen visualisoinnille

Jos haluat määrittää valintaikkunan, sinun on lisättävä koodiin kaksi osaa:

  • Toteutustiedosto – Paras käytäntö on luoda toteutustiedosto kullekin valintaikkunalle.
  • Valintaikkunan käynnistävä koodi: jos haluat käynnistää valintaikkunan, lisää koodi tiedostoon visual.ts .

Valintaikkunan toteutustiedoston luominen

Suosittelemme luomaan toteutustiedoston jokaiselle luomalle valintaikkunalle. Sijoita valintaikkunatiedostot kansioon src :

Näyttökuva, jossa näkyy DatePickerDialog.ts -valintaikkunan toteutustiedoston sijainti Power BI -visualisointiprojektissa.

Kunkin valintaikkunan toteutustiedoston tulee sisältää seuraavat osat:

Valintaikkunaluokan luominen

Luo valintaikkunan valintaikkunan luokka. initialState Parametri openModalDialog välitetään dialogin alihankkijalle sen luomisen yhteydessä. -objektin initialState avulla voit välittää parametreja valintaikkunaan, jotta voit vaikuttaa sen toimintaan tai ulkoasuun.

Valintaikkunakoodi voi käyttää seuraavia IDialogHost menetelmiä:

  • IDialogHost.setResult(result:object) – Valintaikkunakoodi palauttaa tulosobjektin, joka on siirretty takaisin sen kutsuvan visualisoinnin.
  • IDialogHost.close(actionId: DialogAction, result?:object) - Valintaikkunakoodi voi ohjelmallisesti sulkea valintaikkunan ja antaa tulosobjektin takaisin kutsuvan visualisoinnin pariin.

Tuonti tiedoston päälle:

import powerbi from "powerbi-visuals-api";
import DialogConstructorOptions = powerbi.extensibility.visual.DialogConstructorOptions;
import DialogAction = powerbi.DialogAction;
// React imports as an example
import * as ReactDOM from 'react-dom';
import * as React from 'react';
import reactDatepicker from 'react-datepicker';
import 'react-datepicker/dist/react-datepicker.css';

Tämä esimerkki edellyttää näiden pakettien asentamista:

    npm i react-dom react react-datepicker

Luokan realisointi:

export class DatePickerDialog {
    static id = "DatePickerDialog";

    constructor(options: DialogConstructorOptions, initialState: object) {
        const host = options.host;
        let pickedDate: Date;
        const startDate = new Date(initialState['startDate']);
        
        // Dialog rendering implementation
        ReactDOM.render(
            React.createElement(
                reactDatepicker,
                {
                    inline: true,
                    openToDate: startDate,
                    onChange: (date: Date) => {
                        pickedDate = date
                        host.setResult({ date: pickedDate })
                    }
                },
                null),
            options.element
        );

        document.addEventListener('keydown', e => {
            if (e.code == 'Enter' && pickedDate) {
                host.close(DialogAction.Close, {date: pickedDate});
            }
        });
    }
}

Luo tulosluokka

Luo luokka, joka palauttaa valintaikkunan tuloksen, ja lisää se sitten valintaikkunan toteutustiedostoon.

Alla olevassa esimerkissä DatePickerDialogResult luokka palauttaa päivämäärämerkkijonon.

export class DatePickerDialogResult {
    date: string;
}

Valintaikkunan lisääminen rekisteriluetteloon

Jokaisen valintaikkunan toteutustiedoston täytyy sisältää rekisteriviittaus. Lisää alla olevan esimerkin kaksi riviä valintaikkunan toteutustiedoston loppuun. Ensimmäisen rivin on oltava samanlainen jokaisessa valintaikkunan toteutustiedostossa. Valintaikkuna näkyy toisella rivillä. muokata sitä valintaikkunaluokan nimen mukaan.

globalThis.dialogRegistry = globalThis.dialogRegistry || {};
globalThis.dialogRegistry[DatePickerDialog.id] = DatePickerDialog;

Valintaikkunan käynnistäminen

Ennen kuin luot valintaikkunan, sinun on päätettävä, mitkä painikkeet se sisältää. Power BI -visualisoinnit tukevat seuraavia kuutta valintaikkunapainiketta:

export enum DialogAction {
        Close = 0,
        OK = 1,
        Cancel = 2,
        Continue = 3,
        No = 4,
        Yes = 5
    }

Jokainen luomasi valintaikkuna on tavattava -tiedostossa visual.ts . Tässä esimerkissä valintaikkuna on määritetty kahdella toimintopainikkeella.

import powerbi from "powerbi-visuals-api";
import DialogAction = powerbi.DialogAction;
const dialogActionsButtons = [DialogAction.OK, DialogAction.Cancel];

Tässä esimerkissä valintaikkuna käynnistetään napsauttamalla visualisointipainiketta. Visualisointipainike on määritetty osana tiedoston visuaalista konstruktoria visual.ts .

Valintaikkunan koon ja sijainnin määrittäminen

Ohjelmointirajapinnan versiosta 4.0 tai uudemmasta versiosta voit määrittää valintaikkunan koon ja sijainnin käyttämällä - DialogOpenOptions parametria openModalDialog. Jos haluat tietää, mitä versiota käytät, tarkista apiVersion pbiviz.json .

    export interface RectSize {
        width: number;
        height: number;
    }

    export interface DialogOpenOptions {
        title: string;
        size?: RectSize;
        position?: VisualDialogPosition;
        actionButtons: DialogAction[];
    }

Sijainti-parametrin avulla voit päättää, missä valintaikkunan pitäisi avautua näytössä. Voit halutessasi avata valintaikkunan näytön keskellä tai voit määrittää eri sijainnin suhteessa visualisointiin.

    const enum VisualDialogPositionType {
        Center = 0,
        RelativeToVisual = 1
    }

    export interface VisualDialogPosition {
        type: VisualDialogPositionType;
        left?: number;
        top?: number;
    }
  • Jos tyyppiä ei ole määritetty, oletustoiminta on avata valintaikkuna keskellä.
  • Sijainti annetaan kuvapisteinä suhteessa visualisoinnin vasempaan yläkulmaan.

Tässä esimerkissä näytetään 250 x 300 kuvapisteen päivämäärän valintavalintaikkuna, jossa on 100 kuvapistettä vasemmalla ja 30 kuvapistettä visualisoinnin yläreunan alapuolella:

export class Visual implements IVisual {
    private target: HTMLElement;
    private host: IVisualHost;
 
    constructor(options: VisualConstructorOptions) {
        this.host = options.host;
        this.target = options.element;
        const dialogActionsButtons = [DialogAction.OK, DialogAction.Cancel];

        const sectionDiv = document.createElement("div");

        const span = document.createElement("span");
        span.id = "datePicker";

        let button = document.createElement("button");
        button.id = "DateButton";
        button.innerText = "Date";

        button.onclick = (event) => {
            const initialDialogState = { startDate: new Date() };
            const position = {
                    type: VisualDialogPositionType.RelativeToVisual,
                    left: 100,
                    top: 30
            };

            const size = {width: 250, height: 300};
            const dialogOptions = {
                actionButtons: dialogActionsButtons,
                size: size,
                position: position,
                title: "Select a date"
            };
            this.host.openModalDialog(DatePickerDialog.id, dialogOptions, initialDialogState).
                then(ret => this.handleDialogResult(ret, span)).
                catch(error => this.handleDialogError(error, span));
        }
        sectionDiv.appendChild(button);
        sectionDiv.appendChild(span);
        this.target.appendChild(sectionDiv)
    }

    // Custom logic to handle dialog results
    private handleDialogResult( result: ModalDialogResult, targetElement: HTMLElement){
        if ( result.actionId === DialogAction.OK || result.actionId === DialogAction.Close) {
            const resultState = <DatePickerDialogResult> result.resultState;
            const selectedDate = new Date(resultState.date);
            targetElement.textContent = selectedDate.toDateString();
        }
    }

    // Custom logic to handle errors in dialog
    private handleDialogError( error: any, targetElement: HTMLElement ) {
        targetElement.textContent = "Error: " + JSON.stringify(error);
    }
}

Valintaikkunan sulkemisen määrittäminen

Ensisijainen menetelmä valintaikkunan sulkemiseen on se, että käyttäjä napsauttaa [x]-painiketta, jotakin toimintopainiketta tai raportin taustaa.

Voit myös ohjelmoida valintaikkunan sulkeutumaan automaattisesti kutsumalla IDialogHost sulkemismenetelmää. Tämä menetelmä on estetty viiden sekunnin ajan valintaikkunan avaamisen jälkeen, joten aikaisin kun voit sulkea valintaikkunan automaattisesti, on viisi sekuntia sen aloittamisesta.

Älä näytä valintaikkunaa

Näyttöön tulee valintaikkuna, jossa on valintaruutu, jonka avulla käyttäjä voi estää valintaikkunoita.

Näyttökuva, jossa näkyy valintaruutu, joka antaa valintaikkunoiden estotoiminnon.

Tämä valintaruutu on tietoturvaominaisuus, joka estää visualisointia luomasta modaalisia valintaikkunoita (joko tarkoituksella tai ilman käyttäjän suostumusta).

Tämä esto on käytössä vain nykyisessä istunnossa. Jos siis käyttäjä estää CV-modaaliset valintaikkunat, mutta muuttaa myöhemmin mieltään, hän voi ottaa valintaikkunat uudelleen käyttöön. Tämän tekemiseksi heidän on aloitettava uusi istunto (päivitettävä Power BI -palvelun raporttisivu tai käynnistettävä Power BI Desktop uudelleen).

Huomioitavat asiat ja rajoitukset

  • Alkaen powerbi-visuals-API 3.8:sta valintaikkunakuvake ja otsikko määritetään visualisoinnin kuvakkeella ja näyttönimellä, eikä niitä voi muuttaa.

  • Valintaikkunan kokorajoitukset on kuvattu alla olevassa taulukossa.

    Suurin/pienin Leveys Korkeus
    Enintään 90 % selaimen leveydestä 90 % selaimen korkeudesta
    Vähintään 240 kuvapistettä 210 kuvapistettä
  • Kun määrität valintaikkunan sijainnin, vaakasuuntainen sijainti voi olla positiivinen tai negatiivinen kokonaisluku sen mukaan, kummalla visualisoinnin puolella haluat ruudun olevan. Pystysijainti ei voi olla negatiivinen, koska se asettaa sen visualisoinnin yläpuolelle.

  • Seuraavat ominaisuudet eivät tue Power BI -visualisoinnit -valintaikkunaa:

    • Upotettu analytiikka
    • Julkaise verkossa
    • Raporttinäkymät

Voit ohjelmoida visualisoinnin tunnistamaan, salliiko nykyinen ympäristö valintaikkunan avaamisen, valitsemalla totuusarvon this.host.hostCapabilities.allowModalDialog.