MCPInstall

syncfusion-javascript-accumulation-chart

Implements Syncfusion JavaScript accumulation charts (Pie, Doughnut, Funnel, Pyramid) for proportional and percentage-based visualizations. Use when displaying categorical or proportional data. Covers legend and label configuration, interactivity, accessibility, and customization. Works with TypeScript (modules) and JavaScript (CDN/ES5).

Installs
64
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/syncfusion/javascript-ui-controls-skills --skill syncfusion-javascript-accumulation-chart
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads syncfusion-javascript-accumulation-chart automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Implementing Accumulation Charts in Syncfusion TypeScript and JavaScript

The Syncfusion EJ2 Accumulation Chart visualizes categorical values through Pie, Doughnut, Funnel, and Pyramid presentations.

This skill covers framework-neutral implementations for:

  • TypeScript using npm and ES modules.
  • JavaScript using npm and ES modules.
  • JavaScript using the complete global EJ2 bundle.
  • Pie and Doughnut visualizations.
  • Funnel and Pyramid visualizations.
  • Legends, data labels, tooltips, and annotations.
  • Selection and highlighting.
  • Local and remote data.
  • Dynamic updates.
  • Internal themes.
  • Accessibility, performance, validation, and cleanup.

A separate Syncfusion theme stylesheet is not required solely for the focused Accumulation Chart examples. Apply the visual theme through the chart-level theme property.

Platform Support

TypeScript

Use TypeScript when the application requires:

  • Type definitions and IDE support.
  • npm package management.
  • ES module imports.
  • Explicit feature-module injection.
  • Compile-time validation.
  • A TypeScript-compatible build process.

Install:

npm install @syncfusion/ej2-charts

Import:

import {
    AccumulationChart
} from '@syncfusion/ej2-charts';

Optional features require their corresponding modules to be imported and injected before constructing the chart.

JavaScript with npm and ES Modules

Use module-based JavaScript when the application uses:

  • npm.
  • ES module imports.
  • A bundler.
  • Explicit AccumulationChart.Inject(...) calls.

Install:

npm install @syncfusion/ej2-charts

Import:

import {
    AccumulationChart
} from '@syncfusion/ej2-charts';

Global JavaScript

Use global JavaScript when the application uses:

  • A versioned EJ2 global bundle.
  • Traditional HTML and JavaScript files.
  • The ej.charts.AccumulationChart constructor.
  • No TypeScript compilation.

Use the versioned complete bundle:

<script src="https://cdn.syncfusion.com/ej2/34.2.2/dist/ej2.min.js"></script>

Do not call AccumulationChart.Inject(...) when using the complete global EJ2 bundle.

Browser compatibility must follow the supported-browser matrix of the installed EJ2 version.

When to Use This Skill

Use this skill when a task requires:

  • Creating a Pie Chart.
  • Creating a Doughnut Chart.
  • Creating a Funnel Chart.
  • Creating a Pyramid Chart.
  • Displaying categorical contributions to a whole.
  • Displaying proportional composition.
  • Displaying sequential funnel stages.
  • Displaying hierarchical Pyramid segments.
  • Adding legends.
  • Adding data labels.
  • Adding tooltips.
  • Adding a Doughnut center label.
  • Exploding points.
  • Grouping small points.
  • Handling empty points.
  • Enabling selection or highlighting.
  • Adding annotations.
  • Applying colors, gradients, or palettes.
  • Binding local or remote data.
  • Dynamically updating data.
  • Supporting accessible interpretation.
  • Validating performance and cleanup.

Use another visualization when it communicates the data more accurately:

  • Use a Bar or Column Chart for precise comparisons between similar values.
  • Use a Line Chart for trends over time.
  • Use a Funnel Chart only when stage order is meaningful.
  • Use a Pie or Doughnut Chart only when the relationship to a whole is meaningful.

Accumulation Chart Types

Pie

Use Pie to show categorical contributions to a whole.

type:
    'Pie'

Doughnut

A Doughnut Chart uses a Pie series with a nonzero innerRadius.

type:
    'Pie',

innerRadius:
    '40%'

Do not use:

type:
    'Doughnut'

unless the installed API explicitly introduces that series value.

Funnel

Use Funnel for ordered stages, pipelines, or conversion processes.

