# SmartVisuals Leaderboard for Power BI

> A ranked leaderboard in Power BI: real ranks, named tie rules, row images, podium and top N free. Premium: movement, race to target, your own row, wall mode.

- Page: https://www.smartvisuals.io/visuals/leaderboard
- Fields and settings: https://www.smartvisuals.io/visuals/leaderboard/settings
- Microsoft Marketplace: https://marketplace.microsoft.com/en-us/product/smartvisuals.smartvisuals-leaderboard?tab=overview
- Package: https://www.smartvisuals.io/downloads/smartvisuals-leaderboard-1.1.0.0.pbiviz
- Sample report (zipped .pbip): https://www.smartvisuals.io/samples/smartvisuals-leaderboard-sample-1.1.0.0.zip
- Price: Free tier for every viewer; premium $2.99 per user per month or $29 per user per year on Microsoft Marketplace, with a 30-day free trial. Premium works in edit mode without a licence; unlicensed viewers see the free tier, never a blocked visual.
- Certified by Microsoft: no
- Version: 1.1.0.0
- GUID (visualType and publicCustomVisuals): `smartVisualsLeaderboardA1F4C7E29B4D46A0B8E3D5C7F2A19E60`

## What is free

- **A board, not a table**: Real rank numbers, a podium for the top three, medals, value bars and a tie marker, so two rows on 1,240 are both 5= and the board says so.
- **Four named tie rules**: Competition (1224), modified competition (1334), dense (1223) or ordinal, detected on the value the board prints.
- **Row images at any size**: Photos and logos from a data: URI column at a usable size, with an initials fallback so a missing photo is never a hole.
- **Highest or lowest wins, percent to goal**: Rank defects, response times or costs with the smallest number on top; bind a Target for percent to goal, a target marker and the gap to the next place.
- **Top N with an Others row**: Show the top or bottom N and group the rest into an Others row that cross-filters to every entrant it stands for.
- **Quick styles, four themes, conditional colours**: League table, sales-floor TV, lowest-wins board, executive top ten or compact table in one click; SmartVisuals, Dark, Clean and Slate themes; Power BI conditional formatting (fx) on the rank number, name, value and value bar colours. Everything cosmetic is free.
- **Built for reports**: Cross-filtering, multi-select, the standard context menu, tooltips, keyboard navigation, high contrast, reduced motion, English and Czech, and number formats from your own measures. A 5,000-row board scrolls like a native table.

## What premium adds

- **Movement and history**: Rank change against any earlier period, NEW badges, dropouts, streaks, personal best, the biggest mover, a rank sparkline and a rank history chart. Movement survives every slicer.
- **Rank by and race analytics**: Rank on percent of target or on change; the gap to the leader and to the qualifying line, the pace a target still needs, Gold, Silver and Bronze tiers and the projected finish.
- **Your own row**: Bind [Rep email] = USERPRINCIPALNAME() to Is me and every viewer sees their row highlighted, kept on screen and summed up in the header. Rows can also be pinned.
- **Wall mode**: Large type, auto-paging with a page indicator and no chrome: a board built for the TV on the sales floor or in the plant. A click, a scroll or a key press pauses it.
- **Grouped standings and cut-off lines**: Entrants ranked within a team or region. Each group gets a header row showing its subtotal (sum, average or maximum, chosen in Groups > Group total, with Show group headers to switch the rows on or off), and the groups are ranked by it. Labelled promotion and relegation lines are drawn on the board.

## Fields

| Field | Internal name | Takes | Needed | What it is for |
| --- | --- | --- | --- | --- |
| Entrant | `entrant` | Column | Optional | The name on the row |
| Value | `value` | Measure | Optional | What entrants are ranked by |
| Comparison value | `comparison` | Measure | Optional | The previous period's value — drives Movement |
| Period | `period` | Column | Optional | A period axis — drives Movement, streaks and personal best |
| Image | `image` | Column | Optional | A data URI image for the row |
| Group | `group` | Column | Optional | Team or region |
| Subtitle | `subtitle` | Column | Optional | A second line under the name |
| Target | `target` | Measure | Optional | Drives percent to goal |
| Period progress | `progress` | Measure | Optional | How far through the period, 0 to 1 — drives the projection |
| Is me | `isMe` | Measure | Optional | 1 on the row that belongs to the person viewing the report, for example [Rep email] = USERPRINCIPALNAME(). Each viewer then sees their own row. |
| Tooltips | `tooltip` | Measure | Optional | Extra fields for the tooltip |

## Format pane

