@smallwebco/tinypivot-core 1.0.24 → 1.0.26
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/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/pivot/index.d.ts +81 -4
- package/dist/pivot/index.d.ts.map +1 -1
- package/dist/pivot/index.js +484 -71
- package/dist/pivot/index.js.map +1 -1
- package/dist/types/index.d.ts +32 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -4,9 +4,10 @@
|
|
|
4
4
|
*
|
|
5
5
|
* @packageDocumentation
|
|
6
6
|
*/
|
|
7
|
-
export type { ColumnStats, GridOptions, AggregationFunction, PivotField, PivotValueField, PivotConfig, PivotCell, PivotResult, FieldStats, DataGridProps, PivotTableProps, LicenseType, LicenseInfo, LicenseFeatures, FilterEvent, SortEvent, CellClickEvent, SelectionChangeEvent, RowSelectionChangeEvent, ExportEvent, CopyEvent, PaginationOptions, ExportOptions, SelectionBounds, ColumnFilter, ActiveFilter, } from './types';
|
|
7
|
+
export type { ColumnStats, GridOptions, AggregationFunction, PivotField, PivotValueField, PivotConfig, PivotCell, PivotResult, FieldStats, CustomAggregationFn, CalculatedField, DataGridProps, PivotTableProps, LicenseType, LicenseInfo, LicenseFeatures, FilterEvent, SortEvent, CellClickEvent, SelectionChangeEvent, RowSelectionChangeEvent, ExportEvent, CopyEvent, PaginationOptions, ExportOptions, SelectionBounds, ColumnFilter, ActiveFilter, } from './types';
|
|
8
8
|
export { detectColumnType, detectFieldType, getColumnUniqueValues, formatCellValue, formatNumber, makeKey, parseKey, naturalSort, debounce, clamp, } from './utils';
|
|
9
|
-
export { aggregate, formatAggregatedValue, getAggregationLabel, getAggregationSymbol, AGGREGATION_OPTIONS, computeAvailableFields, getUnassignedFields, isPivotConfigured, computePivotResult, generateStorageKey, savePivotConfig, loadPivotConfig, isConfigValidForFields, } from './pivot';
|
|
9
|
+
export { aggregate, formatAggregatedValue, getAggregationLabel, getAggregationSymbol, AGGREGATION_OPTIONS, computeAvailableFields, getUnassignedFields, isPivotConfigured, computePivotResult, generateStorageKey, savePivotConfig, loadPivotConfig, isConfigValidForFields, saveCalculatedFields, loadCalculatedFields, addCalculatedField, removeCalculatedField, FORMULA_FUNCTIONS, parseFormula, evaluateFormula, formatCalculatedValue, validateFormula, CALCULATED_FIELD_PRESETS, parseSimpleFormula, validateSimpleFormula, evaluateSimpleFormula, } from './pivot';
|
|
10
|
+
export type { FormulaFunction } from './pivot';
|
|
10
11
|
export { validateLicenseKey, configureLicenseSecret, getDemoLicenseInfo, getFreeLicenseInfo, canUsePivot, isPro, shouldShowWatermark, logProRequired, } from './license';
|
|
11
12
|
export { exportToCSV, exportPivotToCSV, copyToClipboard, formatSelectionForClipboard, } from './export';
|
|
12
13
|
export type { PivotExportData } from './export';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EAEV,WAAW,EACX,WAAW,EAGX,mBAAmB,EACnB,UAAU,EACV,eAAe,EACf,WAAW,EACX,SAAS,EACT,WAAW,EACX,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EAEV,WAAW,EACX,WAAW,EAGX,mBAAmB,EACnB,UAAU,EACV,eAAe,EACf,WAAW,EACX,SAAS,EACT,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,eAAe,EAGf,aAAa,EACb,eAAe,EAGf,WAAW,EACX,WAAW,EACX,eAAe,EAGf,WAAW,EACX,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,uBAAuB,EACvB,WAAW,EACX,SAAS,EAGT,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,YAAY,GACb,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,KAAK,GACN,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,sBAAsB,EAEtB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EAErB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,wBAAwB,EAExB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,SAAS,CAAA;AAChB,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAG9C,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,KAAK,EACL,mBAAmB,EACnB,cAAc,GACf,MAAM,WAAW,CAAA;AAGlB,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,2BAA2B,GAC5B,MAAM,UAAU,CAAA;AACjB,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,13 @@
|
|
|
7
7
|
// Utility Functions
|
|
8
8
|
export { detectColumnType, detectFieldType, getColumnUniqueValues, formatCellValue, formatNumber, makeKey, parseKey, naturalSort, debounce, clamp, } from './utils';
|
|
9
9
|
// Pivot Table Logic
|
|
10
|
-
export { aggregate, formatAggregatedValue, getAggregationLabel, getAggregationSymbol, AGGREGATION_OPTIONS, computeAvailableFields, getUnassignedFields, isPivotConfigured, computePivotResult, generateStorageKey, savePivotConfig, loadPivotConfig, isConfigValidForFields,
|
|
10
|
+
export { aggregate, formatAggregatedValue, getAggregationLabel, getAggregationSymbol, AGGREGATION_OPTIONS, computeAvailableFields, getUnassignedFields, isPivotConfigured, computePivotResult, generateStorageKey, savePivotConfig, loadPivotConfig, isConfigValidForFields,
|
|
11
|
+
// Calculated Fields Storage
|
|
12
|
+
saveCalculatedFields, loadCalculatedFields, addCalculatedField, removeCalculatedField,
|
|
13
|
+
// Calculated Fields & Formulas
|
|
14
|
+
FORMULA_FUNCTIONS, parseFormula, evaluateFormula, formatCalculatedValue, validateFormula, CALCULATED_FIELD_PRESETS,
|
|
15
|
+
// Simple Formula (field-level calculations)
|
|
16
|
+
parseSimpleFormula, validateSimpleFormula, evaluateSimpleFormula, } from './pivot';
|
|
11
17
|
// License Management
|
|
12
18
|
export { validateLicenseKey, configureLicenseSecret, getDemoLicenseInfo, getFreeLicenseInfo, canUsePivot, isPro, shouldShowWatermark, logProRequired, } from './license';
|
|
13
19
|
// Export Utilities
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6CH,oBAAoB;AACpB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,KAAK,GACN,MAAM,SAAS,CAAA;AAEhB,oBAAoB;AACpB,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,sBAAsB;AACtB,4BAA4B;AAC5B,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB;AACrB,+BAA+B;AAC/B,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,wBAAwB;AACxB,4CAA4C;AAC5C,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,SAAS,CAAA;AAGhB,qBAAqB;AACrB,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,KAAK,EACL,mBAAmB,EACnB,cAAc,GACf,MAAM,WAAW,CAAA;AAElB,mBAAmB;AACnB,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,2BAA2B,GAC5B,MAAM,UAAU,CAAA"}
|
package/dist/pivot/index.d.ts
CHANGED
|
@@ -2,11 +2,16 @@
|
|
|
2
2
|
* TinyPivot Core - Pivot Table Logic
|
|
3
3
|
* Pure pivot table computation with no framework dependencies
|
|
4
4
|
*/
|
|
5
|
-
import type { AggregationFunction, FieldStats, PivotConfig, PivotResult, PivotValueField } from '../types';
|
|
5
|
+
import type { AggregationFunction, CalculatedField, CustomAggregationFn, FieldStats, PivotConfig, PivotResult, PivotValueField } from '../types';
|
|
6
6
|
/**
|
|
7
7
|
* Aggregate values based on function type
|
|
8
|
+
* @param values - Array of values to aggregate
|
|
9
|
+
* @param fn - Aggregation function to apply
|
|
10
|
+
* @param grandTotal - Optional grand total for percentOfTotal calculation
|
|
11
|
+
* @param customFn - Optional custom aggregation function
|
|
12
|
+
* @param allFieldValues - Optional all field values for cross-field custom calculations
|
|
8
13
|
*/
|
|
9
|
-
export declare function aggregate(values: number[], fn: AggregationFunction): number | null;
|
|
14
|
+
export declare function aggregate(values: number[], fn: AggregationFunction, grandTotal?: number, customFn?: CustomAggregationFn, allFieldValues?: Record<string, number[]>): number | null;
|
|
10
15
|
/**
|
|
11
16
|
* Format aggregated value for display
|
|
12
17
|
*/
|
|
@@ -14,11 +19,11 @@ export declare function formatAggregatedValue(value: number | null, fn: Aggregat
|
|
|
14
19
|
/**
|
|
15
20
|
* Get aggregation function display label
|
|
16
21
|
*/
|
|
17
|
-
export declare function getAggregationLabel(fn: AggregationFunction): string;
|
|
22
|
+
export declare function getAggregationLabel(fn: AggregationFunction, customLabel?: string): string;
|
|
18
23
|
/**
|
|
19
24
|
* Get aggregation function symbol
|
|
20
25
|
*/
|
|
21
|
-
export declare function getAggregationSymbol(fn: AggregationFunction): string;
|
|
26
|
+
export declare function getAggregationSymbol(fn: AggregationFunction, customSymbol?: string): string;
|
|
22
27
|
/**
|
|
23
28
|
* Aggregation options for UI
|
|
24
29
|
*/
|
|
@@ -27,6 +32,62 @@ export declare const AGGREGATION_OPTIONS: Array<{
|
|
|
27
32
|
label: string;
|
|
28
33
|
symbol: string;
|
|
29
34
|
}>;
|
|
35
|
+
/**
|
|
36
|
+
* Supported functions in calculated field formulas
|
|
37
|
+
*/
|
|
38
|
+
export declare const FORMULA_FUNCTIONS: readonly ["SUM", "AVG", "MIN", "MAX", "COUNT", "MEDIAN"];
|
|
39
|
+
export type FormulaFunction = typeof FORMULA_FUNCTIONS[number];
|
|
40
|
+
/**
|
|
41
|
+
* Parse a formula and extract field references
|
|
42
|
+
* e.g., "SUM(revenue) / SUM(units)" -> [{fn: 'SUM', field: 'revenue'}, {fn: 'SUM', field: 'units'}]
|
|
43
|
+
*/
|
|
44
|
+
export declare function parseFormula(formula: string): Array<{
|
|
45
|
+
fn: FormulaFunction;
|
|
46
|
+
field: string;
|
|
47
|
+
}>;
|
|
48
|
+
/**
|
|
49
|
+
* Evaluate a calculated field formula with aggregated values
|
|
50
|
+
* @param formula - Formula string like "SUM(revenue) / SUM(units) * 100"
|
|
51
|
+
* @param aggregatedValues - Map of "FN(field)" to aggregated value
|
|
52
|
+
* @returns Calculated value or null if evaluation fails
|
|
53
|
+
*/
|
|
54
|
+
export declare function evaluateFormula(formula: string, aggregatedValues: Record<string, number | null>): number | null;
|
|
55
|
+
/**
|
|
56
|
+
* Format calculated field value based on format type
|
|
57
|
+
*/
|
|
58
|
+
export declare function formatCalculatedValue(value: number | null, formatAs?: 'number' | 'percent' | 'currency', decimals?: number): string;
|
|
59
|
+
/**
|
|
60
|
+
* Validate a calculated field formula
|
|
61
|
+
* @returns Error message if invalid, null if valid
|
|
62
|
+
*/
|
|
63
|
+
export declare function validateFormula(formula: string, availableFields: string[]): string | null;
|
|
64
|
+
/**
|
|
65
|
+
* Parse a simple formula to extract field references (no aggregation functions)
|
|
66
|
+
* e.g., "sales / units" -> ["sales", "units"]
|
|
67
|
+
*/
|
|
68
|
+
export declare function parseSimpleFormula(formula: string): string[];
|
|
69
|
+
/**
|
|
70
|
+
* Validate a simple formula (field math, no aggregation functions)
|
|
71
|
+
*/
|
|
72
|
+
export declare function validateSimpleFormula(formula: string, availableFields: string[]): string | null;
|
|
73
|
+
/**
|
|
74
|
+
* Evaluate a simple formula for a single row of data
|
|
75
|
+
*/
|
|
76
|
+
export declare function evaluateSimpleFormula(formula: string, row: Record<string, unknown>, fieldNames: string[]): number | null;
|
|
77
|
+
/**
|
|
78
|
+
* Create common calculated field presets
|
|
79
|
+
*/
|
|
80
|
+
export declare const CALCULATED_FIELD_PRESETS: ({
|
|
81
|
+
name: string;
|
|
82
|
+
formula: string;
|
|
83
|
+
formatAs: "percent";
|
|
84
|
+
description: string;
|
|
85
|
+
} | {
|
|
86
|
+
name: string;
|
|
87
|
+
formula: string;
|
|
88
|
+
formatAs: "currency";
|
|
89
|
+
description: string;
|
|
90
|
+
})[];
|
|
30
91
|
/**
|
|
31
92
|
* Compute available fields from data
|
|
32
93
|
*/
|
|
@@ -59,4 +120,20 @@ export declare function loadPivotConfig(key: string): PivotConfig | null;
|
|
|
59
120
|
* Check if config fields exist in available fields
|
|
60
121
|
*/
|
|
61
122
|
export declare function isConfigValidForFields(config: PivotConfig, availableFieldNames: string[]): boolean;
|
|
123
|
+
/**
|
|
124
|
+
* Save calculated fields to localStorage (persists across sessions)
|
|
125
|
+
*/
|
|
126
|
+
export declare function saveCalculatedFields(fields: CalculatedField[]): void;
|
|
127
|
+
/**
|
|
128
|
+
* Load calculated fields from localStorage
|
|
129
|
+
*/
|
|
130
|
+
export declare function loadCalculatedFields(): CalculatedField[];
|
|
131
|
+
/**
|
|
132
|
+
* Add a calculated field to storage
|
|
133
|
+
*/
|
|
134
|
+
export declare function addCalculatedField(field: CalculatedField): CalculatedField[];
|
|
135
|
+
/**
|
|
136
|
+
* Remove a calculated field from storage
|
|
137
|
+
*/
|
|
138
|
+
export declare function removeCalculatedField(id: string): CalculatedField[];
|
|
62
139
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pivot/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,mBAAmB,EACnB,UAAU,EAEV,WAAW,EACX,WAAW,EACX,eAAe,EAChB,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pivot/index.ts"],"names":[],"mappings":"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"}
|
package/dist/pivot/index.js
CHANGED
|
@@ -1,9 +1,33 @@
|
|
|
1
1
|
import { detectFieldType, makeKey, parseKey } from '../utils';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate median of an array
|
|
4
|
+
*/
|
|
5
|
+
function calculateMedian(values) {
|
|
6
|
+
const sorted = [...values].sort((a, b) => a - b);
|
|
7
|
+
const mid = Math.floor(sorted.length / 2);
|
|
8
|
+
return sorted.length % 2 !== 0
|
|
9
|
+
? sorted[mid]
|
|
10
|
+
: (sorted[mid - 1] + sorted[mid]) / 2;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Calculate standard deviation of an array
|
|
14
|
+
*/
|
|
15
|
+
function calculateStdDev(values) {
|
|
16
|
+
const mean = values.reduce((a, b) => a + b, 0) / values.length;
|
|
17
|
+
const squaredDiffs = values.map(v => (v - mean) ** 2);
|
|
18
|
+
const avgSquaredDiff = squaredDiffs.reduce((a, b) => a + b, 0) / values.length;
|
|
19
|
+
return Math.sqrt(avgSquaredDiff);
|
|
20
|
+
}
|
|
2
21
|
/**
|
|
3
22
|
* Aggregate values based on function type
|
|
23
|
+
* @param values - Array of values to aggregate
|
|
24
|
+
* @param fn - Aggregation function to apply
|
|
25
|
+
* @param grandTotal - Optional grand total for percentOfTotal calculation
|
|
26
|
+
* @param customFn - Optional custom aggregation function
|
|
27
|
+
* @param allFieldValues - Optional all field values for cross-field custom calculations
|
|
4
28
|
*/
|
|
5
|
-
export function aggregate(values, fn) {
|
|
6
|
-
if (values.length === 0)
|
|
29
|
+
export function aggregate(values, fn, grandTotal, customFn, allFieldValues) {
|
|
30
|
+
if (values.length === 0 && fn !== 'custom')
|
|
7
31
|
return null;
|
|
8
32
|
switch (fn) {
|
|
9
33
|
case 'sum':
|
|
@@ -18,6 +42,26 @@ export function aggregate(values, fn) {
|
|
|
18
42
|
return Math.max(...values);
|
|
19
43
|
case 'countDistinct':
|
|
20
44
|
return new Set(values).size;
|
|
45
|
+
case 'median':
|
|
46
|
+
return calculateMedian(values);
|
|
47
|
+
case 'stdDev':
|
|
48
|
+
return calculateStdDev(values);
|
|
49
|
+
case 'percentOfTotal': {
|
|
50
|
+
const sum = values.reduce((a, b) => a + b, 0);
|
|
51
|
+
if (grandTotal === undefined || grandTotal === 0)
|
|
52
|
+
return null;
|
|
53
|
+
return (sum / grandTotal) * 100;
|
|
54
|
+
}
|
|
55
|
+
case 'custom':
|
|
56
|
+
if (customFn) {
|
|
57
|
+
try {
|
|
58
|
+
return customFn(values, allFieldValues);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
21
65
|
default:
|
|
22
66
|
return values.reduce((a, b) => a + b, 0);
|
|
23
67
|
}
|
|
@@ -31,6 +75,12 @@ export function formatAggregatedValue(value, fn) {
|
|
|
31
75
|
if (fn === 'count' || fn === 'countDistinct') {
|
|
32
76
|
return Math.round(value).toLocaleString();
|
|
33
77
|
}
|
|
78
|
+
if (fn === 'percentOfTotal') {
|
|
79
|
+
return `${value.toFixed(1)}%`;
|
|
80
|
+
}
|
|
81
|
+
if (fn === 'stdDev') {
|
|
82
|
+
return value.toLocaleString('en-US', { maximumFractionDigits: 2 });
|
|
83
|
+
}
|
|
34
84
|
if (Math.abs(value) >= 1000) {
|
|
35
85
|
return value.toLocaleString('en-US', { maximumFractionDigits: 2 });
|
|
36
86
|
}
|
|
@@ -39,7 +89,9 @@ export function formatAggregatedValue(value, fn) {
|
|
|
39
89
|
/**
|
|
40
90
|
* Get aggregation function display label
|
|
41
91
|
*/
|
|
42
|
-
export function getAggregationLabel(fn) {
|
|
92
|
+
export function getAggregationLabel(fn, customLabel) {
|
|
93
|
+
if (fn === 'custom' && customLabel)
|
|
94
|
+
return customLabel;
|
|
43
95
|
const labels = {
|
|
44
96
|
sum: 'Sum',
|
|
45
97
|
count: 'Count',
|
|
@@ -47,13 +99,19 @@ export function getAggregationLabel(fn) {
|
|
|
47
99
|
min: 'Min',
|
|
48
100
|
max: 'Max',
|
|
49
101
|
countDistinct: 'Count Distinct',
|
|
102
|
+
median: 'Median',
|
|
103
|
+
stdDev: 'Std Dev',
|
|
104
|
+
percentOfTotal: '% of Total',
|
|
105
|
+
custom: 'Custom',
|
|
50
106
|
};
|
|
51
107
|
return labels[fn];
|
|
52
108
|
}
|
|
53
109
|
/**
|
|
54
110
|
* Get aggregation function symbol
|
|
55
111
|
*/
|
|
56
|
-
export function getAggregationSymbol(fn) {
|
|
112
|
+
export function getAggregationSymbol(fn, customSymbol) {
|
|
113
|
+
if (fn === 'custom' && customSymbol)
|
|
114
|
+
return customSymbol;
|
|
57
115
|
const symbols = {
|
|
58
116
|
sum: 'Σ',
|
|
59
117
|
count: '#',
|
|
@@ -61,6 +119,10 @@ export function getAggregationSymbol(fn) {
|
|
|
61
119
|
min: '↓',
|
|
62
120
|
max: '↑',
|
|
63
121
|
countDistinct: '◇',
|
|
122
|
+
median: 'M̃',
|
|
123
|
+
stdDev: 'σ',
|
|
124
|
+
percentOfTotal: '%Σ',
|
|
125
|
+
custom: 'ƒ',
|
|
64
126
|
};
|
|
65
127
|
return symbols[fn];
|
|
66
128
|
}
|
|
@@ -74,6 +136,223 @@ export const AGGREGATION_OPTIONS = [
|
|
|
74
136
|
{ value: 'min', label: 'Min', symbol: '↓' },
|
|
75
137
|
{ value: 'max', label: 'Max', symbol: '↑' },
|
|
76
138
|
{ value: 'countDistinct', label: 'Unique', symbol: '◇' },
|
|
139
|
+
{ value: 'median', label: 'Median', symbol: 'M̃' },
|
|
140
|
+
{ value: 'stdDev', label: 'Std Dev', symbol: 'σ' },
|
|
141
|
+
{ value: 'percentOfTotal', label: '% of Total', symbol: '%Σ' },
|
|
142
|
+
];
|
|
143
|
+
// ============================================
|
|
144
|
+
// Calculated Fields & Formula Parsing
|
|
145
|
+
// ============================================
|
|
146
|
+
/**
|
|
147
|
+
* Supported functions in calculated field formulas
|
|
148
|
+
*/
|
|
149
|
+
export const FORMULA_FUNCTIONS = ['SUM', 'AVG', 'MIN', 'MAX', 'COUNT', 'MEDIAN'];
|
|
150
|
+
/**
|
|
151
|
+
* Parse a formula and extract field references
|
|
152
|
+
* e.g., "SUM(revenue) / SUM(units)" -> [{fn: 'SUM', field: 'revenue'}, {fn: 'SUM', field: 'units'}]
|
|
153
|
+
*/
|
|
154
|
+
export function parseFormula(formula) {
|
|
155
|
+
const regex = /(SUM|AVG|MIN|MAX|COUNT|MEDIAN)\s*\(\s*([^)]+)\s*\)/gi;
|
|
156
|
+
const matches = [];
|
|
157
|
+
let match;
|
|
158
|
+
while ((match = regex.exec(formula)) !== null) {
|
|
159
|
+
matches.push({
|
|
160
|
+
fn: match[1].toUpperCase(),
|
|
161
|
+
field: match[2].trim(),
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
return matches;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Evaluate a calculated field formula with aggregated values
|
|
168
|
+
* @param formula - Formula string like "SUM(revenue) / SUM(units) * 100"
|
|
169
|
+
* @param aggregatedValues - Map of "FN(field)" to aggregated value
|
|
170
|
+
* @returns Calculated value or null if evaluation fails
|
|
171
|
+
*/
|
|
172
|
+
export function evaluateFormula(formula, aggregatedValues) {
|
|
173
|
+
try {
|
|
174
|
+
// Replace function calls with their values
|
|
175
|
+
let expression = formula;
|
|
176
|
+
for (const [key, value] of Object.entries(aggregatedValues)) {
|
|
177
|
+
if (value === null)
|
|
178
|
+
return null;
|
|
179
|
+
// Escape special regex characters in key and replace
|
|
180
|
+
const escaped = key.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
181
|
+
expression = expression.replace(new RegExp(escaped, 'gi'), String(value));
|
|
182
|
+
}
|
|
183
|
+
// Safety check - only allow numbers, operators, parentheses, and whitespace
|
|
184
|
+
if (!/^[\d\s.+\-*/()]+$/.test(expression)) {
|
|
185
|
+
console.warn('Invalid formula expression:', expression);
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
// Evaluate the expression
|
|
189
|
+
// Using Function constructor for safe math evaluation
|
|
190
|
+
const result = new Function(`return (${expression})`)();
|
|
191
|
+
if (typeof result !== 'number' || !Number.isFinite(result)) {
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
return result;
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
console.warn('Formula evaluation error:', error);
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Format calculated field value based on format type
|
|
203
|
+
*/
|
|
204
|
+
export function formatCalculatedValue(value, formatAs, decimals = 2) {
|
|
205
|
+
if (value === null)
|
|
206
|
+
return '-';
|
|
207
|
+
switch (formatAs) {
|
|
208
|
+
case 'percent':
|
|
209
|
+
return `${value.toFixed(decimals)}%`;
|
|
210
|
+
case 'currency':
|
|
211
|
+
return value.toLocaleString('en-US', {
|
|
212
|
+
style: 'currency',
|
|
213
|
+
currency: 'USD',
|
|
214
|
+
minimumFractionDigits: decimals,
|
|
215
|
+
maximumFractionDigits: decimals,
|
|
216
|
+
});
|
|
217
|
+
default:
|
|
218
|
+
return value.toLocaleString('en-US', {
|
|
219
|
+
minimumFractionDigits: 0,
|
|
220
|
+
maximumFractionDigits: decimals,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Validate a calculated field formula
|
|
226
|
+
* @returns Error message if invalid, null if valid
|
|
227
|
+
*/
|
|
228
|
+
export function validateFormula(formula, availableFields) {
|
|
229
|
+
if (!formula.trim()) {
|
|
230
|
+
return 'Formula cannot be empty';
|
|
231
|
+
}
|
|
232
|
+
const references = parseFormula(formula);
|
|
233
|
+
if (references.length === 0) {
|
|
234
|
+
return 'Formula must contain at least one function like SUM(field)';
|
|
235
|
+
}
|
|
236
|
+
// Case-insensitive field matching
|
|
237
|
+
const lowerFields = availableFields.map(f => f.toLowerCase());
|
|
238
|
+
for (const ref of references) {
|
|
239
|
+
const fieldLower = ref.field.toLowerCase();
|
|
240
|
+
if (!lowerFields.includes(fieldLower)) {
|
|
241
|
+
return `Unknown field: ${ref.field}`;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
// Try to evaluate with dummy values to check syntax
|
|
245
|
+
const dummyValues = {};
|
|
246
|
+
for (const ref of references) {
|
|
247
|
+
dummyValues[`${ref.fn}(${ref.field})`] = 1;
|
|
248
|
+
}
|
|
249
|
+
const result = evaluateFormula(formula, dummyValues);
|
|
250
|
+
if (result === null) {
|
|
251
|
+
return 'Invalid formula syntax';
|
|
252
|
+
}
|
|
253
|
+
return null;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Parse a simple formula to extract field references (no aggregation functions)
|
|
257
|
+
* e.g., "sales / units" -> ["sales", "units"]
|
|
258
|
+
*/
|
|
259
|
+
export function parseSimpleFormula(formula) {
|
|
260
|
+
// Match word characters that could be field names (not operators or numbers)
|
|
261
|
+
const matches = formula.match(/[a-zA-Z_][a-zA-Z0-9_]*/g) || [];
|
|
262
|
+
// Filter out common keywords/operators
|
|
263
|
+
const keywords = ['true', 'false', 'null', 'undefined'];
|
|
264
|
+
return [...new Set(matches.filter(m => !keywords.includes(m.toLowerCase())))];
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Validate a simple formula (field math, no aggregation functions)
|
|
268
|
+
*/
|
|
269
|
+
export function validateSimpleFormula(formula, availableFields) {
|
|
270
|
+
if (!formula.trim()) {
|
|
271
|
+
return 'Formula is required';
|
|
272
|
+
}
|
|
273
|
+
const referencedFields = parseSimpleFormula(formula);
|
|
274
|
+
if (referencedFields.length === 0) {
|
|
275
|
+
return 'Formula must reference at least one field';
|
|
276
|
+
}
|
|
277
|
+
// Case-insensitive field matching
|
|
278
|
+
const lowerFields = availableFields.map(f => f.toLowerCase());
|
|
279
|
+
for (const field of referencedFields) {
|
|
280
|
+
if (!lowerFields.includes(field.toLowerCase())) {
|
|
281
|
+
return `Unknown field: ${field}`;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
// Test that the formula is valid JavaScript
|
|
285
|
+
try {
|
|
286
|
+
// Replace field names with dummy values
|
|
287
|
+
let testExpr = formula;
|
|
288
|
+
for (const field of referencedFields) {
|
|
289
|
+
const escaped = field.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
290
|
+
testExpr = testExpr.replace(new RegExp(`\\b${escaped}\\b`, 'gi'), '1');
|
|
291
|
+
}
|
|
292
|
+
// eslint-disable-next-line no-new-func
|
|
293
|
+
new Function(`return ${testExpr}`);
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
return 'Invalid formula syntax';
|
|
297
|
+
}
|
|
298
|
+
return null;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Evaluate a simple formula for a single row of data
|
|
302
|
+
*/
|
|
303
|
+
export function evaluateSimpleFormula(formula, row, fieldNames) {
|
|
304
|
+
try {
|
|
305
|
+
const referencedFields = parseSimpleFormula(formula);
|
|
306
|
+
let expression = formula;
|
|
307
|
+
for (const field of referencedFields) {
|
|
308
|
+
// Find actual field name (case-insensitive)
|
|
309
|
+
const actualField = fieldNames.find(f => f.toLowerCase() === field.toLowerCase()) || field;
|
|
310
|
+
const value = row[actualField];
|
|
311
|
+
if (value === null || value === undefined || value === '') {
|
|
312
|
+
return null; // Can't compute if any referenced field is missing
|
|
313
|
+
}
|
|
314
|
+
const num = typeof value === 'number' ? value : Number.parseFloat(String(value));
|
|
315
|
+
if (Number.isNaN(num)) {
|
|
316
|
+
return null;
|
|
317
|
+
}
|
|
318
|
+
// Replace field name with value
|
|
319
|
+
const escaped = field.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
320
|
+
expression = expression.replace(new RegExp(`\\b${escaped}\\b`, 'gi'), String(num));
|
|
321
|
+
}
|
|
322
|
+
// Safety check - only allow numbers, operators, parentheses
|
|
323
|
+
if (!/^[\d\s+\-*/().]+$/.test(expression)) {
|
|
324
|
+
return null;
|
|
325
|
+
}
|
|
326
|
+
// eslint-disable-next-line no-new-func
|
|
327
|
+
const result = new Function(`return ${expression}`)();
|
|
328
|
+
return typeof result === 'number' && Number.isFinite(result) ? result : null;
|
|
329
|
+
}
|
|
330
|
+
catch {
|
|
331
|
+
return null;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Create common calculated field presets
|
|
336
|
+
*/
|
|
337
|
+
export const CALCULATED_FIELD_PRESETS = [
|
|
338
|
+
{
|
|
339
|
+
name: 'Profit Margin %',
|
|
340
|
+
formula: 'SUM(profit) / SUM(revenue) * 100',
|
|
341
|
+
formatAs: 'percent',
|
|
342
|
+
description: 'Profit as percentage of revenue',
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
name: 'Average Price',
|
|
346
|
+
formula: 'SUM(revenue) / SUM(units)',
|
|
347
|
+
formatAs: 'currency',
|
|
348
|
+
description: 'Revenue per unit sold',
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
name: 'Growth Rate',
|
|
352
|
+
formula: '(SUM(current) - SUM(previous)) / SUM(previous) * 100',
|
|
353
|
+
formatAs: 'percent',
|
|
354
|
+
description: 'Percentage change between periods',
|
|
355
|
+
},
|
|
77
356
|
];
|
|
78
357
|
/**
|
|
79
358
|
* Compute available fields from data
|
|
@@ -105,15 +384,25 @@ export function isPivotConfigured(config) {
|
|
|
105
384
|
* Build pivot result from data and config
|
|
106
385
|
*/
|
|
107
386
|
export function computePivotResult(data, config) {
|
|
108
|
-
const { rowFields, columnFields, valueFields, showRowTotals, showColumnTotals } = config;
|
|
387
|
+
const { rowFields, columnFields, valueFields, showRowTotals, showColumnTotals, calculatedFields } = config;
|
|
109
388
|
if (!isPivotConfigured(config))
|
|
110
389
|
return null;
|
|
111
390
|
if (data.length === 0)
|
|
112
391
|
return null;
|
|
392
|
+
// Build a map of calculated field IDs to their definitions
|
|
393
|
+
const calcFieldMap = new Map();
|
|
394
|
+
if (calculatedFields) {
|
|
395
|
+
for (const cf of calculatedFields) {
|
|
396
|
+
calcFieldMap.set(cf.id, cf);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
// Get all field names from data for formula evaluation
|
|
400
|
+
const allDataFieldNames = data.length > 0 ? Object.keys(data[0]) : [];
|
|
113
401
|
// Collect unique row and column keys
|
|
114
402
|
const rowKeySet = new Set();
|
|
115
403
|
const colKeySet = new Set();
|
|
116
404
|
// Group data by row and column keys
|
|
405
|
+
// Each value field (regular or calculated) gets its own array of values
|
|
117
406
|
const dataMap = new Map();
|
|
118
407
|
for (const row of data) {
|
|
119
408
|
const rowKey = rowFields.length > 0 ? makeKey(row, rowFields) : '__all__';
|
|
@@ -131,29 +420,82 @@ export function computePivotResult(data, config) {
|
|
|
131
420
|
// Collect values for each value field
|
|
132
421
|
for (let i = 0; i < valueFields.length; i++) {
|
|
133
422
|
const vf = valueFields[i];
|
|
134
|
-
|
|
135
|
-
if (
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
423
|
+
let num = null;
|
|
424
|
+
if (vf.field.startsWith('calc:')) {
|
|
425
|
+
// Calculated field - evaluate formula for this row
|
|
426
|
+
const calcId = vf.field.replace('calc:', '');
|
|
427
|
+
const calcDef = calcFieldMap.get(calcId);
|
|
428
|
+
if (calcDef) {
|
|
429
|
+
num = evaluateSimpleFormula(calcDef.formula, row, allDataFieldNames);
|
|
139
430
|
}
|
|
140
|
-
|
|
141
|
-
|
|
431
|
+
}
|
|
432
|
+
else {
|
|
433
|
+
// Regular field - get value directly
|
|
434
|
+
const val = row[vf.field];
|
|
435
|
+
if (val !== null && val !== undefined && val !== '') {
|
|
436
|
+
num = typeof val === 'number' ? val : Number.parseFloat(String(val));
|
|
437
|
+
if (Number.isNaN(num)) {
|
|
438
|
+
num = (vf.aggregation === 'count' || vf.aggregation === 'countDistinct') ? 1 : null;
|
|
439
|
+
}
|
|
142
440
|
}
|
|
143
441
|
}
|
|
442
|
+
if (num !== null) {
|
|
443
|
+
valueArrays[i].push(num);
|
|
444
|
+
}
|
|
144
445
|
}
|
|
145
446
|
}
|
|
146
447
|
// Sort keys
|
|
147
448
|
const rowKeys = Array.from(rowKeySet).sort();
|
|
148
449
|
const colKeys = Array.from(colKeySet).sort();
|
|
450
|
+
// Pre-calculate grand totals for percentOfTotal calculations
|
|
451
|
+
const grandTotals = valueFields.map((vf, i) => {
|
|
452
|
+
let total = 0;
|
|
453
|
+
for (const row of data) {
|
|
454
|
+
let num = null;
|
|
455
|
+
if (vf.field.startsWith('calc:')) {
|
|
456
|
+
const calcId = vf.field.replace('calc:', '');
|
|
457
|
+
const calcDef = calcFieldMap.get(calcId);
|
|
458
|
+
if (calcDef) {
|
|
459
|
+
num = evaluateSimpleFormula(calcDef.formula, row, allDataFieldNames);
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
else {
|
|
463
|
+
const val = row[vf.field];
|
|
464
|
+
if (val !== null && val !== undefined && val !== '') {
|
|
465
|
+
num = typeof val === 'number' ? val : Number.parseFloat(String(val));
|
|
466
|
+
if (Number.isNaN(num))
|
|
467
|
+
num = null;
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
if (num !== null)
|
|
471
|
+
total += num;
|
|
472
|
+
}
|
|
473
|
+
return total;
|
|
474
|
+
});
|
|
475
|
+
// Helper to get value field display label
|
|
476
|
+
function getValueFieldLabel(vf) {
|
|
477
|
+
if (vf.field.startsWith('calc:')) {
|
|
478
|
+
const calcId = vf.field.replace('calc:', '');
|
|
479
|
+
const calcDef = calcFieldMap.get(calcId);
|
|
480
|
+
const name = calcDef?.name || vf.field;
|
|
481
|
+
return `${name} (${getAggregationLabel(vf.aggregation)})`;
|
|
482
|
+
}
|
|
483
|
+
return `${vf.label || vf.field} (${getAggregationLabel(vf.aggregation)})`;
|
|
484
|
+
}
|
|
149
485
|
// Build column headers
|
|
486
|
+
// When there are multiple value fields, each column header must be repeated
|
|
487
|
+
// for each value field so the headers align with the data columns
|
|
150
488
|
const headers = [];
|
|
151
489
|
if (columnFields.length > 0) {
|
|
490
|
+
const repeatCount = valueFields.length > 1 ? valueFields.length : 1;
|
|
152
491
|
for (let level = 0; level < columnFields.length; level++) {
|
|
153
492
|
const headerRow = [];
|
|
154
493
|
for (const colKey of colKeys) {
|
|
155
494
|
const parts = parseKey(colKey);
|
|
156
|
-
|
|
495
|
+
// Repeat header for each value field
|
|
496
|
+
for (let i = 0; i < repeatCount; i++) {
|
|
497
|
+
headerRow.push(parts[level] || '');
|
|
498
|
+
}
|
|
157
499
|
}
|
|
158
500
|
headers.push(headerRow);
|
|
159
501
|
}
|
|
@@ -163,11 +505,11 @@ export function computePivotResult(data, config) {
|
|
|
163
505
|
const valueLabels = [];
|
|
164
506
|
for (const colKey of colKeys) {
|
|
165
507
|
for (const vf of valueFields) {
|
|
166
|
-
valueLabels.push(
|
|
508
|
+
valueLabels.push(getValueFieldLabel(vf));
|
|
167
509
|
}
|
|
168
510
|
}
|
|
169
511
|
if (colKeys.length === 1 && colKeys[0] === '__all__') {
|
|
170
|
-
headers.push(valueFields.map(vf =>
|
|
512
|
+
headers.push(valueFields.map(vf => getValueFieldLabel(vf)));
|
|
171
513
|
}
|
|
172
514
|
else {
|
|
173
515
|
headers.push(valueLabels);
|
|
@@ -182,90 +524,107 @@ export function computePivotResult(data, config) {
|
|
|
182
524
|
// Build data matrix
|
|
183
525
|
const pivotData = [];
|
|
184
526
|
const rowTotals = [];
|
|
185
|
-
const columnTotalsMap = new Map();
|
|
527
|
+
const columnTotalsMap = new Map(); // colKey -> raw values
|
|
186
528
|
for (const rowKey of rowKeys) {
|
|
187
529
|
const rowData = [];
|
|
188
|
-
|
|
189
|
-
|
|
530
|
+
// Collect all raw values for this row (for row totals)
|
|
531
|
+
const rowAllValues = valueFields.map(() => []);
|
|
190
532
|
for (const colKey of colKeys) {
|
|
191
533
|
const colMap = dataMap.get(rowKey);
|
|
192
|
-
const
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
534
|
+
const rawValues = colMap?.get(colKey) || valueFields.map(() => []);
|
|
535
|
+
// Accumulate for row totals
|
|
536
|
+
for (let fi = 0; fi < rawValues.length; fi++) {
|
|
537
|
+
rowAllValues[fi].push(...rawValues[fi]);
|
|
538
|
+
}
|
|
539
|
+
// Accumulate for column totals
|
|
540
|
+
if (!columnTotalsMap.has(colKey)) {
|
|
541
|
+
columnTotalsMap.set(colKey, valueFields.map(() => []));
|
|
542
|
+
}
|
|
543
|
+
const colTotals = columnTotalsMap.get(colKey);
|
|
544
|
+
for (let fi = 0; fi < rawValues.length; fi++) {
|
|
545
|
+
colTotals[fi].push(...rawValues[fi]);
|
|
546
|
+
}
|
|
547
|
+
// Compute cell for each value field
|
|
548
|
+
for (let vfIdx = 0; vfIdx < valueFields.length; vfIdx++) {
|
|
549
|
+
const vf = valueFields[vfIdx];
|
|
550
|
+
const values = rawValues[vfIdx] || [];
|
|
551
|
+
const gtValue = grandTotals[vfIdx];
|
|
552
|
+
const aggValue = aggregate(values, vf.aggregation, gtValue);
|
|
553
|
+
// Format based on whether it's a calculated field
|
|
554
|
+
let formattedValue;
|
|
555
|
+
if (vf.field.startsWith('calc:')) {
|
|
556
|
+
const calcId = vf.field.replace('calc:', '');
|
|
557
|
+
const calcDef = calcFieldMap.get(calcId);
|
|
558
|
+
formattedValue = formatCalculatedValue(aggValue, calcDef?.formatAs || 'number', calcDef?.decimals ?? 2);
|
|
559
|
+
}
|
|
560
|
+
else {
|
|
561
|
+
formattedValue = formatAggregatedValue(aggValue, vf.aggregation);
|
|
562
|
+
}
|
|
197
563
|
rowData.push({
|
|
198
564
|
value: aggValue,
|
|
199
565
|
count: values.length,
|
|
200
|
-
formattedValue
|
|
566
|
+
formattedValue,
|
|
201
567
|
});
|
|
202
|
-
rowTotalValues[i].push(...values);
|
|
203
|
-
if (!columnTotalsMap.has(colIndex)) {
|
|
204
|
-
columnTotalsMap.set(colIndex, valueFields.map(() => []));
|
|
205
|
-
}
|
|
206
|
-
columnTotalsMap.get(colIndex)[i].push(...values);
|
|
207
|
-
colIndex++;
|
|
208
568
|
}
|
|
209
569
|
}
|
|
210
570
|
pivotData.push(rowData);
|
|
571
|
+
// Compute row total (using first value field for now)
|
|
211
572
|
if (showRowTotals && colKeys.length > 1) {
|
|
212
|
-
const totalCell = {
|
|
213
|
-
value: null,
|
|
214
|
-
count: 0,
|
|
215
|
-
formattedValue: '-',
|
|
216
|
-
};
|
|
217
573
|
if (valueFields.length > 0) {
|
|
218
574
|
const vf = valueFields[0];
|
|
219
|
-
const
|
|
220
|
-
const aggValue = aggregate(
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
575
|
+
const values = rowAllValues[0] || [];
|
|
576
|
+
const aggValue = aggregate(values, vf.aggregation, grandTotals[0]);
|
|
577
|
+
rowTotals.push({
|
|
578
|
+
value: aggValue,
|
|
579
|
+
count: values.length,
|
|
580
|
+
formattedValue: formatAggregatedValue(aggValue, vf.aggregation),
|
|
581
|
+
});
|
|
582
|
+
}
|
|
583
|
+
else {
|
|
584
|
+
rowTotals.push({ value: null, count: 0, formattedValue: '-' });
|
|
224
585
|
}
|
|
225
|
-
rowTotals.push(totalCell);
|
|
226
586
|
}
|
|
227
587
|
}
|
|
228
588
|
// Calculate column totals
|
|
229
589
|
const columnTotals = [];
|
|
230
590
|
if (showColumnTotals && rowKeys.length > 1) {
|
|
231
|
-
for (
|
|
232
|
-
const
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
const
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
591
|
+
for (const colKey of colKeys) {
|
|
592
|
+
const colRawValues = columnTotalsMap.get(colKey) || valueFields.map(() => []);
|
|
593
|
+
for (let vfIdx = 0; vfIdx < valueFields.length; vfIdx++) {
|
|
594
|
+
const vf = valueFields[vfIdx];
|
|
595
|
+
const values = colRawValues[vfIdx] || [];
|
|
596
|
+
const aggValue = aggregate(values, vf.aggregation, grandTotals[vfIdx]);
|
|
597
|
+
columnTotals.push({
|
|
598
|
+
value: aggValue,
|
|
599
|
+
count: values.length,
|
|
600
|
+
formattedValue: formatAggregatedValue(aggValue, vf.aggregation),
|
|
601
|
+
});
|
|
240
602
|
}
|
|
241
|
-
const aggValue = aggregate(allColValues, vf.aggregation);
|
|
242
|
-
columnTotals.push({
|
|
243
|
-
value: aggValue,
|
|
244
|
-
count: allColValues.length,
|
|
245
|
-
formattedValue: formatAggregatedValue(aggValue, vf.aggregation),
|
|
246
|
-
});
|
|
247
603
|
}
|
|
248
604
|
}
|
|
249
|
-
// Grand total
|
|
605
|
+
// Grand total - collect all values across entire dataset
|
|
250
606
|
const grandTotal = { value: null, count: 0, formattedValue: '-' };
|
|
251
607
|
if (showRowTotals && showColumnTotals && valueFields.length > 0) {
|
|
252
|
-
|
|
253
|
-
const
|
|
254
|
-
for (const
|
|
255
|
-
const
|
|
256
|
-
if (
|
|
257
|
-
const
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
608
|
+
// Collect all raw values from the entire dataset
|
|
609
|
+
const allRawValues = valueFields.map(() => []);
|
|
610
|
+
for (const rowKey of rowKeys) {
|
|
611
|
+
const colMap = dataMap.get(rowKey);
|
|
612
|
+
if (colMap) {
|
|
613
|
+
for (const colKey of colKeys) {
|
|
614
|
+
const vals = colMap.get(colKey);
|
|
615
|
+
if (vals) {
|
|
616
|
+
for (let fi = 0; fi < vals.length; fi++) {
|
|
617
|
+
allRawValues[fi].push(...vals[fi]);
|
|
618
|
+
}
|
|
619
|
+
}
|
|
263
620
|
}
|
|
264
621
|
}
|
|
265
622
|
}
|
|
266
|
-
const
|
|
623
|
+
const vf = valueFields[0];
|
|
624
|
+
const values = allRawValues[0] || [];
|
|
625
|
+
const aggValue = aggregate(values, vf.aggregation, grandTotals[0]);
|
|
267
626
|
grandTotal.value = aggValue;
|
|
268
|
-
grandTotal.count =
|
|
627
|
+
grandTotal.count = values.length;
|
|
269
628
|
grandTotal.formattedValue = formatAggregatedValue(aggValue, vf.aggregation);
|
|
270
629
|
}
|
|
271
630
|
return {
|
|
@@ -323,6 +682,60 @@ export function isConfigValidForFields(config, availableFieldNames) {
|
|
|
323
682
|
...config.columnFields,
|
|
324
683
|
...config.valueFields.map(v => v.field),
|
|
325
684
|
];
|
|
326
|
-
|
|
685
|
+
// Filter out calculated fields (they start with 'calc:')
|
|
686
|
+
return allConfiguredFields
|
|
687
|
+
.filter(f => !f.startsWith('calc:'))
|
|
688
|
+
.every(f => available.has(f));
|
|
689
|
+
}
|
|
690
|
+
// Calculated Fields Storage
|
|
691
|
+
const CALC_FIELDS_KEY = 'vpg-calculated-fields';
|
|
692
|
+
/**
|
|
693
|
+
* Save calculated fields to localStorage (persists across sessions)
|
|
694
|
+
*/
|
|
695
|
+
export function saveCalculatedFields(fields) {
|
|
696
|
+
try {
|
|
697
|
+
localStorage.setItem(CALC_FIELDS_KEY, JSON.stringify(fields));
|
|
698
|
+
}
|
|
699
|
+
catch {
|
|
700
|
+
// Ignore storage errors
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
/**
|
|
704
|
+
* Load calculated fields from localStorage
|
|
705
|
+
*/
|
|
706
|
+
export function loadCalculatedFields() {
|
|
707
|
+
try {
|
|
708
|
+
const stored = localStorage.getItem(CALC_FIELDS_KEY);
|
|
709
|
+
if (stored) {
|
|
710
|
+
return JSON.parse(stored);
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
catch {
|
|
714
|
+
// Ignore parse errors
|
|
715
|
+
}
|
|
716
|
+
return [];
|
|
717
|
+
}
|
|
718
|
+
/**
|
|
719
|
+
* Add a calculated field to storage
|
|
720
|
+
*/
|
|
721
|
+
export function addCalculatedField(field) {
|
|
722
|
+
const fields = loadCalculatedFields();
|
|
723
|
+
const existing = fields.findIndex(f => f.id === field.id);
|
|
724
|
+
if (existing >= 0) {
|
|
725
|
+
fields[existing] = field;
|
|
726
|
+
}
|
|
727
|
+
else {
|
|
728
|
+
fields.push(field);
|
|
729
|
+
}
|
|
730
|
+
saveCalculatedFields(fields);
|
|
731
|
+
return fields;
|
|
732
|
+
}
|
|
733
|
+
/**
|
|
734
|
+
* Remove a calculated field from storage
|
|
735
|
+
*/
|
|
736
|
+
export function removeCalculatedField(id) {
|
|
737
|
+
const fields = loadCalculatedFields().filter(f => f.id !== id);
|
|
738
|
+
saveCalculatedFields(fields);
|
|
739
|
+
return fields;
|
|
327
740
|
}
|
|
328
741
|
//# sourceMappingURL=index.js.map
|
package/dist/pivot/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pivot/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pivot/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAE7D;;GAEG;AACH,SAAS,eAAe,CAAC,MAAgB;IACvC,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAChD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACzC,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;QAC5B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QACb,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;AACzC,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,MAAgB;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAA;IAC9D,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACrD,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAA;IAC9E,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;AAClC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CACvB,MAAgB,EAChB,EAAuB,EACvB,UAAmB,EACnB,QAA8B,EAC9B,cAAyC;IAEzC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IAEvD,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,KAAK;YACR,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QAC1C,KAAK,OAAO;YACV,OAAO,MAAM,CAAC,MAAM,CAAA;QACtB,KAAK,KAAK;YACR,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAA;QAC1D,KAAK,KAAK;YACR,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAA;QAC5B,KAAK,KAAK;YACR,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAA;QAC5B,KAAK,eAAe;YAClB,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAA;QAC7B,KAAK,QAAQ;YACX,OAAO,eAAe,CAAC,MAAM,CAAC,CAAA;QAChC,KAAK,QAAQ;YACX,OAAO,eAAe,CAAC,MAAM,CAAC,CAAA;QAChC,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;YAC7C,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAA;YAC7D,OAAO,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,CAAA;QACjC,CAAC;QACD,KAAK,QAAQ;YACX,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC;oBACH,OAAO,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;gBACzC,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,IAAI,CAAA;gBACb,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAA;QACb;YACE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAoB,EAAE,EAAuB;IACjF,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,GAAG,CAAA;IAE9B,IAAI,EAAE,KAAK,OAAO,IAAI,EAAE,KAAK,eAAe,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,CAAA;IAC3C,CAAC;IAED,IAAI,EAAE,KAAK,gBAAgB,EAAE,CAAC;QAC5B,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;IAC/B,CAAC;IAED,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAA;IACpE,CAAC;IAED,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAA;IACpE,CAAC;IAED,OAAO,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAA;AACpE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAAuB,EAAE,WAAoB;IAC/E,IAAI,EAAE,KAAK,QAAQ,IAAI,WAAW;QAAE,OAAO,WAAW,CAAA;IACtD,MAAM,MAAM,GAAwC;QAClD,GAAG,EAAE,KAAK;QACV,KAAK,EAAE,OAAO;QACd,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,KAAK;QACV,GAAG,EAAE,KAAK;QACV,aAAa,EAAE,gBAAgB;QAC/B,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,SAAS;QACjB,cAAc,EAAE,YAAY;QAC5B,MAAM,EAAE,QAAQ;KACjB,CAAA;IACD,OAAO,MAAM,CAAC,EAAE,CAAC,CAAA;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAuB,EAAE,YAAqB;IACjF,IAAI,EAAE,KAAK,QAAQ,IAAI,YAAY;QAAE,OAAO,YAAY,CAAA;IACxD,MAAM,OAAO,GAAwC;QACnD,GAAG,EAAE,GAAG;QACR,KAAK,EAAE,GAAG;QACV,GAAG,EAAE,IAAI;QACT,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,aAAa,EAAE,GAAG;QAClB,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,cAAc,EAAE,IAAI;QACpB,MAAM,EAAE,GAAG;KACZ,CAAA;IACD,OAAO,OAAO,CAAC,EAAE,CAAC,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAI3B;IACH,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE;IAC3C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;IAC/C,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;IAC5C,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE;IAC3C,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE;IAC3C,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;IACxD,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IAClD,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE;IAClD,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE;CAC/D,CAAA;AAED,+CAA+C;AAC/C,sCAAsC;AACtC,+CAA+C;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAA;AAGzF;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,MAAM,KAAK,GAAG,sDAAsD,CAAA;IACpE,MAAM,OAAO,GAAkD,EAAE,CAAA;IACjE,IAAI,KAAK,CAAA;IAET,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAqB;YAC7C,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;SACvB,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAe,EACf,gBAA+C;IAE/C,IAAI,CAAC;QACH,2CAA2C;QAC3C,IAAI,UAAU,GAAG,OAAO,CAAA;QAExB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC5D,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAA;YAC/B,qDAAqD;YACrD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA;YAC1D,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QAC3E,CAAC;QAED,4EAA4E;QAC5E,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,UAAU,CAAC,CAAA;YACvD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,0BAA0B;QAC1B,sDAAsD;QACtD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,WAAW,UAAU,GAAG,CAAC,EAAE,CAAA;QAEvD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3D,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAA;QAChD,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAoB,EACpB,QAA4C,EAC5C,QAAQ,GAAG,CAAC;IAEZ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,GAAG,CAAA;IAE9B,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAA;QACtC,KAAK,UAAU;YACb,OAAO,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE;gBACnC,KAAK,EAAE,UAAU;gBACjB,QAAQ,EAAE,KAAK;gBACf,qBAAqB,EAAE,QAAQ;gBAC/B,qBAAqB,EAAE,QAAQ;aAChC,CAAC,CAAA;QACJ;YACE,OAAO,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE;gBACnC,qBAAqB,EAAE,CAAC;gBACxB,qBAAqB,EAAE,QAAQ;aAChC,CAAC,CAAA;IACN,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,eAAyB;IACxE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACpB,OAAO,yBAAyB,CAAA;IAClC,CAAC;IAED,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;IAExC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,4DAA4D,CAAA;IACrE,CAAC;IAED,kCAAkC;IAClC,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;IAE7D,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA;QAC1C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,OAAO,kBAAkB,GAAG,CAAC,KAAK,EAAE,CAAA;QACtC,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,MAAM,WAAW,GAA2B,EAAE,CAAA;IAC9C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,WAAW,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;IAC5C,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IACpD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,wBAAwB,CAAA;IACjC,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,6EAA6E;IAC7E,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAA;IAC9D,uCAAuC;IACvC,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAA;IACvD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe,EAAE,eAAyB;IAC9E,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACpB,OAAO,qBAAqB,CAAA;IAC9B,CAAC;IAED,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAEpD,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,2CAA2C,CAAA;IACpD,CAAC;IAED,kCAAkC;IAClC,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;IAE7D,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC/C,OAAO,kBAAkB,KAAK,EAAE,CAAA;QAClC,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,IAAI,CAAC;QACH,wCAAwC;QACxC,IAAI,QAAQ,GAAG,OAAO,CAAA;QACtB,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA;YAC5D,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,OAAO,KAAK,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;QACxE,CAAC;QACD,uCAAuC;QACvC,IAAI,QAAQ,CAAC,UAAU,QAAQ,EAAE,CAAC,CAAA;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,wBAAwB,CAAA;IACjC,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAe,EACf,GAA4B,EAC5B,UAAoB;IAEpB,IAAI,CAAC;QACH,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAA;QACpD,IAAI,UAAU,GAAG,OAAO,CAAA;QAExB,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;YACrC,4CAA4C;YAC5C,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,KAAK,CAAA;YAC1F,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,CAAA;YAE9B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;gBAC1D,OAAO,IAAI,CAAA,CAAC,mDAAmD;YACjE,CAAC;YAED,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;YAChF,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,IAAI,CAAA;YACb,CAAC;YAED,gCAAgC;YAChC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA;YAC5D,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,OAAO,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QACpF,CAAC;QAED,4DAA4D;QAC5D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAA;QACb,CAAC;QAED,uCAAuC;QACvC,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,UAAU,UAAU,EAAE,CAAC,EAAE,CAAA;QACrD,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC;QACE,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,kCAAkC;QAC3C,QAAQ,EAAE,SAAkB;QAC5B,WAAW,EAAE,iCAAiC;KAC/C;IACD;QACE,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,2BAA2B;QACpC,QAAQ,EAAE,UAAmB;QAC7B,WAAW,EAAE,uBAAuB;KACrC;IACD;QACE,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,sDAAsD;QAC/D,QAAQ,EAAE,SAAkB;QAC5B,WAAW,EAAE,mCAAmC;KACjD;CACF,CAAA;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAA+B;IACpE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAEhC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACjC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,eAA6B,EAC7B,SAAmB,EACnB,YAAsB,EACtB,WAA8B;IAE9B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC;QACvB,GAAG,SAAS;QACZ,GAAG,YAAY;QACf,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;KACjC,CAAC,CAAA;IACF,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;AAC5D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAmB;IACnD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAA;AACzG,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAA+B,EAC/B,MAAmB;IAEnB,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAA;IAE1G,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAA;IAC3C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAElC,2DAA2D;IAC3D,MAAM,YAAY,GAAG,IAAI,GAAG,EAA2B,CAAA;IACvD,IAAI,gBAAgB,EAAE,CAAC;QACrB,KAAK,MAAM,EAAE,IAAI,gBAAgB,EAAE,CAAC;YAClC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAErE,qCAAqC;IACrC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;IACnC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;IAEnC,oCAAoC;IACpC,wEAAwE;IACxE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmC,CAAA;IAE1D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACzE,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAE/E,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACrB,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAErB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;QAChC,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAE,CAAA;QAEnC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAC/C,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAE,CAAA;QAEvC,sCAAsC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;YACzB,IAAI,GAAG,GAAkB,IAAI,CAAA;YAE7B,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,mDAAmD;gBACnD,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;gBAC5C,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBACxC,IAAI,OAAO,EAAE,CAAC;oBACZ,GAAG,GAAG,qBAAqB,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAA;gBACtE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,qCAAqC;gBACrC,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;gBACzB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;oBACpD,GAAG,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;oBACpE,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;wBACtB,GAAG,GAAG,CAAC,EAAE,CAAC,WAAW,KAAK,OAAO,IAAI,EAAE,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;oBACrF,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACjB,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED,YAAY;IACZ,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAA;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAA;IAE5C,6DAA6D;IAC7D,MAAM,WAAW,GAAa,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QACtD,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,GAAG,GAAkB,IAAI,CAAA;YAE7B,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;gBAC5C,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBACxC,IAAI,OAAO,EAAE,CAAC;oBACZ,GAAG,GAAG,qBAAqB,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAA;gBACtE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;gBACzB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;oBACpD,GAAG,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;oBACpE,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;wBAAE,GAAG,GAAG,IAAI,CAAA;gBACnC,CAAC;YACH,CAAC;YAED,IAAI,GAAG,KAAK,IAAI;gBAAE,KAAK,IAAI,GAAG,CAAA;QAChC,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC,CAAC,CAAA;IAEF,0CAA0C;IAC1C,SAAS,kBAAkB,CAAC,EAAmB;QAC7C,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;YAC5C,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YACxC,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,KAAK,CAAA;YACtC,OAAO,GAAG,IAAI,KAAK,mBAAmB,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAA;QAC3D,CAAC;QACD,OAAO,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,KAAK,mBAAmB,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAA;IAC3E,CAAC;IAED,uBAAuB;IACvB,4EAA4E;IAC5E,kEAAkE;IAClE,MAAM,OAAO,GAAe,EAAE,CAAA;IAC9B,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACnE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YACzD,MAAM,SAAS,GAAa,EAAE,CAAA;YAC9B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;gBAC9B,qCAAqC;gBACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;gBACpC,CAAC;YACH,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,MAAM,WAAW,GAAa,EAAE,CAAA;QAChC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;gBAC7B,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAA;YAC1C,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YACrD,OAAO,CAAC,IAAI,CACV,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAC9C,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,MAAM,UAAU,GAAe,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QAC/C,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,CAAC,OAAO,CAAC,CAAA;QACvC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,oBAAoB;IACpB,MAAM,SAAS,GAAkB,EAAE,CAAA;IACnC,MAAM,SAAS,GAAgB,EAAE,CAAA;IACjC,MAAM,eAAe,GAA4B,IAAI,GAAG,EAAE,CAAA,CAAC,uBAAuB;IAElF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAgB,EAAE,CAAA;QAC/B,uDAAuD;QACvD,MAAM,YAAY,GAAe,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAE1D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAClC,MAAM,SAAS,GAAG,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;YAElE,4BAA4B;YAC5B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;gBAC7C,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAA;YACzC,CAAC;YAED,+BAA+B;YAC/B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YACxD,CAAC;YACD,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAE,CAAA;YAC9C,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;gBAC7C,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAA;YACtC,CAAC;YAED,oCAAoC;YACpC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;gBACxD,MAAM,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;gBAC7B,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;gBACrC,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;gBAClC,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;gBAE3D,kDAAkD;gBAClD,IAAI,cAAsB,CAAA;gBAC1B,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBACjC,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;oBAC5C,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;oBACxC,cAAc,GAAG,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAA;gBACzG,CAAC;qBAAM,CAAC;oBACN,cAAc,GAAG,qBAAqB,CAAC,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,CAAA;gBAClE,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC;oBACX,KAAK,EAAE,QAAQ;oBACf,KAAK,EAAE,MAAM,CAAC,MAAM;oBACpB,cAAc;iBACf,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAEvB,sDAAsD;QACtD,IAAI,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;gBACzB,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;gBACpC,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;gBAClE,SAAS,CAAC,IAAI,CAAC;oBACb,KAAK,EAAE,QAAQ;oBACf,KAAK,EAAE,MAAM,CAAC,MAAM;oBACpB,cAAc,EAAE,qBAAqB,CAAC,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC;iBAChE,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,CAAA;YAChE,CAAC;QACH,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,MAAM,YAAY,GAAgB,EAAE,CAAA;IACpC,IAAI,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;YAC7E,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;gBACxD,MAAM,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;gBAC7B,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;gBACxC,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAA;gBACtE,YAAY,CAAC,IAAI,CAAC;oBAChB,KAAK,EAAE,QAAQ;oBACf,KAAK,EAAE,MAAM,CAAC,MAAM;oBACpB,cAAc,EAAE,qBAAqB,CAAC,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC;iBAChE,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,MAAM,UAAU,GAAc,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,CAAA;IAC5E,IAAI,aAAa,IAAI,gBAAgB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChE,iDAAiD;QACjD,MAAM,YAAY,GAAe,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAC1D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAClC,IAAI,MAAM,EAAE,CAAC;gBACX,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;oBAC/B,IAAI,IAAI,EAAE,CAAC;wBACT,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;4BACxC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;wBACpC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;QACzB,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACpC,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;QAClE,UAAU,CAAC,KAAK,GAAG,QAAQ,CAAA;QAC3B,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAA;QAChC,UAAU,CAAC,cAAc,GAAG,qBAAqB,CAAC,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,CAAA;IAC7E,CAAC;IAED,OAAO;QACL,OAAO;QACP,UAAU;QACV,IAAI,EAAE,SAAS;QACf,SAAS;QACT,YAAY;QACZ,UAAU;KACX,CAAA;AACH,CAAC;AAED,+CAA+C;AAC/C,MAAM,kBAAkB,GAAG,YAAY,CAAA;AAEvC;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAiB;IAClD,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;IAClC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAC/C,OAAO,GAAG,kBAAkB,GAAG,IAAI,EAAE,CAAA;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,MAAmB;IAC9D,IAAI,CAAC;QACH,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,wBAAwB;IAC1B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC1C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAgB,CAAA;QAC1C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAmB,EAAE,mBAA6B;IACvF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAA;IAC9C,MAAM,mBAAmB,GAAG;QAC1B,GAAG,MAAM,CAAC,SAAS;QACnB,GAAG,MAAM,CAAC,YAAY;QACtB,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;KACxC,CAAA;IACD,yDAAyD;IACzD,OAAO,mBAAmB;SACvB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SACnC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AACjC,CAAC;AAED,4BAA4B;AAC5B,MAAM,eAAe,GAAG,uBAAuB,CAAA;AAE/C;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAyB;IAC5D,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,wBAAwB;IAC1B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;QACpD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAsB,CAAA;QAChD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAsB;IACvD,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAA;IACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAA;IACzD,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QAClB,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAA;IAC1B,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpB,CAAC;IACD,oBAAoB,CAAC,MAAM,CAAC,CAAA;IAC5B,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAU;IAC9C,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IAC9D,oBAAoB,CAAC,MAAM,CAAC,CAAA;IAC5B,OAAO,MAAM,CAAA;AACf,CAAC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -15,13 +15,42 @@ export interface GridOptions<T = Record<string, unknown>> {
|
|
|
15
15
|
enableFiltering?: boolean;
|
|
16
16
|
pageSize?: number;
|
|
17
17
|
}
|
|
18
|
-
export type AggregationFunction = 'sum' | 'count' | 'avg' | 'min' | 'max' | 'countDistinct';
|
|
18
|
+
export type AggregationFunction = 'sum' | 'count' | 'avg' | 'min' | 'max' | 'countDistinct' | 'median' | 'stdDev' | 'percentOfTotal' | 'custom';
|
|
19
19
|
export interface PivotField {
|
|
20
20
|
field: string;
|
|
21
21
|
label?: string;
|
|
22
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Custom aggregation function signature
|
|
25
|
+
* @param values - Array of numeric values to aggregate
|
|
26
|
+
* @param allFieldValues - Optional: all values across fields for cross-field calculations
|
|
27
|
+
* @returns Aggregated value or null
|
|
28
|
+
*/
|
|
29
|
+
export type CustomAggregationFn = (values: number[], allFieldValues?: Record<string, number[]>) => number | null;
|
|
23
30
|
export interface PivotValueField extends PivotField {
|
|
24
31
|
aggregation: AggregationFunction;
|
|
32
|
+
/** Custom aggregation function (required when aggregation is 'custom') */
|
|
33
|
+
customFn?: CustomAggregationFn;
|
|
34
|
+
/** Custom label for the aggregation (used with 'custom' aggregation) */
|
|
35
|
+
customLabel?: string;
|
|
36
|
+
/** Custom symbol for the aggregation (used with 'custom' aggregation) */
|
|
37
|
+
customSymbol?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Calculated field that computes values from other aggregated fields
|
|
41
|
+
* Supports formulas like "SUM(Revenue) / SUM(Units)"
|
|
42
|
+
*/
|
|
43
|
+
export interface CalculatedField {
|
|
44
|
+
/** Unique identifier for the calculated field */
|
|
45
|
+
id: string;
|
|
46
|
+
/** Display name for the calculated field */
|
|
47
|
+
name: string;
|
|
48
|
+
/** Formula expression (e.g., "SUM(revenue) / SUM(units) * 100") */
|
|
49
|
+
formula: string;
|
|
50
|
+
/** How to format the result */
|
|
51
|
+
formatAs?: 'number' | 'percent' | 'currency';
|
|
52
|
+
/** Number of decimal places */
|
|
53
|
+
decimals?: number;
|
|
25
54
|
}
|
|
26
55
|
export interface PivotConfig {
|
|
27
56
|
rowFields: string[];
|
|
@@ -29,6 +58,8 @@ export interface PivotConfig {
|
|
|
29
58
|
valueFields: PivotValueField[];
|
|
30
59
|
showRowTotals: boolean;
|
|
31
60
|
showColumnTotals: boolean;
|
|
61
|
+
/** Calculated fields that derive values from other aggregations */
|
|
62
|
+
calculatedFields?: CalculatedField[];
|
|
32
63
|
}
|
|
33
64
|
export interface PivotCell {
|
|
34
65
|
value: number | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAA;CACzD;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,CAAA;IACT,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAGD,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|