type:
    'Funnel'

Pyramid

Use Pyramid for proportional or hierarchical segments.

type:
    'Pyramid'

Navigation Guide

Choose the reference that matches the task.

Getting Started

📄 Read: references/getting-started.md

Use this reference for:

  • Package installation.
  • TypeScript imports.
  • Module injection.
  • JavaScript bundle setup.
  • Host creation and validation.
  • Basic Pie Chart creation.
  • Internal theme configuration.
  • Complete TypeScript and JavaScript examples.
  • Runtime validation.
  • Basic troubleshooting.

Chart Types and Selection

📄 Read: references/chart-types.md

Use this reference for:

  • Pie Charts.
  • Doughnut Charts.
  • Funnel Charts.
  • Pyramid Charts.
  • Series-specific module injection.
  • Radius and inner radius.
  • Funnel neck dimensions.
  • Pyramid modes.
  • Gap ratios.
  • Choosing the appropriate chart type.

Legend Configuration

📄 Read: references/legend-configuration.md

Use this reference for:

  • Legend visibility.
  • Legend position.
  • Alignment.
  • Legend titles.
  • Text styles.
  • Point toggling.
  • Responsive legend behavior.
  • Legend interaction.
  • Legend accessibility.

Data Labels

📄 Read: references/data-labels.md

Use this reference for:

  • Enabling data labels.
  • Inside and outside labels.
  • Label field mapping.
  • Value and percentage labels.
  • Connector lines.
  • Smart labels.
  • Text trimming and wrapping.
  • Label templates.
  • Overlap prevention.

Tooltips and Selection

📄 Read: references/tooltips-and-selection.md

Use this reference for:

  • Accumulation tooltips.
  • Tooltip formatting.
  • Tooltip templates.
  • Point selection.
  • Multiple selection when supported.
  • Selection patterns.
  • Highlighting.
  • Interaction events.
  • Persistent details outside tooltips.

Annotations and Features

📄 Read: references/annotations-and-features.md

Use this reference for:

  • Annotations.
  • Doughnut center labels.
  • Point explosion.
  • Point grouping.
  • Empty-point handling.
  • Point color mapping.
  • Gradient fills.
  • Start and end angles.
  • Pie-center positioning.
  • Funnel neck configuration.
  • Pyramid modes.

Customization and Styling

📄 Read: references/customization-and-styling.md

Use this reference for:

  • Internal themes.
  • Palettes.
  • Series fills.
  • Borders.
  • Opacity.
  • Backgrounds.
  • Titles and subtitles.
  • Application-owned CSS.
  • Responsive dimensions.
  • Validated print and export functionality.

Accessibility and Advanced Features

📄 Read: references/accessibility-and-advanced.md

Use this reference for:

  • Semantic descriptions.
  • Persistent text alternatives.
  • Semantic data tables.
  • Accessibility configuration.
  • Series descriptions.
  • Focus visibility.
  • Keyboard and screen-reader testing.
  • Dynamic updates.
  • Animation.
  • Performance.
  • Remote data.
  • Cleanup.
  • Troubleshooting.

Do not copy APIs from ordinary Cartesian Chart without validating their Accumulation Chart-specific modules and models.

Feature Module Reference

Import and inject only the modules required by the implementation.

Pie and Doughnut -> PieSeries
Funnel           -> FunnelSeries
Pyramid          -> PyramidSeries
Data labels      -> AccumulationDataLabel
Legend           -> AccumulationLegend
Tooltip          -> AccumulationTooltip
Selection        -> AccumulationSelection
Highlight        -> AccumulationHighlight
Annotations      -> AccumulationAnnotation
Print            -> Validated Accumulation Chart print module
Image export     -> Validated Accumulation Chart image-export module
PDF export       -> Validated Accumulation Chart PDF-export module

Validate optional module names against the installed @syncfusion/ej2-charts declarations.

TypeScript Module Injection

A Pie Chart with labels, a legend, and a tooltip requires:

import {
    AccumulationChart,
    AccumulationDataLabel,
    AccumulationLegend,
    AccumulationTooltip,
    PieSeries
} from '@syncfusion/ej2-charts';

AccumulationChart.Inject(
    PieSeries,
    AccumulationDataLabel,
    AccumulationLegend,
    AccumulationTooltip
);

