@allternit/viz 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +217 -0
- package/dist/charts/canvas-renderer.d.ts +40 -0
- package/dist/charts/canvas-renderer.d.ts.bak +40 -0
- package/dist/charts/canvas-renderer.d.ts.map +1 -0
- package/dist/charts/canvas-renderer.js +580 -0
- package/dist/charts/canvas-renderer.js.bak +580 -0
- package/dist/charts/canvas-renderer.js.map +1 -0
- package/dist/charts/svg-renderer.d.ts +21 -0
- package/dist/charts/svg-renderer.d.ts.bak +21 -0
- package/dist/charts/svg-renderer.d.ts.map +1 -0
- package/dist/charts/svg-renderer.js +285 -0
- package/dist/charts/svg-renderer.js.bak +285 -0
- package/dist/charts/svg-renderer.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.bak +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.bak +35 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +342 -0
- package/dist/types.d.ts.bak +342 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +39 -0
- package/dist/types.js.bak +39 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/data-processor.d.ts +64 -0
- package/dist/utils/data-processor.d.ts.bak +64 -0
- package/dist/utils/data-processor.d.ts.map +1 -0
- package/dist/utils/data-processor.js +326 -0
- package/dist/utils/data-processor.js.bak +326 -0
- package/dist/utils/data-processor.js.map +1 -0
- package/package.json +41 -0
- package/src/charts/canvas-renderer.ts +735 -0
- package/src/charts/canvas-renderer.ts.bak +735 -0
- package/src/charts/svg-renderer.test.ts.bak +837 -0
- package/src/charts/svg-renderer.ts +380 -0
- package/src/charts/svg-renderer.ts.bak +380 -0
- package/src/index.ts +64 -0
- package/src/index.ts.bak +64 -0
- package/src/types.ts +410 -0
- package/src/types.ts.bak +410 -0
- package/src/utils/data-processor.test.ts.bak +720 -0
- package/src/utils/data-processor.ts +420 -0
- package/src/utils/data-processor.ts.bak +420 -0
- package/tsconfig.json +22 -0
package/README.md
ADDED
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
# @allternit/viz
|
|
2
|
+
|
|
3
|
+
A2R Data Visualization - Charts, graphs, and dashboards.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The Visualization package provides chart rendering, dashboard components, and data transformation utilities for the A2R platform. It supports multiple output formats including SVG, Canvas, and React components.
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- **Chart Types**: Line, Bar, Column, Area, Pie, Donut, Scatter, Heatmap
|
|
12
|
+
- **SVG Rendering**: Server-side chart generation
|
|
13
|
+
- **Theming**: Light and dark themes with customizable palettes
|
|
14
|
+
- **Dashboards**: Grid-based dashboard layouts
|
|
15
|
+
- **Data Transforms**: Filter, map, aggregate, sort data pipelines
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
pnpm add @allternit/viz
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Quick Start
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
import { createSVGRenderer } from '@allternit/viz';
|
|
27
|
+
|
|
28
|
+
const renderer = createSVGRenderer();
|
|
29
|
+
|
|
30
|
+
const svg = renderer.render({
|
|
31
|
+
type: 'bar',
|
|
32
|
+
title: 'Monthly Sales',
|
|
33
|
+
width: 800,
|
|
34
|
+
height: 400,
|
|
35
|
+
xAxis: { title: 'Month' },
|
|
36
|
+
yAxis: { title: 'Sales ($)' },
|
|
37
|
+
}, [
|
|
38
|
+
{
|
|
39
|
+
id: 'sales-2024',
|
|
40
|
+
name: 'Sales 2024',
|
|
41
|
+
data: [
|
|
42
|
+
{ x: 'Jan', y: 10000 },
|
|
43
|
+
{ x: 'Feb', y: 15000 },
|
|
44
|
+
{ x: 'Mar', y: 20000 },
|
|
45
|
+
],
|
|
46
|
+
},
|
|
47
|
+
]);
|
|
48
|
+
|
|
49
|
+
// Save or serve SVG
|
|
50
|
+
console.log(svg);
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Chart Types
|
|
54
|
+
|
|
55
|
+
### Line Chart
|
|
56
|
+
```typescript
|
|
57
|
+
const svg = renderer.render({
|
|
58
|
+
type: 'line',
|
|
59
|
+
title: 'Revenue Trend',
|
|
60
|
+
}, [
|
|
61
|
+
{
|
|
62
|
+
id: 'revenue',
|
|
63
|
+
name: 'Revenue',
|
|
64
|
+
data: [
|
|
65
|
+
{ x: 'Q1', y: 100000 },
|
|
66
|
+
{ x: 'Q2', y: 150000 },
|
|
67
|
+
{ x: 'Q3', y: 180000 },
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
]);
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Bar Chart
|
|
74
|
+
```typescript
|
|
75
|
+
const svg = renderer.render({
|
|
76
|
+
type: 'bar',
|
|
77
|
+
title: 'Sales by Region',
|
|
78
|
+
}, [
|
|
79
|
+
{
|
|
80
|
+
id: 'sales',
|
|
81
|
+
name: 'Sales',
|
|
82
|
+
data: [
|
|
83
|
+
{ x: 'North', y: 50000 },
|
|
84
|
+
{ x: 'South', y: 45000 },
|
|
85
|
+
{ x: 'East', y: 60000 },
|
|
86
|
+
{ x: 'West', y: 55000 },
|
|
87
|
+
],
|
|
88
|
+
},
|
|
89
|
+
]);
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Pie Chart
|
|
93
|
+
```typescript
|
|
94
|
+
const svg = renderer.render({
|
|
95
|
+
type: 'pie',
|
|
96
|
+
title: 'Market Share',
|
|
97
|
+
}, [
|
|
98
|
+
{
|
|
99
|
+
id: 'share',
|
|
100
|
+
name: 'Share',
|
|
101
|
+
data: [
|
|
102
|
+
{ name: 'Product A', value: 30 },
|
|
103
|
+
{ name: 'Product B', value: 25 },
|
|
104
|
+
{ name: 'Product C', value: 45 },
|
|
105
|
+
],
|
|
106
|
+
},
|
|
107
|
+
]);
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Configuration
|
|
111
|
+
|
|
112
|
+
### Chart Config
|
|
113
|
+
```typescript
|
|
114
|
+
interface ChartConfig {
|
|
115
|
+
type: ChartType;
|
|
116
|
+
title?: string;
|
|
117
|
+
subtitle?: string;
|
|
118
|
+
width?: number;
|
|
119
|
+
height?: number;
|
|
120
|
+
xAxis?: AxisConfig;
|
|
121
|
+
yAxis?: AxisConfig;
|
|
122
|
+
legend?: LegendConfig;
|
|
123
|
+
tooltip?: TooltipConfig;
|
|
124
|
+
colors?: string[];
|
|
125
|
+
theme?: 'light' | 'dark';
|
|
126
|
+
animation?: boolean;
|
|
127
|
+
dataLabels?: boolean;
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Axis Config
|
|
132
|
+
```typescript
|
|
133
|
+
interface AxisConfig {
|
|
134
|
+
title?: string;
|
|
135
|
+
type?: 'category' | 'number' | 'datetime';
|
|
136
|
+
min?: number;
|
|
137
|
+
max?: number;
|
|
138
|
+
categories?: string[];
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Themes
|
|
143
|
+
|
|
144
|
+
```typescript
|
|
145
|
+
import { palettes } from '@allternit/viz';
|
|
146
|
+
|
|
147
|
+
// Use predefined palette
|
|
148
|
+
const svg = renderer.render({
|
|
149
|
+
type: 'line',
|
|
150
|
+
theme: 'dark',
|
|
151
|
+
}, series);
|
|
152
|
+
|
|
153
|
+
// Custom palette
|
|
154
|
+
const customPalette = {
|
|
155
|
+
primary: ['#ff0000', '#00ff00', '#0000ff'],
|
|
156
|
+
secondary: ['#ffcccc', '#ccffcc', '#ccccff'],
|
|
157
|
+
semantic: {
|
|
158
|
+
success: '#00ff00',
|
|
159
|
+
warning: '#ffff00',
|
|
160
|
+
error: '#ff0000',
|
|
161
|
+
info: '#0000ff',
|
|
162
|
+
},
|
|
163
|
+
background: ['#ffffff', '#f0f0f0'],
|
|
164
|
+
text: {
|
|
165
|
+
primary: '#000000',
|
|
166
|
+
secondary: '#666666',
|
|
167
|
+
muted: '#999999',
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## API Reference
|
|
173
|
+
|
|
174
|
+
### SVG Renderer
|
|
175
|
+
|
|
176
|
+
```typescript
|
|
177
|
+
interface SVGRenderer {
|
|
178
|
+
render(config: ChartConfig, series: DataSeries[]): string;
|
|
179
|
+
getMetadata(type: ChartType): ChartMetadata;
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Data Series
|
|
184
|
+
|
|
185
|
+
```typescript
|
|
186
|
+
interface DataSeries {
|
|
187
|
+
id: string;
|
|
188
|
+
name: string;
|
|
189
|
+
type?: ChartType;
|
|
190
|
+
data: DataPoint[];
|
|
191
|
+
color?: string;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
interface DataPoint {
|
|
195
|
+
x?: string | number | Date;
|
|
196
|
+
y?: number;
|
|
197
|
+
name?: string;
|
|
198
|
+
value?: number;
|
|
199
|
+
}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## Supported Chart Types
|
|
203
|
+
|
|
204
|
+
| Type | Description | Data Structure |
|
|
205
|
+
|------|-------------|----------------|
|
|
206
|
+
| `line` | Line chart | `{ x, y }[]` |
|
|
207
|
+
| `bar` | Bar chart | `{ x, y }[]` |
|
|
208
|
+
| `column` | Column chart | `{ x, y }[]` |
|
|
209
|
+
| `area` | Area chart | `{ x, y }[]` |
|
|
210
|
+
| `pie` | Pie chart | `{ name, value }[]` |
|
|
211
|
+
| `donut` | Donut chart | `{ name, value }[]` |
|
|
212
|
+
| `scatter` | Scatter plot | `{ x, y }[]` |
|
|
213
|
+
| `heatmap` | Heatmap | `{ x, y, value }[]` |
|
|
214
|
+
|
|
215
|
+
## License
|
|
216
|
+
|
|
217
|
+
MIT
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canvas Chart Renderer
|
|
3
|
+
*
|
|
4
|
+
* Renders charts to HTML Canvas with animation support.
|
|
5
|
+
*/
|
|
6
|
+
import type { ChartConfig, DataSeries, ChartMetadata } from '../types';
|
|
7
|
+
export interface CanvasRenderer {
|
|
8
|
+
/** Render chart to canvas */
|
|
9
|
+
render(config: ChartConfig, series: DataSeries[]): HTMLCanvasElement;
|
|
10
|
+
/** Render with animation */
|
|
11
|
+
renderAnimated(config: ChartConfig, series: DataSeries[], duration?: number): Promise<HTMLCanvasElement>;
|
|
12
|
+
/** Get chart metadata */
|
|
13
|
+
getMetadata(type: string): ChartMetadata;
|
|
14
|
+
/** Export to data URL */
|
|
15
|
+
toDataURL(format?: 'png' | 'jpeg', quality?: number): string | null;
|
|
16
|
+
/** Get canvas element */
|
|
17
|
+
getCanvas(): HTMLCanvasElement | null;
|
|
18
|
+
}
|
|
19
|
+
export interface RenderContext {
|
|
20
|
+
ctx: CanvasRenderingContext2D;
|
|
21
|
+
width: number;
|
|
22
|
+
height: number;
|
|
23
|
+
chartWidth: number;
|
|
24
|
+
chartHeight: number;
|
|
25
|
+
margin: {
|
|
26
|
+
top: number;
|
|
27
|
+
right: number;
|
|
28
|
+
bottom: number;
|
|
29
|
+
left: number;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Create Canvas chart renderer
|
|
34
|
+
*/
|
|
35
|
+
export declare function createCanvasRenderer(): CanvasRenderer;
|
|
36
|
+
/**
|
|
37
|
+
* Global Canvas renderer instance
|
|
38
|
+
*/
|
|
39
|
+
export declare const globalCanvasRenderer: CanvasRenderer;
|
|
40
|
+
//# sourceMappingURL=canvas-renderer.d.ts.map
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canvas Chart Renderer
|
|
3
|
+
*
|
|
4
|
+
* Renders charts to HTML Canvas with animation support.
|
|
5
|
+
*/
|
|
6
|
+
import type { ChartConfig, DataSeries, ChartMetadata } from '../types';
|
|
7
|
+
export interface CanvasRenderer {
|
|
8
|
+
/** Render chart to canvas */
|
|
9
|
+
render(config: ChartConfig, series: DataSeries[]): HTMLCanvasElement;
|
|
10
|
+
/** Render with animation */
|
|
11
|
+
renderAnimated(config: ChartConfig, series: DataSeries[], duration?: number): Promise<HTMLCanvasElement>;
|
|
12
|
+
/** Get chart metadata */
|
|
13
|
+
getMetadata(type: string): ChartMetadata;
|
|
14
|
+
/** Export to data URL */
|
|
15
|
+
toDataURL(format?: 'png' | 'jpeg', quality?: number): string | null;
|
|
16
|
+
/** Get canvas element */
|
|
17
|
+
getCanvas(): HTMLCanvasElement | null;
|
|
18
|
+
}
|
|
19
|
+
export interface RenderContext {
|
|
20
|
+
ctx: CanvasRenderingContext2D;
|
|
21
|
+
width: number;
|
|
22
|
+
height: number;
|
|
23
|
+
chartWidth: number;
|
|
24
|
+
chartHeight: number;
|
|
25
|
+
margin: {
|
|
26
|
+
top: number;
|
|
27
|
+
right: number;
|
|
28
|
+
bottom: number;
|
|
29
|
+
left: number;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Create Canvas chart renderer
|
|
34
|
+
*/
|
|
35
|
+
export declare function createCanvasRenderer(): CanvasRenderer;
|
|
36
|
+
/**
|
|
37
|
+
* Global Canvas renderer instance
|
|
38
|
+
*/
|
|
39
|
+
export declare const globalCanvasRenderer: CanvasRenderer;
|
|
40
|
+
//# sourceMappingURL=canvas-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvas-renderer.d.ts","sourceRoot":"","sources":["../../src/charts/canvas-renderer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAa,MAAM,UAAU,CAAC;AAGlF,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,iBAAiB,CAAC;IACrE,4BAA4B;IAC5B,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACzG,yBAAyB;IACzB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC;IACzC,yBAAyB;IACzB,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpE,yBAAyB;IACzB,SAAS,IAAI,iBAAiB,GAAG,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,wBAAwB,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACtE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAurBrD;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,gBAAyB,CAAC"}
|