Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Som udvikler kan du oprette dine egne Power BI-visualiseringer. Disse visualiseringer kan bruges af dig, din organisation eller tredjeparter.
I dette selvstudium udvikler du en Power BI-visualisering ved hjælp af React. Visualiseringen viser en formateret målingsværdi i en cirkel. Visualiseringen har tilpasset størrelse og giver dig mulighed for at tilpasse indstillingerne.
I dette selvstudium lærer du, hvordan du kan:
- Opret et udviklingsprojekt til din visualisering.
- Udvikl din visualisering ved hjælp af React.
- Konfigurer din visualisering til at behandle data.
- Konfigurer din visualisering for at tilpasse sig størrelsesændringer.
- Konfigurer indstillinger for tilpasset farve og kant for din visualisering.
Bemærk
Du kan finde hele kildekoden for denne visualisering i React-cirkelkort i Power BI-visualiseringen.
Forudsætninger
Før du begynder at udvikle din Power BI-visualisering, skal du kontrollere, at du har alt angivet i dette afsnit.
En Power BI Pro - eller Premium pr. bruger-konto . Hvis du ikke har en, kan du tilmelde dig en gratis prøveversion.
Visual Studio Code (VS Code). VS Code er et ideelt IDE (Integrated Development Environment) til udvikling af JavaScript- og TypeScript-programmer.
Windows PowerShell version 4 eller nyere (til Windows). Eller Terminal (til Mac).
Et miljø, der er klar til at udvikle en Power BI-visualisering. Konfigurer dit miljø til udvikling af en Power BI-visualisering.
I dette selvstudium bruges US Sales Analysis-rapporten . Du kan downloade denne rapport og uploade den til Power BI-tjeneste eller bruge din egen rapport. Hvis du har brug for flere oplysninger om Power BI-tjeneste og upload af filer, skal du se Selvstudiet Kom i gang med at oprette i Power BI-tjeneste selvstudium.
Opret et udviklingsprojekt
I dette afsnit skal du oprette et projekt for visualiseringen React-cirkelkort.
Åbn PowerShell, og naviger til den mappe, du vil oprette projektet i.
Angiv følgende kommando:
pbiviz new ReactCircleCardGå til projektets mappe.
cd ReactCircleCardStart visualiseringen React-cirkelkort. Din visualisering kører nu, mens den hostes på computeren.
pbiviz startVigtigt
Hvis du vil forhindre, at visualiseringen kører, skal du i PowerShell angive Ctrl+C, og hvis du bliver bedt om at afslutte batchjobbet, skal du skrive Y og trykke på Enter.
Få vist React-cirkelkortet i Power BI-tjeneste
Hvis du vil teste visualiseringen i Power BI-tjeneste, bruger vi rapporten Salgsanalyse i USA. Du kan downloade denne rapport og uploade den til Power BI-tjeneste.
Du kan også bruge din egen rapport til at teste visualiseringen.
Bemærk
Før du fortsætter, skal du bekræfte, at du har aktiveret udviklertilstanden for visualiseringer.
Vælg Rediger.
Opret en ny side til test ved at klikke på knappen Ny side nederst i grænsefladen Power BI-tjeneste.
Vælg udviklervisualiseringen i ruden Visualiseringer.
Denne visualisering repræsenterer den brugerdefinerede visualisering, du kører på din computer. Den er kun tilgængelig, når indstillingen til fejlfinding af brugerdefinerede visualiseringer er aktiveret.
Kontrollér, at der er føjet en visualisering til rapportlærredet.
Dette er en simpel visualisering, der viser det antal gange, opdateringsmetoden er blevet kaldt. I denne fase henter visualiseringen ingen data.
Bemærk
Hvis der vises en forbindelsesfejlmeddelelse i visualiseringen, skal du åbne en ny fane i browseren, navigere til
https://localhost:8080/assetsog give browseren tilladelse til at bruge denne adresse.
Mens den nye visualisering er valgt, skal du gå til ruden Data , udvide Sales og vælge Quantity.
Hvis du vil teste, hvordan visualiseringen reagerer, skal du tilpasse størrelsen på den og bemærke, at værdien For opdateringsantal øges, hver gang du tilpasser størrelsen på visualiseringen.
Konfigurer React i dit projekt
I dette afsnit får du mere at vide om, hvordan du konfigurerer React for dit Power BI-visualprojekt.
Åbn PowerShell, og stop kørslen af visualiseringen ved at angive Ctrl+C. Hvis du bliver bedt om at afslutte batchjobbet, skal du angive Y og trykke på Enter.
Installér React
Hvis du vil installere de påkrævede React-afhængigheder, skal du åbne PowerShell i mappen ReactCircleCard og køre følgende kommando:
npm i react react-dom
Installér React-typedefinitioner
Hvis du vil installere typedefinitioner til React, skal du åbne PowerShell i mappen reactCircleCard og køre følgende kommando:
npm i @types/react @types/react-dom
Opret en React-komponentklasse
Følg disse trin for at oprette en React-komponentklasse.
Åbn VS Code, og naviger til mappen reactCircleCard .
Opret en ny fil ved at vælge Filer>Ny fil.
Kopiér følgende kode til den nye fil.
import * as React from "react"; export class ReactCircleCard extends React.Component<{}>{ render(){ return ( <div className="circleCard"> Hello, React! </div> ) } } export default ReactCircleCard;Vælg Gem som , og naviger til mappen src .
Gem filen på følgende måde:
- Angiv komponenten i feltet Filnavn.
- Vælg TypeScript React i rullemenuen Gem som type.
Føj React til visualiseringsfilen
Erstat koden i visual.ts-filen med kode, der gør det muligt at bruge React.
Åbn visual.ts i mappen src, og erstat koden i filen med følgende kode:
"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) { } }Bemærk
Som standardindstillinger for Power BI TypeScript genkender ikke React tsx-filer , fremhæves
componentVS Code som en fejl.Hvis du vil gengive komponenten, skal du føje destinations-HTML-elementet til visual.ts. Dette element er
HTMLElementiVisualConstructorOptions, som overføres til konstruktøren.Åbn visual.ts i mappen src.
Føj følgende kode til
Visualklassen:
private target: HTMLElement; private reactRoot: React.ComponentElement<any, any>;- Føj følgende linjer til konstruktøren
VisualConstructorOptions:
this.reactRoot = React.createElement(ReactCircleCard, {}); this.target = options.element; ReactDOM.render(this.reactRoot, this.target);Din visual.ts-fil bør nu se sådan ud:
"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) { } }Gem visual.ts.
Rediger tsconfig-filen
Rediger tsconfig.json for at arbejde med React.
Åbn tsconfig.json i mappen reactCircleCard, og føj to linjer til starten af elementet
compilerOptions."jsx": "react", "types": ["react", "react-dom"],Din tsconfig.json-fil bør nu se sådan ud, og
componentfejlen i visual.ts bør være væk.{ "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" ] }Gem tsconfig.json.
Test din visualisering
Åbn PowerShell i mappen CircleCardVisual , og kør dit projekt:
pbiviz start
Når du føjer en ny udviklervisualisering til din rapport i Power BI-tjeneste, ser det sådan ud:
Konfigurer dit visuals datafelt
Konfigurer filen med egenskaber for visualiseringen, så der kun kan sendes ét datafelt til visualiseringens målingsdatafelt .
Åbn capabilities.json fra mappen reactCircleCard i VS Code.
viser
ReactCircleCarden enkelt værdi,Measure Data. Fjern objektetCategory DatafradataRoles.Når du har fjernet objektet
Category Data,dataRolesser nøglen sådan ud:"dataRoles": [ { "displayName": "Measure Data", "name": "measure", "kind": "Measure" } ],Fjern alt indholdet af
objectsnøglen (du skal udfylde det senere).Når du har fjernet indholdet,
objectsser nøglen sådan ud:"objects": {},Erstat egenskaben
dataViewMappingsmed følgende kode.max: 1imeasureangiver, at der kun kan sendes ét datafelt til visualiseringens målingsdatafelt ."dataViewMappings": [ { "conditions": [ { "measure": { "max": 1 } } ], "single": { "role": "measure" } } ]Gem de ændringer, du har foretaget af capabilities.json.
Kontrollér, at kører,
pbiviz startog opdater visualiseringen React Circle Card i Power BI-tjeneste. Datafeltet Måling kan kun acceptere ét datafelt, som angivet afmax: 1.
Opdater visualiseringens typografi
I dette afsnit kan du omdanne visualiseringens figur til en cirkel. Brug filen visual.less til at styre typografien for din visualisering.
Åbn visual.less fra typografimappen.
Erstat indholdet af visual.less med følgende kode.
.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; }Gem visual.less.
Indstil din visualisering til at modtage egenskaber fra Power BI
I dette afsnit skal du konfigurere visualiseringen til at modtage data fra Power BI og sende opdateringer til forekomsterne i filen component.tsx .
Gengiv data ved hjælp af React
Du kan gengive data ved hjælp af React. Komponenten kan vise data fra sin egen tilstand.
Åbn component.tsx fra mappen reactCircleCard i VS Code.
Erstat indholdet af component.tsx med følgende kode.
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> ) } }Gem component.tsx.
Indstil din visualisering til at modtage data
Visualiseringer modtager data som et argument for update metoden. I dette afsnit skal du opdatere denne metode for at modtage data.
Følgende kode vælger og textLabel fra textValue, og hvis dataene findes, opdateres DataView komponenttilstanden.
Åbn visual.ts fra mappen src i VS Code.
Erstat linjen
import ReactCircleCard from "./component";med følgende kode:import { ReactCircleCard, initialState } from "./component";Føj følgende kode til
updatemetoden .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(); }Opret en
clearmetode ved at tilføje følgende kode under metodenupdate.private clear() { ReactCircleCard.update(initialState); }Gem visual.ts
Indstil din visualisering til at sende data
I dette afsnit skal du opdatere visualiseringen for at sende opdateringer til forekomster i komponentfilen .
Åbn component.tsx fra mappen src i VS Code.
Føj følgende kode til
ReactCircleCardklassen: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; }Gem component.tsx.
Få vist ændringerne i visualiseringen
Test din React Circle Card-visualisering for at få vist de ændringer, du har foretaget.
Kontrollér, at
pbiviz startkører, og opdater visualiseringen React Circle Card i Power BI-tjeneste.Føj Sales til visualiseringens datafelt Måling.
Gør det muligt at ændre størrelsen på din visualisering
Din visualisering har i øjeblikket fast bredde og højde. Hvis du vil gøre det muligt at ændre størrelsen på visualiseringen, skal du definere variablen size i både filerne visual.ts og component.tsx . I dette afsnit skal du gøre det muligt at ændre størrelsen på visualiseringen.
Når du har fuldført de trin, der er beskrevet i dette afsnit, svarer cirkeldiameteren i din visualisering til den minimale bredde eller højdestørrelse, og du kan tilpasse størrelsen på den i Power BI-tjeneste.
Konfigurer filen visual.ts
Hent den aktuelle størrelse af visualiseringens visningsport fra objektet options .
Åbn visual.ts fra mappen src i VS Code.
Indsæt denne kode for at importere grænsefladen
IViewport.import IViewport = powerbi.IViewport;Føj egenskaben
viewporttilvisualklassen.private viewport: IViewport;updateTilføj følgende kode i metoden førReactCircleCard.update.this.viewport = options.viewport; const { width, height } = this.viewport; const size = Math.min(width, height);updateTilføj i metoden iReactCircleCard.updatesize.size,Gem visual.ts.
Konfigurer filen component.tsx
Åbn component.tsx fra mappen src i VS Code.
Føj følgende kode til
export interface State.size: numberFøj følgende kode til
export const initialState: State.size: 200renderForetag følgende ændringer af koden i metoden :Føj
sizetilconst { textLabel, textValue, size } = this.state;. Denne erklæring bør nu se sådan ud:const { textLabel, textValue, size } = this.state;Tilføj følgende kode ovenfor
return.const style: React.CSSProperties = { width: size, height: size };Erstat den første returlinje
<div className="circleCard">med:<div className="circleCard" style={style}>
Gem component.tsx.
Konfigurer visualiseringsfilen
Åbn visual.less fra typografimappeni VS Code.
I
.circleCardskal du erstattewidthogheightmedmin-widthogmin-height.min-width: 200px; min-height: 200px;Gem visual.less.
Gør din Power BI-visualisering tilpasset
I dette afsnit tilføjer du muligheden for at tilpasse din visualisering, så brugerne kan foretage ændringer af dens farve og kanttykkelse.
Føj farve og tykkelse til kapacitetsfilen
Føj farven og kanttykkelsen til egenskaben object i capabilities.json.
Åbn capabilities.json fra mappen reactCircleCard i VS Code.
Føj følgende indstillinger til egenskaben
objects."circle": { "properties": { "circleColor": { "type": { "fill": { "solid": { "color": true } } } }, "circleThickness": { "type": { "numeric": true } } } }Gem capabilities.json.
Føj en cirkelformateringsindstillingsklasse til indstillingsfilen
Føj formateringsindstillingerne Circle til settings.ts. Du kan få flere oplysninger om, hvordan du opretter indstillinger for formateringsmodel, under Formateringshjælpeprogrammer.
Åbn settings.ts fra mappen src i VS Code.
Erstat koden i settings.ts med følgende kode:
"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]; }Gem settings.ts.
Tilføj en metode for at anvende visuelle indstillinger
Tilføj den metode, getFormattingModel der bruges til at anvende visuelle indstillinger og påkrævede import til filen visual.ts .
Åbn visual.ts fra mappen src i VS Code.
Tilføj disse
importsætninger øverst i visual.ts.import { FormattingSettingsService } from "powerbi-visuals-utils-formattingmodel"; import { VisualFormattingSettingsModel } from "./settings";Føj følgende erklæring til Visual.
private formattingSettings: VisualFormattingSettingsModel; private formattingSettingsService: FormattingSettingsService;Føj metoden
getFormattingModeltil Visual.public getFormattingModel(): powerbi.visuals.FormattingModel { return this.formattingSettingsService.buildFormattingModel(this.formattingSettings); }VisualI klassen skal du tilføje følgende kodelinje for atconstructorinitialisereformattingSettingsServicethis.formattingSettingsService = new FormattingSettingsService();VisualI klassen skal du tilføje følgende kode for atupdateopdatere formateringsindstillingerne for visualiseringen til de seneste formateringsegenskaber.Føj denne kode til if-sætningen efter
const size = Math.min(width, height);.this.formattingSettings = this.formattingSettingsService.populateFormattingSettingsModel(VisualFormattingSettingsModel, options.dataViews[0]); const circleSettings = this.formattingSettings.circleCard;Føj denne kode til
ReactCircleCard.updateeftersize:borderWidth: circleSettings.circleThickness.value, background: circleSettings.circleColor.value.value, }
Gem visual.ts.
Rediger komponentfilen
Rediger komponentfilen, så den kan gengive ændringerne i visualiseringens farve og kanttykkelse.
Åbn component.tsx fra mappen src i VS Code.
Føj disse værdier til
State:background?: string, borderWidth?: numberrenderErstat følgende kodelinjer i metoden :const { textLabel, textValue, size } = this.state;med:const { textLabel, textValue, size, background, borderWidth } = this.state;const style: React.CSSProperties = { width: size, height: size };med:const style: React.CSSProperties = { width: size, height: size, background, borderWidth };
Gem component.tsx.
Gennemgå dine ændringer
Eksperimentér med visualiseringens farve og kanttykkelse, som du nu kan styre.
Kontrollér, at
pbiviz startkører, og opdater visualiseringen React Circle Card i Power BI-tjeneste.Vælg fanen Formatér, og udvid Cirkel.
Juster indstillingerne farve og tykkelse for visualiseringen, og gennemse deres effekt på visualiseringen.