A minimal Pie Chart requires:

import {
    AccumulationChart,
    PieSeries
} from '@syncfusion/ej2-charts';

AccumulationChart.Inject(
    PieSeries
);

A Funnel Chart requires:

import {
    AccumulationChart,
    FunnelSeries
} from '@syncfusion/ej2-charts';

AccumulationChart.Inject(
    FunnelSeries
);

A Pyramid Chart requires:

import {
    AccumulationChart,
    PyramidSeries
} from '@syncfusion/ej2-charts';

AccumulationChart.Inject(
    PyramidSeries
);

Keep imports and injection synchronized.

Do not use the ordinary Chart tooltip module:

Tooltip

Use:

AccumulationTooltip

Host and Dimensions

Use a consistent host:

<div id="accumulation-chart"></div>

Provide measurable dimensions:

.chart-wrapper {
    width: 100%;
    max-width: 1000px;
    margin: 0 auto;
}

#accumulation-chart {
    width: 100%;
    min-height: 500px;
}

Validate the host:

const host:
    HTMLElement | null =
        document.getElementById(
            'accumulation-chart'
        );

if (!host) {
    throw new Error(
        'The Accumulation Chart host "#accumulation-chart" was not found.'
    );
}

Prefer explicit construction and attachment:

const chart:
    AccumulationChart =
        new AccumulationChart({
            // Configuration
        });

chart.appendTo(
    host
);

Data Model and Validation

Use a typed model:

interface CategoryShare {
    category: string;
    value: number;
    label: string;
}

Define meaningful data:

const chartData:
    CategoryShare[] = [
        {
            category:
                'January',
            value:
                22,
            label:
                'January: 22%'
        },
        {
            category:
                'February',
            value:
                24,
            label:
                'February: 24%'
        },
        {
            category:
                'March',
            value:
                26,
            label:
                'March: 26%'
        },
        {
            category:
                'April',
            value:
                28,
            label:
                'April: 28%'
        }
    ];

Validate before rendering:

const validateCategoryShares = (
    data:
        CategoryShare[],
    requirePercentageTotal:
        boolean
): void => {
    if (
        data.length ===
        0
    ) {
        throw new Error(
            'The Accumulation Chart requires at least one data point.'
        );
    }

    const categories:
        Set<string> =
            new Set<string>();

    let positiveValueFound:
        boolean =
            false;

    let total:
        number =
            0;

    data.forEach(
        (
            item:
                CategoryShare,
            index:
                number
        ): void => {
            const category:
                string =
                    item.category.trim();

            if (!category) {
                throw new Error(
                    'Data point ' +
                    index +
                    ' requires a category.'
                );
            }

            if (
                categories.has(
                    category
                )
            ) {
                throw new Error(
                    'Duplicate category: ' +
                    category
                );
            }

            if (
                !Number.isFinite(
                    item.value
                ) ||
                item.value < 0
            ) {
                throw new Error(
                    'Data point "' +
                    category +
                    '" requires a finite nonnegative value.'
                );
            }

            if (
                item.value > 0
            ) {
                positiveValueFound =
                    true;
            }

            if (
                !item.label.trim()
            ) {
                throw new Error(
                    'Data point "' +
                    category +
                    '" requires a label.'
                );
            }

            total +=
                item.value;

            categories.add(
                category
            );
        }
    );

    if (
        !positiveValueFound
    ) {
        throw new Error(
            'At least one data point must have a positive value.'
        );
    }

    if (
        requirePercentageTotal &&
        Math.abs(
            total -
            100
        ) >
        0.0001
    ) {
        throw new Error(
            'Percentage data must total 100.'
        );
    }
};

Call validation:

validateCategoryShares(
    chartData,
    true
);

Do not require a total of 100 when the chart displays raw values rather than percentages.

Quick Start Example

TypeScript

import {
    AccumulationChart,
    AccumulationDataLabel,
    AccumulationLegend,
    AccumulationTooltip,
    PieSeries
} from '@syncfusion/ej2-charts';

interface CategoryShare {
    category: string;
    value: number;
    label: string;
}

AccumulationChart.Inject(
    PieSeries,
    AccumulationDataLabel,
    AccumulationLegend,
    AccumulationTooltip
);

