@platforma-sdk/ui-vue 1.54.11 → 1.54.13
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/.turbo/turbo-build.log +25 -21
- package/.turbo/turbo-formatter$colon$check.log +2 -2
- package/.turbo/turbo-linter$colon$check.log +2 -2
- package/.turbo/turbo-types$colon$check.log +1 -1
- package/CHANGELOG.md +16 -0
- package/dist/AgGridVue/useAgGridOptions.js +10 -9
- package/dist/AgGridVue/useAgGridOptions.js.map +1 -1
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.d.ts +32 -40
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.d.ts.map +1 -1
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/index.d.ts +2 -2
- package/dist/components/PlAdvancedFilter/index.d.ts.map +1 -1
- package/dist/components/PlAdvancedFilter/index.js.map +1 -1
- package/dist/components/PlAdvancedFilter/types.d.ts +9 -8
- package/dist/components/PlAdvancedFilter/types.d.ts.map +1 -1
- package/dist/components/PlAdvancedFilter/utils.js +38 -27
- package/dist/components/PlAdvancedFilter/utils.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +161 -244
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgRowCount.vue.js +9 -8
- package/dist/components/PlAgDataTable/PlAgRowCount.vue.js.map +1 -1
- package/dist/components/PlAgDataTable/compositions/useFilterableColumns.d.ts +134 -0
- package/dist/components/PlAgDataTable/compositions/useFilterableColumns.d.ts.map +1 -0
- package/dist/components/PlAgDataTable/compositions/useFilterableColumns.js +33 -0
- package/dist/components/PlAgDataTable/compositions/useFilterableColumns.js.map +1 -0
- package/dist/components/PlAgDataTable/compositions/useGrid.d.ts +15 -0
- package/dist/components/PlAgDataTable/compositions/useGrid.d.ts.map +1 -0
- package/dist/components/PlAgDataTable/compositions/useGrid.js +113 -0
- package/dist/components/PlAgDataTable/compositions/useGrid.js.map +1 -0
- package/dist/components/PlAgDataTable/sources/row-number.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/sources/row-number.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-source-v2.d.ts +1 -2
- package/dist/components/PlAgDataTable/sources/table-source-v2.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-source-v2.js +47 -62
- package/dist/components/PlAgDataTable/sources/table-source-v2.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-state-v2.d.ts +4 -4
- package/dist/components/PlAgDataTable/sources/table-state-v2.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-state-v2.js +105 -95
- package/dist/components/PlAgDataTable/sources/table-state-v2.js.map +1 -1
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js +11 -10
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js.map +1 -1
- package/dist/components/PlAgRowNumHeader.vue.js +10 -9
- package/dist/components/PlAgRowNumHeader.vue.js.map +1 -1
- package/dist/components/PlTableFastSearch/PlTableFastSearch.vue.d.ts +10 -0
- package/dist/components/PlTableFastSearch/PlTableFastSearch.vue.d.ts.map +1 -0
- package/dist/components/PlTableFastSearch/PlTableFastSearch.vue.js +30 -0
- package/dist/components/PlTableFastSearch/PlTableFastSearch.vue.js.map +1 -0
- package/dist/components/PlTableFastSearch/PlTableFastSearch.vue2.js +5 -0
- package/dist/components/PlTableFastSearch/PlTableFastSearch.vue2.js.map +1 -0
- package/dist/components/PlTableFastSearch/index.d.ts +2 -0
- package/dist/components/PlTableFastSearch/index.d.ts.map +1 -0
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue.d.ts +4 -5
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue.d.ts.map +1 -1
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/lib/util/helpers/dist/functions.js +13 -4
- package/dist/lib/util/helpers/dist/functions.js.map +1 -1
- package/dist/lib/util/helpers/dist/objects.js.map +1 -1
- package/package.json +5 -5
- package/src/components/PlAdvancedFilter/PlAdvancedFilter.vue +2 -2
- package/src/components/PlAdvancedFilter/index.ts +7 -2
- package/src/components/PlAdvancedFilter/types.ts +19 -5
- package/src/components/PlAgDataTable/PlAgDataTableV2.vue +52 -172
- package/src/components/PlAgDataTable/compositions/useFilterableColumns.ts +62 -0
- package/src/components/PlAgDataTable/compositions/useGrid.ts +143 -0
- package/src/components/PlAgDataTable/sources/row-number.ts +0 -1
- package/src/components/PlAgDataTable/sources/table-source-v2.ts +1 -15
- package/src/components/PlAgDataTable/sources/table-state-v2.ts +137 -94
- package/src/components/PlTableFastSearch/PlTableFastSearch.vue +27 -0
- package/src/components/PlTableFastSearch/index.ts +1 -0
- package/src/components/PlTableFilters/PlTableFiltersV2.vue +8 -3
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { AxesSpec,
|
|
1
|
+
import { AxesSpec, PTableColumnSpecColumn, PTableValue, PFrameDriver, PlDataTableSheet, AxisId, PlDataTableModel, PTableColumnSpec, PTableKey, PlTableColumnIdJson } from '@platforma-sdk/model';
|
|
2
2
|
import { ColDef, GridApi, ManagedGridOptions } from 'ag-grid-enterprise';
|
|
3
3
|
import { PlAgDataTableV2Row } from '../types';
|
|
4
4
|
import { PTableHidden } from './common';
|
|
5
5
|
import { Ref } from 'vue';
|
|
6
6
|
import { DeferredCircular } from './focus-row';
|
|
7
7
|
export declare function isLabelColumn(column: PTableColumnSpec): column is PTableColumnSpecColumn;
|
|
8
|
-
export declare function getPTableColumnId(spec: PTableColumnSpec): PTableColumnId;
|
|
9
8
|
/** Calculate GridOptions for selected p-table data source */
|
|
10
9
|
export declare function calculateGridOptions({ generation, pfDriver, model, sheets, dataRenderedTracker, hiddenColIds, cellButtonAxisParams, }: {
|
|
11
10
|
generation: Ref<number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-source-v2.d.ts","sourceRoot":"","sources":["../../../../src/components/PlAgDataTable/sources/table-source-v2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,
|
|
1
|
+
{"version":3,"file":"table-source-v2.d.ts","sourceRoot":"","sources":["../../../../src/components/PlAgDataTable/sources/table-source-v2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EAER,sBAAsB,EACtB,WAAW,EAEZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EAErB,KAAK,MAAM,EACX,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EAEd,KAAK,mBAAmB,EAUzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAEV,MAAM,EACN,OAAO,EAIP,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,KAAK,EAAE,kBAAkB,EAAgB,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAIxC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,IAAI,sBAAsB,CAExF;AA4BD,6DAA6D;AAC7D,wBAAsB,oBAAoB,CAAC,EACzC,UAAU,EACV,QAAQ,EACR,KAAK,EACL,MAAM,EACN,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,GACrB,EAAE;IACD,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,mBAAmB,EAAE,gBAAgB,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACnE,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACrC,oBAAoB,CAAC,EAAE,wBAAwB,CAAC;CACjD,GAAG,OAAO,CACT,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,YAAY,GAAG,sBAAsB,CAAC,GAAG;IACpF,QAAQ,EAAE,QAAQ,CAAC;CACpB,CACF,CAmMA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,iCAAiC,CAAC,EAAE,OAAO,CAAC;IAC5C,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,gBAAgB,EACtB,WAAW,EAAE,gBAAgB,EAC7B,YAAY,EAAE,mBAAmB,EAAE,GAAG,SAAS,EAC/C,oBAAoB,CAAC,EAAE,wBAAwB,GAC9C,MAAM,CAAC,kBAAkB,EAAE,WAAW,GAAG,YAAY,CAAC,CA+ExD"}
|
|
@@ -1,42 +1,28 @@
|
|
|
1
|
-
import { canonicalizeJson as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import { PTableHidden as
|
|
5
|
-
import { defaultMainMenuItems as
|
|
6
|
-
import { makeRowNumberColDef as
|
|
7
|
-
import { getColumnRenderingSpec as
|
|
1
|
+
import { canonicalizeJson as A, getAxisId as q, isLabelColumn as V, isColumnHidden as _, readAnnotationJson as E, Annotation as S, getPTableColumnId as z, matchAxisId as F, readAnnotation as $, isColumnOptional as K, ValueType as l, pTableValue as N, isPTableValueAxis as j } from "@platforma-sdk/model";
|
|
2
|
+
import U from "../../PlAgColumnHeader/PlAgColumnHeader.vue.js";
|
|
3
|
+
import W from "../../PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js";
|
|
4
|
+
import { PTableHidden as Q } from "./common.js";
|
|
5
|
+
import { defaultMainMenuItems as X } from "./menu-items.js";
|
|
6
|
+
import { makeRowNumberColDef as Y, PlAgDataTableRowNumberColId as Z } from "./row-number.js";
|
|
7
|
+
import { getColumnRenderingSpec as B } from "./value-rendering.js";
|
|
8
8
|
import { isJsonEqual as J } from "../../../lib/util/helpers/dist/objects.js";
|
|
9
|
-
function
|
|
10
|
-
switch (r.type) {
|
|
11
|
-
case "axis":
|
|
12
|
-
return {
|
|
13
|
-
type: "axis",
|
|
14
|
-
id: A(r.spec)
|
|
15
|
-
};
|
|
16
|
-
case "column":
|
|
17
|
-
return {
|
|
18
|
-
type: "column",
|
|
19
|
-
id: r.id
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
function ee(r, o, w, d) {
|
|
9
|
+
function ee(s, o, w, d) {
|
|
24
10
|
const c = [];
|
|
25
11
|
for (let f = 0; f < o[0].data.length; ++f) {
|
|
26
12
|
const p = w.map((n) => {
|
|
27
|
-
const
|
|
28
|
-
if (!
|
|
29
|
-
throw new Error(`axis value is not a PTableValueAxis: ${JSON.stringify(
|
|
30
|
-
return
|
|
31
|
-
}), u = { id:
|
|
32
|
-
|
|
33
|
-
u[n.toString()] = d[
|
|
13
|
+
const r = N(o[d[n]], f);
|
|
14
|
+
if (!j(r))
|
|
15
|
+
throw new Error(`axis value is not a PTableValueAxis: ${JSON.stringify(r)}`);
|
|
16
|
+
return r;
|
|
17
|
+
}), u = { id: A(p), axesKey: p };
|
|
18
|
+
s.forEach((n, r) => {
|
|
19
|
+
u[n.toString()] = d[r] === -1 ? Q : N(o[d[r]], f);
|
|
34
20
|
}), c.push(u);
|
|
35
21
|
}
|
|
36
22
|
return c;
|
|
37
23
|
}
|
|
38
24
|
async function de({
|
|
39
|
-
generation:
|
|
25
|
+
generation: s,
|
|
40
26
|
pfDriver: o,
|
|
41
27
|
model: w,
|
|
42
28
|
sheets: d,
|
|
@@ -44,18 +30,18 @@ async function de({
|
|
|
44
30
|
hiddenColIds: f,
|
|
45
31
|
cellButtonAxisParams: p
|
|
46
32
|
}) {
|
|
47
|
-
const a =
|
|
48
|
-
if (a !==
|
|
49
|
-
const
|
|
50
|
-
if (a !==
|
|
51
|
-
const g = (e) =>
|
|
33
|
+
const a = s.value, u = new Error("table state generation changed"), n = await o.getSpec(w.fullTableHandle);
|
|
34
|
+
if (a !== s.value) throw u;
|
|
35
|
+
const r = w.visibleTableHandle, I = await o.getSpec(r);
|
|
36
|
+
if (a !== s.value) throw u;
|
|
37
|
+
const g = (e) => A(z(e)), b = new Map(I.entries().map(([e, t]) => [g(t), e])), v = new Map(
|
|
52
38
|
n.entries().map(([e, t]) => {
|
|
53
39
|
const i = b.get(g(t)) ?? -1;
|
|
54
40
|
if (i === -1 && t.type === "axis")
|
|
55
41
|
throw new Error(`axis ${JSON.stringify(t.spec)} not present in join result`);
|
|
56
42
|
return [e, i];
|
|
57
43
|
})
|
|
58
|
-
), D = d.map((e) =>
|
|
44
|
+
), D = d.map((e) => q(e.axis)), x = (e) => D.some((t) => F(t, e)), C = [], L = (e, t) => {
|
|
59
45
|
C.some((i) => F(i.axisId, e)) ? console.warn(`multiple label columns match axisId: ${JSON.stringify(e)}`) : C.push({ axisId: e, labelColumnIdx: t });
|
|
60
46
|
}, P = (e) => {
|
|
61
47
|
var t;
|
|
@@ -67,7 +53,7 @@ async function de({
|
|
|
67
53
|
return !x(t.id);
|
|
68
54
|
case "column":
|
|
69
55
|
if (V(t.spec)) {
|
|
70
|
-
const i =
|
|
56
|
+
const i = q(t.spec.axesSpec[0]);
|
|
71
57
|
return x(i) || L(i, e), !1;
|
|
72
58
|
}
|
|
73
59
|
return !_(t.spec);
|
|
@@ -78,7 +64,7 @@ async function de({
|
|
|
78
64
|
const i = E(n[e].spec, S.Table.OrderPriority), m = E(n[t].spec, S.Table.OrderPriority);
|
|
79
65
|
return i === void 0 ? m === void 0 ? 0 : 1 : m === void 0 ? -1 : m - i;
|
|
80
66
|
});
|
|
81
|
-
const
|
|
67
|
+
const M = [...y];
|
|
82
68
|
y = y.map((e) => {
|
|
83
69
|
const t = n[e];
|
|
84
70
|
if (t.type === "axis") {
|
|
@@ -89,11 +75,11 @@ async function de({
|
|
|
89
75
|
return e;
|
|
90
76
|
});
|
|
91
77
|
const G = [
|
|
92
|
-
|
|
93
|
-
...
|
|
78
|
+
Y(),
|
|
79
|
+
...M.map(
|
|
94
80
|
(e, t) => te(e, n[e], n[y[t]], f, p)
|
|
95
81
|
)
|
|
96
|
-
],
|
|
82
|
+
], k = n.values().filter((e) => e.type === "axis").map((e) => e.spec).toArray(), H = k.keys().map((e) => {
|
|
97
83
|
let t = y.indexOf(e);
|
|
98
84
|
return t === -1 && (t = y.length, y.push(e)), t;
|
|
99
85
|
}).toArray(), T = [], R = [];
|
|
@@ -103,15 +89,15 @@ async function de({
|
|
|
103
89
|
});
|
|
104
90
|
let h = -1, O;
|
|
105
91
|
return {
|
|
106
|
-
axesSpec:
|
|
92
|
+
axesSpec: k,
|
|
107
93
|
columnDefs: G,
|
|
108
94
|
serverSideDatasource: {
|
|
109
95
|
getRows: async (e) => {
|
|
110
|
-
if (a !==
|
|
96
|
+
if (a !== s.value) return e.fail();
|
|
111
97
|
try {
|
|
112
98
|
if (h === -1) {
|
|
113
|
-
const m = await o.getShape(
|
|
114
|
-
if (a !==
|
|
99
|
+
const m = await o.getShape(r);
|
|
100
|
+
if (a !== s.value || e.api.isDestroyed())
|
|
115
101
|
return e.fail();
|
|
116
102
|
h = m.rows;
|
|
117
103
|
}
|
|
@@ -124,48 +110,48 @@ async function de({
|
|
|
124
110
|
O = e;
|
|
125
111
|
let t = 0, i = [];
|
|
126
112
|
if (h > 0 && e.request.startRow !== void 0 && e.request.endRow !== void 0 && (t = Math.min(h, e.request.endRow) - e.request.startRow, t > 0)) {
|
|
127
|
-
const m = await o.getData(
|
|
113
|
+
const m = await o.getData(r, T, {
|
|
128
114
|
offset: e.request.startRow,
|
|
129
115
|
length: t
|
|
130
116
|
});
|
|
131
|
-
if (a !==
|
|
117
|
+
if (a !== s.value || e.api.isDestroyed())
|
|
132
118
|
return e.fail();
|
|
133
|
-
i = ee(
|
|
119
|
+
i = ee(M, m, H, R);
|
|
134
120
|
}
|
|
135
121
|
e.success({ rowData: i, rowCount: h }), e.api.autoSizeColumns(
|
|
136
|
-
e.api.getAllDisplayedColumns().filter((m) => m.getColId() !==
|
|
122
|
+
e.api.getAllDisplayedColumns().filter((m) => m.getColId() !== Z)
|
|
137
123
|
), e.api.setGridOption("loading", !1), c.resolve(e.api);
|
|
138
124
|
} catch (t) {
|
|
139
|
-
if (a !==
|
|
125
|
+
if (a !== s.value || e.api.isDestroyed()) return e.fail();
|
|
140
126
|
e.api.setGridOption("loading", !0), e.fail(), console.trace(t);
|
|
141
127
|
}
|
|
142
128
|
}
|
|
143
129
|
}
|
|
144
130
|
};
|
|
145
131
|
}
|
|
146
|
-
function te(
|
|
147
|
-
var n,
|
|
148
|
-
const f =
|
|
132
|
+
function te(s, o, w, d, c) {
|
|
133
|
+
var n, r;
|
|
134
|
+
const f = A({
|
|
149
135
|
source: o,
|
|
150
136
|
labeled: w
|
|
151
|
-
}), p = o.type === "axis" ? o.spec.type : o.spec.valueType, a =
|
|
137
|
+
}), p = o.type === "axis" ? o.spec.type : o.spec.valueType, a = B(o), u = {};
|
|
152
138
|
return a.fontFamily && (a.fontFamily === "monospace" ? (u.fontFamily = "Spline Sans Mono", u.fontWeight = 300) : u.fontFamily = a.fontFamily), {
|
|
153
139
|
colId: f,
|
|
154
|
-
mainMenuItems:
|
|
140
|
+
mainMenuItems: X,
|
|
155
141
|
context: o,
|
|
156
|
-
field: `${
|
|
157
|
-
headerName: ((n = $(w.spec, S.Label)) == null ? void 0 : n.trim()) ?? `Unlabeled ${o.type} ${
|
|
142
|
+
field: `${s}`,
|
|
143
|
+
headerName: ((n = $(w.spec, S.Label)) == null ? void 0 : n.trim()) ?? `Unlabeled ${o.type} ${s}`,
|
|
158
144
|
lockPosition: o.type === "axis",
|
|
159
|
-
hide: (d == null ? void 0 : d.includes(f)) ??
|
|
145
|
+
hide: (d == null ? void 0 : d.includes(f)) ?? K(o.spec),
|
|
160
146
|
valueFormatter: a.valueFormatter,
|
|
161
|
-
headerComponent:
|
|
147
|
+
headerComponent: U,
|
|
162
148
|
cellRendererSelector: c != null && c.showCellButtonForAxisId ? (I) => {
|
|
163
149
|
var b, v;
|
|
164
150
|
if (o.type !== "axis") return;
|
|
165
151
|
const g = (v = (b = I.colDef) == null ? void 0 : b.context) == null ? void 0 : v.id;
|
|
166
152
|
if (J(g, c.showCellButtonForAxisId))
|
|
167
153
|
return {
|
|
168
|
-
component:
|
|
154
|
+
component: W,
|
|
169
155
|
params: {
|
|
170
156
|
invokeRowsOnDoubleClick: c.cellButtonInvokeRowsOnDoubleClick,
|
|
171
157
|
onClick: (D) => {
|
|
@@ -191,7 +177,7 @@ function te(r, o, w, d, c) {
|
|
|
191
177
|
throw Error(`unsupported data type: ${p}`);
|
|
192
178
|
}
|
|
193
179
|
})(),
|
|
194
|
-
tooltip: (
|
|
180
|
+
tooltip: (r = $(w.spec, S.Description)) == null ? void 0 : r.trim()
|
|
195
181
|
},
|
|
196
182
|
cellDataType: (() => {
|
|
197
183
|
switch (p) {
|
|
@@ -211,7 +197,6 @@ function te(r, o, w, d, c) {
|
|
|
211
197
|
}
|
|
212
198
|
export {
|
|
213
199
|
de as calculateGridOptions,
|
|
214
|
-
B as getPTableColumnId,
|
|
215
200
|
te as makeColDef
|
|
216
201
|
};
|
|
217
202
|
//# sourceMappingURL=table-source-v2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-source-v2.js","sources":["../../../../src/components/PlAgDataTable/sources/table-source-v2.ts"],"sourcesContent":["import type {\n AxesSpec,\n PTableColumnId,\n PTableColumnSpecColumn,\n PTableValue,\n PTableValueAxis,\n} from \"@platforma-sdk/model\";\nimport {\n canonicalizeJson,\n getAxisId,\n isColumnOptional,\n pTableValue,\n type PFrameDriver,\n type PlDataTableSheet,\n type PTableVector,\n type AxisId,\n type PlDataTableModel,\n type PTableColumnSpec,\n type PTableKey,\n type PlTableColumnId,\n type PlTableColumnIdJson,\n isLabelColumn as isLabelColumnSpec,\n isColumnHidden,\n matchAxisId,\n isPTableValueAxis,\n readAnnotation,\n Annotation,\n ValueType,\n readAnnotationJson,\n} from \"@platforma-sdk/model\";\nimport type {\n CellStyle,\n ColDef,\n GridApi,\n ICellRendererParams,\n IServerSideDatasource,\n IServerSideGetRowsParams,\n ManagedGridOptions,\n} from \"ag-grid-enterprise\";\nimport type { PlAgHeaderComponentParams, PlAgHeaderComponentType } from \"../../PlAgColumnHeader\";\nimport { PlAgColumnHeader } from \"../../PlAgColumnHeader\";\nimport { PlAgTextAndButtonCell } from \"../../PlAgTextAndButtonCell\";\nimport type { PlAgDataTableV2Row, PlTableRowId } from \"../types\";\nimport { PTableHidden } from \"./common\";\nimport { defaultMainMenuItems } from \"./menu-items\";\nimport { makeRowNumberColDef, PlAgDataTableRowNumberColId } from \"./row-number\";\nimport { getColumnRenderingSpec } from \"./value-rendering\";\nimport type { Ref } from \"vue\";\nimport { isJsonEqual } from \"@milaboratories/helpers\";\nimport type { DeferredCircular } from \"./focus-row\";\n\nexport function isLabelColumn(column: PTableColumnSpec): column is PTableColumnSpecColumn {\n return column.type === \"column\" && isLabelColumnSpec(column.spec);\n}\n\nexport function getPTableColumnId(spec: PTableColumnSpec): PTableColumnId {\n switch (spec.type) {\n case \"axis\":\n return {\n type: \"axis\",\n id: getAxisId(spec.spec),\n };\n case \"column\":\n return {\n type: \"column\",\n id: spec.id,\n };\n }\n}\n\n/** Convert columnar data from the driver to rows, used by ag-grid */\nfunction columns2rows(\n fields: number[],\n columns: PTableVector[],\n axes: number[],\n resultMapping: number[],\n): PlAgDataTableV2Row[] {\n const rowData: PlAgDataTableV2Row[] = [];\n for (let iRow = 0; iRow < columns[0].data.length; ++iRow) {\n const axesKey: PTableValueAxis[] = axes.map((iAxis) => {\n const value = pTableValue(columns[resultMapping[iAxis]], iRow);\n if (!isPTableValueAxis(value))\n throw new Error(`axis value is not a PTableValueAxis: ${JSON.stringify(value)}`);\n return value;\n });\n const id = canonicalizeJson<PlTableRowId>(axesKey);\n const row: PlAgDataTableV2Row = { id, axesKey };\n fields.forEach((field, iCol) => {\n row[field.toString() as `${number}`] =\n resultMapping[iCol] === -1 ? PTableHidden : pTableValue(columns[resultMapping[iCol]], iRow);\n });\n rowData.push(row);\n }\n return rowData;\n}\n\n/** Calculate GridOptions for selected p-table data source */\nexport async function calculateGridOptions({\n generation,\n pfDriver,\n model,\n sheets,\n dataRenderedTracker,\n hiddenColIds,\n cellButtonAxisParams,\n}: {\n generation: Ref<number>;\n pfDriver: PFrameDriver;\n model: PlDataTableModel;\n sheets: PlDataTableSheet[];\n dataRenderedTracker: DeferredCircular<GridApi<PlAgDataTableV2Row>>;\n hiddenColIds?: PlTableColumnIdJson[];\n cellButtonAxisParams?: PlAgCellButtonAxisParams;\n}): Promise<\n Pick<ManagedGridOptions<PlAgDataTableV2Row>, \"columnDefs\" | \"serverSideDatasource\"> & {\n axesSpec: AxesSpec;\n }\n> {\n const stateGeneration = generation.value;\n const stateChangedError = new Error(\"table state generation changed\");\n\n // get specs of the full table\n const specs = await pfDriver.getSpec(model.fullTableHandle);\n if (stateGeneration !== generation.value) throw stateChangedError;\n\n // get specs of the visible table (with hidden columns omitted)\n const pt = model.visibleTableHandle;\n const dataSpecs = await pfDriver.getSpec(pt);\n if (stateGeneration !== generation.value) throw stateChangedError;\n\n // create index mapping from full specs to visible subset (hidden columns would have -1)\n const specId = (spec: PTableColumnSpec) =>\n canonicalizeJson<PTableColumnId>(getPTableColumnId(spec));\n const dataSpecsMap = new Map(dataSpecs.entries().map(([i, spec]) => [specId(spec), i]));\n const specsToDataSpecsMapping = new Map(\n specs.entries().map(([i, spec]) => {\n const dataSpecIdx = dataSpecsMap.get(specId(spec)) ?? -1;\n if (dataSpecIdx === -1 && spec.type === \"axis\")\n throw new Error(`axis ${JSON.stringify(spec.spec)} not present in join result`);\n return [i, dataSpecIdx];\n }),\n );\n\n // gether indices of columns that would be displayed in the table\n\n const sheetAxesIds = sheets.map((sheet) => getAxisId(sheet.axis));\n const isPartitionedAxis = (axisId: AxisId) => sheetAxesIds.some((id) => matchAxisId(id, axisId));\n\n const labelColumns: { axisId: AxisId; labelColumnIdx: number }[] = [];\n const setLabelColumnIndex = (axisId: AxisId, labelColumnIdx: number) => {\n if (!labelColumns.some((info) => matchAxisId(info.axisId, axisId))) {\n labelColumns.push({ axisId, labelColumnIdx });\n } else {\n console.warn(`multiple label columns match axisId: ${JSON.stringify(axisId)}`);\n }\n };\n const getLabelColumnIndex = (axisId: AxisId) => {\n return labelColumns.find((info) => matchAxisId(info.axisId, axisId))?.labelColumnIdx ?? -1;\n };\n\n // filter out partitioned axes, label columns and hidden columns\n let indices = specs\n .entries()\n .filter(([i, spec]) => {\n switch (spec.type) {\n case \"axis\":\n return !isPartitionedAxis(spec.id);\n case \"column\":\n if (isLabelColumnSpec(spec.spec)) {\n const labeledAxisId = getAxisId(spec.spec.axesSpec[0]);\n if (!isPartitionedAxis(labeledAxisId)) {\n setLabelColumnIndex(labeledAxisId, i);\n }\n return false;\n }\n return !isColumnHidden(spec.spec);\n }\n })\n .map(([i]) => i)\n .toArray();\n\n // order columns by priority\n indices.sort((a, b) => {\n if (specs[a].type !== specs[b].type) return specs[a].type === \"axis\" ? -1 : 1;\n\n const aPriority = readAnnotationJson(specs[a].spec, Annotation.Table.OrderPriority);\n const bPriority = readAnnotationJson(specs[b].spec, Annotation.Table.OrderPriority);\n\n if (aPriority === undefined) return bPriority === undefined ? 0 : 1;\n if (bPriority === undefined) return -1;\n return bPriority - aPriority;\n });\n\n // fields are indices of columns that would go to columnDefs\n const fields = [...indices];\n // replace axes with label columns\n indices = indices.map((i) => {\n const spec = specs[i];\n if (spec.type === \"axis\") {\n const labelColumnIdx = getLabelColumnIndex(spec.id);\n if (labelColumnIdx !== -1) {\n return labelColumnIdx;\n }\n }\n return i;\n });\n const columnDefs: ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[] = [\n makeRowNumberColDef(),\n ...fields.map((field, index) =>\n makeColDef(field, specs[field], specs[indices[index]], hiddenColIds, cellButtonAxisParams),\n ),\n ];\n\n // mix in indices of skipped axes (axes that were partitioned or replaced with label columns)\n const axesSpec = specs\n .values()\n .filter((spec) => spec.type === \"axis\")\n .map((spec) => spec.spec)\n .toArray();\n const axes = axesSpec\n .keys()\n .map((i) => {\n let r = indices.indexOf(i);\n if (r === -1) {\n r = indices.length;\n indices.push(i);\n }\n return r;\n })\n .toArray();\n\n const requestIndices: number[] = [];\n const resultMapping: number[] = [];\n indices.forEach((idx) => {\n const dataSpecIdx = specsToDataSpecsMapping.get(idx)!;\n if (dataSpecIdx !== -1) {\n resultMapping.push(requestIndices.length);\n requestIndices.push(dataSpecIdx);\n } else {\n resultMapping.push(-1);\n }\n });\n\n let rowCount = -1;\n let lastParams: IServerSideGetRowsParams | undefined = undefined;\n const serverSideDatasource: IServerSideDatasource<PlAgDataTableV2Row> = {\n getRows: async (params: IServerSideGetRowsParams) => {\n if (stateGeneration !== generation.value) return params.fail();\n try {\n if (rowCount === -1) {\n const ptShape = await pfDriver.getShape(pt);\n if (stateGeneration !== generation.value || params.api.isDestroyed())\n return params.fail();\n rowCount = ptShape.rows;\n }\n\n if (rowCount == 0) {\n params.success({ rowData: [], rowCount });\n // Warning: AgGrid cannot show two overlays at once,\n // so first hide loading overlay, then show no rows overlay\n params.api.setGridOption(\"loading\", false);\n params.api.showNoRowsOverlay();\n return;\n }\n\n // If sort has changed - show skeletons instead of data\n if (lastParams && !isJsonEqual(lastParams.request.sortModel, params.request.sortModel)) {\n return params.success({ rowData: [], rowCount });\n }\n lastParams = params;\n\n let length = 0;\n let rowData: PlAgDataTableV2Row[] = [];\n if (\n rowCount > 0 &&\n params.request.startRow !== undefined &&\n params.request.endRow !== undefined\n ) {\n length = Math.min(rowCount, params.request.endRow) - params.request.startRow;\n if (length > 0) {\n const data = await pfDriver.getData(pt, requestIndices, {\n offset: params.request.startRow,\n length,\n });\n if (stateGeneration !== generation.value || params.api.isDestroyed())\n return params.fail();\n rowData = columns2rows(fields, data, axes, resultMapping);\n }\n }\n\n params.success({ rowData, rowCount });\n params.api.autoSizeColumns(\n params.api\n .getAllDisplayedColumns()\n .filter((column) => column.getColId() !== PlAgDataTableRowNumberColId),\n );\n params.api.setGridOption(\"loading\", false);\n dataRenderedTracker.resolve(params.api);\n } catch (error: unknown) {\n if (stateGeneration !== generation.value || params.api.isDestroyed()) return params.fail();\n params.api.setGridOption(\"loading\", true);\n params.fail();\n console.trace(error);\n }\n },\n };\n\n return {\n axesSpec,\n columnDefs,\n serverSideDatasource,\n };\n}\n\nexport type PlAgCellButtonAxisParams = {\n showCellButtonForAxisId?: AxisId;\n cellButtonInvokeRowsOnDoubleClick?: boolean;\n trigger: (key?: PTableKey) => void;\n};\n\n/**\n * Calculates column definition for a given p-table column\n */\nexport function makeColDef(\n iCol: number,\n spec: PTableColumnSpec,\n labeledSpec: PTableColumnSpec,\n hiddenColIds: PlTableColumnIdJson[] | undefined,\n cellButtonAxisParams?: PlAgCellButtonAxisParams,\n): ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden> {\n const colId = canonicalizeJson<PlTableColumnId>({\n source: spec,\n labeled: labeledSpec,\n });\n const valueType = spec.type === \"axis\" ? spec.spec.type : spec.spec.valueType;\n const columnRenderingSpec = getColumnRenderingSpec(spec);\n const cellStyle: CellStyle = {};\n if (columnRenderingSpec.fontFamily) {\n if (columnRenderingSpec.fontFamily === \"monospace\") {\n cellStyle.fontFamily = \"Spline Sans Mono\";\n cellStyle.fontWeight = 300;\n } else {\n cellStyle.fontFamily = columnRenderingSpec.fontFamily;\n }\n }\n return {\n colId,\n mainMenuItems: defaultMainMenuItems,\n context: spec,\n field: `${iCol}`,\n headerName:\n readAnnotation(labeledSpec.spec, Annotation.Label)?.trim() ??\n `Unlabeled ${spec.type} ${iCol}`,\n lockPosition: spec.type === \"axis\",\n hide: hiddenColIds?.includes(colId) ?? isColumnOptional(spec.spec),\n valueFormatter: columnRenderingSpec.valueFormatter,\n headerComponent: PlAgColumnHeader,\n cellRendererSelector: cellButtonAxisParams?.showCellButtonForAxisId\n ? (params: ICellRendererParams) => {\n if (spec.type !== \"axis\") return;\n\n const axisId = (params.colDef?.context as PTableColumnSpec)?.id as AxisId;\n if (isJsonEqual(axisId, cellButtonAxisParams.showCellButtonForAxisId)) {\n return {\n component: PlAgTextAndButtonCell,\n params: {\n invokeRowsOnDoubleClick: cellButtonAxisParams.cellButtonInvokeRowsOnDoubleClick,\n onClick: (params: ICellRendererParams<PlAgDataTableV2Row>) => {\n cellButtonAxisParams.trigger(params.data?.axesKey);\n },\n },\n };\n }\n }\n : undefined,\n cellStyle,\n headerComponentParams: {\n type: ((): PlAgHeaderComponentType => {\n switch (valueType) {\n case ValueType.Int:\n case ValueType.Long:\n case ValueType.Float:\n case ValueType.Double:\n return \"Number\";\n case ValueType.String:\n case ValueType.Bytes:\n return \"Text\";\n default:\n throw Error(`unsupported data type: ${valueType}`);\n }\n })(),\n tooltip: readAnnotation(labeledSpec.spec, Annotation.Description)?.trim(),\n } satisfies PlAgHeaderComponentParams,\n cellDataType: (() => {\n switch (valueType) {\n case ValueType.Int:\n case ValueType.Long:\n case ValueType.Float:\n case ValueType.Double:\n return \"number\";\n case ValueType.String:\n case ValueType.Bytes:\n return \"text\";\n default:\n throw Error(`unsupported data type: ${valueType}`);\n }\n })(),\n };\n}\n"],"names":["getPTableColumnId","spec","getAxisId","columns2rows","fields","columns","axes","resultMapping","rowData","iRow","axesKey","iAxis","value","pTableValue","isPTableValueAxis","row","canonicalizeJson","field","iCol","PTableHidden","calculateGridOptions","generation","pfDriver","model","sheets","dataRenderedTracker","hiddenColIds","cellButtonAxisParams","stateGeneration","stateChangedError","specs","pt","dataSpecs","specId","dataSpecsMap","i","specsToDataSpecsMapping","dataSpecIdx","sheetAxesIds","sheet","isPartitionedAxis","axisId","id","matchAxisId","labelColumns","setLabelColumnIndex","labelColumnIdx","info","getLabelColumnIndex","_a","indices","isLabelColumnSpec","labeledAxisId","isColumnHidden","a","b","aPriority","readAnnotationJson","Annotation","bPriority","columnDefs","makeRowNumberColDef","index","makeColDef","axesSpec","r","requestIndices","idx","rowCount","lastParams","params","ptShape","isJsonEqual","length","data","column","PlAgDataTableRowNumberColId","error","labeledSpec","colId","valueType","columnRenderingSpec","getColumnRenderingSpec","cellStyle","defaultMainMenuItems","readAnnotation","isColumnOptional","PlAgColumnHeader","_b","PlAgTextAndButtonCell","ValueType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table-source-v2.js","sources":["../../../../src/components/PlAgDataTable/sources/table-source-v2.ts"],"sourcesContent":["import type {\n AxesSpec,\n PTableColumnId,\n PTableColumnSpecColumn,\n PTableValue,\n PTableValueAxis,\n} from \"@platforma-sdk/model\";\nimport {\n canonicalizeJson,\n getAxisId,\n isColumnOptional,\n pTableValue,\n type PFrameDriver,\n type PlDataTableSheet,\n type PTableVector,\n type AxisId,\n type PlDataTableModel,\n type PTableColumnSpec,\n type PTableKey,\n type PlTableColumnId,\n type PlTableColumnIdJson,\n isLabelColumn as isLabelColumnSpec,\n isColumnHidden,\n matchAxisId,\n isPTableValueAxis,\n readAnnotation,\n Annotation,\n ValueType,\n readAnnotationJson,\n getPTableColumnId,\n} from \"@platforma-sdk/model\";\nimport type {\n CellStyle,\n ColDef,\n GridApi,\n ICellRendererParams,\n IServerSideDatasource,\n IServerSideGetRowsParams,\n ManagedGridOptions,\n} from \"ag-grid-enterprise\";\nimport type { PlAgHeaderComponentParams, PlAgHeaderComponentType } from \"../../PlAgColumnHeader\";\nimport { PlAgColumnHeader } from \"../../PlAgColumnHeader\";\nimport { PlAgTextAndButtonCell } from \"../../PlAgTextAndButtonCell\";\nimport type { PlAgDataTableV2Row, PlTableRowId } from \"../types\";\nimport { PTableHidden } from \"./common\";\nimport { defaultMainMenuItems } from \"./menu-items\";\nimport { makeRowNumberColDef, PlAgDataTableRowNumberColId } from \"./row-number\";\nimport { getColumnRenderingSpec } from \"./value-rendering\";\nimport type { Ref } from \"vue\";\nimport { isJsonEqual } from \"@milaboratories/helpers\";\nimport type { DeferredCircular } from \"./focus-row\";\n\nexport function isLabelColumn(column: PTableColumnSpec): column is PTableColumnSpecColumn {\n return column.type === \"column\" && isLabelColumnSpec(column.spec);\n}\n\n/** Convert columnar data from the driver to rows, used by ag-grid */\nfunction columns2rows(\n fields: number[],\n columns: PTableVector[],\n axes: number[],\n resultMapping: number[],\n): PlAgDataTableV2Row[] {\n const rowData: PlAgDataTableV2Row[] = [];\n for (let iRow = 0; iRow < columns[0].data.length; ++iRow) {\n const axesKey: PTableValueAxis[] = axes.map((iAxis) => {\n const value = pTableValue(columns[resultMapping[iAxis]], iRow);\n if (!isPTableValueAxis(value))\n throw new Error(`axis value is not a PTableValueAxis: ${JSON.stringify(value)}`);\n return value;\n });\n const id = canonicalizeJson<PlTableRowId>(axesKey);\n const row: PlAgDataTableV2Row = { id, axesKey };\n fields.forEach((field, iCol) => {\n row[field.toString() as `${number}`] =\n resultMapping[iCol] === -1 ? PTableHidden : pTableValue(columns[resultMapping[iCol]], iRow);\n });\n rowData.push(row);\n }\n return rowData;\n}\n\n/** Calculate GridOptions for selected p-table data source */\nexport async function calculateGridOptions({\n generation,\n pfDriver,\n model,\n sheets,\n dataRenderedTracker,\n hiddenColIds,\n cellButtonAxisParams,\n}: {\n generation: Ref<number>;\n pfDriver: PFrameDriver;\n model: PlDataTableModel;\n sheets: PlDataTableSheet[];\n dataRenderedTracker: DeferredCircular<GridApi<PlAgDataTableV2Row>>;\n hiddenColIds?: PlTableColumnIdJson[];\n cellButtonAxisParams?: PlAgCellButtonAxisParams;\n}): Promise<\n Pick<ManagedGridOptions<PlAgDataTableV2Row>, \"columnDefs\" | \"serverSideDatasource\"> & {\n axesSpec: AxesSpec;\n }\n> {\n const stateGeneration = generation.value;\n const stateChangedError = new Error(\"table state generation changed\");\n\n // get specs of the full table\n const specs = await pfDriver.getSpec(model.fullTableHandle);\n if (stateGeneration !== generation.value) throw stateChangedError;\n\n // get specs of the visible table (with hidden columns omitted)\n const pt = model.visibleTableHandle;\n const dataSpecs = await pfDriver.getSpec(pt);\n if (stateGeneration !== generation.value) throw stateChangedError;\n\n // create index mapping from full specs to visible subset (hidden columns would have -1)\n const specId = (spec: PTableColumnSpec) =>\n canonicalizeJson<PTableColumnId>(getPTableColumnId(spec));\n const dataSpecsMap = new Map(dataSpecs.entries().map(([i, spec]) => [specId(spec), i]));\n const specsToDataSpecsMapping = new Map(\n specs.entries().map(([i, spec]) => {\n const dataSpecIdx = dataSpecsMap.get(specId(spec)) ?? -1;\n if (dataSpecIdx === -1 && spec.type === \"axis\")\n throw new Error(`axis ${JSON.stringify(spec.spec)} not present in join result`);\n return [i, dataSpecIdx];\n }),\n );\n\n // gether indices of columns that would be displayed in the table\n\n const sheetAxesIds = sheets.map((sheet) => getAxisId(sheet.axis));\n const isPartitionedAxis = (axisId: AxisId) => sheetAxesIds.some((id) => matchAxisId(id, axisId));\n\n const labelColumns: { axisId: AxisId; labelColumnIdx: number }[] = [];\n const setLabelColumnIndex = (axisId: AxisId, labelColumnIdx: number) => {\n if (!labelColumns.some((info) => matchAxisId(info.axisId, axisId))) {\n labelColumns.push({ axisId, labelColumnIdx });\n } else {\n console.warn(`multiple label columns match axisId: ${JSON.stringify(axisId)}`);\n }\n };\n const getLabelColumnIndex = (axisId: AxisId) => {\n return labelColumns.find((info) => matchAxisId(info.axisId, axisId))?.labelColumnIdx ?? -1;\n };\n\n // filter out partitioned axes, label columns and hidden columns\n let indices = specs\n .entries()\n .filter(([i, spec]) => {\n switch (spec.type) {\n case \"axis\":\n return !isPartitionedAxis(spec.id);\n case \"column\":\n if (isLabelColumnSpec(spec.spec)) {\n const labeledAxisId = getAxisId(spec.spec.axesSpec[0]);\n if (!isPartitionedAxis(labeledAxisId)) {\n setLabelColumnIndex(labeledAxisId, i);\n }\n return false;\n }\n return !isColumnHidden(spec.spec);\n }\n })\n .map(([i]) => i)\n .toArray();\n\n // order columns by priority\n indices.sort((a, b) => {\n if (specs[a].type !== specs[b].type) return specs[a].type === \"axis\" ? -1 : 1;\n\n const aPriority = readAnnotationJson(specs[a].spec, Annotation.Table.OrderPriority);\n const bPriority = readAnnotationJson(specs[b].spec, Annotation.Table.OrderPriority);\n\n if (aPriority === undefined) return bPriority === undefined ? 0 : 1;\n if (bPriority === undefined) return -1;\n return bPriority - aPriority;\n });\n\n // fields are indices of columns that would go to columnDefs\n const fields = [...indices];\n // replace axes with label columns\n indices = indices.map((i) => {\n const spec = specs[i];\n if (spec.type === \"axis\") {\n const labelColumnIdx = getLabelColumnIndex(spec.id);\n if (labelColumnIdx !== -1) {\n return labelColumnIdx;\n }\n }\n return i;\n });\n const columnDefs: ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[] = [\n makeRowNumberColDef(),\n ...fields.map((field, index) =>\n makeColDef(field, specs[field], specs[indices[index]], hiddenColIds, cellButtonAxisParams),\n ),\n ];\n\n // mix in indices of skipped axes (axes that were partitioned or replaced with label columns)\n const axesSpec = specs\n .values()\n .filter((spec) => spec.type === \"axis\")\n .map((spec) => spec.spec)\n .toArray();\n const axes = axesSpec\n .keys()\n .map((i) => {\n let r = indices.indexOf(i);\n if (r === -1) {\n r = indices.length;\n indices.push(i);\n }\n return r;\n })\n .toArray();\n\n const requestIndices: number[] = [];\n const resultMapping: number[] = [];\n indices.forEach((idx) => {\n const dataSpecIdx = specsToDataSpecsMapping.get(idx)!;\n if (dataSpecIdx !== -1) {\n resultMapping.push(requestIndices.length);\n requestIndices.push(dataSpecIdx);\n } else {\n resultMapping.push(-1);\n }\n });\n\n let rowCount = -1;\n let lastParams: IServerSideGetRowsParams | undefined = undefined;\n const serverSideDatasource: IServerSideDatasource<PlAgDataTableV2Row> = {\n getRows: async (params: IServerSideGetRowsParams) => {\n if (stateGeneration !== generation.value) return params.fail();\n try {\n if (rowCount === -1) {\n const ptShape = await pfDriver.getShape(pt);\n if (stateGeneration !== generation.value || params.api.isDestroyed())\n return params.fail();\n rowCount = ptShape.rows;\n }\n\n if (rowCount == 0) {\n params.success({ rowData: [], rowCount });\n // Warning: AgGrid cannot show two overlays at once,\n // so first hide loading overlay, then show no rows overlay\n params.api.setGridOption(\"loading\", false);\n params.api.showNoRowsOverlay();\n return;\n }\n\n // If sort has changed - show skeletons instead of data\n if (lastParams && !isJsonEqual(lastParams.request.sortModel, params.request.sortModel)) {\n return params.success({ rowData: [], rowCount });\n }\n lastParams = params;\n\n let length = 0;\n let rowData: PlAgDataTableV2Row[] = [];\n if (\n rowCount > 0 &&\n params.request.startRow !== undefined &&\n params.request.endRow !== undefined\n ) {\n length = Math.min(rowCount, params.request.endRow) - params.request.startRow;\n if (length > 0) {\n const data = await pfDriver.getData(pt, requestIndices, {\n offset: params.request.startRow,\n length,\n });\n if (stateGeneration !== generation.value || params.api.isDestroyed())\n return params.fail();\n rowData = columns2rows(fields, data, axes, resultMapping);\n }\n }\n\n params.success({ rowData, rowCount });\n params.api.autoSizeColumns(\n params.api\n .getAllDisplayedColumns()\n .filter((column) => column.getColId() !== PlAgDataTableRowNumberColId),\n );\n params.api.setGridOption(\"loading\", false);\n dataRenderedTracker.resolve(params.api);\n } catch (error: unknown) {\n if (stateGeneration !== generation.value || params.api.isDestroyed()) return params.fail();\n params.api.setGridOption(\"loading\", true);\n params.fail();\n console.trace(error);\n }\n },\n };\n\n return {\n axesSpec,\n columnDefs,\n serverSideDatasource,\n };\n}\n\nexport type PlAgCellButtonAxisParams = {\n showCellButtonForAxisId?: AxisId;\n cellButtonInvokeRowsOnDoubleClick?: boolean;\n trigger: (key?: PTableKey) => void;\n};\n\n/**\n * Calculates column definition for a given p-table column\n */\nexport function makeColDef(\n iCol: number,\n spec: PTableColumnSpec,\n labeledSpec: PTableColumnSpec,\n hiddenColIds: PlTableColumnIdJson[] | undefined,\n cellButtonAxisParams?: PlAgCellButtonAxisParams,\n): ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden> {\n const colId = canonicalizeJson<PlTableColumnId>({\n source: spec,\n labeled: labeledSpec,\n });\n const valueType = spec.type === \"axis\" ? spec.spec.type : spec.spec.valueType;\n const columnRenderingSpec = getColumnRenderingSpec(spec);\n const cellStyle: CellStyle = {};\n if (columnRenderingSpec.fontFamily) {\n if (columnRenderingSpec.fontFamily === \"monospace\") {\n cellStyle.fontFamily = \"Spline Sans Mono\";\n cellStyle.fontWeight = 300;\n } else {\n cellStyle.fontFamily = columnRenderingSpec.fontFamily;\n }\n }\n return {\n colId,\n mainMenuItems: defaultMainMenuItems,\n context: spec,\n field: `${iCol}`,\n headerName:\n readAnnotation(labeledSpec.spec, Annotation.Label)?.trim() ??\n `Unlabeled ${spec.type} ${iCol}`,\n lockPosition: spec.type === \"axis\",\n hide: hiddenColIds?.includes(colId) ?? isColumnOptional(spec.spec),\n valueFormatter: columnRenderingSpec.valueFormatter,\n headerComponent: PlAgColumnHeader,\n cellRendererSelector: cellButtonAxisParams?.showCellButtonForAxisId\n ? (params: ICellRendererParams) => {\n if (spec.type !== \"axis\") return;\n\n const axisId = (params.colDef?.context as PTableColumnSpec)?.id as AxisId;\n if (isJsonEqual(axisId, cellButtonAxisParams.showCellButtonForAxisId)) {\n return {\n component: PlAgTextAndButtonCell,\n params: {\n invokeRowsOnDoubleClick: cellButtonAxisParams.cellButtonInvokeRowsOnDoubleClick,\n onClick: (params: ICellRendererParams<PlAgDataTableV2Row>) => {\n cellButtonAxisParams.trigger(params.data?.axesKey);\n },\n },\n };\n }\n }\n : undefined,\n cellStyle,\n headerComponentParams: {\n type: ((): PlAgHeaderComponentType => {\n switch (valueType) {\n case ValueType.Int:\n case ValueType.Long:\n case ValueType.Float:\n case ValueType.Double:\n return \"Number\";\n case ValueType.String:\n case ValueType.Bytes:\n return \"Text\";\n default:\n throw Error(`unsupported data type: ${valueType}`);\n }\n })(),\n tooltip: readAnnotation(labeledSpec.spec, Annotation.Description)?.trim(),\n } satisfies PlAgHeaderComponentParams,\n cellDataType: (() => {\n switch (valueType) {\n case ValueType.Int:\n case ValueType.Long:\n case ValueType.Float:\n case ValueType.Double:\n return \"number\";\n case ValueType.String:\n case ValueType.Bytes:\n return \"text\";\n default:\n throw Error(`unsupported data type: ${valueType}`);\n }\n })(),\n };\n}\n"],"names":["columns2rows","fields","columns","axes","resultMapping","rowData","iRow","axesKey","iAxis","value","pTableValue","isPTableValueAxis","row","canonicalizeJson","field","iCol","PTableHidden","calculateGridOptions","generation","pfDriver","model","sheets","dataRenderedTracker","hiddenColIds","cellButtonAxisParams","stateGeneration","stateChangedError","specs","pt","dataSpecs","specId","spec","getPTableColumnId","dataSpecsMap","i","specsToDataSpecsMapping","dataSpecIdx","sheetAxesIds","sheet","getAxisId","isPartitionedAxis","axisId","id","matchAxisId","labelColumns","setLabelColumnIndex","labelColumnIdx","info","getLabelColumnIndex","_a","indices","isLabelColumnSpec","labeledAxisId","isColumnHidden","a","b","aPriority","readAnnotationJson","Annotation","bPriority","columnDefs","makeRowNumberColDef","index","makeColDef","axesSpec","r","requestIndices","idx","rowCount","lastParams","params","ptShape","isJsonEqual","length","data","column","PlAgDataTableRowNumberColId","error","labeledSpec","colId","valueType","columnRenderingSpec","getColumnRenderingSpec","cellStyle","defaultMainMenuItems","readAnnotation","isColumnOptional","PlAgColumnHeader","_b","PlAgTextAndButtonCell","ValueType"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { PlDataTableGridStateCore, PlDataTableSheetState, PlDataTableStateV2 } from '@platforma-sdk/model';
|
|
1
|
+
import { PTableColumnSpec, PlDataTableGridStateCore, PlDataTableSheetState, PlDataTableStateV2, PlDataTableFiltersWithMeta } from '@platforma-sdk/model';
|
|
2
2
|
import { Ref, WritableComputedRef } from 'vue';
|
|
3
3
|
import { PlDataTableSettingsV2 } from '../types';
|
|
4
|
-
|
|
5
|
-
export declare function useTableState(tableStateDenormalized: Ref<PlDataTableStateV2>, settings: Ref<PlDataTableSettingsV2>): {
|
|
4
|
+
export declare function useTableState(tableStateDenormalized: Ref<PlDataTableStateV2>, settings: Ref<PlDataTableSettingsV2>, columns: Ref<PTableColumnSpec[]>): {
|
|
6
5
|
gridState: WritableComputedRef<PlDataTableGridStateCore>;
|
|
7
6
|
sheetsState: WritableComputedRef<PlDataTableSheetState[]>;
|
|
8
|
-
filtersState: WritableComputedRef<
|
|
7
|
+
filtersState: WritableComputedRef<PlDataTableFiltersWithMeta>;
|
|
8
|
+
searchString: WritableComputedRef<string>;
|
|
9
9
|
};
|
|
10
10
|
//# sourceMappingURL=table-state-v2.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-state-v2.d.ts","sourceRoot":"","sources":["../../../../src/components/PlAgDataTable/sources/table-state-v2.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,
|
|
1
|
+
{"version":3,"file":"table-state-v2.d.ts","sourceRoot":"","sources":["../../../../src/components/PlAgDataTable/sources/table-state-v2.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EAQvB,0BAA0B,EAG3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAmB,KAAK,GAAG,EAAE,KAAK,mBAAmB,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAMtD,wBAAgB,aAAa,CAC3B,sBAAsB,EAAE,GAAG,CAAC,kBAAkB,CAAC,EAC/C,QAAQ,EAAE,GAAG,CAAC,qBAAqB,CAAC,EACpC,OAAO,EAAE,GAAG,CAAC,gBAAgB,EAAE,CAAC,GAC/B;IACD,SAAS,EAAE,mBAAmB,CAAC,wBAAwB,CAAC,CAAC;IACzD,WAAW,EAAE,mBAAmB,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC1D,YAAY,EAAE,mBAAmB,CAAC,0BAA0B,CAAC,CAAC;IAC9D,YAAY,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;CAC3C,CAqHA"}
|
|
@@ -1,131 +1,141 @@
|
|
|
1
|
-
import { upgradePlDataTableStateV2 as
|
|
2
|
-
import { computed as
|
|
3
|
-
import { isJsonEqual as
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
function C(r) {
|
|
15
|
-
var a;
|
|
16
|
-
return ((a = r == null ? void 0 : r.hiddenColIds) == null ? void 0 : a.map(S).reduce((u, s) => (s.source.type === "column" && u.push(s.source.id), u), [])) ?? null;
|
|
17
|
-
}
|
|
18
|
-
function P(r) {
|
|
19
|
-
return r.map((a) => {
|
|
20
|
-
const u = h({ type: "axis", id: a.axisId });
|
|
21
|
-
return typeof a.value == "number" ? { type: "equal", column: u, x: a.value } : { type: "patternEquals", column: u, value: a.value };
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
function T(r) {
|
|
25
|
-
return (r == null ? void 0 : r.sortModel.map((a) => {
|
|
26
|
-
const { spec: u, ...s } = S(a.colId).labeled;
|
|
27
|
-
return {
|
|
28
|
-
column: s,
|
|
29
|
-
ascending: a.sort === "asc",
|
|
30
|
-
naAndAbsentAreLeastValues: a.sort === "asc"
|
|
31
|
-
};
|
|
32
|
-
})) ?? [];
|
|
33
|
-
}
|
|
34
|
-
function x(r) {
|
|
35
|
-
const a = [
|
|
36
|
-
...P(r.sheetsState),
|
|
37
|
-
...r.filtersState ? [r.filtersState] : []
|
|
38
|
-
], u = g(
|
|
39
|
-
a.length === 0 ? null : a.length === 1 ? a[0] : { type: "and", filters: a }
|
|
40
|
-
);
|
|
41
|
-
return {
|
|
42
|
-
sourceId: r.sourceId,
|
|
43
|
-
hiddenColIds: C(r.gridState.columnVisibility),
|
|
44
|
-
filters: u,
|
|
45
|
-
sorting: T(r.gridState.sort)
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
function J(r, a) {
|
|
49
|
-
const u = b({
|
|
50
|
-
get: () => v(r.value),
|
|
51
|
-
set: (e) => r.value = e
|
|
52
|
-
}), s = d({
|
|
1
|
+
import { upgradePlDataTableStateV2 as g, createDefaultPTableParams as v, distillFilterSpec as h, canonicalizeJson as m, getPTableColumnId as I, parseJson as S } from "@platforma-sdk/model";
|
|
2
|
+
import { computed as i, watch as y } from "vue";
|
|
3
|
+
import { isJsonEqual as b } from "../../../lib/util/helpers/dist/objects.js";
|
|
4
|
+
import { debounce as C } from "../../../lib/util/helpers/dist/functions.js";
|
|
5
|
+
import { randomInt as T } from "../../../lib/util/helpers/dist/random.js";
|
|
6
|
+
import { computedCached as P } from "@milaboratories/uikit";
|
|
7
|
+
import { isStringValueType as N, isNumericValueType as x } from "../../PlAdvancedFilter/utils.js";
|
|
8
|
+
import { isNil as A } from "es-toolkit";
|
|
9
|
+
function B(r, a, s) {
|
|
10
|
+
const n = P({
|
|
11
|
+
get: () => g(r.value),
|
|
12
|
+
set: C((e) => r.value = e, 300)
|
|
13
|
+
}), o = i({
|
|
53
14
|
get: () => {
|
|
54
|
-
const e =
|
|
15
|
+
const e = V(), t = a.value.sourceId;
|
|
55
16
|
if (!t) return e;
|
|
56
|
-
const
|
|
17
|
+
const u = n.value.stateCache.find(
|
|
57
18
|
(p) => p.sourceId === t
|
|
58
19
|
);
|
|
59
|
-
return
|
|
20
|
+
return u || { ...e, sourceId: t };
|
|
60
21
|
},
|
|
61
22
|
set: (e) => {
|
|
62
23
|
const t = {
|
|
63
|
-
...
|
|
64
|
-
pTableParams:
|
|
24
|
+
...n.value,
|
|
25
|
+
pTableParams: v()
|
|
65
26
|
};
|
|
66
27
|
if (e.sourceId) {
|
|
67
|
-
t.pTableParams =
|
|
68
|
-
const
|
|
28
|
+
t.pTableParams = w(e, s.value);
|
|
29
|
+
const u = t.stateCache.findIndex(
|
|
69
30
|
(p) => p.sourceId === e.sourceId
|
|
70
31
|
);
|
|
71
|
-
|
|
32
|
+
u !== -1 ? t.stateCache[u] = e : (t.stateCache.push(e), t.stateCache = t.stateCache.slice(-5));
|
|
72
33
|
}
|
|
73
|
-
n
|
|
34
|
+
b(n.value, t) || (n.value = t);
|
|
74
35
|
}
|
|
75
|
-
})
|
|
76
|
-
|
|
77
|
-
() => s.value,
|
|
78
|
-
(e) => n(s.value, e) && (s.value = e),
|
|
79
|
-
{ deep: !0 }
|
|
80
|
-
);
|
|
81
|
-
const o = d({
|
|
82
|
-
get: () => s.value.gridState,
|
|
36
|
+
}), f = i({
|
|
37
|
+
get: () => o.value.gridState,
|
|
83
38
|
set: (e) => {
|
|
84
|
-
const t =
|
|
85
|
-
t.sourceId && (
|
|
39
|
+
const t = o.value;
|
|
40
|
+
t.sourceId && (o.value = {
|
|
86
41
|
...t,
|
|
87
42
|
gridState: e
|
|
88
43
|
});
|
|
89
44
|
}
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
deep: !0
|
|
93
|
-
});
|
|
94
|
-
const c = d({
|
|
95
|
-
get: () => s.value.sheetsState,
|
|
45
|
+
}), c = i({
|
|
46
|
+
get: () => o.value.sheetsState,
|
|
96
47
|
set: (e) => {
|
|
97
|
-
const t =
|
|
98
|
-
t.sourceId && (
|
|
48
|
+
const t = o.value;
|
|
49
|
+
t.sourceId && (o.value = {
|
|
99
50
|
...t,
|
|
100
51
|
sheetsState: e
|
|
101
52
|
});
|
|
102
53
|
}
|
|
103
|
-
})
|
|
104
|
-
f(
|
|
105
|
-
c,
|
|
106
|
-
(e) => n(c.value, e) && (c.value = e),
|
|
107
|
-
{ deep: !0 }
|
|
108
|
-
);
|
|
109
|
-
const i = d({
|
|
54
|
+
}), l = i({
|
|
110
55
|
get: () => {
|
|
111
|
-
const e =
|
|
112
|
-
return e && (e.type === "and" || e.type === "or") && "filters" in e && Array.isArray(e.filters) ? e : { id:
|
|
56
|
+
const e = o.value.filtersState;
|
|
57
|
+
return e && (e.type === "and" || e.type === "or") && "filters" in e && Array.isArray(e.filters) ? e : { id: T(), type: "and", isExpanded: !0, filters: [] };
|
|
113
58
|
},
|
|
114
59
|
set: (e) => {
|
|
115
|
-
const t =
|
|
116
|
-
t.sourceId && (
|
|
60
|
+
const t = o.value;
|
|
61
|
+
t.sourceId && (o.value = {
|
|
117
62
|
...t,
|
|
118
63
|
filtersState: e
|
|
119
64
|
});
|
|
120
65
|
}
|
|
121
66
|
});
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
67
|
+
y(
|
|
68
|
+
() => l.value,
|
|
69
|
+
// capture only mutations
|
|
70
|
+
(e, t) => e === t && (l.value = e),
|
|
125
71
|
{ deep: !0 }
|
|
126
|
-
)
|
|
72
|
+
);
|
|
73
|
+
const d = i({
|
|
74
|
+
get: () => o.value.searchString ?? "",
|
|
75
|
+
set: (e) => {
|
|
76
|
+
const t = o.value;
|
|
77
|
+
t.sourceId && (o.value = {
|
|
78
|
+
...t,
|
|
79
|
+
searchString: e
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
return { gridState: f, sheetsState: c, filtersState: l, searchString: d };
|
|
84
|
+
}
|
|
85
|
+
function V() {
|
|
86
|
+
return {
|
|
87
|
+
sourceId: null,
|
|
88
|
+
gridState: {},
|
|
89
|
+
sheetsState: [],
|
|
90
|
+
filtersState: null
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function q(r) {
|
|
94
|
+
var a;
|
|
95
|
+
return ((a = r == null ? void 0 : r.hiddenColIds) == null ? void 0 : a.map(S).reduce((s, n) => (n.source.type === "column" && s.push(n.source.id), s), [])) ?? null;
|
|
96
|
+
}
|
|
97
|
+
function F(r) {
|
|
98
|
+
return r.map((a) => {
|
|
99
|
+
const s = m({ type: "axis", id: a.axisId });
|
|
100
|
+
return typeof a.value == "number" ? { type: "equal", column: s, x: a.value } : { type: "patternEquals", column: s, value: a.value };
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
function E(r) {
|
|
104
|
+
return (r == null ? void 0 : r.sortModel.map((a) => {
|
|
105
|
+
const { spec: s, ...n } = S(a.colId).labeled;
|
|
106
|
+
return {
|
|
107
|
+
column: n,
|
|
108
|
+
ascending: a.sort === "asc",
|
|
109
|
+
naAndAbsentAreLeastValues: a.sort === "asc"
|
|
110
|
+
};
|
|
111
|
+
})) ?? [];
|
|
112
|
+
}
|
|
113
|
+
function J(r, a) {
|
|
114
|
+
const s = a == null ? void 0 : a.trim();
|
|
115
|
+
if (A(s) || s.length === 0) return null;
|
|
116
|
+
const n = [], o = Number(s), f = s.length > 0 && !isNaN(o) && isFinite(o);
|
|
117
|
+
for (const c of r) {
|
|
118
|
+
const l = m(I(c)), d = c.spec;
|
|
119
|
+
N(d) && n.push({ type: "patternEquals", column: l, value: s }), x(d) && f && n.push({ type: "equal", column: l, x: o });
|
|
120
|
+
}
|
|
121
|
+
return n.length === 0 ? null : { type: "or", filters: n };
|
|
122
|
+
}
|
|
123
|
+
function w(r, a) {
|
|
124
|
+
const s = J(a, r.searchString), n = [
|
|
125
|
+
...F(r.sheetsState),
|
|
126
|
+
...r.filtersState ? [r.filtersState] : [],
|
|
127
|
+
...s ? [s] : []
|
|
128
|
+
], o = h(
|
|
129
|
+
n.length === 0 ? null : n.length === 1 ? n[0] : { type: "and", filters: n }
|
|
130
|
+
);
|
|
131
|
+
return {
|
|
132
|
+
sourceId: r.sourceId,
|
|
133
|
+
hiddenColIds: q(r.gridState.columnVisibility),
|
|
134
|
+
filters: o,
|
|
135
|
+
sorting: E(r.gridState.sort)
|
|
136
|
+
};
|
|
127
137
|
}
|
|
128
138
|
export {
|
|
129
|
-
|
|
139
|
+
B as useTableState
|
|
130
140
|
};
|
|
131
141
|
//# sourceMappingURL=table-state-v2.js.map
|