Skip to main content

Prerequisites

Before customizing capacity indicators, ensure you have:
  • Capacity tracking enabled on the widget (set capacityLoad = true in widget parameters — see Configure Capacity Tracking)
  • At least one Plan with work items assigned to swimlanes
  • Widget editor access to the Polarion page hosting the Planningboard

How capacity indicators work

Each column (Plan) on the Planningboard displays a capacity bar in the column header when capacityLoad is enabled. The bar shows the ratio of allocated effort to the Plan’s total capacity. When you hover over the bar, a tooltip shows the breakdown.
A Plan column header showing a 75% capacity bar for Sprint 4 with a hover tooltip, and per-resource swimlane bars for Alice, Bob, and an overallocated Carol

1

Choose a capacity mode

Planningboard supports three capacity modes, controlled by widget parameters:Enable the mode that fits your planning context:
  • Column-level only — set capacityLoad = true. A single bar per Plan column shows total load.
  • Per-resource bars — set both capacityLoad = true and multiCapacityLoad = true. Each swimlane cell shows its own bar.
  • Per-user capacity with Teams service — set capacityLoad = true and userCapacityLoad = true (requires useTeamsService = true).
Capacity configuration parameter values are whitespace-sensitive. Do not add trailing spaces after boolean values such as true or false in widget parameter fields — they may silently disable the feature.

2

Configure the capacity field

By default, Planningboard derives effort from the work item’s remainingEstimate and initialEstimate time-tracking fields, converting them using hoursPerDay.To use a custom numeric field (for example, story points stored in a field called storyPoints):
  1. Open the widget parameters for your Planningboard.
  2. Set capacityField = storyPoints (use the exact Polarion field ID, matching case).
  3. Ensure the field is populated on your work items before opening the board.
When using capacityField, the hoursPerDay conversion is applied to translate the field value into hours for capacity calculations. If your field already stores hours, set hoursPerDay = 1 to avoid double conversion.

3

Customize the capacity tooltip

By default, hovering over a capacity bar shows aggregate values: Capacity, Done, Todo, and Available.You can replace this with a custom tooltip template using the columnTooltipTemplate configuration option. This is configured via a Config Script in the widget’s Advanced Properties section.

Default tooltip (no template configured)

Default capacity tooltip popup showing Capacity, Done, Todo, and Available values for a Plan column

Custom tooltip with per-user breakdown

The columnTooltipTemplate accepts either a static string template or a JavaScript function receiving the column and row objects. The following example adds a per-user allocation breakdown with overallocation highlighting:
After setting or changing columnTooltipTemplate programmatically, call scheduler.setCurrentView() to trigger a re-render. Without it, the board continues to show the previous tooltip until the next natural refresh.
The tooltip is attached to the .capacityLoad element on each Plan column (.plan[data-col-id]). The HTML rendered by your template is stored in the data-html attribute of that element and shown on hover.
4

Display the Resource Load visualization

Beyond column capacity bars, Planningboard has a Toggle Resource Load visualization control in the toolbar. When active, it shows the current load of each assignee directly in the swimlanes.To enable it:
  1. Open the board.
  2. Click the Toggle Resource Load visualization button in the upper-left toolbar.
This is a per-session toggle — it does not require widget parameter changes.
Planningboard with per-user capacity tooltip showing available and overallocated hours for each assignee, powered by the Teams Service

Capacity indicator layout reference

Column-level capacity bars for Sprint 3, 4, and 5 at 80%, 60%, and 0% load, and a multi-capacity table breaking down Alice, Bob, and Unassigned hours per sprint

Common pitfalls

If no capacity bar is shown despite capacityLoad = true, verify that:
  • The Plans on the board have a capacity value set in Polarion.
  • The capacityField value (if set) matches an existing, populated field ID exactly — field IDs are case-sensitive.
  • There are no trailing spaces in parameter values (whitespace sensitivity applies).
multiCapacityLoad requires capacityLoad to also be true. Setting only multiCapacityLoad = true without the base capacityLoad flag does not activate capacity bars.
If you change columnTooltipTemplate in a Config Script, you must call scheduler.setCurrentView() at the end of the script. Without this call, the board re-renders on the next data refresh, not immediately.
In a custom tooltip template, available capacity is negative when a resource is overallocated. Display it in red (e.g. style={{color: "red"}}) to make overallocation visible at a glance — this mirrors the built-in overallocation visualization behavior.

Limitations

  • No multi-assignee effort distribution: When a work item has multiple assignees, Planningboard does not split its effort across them. The full effort is attributed to the primary resource. This is a known gap relative to Nextedy GANTT.
  • No sub-item effort rollup: Effort on child work items is not automatically aggregated into a parent’s capacity contribution on the board.
  • Swimlane sort order is coupled to item sort order: You cannot sort swimlane rows by capacity independently of the item sort order.

Verification

After applying your changes, refresh the Planningboard. You should now see:
  • A colored bar in each Plan column header when capacityLoad is enabled.
  • Per-swimlane bars in each cell when multiCapacityLoad is also enabled.
  • The customized tooltip content when hovering over any capacity bar.
If the bars are missing, review the pitfalls above and check Capacity Calculation Issues.

See also

KB Articles
  • Planningboard: Customizable Statistics and Capacity Indicators
  • Customize the content of the card
  • Planningboard interface & basic interactions
Support TicketsSource Code
  • Config.java
  • viewLicense.vm
  • capacityTooltipRendering.cy.ts
  • PlanningBoardDataService.java
  • planningboard.js
Last modified on July 9, 2026