const chartData:
    CategoryShare[] = [
        {
            category:
                'January',
            value:
                22,
            label:
                'January: 22%'
        },
        {
            category:
                'February',
            value:
                24,
            label:
                'February: 24%'
        },
        {
            category:
                'March',
            value:
                26,
            label:
                'March: 26%'
        },
        {
            category:
                'April',
            value:
                28,
            label:
                'April: 28%'
        }
    ];

const host:
    HTMLElement | null =
        document.getElementById(
            'accumulation-chart'
        );

if (!host) {
    throw new Error(
        'The Accumulation Chart host was not found.'
    );
}

const chart:
    AccumulationChart =
        new AccumulationChart({
            width:
                '100%',

            height:
                '500px',

            theme:
                'Fluent2',

            title:
                'Monthly Distribution',

            series: [
                {
                    dataSource:
                        chartData,
                    xName:
                        'category',
                    yName:
                        'value',
                    type:
                        'Pie',
                    name:
                        'Distribution',

                    dataLabel: {
                        visible:
                            true,
                        position:
                            'Outside',
                        name:
                            'label'
                    }
                }
            ],

            tooltip: {
                enable:
                    true
            },

            legendSettings: {
                visible:
                    true,
                position:
                    'Right'
            }
        });

chart.appendTo(
    host
);

A separate Syncfusion theme stylesheet is not required solely for this focused Accumulation Chart example.

JavaScript with the Complete Bundle

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">

    <meta
        name="viewport"
        content="width=device-width, initial-scale=1.0"
    >

    <title>EJ2 Accumulation Chart</title>

    <script src="https://cdn.syncfusion.com/ej2/34.2.2/dist/ej2.min.js"></script>

    <style>
        #accumulation-chart {
            width: 100%;
            min-height: 500px;
        }
    </style>
</head>

<body>
    <div id="accumulation-chart"></div>

    <script>
        if (
            typeof window.ej ===
                'undefined' ||
            !window.ej.charts ||
            !window.ej.charts.AccumulationChart
        ) {
            throw new Error(
                'The EJ2 Accumulation Chart global bundle was not loaded.'
            );
        }

        var chartData = [
            {
                category:
                    'January',
                value:
                    22,
                label:
                    'January: 22%'
            },
            {
                category:
                    'February',
                value:
                    24,
                label:
                    'February: 24%'
            },
            {
                category:
                    'March',
                value:
                    26,
                label:
                    'March: 26%'
            },
            {
                category:
                    'April',
                value:
                    28,
                label:
                    'April: 28%'
            }
        ];

        var chart =
            new ej.charts.AccumulationChart({
                width:
                    '100%',

                height:
                    '500px',

                theme:
                    'Fluent2',

                title:
                    'Monthly Distribution',

                series: [
                    {
                        dataSource:
                            chartData,
                        xName:
                            'category',
                        yName:
                            'value',
                        type:
                            'Pie',
                        name:
                            'Distribution',

                        dataLabel: {
                            visible:
                                true,
                            position:
                                'Outside',
                            name:
                                'label'
                        }
                    }
                ],

                tooltip: {
                    enable:
                        true
                },

                legendSettings: {
                    visible:
                        true,
                    position:
                        'Right'
                }
            });

        chart.appendTo(
            '#accumulation-chart'
        );
    </script>
</body>
</html>

Do not call AccumulationChart.Inject(...) with the complete global bundle.

Common Patterns

Basic Pie Chart with Legend

const chart:
    AccumulationChart =
        new AccumulationChart({
            series: [
                {
                    dataSource:
                        chartData,
                    xName:
                        'category',
                    yName:
                        'value',
                    type:
                        'Pie'
                }
            ],

            legendSettings: {
                visible:
                    true,
                position:
                    'Right'
            }
        });

chart.appendTo(
    '#accumulation-chart'
);

Doughnut Chart with Center Label

Use a Pie series with innerRadius:

const chart:
    AccumulationChart =
        new AccumulationChart({
            series: [
                {
                    dataSource:
                        chartData,
                    xName:
                        'category',
                    yName:
                        'value',
                    type:
                        'Pie',
                    innerRadius:
                        '40%'
                }
            ],

            centerLabel: {
                text:
                    'Sales',
                hoverTextFormat:
                    '${point.x}: ${point.y}'
            }
        });