Each card is a key under `visual.objects` in a PBIR visual.json; each setting is a property of it. Toggles take `true`/`false`, choices and text a value in single quotes (`'auto'`), numbers a `D` suffix (`12D`).

### Board (`board`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Preset | `preset` | `custom` (Custom), `league` (League table), `salesFloor` (Sales floor TV), `lowestWins` (Lowest wins (defects, times)), `executive` (Executive top 10), `compact` (Compact table) |
| Layout | `layout` | `list` (List), `podium` (Podium and list), `grid` (Grid of tiles), `bump` (Rank history chart) |
| Density | `density` | `comfortable` (Comfortable), `compact` (Compact), `wall` (Wall) |
| Rows visible | `rowsVisible` | Number |
| Row height | `rowHeight` | Number |
| Row gap | `rowGap` | Number |
| Radius | `radius` | Number |
| Padding | `padding` | Number |

### Ranking (`ranking`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Direction | `direction` | `highestWins` (Highest value wins), `lowestWins` (Lowest value wins) |
| Rank by | `rankBy` | `value` (The value), `pctToTarget` (Percent of target), `change` (Change against the comparison), `changePct` (Change in percent) |
| Tie rule | `tieRule` | `competition` (Competition — 1, 2, 2, 4), `modifiedCompetition` (Modified competition — 1, 3, 3, 4), `dense` (Dense — 1, 2, 2, 3), `ordinal` (Ordinal — 1, 2, 3, 4 (no ties)) |
| Tie detection | `tieDetection` | `displayed` (On the displayed value), `exact` (On the exact value) |
| Tie marker | `tieMarker` | `=` (Equals sign), `T` (Letter T), `none` (No marker) |
| Tie break | `tieBreak` | `nameAsc` (Name A to Z), `nameDesc` (Name Z to A), `modelOrder` (Model order), `comparison` (Comparison value), `groupThenName` (Group, then name) |
| Blanks | `blanks` | `exclude` (Hide them), `rankLast` (Rank them last), `showUnranked` (Show them unranked) |
| Start at | `startAt` | Number |
| Rank within group | `rankWithinGroup` | On / off |

### Rank number (`rankNumber`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show | `show` | On / off |
| Style | `style` | `auto` (Follow the theme), `plain` (Plain), `circle` (In a circle), `pill` (In a pill), `medal` (Medal) |
| Medals | `medals` | On / off |
| Medal gold | `medalGold` | Colour |
| Medal silver | `medalSilver` | Colour |
| Medal bronze | `medalBronze` | Colour |
| Font family | `fontFamily` | Format string |
| Font size | `fontSize` | Format string |
| Bold | `bold` | On / off |
| Italic | `italic` | On / off |
| Underline | `underline` | On / off |
| Color | `color` | Colour |
| Width | `width` | Number |

### Entrant (`entrant`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Font family | `fontFamily` | Format string |
| Font size | `fontSize` | Format string |
| Bold | `bold` | On / off |
| Italic | `italic` | On / off |
| Underline | `underline` | On / off |
| Color | `color` | Colour |
| Max lines | `maxLines` | Number |
| Subtitle source | `subtitleSource` | `none` (None), `group` (Group), `subtitle` (Subtitle field), `value` (Value), `movement` (Rank change) |
| Subtitle font family | `subtitleFontFamily` | Format string |
| Subtitle font size | `subtitleFontSize` | Format string |
| Subtitle bold | `subtitleBold` | On / off |
| Subtitle italic | `subtitleItalic` | On / off |
| Subtitle underline | `subtitleUnderline` | On / off |
| Subtitle color | `subtitleColor` | Colour |

### Image (`image`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show | `show` | On / off |
| Shape | `shape` | `auto` (Follow the theme), `circle` (Circle), `rounded` (Rounded), `square` (Square) |
| Size | `size` | Number |
| Border width | `borderWidth` | Number |
| Border color | `borderColor` | Colour |
| Fallback | `fallback` | `initials` (Initials), `icon` (Silhouette), `none` (Nothing) |
| Initials source | `initialsSource` | `group` (From the group), `hash` (From the name), `fixed` (One colour) |
| Initials color | `initialsColor` | Colour |

### Value (`value`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show | `show` | On / off |
| Position | `position` | `right` (Right of the name), `belowName` (Under the name) |
| Font family | `fontFamily` | Format string |
| Font size | `fontSize` | Format string |
| Bold | `bold` | On / off |
| Italic | `italic` | On / off |
| Underline | `underline` | On / off |
| Color | `color` | Colour |
| Decimals | `decimals` | Number |
| Abbreviate | `abbreviate` | `auto` (Automatic), `none` (Never), `thousands` (Thousands), `millions` (Millions), `billions` (Billions) |
| Align | `align` | `left` (Left), `right` (Right) |
| Prefix | `prefix` | Text |
| Suffix | `suffix` | Text |

