@smallwebco/tinypivot-core 1.0.24 → 1.0.25

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 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';
@@ -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,EAGV,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,GACvB,MAAM,SAAS,CAAA;AAGhB,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"}
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, } from './pivot';
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;AA2CH,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,GACvB,MAAM,SAAS,CAAA;AAEhB,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"}
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"}
@@ -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;AAGjB;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,CAmBlF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,EAAE,mBAAmB,GAAG,MAAM,CAY3F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,mBAAmB,GAAG,MAAM,CAUnE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,mBAAmB,GAAG,MAAM,CAUpE;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC;IACtC,KAAK,EAAE,mBAAmB,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf,CAOA,CAAA;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE,CAKpF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,UAAU,EAAE,EAC7B,SAAS,EAAE,MAAM,EAAE,EACnB,YAAY,EAAE,MAAM,EAAE,EACtB,WAAW,EAAE,eAAe,EAAE,GAC7B,UAAU,EAAE,CAOd;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAE9D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,MAAM,EAAE,WAAW,GAClB,WAAW,GAAG,IAAI,CAuMpB;AAKD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAI5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAMtE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAU/D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,OAAO,CAQlG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pivot/index.ts"],"names":[],"mappings":"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"}
@@ -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
- const val = row[vf.field];
135
- if (val !== null && val !== undefined && val !== '') {
136
- const num = typeof val === 'number' ? val : Number.parseFloat(String(val));
137
- if (!Number.isNaN(num)) {
138
- valueArrays[i].push(num);
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
- else if (vf.aggregation === 'count' || vf.aggregation === 'countDistinct') {
141
- valueArrays[i].push(1);
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
- headerRow.push(parts[level] || '');
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(`${vf.label || vf.field} (${getAggregationLabel(vf.aggregation)})`);
508
+ valueLabels.push(getValueFieldLabel(vf));
167
509
  }
168
510
  }
169
511
  if (colKeys.length === 1 && colKeys[0] === '__all__') {
170
- headers.push(valueFields.map(vf => `${vf.label || vf.field} (${getAggregationLabel(vf.aggregation)})`));
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
- const rowTotalValues = valueFields.map(() => []);
189
- let colIndex = 0;
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 valueArrays = colMap?.get(colKey) || valueFields.map(() => []);
193
- for (let i = 0; i < valueFields.length; i++) {
194
- const vf = valueFields[i];
195
- const values = valueArrays[i];
196
- const aggValue = aggregate(values, vf.aggregation);
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: formatAggregatedValue(aggValue, vf.aggregation),
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 allValues = rowTotalValues[0];
220
- const aggValue = aggregate(allValues, vf.aggregation);
221
- totalCell.value = aggValue;
222
- totalCell.count = allValues.length;
223
- totalCell.formattedValue = formatAggregatedValue(aggValue, vf.aggregation);
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 (let colIdx = 0; colIdx < colKeys.length * valueFields.length; colIdx++) {
232
- const valueIdx = colIdx % valueFields.length;
233
- const vf = valueFields[valueIdx];
234
- const allColValues = [];
235
- for (const rowKey of rowKeys) {
236
- const colMap = dataMap.get(rowKey);
237
- const colKey = colKeys[Math.floor(colIdx / valueFields.length)];
238
- const valueArrays = colMap?.get(colKey) || valueFields.map(() => []);
239
- allColValues.push(...valueArrays[valueIdx]);
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
- const vf = valueFields[0];
253
- const allValues = [];
254
- for (const row of data) {
255
- const val = row[vf.field];
256
- if (val !== null && val !== undefined && val !== '') {
257
- const num = typeof val === 'number' ? val : Number.parseFloat(String(val));
258
- if (!Number.isNaN(num)) {
259
- allValues.push(num);
260
- }
261
- else if (vf.aggregation === 'count' || vf.aggregation === 'countDistinct') {
262
- allValues.push(1);
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 aggValue = aggregate(allValues, vf.aggregation);
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 = allValues.length;
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
- return allConfiguredFields.every(f => available.has(f));
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
@@ -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":"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"}
@@ -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":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smallwebco/tinypivot-core",
3
- "version": "1.0.24",
3
+ "version": "1.0.25",
4
4
  "description": "Core logic for TinyPivot - framework agnostic pivot table and data grid utilities",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",