chart.appendTo(
    '#accumulation-chart'
);

Do not use:

type:
    'Doughnut'

The center label is intended for Pie or Doughnut-style visualizations.

Funnel Chart

import {
    AccumulationChart,
    AccumulationDataLabel,
    FunnelSeries
} from '@syncfusion/ej2-charts';

AccumulationChart.Inject(
    FunnelSeries,
    AccumulationDataLabel
);

interface FunnelStage {
    stage: string;
    users: number;
    label: string;
}

const stageData:
    FunnelStage[] = [
        {
            stage:
                'Visited',
            users:
                1000,
            label:
                'Visited: 1,000'
        },
        {
            stage:
                'Downloaded',
            users:
                760,
            label:
                'Downloaded: 760'
        },
        {
            stage:
                'Subscribed',
            users:
                420,
            label:
                'Subscribed: 420'
        },
        {
            stage:
                'Renewed',
            users:
                190,
            label:
                'Renewed: 190'
        }
    ];

const chart:
    AccumulationChart =
        new AccumulationChart({
            series: [
                {
                    dataSource:
                        stageData,
                    xName:
                        'stage',
                    yName:
                        'users',
                    type:
                        'Funnel',
                    width:
                        '70%',
                    height:
                        '80%',
                    neckWidth:
                        '15%',
                    neckHeight:
                        '5%',
                    gapRatio:
                        0.08,

                    dataLabel: {
                        visible:
                            true,
                        position:
                            'Inside',
                        name:
                            'label'
                    }
                }
            ]
        });

chart.appendTo(
    '#accumulation-chart'
);

A Funnel Chart does not automatically calculate conversion rates. Calculate rates in application code when required.

Pyramid Chart

import {
    AccumulationChart,
    AccumulationDataLabel,
    PyramidSeries
} from '@syncfusion/ej2-charts';

AccumulationChart.Inject(
    PyramidSeries,
    AccumulationDataLabel
);

const chart:
    AccumulationChart =
        new AccumulationChart({
            series: [
                {
                    dataSource:
                        chartData,
                    xName:
                        'category',
                    yName:
                        'value',
                    type:
                        'Pyramid',
                    pyramidMode:
                        'Linear',
                    gapRatio:
                        0.05,

                    dataLabel: {
                        visible:
                            true,
                        position:
                            'Inside',
                        name:
                            'label'
                    }
                }
            ]
        });

chart.appendTo(
    '#accumulation-chart'
);

Use a validated Pyramid mode such as:

Linear
Surface

Do not add:

reverse:
    true

unless the installed Pyramid model explicitly supports it.

Data Labels

Import and inject:

import {
    AccumulationDataLabel
} from '@syncfusion/ej2-charts';

AccumulationChart.Inject(
    AccumulationDataLabel
);

Configure labels inside the series:

dataLabel: {
    visible:
        true,
    position:
        'Outside',
    name:
        'label'
}

Do not configure accumulation data labels at the chart root.

Use percentage labels only when the application values represent percentages or when the percentage has been calculated correctly.

Tooltips

Import and inject:

import {
    AccumulationTooltip
} from '@syncfusion/ej2-charts';

AccumulationChart.Inject(
    AccumulationTooltip
);

Enable:

tooltip: {
    enable:
        true,
    format:
        '${point.x}: ${point.y}'
}

Executable HTML can be used only when supported and necessary:

format:
    '${point.x}: <b>${point.y}</b>'

Do not use encoded HTML:

format:
    '${point.x}: &lt;b&gt;${point.y}&lt;/b&gt;'

Do not append % unless the values are percentages.

Selection

Import and inject:

import {
    AccumulationSelection
} from '@syncfusion/ej2-charts';

AccumulationChart.Inject(
    AccumulationSelection
);

Configure a selection mode validated by the installed Accumulation Chart model.

selectionMode:
    'Point'

Validate selection patterns and multiple-selection support before documenting them.

Do not assume ordinary Cartesian Chart series-selection behavior applies identically.

Highlighting

Import and inject:

import {
    AccumulationHighlight
} from '@syncfusion/ej2-charts';

AccumulationChart.Inject(
    AccumulationHighlight
);

Configure only modes and patterns supported by the installed package.

Do not enable highlighting solely as decoration when it reduces contrast or readability.