### Value bar (`valueBar`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show | `show` | On / off |
| Style | `style` | `auto` (Follow the theme), `gradient` (Gradient), `flat` (Flat), `thin` (Thin), `square` (Square), `none` (No bar) |
| Mode | `mode` | `leader` (Share of the leader), `max` (Share of the maximum), `target` (Share of the target) |
| Placement | `placement` | `auto` (Automatic), `underValue` (Under the value), `behindRow` (Behind the row), `column` (Its own column) |
| Color mode | `colorMode` | `single` (One colour), `group` (By group), `rank` (By rank) |
| Color | `color` | Colour |
| Track | `track` | Colour |
| Height | `height` | Number |
| Radius | `radius` | Number |

### Movement (`movement`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show | `show` | On / off |
| Compare to | `compareTo` | `previous` (Previous period), `first` (First period in view), `kBack` (A set number of periods back) |
| Periods back | `periodsBack` | Number |
| Glyph | `glyph` | `auto` (Follow the theme), `triangle` (Triangle), `chevron` (Chevron), `caret` (Caret), `arrow` (Arrow) |
| Show places | `showPlaces` | On / off |
| Show value change | `showValueChange` | On / off |
| Value change as | `valueChangeAs` | `absolute` (Absolute), `percent` (Percent), `both` (Both) |
| Color by | `colorBy` | `rank` (Rank direction), `value` (Value direction) |
| Up color | `upColor` | Colour |
| Down color | `downColor` | Colour |
| Flat color | `flatColor` | Colour |
| New badge | `newBadge` | On / off |
| New text | `newText` | Text |
| Show dropouts | `showDropouts` | On / off |

### Badges (`badges`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Personal best | `personalBest` | On / off |
| Personal best label | `personalBestLabel` | Text |
| Personal best color | `personalBestColor` | Colour |
| Streak | `streak` | On / off |
| Streak threshold | `streakThreshold` | Number |
| Missing period | `missingPeriod` | `breaks` (Breaks the streak), `ignores` (Is ignored) |
| Streak label | `streakLabel` | Text |
| Streak color | `streakColor` | Colour |
| Biggest mover | `biggestMover` | On / off |
| Biggest mover label | `biggestMoverLabel` | Text |
| Biggest mover color | `biggestMoverColor` | Colour |

### Sparkline (`sparkline`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show | `show` | On / off |
| Series | `series` | `rank` (Rank), `value` (Value) |
| Periods | `periods` | Number |
| Line width | `lineWidth` | Number |
| Color | `color` | Colour |
| Area | `area` | On / off |
| Last point | `lastPoint` | On / off |

### Target (`target`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show percent | `showPercent` | On / off |
| Over color | `overColor` | Colour |
| Under color | `underColor` | Colour |
| Show marker | `showMarker` | On / off |
| Marker color | `markerColor` | Colour |
| Show gap to next | `showGapToNext` | On / off |
| Gap label | `gapLabel` | Text |
| Show projection | `showProjection` | On / off |
| Projection color | `projectionColor` | Colour |

### Groups (`groups`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Mode | `mode` | `off` (Off), `nested` (Nested standings), `chips` (Coloured chips) |
| Header show | `headerShow` | On / off |
| Aggregate | `aggregate` | `sum` (Sum), `average` (Average), `max` (Maximum) |
| Fill | `fill` | Colour |

### Top N (`topN`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Enabled | `enabled` | On / off |
| Direction | `direction` | `top` (Top), `bottom` (Bottom) |
| Count | `count` | Number |
| Others show | `othersShow` | On / off |
| Others label | `othersLabel` | Text |
| Others aggregate | `othersAggregate` | `sum` (Sum), `average` (Average), `count` (Count), `none` (No value) |
| Show rank range | `showRankRange` | On / off |

### Focus row (`focusRow`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Enabled | `enabled` | On / off |
| Source | `source` | `pinned` (Pinned entrants), `selection` (The current selection) |
| Position | `position` | `bottom` (Pinned to the bottom), `top` (Pinned to the top) |
| Show gap label | `showGapLabel` | On / off |
| Me highlight | `meHighlight` | On / off |
| Me header | `meHeader` | On / off |
| Pinned | `pinned` | On / off |

