This webcomponent follows the open-wc recommendation.
npm i @record-evolution/widget-linechartWhen using a bundler, install the widget and its peer dependencies:
npm i @record-evolution/widget-linechart echarts@^6.0.0 tinycolor2@^1.6.0Then import and use:
<script type="module">
import '@record-evolution/widget-linechart/widget-linechart.js'
</script>
<widget-linechart-1.6.27></widget-linechart-1.6.27>The bundler will automatically deduplicate echarts across multiple widgets.
For CDN usage without a bundler, configure an import map with all dependencies:
<script>
// Polyfill for Node.js process.env required by echarts
window.process = { env: { NODE_ENV: 'production' } };
</script>
<script type="importmap">
{
"imports": {
"echarts/core": "https://cdn.jsdelivr.net/npm/echarts@6.0.0/core.js",
"echarts/charts": "https://cdn.jsdelivr.net/npm/echarts@6.0.0/charts.js",
"echarts/components": "https://cdn.jsdelivr.net/npm/echarts@6.0.0/components.js",
"echarts/renderers": "https://cdn.jsdelivr.net/npm/echarts@6.0.0/renderers.js",
"echarts/features": "https://cdn.jsdelivr.net/npm/echarts@6.0.0/features.js",
"zrender/": "https://cdn.jsdelivr.net/npm/zrender@6.0.0/",
"tslib": "https://cdn.jsdelivr.net/npm/tslib@2.8.1/tslib.es6.mjs",
"tinycolor2": "https://cdn.jsdelivr.net/npm/tinycolor2@1.6.0/+esm"
}
}
</script>
<script
type="module"
src="https://cdn.jsdelivr.net/npm/@record-evolution/widget-linechart@1.6.27/dist/widget-linechart.js"
></script>
<widget-linechart-1.6.27></widget-linechart-1.6.27>Note: Version matching is critical - echarts 6.0.0 requires zrender 6.0.0 exactly.
This widget has been optimized to externalize heavy dependencies:
- echarts (^6.0.0) - Chart rendering engine (~300KB)
- tinycolor2 (^1.6.0) - Color manipulation utilities
Bundle size: ~36KB (down from 625KB with bundled echarts)
Please take a look at the src/default-data.json to see what data is expected to make the widget show content.
- Chart types: line, bar, scatter (via
dataseries[].type) - Time series: Set
axis.timeseries: truefor date-based x-axis - Multi-chart: Use
advanced.chartNameto split series into separate charts - Pivot/Split:
data[].pivotauto-generates series per distinct value - Adaptive animation: Animation duration automatically matches data update frequency for smooth continuous transitions
- Dynamic theming: Supports ECharts theme objects
- Efficient data-only updates using
setOption()merge mode - Full rebuild only on configuration changes (detected via config fingerprinting)
- ResizeObserver-based chart resizing (no polling)
- Adaptive animation timing based on actual update intervals
For most of the tools, the configuration is in the package.json to reduce the amount of files in your project.
npm startTo run a local development server that serves the basic demo at http://localhost:8000/demo/