Annotations

Import and inject:

import {
    AccumulationAnnotation
} from '@syncfusion/ej2-charts';

AccumulationChart.Inject(
    AccumulationAnnotation
);

Annotations and Doughnut center labels are different features.

Use annotations for contextual HTML content positioned relative to the chart.

Use centerLabel for content displayed in a Doughnut-like center.

Do not make annotation content the only source of essential information.

Point Colors

Map point colors from data when required:

interface CategoryShare {
    category: string;
    value: number;
    color: string;
}

series: [
    {
        dataSource:
            chartData,
        xName:
            'category',
        yName:
            'value',
        pointColorMapping:
            'color',
        type:
            'Pie'
    }
]

Do not list an ordinary Chart marker property as a universal Accumulation series option.

Pie, Funnel, and Pyramid points are rendered as segments, not Cartesian markers.

Exploding Points

Enable point explosion:

series: [
    {
        type:
            'Pie',
        explode:
            true,
        explodeIndex:
            0,
        explodeOffset:
            '10%'
    }
]

Use explosion sparingly. Excessive separated segments can make the whole harder to interpret.

Funnel and Pyramid Gap Validation

Validate gapRatio:

const validateGapRatio = (
    value:
        number
): void => {
    if (
        !Number.isFinite(
            value
        ) ||
        value < 0 ||
        value > 1
    ) {
        throw new Error(
            'The gap ratio must be between 0 and 1.'
        );
    }
};

Internal Theme and Application CSS

Apply a built-in chart theme:

theme:
    'Fluent2'

A separate Syncfusion theme package or stylesheet is not required solely for the focused Accumulation Chart examples.

Use application-owned CSS for:

  • Host dimensions.
  • Page backgrounds.
  • Card layouts.
  • Text summaries.
  • Data tables.
  • External buttons.
  • Responsive spacing.

Example:

.chart-card {
    width: 100%;
    max-width: 1000px;
    margin: 0 auto;
    padding: 20px;
    background: #ffffff;
    border: 1px solid #cbd5e1;
    border-radius: 12px;
}

#accumulation-chart {
    width: 100%;
    min-height: 500px;
}

Validate the selected theme against the installed Accumulation Chart theme model.

Dynamic Data Updates

Replace the series data source:

chart.series[0]
    .dataSource =
        updatedData;

chart.dataBind();

Update the title:

chart.title =
    'Updated Distribution';

chart.dataBind();

Batch changes:

chart.title =
    'Updated Distribution';

chart.series[0]
    .dataSource =
        updatedData;

chart.dataBind();

Use dataBind() for ordinary property changes.

Use refresh() when:

  • The host dimensions change.
  • A hidden parent becomes visible.
  • The chart type changes substantially.
  • A complete layout recalculation is required.

Accessibility Guidance

Support accessible implementation through:

  • A semantic heading.
  • A concise chart description.
  • Persistent text summaries.
  • A semantic data table.
  • Meaningful category labels.
  • Sufficient contrast.
  • Visible focus for external controls.
  • Keyboard and screen-reader testing.
  • Browser zoom and responsive reflow testing.
  • Tooltips as supplemental content.
  • Alternatives to color-only communication.

Do not claim automatic WCAG compliance.

Do not rely only on:

  • Segment color.
  • Segment angle.
  • Slice area.
  • Funnel width.
  • Pyramid position.
  • Hover tooltips.

Provide a table for exact values:

<table>
    <caption>
        Category distribution
    </caption>

    <thead>
        <tr>
            <th scope="col">Category</th>
            <th scope="col">Value</th>
        </tr>
    </thead>

    <tbody>
        <tr>
            <th scope="row">January</th>
            <td>22%</td>
        </tr>
    </tbody>
</table>

Validate the chart-level and series-level accessibility models against the installed package before configuring advanced accessibility properties.

Performance and Cleanup

  • Validate data before rendering.
  • Limit category counts.
  • Group small points when appropriate.
  • Keep tooltip templates simple.
  • Keep data-label templates simple.
  • Avoid unnecessary animations.
  • Handle empty and zero values intentionally.
  • Batch updates.
  • Call dataBind() once after related changes.
  • Use refresh() only for layout recalculation.
  • Remove application-owned listeners.
  • Clear timers.
  • Cancel pending remote requests.
  • Destroy the chart when its dynamic host is removed.
