@aurum-grid/enterprise 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +24 -0
- package/README.md +6 -2
- package/dist/advanced-filter.d.ts +25 -0
- package/dist/advanced-filter.js +146 -0
- package/dist/advanced-filter.js.map +1 -0
- package/dist/excel.d.ts +56 -0
- package/dist/excel.js +409 -0
- package/dist/excel.js.map +1 -0
- package/dist/extras.d.ts +95 -0
- package/dist/extras.js +251 -0
- package/dist/extras.js.map +1 -0
- package/dist/import.d.ts +86 -0
- package/dist/import.js +323 -0
- package/dist/import.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/pivot.d.ts +33 -0
- package/dist/pivot.js +126 -0
- package/dist/pivot.js.map +1 -0
- package/dist/range.d.ts +39 -0
- package/dist/range.js +214 -0
- package/dist/range.js.map +1 -0
- package/dist/sidebar.d.ts +20 -0
- package/dist/sidebar.js +154 -0
- package/dist/sidebar.js.map +1 -0
- package/dist/styles.css +55 -0
- package/dist/sync.d.ts +88 -0
- package/dist/sync.js +243 -0
- package/dist/sync.js.map +1 -0
- package/package.json +40 -3
package/LICENSE.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Aurum Grid Commercial License (draft template)
|
|
2
|
+
|
|
3
|
+
> This is a starting-point template, not legal advice. Have a lawyer review it before you sell licences.
|
|
4
|
+
|
|
5
|
+
Copyright (c) 2026 the Aurum Grid authors. All rights reserved.
|
|
6
|
+
|
|
7
|
+
## 1. Evaluation
|
|
8
|
+
You may install and use Aurum Grid ("the Software") free of charge for **30 days** to evaluate it. During and after
|
|
9
|
+
evaluation the Software runs unmodified; after 30 days without a valid licence key it displays an
|
|
10
|
+
"unlicensed" watermark and console notice.
|
|
11
|
+
|
|
12
|
+
## 2. Annual developer licence
|
|
13
|
+
A licence costs **USD 50 per developer per year**. Each licensed developer may use the Software to build an
|
|
14
|
+
unlimited number of applications and deploy them to an unlimited number of end users. The licence key must be
|
|
15
|
+
renewed every year to keep receiving updates and to keep the watermark removed in newly built versions.
|
|
16
|
+
|
|
17
|
+
## 3. Restrictions
|
|
18
|
+
You may not: (a) redistribute the Software as a standalone component library or competing product;
|
|
19
|
+
(b) remove, alter or circumvent the licence checks or watermark; (c) share licence keys between developers
|
|
20
|
+
beyond the purchased seat count.
|
|
21
|
+
|
|
22
|
+
## 4. No warranty
|
|
23
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
|
|
24
|
+
ANY CLAIM, DAMAGES OR OTHER LIABILITY ARISING FROM THE USE OF THE SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @aurum-grid/enterprise
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Aurum Grid Enterprise modules: pivot, range selection, Excel export, status bar, side bar, advanced filter.
|
|
4
|
+
|
|
5
|
+
Part of **Aurum Grid** — the enterprise data grid. See the main documentation: https://github.com/YOUR_ORG/aurum-grid#readme
|
|
6
|
+
|
|
7
|
+
Licensing: 30-day evaluation, then $50 per developer per year. See LICENSE.md.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type GridModule } from '@aurum-grid/core';
|
|
2
|
+
export type AdvancedOp = 'contains' | 'notContains' | 'equals' | 'notEqual' | 'startsWith' | 'endsWith' | 'greaterThan' | 'greaterThanOrEqual' | 'lessThan' | 'lessThanOrEqual' | 'blank' | 'notBlank';
|
|
3
|
+
export interface AdvancedCondition {
|
|
4
|
+
type: 'condition';
|
|
5
|
+
colId: string;
|
|
6
|
+
op: AdvancedOp;
|
|
7
|
+
value?: string | number;
|
|
8
|
+
}
|
|
9
|
+
export interface AdvancedJoin {
|
|
10
|
+
type: 'join';
|
|
11
|
+
op: 'AND' | 'OR';
|
|
12
|
+
conditions: Array<AdvancedCondition | AdvancedJoin>;
|
|
13
|
+
}
|
|
14
|
+
export type AdvancedFilterModel = AdvancedCondition | AdvancedJoin;
|
|
15
|
+
export declare function describeAdvancedFilter(model: AdvancedFilterModel | null, headerOf?: (colId: string) => string): string;
|
|
16
|
+
export declare function evaluateAdvancedFilter(model: AdvancedFilterModel, getValue: (colId: string) => unknown, getText: (colId: string) => string, isNumber: (colId: string) => boolean): boolean;
|
|
17
|
+
declare module '@aurum-grid/core' {
|
|
18
|
+
interface Grid<T> {
|
|
19
|
+
setAdvancedFilterModel(model: AdvancedFilterModel | null): void;
|
|
20
|
+
getAdvancedFilterModel(): AdvancedFilterModel | null;
|
|
21
|
+
getAdvancedFilterExpression(): string;
|
|
22
|
+
showAdvancedFilterBuilder(anchor: HTMLElement): void;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export declare const AdvancedFilterModule: GridModule;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { h, icon, evaluateSimpleFilter, filterKindFor } from '@aurum-grid/core';
|
|
2
|
+
const OP_TEXT = {
|
|
3
|
+
contains: 'contains', notContains: 'does not contain', equals: '=', notEqual: '≠', startsWith: 'starts with',
|
|
4
|
+
endsWith: 'ends with', greaterThan: '>', greaterThanOrEqual: '≥', lessThan: '<', lessThanOrEqual: '≤', blank: 'is blank', notBlank: 'is not blank',
|
|
5
|
+
};
|
|
6
|
+
const TEXT_OPS = ['contains', 'notContains', 'equals', 'notEqual', 'startsWith', 'endsWith', 'blank', 'notBlank'];
|
|
7
|
+
const NUM_OPS = ['equals', 'notEqual', 'greaterThan', 'greaterThanOrEqual', 'lessThan', 'lessThanOrEqual', 'blank', 'notBlank'];
|
|
8
|
+
export function describeAdvancedFilter(model, headerOf = (c) => c) {
|
|
9
|
+
if (!model)
|
|
10
|
+
return '';
|
|
11
|
+
if (model.type === 'condition') {
|
|
12
|
+
const v = model.op === 'blank' || model.op === 'notBlank' ? '' : typeof model.value === 'number' ? ` ${model.value}` : ` "${model.value ?? ''}"`;
|
|
13
|
+
return `[${headerOf(model.colId)}] ${OP_TEXT[model.op]}${v}`;
|
|
14
|
+
}
|
|
15
|
+
const parts = model.conditions.map((c) => (c.type === 'join' && c.conditions.length > 1 ? `(${describeAdvancedFilter(c, headerOf)})` : describeAdvancedFilter(c, headerOf)));
|
|
16
|
+
return parts.filter(Boolean).join(` ${model.op} `);
|
|
17
|
+
}
|
|
18
|
+
export function evaluateAdvancedFilter(model, getValue, getText, isNumber) {
|
|
19
|
+
if (model.type === 'join') {
|
|
20
|
+
if (!model.conditions.length)
|
|
21
|
+
return true;
|
|
22
|
+
return model.op === 'AND'
|
|
23
|
+
? model.conditions.every((c) => evaluateAdvancedFilter(c, getValue, getText, isNumber))
|
|
24
|
+
: model.conditions.some((c) => evaluateAdvancedFilter(c, getValue, getText, isNumber));
|
|
25
|
+
}
|
|
26
|
+
const numeric = isNumber(model.colId);
|
|
27
|
+
const simple = numeric
|
|
28
|
+
? { filterType: 'number', type: model.op, filter: model.value === '' || model.value == null ? undefined : Number(model.value) }
|
|
29
|
+
: { filterType: 'text', type: model.op, filter: model.value == null ? '' : String(model.value) };
|
|
30
|
+
return evaluateSimpleFilter(simple, getValue(model.colId), numeric ? undefined : getText(model.colId));
|
|
31
|
+
}
|
|
32
|
+
export const AdvancedFilterModule = {
|
|
33
|
+
name: 'AdvancedFilterModule',
|
|
34
|
+
install(grid) {
|
|
35
|
+
let model = null;
|
|
36
|
+
const isNum = (colId) => {
|
|
37
|
+
const c = grid.getColumn(colId);
|
|
38
|
+
return !!c && filterKindFor(c) === 'number';
|
|
39
|
+
};
|
|
40
|
+
const api = {
|
|
41
|
+
setAdvancedFilterModel(m) {
|
|
42
|
+
model = m && (m.type === 'condition' || m.conditions.length) ? m : null;
|
|
43
|
+
grid.moduleState.set('advancedFilter', model);
|
|
44
|
+
grid.addFilterHook('advanced', model
|
|
45
|
+
? (node) => evaluateAdvancedFilter(model, (id) => grid.getCellValue(node, id), (id) => grid.getCellFormatted(node, id), isNum)
|
|
46
|
+
: null);
|
|
47
|
+
},
|
|
48
|
+
getAdvancedFilterModel: () => (model ? structuredClone(model) : null),
|
|
49
|
+
getAdvancedFilterExpression: () => describeAdvancedFilter(model, (id) => grid.getColumn(id)?.headerName ?? id),
|
|
50
|
+
showAdvancedFilterBuilder(anchor) {
|
|
51
|
+
const cols = grid.getColumns().filter((c) => filterKindFor(c) && !c.isAutoGroup);
|
|
52
|
+
const draft = model?.type === 'join' ? structuredClone(model) : { type: 'join', op: 'AND', conditions: model ? [structuredClone(model)] : [] };
|
|
53
|
+
const flat = draft.conditions.filter((c) => c.type === 'condition');
|
|
54
|
+
draft.conditions = flat.length ? flat : [{ type: 'condition', colId: cols[0]?.colId ?? '', op: isNum(cols[0]?.colId ?? '') ? 'greaterThan' : 'contains', value: '' }];
|
|
55
|
+
const wrap = h('div', { class: 'agr-adv-builder' });
|
|
56
|
+
const preview = h('code', { class: 'agr-adv-preview' });
|
|
57
|
+
const render = () => {
|
|
58
|
+
wrap.replaceChildren();
|
|
59
|
+
const joinSel = h('select', { class: 'agr-input', 'aria-label': 'Match' });
|
|
60
|
+
for (const [v, t] of [['AND', 'all conditions (AND)'], ['OR', 'any condition (OR)']])
|
|
61
|
+
joinSel.append(h('option', { value: v, text: t, selected: draft.op === v }));
|
|
62
|
+
joinSel.addEventListener('change', () => {
|
|
63
|
+
draft.op = joinSel.value;
|
|
64
|
+
updatePreview();
|
|
65
|
+
});
|
|
66
|
+
wrap.append(h('label', { class: 'agr-inline-field' }, [h('span', { text: 'Match:' }), joinSel]));
|
|
67
|
+
draft.conditions.forEach((c, i) => {
|
|
68
|
+
const cond = c;
|
|
69
|
+
const colSel = h('select', { class: 'agr-input', 'aria-label': `Condition ${i + 1} column` });
|
|
70
|
+
for (const col of cols)
|
|
71
|
+
colSel.append(h('option', { value: col.colId, text: col.headerName, selected: col.colId === cond.colId }));
|
|
72
|
+
const ops = isNum(cond.colId) ? NUM_OPS : TEXT_OPS;
|
|
73
|
+
const opSel = h('select', { class: 'agr-input', 'aria-label': `Condition ${i + 1} operator` });
|
|
74
|
+
for (const o of ops)
|
|
75
|
+
opSel.append(h('option', { value: o, text: OP_TEXT[o], selected: o === cond.op }));
|
|
76
|
+
const val = h('input', { class: 'agr-input', 'aria-label': `Condition ${i + 1} value`, type: isNum(cond.colId) ? 'number' : 'text', placeholder: 'Value' });
|
|
77
|
+
val.value = cond.value == null ? '' : String(cond.value);
|
|
78
|
+
val.hidden = cond.op === 'blank' || cond.op === 'notBlank';
|
|
79
|
+
const del = h('button', { type: 'button', class: 'agr-icon-btn', 'aria-label': `Remove condition ${i + 1}`, title: 'Remove' }, [icon('close', 13)]);
|
|
80
|
+
colSel.addEventListener('change', () => {
|
|
81
|
+
cond.colId = colSel.value;
|
|
82
|
+
cond.op = isNum(cond.colId) ? 'greaterThan' : 'contains';
|
|
83
|
+
render();
|
|
84
|
+
});
|
|
85
|
+
opSel.addEventListener('change', () => {
|
|
86
|
+
cond.op = opSel.value;
|
|
87
|
+
val.hidden = cond.op === 'blank' || cond.op === 'notBlank';
|
|
88
|
+
updatePreview();
|
|
89
|
+
});
|
|
90
|
+
val.addEventListener('input', () => {
|
|
91
|
+
cond.value = isNum(cond.colId) && val.value !== '' ? Number(val.value) : val.value;
|
|
92
|
+
updatePreview();
|
|
93
|
+
});
|
|
94
|
+
del.addEventListener('click', () => {
|
|
95
|
+
draft.conditions.splice(i, 1);
|
|
96
|
+
render();
|
|
97
|
+
});
|
|
98
|
+
wrap.append(h('div', { class: 'agr-adv-row' }, [colSel, opSel, val, del]));
|
|
99
|
+
});
|
|
100
|
+
const add = h('button', { type: 'button', class: 'agr-btn agr-btn-ghost', text: '+ Add condition' });
|
|
101
|
+
add.addEventListener('click', () => {
|
|
102
|
+
const first = cols[0]?.colId ?? '';
|
|
103
|
+
draft.conditions.push({ type: 'condition', colId: first, op: isNum(first) ? 'greaterThan' : 'contains', value: '' });
|
|
104
|
+
render();
|
|
105
|
+
});
|
|
106
|
+
const apply = h('button', { type: 'button', class: 'agr-btn', text: 'Apply' });
|
|
107
|
+
apply.addEventListener('click', () => {
|
|
108
|
+
const valid = draft.conditions.filter((c) => {
|
|
109
|
+
const cc = c;
|
|
110
|
+
return cc.op === 'blank' || cc.op === 'notBlank' || (cc.value !== '' && cc.value != null);
|
|
111
|
+
});
|
|
112
|
+
api.setAdvancedFilterModel(valid.length ? { ...draft, conditions: valid } : null);
|
|
113
|
+
grid.popups.close();
|
|
114
|
+
});
|
|
115
|
+
const clear = h('button', { type: 'button', class: 'agr-btn agr-btn-ghost', text: 'Clear' });
|
|
116
|
+
clear.addEventListener('click', () => {
|
|
117
|
+
api.setAdvancedFilterModel(null);
|
|
118
|
+
grid.popups.close();
|
|
119
|
+
});
|
|
120
|
+
wrap.append(add, h('div', { class: 'agr-adv-label', text: 'Expression' }), preview, h('div', { class: 'agr-adv-actions' }, [clear, apply]));
|
|
121
|
+
updatePreview();
|
|
122
|
+
};
|
|
123
|
+
const updatePreview = () => {
|
|
124
|
+
preview.textContent = describeAdvancedFilter(draft, (id) => grid.getColumn(id)?.headerName ?? id) || '(no conditions)';
|
|
125
|
+
};
|
|
126
|
+
render();
|
|
127
|
+
grid.popups.show(anchor, h('div', {}, [h('div', { class: 'agr-popup-title', text: 'Advanced filter' }), wrap]), { label: 'Advanced filter builder' });
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
Object.assign(grid, api);
|
|
131
|
+
const saved = grid.moduleState.get('advancedFilter');
|
|
132
|
+
if (saved)
|
|
133
|
+
api.setAdvancedFilterModel(saved);
|
|
134
|
+
const off = grid.addEventListener('stateUpdated', () => {
|
|
135
|
+
const s = grid.moduleState.get('advancedFilter') ?? null;
|
|
136
|
+
if (JSON.stringify(s) !== JSON.stringify(model))
|
|
137
|
+
api.setAdvancedFilterModel(s);
|
|
138
|
+
});
|
|
139
|
+
return () => {
|
|
140
|
+
off();
|
|
141
|
+
for (const k of Object.keys(api))
|
|
142
|
+
delete grid[k];
|
|
143
|
+
};
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
//# sourceMappingURL=advanced-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advanced-filter.js","sourceRoot":"","sources":["../src/advanced-filter.ts"],"names":[],"mappings":"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"}
|
package/dist/excel.d.ts
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type GridModule } from '@aurum-grid/core';
|
|
2
|
+
export declare function crc32(data: Uint8Array): number;
|
|
3
|
+
export declare function zipStore(files: Array<{
|
|
4
|
+
name: string;
|
|
5
|
+
data: Uint8Array;
|
|
6
|
+
}>): Uint8Array<ArrayBuffer>;
|
|
7
|
+
/** Refuse archives that would expand beyond this many bytes (zip-bomb guard). */
|
|
8
|
+
export declare const MAX_UNZIPPED_BYTES: number;
|
|
9
|
+
export declare function unzip(buf: Uint8Array, maxTotal?: number): Promise<Map<string, Uint8Array>>;
|
|
10
|
+
export declare function colLetter(i: number): string;
|
|
11
|
+
export interface XlsxSheet {
|
|
12
|
+
name: string;
|
|
13
|
+
header: string[];
|
|
14
|
+
rows: unknown[][];
|
|
15
|
+
widths?: number[];
|
|
16
|
+
}
|
|
17
|
+
export declare function buildXlsx(sheets: XlsxSheet[]): Uint8Array<ArrayBuffer>;
|
|
18
|
+
export type XlsxCell = string | number | boolean | null;
|
|
19
|
+
export interface WorkbookSheet {
|
|
20
|
+
name: string;
|
|
21
|
+
header: string[];
|
|
22
|
+
rows: XlsxCell[][];
|
|
23
|
+
}
|
|
24
|
+
/** Excel serial date (1900 system) → ISO date or date-time string. */
|
|
25
|
+
export declare function excelSerialToIso(serial: number): string;
|
|
26
|
+
/**
|
|
27
|
+
* Read every worksheet in an .xlsx workbook (names in workbook order).
|
|
28
|
+
* Handles shared strings, inline strings, booleans and date-formatted numbers.
|
|
29
|
+
*/
|
|
30
|
+
export declare function readWorkbook(input: ArrayBuffer | Uint8Array, opts?: {
|
|
31
|
+
maxRows?: number;
|
|
32
|
+
}): Promise<WorkbookSheet[]>;
|
|
33
|
+
/** First worksheet only (kept for compatibility). */
|
|
34
|
+
export declare function readXlsx(input: ArrayBuffer | Uint8Array): Promise<{
|
|
35
|
+
header: string[];
|
|
36
|
+
rows: XlsxCell[][];
|
|
37
|
+
}>;
|
|
38
|
+
declare module '@aurum-grid/core' {
|
|
39
|
+
interface Grid<T> {
|
|
40
|
+
getDataAsExcel(params?: ExcelExportParams): Uint8Array;
|
|
41
|
+
exportDataAsExcel(params?: ExcelExportParams): Uint8Array;
|
|
42
|
+
importExcel(file: Blob | ArrayBuffer, params?: {
|
|
43
|
+
mode?: 'replace' | 'append';
|
|
44
|
+
}): Promise<number>;
|
|
45
|
+
exportDataAsPdf(params?: {
|
|
46
|
+
title?: string;
|
|
47
|
+
}): void;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export interface ExcelExportParams {
|
|
51
|
+
fileName?: string;
|
|
52
|
+
sheetName?: string;
|
|
53
|
+
onlySelected?: boolean;
|
|
54
|
+
columnKeys?: string[];
|
|
55
|
+
}
|
|
56
|
+
export declare const ExcelExportModule: GridModule;
|