Data & Schema
all4one is designed to be flexible with your data source. It expects a simple input shape and keeps mapping straightforward through the JsonData interface.
Node Schema
A node is the fundamental building block of your chart.
typescript
interface Node {
id: string; // Required: Unique identifier
pid?: string | null; // Optional: Parent Node ID
data: {
label: string; // Required: The name or title
positionName?: string; // Optional: Job title or role
organization?: string; // Optional: Department
photo?: string; // Optional: URL to avatar
[key: string]: any; // Any other custom data fields
}
}The pid Relationship
The hierarchy is built by matching the pid of a node to the id of another node.
- If a node has no
pid(orpidis null), it is considered a Root node. - Multiple root nodes are supported.
Custom Edges (Advanced)
While all4one automatically generates edges based on pid, you can also provide explicit edge definitions for special connections (e.g., dotted lines for dotted-line reporting).
typescript
const data = {
nodes: [...],
edges: [
{
id: 'special-edge-1',
source: 'node-a',
target: 'node-b',
type: 'straight-edge'
}
]
}Performance Tips
Large Datasets
For charts with more than 500 nodes, we recommend:
- Enabling
collapsible: This allows users to focus on specific branches. - Using
tree-offsetlayouts: These are generally more space-efficient for deep hierarchies. - Disabling
edgeAnimated: Constant animations can impact browser performance on very large canvases.