chart.destroy();

Runtime Validation Checklist

✅ @syncfusion/ej2-charts is installed.
✅ No external theme package is required solely for AccumulationChart.
✅ A supported built-in theme is configured through theme.
✅ AccumulationChart is imported.
✅ PieSeries is injected for Pie and Doughnut.
✅ FunnelSeries is injected for Funnel.
✅ PyramidSeries is injected for Pyramid.
✅ AccumulationDataLabel is injected when labels are visible.
✅ AccumulationLegend is injected when the legend is visible.
✅ AccumulationTooltip is injected when tooltips are enabled.
✅ AccumulationSelection is injected when selection is enabled.
✅ AccumulationHighlight is injected 

FAQ

What does the syncfusion-javascript-accumulation-chart skill do?

Implements Syncfusion JavaScript accumulation charts (Pie, Doughnut, Funnel, Pyramid) for proportional and percentage-based visualizations. Use when displaying categorical or proportional data. Covers legend and label configuration, interactivity, accessibility, and customization. Works with TypeScript (modules) and JavaScript (CDN/ES5).

How do I install syncfusion-javascript-accumulation-chart?

Run npx skills add https://github.com/syncfusion/javascript-ui-controls-skills --skill syncfusion-javascript-accumulation-chart in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/syncfusion-javascript-accumulation-chart/ (personal) or .claude/skills/syncfusion-javascript-accumulation-chart/ (project).

Which AI agents can use syncfusion-javascript-accumulation-chart?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is syncfusion-javascript-accumulation-chart safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains syncfusion-javascript-accumulation-chart?

It is published by syncfusion in syncfusion/javascript-ui-controls-skills. It has 64 recorded installs.

More from syncfusion/javascript-ui-controls-skills

View all →

syncfusion-javascript-grid

syncfusion/javascript-ui-controls-skills

Implements Syncfusion JavaScript Grid component for feature-rich data tables and grids. Use this when working with data display, sorting, filtering, grouping, aggregates, editing, or exporting. This skill covers grid configuration, CRUD operations, virtual scrolling, hierarchy grids, state persistence, and advanced data management features for data-intensive applications.

syncfusion-javascript-common

syncfusion/javascript-ui-controls-skills

Common utilities and features for Syncfusion JavaScript controls. Use this skill when the user needs to implement animations, drag-and-drop, state persistence, RTL support, localization, globalization, security, templates, and advanced features for Syncfusion JavaScript controls.

syncfusion-javascript-dropdowns

syncfusion/javascript-ui-controls-skills

Comprehensive guide for implementing Syncfusion TypeScript dropdown components including AutoComplete, ComboBox, Mention, Dropdownlist, Multiselect, ListBox, and MultiColumn ComboBox. Use this when building selection interfaces, data binding, filtering, cascading dropdowns, dual list transfer, custom templates, and accessible dropdown experiences.

syncfusion-javascript-license

syncfusion/javascript-ui-controls-skills

Open the skill to read its SKILL.md instructions.

syncfusion-javascript-popups

syncfusion/javascript-ui-controls-skills

Open the skill to read its SKILL.md instructions.

syncfusion-javascript-tab

syncfusion/javascript-ui-controls-skills

This skill enables creating and customizing Syncfusion TypeScript Tab components, including tab navigation, tab headers, styling, responsive layouts, dynamic content loading, animations, and multi-panel organization.

Popular frontend & design skills

View category →

setup-matt-pocock-skills

mattpocock/skills

Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.

Frontend & Design1.1M installs

frontend-design

anthropics/skills

Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.

OfficialFrontend & Design1M installs

hyperframes-animation

heygen-com/hyperframes

All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition's choreography (animation map) and 24 named text-animation effects. HyperFrames-native: single paused timeline, seek-safe, deterministic.

prototype

mattpocock/skills

Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.

Frontend & Design999.2K installs

hyperframes-core

heygen-com/hyperframes

The HyperFrames composition contract — build one renderable project. Use for composition structure, the data- timing attributes, class="clip", tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Read before writing composition HTML.

Frontend & Design930.5K installs

vercel-react-best-practices

vercel-labs/agent-skills

React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.

OfficialFrontend & Design843.1K installs