Skip to main content

syncfusion-javascript-bullet-chart

Create interactive bullet charts in Syncfusion TypeScript and JavaScript. Immediately use this skill when user needs to build bullet charts, visualize performance metrics, create comparative analyses, configure ranges/bars, customize appearance, add interactivity, or implement performance dashboards. Includes range configuration, bar customization, axis control, data binding, animations, and export functionality. Works with TypeScript (webpack/module-based) and JavaScript (CDN/ES5).

Source facts

Repository
syncfusion/javascript-ui-controls-skills
Last source activity
September 15, 2026 at 05:08
Detected SKILL.md language
English
Stars
0
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
11 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
syncfusion-javascript-bullet-chart
description
Create interactive bullet charts in Syncfusion TypeScript and JavaScript. Immediately use this skill when user needs to build bullet charts, visualize performance metrics, create comparative analyses, configure ranges/bars, customize appearance, add interactivity, or implement performance dashboards. Includes range configuration, bar customization, axis control, data binding, animations, and export functionality. Works with TypeScript (webpack/module-based) and JavaScript (CDN/ES5).
metadata
{"author":"Syncfusion Inc","version":"34.1.29","category":"Data Visualization"}
# Implementing Bullet Charts in Syncfusion TypeScript & JavaScript The Syncfusion EJ2 Bullet Chart is a specialized visualization component for comparing actual values against target values within a quantitative scale. Qualitative ranges can provide performance context such as below expectations, approaching target, and target achieved. The Bullet Chart supports: - Single and multiple performance measures. - Actual-value bars. - One or more target markers. - Qualitative performance ranges. - Horizontal and vertical orientations. - Major and minor scale ticks. - Numeric and category labels. - Data labels for actual values. - Tooltip templates. - Animation. - Themes. - Right-to-left rendering. - Browser printing. - Dynamic data updates. - Accessibility and keyboard support. ## Platform Support This skill covers both TypeScript and JavaScript implementations. ### TypeScript TypeScript implementations use: - npm package installation. - Imports from `@syncfusion/ej2-charts`. - Feature-module injection through `BulletChart.Inject(...)`. - Typed data interfaces. - Typed application event handlers. - A bundler such as webpack or Vite. - IDE and compiler support. ### JavaScript JavaScript implementations use: - A consolidated EJ2 CDN script. - Individual CDN package scripts when required. - Locally hosted ES5 scripts where required. - The global `ej.charts` namespace. - Feature-module injection through `ej.charts.BulletChart.Inject(...)`. - No TypeScript compilation step. The configuration model is generally equivalent between TypeScript and JavaScript. Package loading, imports, typing, module injection, and event-listener syntax differ between platforms. ## When to Use This Skill Use this skill when you need to: - **Display performance metrics:** Compare actual values with targets. - **Build KPI dashboards:** Monitor sales, revenue, quality, completion, service levels, or operational metrics. - **Display multiple measures:** Show related performance records with category labels. - **Configure targets:** Display one or more comparative markers. - **Configure qualitative ranges:** Define performance zones such as poor, satisfactory, good, and excellent. - **Customize actual and target measures:** Configure shapes, colors, borders, thickness, and target-marker styles. - **Configure the scale:** Set minimum, maximum, interval, tick placement, label placement, and number formatting. - **Display actual-value labels:** Enable and style Bullet Chart data labels. - **Add tooltips:** Display actual and target values through tooltip templates. - **Support dynamic updates:** Replace data, refresh performance values, and implement polling. - **Customize layout:** Configure orientation, dimensions, responsive behavior, themes, and RTL rendering. - **Print or download output:** Print the report or serialize the rendered SVG for an application-owned download. - **Support accessibility:** Provide keyboard focus, semantic summaries, data tables, contrast, RTL, and live announcements. ## Component Selection Use `BulletChart` when the visualization must compare an actual value against one or more targets within qualitative ranges. Use a regular Cartesian `Chart` instead when the requirement involves: - Value trends over time. - Grouped or stacked comparisons. - Logarithmic axes. - Point selection. - Zooming and panning. - Crosshairs. - Multiple independent axes. - Series-level interactions. - Regular Chart export modules. Use `StockChart` when the application requires a stock-focused financial interface with built-in range selection and period controls. ## Navigation Guide Read only the reference files relevant to the requested task. ### Getting Started 📄 **Read:** [references/getting-started.md](references/getting-started.md) for: - Package installation. - TypeScript setup. - JavaScript CDN setup. - Basic Bullet Chart creation. - Initial data binding. - Tooltip injection. - Container sizing. - Common setup issues. ### Value Bar & Comparative Bar 📄 **Read:** [references/value-bar-and-comparative-bar.md](references/value-bar-and-comparative-bar.md) for: - Actual-value bar configuration. - `Rect` and `Dot` actual-bar shapes. - Actual-bar color mapping. - Actual-bar height and border. - Comparative-marker shapes. - Comparative-marker color and width. - Multiple targets. - Performance-based coloring. - Dynamic bar updates. ### Ranges & Qualitative Scale 📄 **Read:** [references/ranges-and-qualitative-scale.md](references/ranges-and-qualitative-scale.md) for: - Qualitative range boundaries. - Range colors and opacity. - Named ranges. - Range legends and shapes. - Dynamic ranges. - Shared scale requirements. - Performance-zone examples. - Accessible range descriptions. ### Axis Customization 📄 **Read:** [references/axis-customization.md](references/axis-customization.md) for: - Minimum, maximum, and interval. - Major and minor ticks. - Tick placement. - Numeric-label formatting. - Numeric-label placement. - Category-label styling. - Group separators. - Opposed positioning. - Scale and orientation behavior. ### Data Binding & Labels 📄 **Read:** [references/data-binding-and-labels.md](references/data-binding-and-labels.md) for: - Actual, target, and category mappings. - Local and remote data. - Data validation. - Multiple targets. - Dynamic updates. - Real-time data. - API polling. - Actual-value data labels. - Category labels. - Multiple measures. - Accessible summaries and tables. ### Title, Tooltip & Interactivity 📄 **Read:** [references/title-tooltip-and-interactivity.md](references/title-tooltip-and-interactivity.md) for: - Title and subtitle configuration. - Title styling and positioning. - Tooltip module injection. - Tooltip templates. - Tooltip appearance. - Bullet Chart lifecycle events. - Chart-click handling. - Application-owned drill-down controls. - Dynamic title and tooltip updates. ### Customization, Dimensions & Export 📄 **Read:** [references/customization-dimensions-and-export.md](references/customization-dimensions-and-export.md) for: - Horizontal and vertical orientations. - Right-to-left rendering. - Animation and reduced motion. - Themes. - Fixed and percentage dimensions. - Responsive layouts. - SVG serialization. - SVG-to-PNG conversion. - Printing. - Browser Save as PDF workflows. ### Accessibility 📄 **Read:** [references/accessibility.md](references/accessibility.md) for: - WCAG and Section 508 considerations. - Generated WAI-ARIA output. - Documented keyboard interaction. - Keyboard focus. - Semantic text alternatives. - Data tables. - Dynamic update announcements. - Color and contrast. - RTL accessibility. - Automated and manual testing. ## Core Implementation Rules ### Use BulletChart Import: ```typescript import { BulletChart } from '@syncfusion/ej2-charts'; ``` Create the instance: ```typescript const bulletChart: BulletChart = new BulletChart({ dataSource: chartData, valueField: 'value', targetField: 'target' }); bulletChart.appendTo( '#bullet-chart' ); ``` ### Inject Feature Modules Only When Required A basic Bullet Chart does not require module injection. Inject `BulletTooltip` when tooltips are enabled: ```typescript import { BulletChart, BulletTooltip } from '@syncfusion/ej2-charts'; BulletChart.Inject( BulletTooltip ); ``` Inject `BulletChartLegend` when the range legend is enabled: ```typescript import { BulletChart, BulletChartLegend } from '@syncfusion/ej2-charts'; BulletChart.Inject( BulletChartLegend ); ``` Use: ```typescript BulletChart.Inject(...) ``` Do not use: ```typescript Chart.Inject(...) ``` Do not import an unverified module such as: ```typescript BulletLegend ``` Use: ```typescript BulletChartLegend ``` ### Map Data Explicitly Configure: ```typescript dataSource valueField targetField categoryField ``` Example: ```typescript interface PerformanceData { actual: number; goal: number; metric: string; } const chartData: PerformanceData[] = [ { actual: 55, goal: 75, metric: 'Sales' } ]; const bulletChart: BulletChart = new BulletChart({ dataSource: chartData, valueField: 'actual', targetField: 'goal', categoryField: 'metric' }); bulletChart.appendTo( '#bullet-chart' ); ``` Ensure that actual and target values are finite numbers. ### Configure a Valid Scale ```typescript minimum: 0, maximum: 100, interval: 20 ``` Ensure that: - `minimum` is less than `maximum`. - `interval` is greater than zero. - Actual values are included in the scale. - Target values are included in the scale. - Qualitative range endings are ordered. - The final qualitative range normally includes the maximum. ### Use Either Constructor Target or appendTo Constructor target: ```typescript const bulletChart: BulletChart = new BulletChart( { dataSource: chartData, valueField: 'value', targetField: 'target' }, '#bullet-chart' ); ``` `appendTo` pattern: ```typescript const bulletChart: BulletChart = new BulletChart({ dataSource: chartData, valueField: 'value', targetField: 'target' }); bulletChart.appendTo( '#bullet-chart' ); ``` Do not attach the same instance twice. ### Clean Up Resources When permanently removing the Bullet Chart: - Clear intervals. - Clear polling timeouts. - Remove application-owned listeners. - Close streaming connections. - Revoke object URLs. - Call `bulletChart.destroy()`. ## Quick Start Example ### TypeScript Install the package: ```bash npm install @syncfusion/ej2-charts ``` Add the host: ```html <div id="bullet-chart"></div> ``` Add a stable size: ```css #bullet-chart { width: 100%; min-height: 400px; } ``` Create the Bullet Chart: ```typescript import { BulletChart, BulletTooltip } from '@syncfusion/ej2-charts'; BulletChart.Inject( BulletTooltip ); interface PerformanceData { value: number; target: number; category: string; } const chartData: PerformanceData[] = [ { value: 55, target: 75, category: 'Sales Performance' } ]; const bulletChart: BulletChart = new BulletChart({ title: 'Quarter 1 Performance', subtitle: 'Actual sales compared with target', dataSource: chartData, valueField: 'value', targetField: 'target', categoryField: 'category', minimum: 0, maximum: 100, interval: 20, labelFormat: '{value}%', orientation: 'Horizontal', width: '100%', height: '400px', valueFill: '#0F6CBD', targetColor: '#242424', targetWidth: 6, ranges: [ { end: 50, color: '#D13438', opacity: 0.12, name: 'Below expectations' }, { end: 75, color: '#C19C00', opacity: 0.12, name: 'Approaching target' }, { end: 100, color: '#107C10', opacity: 0.12, name: 'Target achieved' } ], tooltip: { enable: true, template: '<div class="bullet-tooltip">' + '<strong>Actual:</strong> ${value}<br>' + '<strong>Target:</strong> ${target}' + '</div>' }, dataLabel: { enable: true, labelStyle: { color: '#242424', size: '13px', fontWeight: '600' } }, animation: { enable: false } }); bulletChart.appendTo( '#bullet-chart' ); window.addEventListener( 'beforeunload', (): void => { bulletChart.destroy(); } ); ``` Module purpose: - `BulletChart` creates the Bullet Chart component. - `BulletTooltip` enables actual and target tooltips. ### JavaScript with Consolidated CDN Script Use a consistent, pinned EJ2 version in production. ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0" > <title> Bullet Chart </title> <script src="https://cdn.syncfusion.com/ej2/34.2.2/dist/ej2.min.js"></script> <style> #bullet-chart { width: 100%; min-height: 400px; } .bullet-tooltip { min-width: 130px; padding: 8px 10px; } </style> </head> <body> <div id="bullet-chart"></div> <script> ej.charts.BulletChart.Inject( ej.charts.BulletTooltip ); var chartData = [ { value: 55, target: 75, category: 'Sales Performance' } ]; var bulletChart = new ej.charts.BulletChart({ title: 'Quarter 1 Performance', subtitle: 'Actual sales compared with target', dataSource: chartData, valueField: 'value', targetField:
View on GitHub
This SKILL.md is very large, so SkillsMP previews the first section here. View on GitHub