@platforma-sdk/ui-vue 1.42.2 → 1.42.4
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 +15 -15
- package/.turbo/turbo-type-check.log +1 -1
- package/CHANGELOG.md +15 -0
- package/dist/aggrid.js +4 -4
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js +7 -7
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +13 -13
- package/dist/components/PlAgDataTable/sources/table-source-v2.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-source-v2.js +88 -85
- package/dist/components/PlAgDataTable/sources/table-source-v2.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-state-v2.js +6 -6
- package/dist/components/PlAnnotations/components/DynamicForm.vue2.js +10 -10
- package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js +2 -2
- package/dist/components/PlMultiSequenceAlignment/data.js +26 -26
- package/dist/components/PlTableFilters/filters-state.js +2 -2
- package/dist/defineApp.js +16 -16
- package/dist/internal/createAppV2.d.ts.map +1 -1
- package/dist/internal/createAppV2.js +61 -52
- package/dist/internal/createAppV2.js.map +1 -1
- package/dist/lib/model/common/dist/index.js +329 -317
- package/dist/lib/model/common/dist/index.js.map +1 -1
- package/dist/lib/ui/uikit/dist/components/PlAccordion/{ExpandTransition.vue2.js → ExpandTransition.vue.js} +1 -1
- package/dist/lib/ui/uikit/dist/components/PlAccordion/ExpandTransition.vue.js.map +1 -0
- package/dist/lib/ui/uikit/dist/components/PlAccordion/PlAccordionSection.vue2.js +1 -1
- package/dist/lib/ui/uikit/dist/components/PlFileInput/PlFileInput.vue.js +16 -16
- package/dist/lib/ui/uikit/dist/components/PlFileInput/PlFileInput.vue.js.map +1 -1
- package/dist/lib/ui/uikit/dist/lib/model/common/dist/index.js +8 -8
- package/dist/lib/ui/uikit/dist/lib/model/common/dist/index.js.map +1 -1
- package/dist/lib/ui/uikit/dist/sdk/model/dist/index.js +18 -18
- package/dist/lib/ui/uikit/dist/sdk/model/dist/index.js.map +1 -1
- package/dist/node_modules/.pnpm/@vueuse_core@13.3.0_vue@3.5.13_typescript@5.6.3_/node_modules/@vueuse/core/index.js +44 -41
- package/dist/node_modules/.pnpm/@vueuse_shared@13.3.0_vue@3.5.13_typescript@5.6.3_/node_modules/@vueuse/shared/index.js +122 -67
- package/dist/node_modules/.pnpm/@vueuse_shared@13.3.0_vue@3.5.13_typescript@5.6.3_/node_modules/@vueuse/shared/index.js.map +1 -1
- package/dist/sdk/model/dist/index.js +198 -206
- package/dist/sdk/model/dist/index.js.map +1 -1
- package/package.json +7 -7
- package/src/components/PlAgDataTable/sources/table-source-v2.ts +9 -6
- package/src/internal/createAppV2.ts +22 -13
- package/dist/lib/ui/uikit/dist/components/PlAccordion/ExpandTransition.vue2.js.map +0 -1
|
@@ -1,52 +1,55 @@
|
|
|
1
|
-
import { isLabelColumn as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import { PTableHidden as
|
|
1
|
+
import { isLabelColumn as L, isColumnHidden as H, isColumnOptional as _ } from "../../../sdk/model/dist/index.js";
|
|
2
|
+
import V from "../../PlAgColumnHeader/PlAgColumnHeader.vue.js";
|
|
3
|
+
import z from "../../PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js";
|
|
4
|
+
import { PTableHidden as K } from "./common.js";
|
|
5
5
|
import { defaultMainMenuItems as j } from "./menu-items.js";
|
|
6
|
-
import { makeRowNumberColDef as
|
|
7
|
-
import { getColumnRenderingSpec as
|
|
8
|
-
import { isJsonEqual as
|
|
9
|
-
import { canonicalizeJson as
|
|
10
|
-
function
|
|
11
|
-
switch (
|
|
6
|
+
import { makeRowNumberColDef as Q, PlAgDataTableRowNumberColId as U } from "./row-number.js";
|
|
7
|
+
import { getColumnRenderingSpec as W } from "./value-rendering.js";
|
|
8
|
+
import { isJsonEqual as E } from "../../../lib/util/helpers/dist/index.js";
|
|
9
|
+
import { canonicalizeJson as F, getAxisId as O, matchAxisId as T, pTableValue as q, isPTableValueAxis as X } from "../../../lib/model/common/dist/index.js";
|
|
10
|
+
function Y(i) {
|
|
11
|
+
switch (i.type) {
|
|
12
12
|
case "axis":
|
|
13
13
|
return {
|
|
14
14
|
type: "axis",
|
|
15
|
-
id:
|
|
15
|
+
id: O(i.spec)
|
|
16
16
|
};
|
|
17
17
|
case "column":
|
|
18
18
|
return {
|
|
19
19
|
type: "column",
|
|
20
|
-
id:
|
|
20
|
+
id: i.id
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
function
|
|
25
|
-
const
|
|
26
|
-
for (let
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}),
|
|
24
|
+
function Z(i, o, w, u) {
|
|
25
|
+
const l = [];
|
|
26
|
+
for (let d = 0; d < o[0].data.length; ++d) {
|
|
27
|
+
const f = w.map((n) => {
|
|
28
|
+
const a = q(o[u[n]], d);
|
|
29
|
+
if (!X(a))
|
|
30
|
+
throw new Error(`axis value is not a PTableValueAxis: ${JSON.stringify(a)}`);
|
|
31
|
+
return a;
|
|
32
|
+
}), c = { id: F(f), axesKey: f };
|
|
33
|
+
i.forEach((n, a) => {
|
|
34
|
+
c[n.toString()] = u[a] === -1 ? K : q(o[u[a]], d);
|
|
35
|
+
}), l.push(c);
|
|
33
36
|
}
|
|
34
|
-
return
|
|
37
|
+
return l;
|
|
35
38
|
}
|
|
36
39
|
async function ue({
|
|
37
|
-
generation:
|
|
40
|
+
generation: i,
|
|
38
41
|
pfDriver: o,
|
|
39
42
|
model: w,
|
|
40
|
-
sheets:
|
|
41
|
-
dataRenderedTracker:
|
|
42
|
-
hiddenColIds:
|
|
43
|
-
cellButtonAxisParams:
|
|
43
|
+
sheets: u,
|
|
44
|
+
dataRenderedTracker: l,
|
|
45
|
+
hiddenColIds: d,
|
|
46
|
+
cellButtonAxisParams: f
|
|
44
47
|
}) {
|
|
45
|
-
const
|
|
46
|
-
if (
|
|
47
|
-
const
|
|
48
|
-
if (
|
|
49
|
-
const x = (e) =>
|
|
48
|
+
const r = i.value, c = new Error("table state generation changed"), n = await o.getSpec(w.fullTableHandle);
|
|
49
|
+
if (r !== i.value) throw c;
|
|
50
|
+
const a = w.visibleTableHandle, S = await o.getSpec(a);
|
|
51
|
+
if (r !== i.value) throw c;
|
|
52
|
+
const x = (e) => F(Y(e)), b = new Map(
|
|
50
53
|
S.entries().map(([e, t]) => [x(t), e])
|
|
51
54
|
), g = new Map(
|
|
52
55
|
n.entries().map(([e, t]) => {
|
|
@@ -55,129 +58,129 @@ async function ue({
|
|
|
55
58
|
throw new Error(`axis ${JSON.stringify(t.spec)} not present in join result`);
|
|
56
59
|
return [e, s];
|
|
57
60
|
})
|
|
58
|
-
), v =
|
|
61
|
+
), v = u.map((e) => O(e.axis)), h = (e) => v.some((t) => T(t, e)), I = [], A = (e, t) => {
|
|
59
62
|
I.some((s) => T(s.axisId, e)) ? console.warn(`multiple label columns match axisId: ${JSON.stringify(e)}`) : I.push({ axisId: e, labelColumnIdx: t });
|
|
60
|
-
},
|
|
63
|
+
}, P = (e) => {
|
|
61
64
|
var t;
|
|
62
65
|
return ((t = I.find((s) => T(s.axisId, e))) == null ? void 0 : t.labelColumnIdx) ?? -1;
|
|
63
66
|
};
|
|
64
|
-
let
|
|
67
|
+
let p = n.entries().filter(
|
|
65
68
|
([e, t]) => {
|
|
66
69
|
switch (t.type) {
|
|
67
70
|
case "axis":
|
|
68
71
|
return !h(t.id);
|
|
69
72
|
case "column":
|
|
70
|
-
if (
|
|
71
|
-
const s =
|
|
73
|
+
if (L(t.spec)) {
|
|
74
|
+
const s = O(t.spec.axesSpec[0]);
|
|
72
75
|
return h(s) || A(s, e), !1;
|
|
73
76
|
}
|
|
74
|
-
return !
|
|
77
|
+
return !H(t.spec);
|
|
75
78
|
}
|
|
76
79
|
}
|
|
77
80
|
).map(([e]) => e).toArray();
|
|
78
|
-
|
|
79
|
-
var k
|
|
81
|
+
p.sort((e, t) => {
|
|
82
|
+
var $, k;
|
|
80
83
|
if (n[e].type !== n[t].type) return n[e].type === "axis" ? -1 : 1;
|
|
81
|
-
const s = (
|
|
84
|
+
const s = ($ = n[e].spec.annotations) == null ? void 0 : $["pl7.app/table/orderPriority"], y = (k = n[t].spec.annotations) == null ? void 0 : k["pl7.app/table/orderPriority"];
|
|
82
85
|
return s === void 0 ? y === void 0 ? 0 : 1 : y === void 0 ? -1 : Number(y) - Number(s);
|
|
83
86
|
});
|
|
84
|
-
const
|
|
85
|
-
|
|
87
|
+
const M = [...p];
|
|
88
|
+
p = p.map((e) => {
|
|
86
89
|
const t = n[e];
|
|
87
90
|
if (t.type === "axis") {
|
|
88
|
-
const s =
|
|
91
|
+
const s = P(t.id);
|
|
89
92
|
if (s !== -1)
|
|
90
93
|
return s;
|
|
91
94
|
}
|
|
92
95
|
return e;
|
|
93
96
|
});
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
...
|
|
97
|
-
],
|
|
98
|
-
let t =
|
|
99
|
-
return t === -1 && (t =
|
|
97
|
+
const G = [
|
|
98
|
+
Q(),
|
|
99
|
+
...M.map((e, t) => B(e, n[e], n[p[t]], d, f))
|
|
100
|
+
], N = n.values().filter((e) => e.type === "axis").map((e) => e.spec).toArray(), J = N.keys().map((e) => {
|
|
101
|
+
let t = p.indexOf(e);
|
|
102
|
+
return t === -1 && (t = p.length, p.push(e)), t;
|
|
100
103
|
}).toArray(), C = [], D = [];
|
|
101
|
-
|
|
104
|
+
p.forEach((e) => {
|
|
102
105
|
const t = g.get(e);
|
|
103
106
|
t !== -1 ? (D.push(C.length), C.push(t)) : D.push(-1);
|
|
104
107
|
});
|
|
105
108
|
let m = -1, R;
|
|
106
109
|
return {
|
|
107
|
-
axesSpec:
|
|
108
|
-
columnDefs:
|
|
110
|
+
axesSpec: N,
|
|
111
|
+
columnDefs: G,
|
|
109
112
|
serverSideDatasource: {
|
|
110
113
|
getRows: async (e) => {
|
|
111
|
-
if (
|
|
114
|
+
if (r !== i.value) return e.fail();
|
|
112
115
|
try {
|
|
113
116
|
if (m === -1) {
|
|
114
|
-
const y = await o.getShape(
|
|
115
|
-
if (
|
|
117
|
+
const y = await o.getShape(a);
|
|
118
|
+
if (r !== i.value || e.api.isDestroyed()) return e.fail();
|
|
116
119
|
m = y.rows;
|
|
117
120
|
}
|
|
118
121
|
if (m == 0) {
|
|
119
122
|
e.success({ rowData: [], rowCount: m }), e.api.setGridOption("loading", !1), e.api.showNoRowsOverlay();
|
|
120
123
|
return;
|
|
121
124
|
}
|
|
122
|
-
if (R &&
|
|
125
|
+
if (R && !E(R.request.sortModel, e.request.sortModel))
|
|
123
126
|
return e.success({ rowData: [], rowCount: m });
|
|
124
127
|
R = e;
|
|
125
128
|
let t = 0, s = [];
|
|
126
129
|
if (m > 0 && e.request.startRow !== void 0 && e.request.endRow !== void 0 && (t = Math.min(m, e.request.endRow) - e.request.startRow, t > 0)) {
|
|
127
|
-
const y = await o.getData(
|
|
130
|
+
const y = await o.getData(a, C, {
|
|
128
131
|
offset: e.request.startRow,
|
|
129
132
|
length: t
|
|
130
133
|
});
|
|
131
|
-
if (
|
|
132
|
-
s =
|
|
134
|
+
if (r !== i.value || e.api.isDestroyed()) return e.fail();
|
|
135
|
+
s = Z(M, y, J, D);
|
|
133
136
|
}
|
|
134
137
|
e.success({ rowData: s, rowCount: m }), e.api.autoSizeColumns(
|
|
135
|
-
e.api.getAllDisplayedColumns().filter((y) => y.getColId() !==
|
|
136
|
-
), e.api.setGridOption("loading", !1),
|
|
138
|
+
e.api.getAllDisplayedColumns().filter((y) => y.getColId() !== U)
|
|
139
|
+
), e.api.setGridOption("loading", !1), l.resolve(e.api);
|
|
137
140
|
} catch (t) {
|
|
138
|
-
if (
|
|
141
|
+
if (r !== i.value || e.api.isDestroyed()) return e.fail();
|
|
139
142
|
e.api.setGridOption("loading", !0), e.fail(), console.trace(t);
|
|
140
143
|
}
|
|
141
144
|
}
|
|
142
145
|
}
|
|
143
146
|
};
|
|
144
147
|
}
|
|
145
|
-
function B(
|
|
146
|
-
var n,
|
|
147
|
-
const
|
|
148
|
+
function B(i, o, w, u, l) {
|
|
149
|
+
var n, a;
|
|
150
|
+
const d = F({
|
|
148
151
|
source: o,
|
|
149
152
|
labeled: w
|
|
150
|
-
}),
|
|
151
|
-
return
|
|
152
|
-
colId:
|
|
153
|
+
}), f = o.type === "axis" ? o.spec.type : o.spec.valueType, r = W(o), c = {};
|
|
154
|
+
return r.fontFamily && (r.fontFamily === "monospace" ? (c.fontFamily = "Spline Sans Mono", c.fontWeight = 300) : c.fontFamily = r.fontFamily), {
|
|
155
|
+
colId: d,
|
|
153
156
|
mainMenuItems: j,
|
|
154
157
|
context: o,
|
|
155
|
-
field: `${
|
|
156
|
-
headerName: ((
|
|
158
|
+
field: `${i}`,
|
|
159
|
+
headerName: ((a = (n = w.spec.annotations) == null ? void 0 : n["pl7.app/label"]) == null ? void 0 : a.trim()) ?? `Unlabeled ${o.type} ${i}`,
|
|
157
160
|
lockPosition: o.type === "axis",
|
|
158
|
-
hide: (
|
|
159
|
-
valueFormatter:
|
|
160
|
-
headerComponent:
|
|
161
|
-
cellRendererSelector:
|
|
161
|
+
hide: (u == null ? void 0 : u.includes(d)) ?? _(o.spec),
|
|
162
|
+
valueFormatter: r.valueFormatter,
|
|
163
|
+
headerComponent: V,
|
|
164
|
+
cellRendererSelector: l != null && l.showCellButtonForAxisId ? (S) => {
|
|
162
165
|
var b, g;
|
|
163
166
|
if (o.type !== "axis") return;
|
|
164
167
|
const x = (g = (b = S.colDef) == null ? void 0 : b.context) == null ? void 0 : g.id;
|
|
165
|
-
if (
|
|
168
|
+
if (E(x, l.showCellButtonForAxisId))
|
|
166
169
|
return {
|
|
167
|
-
component:
|
|
170
|
+
component: z,
|
|
168
171
|
params: {
|
|
169
|
-
invokeRowsOnDoubleClick:
|
|
172
|
+
invokeRowsOnDoubleClick: l.cellButtonInvokeRowsOnDoubleClick,
|
|
170
173
|
onClick: (v) => {
|
|
171
174
|
var h;
|
|
172
|
-
|
|
175
|
+
l.trigger((h = v.data) == null ? void 0 : h.axesKey);
|
|
173
176
|
}
|
|
174
177
|
}
|
|
175
178
|
};
|
|
176
179
|
} : void 0,
|
|
177
|
-
cellStyle:
|
|
180
|
+
cellStyle: c,
|
|
178
181
|
headerComponentParams: {
|
|
179
182
|
type: (() => {
|
|
180
|
-
switch (
|
|
183
|
+
switch (f) {
|
|
181
184
|
case "Int":
|
|
182
185
|
case "Long":
|
|
183
186
|
case "Float":
|
|
@@ -187,12 +190,12 @@ function B(a, o, w, c, r) {
|
|
|
187
190
|
case "Bytes":
|
|
188
191
|
return "Text";
|
|
189
192
|
default:
|
|
190
|
-
throw Error(`unsupported data type: ${
|
|
193
|
+
throw Error(`unsupported data type: ${f}`);
|
|
191
194
|
}
|
|
192
195
|
})()
|
|
193
196
|
},
|
|
194
197
|
cellDataType: (() => {
|
|
195
|
-
switch (
|
|
198
|
+
switch (f) {
|
|
196
199
|
case "Int":
|
|
197
200
|
case "Long":
|
|
198
201
|
case "Float":
|
|
@@ -202,14 +205,14 @@ function B(a, o, w, c, r) {
|
|
|
202
205
|
case "Bytes":
|
|
203
206
|
return "text";
|
|
204
207
|
default:
|
|
205
|
-
throw Error(`unsupported data type: ${
|
|
208
|
+
throw Error(`unsupported data type: ${f}`);
|
|
206
209
|
}
|
|
207
210
|
})()
|
|
208
211
|
};
|
|
209
212
|
}
|
|
210
213
|
export {
|
|
211
214
|
ue as calculateGridOptions,
|
|
212
|
-
|
|
215
|
+
Y as getPTableColumnId,
|
|
213
216
|
B as makeColDef
|
|
214
217
|
};
|
|
215
218
|
//# 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} from '@platforma-sdk/model';\nimport {\n canonicalizeJson,\n getAxisId,\n isColumnOptional,\n mapPTableValueToAxisKey,\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} 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 {\n PTableHidden,\n} 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 = axes.map((iAxis) => {\n return mapPTableValueToAxisKey(\n pTableValue(columns[resultMapping[iAxis]], iRow),\n );\n });\n const id = canonicalizeJson<PlTableRowId>(axesKey);\n const row: PlAgDataTableV2Row = { id, axesKey };\n fields.forEach((field, iCol) => {\n row[field.toString() as `${number}`] = resultMapping[iCol] === -1\n ? PTableHidden\n : 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<Pick<ManagedGridOptions<PlAgDataTableV2Row>, 'columnDefs' | 'serverSideDatasource'> & { axesSpec: AxesSpec }> {\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) => canonicalizeJson<PTableColumnId>(getPTableColumnId(spec));\n const dataSpecsMap = new Map(\n dataSpecs.entries().map(([i, spec]) => [specId(spec), i]),\n );\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.entries()\n .filter(\n ([i, spec]) => {\n switch (spec.type) {\n case 'axis': 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 )\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 = specs[a].spec.annotations?.['pl7.app/table/orderPriority'];\n const bPriority = specs[b].spec.annotations?.['pl7.app/table/orderPriority'];\n\n if (aPriority === undefined) return bPriority === undefined ? 0 : 1;\n if (bPriority === undefined) return -1;\n return Number(bPriority) - Number(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) => makeColDef(field, specs[field], specs[indices[index]], hiddenColIds, cellButtonAxisParams)),\n ];\n\n // mix in indices of skipped axes (axes that were partitioned or replaced with label columns)\n const axesSpec = specs.values().filter((spec) => spec.type === 'axis').map((spec) => spec.spec).toArray();\n const axes = axesSpec.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()) 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 (rowCount > 0 && params.request.startRow !== undefined && params.request.endRow !== undefined) {\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()) 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.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: labeledSpec.spec.annotations?.['pl7.app/label']?.trim() ?? `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 'Int':\n case 'Long':\n case 'Float':\n case 'Double':\n return 'Number';\n case 'String':\n case 'Bytes':\n return 'Text';\n default:\n throw Error(`unsupported data type: ${valueType}`);\n }\n })(),\n } satisfies PlAgHeaderComponentParams,\n cellDataType: (() => {\n switch (valueType) {\n case 'Int':\n case 'Long':\n case 'Float':\n case 'Double':\n return 'number';\n case 'String':\n case '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","mapPTableValueToAxisKey","pTableValue","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","bPriority","_b","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","isColumnOptional","PlAgColumnHeader","PlAgTextAndButtonCell"],"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} 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 {\n PTableHidden,\n} 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\n .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}`] = resultMapping[iCol] === -1\n ? PTableHidden\n : 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<Pick<ManagedGridOptions<PlAgDataTableV2Row>, 'columnDefs' | 'serverSideDatasource'> & { axesSpec: AxesSpec }> {\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) => canonicalizeJson<PTableColumnId>(getPTableColumnId(spec));\n const dataSpecsMap = new Map(\n dataSpecs.entries().map(([i, spec]) => [specId(spec), i]),\n );\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.entries()\n .filter(\n ([i, spec]) => {\n switch (spec.type) {\n case 'axis': 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 )\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 = specs[a].spec.annotations?.['pl7.app/table/orderPriority'];\n const bPriority = specs[b].spec.annotations?.['pl7.app/table/orderPriority'];\n\n if (aPriority === undefined) return bPriority === undefined ? 0 : 1;\n if (bPriority === undefined) return -1;\n return Number(bPriority) - Number(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) => makeColDef(field, specs[field], specs[indices[index]], hiddenColIds, cellButtonAxisParams)),\n ];\n\n // mix in indices of skipped axes (axes that were partitioned or replaced with label columns)\n const axesSpec = specs.values().filter((spec) => spec.type === 'axis').map((spec) => spec.spec).toArray();\n const axes = axesSpec.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()) 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 (rowCount > 0 && params.request.startRow !== undefined && params.request.endRow !== undefined) {\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()) 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.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: labeledSpec.spec.annotations?.['pl7.app/label']?.trim() ?? `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 'Int':\n case 'Long':\n case 'Float':\n case 'Double':\n return 'Number';\n case 'String':\n case 'Bytes':\n return 'Text';\n default:\n throw Error(`unsupported data type: ${valueType}`);\n }\n })(),\n } satisfies PlAgHeaderComponentParams,\n cellDataType: (() => {\n switch (valueType) {\n case 'Int':\n case 'Long':\n case 'Float':\n case 'Double':\n return 'number';\n case 'String':\n case '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","bPriority","_b","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","isColumnOptional","PlAgColumnHeader","PlAgTextAndButtonCell"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { isJsonEqual as I } from "../../../lib/util/helpers/dist/index.js";
|
|
|
4
4
|
import { makePredicate as g } from "../../PlTableFilters/filters_logic.js";
|
|
5
5
|
import "../../../lib/ui/uikit/dist/index.js";
|
|
6
6
|
import { computedCached as b } from "../../../lib/ui/uikit/dist/composition/computedCached.js";
|
|
7
|
-
import { parseJson as
|
|
7
|
+
import { parseJson as c } from "../../../lib/model/common/dist/index.js";
|
|
8
8
|
function P() {
|
|
9
9
|
return {
|
|
10
10
|
sourceId: null,
|
|
@@ -15,7 +15,7 @@ function P() {
|
|
|
15
15
|
}
|
|
16
16
|
function C(e) {
|
|
17
17
|
var o;
|
|
18
|
-
return ((o = e == null ? void 0 : e.hiddenColIds) == null ? void 0 : o.map(
|
|
18
|
+
return ((o = e == null ? void 0 : e.hiddenColIds) == null ? void 0 : o.map(c).reduce((a, s) => (s.source.type === "column" && a.push(s.source.id), a), [])) ?? null;
|
|
19
19
|
}
|
|
20
20
|
function T(e) {
|
|
21
21
|
return e.map((o) => ({
|
|
@@ -39,7 +39,7 @@ function k(e) {
|
|
|
39
39
|
}
|
|
40
40
|
function y(e) {
|
|
41
41
|
return (e == null ? void 0 : e.sortModel.map((o) => {
|
|
42
|
-
const { spec: a, ...s } =
|
|
42
|
+
const { spec: a, ...s } = c(
|
|
43
43
|
o.colId
|
|
44
44
|
).labeled;
|
|
45
45
|
return {
|
|
@@ -49,7 +49,7 @@ function y(e) {
|
|
|
49
49
|
};
|
|
50
50
|
})) ?? [];
|
|
51
51
|
}
|
|
52
|
-
function
|
|
52
|
+
function d(e) {
|
|
53
53
|
return {
|
|
54
54
|
sourceId: e.sourceId,
|
|
55
55
|
hiddenColIds: C(e.gridState.columnVisibility),
|
|
@@ -78,7 +78,7 @@ function E(e, o) {
|
|
|
78
78
|
pTableParams: i()
|
|
79
79
|
};
|
|
80
80
|
if (t.sourceId) {
|
|
81
|
-
u.pTableParams =
|
|
81
|
+
u.pTableParams = d(t);
|
|
82
82
|
const l = u.stateCache.findIndex((S) => S.sourceId === t.sourceId);
|
|
83
83
|
l !== -1 ? u.stateCache[l] = t : (u.stateCache.push(t), u.stateCache = u.stateCache.slice(-5));
|
|
84
84
|
}
|
|
@@ -88,7 +88,7 @@ function E(e, o) {
|
|
|
88
88
|
h(
|
|
89
89
|
() => s.value,
|
|
90
90
|
(t) => {
|
|
91
|
-
const r = t.sourceId ?
|
|
91
|
+
const r = t.sourceId ? d(t) : i(), u = a.value.pTableParams;
|
|
92
92
|
I(r, u) || (a.value = {
|
|
93
93
|
...a.value,
|
|
94
94
|
pTableParams: r
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { defineComponent as g, mergeModels as O, useModel as D, computed as c, watch as _, resolveComponent as h, createElementBlock as v, createCommentVNode as V, openBlock as u, normalizeClass as B, Fragment as i, renderList as S, createBlock as p, unref as s, withCtx as j, createTextVNode as w, toDisplayString as U } from "vue";
|
|
2
2
|
import { isNil as R } from "../../../lib/util/helpers/dist/index.js";
|
|
3
3
|
import "../../../lib/ui/uikit/dist/index.js";
|
|
4
|
-
import { getFilterUiMetadata as
|
|
4
|
+
import { getFilterUiMetadata as x, getFilterUiTypeOptions as z } from "../../../sdk/model/dist/index.js";
|
|
5
5
|
import k from "../../../lib/ui/uikit/dist/components/PlDropdown/PlDropdown.vue.js";
|
|
6
|
-
import
|
|
6
|
+
import E from "../../../lib/ui/uikit/dist/components/PlTextField/PlTextField.vue.js";
|
|
7
7
|
import T from "../../../lib/ui/uikit/dist/components/PlNumberField/PlNumberField.vue.js";
|
|
8
|
-
import
|
|
9
|
-
const
|
|
8
|
+
import I from "../../../lib/ui/uikit/dist/components/PlCheckbox/PlCheckbox.vue.js";
|
|
9
|
+
const L = { key: 7 }, H = /* @__PURE__ */ g({
|
|
10
10
|
__name: "DynamicForm",
|
|
11
11
|
props: /* @__PURE__ */ O({
|
|
12
12
|
columns: {},
|
|
@@ -25,8 +25,8 @@ const I = { key: 7 }, K = /* @__PURE__ */ g({
|
|
|
25
25
|
}), f = c(() => {
|
|
26
26
|
const o = t.value;
|
|
27
27
|
if (o.type && typeof o.type == "string")
|
|
28
|
-
return
|
|
29
|
-
}), M = c(() =>
|
|
28
|
+
return x(o.type);
|
|
29
|
+
}), M = c(() => z(b.value)), F = c(() => d.columns.map((o) => ({ label: o.label, value: o.id }))), C = c(() => {
|
|
30
30
|
const o = f.value, n = b.value;
|
|
31
31
|
return o && n ? d.columns.filter((r) => o.supportedFor(n, r.obj)).map((r) => ({
|
|
32
32
|
label: r.label,
|
|
@@ -66,7 +66,7 @@ const I = { key: 7 }, K = /* @__PURE__ */ g({
|
|
|
66
66
|
label: l.label ?? e,
|
|
67
67
|
options: M.value,
|
|
68
68
|
"onUpdate:modelValue": (a) => m(e, a)
|
|
69
|
-
}, null, 8, ["model-value", "label", "options", "onUpdate:modelValue"])) : l.fieldType === "string" ? (u(), p(s(
|
|
69
|
+
}, null, 8, ["model-value", "label", "options", "onUpdate:modelValue"])) : l.fieldType === "string" ? (u(), p(s(E), {
|
|
70
70
|
key: 2,
|
|
71
71
|
"model-value": t.value[e],
|
|
72
72
|
label: l.label ?? e,
|
|
@@ -88,7 +88,7 @@ const I = { key: 7 }, K = /* @__PURE__ */ g({
|
|
|
88
88
|
label: l.label ?? e,
|
|
89
89
|
clearable: !0,
|
|
90
90
|
"onUpdate:modelValue": (a) => m(e, a)
|
|
91
|
-
}, null, 8, ["model-value", "label", "onUpdate:modelValue"])) : l.fieldType === "boolean" || l.fieldType === "boolean?" ? (u(), p(s(
|
|
91
|
+
}, null, 8, ["model-value", "label", "onUpdate:modelValue"])) : l.fieldType === "boolean" || l.fieldType === "boolean?" ? (u(), p(s(I), {
|
|
92
92
|
key: 6,
|
|
93
93
|
"model-value": !!t.value[e],
|
|
94
94
|
label: l.label ?? e,
|
|
@@ -98,13 +98,13 @@ const I = { key: 7 }, K = /* @__PURE__ */ g({
|
|
|
98
98
|
w(U(l.label ?? e), 1)
|
|
99
99
|
]),
|
|
100
100
|
_: 2
|
|
101
|
-
}, 1032, ["model-value", "label", "onUpdate:modelValue"])) : (u(), v("pre",
|
|
101
|
+
}, 1032, ["model-value", "label", "onUpdate:modelValue"])) : (u(), v("pre", L, "TODO:" + U(l.fieldType), 1))
|
|
102
102
|
], 64))), 128))
|
|
103
103
|
], 2)) : V("", !0);
|
|
104
104
|
};
|
|
105
105
|
}
|
|
106
106
|
});
|
|
107
107
|
export {
|
|
108
|
-
|
|
108
|
+
H as default
|
|
109
109
|
};
|
|
110
110
|
//# sourceMappingURL=DynamicForm.vue2.js.map
|
|
@@ -8,7 +8,7 @@ import D from "../../../lib/ui/uikit/dist/components/PlSidebar/PlSidebarItem.vue
|
|
|
8
8
|
import V from "../../../lib/ui/uikit/dist/components/PlBtnSecondary/PlBtnSecondary.vue.js";
|
|
9
9
|
import j from "../../../lib/ui/uikit/dist/components/PlElementList/PlElementList.vue.js";
|
|
10
10
|
import q from "../../../lib/ui/uikit/dist/components/PlEditableTitle/PlEditableTitle.vue.js";
|
|
11
|
-
const I = { key: 1 },
|
|
11
|
+
const I = { key: 1 }, K = /* @__PURE__ */ E({
|
|
12
12
|
__name: "FilterSidebar",
|
|
13
13
|
props: /* @__PURE__ */ S({
|
|
14
14
|
columns: {},
|
|
@@ -119,6 +119,6 @@ const I = { key: 1 }, O = /* @__PURE__ */ E({
|
|
|
119
119
|
}
|
|
120
120
|
});
|
|
121
121
|
export {
|
|
122
|
-
|
|
122
|
+
K as default
|
|
123
123
|
};
|
|
124
124
|
//# sourceMappingURL=FilterSidebar.vue2.js.map
|