### Cut-off lines (`cutoff`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Enabled | `enabled` | On / off |
| First after | `firstAfter` | Number |
| First label | `firstLabel` | Text |
| First color | `firstColor` | Colour |
| Second after | `secondAfter` | Number |
| Second label | `secondLabel` | Text |
| Second color | `secondColor` | Colour |
| Style | `style` | `dashed` (Dashed), `solid` (Solid), `double` (Double) |
| Shade below | `shadeBelow` | On / off |

### Race analytics (`race`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Gap to leader | `gapToLeader` | On / off |
| Gap to cutoff | `gapToCutoff` | On / off |
| Needed pace | `neededPace` | On / off |
| Tier mode | `tierMode` | `off` (Off), `percentile` (By place — top X% of the board), `pctTarget` (By percent of target) |
| Tier1 at | `tier1At` | Number |
| Tier2 at | `tier2At` | Number |
| Tier3 at | `tier3At` | Number |
| Tier1 target | `tier1Target` | Number |
| Tier2 target | `tier2Target` | Number |
| Tier3 target | `tier3Target` | Number |
| Tier1 label | `tier1Label` | Text |
| Tier2 label | `tier2Label` | Text |
| Tier3 label | `tier3Label` | Text |
| Tier1 color | `tier1Color` | Colour |
| Tier2 color | `tier2Color` | Colour |
| Tier3 color | `tier3Color` | Colour |
| Tier stripe | `tierStripe` | On / off |

### Rank history chart (`bump`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Periods | `periods` | Number |
| Lines | `lines` | Number |
| Emphasis | `emphasis` | `top3` (The current top three), `selection` (Only the selection), `all` (Every line equally) |
| Color by | `colorBy` | `entrant` (One per entrant), `group` (By group), `accent` (The accent) |
| Line width | `lineWidth` | Number |
| Markers | `markers` | On / off |
| Start labels | `startLabels` | On / off |

### Wall mode (`wall`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Enabled | `enabled` | On / off |
| Auto scale | `autoScale` | `fitRows` (Fit the rows to the screen), `fixed` (Use the sizes as set) |
| Page size | `pageSize` | Number |
| Interval | `interval` | Number |
| Transition | `transition` | `slide` (Slide), `fade` (Fade), `none` (None) |
| Pause on interaction | `pauseOnInteraction` | On / off |
| Show page indicator | `showPageIndicator` | On / off |
| Loop | `loop` | On / off |
| Hide chrome | `hideChrome` | On / off |

### Header (`header`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show | `show` | On / off |
| Title source | `titleSource` | `auto` (From the value field), `custom` (Custom text), `none` (No title) |
| Title text | `titleText` | Text |
| Subtitle text | `subtitleText` | Text |
| Show comparison label | `showComparisonLabel` | On / off |
| Comparison label | `comparisonLabel` | Text |
| Show tie note | `showTieNote` | On / off |
| Show biggest mover | `showBiggestMover` | On / off |
| Show count | `showCount` | On / off |
| Count label | `countLabel` | Text |
| Align | `align` | `left` (Left), `center` (Centre), `right` (Right) |
| Font family | `fontFamily` | Format string |
| Font size | `fontSize` | Format string |
| Bold | `bold` | On / off |
| Italic | `italic` | On / off |
| Underline | `underline` | On / off |
| Color | `color` | Colour |
| Divider | `divider` | On / off |

### Animation (`animation`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Enabled | `enabled` | On / off |
| Duration | `duration` | Number |
| Easing | `easing` | `smooth` (Smooth), `linear` (Linear), `spring` (Spring) |
| Stagger | `stagger` | On / off |

### Interaction (`interaction`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Cross filter | `crossFilter` | On / off |
| Multi select | `multiSelect` | On / off |
| Selection style | `selectionStyle` | `dim` (Dim the others), `outline` (Outline the selected), `both` (Both) |
| Dim opacity | `dimOpacity` | Number |
| Tie selects | `tieSelects` | `self` (Just that entrant), `group` (Every tied entrant) |
| Context menu | `contextMenu` | On / off |

### Language (`language`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Locale | `locale` | `auto` (Follow Power BI), `en-US` (English), `cs-CZ` (Čeština) |

### Theme (`themeCard`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Theme | `theme` | `smartvisuals` (SmartVisuals), `dark` (Dark), `clean` (Clean), `slate` (Slate) |
| Accent | `accent` | Colour |
| Background | `background` | Colour |
| Border | `border` | On / off |
| Border color | `borderColor` | Colour |
| Use report colors | `useReportColors` | On / off |

### Accessibility (`accessibility`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Focus color | `focusColor` | Colour |
| Focus width | `focusWidth` | Number |
| Min font size | `minFontSize` | Number |
| Movement text | `movementText` | On / off |
