How vizzuhq/vizzu-lib works
Vizzu is a JavaScript/C++ library for building animated, interactive data visualizations and data stories. The principal workflow accepts chart data and channel/geometry settings through the JavaScript API, crosses the WebAssembly-facing interface, updates a chart, and produces canvas output; animation transitions between chart states. The README also describes aggregation, filtering, HTML5 canvas rendering, and interactive exploration, reflected as distinct branches. Wiring among unsampled modules is intentionally limited to documented behavior and clear interface calls.
Main entry points: main/chart.cpp Chart state · ui/chart.cpp Chart widget · chart.ts Chart API · plugins.ts API plugins
Components 21
JavaScript API
- Chart API
src/apps/weblib/ts-api/chart.ts - Vizzu entry
src/apps/weblib/ts-api/vizzu.ts - WASM interface
src/apps/weblib/interface.cpp - C interface
src/apps/weblib/cinterface.cpp
Chart Engine
- Chart widget
src/chart/ui/chart.cpp - Chart state
src/chart/main/chart.cpp - Chart options
src/chart/options/options.cpp - Animation planner
src/chart/animator/planner.cpp
Data Handling
- Data interface
src/dataframe/interface.cpp - Data table
src/dataframe/impl/dataframe.cpp - Aggregation
src/dataframe/impl/aggregators.cpp
Visualization
- Plot generation
src/chart/generator/plotbuilder.cpp - Chart layout
src/chart/main/layout.cpp - Chart drawing
src/chart/rendering/drawchart.cpp
Interaction
- API plugins
src/apps/weblib/ts-api/plugins.ts - Pointer events
src/apps/weblib/ts-api/plugins/pointerevents.ts - Tooltip
src/apps/weblib/ts-api/plugins/tooltip.ts - Chart presets
src/apps/weblib/ts-api/plugins/presets.ts
Other components
- Application
- HTML canvas
- Browser user
Connections 22
- Application → Vizzu entry: creates chart
- Vizzu entry → Chart API: exposes API
- Chart API → WASM interface: calls interface
- WASM interface → C interface: forwards calls
- C interface → Chart widget: dispatches chart actions
- Chart widget → Chart state: updates state
- Chart widget → Animation planner: plans transitions
- Chart widget → Data interface: adds data
- Data interface → Data table: forwards operations
- Data table → Aggregation: uses aggregators
- Plot generation → Data table: reads data
- Chart state → Chart options: uses settings
- Chart state → Plot generation: builds plot
- Chart state → Chart layout: calculates layout
- Chart state → Chart drawing: renders chart
- Chart drawing → HTML canvas: draws output
- Browser user → Pointer events: interacts
- Pointer events → API plugins: dispatches events
- API plugins → Chart API: extends API
- API plugins → Tooltip: enables tooltip
- Application → Chart presets: selects preset
- Chart presets → Chart API: configures chart