Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Gli sviluppatori possono creare oggetti visivi di Power BI personalizzati. Questi oggetti visivi possono essere usati dall'utente, dall'organizzazione o da terze parti.
In questa esercitazione si sviluppa un oggetto visivo di Power BI usando React. L'oggetto visivo visualizza un valore di misura formattato all'interno di un cerchio. L'oggetto visivo ha dimensioni adattive e consente di personalizzarne le impostazioni.
In questa esercitazione apprenderai a:
- Creare un progetto di sviluppo per l'oggetto visivo.
- Sviluppare l'oggetto visivo usando React.
- Configurare l'oggetto visivo per elaborare i dati.
- Configurare l'oggetto visivo per adattarsi alle modifiche alle dimensioni.
- Configurare le impostazioni del colore adattivo e del bordo per l'oggetto visivo.
Nota
Per il codice sorgente completo di questo oggetto visivo, vedere Oggetto visivo Power BI a forma di circle card React.
Prerequisiti
Prima di iniziare a sviluppare l'oggetto visivo di Power BI, verificare di avere tutti gli elementi elencati in questa sezione.
Un account Power BI Pro o Power BI Premium per utente. Se non si ha una sottoscrizione, iscriversi per ottenere una versione di valutazione gratuita.
Visual Studio Code (VS Code). VS Code è un ambiente di sviluppo integrato (IDE) ottimale per lo sviluppo di applicazioni JavaScript e TypeScript.
Windows PowerShell versione 4 o versione successiva (per Windows). Oppure Terminale (per Mac).
Un ambiente per lo sviluppo di un oggetto visivo di Power BI. Configurare l'ambiente per lo sviluppo di un oggetto visivo di Power BI.
Questa esercitazione usa il report US Sales Analysis. È possibile scaricare il report e caricarlo nel servizio Power BI oppure usare un report personalizzato. Per altre informazioni sul servizio Power BI e sul caricamento di file, vedere l'esercitazione Introduzione alle funzionalità di creazione nel servizio Power BI.
Creare un progetto di sviluppo
In questa sezione viene creato un progetto per l'oggetto visivo circle card React.
Aprire PowerShell e passare alla cartella in cui si vuole creare il progetto.
Immettere il comando seguente:
pbiviz new ReactCircleCardPassare alla cartella del progetto.
cd ReactCircleCardAvviare l'oggetto visivo circle card React. L'oggetto visivo è ora in esecuzione mentre è ospitato nel computer in uso.
pbiviz startImportante
Per interrompere l'esecuzione dell'oggetto visivo, in PowerShell immettere CTRL+C e, se viene richiesto di terminare il processo batch, immettere Y e premere INVIO.
Visualizzare la circle card React nella servizio Power BI
Per testare l'oggetto visivo in servizio Power BI, si userà il report Us Sales Analysis. È possibile scaricare questo report e caricarlo in servizio Power BI.
È anche possibile usare il proprio report per testare l'oggetto visivo.
Nota
Prima di continuare, verificare di aver abilitato la modalità sviluppatore degli oggetti visivi.
Accedere a PowerBI.com e aprire il report Us Sales Analysis .
Seleziona Modifica
Creare una nuova pagina per il test facendo clic sul pulsante Nuova pagina nella parte inferiore dell'interfaccia servizio Power BI.
Nel riquadro Visualizzazioni selezionare l'oggetto visivo per sviluppatori.
Questo oggetto visivo rappresenta l'oggetto visivo personalizzato in esecuzione nel computer. È disponibile solo quando l'impostazione di debug dell'oggetto visivo personalizzato è abilitata.
Verificare che un oggetto visivo sia stato aggiunto all'area di disegno del report.
Si tratta di un oggetto visivo semplice che visualizza il numero di chiamate al metodo di aggiornamento. In questa fase, l'oggetto visivo non recupera dati.
Nota
Se l'oggetto visivo visualizza un messaggio di errore di connessione, aprire una nuova scheda nel browser, passare a
https://localhost:8080/assetse autorizzare il browser a usare questo indirizzo.
Mentre il nuovo oggetto visivo è selezionato, passare al riquadro Dati, espandere Vendite e selezionare Quantità.
Per testare la risposta dell'oggetto visivo, ridimensionarlo e notare che il valore conteggio aggiornamenti viene incrementato ogni volta che si ridimensiona l'oggetto visivo.
Configurare React nel progetto
In questa sezione viene illustrato come configurare React per il progetto visivo di Power BI.
Aprire PowerShell e arrestare l'esecuzione dell'oggetto visivo immettendo CTRL+C. Se viene richiesto di terminare il processo batch, immettere Y e premere INVIO.
Installare React
Per installare le dipendenze React necessarie, aprire PowerShell nella cartella ReactCircleCard ed eseguire il comando seguente:
npm i react react-dom
Installare le definizioni dei tipi React
Per installare le definizioni dei tipi per React, aprire PowerShell nella cartella reactCircleCard ed eseguire il comando seguente:
npm i @types/react @types/react-dom
Creare una classe componente React
Seguire questa procedura per creare una classe componente React.
Aprire VS Code e passare alla cartella reactCircleCard .
Creare un nuovo file selezionando File>nuovo file.
Copiare il codice seguente nel nuovo file.
import * as React from "react"; export class ReactCircleCard extends React.Component<{}>{ render(){ return ( <div className="circleCard"> Hello, React! </div> ) } } export default ReactCircleCard;Selezionare Salva con nome e passare alla cartella src .
Salvare il file come segue:
- Nel campo Nome file immettere componente.
- Dal menu a discesa Salva come tipo selezionare TypeScript React.
Aggiungere React al file visivo
Sostituire il codice nel file visual.ts con il codice che abilita l'uso di React.
Nella cartella src aprire visual.ts e sostituire il codice nel file con il codice seguente:
"use strict"; import powerbi from "powerbi-visuals-api"; import DataView = powerbi.DataView; import VisualConstructorOptions = powerbi.extensibility.visual.VisualConstructorOptions; import VisualUpdateOptions = powerbi.extensibility.visual.VisualUpdateOptions; import IVisual = powerbi.extensibility.visual.IVisual; // Import React dependencies and the added component import * as React from "react"; import * as ReactDOM from "react-dom"; import ReactCircleCard from "./component"; import "./../style/visual.less"; export class Visual implements IVisual { constructor(options: VisualConstructorOptions) { } public update(options: VisualUpdateOptions) { } }Nota
Poiché le impostazioni predefinite di TypeScript di Power BI non riconoscono i file React tsx , VS Code evidenzia
componentcome errore.Per eseguire il rendering del componente, aggiungere l'elemento HTML di destinazione a visual.ts. Questo elemento è
HTMLElementinVisualConstructorOptions, che viene passato al costruttore.Nella cartella src aprire visual.ts.
Aggiungere il codice seguente alla classe
Visual:
private target: HTMLElement; private reactRoot: React.ComponentElement<any, any>;- Aggiungere le righe seguenti al
VisualConstructorOptionscostruttore:
this.reactRoot = React.createElement(ReactCircleCard, {}); this.target = options.element; ReactDOM.render(this.reactRoot, this.target);Il file visual.ts dovrebbe essere simile al seguente:
"use strict"; import powerbi from "powerbi-visuals-api"; import DataView = powerbi.DataView; import VisualConstructorOptions = powerbi.extensibility.visual.VisualConstructorOptions; import VisualUpdateOptions = powerbi.extensibility.visual.VisualUpdateOptions; import IVisual = powerbi.extensibility.visual.IVisual; import * as React from "react"; import * as ReactDOM from "react-dom"; import ReactCircleCard from "./component"; import "./../style/visual.less"; export class Visual implements IVisual { private target: HTMLElement; private reactRoot: React.ComponentElement<any, any>; constructor(options: VisualConstructorOptions) { this.reactRoot = React.createElement(ReactCircleCard, {}); this.target = options.element; ReactDOM.render(this.reactRoot, this.target); } public update(options: VisualUpdateOptions) { } }Salvare visual.ts.
Modificare il file tsconfig
Modificare il tsconfig.json per lavorare con React.
Nella cartella reactCircleCard aprire tsconfig.json e aggiungere due righe all'inizio dell'elemento
compilerOptions."jsx": "react", "types": ["react", "react-dom"],Il file tsconfig.json dovrebbe essere simile al seguente e l'errore
componentin visual.ts dovrebbe essere scomparso.{ "compilerOptions": { "jsx": "react", "types": ["react", "react-dom"], "allowJs": false, "emitDecoratorMetadata": true, "experimentalDecorators": true, "target": "es6", "sourceMap": true, "outDir": "./.tmp/build/", "moduleResolution": "node", "declaration": true, "lib": [ "es2015", "dom" ] }, "files": [ "./src/visual.ts" ] }Salvare tsconfig.json.
Testare l'oggetto visivo
Aprire PowerShell nella cartella CircleCardVisual ed eseguire il progetto:
pbiviz start
Quando si aggiunge un nuovo oggetto visivo sviluppatore al report nel servizio Power BI, l'aspetto è simile al seguente:
Configurare il campo dati dell'oggetto visivo
Configurare il file delle funzionalità dell'oggetto visivo in modo che sia possibile inviare un solo campo dati al campo dati Measure dell'oggetto visivo.
In VS Code, dalla cartella reactCircleCard , aprire capabilities.json.
ReactCircleCardVisualizza un singolo valore,Measure Data. Rimuovere l'oggettoCategory DatadadataRoles.Dopo aver rimosso l'oggetto
Category Data, ladataRoleschiave sarà simile alla seguente:"dataRoles": [ { "displayName": "Measure Data", "name": "measure", "kind": "Measure" } ],Rimuovere tutto il contenuto della
objectschiave ,che verrà compilato in un secondo momento.Dopo aver rimosso il contenuto, la
objectschiave sarà simile alla seguente:"objects": {},Sostituire la
dataViewMappingsproprietà con il codice seguente.max: 1inmeasurespecifica che è possibile inviare un solo campo dati al campo dati Misura dell'oggetto visivo."dataViewMappings": [ { "conditions": [ { "measure": { "max": 1 } } ], "single": { "role": "measure" } } ]Salvare le modifiche apportate a capabilities.json.
Verificare che
pbiviz startsia in esecuzione e in servizio Power BI aggiornare l'oggetto visivo React Circle Card. Il campo Dati misura può accettare un solo campo dati, come specificato damax: 1.
Aggiornare lo stile dell'oggetto visivo
In questa sezione si trasforma la forma dell'oggetto visivo in un cerchio. Usare il file visual.less per controllare lo stile dell'oggetto visivo.
Dalla cartella di stile aprire visual.less.
Sostituire il contenuto di visual.less con il codice seguente.
.circleCard { position: relative; box-sizing: border-box; border: 1px solid #000; border-radius: 50%; width: 200px; height: 200px; } p { text-align: center; line-height: 30px; font-size: 20px; font-weight: bold; position: relative; top: -30px; margin: 50% 0 0 0; }Salvare visual.less.
Impostare l'oggetto visivo per ricevere le proprietà da Power BI
In questa sezione si configura l'oggetto visivo per ricevere dati da Power BI e si inviano aggiornamenti alle istanze nel file component.tsx .
Eseguire il rendering dei dati con React
È possibile eseguire il rendering dei dati usando React. Il componente può visualizzare i dati dal proprio stato.
In VS Code aprire component.tsx dalla cartella reactCircleCard.
Sostituire il contenuto di component.tsx con il codice seguente.
import * as React from "react"; export interface State { textLabel: string, textValue: string } export const initialState: State = { textLabel: "", textValue: "" } export class ReactCircleCard extends React.Component<{}, State>{ constructor(props: any){ super(props); this.state = initialState; } render(){ const { textLabel, textValue } = this.state; return ( <div className="circleCard"> <p> {textLabel} <br/> <em>{textValue}</em> </p> </div> ) } }Salvare component.tsx.
Impostare l'oggetto visivo per ricevere i dati
Gli oggetti visivi ricevono i dati come argomento del update metodo . In questa sezione si aggiorna questo metodo per ricevere i dati.
Il codice seguente seleziona textLabel e textValue da DataViewe, se i dati esistono, aggiorna lo stato del componente.
In VS Code, dalla cartella src , aprire visual.ts.
Sostituire la riga
import ReactCircleCard from "./component";con il codice seguente:import { ReactCircleCard, initialState } from "./component";Aggiungere il codice seguente al metodo
update.if(options.dataViews && options.dataViews[0]){ const dataView: DataView = options.dataViews[0]; ReactCircleCard.update({ textLabel: dataView.metadata.columns[0].displayName, textValue: dataView.single.value.toString() }); } else { this.clear(); }Creare un
clearmetodo aggiungendo il codice seguente sotto ilupdatemetodo .private clear() { ReactCircleCard.update(initialState); }Salva visual.ts
Impostare l'oggetto visivo per l'invio di dati
In questa sezione si aggiorna l'oggetto visivo per inviare aggiornamenti alle istanze nel file del componente .
In VS Code aprire component.tsx dalla cartella src.
Aggiungere il codice seguente alla classe
ReactCircleCard:private static updateCallback: (data: object) => void = null; public static update(newState: State) { if(typeof ReactCircleCard.updateCallback === 'function'){ ReactCircleCard.updateCallback(newState); } } public state: State = initialState; public componentWillMount() { ReactCircleCard.updateCallback = (newState: State): void => { this.setState(newState); }; } public componentWillUnmount() { ReactCircleCard.updateCallback = null; }Salvare component.tsx.
Visualizzare le modifiche apportate all'oggetto visivo
Testare l'oggetto visivo React Circle Card per visualizzare le modifiche apportate.
Verificare che
pbiviz startsia in esecuzione e nella servizio Power BI aggiornare l'oggetto visivo React Circle Card.Aggiungere Sales al campo dati Measure dell'oggetto visivo.
Rendere ridimensionabile l'oggetto visivo
Attualmente, l'oggetto visivo ha una larghezza e un'altezza fisse. Per rendere ridimensionabile l'oggetto visivo, è necessario definire la size variabile nei file visual.ts e component.tsx . In questa sezione si rende ridimensionabile l'oggetto visivo.
Dopo aver completato i passaggi descritti in questa sezione, il diametro del cerchio nell'oggetto visivo corrisponderà alla larghezza o all'altezza minima e sarà possibile ridimensionarlo in servizio Power BI.
Configurare il file visual.ts
Ottiene le dimensioni correnti del riquadro di visualizzazione visivo dall'oggetto options .
In VS Code, dalla cartella src , aprire visual.ts.
Inserire questo codice per importare l'interfaccia
IViewport.import IViewport = powerbi.IViewport;Aggiungere la
viewportproprietà allavisualclasse .private viewport: IViewport;updateNel metodo, primaReactCircleCard.updatedi , aggiungere il codice seguente.this.viewport = options.viewport; const { width, height } = this.viewport; const size = Math.min(width, height);updateNel metodo aggiungereReactCircleCard.updatesizein .size,Salvare visual.ts.
Configurare il file component.tsx
In VS Code aprire component.tsx dalla cartella src.
Aggiungere il codice seguente a
export interface State.size: numberAggiungere il codice seguente a
export const initialState: State.size: 200renderNel metodo apportare le modifiche seguenti al codice:Aggiunta di
sizeaconst { textLabel, textValue, size } = this.state;. La dichiarazione dovrebbe ora essere simile alla seguente:const { textLabel, textValue, size } = this.state;Aggiungere il codice seguente sopra
return.const style: React.CSSProperties = { width: size, height: size };Sostituire la prima con:
<div className="circleCard" style={style}>
Salvare component.tsx.
Configurare il file visivo
In VS Code, dalla cartella di stile, aprire visual.less.
In
.circleCardsostituirewidtheheightconmin-widthemin-height.min-width: 200px; min-height: 200px;Salvare visual.less.
Personalizzare l'oggetto visivo di Power BI
In questa sezione si aggiunge la possibilità di personalizzare l'oggetto visivo, consentendo agli utenti di apportare modifiche al colore e allo spessore del bordo.
Aggiungere colore e spessore al file delle funzionalità
Aggiungere il colore e lo spessore del bordo alla object proprietà in capabilities.json.
In VS Code, dalla cartella reactCircleCard , aprire capabilities.json.
Aggiungere le impostazioni seguenti alla
objectsproprietà ."circle": { "properties": { "circleColor": { "type": { "fill": { "solid": { "color": true } } } }, "circleThickness": { "type": { "numeric": true } } } }Salvare capabilities.json.
Aggiungere una classe di impostazioni di formattazione cerchio al file di impostazioni
Aggiungere le Circle impostazioni di formattazione a settings.ts. Per altre informazioni su come compilare le impostazioni del modello di formattazione, vedere Formattazione delle utilità.
In VS Code, dalla cartella src , aprire settings.ts.
Sostituire il codice in settings.ts con il codice seguente:
"use strict"; import { formattingSettings } from "powerbi-visuals-utils-formattingmodel"; import FormattingSettingsCard = formattingSettings.SimpleCard; import FormattingSettingsSlice = formattingSettings.Slice; import FormattingSettingsModel = formattingSettings.Model; /** * Circle Formatting Card */ class CircleCardSettings extends FormattingSettingsCard { circleColor = new formattingSettings.ColorPicker({ name: "circleColor", // circle color name should match circle color property name in capabilities.json displayName: "Color", description: "The fill color of the circle.", show: true, value: { value: "white" } }); circleThickness = new formattingSettings.NumUpDown({ name: "circleThickness", // circle thickness name should match circle color property name in capabilities.json displayName: "Thickness", description: "The circle thickness.", show: true, value: 2 }); name: string = "circle"; // circle card name should match circle object name in capabilities.json displayName: string = "Circle"; show: boolean = true; slices: Array<FormattingSettingsSlice> = [this.circleColor, this.circleThickness]; } /** * visual settings model class * */ export class VisualFormattingSettingsModel extends FormattingSettingsModel { // Create formatting settings model circle formatting card circleCard = new CircleCardSettings(); cards = [this.circleCard]; }Salvare settings.ts.
Aggiungere un metodo per applicare le impostazioni visive
Aggiungere il getFormattingModel metodo usato per applicare le impostazioni visive e le importazioni necessarie al file visual.ts .
In VS Code, dalla cartella src , aprire visual.ts.
Aggiungere queste
importistruzioni nella parte superiore di visual.ts.import { FormattingSettingsService } from "powerbi-visuals-utils-formattingmodel"; import { VisualFormattingSettingsModel } from "./settings";Aggiungere la dichiarazione seguente a Visual.
private formattingSettings: VisualFormattingSettingsModel; private formattingSettingsService: FormattingSettingsService;Aggiungere il
getFormattingModelmetodo a Visual.public getFormattingModel(): powerbi.visuals.FormattingModel { return this.formattingSettingsService.buildFormattingModel(this.formattingSettings); }VisualNella classe aggiungere la riga di codice seguente aconstructorper inizializzareformattingSettingsServicethis.formattingSettingsService = new FormattingSettingsService();VisualNella classe aggiungere il codice seguente perupdateaggiornare le impostazioni di formattazione visiva ai valori più recenti delle proprietà di formattazione.Aggiungere questo codice all'istruzione if dopo
const size = Math.min(width, height);.this.formattingSettings = this.formattingSettingsService.populateFormattingSettingsModel(VisualFormattingSettingsModel, options.dataViews[0]); const circleSettings = this.formattingSettings.circleCard;Aggiungere questo codice a
ReactCircleCard.updatedoposize:borderWidth: circleSettings.circleThickness.value, background: circleSettings.circleColor.value.value, }
Salvare visual.ts.
Modificare il file del componente
Modificare il file del componente in modo che possa eseguire il rendering delle modifiche apportate allo spessore del colore e del bordo dell'oggetto visivo.
In VS Code aprire component.tsx dalla cartella src.
Aggiungere questi valori a
State:background?: string, borderWidth?: numberrenderNel metodo sostituire le righe di codice seguenti:const { textLabel, textValue, size } = this.state;con:const { textLabel, textValue, size, background, borderWidth } = this.state;const style: React.CSSProperties = { width: size, height: size };con:const style: React.CSSProperties = { width: size, height: size, background, borderWidth };
Salvare component.tsx.
Esaminare le modifiche
Sperimentare lo spessore del colore e del bordo dell'oggetto visivo, che è ora possibile controllare.
Verificare che
pbiviz startsia in esecuzione e nella servizio Power BI aggiornare l'oggetto visivo React Circle Card.Selezionare la scheda Formato ed espandere Cerchio.
Regolare le impostazioni Colore e Spessore dell'oggetto visivo ed esaminarne l'effetto sull'oggetto visivo.