@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.
Files changed (45) hide show
  1. package/README.md +217 -0
  2. package/dist/charts/canvas-renderer.d.ts +40 -0
  3. package/dist/charts/canvas-renderer.d.ts.bak +40 -0
  4. package/dist/charts/canvas-renderer.d.ts.map +1 -0
  5. package/dist/charts/canvas-renderer.js +580 -0
  6. package/dist/charts/canvas-renderer.js.bak +580 -0
  7. package/dist/charts/canvas-renderer.js.map +1 -0
  8. package/dist/charts/svg-renderer.d.ts +21 -0
  9. package/dist/charts/svg-renderer.d.ts.bak +21 -0
  10. package/dist/charts/svg-renderer.d.ts.map +1 -0
  11. package/dist/charts/svg-renderer.js +285 -0
  12. package/dist/charts/svg-renderer.js.bak +285 -0
  13. package/dist/charts/svg-renderer.js.map +1 -0
  14. package/dist/index.d.ts +34 -0
  15. package/dist/index.d.ts.bak +34 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +35 -0
  18. package/dist/index.js.bak +35 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/types.d.ts +342 -0
  21. package/dist/types.d.ts.bak +342 -0
  22. package/dist/types.d.ts.map +1 -0
  23. package/dist/types.js +39 -0
  24. package/dist/types.js.bak +39 -0
  25. package/dist/types.js.map +1 -0
  26. package/dist/utils/data-processor.d.ts +64 -0
  27. package/dist/utils/data-processor.d.ts.bak +64 -0
  28. package/dist/utils/data-processor.d.ts.map +1 -0
  29. package/dist/utils/data-processor.js +326 -0
  30. package/dist/utils/data-processor.js.bak +326 -0
  31. package/dist/utils/data-processor.js.map +1 -0
  32. package/package.json +41 -0
  33. package/src/charts/canvas-renderer.ts +735 -0
  34. package/src/charts/canvas-renderer.ts.bak +735 -0
  35. package/src/charts/svg-renderer.test.ts.bak +837 -0
  36. package/src/charts/svg-renderer.ts +380 -0
  37. package/src/charts/svg-renderer.ts.bak +380 -0
  38. package/src/index.ts +64 -0
  39. package/src/index.ts.bak +64 -0
  40. package/src/types.ts +410 -0
  41. package/src/types.ts.bak +410 -0
  42. package/src/utils/data-processor.test.ts.bak +720 -0
  43. package/src/utils/data-processor.ts +420 -0
  44. package/src/utils/data-processor.ts.bak +420 -0
  45. 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"}