Create Power BI PBIR visuals from templates. Use when users need to add visuals (cards, charts, tables, slicers, maps) to Power BI Enhanced Report Format projects...
Create Power BI visuals for PBIR (.Report folder) projects using validated templates.
Use when the user wants to:
Search visual-templates/ in this plugin for available templates:
| Template | Visual Type | Use Case |
|---|---|---|
card-single-measure.json |
Card | Single KPI display |
line-chart-category-y.json |
Line Chart | Trend over category |
line-chart-multi-y.json |
Line Chart | Multiple measures on Y |
line-chart-with-series.json |
Line Chart | Category + legend series |
bar-chart-category-y.json |
Bar Chart | Horizontal bars |
bar-chart-with-series.json |
Bar Chart | Grouped/stacked bars |
clustered-column-multi-measure.json |
Column Chart | Side-by-side columns |
table-basic.json |
Table | Columnar data |
matrix-basic.json |
Matrix | Pivot table |
pie-chart.json |
Pie Chart | Part-to-whole |
scatter-bubble-chart.json |
Scatter/Bubble | X-Y relationship |
azure-map-gradient.json |
Azure Map | Filled regions |
azure-map-bubble.json |
Azure Map | Bubble markers |
slicer-between-date.json |
Slicer | Date range filter |
slicer-dropdown.json |
Slicer | Dropdown selection |
slicer-list-multiselect.json |
Slicer | Multi-select list |
image-static.json |
Image | Static logo/image |
Ask the user:
# Find matching template
Glob: visual-templates/*.json
# Read template
Read: visual-templates/[selected-template].json
Replace {{PLACEHOLDER}} values:
Common:
{{VISUAL_NAME}} - Unique identifier (e.g., TotalSalesCard){{X}}, {{Y}} - Position coordinates{{WIDTH}}, {{HEIGHT}} - Dimensions{{Z}} - Z-order (typically 2000+){{TAB_ORDER}} - Keyboard navigation order{{TITLE}} - Visual title text{{FILTER_GUID}} - Generate with secrets.token_hex(10)Data Bindings:
{{TABLE_NAME}}, {{MEASURE_NAME}} - Primary measure{{CATEGORY_TABLE}}, {{CATEGORY_COLUMN}} - X-axis dimension{{SERIES_TABLE}}, {{SERIES_COLUMN}} - Legend/seriesCreate folder structure:
.Report/definition/pages/[PageGUID]/visuals/[VisualGUID]/visual.json
Generate GUID: VisualContainer + 8 random hex digits
Before writing, verify:
User request: "Add a Total Sales card to the Dashboard page"
Process:
visual-templates/card-single-measure.json{{VISUAL_NAME}} → "TotalSalesCard"
{{TABLE_NAME}} → "Fact_Sales"
{{MEASURE_NAME}} → "Total Sales"
{{TITLE}} → "Total Sales"
{{X}} → "24"
{{Y}} → "80"
{{WIDTH}} → "300"
{{HEIGHT}} → "180"
{{Z}} → "2000"
{{TAB_ORDER}} → "0"
{{FILTER_GUID}} → "a1b2c3d4e5f6789012ab"
{{FONT_SIZE}} → "32"
{{DISPLAY_UNITS}} → "1"
.Report/definition/pages/ReportSection.../visuals/VisualContainerABCD1234/visual.jsonMeasure reference:
{
"field": {
"Measure": {
"Expression": { "SourceRef": { "Entity": "TableName" } },
"Property": "Measure Name"
}
},
"queryRef": "TableName.Measure Name",
"nativeQueryRef": "Measure Name"
}
Column reference:
{
"field": {
"Column": {
"Expression": { "SourceRef": { "Entity": "TableName" } },
"Property": "column_name"
}
},
"queryRef": "TableName.column_name",
"nativeQueryRef": "column_name",
"active": true
}
All templates use PBIR schema version 2.4.0:
https://developer.microsoft.com/json-schemas/fabric/item/report/definition/visualContainer/2.4.0/schema.json
queryState/projections structure (not legacy config blobs)