Toolforge Docs
DocsBlock OutputsdonutChart

donutChart

Create donut or pie charts to show proportions and percentages in a circular format.

Usage

const chart = block.donutChart({
  title: 'Revenue by Category',
  data: [
    { category: 'Electronics', revenue: 45000 },
    { category: 'Clothing', revenue: 32000 },
    { category: 'Books', revenue: 18000 },
  ],
  category: 'category',
  value: 'revenue',
})

Props

PropDescriptionTypeRequiredDefault
titleChart title displayed above the chartstringNoundefined
descriptionDescription text below the titlestringNoundefined
dataArray of data objects to visualizeT[]Yes
categoryKey of the data object for category labelskeyof TYes
valueKey of the data object for the valueskeyof TYes
colorsColors for each categoryChartColor[]No['blue']
variantChart style'donut' | 'pie'No'donut'
labelText to display in the center (donut only)stringNoundefined
showLabelWhether to show the center labelbooleanNofalse
showTooltipWhether to display tooltips on hoverbooleanNotrue
valueFormatFormat configuration for valuesValueFormatNoundefined

Returns

Returns a DonutChartOutput object that can be returned from a handler or passed to io.message().

Examples

Basic donut chart

return block.donutChart({
  title: 'Expenses by Department',
  data: expenseData,
  category: 'department',
  value: 'amount',
  colors: ['blue', 'emerald', 'amber', 'violet', 'pink'],
})

Pie chart variant

return block.donutChart({
  title: 'Market Share',
  data: marketData,
  category: 'company',
  value: 'share',
  variant: 'pie',
  colors: ['blue', 'emerald', 'amber'],
})

With center label

return block.donutChart({
  title: 'Budget Allocation',
  data: budgetData,
  category: 'category',
  value: 'amount',
  label: 'Total: $125K',
  showLabel: true,
  valueFormat: {
    type: 'currency',
    currency: 'USD',
    notation: 'compact',
  },
})

Percentage display

return block.donutChart({
  title: 'Traffic Sources',
  data: trafficData,
  category: 'source',
  value: 'percentage',
  colors: ['blue', 'emerald', 'amber', 'violet'],
  valueFormat: {
    type: 'percentage',
    decimals: 1,
  },
})

On this page