@sqlrooms/pivot 0.29.0-rc.2 → 0.29.0-rc.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/LICENSE.md +9 -0
- package/README.md +6 -0
- package/dist/PivotCellContent.d.ts.map +1 -1
- package/dist/PivotCellContent.js +5 -4
- package/dist/PivotCellContent.js.map +1 -1
- package/dist/PivotSlice.d.ts.map +1 -1
- package/dist/PivotSlice.js +19 -23
- package/dist/PivotSlice.js.map +1 -1
- package/dist/PivotView.d.ts +3 -1
- package/dist/PivotView.d.ts.map +1 -1
- package/dist/PivotView.js +11 -15
- package/dist/PivotView.js.map +1 -1
- package/dist/pivotCellRegistryEntry.d.ts.map +1 -1
- package/dist/pivotCellRegistryEntry.js +7 -5
- package/dist/pivotCellRegistryEntry.js.map +1 -1
- package/dist/types.d.ts +6 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -1
- package/dist/types.js.map +1 -1
- package/package.json +22 -21
package/LICENSE.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright 2025 SQLRooms Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
6
|
+
|
|
7
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
8
|
+
|
|
9
|
+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
# @sqlrooms/pivot
|
|
2
2
|
|
|
3
3
|
Slice-driven pivot table UI for SQLRooms, inspired by `react-pivottable` and backed by DuckDB SQL plus Vega-Lite charts.
|
|
4
|
+
|
|
5
|
+
## Selection model
|
|
6
|
+
|
|
7
|
+
- `createPivotSlice` manages pivot definitions and runtime state, but not host-level selection.
|
|
8
|
+
- Host apps should decide which pivot is visible, for example with layout tabs or an artifacts/workspace registry.
|
|
9
|
+
- `PivotView` now requires an explicit `pivotId` prop.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PivotCellContent.d.ts","sourceRoot":"","sources":["../src/PivotCellContent.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,
|
|
1
|
+
{"version":3,"file":"PivotCellContent.d.ts","sourceRoot":"","sources":["../src/PivotCellContent.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAOxB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAA6B,MAAM,OAAO,CAAC;AAKlD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,kBAAkB,CAAC;AAEhD,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,eAAe,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,KAAK,CAAC,YAAY,CAAC;CACpE,CAAC;AA8CF,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA6D5D,CAAC"}
|
package/dist/PivotCellContent.js
CHANGED
|
@@ -5,7 +5,7 @@ import { Label } from '@sqlrooms/ui';
|
|
|
5
5
|
import { useCallback, useMemo } from 'react';
|
|
6
6
|
import { useStore } from 'zustand';
|
|
7
7
|
import { PivotEditor } from './PivotEditor';
|
|
8
|
-
const PivotSourceSelect = ({ store }) => {
|
|
8
|
+
const PivotSourceSelect = ({ artifactId, store }) => {
|
|
9
9
|
const source = useStore(store, (state) => state.source);
|
|
10
10
|
const value = source
|
|
11
11
|
? source.kind === 'table'
|
|
@@ -22,13 +22,14 @@ const PivotSourceSelect = ({ store }) => {
|
|
|
22
22
|
: undefined;
|
|
23
23
|
store.getState().setSource(nextSource);
|
|
24
24
|
}, [store]);
|
|
25
|
-
return (_jsxs("div", { className: "space-y-2", children: [_jsx(Label, { children: "Source" }), _jsx(CellSourceSelector, { value: value, onValueChange: handleValueChange, className: "h-8 w-full" })] }));
|
|
25
|
+
return (_jsxs("div", { className: "space-y-2", children: [_jsx(Label, { children: "Source" }), _jsx(CellSourceSelector, { artifactId: artifactId, value: value, onValueChange: handleValueChange, className: "h-8 w-full" })] }));
|
|
26
26
|
};
|
|
27
|
-
export const PivotCellContent = ({ cell, renderContainer, }) => {
|
|
27
|
+
export const PivotCellContent = ({ id, cell, renderContainer, }) => {
|
|
28
28
|
const pivotId = cell.data.pivotId;
|
|
29
29
|
const getPivotStore = useBaseRoomStore((state) => state.pivot.getPivotStore);
|
|
30
|
+
const artifactId = useBaseRoomStore((state) => state.cells.getArtifactIdForCell(id));
|
|
30
31
|
const pivotStore = useMemo(() => getPivotStore(pivotId), [getPivotStore, pivotId]);
|
|
31
|
-
const content = (_jsx("div", { className: "h-[720px]", children: _jsxs(PivotEditor, { store: pivotStore, children: [_jsx(PivotEditor.Source, { children: _jsxs(_Fragment, { children: [_jsx(PivotSourceSelect, { store: pivotStore }), _jsx(PivotEditor.RendererSelector, {}), _jsx(PivotEditor.AggregatorSelector, {}), _jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx(Label, { children: "Values" }), _jsx(PivotEditor.RunButton, {})] }), _jsx(PivotEditor.Values, {})] })] }) }), _jsxs("div", { className: "grid min-h-0 flex-1 gap-4 xl:grid-cols-[380px_minmax(0,1fr)]", children: [_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "grid gap-4 md:grid-cols-2 xl:grid-cols-1", children: [_jsx(PivotEditor.Rows, {}), _jsx(PivotEditor.Columns, {})] }), _jsx(PivotEditor.AvailableFields, {})] }), _jsx(PivotEditor.Output, {})] })] }) }));
|
|
32
|
+
const content = (_jsx("div", { className: "h-[720px]", children: _jsxs(PivotEditor, { store: pivotStore, children: [_jsx(PivotEditor.Source, { children: _jsxs(_Fragment, { children: [_jsx(PivotSourceSelect, { artifactId: artifactId ?? '', store: pivotStore }), _jsx(PivotEditor.RendererSelector, {}), _jsx(PivotEditor.AggregatorSelector, {}), _jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx(Label, { children: "Values" }), _jsx(PivotEditor.RunButton, {})] }), _jsx(PivotEditor.Values, {})] })] }) }), _jsxs("div", { className: "grid min-h-0 flex-1 gap-4 xl:grid-cols-[380px_minmax(0,1fr)]", children: [_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "grid gap-4 md:grid-cols-2 xl:grid-cols-1", children: [_jsx(PivotEditor.Rows, {}), _jsx(PivotEditor.Columns, {})] }), _jsx(PivotEditor.AvailableFields, {})] }), _jsx(PivotEditor.Output, {})] })] }) }));
|
|
32
33
|
return renderContainer({
|
|
33
34
|
header: (_jsx("div", { className: "flex items-center gap-2", children: _jsx("span", { className: "text-[10px] font-bold text-gray-400 uppercase", children: "Pivot" }) })),
|
|
34
35
|
content,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PivotCellContent.js","sourceRoot":"","sources":["../src/PivotCellContent.tsx"],"names":[],"mappings":";AAAA,OAAO,EAEL,kBAAkB,
|
|
1
|
+
{"version":3,"file":"PivotCellContent.js","sourceRoot":"","sources":["../src/PivotCellContent.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n type CellContainerProps,\n CellSourceSelector,\n type CellsRootState,\n toDataSourceCell,\n toDataSourceTable,\n fromDataSourceCell,\n fromDataSourceTable,\n} from '@sqlrooms/cells';\nimport {useBaseRoomStore} from '@sqlrooms/room-store';\nimport {Label} from '@sqlrooms/ui';\nimport React, {useCallback, useMemo} from 'react';\nimport {useStore} from 'zustand';\nimport {PivotEditor} from './PivotEditor';\nimport type {PivotInstanceStore} from './PivotCoreSlice';\nimport type {PivotSource, PivotSliceState} from './types';\nimport type {PivotCell} from './pivotCellTypes';\n\nexport type PivotCellContentProps = {\n id: string;\n cell: PivotCell;\n renderContainer: (props: CellContainerProps) => React.ReactElement;\n};\n\nconst PivotSourceSelect: React.FC<{\n artifactId: string;\n store: PivotInstanceStore;\n}> = ({artifactId, store}) => {\n const source = useStore(store, (state) => state.source);\n\n const value = source\n ? source.kind === 'table'\n ? toDataSourceTable(source.tableName)\n : toDataSourceCell(source.sqlId)\n : undefined;\n\n const handleValueChange = useCallback(\n (nextValue: string) => {\n const tableRef = fromDataSourceTable(nextValue);\n const cellId = fromDataSourceCell(nextValue);\n\n const nextSource: PivotSource | undefined = tableRef\n ? {kind: 'table', tableName: tableRef}\n : cellId\n ? {kind: 'sql', sqlId: cellId}\n : undefined;\n\n store.getState().setSource(nextSource);\n },\n [store],\n );\n\n return (\n <div className=\"space-y-2\">\n <Label>Source</Label>\n <CellSourceSelector\n artifactId={artifactId}\n value={value}\n onValueChange={handleValueChange}\n className=\"h-8 w-full\"\n />\n </div>\n );\n};\n\ntype PivotRootState = PivotSliceState &\n CellsRootState & {db: {tables: {tableName: string}[]}};\n\nexport const PivotCellContent: React.FC<PivotCellContentProps> = ({\n id,\n cell,\n renderContainer,\n}) => {\n const pivotId = cell.data.pivotId;\n const getPivotStore = useBaseRoomStore(\n (state: PivotRootState) => state.pivot.getPivotStore,\n );\n const artifactId = useBaseRoomStore((state: PivotRootState) =>\n state.cells.getArtifactIdForCell(id),\n );\n const pivotStore = useMemo(\n () => getPivotStore(pivotId),\n [getPivotStore, pivotId],\n );\n\n const content = (\n <div className=\"h-[720px]\">\n <PivotEditor store={pivotStore}>\n <PivotEditor.Source>\n <>\n <PivotSourceSelect\n artifactId={artifactId ?? ''}\n store={pivotStore}\n />\n <PivotEditor.RendererSelector />\n <PivotEditor.AggregatorSelector />\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <Label>Values</Label>\n <PivotEditor.RunButton />\n </div>\n <PivotEditor.Values />\n </div>\n </>\n </PivotEditor.Source>\n <div className=\"grid min-h-0 flex-1 gap-4 xl:grid-cols-[380px_minmax(0,1fr)]\">\n <div className=\"space-y-4\">\n <div className=\"grid gap-4 md:grid-cols-2 xl:grid-cols-1\">\n <PivotEditor.Rows />\n <PivotEditor.Columns />\n </div>\n <PivotEditor.AvailableFields />\n </div>\n <PivotEditor.Output />\n </div>\n </PivotEditor>\n </div>\n );\n\n return renderContainer({\n header: (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-[10px] font-bold text-gray-400 uppercase\">\n Pivot\n </span>\n </div>\n ),\n content,\n });\n};\n"]}
|
package/dist/PivotSlice.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PivotSlice.d.ts","sourceRoot":"","sources":["../src/PivotSlice.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PivotSlice.d.ts","sourceRoot":"","sources":["../src/PivotSlice.ts"],"names":[],"mappings":"AA0BA,OAAO,EACL,KAAK,WAAW,EAKhB,eAAe,EAChB,MAAM,SAAS,CAAC;AAsCjB,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,EAAE;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,GAAG;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;CACtD,mDA4aA"}
|
package/dist/PivotSlice.js
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
|
+
import { createId } from '@paralleldrive/cuid2';
|
|
1
2
|
import { createSlice } from '@sqlrooms/room-store';
|
|
2
3
|
import { generateUniqueName } from '@sqlrooms/utils';
|
|
3
4
|
import { produce } from 'immer';
|
|
4
|
-
import {
|
|
5
|
+
import { createStore } from 'zustand/vanilla';
|
|
5
6
|
import { addAttributeFilterValuesInConfig, clearAttributeFilterInConfig, createDefaultPivotConfig, moveFieldInConfig, nextSortOrder, normalizePivotConfig, removeAttributeFilterValuesInConfig, setAttributeFilterValuesInConfig, } from './PivotCoreSlice';
|
|
6
|
-
import { createPivotQuerySourceFromTable } from './sql';
|
|
7
7
|
import { createOrReplacePivotRelations, dropPivotRelations, } from './pivotExecution';
|
|
8
|
+
import { createPivotQuerySourceFromTable } from './sql';
|
|
8
9
|
import { PivotSliceConfig, } from './types';
|
|
9
|
-
import { createStore } from 'zustand/vanilla';
|
|
10
10
|
function createInitialPivotSliceConfig(props) {
|
|
11
11
|
if (!props?.config) {
|
|
12
12
|
return PivotSliceConfig.parse({
|
|
13
13
|
pivots: {},
|
|
14
14
|
pivotOrder: [],
|
|
15
|
-
currentPivotId: undefined,
|
|
16
15
|
});
|
|
17
16
|
}
|
|
18
17
|
const id = createId();
|
|
@@ -24,14 +23,13 @@ function createInitialPivotSliceConfig(props) {
|
|
|
24
23
|
pivots: {
|
|
25
24
|
[id]: {
|
|
26
25
|
id,
|
|
27
|
-
title: 'Pivot
|
|
26
|
+
title: 'Pivot',
|
|
28
27
|
source,
|
|
29
28
|
config,
|
|
30
29
|
status: { state: 'idle', stale: false },
|
|
31
30
|
},
|
|
32
31
|
},
|
|
33
32
|
pivotOrder: [id],
|
|
34
|
-
currentPivotId: id,
|
|
35
33
|
});
|
|
36
34
|
}
|
|
37
35
|
function resetPivotRuntimeStatus(status) {
|
|
@@ -66,11 +64,6 @@ export function createPivotSlice(props) {
|
|
|
66
64
|
return;
|
|
67
65
|
}
|
|
68
66
|
set((state) => produce(state, (draft) => {
|
|
69
|
-
if (!draft.pivot.config.currentPivotId &&
|
|
70
|
-
draft.pivot.config.pivotOrder.length > 0) {
|
|
71
|
-
draft.pivot.config.currentPivotId =
|
|
72
|
-
draft.pivot.config.pivotOrder[0];
|
|
73
|
-
}
|
|
74
67
|
for (const pivotId of draft.pivot.config.pivotOrder) {
|
|
75
68
|
const pivot = draft.pivot.config.pivots[pivotId];
|
|
76
69
|
if (!pivot)
|
|
@@ -181,8 +174,10 @@ export function createPivotSlice(props) {
|
|
|
181
174
|
return instanceStore;
|
|
182
175
|
},
|
|
183
176
|
addPivot(pivotProps) {
|
|
184
|
-
const id = createId();
|
|
185
|
-
const title = generateUniqueName(pivotProps?.title ?? 'Pivot
|
|
177
|
+
const id = pivotProps?.id ?? createId();
|
|
178
|
+
const title = generateUniqueName(pivotProps?.title ?? 'Pivot', Object.values(get().pivot.config.pivots)
|
|
179
|
+
.filter((pivot) => pivot.id !== id)
|
|
180
|
+
.map((pivot) => pivot.title), ' ');
|
|
186
181
|
const nextPivot = {
|
|
187
182
|
id,
|
|
188
183
|
title,
|
|
@@ -193,10 +188,20 @@ export function createPivotSlice(props) {
|
|
|
193
188
|
set((state) => produce(state, (draft) => {
|
|
194
189
|
draft.pivot.config.pivots[id] = nextPivot;
|
|
195
190
|
draft.pivot.config.pivotOrder.push(id);
|
|
196
|
-
draft.pivot.config.currentPivotId = id;
|
|
197
191
|
}));
|
|
198
192
|
return id;
|
|
199
193
|
},
|
|
194
|
+
ensurePivot(pivotId, pivotProps) {
|
|
195
|
+
if (get().pivot.config.pivots[pivotId]) {
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
get().pivot.addPivot({
|
|
199
|
+
id: pivotId,
|
|
200
|
+
title: pivotProps?.title,
|
|
201
|
+
source: pivotProps?.source,
|
|
202
|
+
config: pivotProps?.config,
|
|
203
|
+
});
|
|
204
|
+
},
|
|
200
205
|
removePivot(pivotId) {
|
|
201
206
|
pivotStores.get(pivotId)?.destroy();
|
|
202
207
|
pivotStores.delete(pivotId);
|
|
@@ -212,15 +217,6 @@ export function createPivotSlice(props) {
|
|
|
212
217
|
delete draft.pivot.config.pivots[pivotId];
|
|
213
218
|
draft.pivot.config.pivotOrder =
|
|
214
219
|
draft.pivot.config.pivotOrder.filter((id) => id !== pivotId);
|
|
215
|
-
if (draft.pivot.config.currentPivotId === pivotId) {
|
|
216
|
-
draft.pivot.config.currentPivotId =
|
|
217
|
-
draft.pivot.config.pivotOrder[0];
|
|
218
|
-
}
|
|
219
|
-
}));
|
|
220
|
-
},
|
|
221
|
-
setCurrentPivot(pivotId) {
|
|
222
|
-
set((state) => produce(state, (draft) => {
|
|
223
|
-
draft.pivot.config.currentPivotId = pivotId;
|
|
224
220
|
}));
|
|
225
221
|
},
|
|
226
222
|
renamePivot(pivotId, title) {
|
package/dist/PivotSlice.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PivotSlice.js","sourceRoot":"","sources":["../src/PivotSlice.ts"],"names":[],"mappings":"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","sourcesContent":["import {DuckDbSliceState} from '@sqlrooms/duckdb';\nimport {BaseRoomStoreState, createSlice} from '@sqlrooms/room-store';\nimport {generateUniqueName} from '@sqlrooms/utils';\nimport {produce} from 'immer';\nimport {createId} from '@paralleldrive/cuid2';\nimport {\n addAttributeFilterValuesInConfig,\n clearAttributeFilterInConfig,\n createDefaultPivotConfig,\n moveFieldInConfig,\n nextSortOrder,\n normalizePivotConfig,\n removeAttributeFilterValuesInConfig,\n setAttributeFilterValuesInConfig,\n} from './PivotCoreSlice';\nimport type {\n PivotInstanceSnapshot,\n PivotInstanceState,\n PivotInstanceStore,\n} from './PivotCoreSlice';\nimport {createPivotQuerySourceFromTable} from './sql';\nimport {\n createOrReplacePivotRelations,\n dropPivotRelations,\n} from './pivotExecution';\nimport {\n type PivotConfig,\n type PivotSliceConfig as PivotSlicePersistedConfig,\n type PivotSource,\n type PivotStatus,\n PivotSliceConfig,\n PivotSliceState,\n} from './types';\nimport {createStore} from 'zustand/vanilla';\n\nfunction createInitialPivotSliceConfig(props?: {\n config?: Partial<PivotConfig & {tableName?: string}>;\n}): PivotSlicePersistedConfig {\n if (!props?.config) {\n return PivotSliceConfig.parse({\n pivots: {},\n pivotOrder: [],\n currentPivotId: undefined,\n });\n }\n const id = createId();\n const source = props?.config?.tableName\n ? ({kind: 'table', tableName: props.config.tableName} as PivotSource)\n : undefined;\n const config = createDefaultPivotConfig(props?.config);\n return PivotSliceConfig.parse({\n pivots: {\n [id]: {\n id,\n title: 'Pivot 1',\n source,\n config,\n status: {state: 'idle', stale: false},\n },\n },\n pivotOrder: [id],\n currentPivotId: id,\n });\n}\n\nfunction resetPivotRuntimeStatus(status: PivotStatus): PivotStatus {\n return {\n state: 'idle',\n stale: true,\n lastRunTime: status.lastRunTime,\n };\n}\n\nexport function createPivotSlice(props?: {\n config?: Partial<PivotConfig & {tableName?: string}>;\n}) {\n type RootState = BaseRoomStoreState & DuckDbSliceState & PivotSliceState;\n const pivotStores = new Map<string, PivotInstanceStore>();\n\n return createSlice<PivotSliceState, RootState>((set, get, store) => {\n /**\n * Shared helper: mutate a pivot's config and reset its runtime status.\n * `updater` receives the current config and returns the new one.\n */\n const updatePivotConfig = (\n pivotId: string,\n updater: (config: PivotConfig) => PivotConfig,\n ) => {\n set((state) =>\n produce(state, (draft) => {\n const pivot = draft.pivot.config.pivots[pivotId];\n if (!pivot) return;\n pivot.config = updater(pivot.config);\n pivot.status = resetPivotRuntimeStatus(pivot.status);\n }),\n );\n };\n\n return {\n pivot: {\n config: createInitialPivotSliceConfig(props),\n\n async initialize() {\n const tables = get().db.tables;\n if (tables.length === 0) {\n return;\n }\n set((state) =>\n produce(state, (draft) => {\n if (\n !draft.pivot.config.currentPivotId &&\n draft.pivot.config.pivotOrder.length > 0\n ) {\n draft.pivot.config.currentPivotId =\n draft.pivot.config.pivotOrder[0];\n }\n\n for (const pivotId of draft.pivot.config.pivotOrder) {\n const pivot = draft.pivot.config.pivots[pivotId];\n if (!pivot) continue;\n if (pivot.source?.kind === 'table') {\n const tableName = pivot.source.tableName;\n const table =\n tables.find(\n (candidate) => candidate.tableName === tableName,\n ) ?? tables[0];\n if (table) {\n pivot.source = {kind: 'table', tableName: table.tableName};\n pivot.config = normalizePivotConfig(\n pivot.config,\n table.columns,\n );\n }\n }\n pivot.status = resetPivotRuntimeStatus(pivot.status);\n }\n }),\n );\n },\n\n getPivotStore(pivotId) {\n const existing = pivotStores.get(pivotId);\n if (existing) return existing;\n\n function getSnapshot(): PivotInstanceSnapshot {\n const rootState = get();\n const pivot = rootState.pivot.config.pivots[pivotId];\n const availableTables = rootState.db.tables.map((t) => t.tableName);\n if (!pivot) {\n return {\n source: undefined,\n config: createDefaultPivotConfig(),\n status: {state: 'idle', stale: false},\n querySource: undefined,\n fields: [],\n availableTables,\n };\n }\n const tableSource =\n pivot.source?.kind === 'table' ? pivot.source : undefined;\n const table = tableSource\n ? rootState.db.tables.find(\n (t) => t.tableName === tableSource.tableName,\n )\n : undefined;\n const querySource = table\n ? createPivotQuerySourceFromTable(table)\n : undefined;\n return {\n source: pivot.source,\n config: pivot.config,\n status: pivot.status,\n querySource,\n fields: querySource?.columns ?? [],\n availableTables,\n };\n }\n\n let currentSnapshot = getSnapshot();\n\n const adapterStore = createStore<PivotInstanceState>(\n (adapterSet) => ({\n ...currentSnapshot,\n ui: {sectionOpenState: {}},\n setSource: (source) => get().pivot.setSource(pivotId, source),\n setConfig: (config) => get().pivot.setConfig(pivotId, config),\n patchConfig: (partial) =>\n get().pivot.patchConfig(pivotId, partial),\n setRendererName: (v) => get().pivot.setRendererName(pivotId, v),\n setAggregatorName: (v) =>\n get().pivot.setAggregatorName(pivotId, v),\n setVals: (v) => get().pivot.setVals(pivotId, v),\n moveField: (field, dest, idx) =>\n get().pivot.moveField(pivotId, field, dest, idx),\n cycleRowOrder: () => get().pivot.cycleRowOrder(pivotId),\n cycleColOrder: () => get().pivot.cycleColOrder(pivotId),\n setAttributeFilterValues: (a, v) =>\n get().pivot.setAttributeFilterValues(pivotId, a, v),\n addAttributeFilterValues: (a, v) =>\n get().pivot.addAttributeFilterValues(pivotId, a, v),\n removeAttributeFilterValues: (a, v) =>\n get().pivot.removeAttributeFilterValues(pivotId, a, v),\n clearAttributeFilter: (a) =>\n get().pivot.clearAttributeFilter(pivotId, a),\n setSectionOpen: (section, isOpen) =>\n adapterSet((state) => ({\n ui: {\n ...state.ui,\n sectionOpenState: {\n ...state.ui.sectionOpenState,\n [section]: isOpen,\n },\n },\n })),\n run: () => get().pivot.runPivot(pivotId),\n }),\n );\n\n const unsubscribe = store.subscribe(() => {\n const nextSnapshot = getSnapshot();\n const prev = currentSnapshot;\n if (\n JSON.stringify(prev.source) ===\n JSON.stringify(nextSnapshot.source) &&\n JSON.stringify(prev.config) ===\n JSON.stringify(nextSnapshot.config) &&\n JSON.stringify(prev.status) ===\n JSON.stringify(nextSnapshot.status) &&\n JSON.stringify(prev.querySource) ===\n JSON.stringify(nextSnapshot.querySource) &&\n prev.fields.length === nextSnapshot.fields.length &&\n prev.fields.every(\n (f, i) =>\n f.name === nextSnapshot.fields[i]?.name &&\n f.type === nextSnapshot.fields[i]?.type,\n ) &&\n prev.availableTables.length ===\n nextSnapshot.availableTables.length &&\n prev.availableTables.every(\n (t, i) => t === nextSnapshot.availableTables[i],\n )\n ) {\n return;\n }\n currentSnapshot = nextSnapshot;\n adapterStore.setState(nextSnapshot);\n });\n\n const instanceStore: PivotInstanceStore = Object.assign(\n adapterStore,\n {\n destroy: () => {\n unsubscribe();\n pivotStores.delete(pivotId);\n },\n },\n );\n pivotStores.set(pivotId, instanceStore);\n return instanceStore;\n },\n\n addPivot(pivotProps) {\n const id = createId();\n const title = generateUniqueName(\n pivotProps?.title ?? 'Pivot 1',\n Object.values(get().pivot.config.pivots).map(\n (pivot) => pivot.title,\n ),\n ' ',\n );\n const nextPivot = {\n id,\n title,\n source: pivotProps?.source,\n config: createDefaultPivotConfig(pivotProps?.config),\n status: {state: 'idle', stale: false} satisfies PivotStatus,\n };\n set((state) =>\n produce(state, (draft) => {\n draft.pivot.config.pivots[id] = nextPivot;\n draft.pivot.config.pivotOrder.push(id);\n draft.pivot.config.currentPivotId = id;\n }),\n );\n return id;\n },\n\n removePivot(pivotId) {\n pivotStores.get(pivotId)?.destroy();\n pivotStores.delete(pivotId);\n const relations =\n get().pivot.config.pivots[pivotId]?.status.relations;\n void (async () => {\n if (!relations) return;\n const connector = await get().db.getConnector();\n await dropPivotRelations({connector, relations});\n void get().db.refreshTableSchemas();\n })();\n set((state) =>\n produce(state, (draft) => {\n delete draft.pivot.config.pivots[pivotId];\n draft.pivot.config.pivotOrder =\n draft.pivot.config.pivotOrder.filter((id) => id !== pivotId);\n if (draft.pivot.config.currentPivotId === pivotId) {\n draft.pivot.config.currentPivotId =\n draft.pivot.config.pivotOrder[0];\n }\n }),\n );\n },\n\n setCurrentPivot(pivotId) {\n set((state) =>\n produce(state, (draft) => {\n draft.pivot.config.currentPivotId = pivotId;\n }),\n );\n },\n\n renamePivot(pivotId, title) {\n set((state) =>\n produce(state, (draft) => {\n const pivot = draft.pivot.config.pivots[pivotId];\n if (pivot) {\n pivot.title = title;\n }\n }),\n );\n },\n\n setSource(pivotId, source) {\n set((state) =>\n produce(state, (draft) => {\n const pivot = draft.pivot.config.pivots[pivotId];\n if (!pivot) return;\n pivot.source = source;\n pivot.config = createDefaultPivotConfig();\n pivot.status = resetPivotRuntimeStatus(pivot.status);\n }),\n );\n },\n\n setStatus(pivotId, status) {\n set((state) =>\n produce(state, (draft) => {\n const pivot = draft.pivot.config.pivots[pivotId];\n if (!pivot) return;\n pivot.status = {...pivot.status, ...status};\n }),\n );\n },\n\n setConfig(pivotId, config) {\n const tableSource =\n get().pivot.config.pivots[pivotId]?.source?.kind === 'table'\n ? get().pivot.config.pivots[pivotId]!.source\n : undefined;\n const columns =\n tableSource?.kind === 'table'\n ? (get().db.tables.find(\n (t) => t.tableName === tableSource.tableName,\n )?.columns ?? [])\n : [];\n updatePivotConfig(pivotId, () =>\n normalizePivotConfig(config, columns),\n );\n },\n\n patchConfig(pivotId, config) {\n const tableSource =\n get().pivot.config.pivots[pivotId]?.source?.kind === 'table'\n ? get().pivot.config.pivots[pivotId]!.source\n : undefined;\n const columns =\n tableSource?.kind === 'table'\n ? (get().db.tables.find(\n (t) => t.tableName === tableSource.tableName,\n )?.columns ?? [])\n : [];\n updatePivotConfig(pivotId, (c) =>\n normalizePivotConfig({...c, ...config}, columns),\n );\n },\n\n setRendererName: (pivotId, rendererName) =>\n updatePivotConfig(pivotId, (c) => ({...c, rendererName})),\n\n setAggregatorName: (pivotId, aggregatorName) =>\n updatePivotConfig(pivotId, (c) => ({...c, aggregatorName})),\n\n setRows: (pivotId, rows) =>\n updatePivotConfig(pivotId, (c) => ({...c, rows})),\n\n setCols: (pivotId, cols) =>\n updatePivotConfig(pivotId, (c) => ({...c, cols})),\n\n setVals: (pivotId, vals) =>\n updatePivotConfig(pivotId, (c) => ({...c, vals})),\n\n setUnusedOrder: (pivotId, unusedOrder) =>\n updatePivotConfig(pivotId, (c) => ({...c, unusedOrder})),\n\n moveField: (pivotId, field, destination, index) =>\n updatePivotConfig(pivotId, (c) =>\n moveFieldInConfig(c, field, destination, index),\n ),\n\n cycleRowOrder: (pivotId) =>\n updatePivotConfig(pivotId, (c) => ({\n ...c,\n rowOrder: nextSortOrder(c.rowOrder),\n })),\n\n cycleColOrder: (pivotId) =>\n updatePivotConfig(pivotId, (c) => ({\n ...c,\n colOrder: nextSortOrder(c.colOrder),\n })),\n\n setAttributeFilterValues: (pivotId, attribute, values) =>\n updatePivotConfig(pivotId, (c) =>\n setAttributeFilterValuesInConfig(c, attribute, values),\n ),\n\n addAttributeFilterValues: (pivotId, attribute, values) =>\n updatePivotConfig(pivotId, (c) =>\n addAttributeFilterValuesInConfig(c, attribute, values),\n ),\n\n removeAttributeFilterValues: (pivotId, attribute, values) =>\n updatePivotConfig(pivotId, (c) =>\n removeAttributeFilterValuesInConfig(c, attribute, values),\n ),\n\n clearAttributeFilter: (pivotId, attribute) =>\n updatePivotConfig(pivotId, (c) =>\n clearAttributeFilterInConfig(c, attribute),\n ),\n\n async runPivot(pivotId, opts) {\n const state = get();\n const pivot = state.pivot.config.pivots[pivotId];\n if (!pivot) return;\n\n const schemaName = opts?.schemaName ?? '__sqlrooms_pivot';\n\n let querySource = opts?.querySource;\n if (!querySource) {\n const tableSource =\n pivot.source?.kind === 'table' ? pivot.source : undefined;\n if (!tableSource) return;\n const table = state.db.tables.find(\n (t) => t.tableName === tableSource.tableName,\n );\n if (!table) return;\n querySource = createPivotQuerySourceFromTable(table);\n }\n\n set((current) =>\n produce(current, (draft) => {\n const p = draft.pivot.config.pivots[pivotId];\n if (!p) return;\n p.status = {...p.status, state: 'running'};\n }),\n );\n\n try {\n const connector = await state.db.getConnector();\n const normalizedConfig = normalizePivotConfig(\n pivot.config,\n querySource.columns,\n );\n const relations = await createOrReplacePivotRelations({\n connector,\n source: querySource,\n config: normalizedConfig,\n relationBaseName: `pivot_${pivotId}`,\n schemaName,\n });\n set((current) =>\n produce(current, (draft) => {\n const p = draft.pivot.config.pivots[pivotId];\n if (!p) return;\n p.config = normalizedConfig;\n p.status = {\n state: 'success',\n stale: false,\n lastRunTime: Date.now(),\n relations,\n sourceRelation: querySource!.tableRef,\n };\n }),\n );\n void get().db.refreshTableSchemas();\n } catch (error) {\n set((current) =>\n produce(current, (draft) => {\n const p = draft.pivot.config.pivots[pivotId];\n if (!p) return;\n p.status = {\n ...p.status,\n state: 'error',\n lastError:\n error instanceof Error ? error.message : String(error),\n };\n }),\n );\n }\n },\n },\n };\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PivotSlice.js","sourceRoot":"","sources":["../src/PivotSlice.ts"],"names":[],"mappings":"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","sourcesContent":["import {createId} from '@paralleldrive/cuid2';\nimport {DuckDbSliceState} from '@sqlrooms/duckdb';\nimport {BaseRoomStoreState, createSlice} from '@sqlrooms/room-store';\nimport {generateUniqueName} from '@sqlrooms/utils';\nimport {produce} from 'immer';\nimport {createStore} from 'zustand/vanilla';\nimport type {\n PivotInstanceSnapshot,\n PivotInstanceState,\n PivotInstanceStore,\n} from './PivotCoreSlice';\nimport {\n addAttributeFilterValuesInConfig,\n clearAttributeFilterInConfig,\n createDefaultPivotConfig,\n moveFieldInConfig,\n nextSortOrder,\n normalizePivotConfig,\n removeAttributeFilterValuesInConfig,\n setAttributeFilterValuesInConfig,\n} from './PivotCoreSlice';\nimport {\n createOrReplacePivotRelations,\n dropPivotRelations,\n} from './pivotExecution';\nimport {createPivotQuerySourceFromTable} from './sql';\nimport {\n type PivotConfig,\n type PivotSliceConfig as PivotSlicePersistedConfig,\n type PivotSource,\n type PivotStatus,\n PivotSliceConfig,\n PivotSliceState,\n} from './types';\n\nfunction createInitialPivotSliceConfig(props?: {\n config?: Partial<PivotConfig & {tableName?: string}>;\n}): PivotSlicePersistedConfig {\n if (!props?.config) {\n return PivotSliceConfig.parse({\n pivots: {},\n pivotOrder: [],\n });\n }\n const id = createId();\n const source = props?.config?.tableName\n ? ({kind: 'table', tableName: props.config.tableName} as PivotSource)\n : undefined;\n const config = createDefaultPivotConfig(props?.config);\n return PivotSliceConfig.parse({\n pivots: {\n [id]: {\n id,\n title: 'Pivot',\n source,\n config,\n status: {state: 'idle', stale: false},\n },\n },\n pivotOrder: [id],\n });\n}\n\nfunction resetPivotRuntimeStatus(status: PivotStatus): PivotStatus {\n return {\n state: 'idle',\n stale: true,\n lastRunTime: status.lastRunTime,\n };\n}\n\nexport function createPivotSlice(props?: {\n config?: Partial<PivotConfig & {tableName?: string}>;\n}) {\n type RootState = BaseRoomStoreState & DuckDbSliceState & PivotSliceState;\n const pivotStores = new Map<string, PivotInstanceStore>();\n\n return createSlice<PivotSliceState, RootState>((set, get, store) => {\n /**\n * Shared helper: mutate a pivot's config and reset its runtime status.\n * `updater` receives the current config and returns the new one.\n */\n const updatePivotConfig = (\n pivotId: string,\n updater: (config: PivotConfig) => PivotConfig,\n ) => {\n set((state) =>\n produce(state, (draft) => {\n const pivot = draft.pivot.config.pivots[pivotId];\n if (!pivot) return;\n pivot.config = updater(pivot.config);\n pivot.status = resetPivotRuntimeStatus(pivot.status);\n }),\n );\n };\n\n return {\n pivot: {\n config: createInitialPivotSliceConfig(props),\n\n async initialize() {\n const tables = get().db.tables;\n if (tables.length === 0) {\n return;\n }\n set((state) =>\n produce(state, (draft) => {\n for (const pivotId of draft.pivot.config.pivotOrder) {\n const pivot = draft.pivot.config.pivots[pivotId];\n if (!pivot) continue;\n if (pivot.source?.kind === 'table') {\n const tableName = pivot.source.tableName;\n const table =\n tables.find(\n (candidate) => candidate.tableName === tableName,\n ) ?? tables[0];\n if (table) {\n pivot.source = {kind: 'table', tableName: table.tableName};\n pivot.config = normalizePivotConfig(\n pivot.config,\n table.columns,\n );\n }\n }\n pivot.status = resetPivotRuntimeStatus(pivot.status);\n }\n }),\n );\n },\n\n getPivotStore(pivotId) {\n const existing = pivotStores.get(pivotId);\n if (existing) return existing;\n\n function getSnapshot(): PivotInstanceSnapshot {\n const rootState = get();\n const pivot = rootState.pivot.config.pivots[pivotId];\n const availableTables = rootState.db.tables.map((t) => t.tableName);\n if (!pivot) {\n return {\n source: undefined,\n config: createDefaultPivotConfig(),\n status: {state: 'idle', stale: false},\n querySource: undefined,\n fields: [],\n availableTables,\n };\n }\n const tableSource =\n pivot.source?.kind === 'table' ? pivot.source : undefined;\n const table = tableSource\n ? rootState.db.tables.find(\n (t) => t.tableName === tableSource.tableName,\n )\n : undefined;\n const querySource = table\n ? createPivotQuerySourceFromTable(table)\n : undefined;\n return {\n source: pivot.source,\n config: pivot.config,\n status: pivot.status,\n querySource,\n fields: querySource?.columns ?? [],\n availableTables,\n };\n }\n\n let currentSnapshot = getSnapshot();\n\n const adapterStore = createStore<PivotInstanceState>(\n (adapterSet) => ({\n ...currentSnapshot,\n ui: {sectionOpenState: {}},\n setSource: (source) => get().pivot.setSource(pivotId, source),\n setConfig: (config) => get().pivot.setConfig(pivotId, config),\n patchConfig: (partial) =>\n get().pivot.patchConfig(pivotId, partial),\n setRendererName: (v) => get().pivot.setRendererName(pivotId, v),\n setAggregatorName: (v) =>\n get().pivot.setAggregatorName(pivotId, v),\n setVals: (v) => get().pivot.setVals(pivotId, v),\n moveField: (field, dest, idx) =>\n get().pivot.moveField(pivotId, field, dest, idx),\n cycleRowOrder: () => get().pivot.cycleRowOrder(pivotId),\n cycleColOrder: () => get().pivot.cycleColOrder(pivotId),\n setAttributeFilterValues: (a, v) =>\n get().pivot.setAttributeFilterValues(pivotId, a, v),\n addAttributeFilterValues: (a, v) =>\n get().pivot.addAttributeFilterValues(pivotId, a, v),\n removeAttributeFilterValues: (a, v) =>\n get().pivot.removeAttributeFilterValues(pivotId, a, v),\n clearAttributeFilter: (a) =>\n get().pivot.clearAttributeFilter(pivotId, a),\n setSectionOpen: (section, isOpen) =>\n adapterSet((state) => ({\n ui: {\n ...state.ui,\n sectionOpenState: {\n ...state.ui.sectionOpenState,\n [section]: isOpen,\n },\n },\n })),\n run: () => get().pivot.runPivot(pivotId),\n }),\n );\n\n const unsubscribe = store.subscribe(() => {\n const nextSnapshot = getSnapshot();\n const prev = currentSnapshot;\n if (\n JSON.stringify(prev.source) ===\n JSON.stringify(nextSnapshot.source) &&\n JSON.stringify(prev.config) ===\n JSON.stringify(nextSnapshot.config) &&\n JSON.stringify(prev.status) ===\n JSON.stringify(nextSnapshot.status) &&\n JSON.stringify(prev.querySource) ===\n JSON.stringify(nextSnapshot.querySource) &&\n prev.fields.length === nextSnapshot.fields.length &&\n prev.fields.every(\n (f, i) =>\n f.name === nextSnapshot.fields[i]?.name &&\n f.type === nextSnapshot.fields[i]?.type,\n ) &&\n prev.availableTables.length ===\n nextSnapshot.availableTables.length &&\n prev.availableTables.every(\n (t, i) => t === nextSnapshot.availableTables[i],\n )\n ) {\n return;\n }\n currentSnapshot = nextSnapshot;\n adapterStore.setState(nextSnapshot);\n });\n\n const instanceStore: PivotInstanceStore = Object.assign(\n adapterStore,\n {\n destroy: () => {\n unsubscribe();\n pivotStores.delete(pivotId);\n },\n },\n );\n pivotStores.set(pivotId, instanceStore);\n return instanceStore;\n },\n\n addPivot(pivotProps) {\n const id = pivotProps?.id ?? createId();\n const title = generateUniqueName(\n pivotProps?.title ?? 'Pivot',\n Object.values(get().pivot.config.pivots)\n .filter((pivot) => pivot.id !== id)\n .map((pivot) => pivot.title),\n ' ',\n );\n const nextPivot = {\n id,\n title,\n source: pivotProps?.source,\n config: createDefaultPivotConfig(pivotProps?.config),\n status: {state: 'idle', stale: false} satisfies PivotStatus,\n };\n set((state) =>\n produce(state, (draft) => {\n draft.pivot.config.pivots[id] = nextPivot;\n draft.pivot.config.pivotOrder.push(id);\n }),\n );\n return id;\n },\n\n ensurePivot(pivotId, pivotProps) {\n if (get().pivot.config.pivots[pivotId]) {\n return;\n }\n get().pivot.addPivot({\n id: pivotId,\n title: pivotProps?.title,\n source: pivotProps?.source,\n config: pivotProps?.config,\n });\n },\n\n removePivot(pivotId) {\n pivotStores.get(pivotId)?.destroy();\n pivotStores.delete(pivotId);\n const relations =\n get().pivot.config.pivots[pivotId]?.status.relations;\n void (async () => {\n if (!relations) return;\n const connector = await get().db.getConnector();\n await dropPivotRelations({connector, relations});\n void get().db.refreshTableSchemas();\n })();\n set((state) =>\n produce(state, (draft) => {\n delete draft.pivot.config.pivots[pivotId];\n draft.pivot.config.pivotOrder =\n draft.pivot.config.pivotOrder.filter((id) => id !== pivotId);\n }),\n );\n },\n\n renamePivot(pivotId, title) {\n set((state) =>\n produce(state, (draft) => {\n const pivot = draft.pivot.config.pivots[pivotId];\n if (pivot) {\n pivot.title = title;\n }\n }),\n );\n },\n\n setSource(pivotId, source) {\n set((state) =>\n produce(state, (draft) => {\n const pivot = draft.pivot.config.pivots[pivotId];\n if (!pivot) return;\n pivot.source = source;\n pivot.config = createDefaultPivotConfig();\n pivot.status = resetPivotRuntimeStatus(pivot.status);\n }),\n );\n },\n\n setStatus(pivotId, status) {\n set((state) =>\n produce(state, (draft) => {\n const pivot = draft.pivot.config.pivots[pivotId];\n if (!pivot) return;\n pivot.status = {...pivot.status, ...status};\n }),\n );\n },\n\n setConfig(pivotId, config) {\n const tableSource =\n get().pivot.config.pivots[pivotId]?.source?.kind === 'table'\n ? get().pivot.config.pivots[pivotId]!.source\n : undefined;\n const columns =\n tableSource?.kind === 'table'\n ? (get().db.tables.find(\n (t) => t.tableName === tableSource.tableName,\n )?.columns ?? [])\n : [];\n updatePivotConfig(pivotId, () =>\n normalizePivotConfig(config, columns),\n );\n },\n\n patchConfig(pivotId, config) {\n const tableSource =\n get().pivot.config.pivots[pivotId]?.source?.kind === 'table'\n ? get().pivot.config.pivots[pivotId]!.source\n : undefined;\n const columns =\n tableSource?.kind === 'table'\n ? (get().db.tables.find(\n (t) => t.tableName === tableSource.tableName,\n )?.columns ?? [])\n : [];\n updatePivotConfig(pivotId, (c) =>\n normalizePivotConfig({...c, ...config}, columns),\n );\n },\n\n setRendererName: (pivotId, rendererName) =>\n updatePivotConfig(pivotId, (c) => ({...c, rendererName})),\n\n setAggregatorName: (pivotId, aggregatorName) =>\n updatePivotConfig(pivotId, (c) => ({...c, aggregatorName})),\n\n setRows: (pivotId, rows) =>\n updatePivotConfig(pivotId, (c) => ({...c, rows})),\n\n setCols: (pivotId, cols) =>\n updatePivotConfig(pivotId, (c) => ({...c, cols})),\n\n setVals: (pivotId, vals) =>\n updatePivotConfig(pivotId, (c) => ({...c, vals})),\n\n setUnusedOrder: (pivotId, unusedOrder) =>\n updatePivotConfig(pivotId, (c) => ({...c, unusedOrder})),\n\n moveField: (pivotId, field, destination, index) =>\n updatePivotConfig(pivotId, (c) =>\n moveFieldInConfig(c, field, destination, index),\n ),\n\n cycleRowOrder: (pivotId) =>\n updatePivotConfig(pivotId, (c) => ({\n ...c,\n rowOrder: nextSortOrder(c.rowOrder),\n })),\n\n cycleColOrder: (pivotId) =>\n updatePivotConfig(pivotId, (c) => ({\n ...c,\n colOrder: nextSortOrder(c.colOrder),\n })),\n\n setAttributeFilterValues: (pivotId, attribute, values) =>\n updatePivotConfig(pivotId, (c) =>\n setAttributeFilterValuesInConfig(c, attribute, values),\n ),\n\n addAttributeFilterValues: (pivotId, attribute, values) =>\n updatePivotConfig(pivotId, (c) =>\n addAttributeFilterValuesInConfig(c, attribute, values),\n ),\n\n removeAttributeFilterValues: (pivotId, attribute, values) =>\n updatePivotConfig(pivotId, (c) =>\n removeAttributeFilterValuesInConfig(c, attribute, values),\n ),\n\n clearAttributeFilter: (pivotId, attribute) =>\n updatePivotConfig(pivotId, (c) =>\n clearAttributeFilterInConfig(c, attribute),\n ),\n\n async runPivot(pivotId, opts) {\n const state = get();\n const pivot = state.pivot.config.pivots[pivotId];\n if (!pivot) return;\n\n const schemaName = opts?.schemaName ?? '__sqlrooms_pivot';\n\n let querySource = opts?.querySource;\n if (!querySource) {\n const tableSource =\n pivot.source?.kind === 'table' ? pivot.source : undefined;\n if (!tableSource) return;\n const table = state.db.tables.find(\n (t) => t.tableName === tableSource.tableName,\n );\n if (!table) return;\n querySource = createPivotQuerySourceFromTable(table);\n }\n\n set((current) =>\n produce(current, (draft) => {\n const p = draft.pivot.config.pivots[pivotId];\n if (!p) return;\n p.status = {...p.status, state: 'running'};\n }),\n );\n\n try {\n const connector = await state.db.getConnector();\n const normalizedConfig = normalizePivotConfig(\n pivot.config,\n querySource.columns,\n );\n const relations = await createOrReplacePivotRelations({\n connector,\n source: querySource,\n config: normalizedConfig,\n relationBaseName: `pivot_${pivotId}`,\n schemaName,\n });\n set((current) =>\n produce(current, (draft) => {\n const p = draft.pivot.config.pivots[pivotId];\n if (!p) return;\n p.config = normalizedConfig;\n p.status = {\n state: 'success',\n stale: false,\n lastRunTime: Date.now(),\n relations,\n sourceRelation: querySource!.tableRef,\n };\n }),\n );\n void get().db.refreshTableSchemas();\n } catch (error) {\n set((current) =>\n produce(current, (draft) => {\n const p = draft.pivot.config.pivots[pivotId];\n if (!p) return;\n p.status = {\n ...p.status,\n state: 'error',\n lastError:\n error instanceof Error ? error.message : String(error),\n };\n }),\n );\n }\n },\n },\n };\n });\n}\n"]}
|
package/dist/PivotView.d.ts
CHANGED
package/dist/PivotView.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PivotView.d.ts","sourceRoot":"","sources":["../src/PivotView.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAuBhD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"PivotView.d.ts","sourceRoot":"","sources":["../src/PivotView.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAuBhD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAoCjD,CAAC"}
|
package/dist/PivotView.js
CHANGED
|
@@ -7,33 +7,29 @@ const PivotViewContent = ({ pivotId }) => {
|
|
|
7
7
|
const pivotStore = useMemo(() => getPivotStore(pivotId), [getPivotStore, pivotId]);
|
|
8
8
|
return _jsx(PivotEditor, { store: pivotStore, autoRun: true });
|
|
9
9
|
};
|
|
10
|
-
export const PivotView = () => {
|
|
10
|
+
export const PivotView = ({ pivotId }) => {
|
|
11
11
|
const tables = useBaseRoomStore((state) => state.db.tables);
|
|
12
|
-
const
|
|
13
|
-
const currentPivotId = pivotConfig.currentPivotId;
|
|
14
|
-
const currentPivot = currentPivotId
|
|
15
|
-
? pivotConfig.pivots[currentPivotId]
|
|
16
|
-
: undefined;
|
|
12
|
+
const pivot = useBaseRoomStore((state) => state.pivot.config.pivots[pivotId]);
|
|
17
13
|
const setSource = useBaseRoomStore((state) => state.pivot.setSource);
|
|
18
14
|
const selectedTable = useMemo(() => {
|
|
19
|
-
if (
|
|
15
|
+
if (pivot?.source?.kind !== 'table') {
|
|
20
16
|
return tables[0];
|
|
21
17
|
}
|
|
22
|
-
const tableName =
|
|
18
|
+
const tableName = pivot.source.tableName;
|
|
23
19
|
return tables.find((table) => table.tableName === tableName) ?? tables[0];
|
|
24
|
-
}, [
|
|
20
|
+
}, [pivot?.source, tables]);
|
|
25
21
|
useEffect(() => {
|
|
26
|
-
if (
|
|
27
|
-
setSource(
|
|
22
|
+
if (pivot && !pivot.source && selectedTable) {
|
|
23
|
+
setSource(pivot.id, {
|
|
28
24
|
kind: 'table',
|
|
29
25
|
tableName: selectedTable.tableName,
|
|
30
26
|
});
|
|
31
27
|
}
|
|
32
|
-
}, [
|
|
33
|
-
const tableSource =
|
|
34
|
-
if (!
|
|
28
|
+
}, [pivot, selectedTable, setSource]);
|
|
29
|
+
const tableSource = pivot?.source?.kind === 'table' ? pivot.source : undefined;
|
|
30
|
+
if (!pivot || !selectedTable || !tableSource) {
|
|
35
31
|
return null;
|
|
36
32
|
}
|
|
37
|
-
return _jsx(PivotViewContent, { pivotId:
|
|
33
|
+
return _jsx(PivotViewContent, { pivotId: pivot.id });
|
|
38
34
|
};
|
|
39
35
|
//# sourceMappingURL=PivotView.js.map
|
package/dist/PivotView.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PivotView.js","sourceRoot":"","sources":["../src/PivotView.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAc,EAAC,SAAS,EAAE,OAAO,EAAC,MAAM,OAAO,CAAC;AAChD,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAU1C,MAAM,gBAAgB,GAAgC,CAAC,EAAC,OAAO,EAAC,EAAE,EAAE;IAClE,MAAM,aAAa,GAAG,gBAAgB,CACpC,CAAC,KAAqB,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CACrD,CAAC;IACF,MAAM,UAAU,GAAG,OAAO,CACxB,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAC5B,CAAC,aAAa,EAAE,OAAO,CAAC,CACzB,CAAC;IAEF,OAAO,KAAC,WAAW,IAAC,KAAK,EAAE,UAAU,EAAE,OAAO,SAAG,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"PivotView.js","sourceRoot":"","sources":["../src/PivotView.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAc,EAAC,SAAS,EAAE,OAAO,EAAC,MAAM,OAAO,CAAC;AAChD,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAU1C,MAAM,gBAAgB,GAAgC,CAAC,EAAC,OAAO,EAAC,EAAE,EAAE;IAClE,MAAM,aAAa,GAAG,gBAAgB,CACpC,CAAC,KAAqB,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CACrD,CAAC;IACF,MAAM,UAAU,GAAG,OAAO,CACxB,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAC5B,CAAC,aAAa,EAAE,OAAO,CAAC,CACzB,CAAC;IAEF,OAAO,KAAC,WAAW,IAAC,KAAK,EAAE,UAAU,EAAE,OAAO,SAAG,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAgC,CAAC,EAAC,OAAO,EAAC,EAAE,EAAE;IAClE,MAAM,MAAM,GAAG,gBAAgB,CAC7B,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAC3B,CAAC;IACF,MAAM,KAAK,GAAG,gBAAgB,CAC5B,CAAC,KAAqB,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAC9D,CAAC;IACF,MAAM,SAAS,GAAG,gBAAgB,CAChC,CAAC,KAAqB,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CACjD,CAAC;IAEF,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QACjC,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;YACpC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;QACzC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAE5B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC;YAC5C,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE;gBAClB,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,aAAa,CAAC,SAAS;aACnC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;IAEtC,MAAM,WAAW,GACf,KAAK,EAAE,MAAM,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAE7D,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,IAAI,CAAC,WAAW,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAC,gBAAgB,IAAC,OAAO,EAAE,KAAK,CAAC,EAAE,GAAI,CAAC;AACjD,CAAC,CAAC","sourcesContent":["import {DataTable} from '@sqlrooms/duckdb';\nimport type {BaseRoomStoreState} from '@sqlrooms/room-store';\nimport {useBaseRoomStore} from '@sqlrooms/room-store';\nimport React, {useEffect, useMemo} from 'react';\nimport {PivotEditor} from './PivotEditor';\nimport {PivotSliceState} from './types';\n\ntype PivotRootState = BaseRoomStoreState &\n PivotSliceState & {\n db: {\n tables: DataTable[];\n };\n };\n\nconst PivotViewContent: React.FC<{pivotId: string}> = ({pivotId}) => {\n const getPivotStore = useBaseRoomStore(\n (state: PivotRootState) => state.pivot.getPivotStore,\n );\n const pivotStore = useMemo(\n () => getPivotStore(pivotId),\n [getPivotStore, pivotId],\n );\n\n return <PivotEditor store={pivotStore} autoRun />;\n};\n\nexport const PivotView: React.FC<{pivotId: string}> = ({pivotId}) => {\n const tables = useBaseRoomStore<PivotRootState, DataTable[]>(\n (state) => state.db.tables,\n );\n const pivot = useBaseRoomStore(\n (state: PivotRootState) => state.pivot.config.pivots[pivotId],\n );\n const setSource = useBaseRoomStore(\n (state: PivotRootState) => state.pivot.setSource,\n );\n\n const selectedTable = useMemo(() => {\n if (pivot?.source?.kind !== 'table') {\n return tables[0];\n }\n const tableName = pivot.source.tableName;\n return tables.find((table) => table.tableName === tableName) ?? tables[0];\n }, [pivot?.source, tables]);\n\n useEffect(() => {\n if (pivot && !pivot.source && selectedTable) {\n setSource(pivot.id, {\n kind: 'table',\n tableName: selectedTable.tableName,\n });\n }\n }, [pivot, selectedTable, setSource]);\n\n const tableSource =\n pivot?.source?.kind === 'table' ? pivot.source : undefined;\n\n if (!pivot || !selectedTable || !tableSource) {\n return null;\n }\n\n return <PivotViewContent pivotId={pivot.id} />;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pivotCellRegistryEntry.d.ts","sourceRoot":"","sources":["../src/pivotCellRegistryEntry.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAIjB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"pivotCellRegistryEntry.d.ts","sourceRoot":"","sources":["../src/pivotCellRegistryEntry.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAIjB,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAc,KAAK,SAAS,EAAC,MAAM,kBAAkB,CAAC;AA2C7D,eAAO,MAAM,sBAAsB,EAAE,gBAAgB,CAAC,SAAS,CA0H9D,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { findArtifactIdForCell, resolveArtifactSchemaName, } from '@sqlrooms/cells';
|
|
3
3
|
import { produce } from 'immer';
|
|
4
4
|
import { PivotCellContent } from './PivotCellContent';
|
|
5
5
|
import { isPivotCell } from './pivotCellTypes';
|
|
@@ -100,10 +100,12 @@ export const pivotCellRegistryEntry = {
|
|
|
100
100
|
const pivot = state.pivot.config.pivots[pivotId];
|
|
101
101
|
if (!pivot)
|
|
102
102
|
return;
|
|
103
|
-
const
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
|
|
103
|
+
const artifactId = findArtifactIdForCell(state, id);
|
|
104
|
+
const artifact = artifactId
|
|
105
|
+
? state.cells.config.artifacts[artifactId]
|
|
106
|
+
: undefined;
|
|
107
|
+
const schemaName = artifact
|
|
108
|
+
? resolveArtifactSchemaName(artifact)
|
|
107
109
|
: opts?.schemaName || '__sqlrooms_pivot';
|
|
108
110
|
let querySource;
|
|
109
111
|
if (pivot.source?.kind === 'sql') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pivotCellRegistryEntry.js","sourceRoot":"","sources":["../src/pivotCellRegistryEntry.tsx"],"names":[],"mappings":";AAOA,OAAO,
|
|
1
|
+
{"version":3,"file":"pivotCellRegistryEntry.js","sourceRoot":"","sources":["../src/pivotCellRegistryEntry.tsx"],"names":[],"mappings":";AAOA,OAAO,EACL,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAC,WAAW,EAAiB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAC,sBAAsB,EAAC,MAAM,OAAO,CAAC;AAK7C,SAAS,uBAAuB,CAAC,WAAwB;IACvD,MAAM,SAAS,GAA2B;QACxC,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,OAAO;KACf,CAAC;IACF,OAAO;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,MAAM;QAC9C,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,SAAS,EAAE,WAAW,CAAC,SAAS;QAChC,WAAW,EAAE,WAAW,CAAC,WAAW;KACrC,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAqB,EACrB,KAAa;IAEb,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,UAAU,GACd,YAAY,EAAE,IAAI,KAAK,KAAK;QAC1B,CAAC,CAAE,YAA8B,CAAC,UAAU;QAC5C,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAElC,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAClE,MAAM,OAAO,GAAG,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1D,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;KACzB,CAAC,CAAC,CAAC;IACJ,IAAI,CAAC,OAAO,EAAE,MAAM;QAAE,OAAO,SAAS,CAAC;IAEvC,OAAO,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAgC;IACjE,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,aAAa;IAEpB,UAAU,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE,EAAE;QACxB,MAAM,KAAK,GAAG,GAAG,EAAoB,CAAC;QACtC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,OAAO,EAAC,CAAC,CAAC;QACvD,OAAO;YACL,EAAE;YACF,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,EAAC,OAAO,EAAC;SAChB,CAAC;IACJ,CAAC;IAED,UAAU,EAAE,CAAC,EAAC,EAAE,EAAE,IAAI,EAAE,eAAe,EAAC,EAAE,EAAE,CAAC,CAC3C,KAAC,gBAAgB,IACf,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,IAAiB,EACvB,eAAe,EAAE,eAAe,GAChC,CACH;IAED,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC3B,qEAAqE;QACrE,2DAA2D;QAC3D,uEAAuE;QACvE,oEAAoE;QACpE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,YAAY,EAAE,GAAe,EAAE,CAAC,CAAC;QAC/B,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,IAAI;KACZ,CAAC;IAEF,YAAY,EAAE,GAAG,EAAE;QACjB,kDAAkD;IACpD,CAAC;IAED,QAAQ,EAAE,KAAK,EAAE,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE,EAAE;QAC5B,MAAM,KAAK,GAAG,GAAG,EAAoB,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAAE,OAAO;QACxC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,iBAAiB,EAAE,CAAC,OAAa,EAAE,OAAa,EAAW,EAAE;QAC3D,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QACjE,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;IACvD,CAAC;IAED,gBAAgB,EAAE,CAAC,aAAa,EAAc,EAAE,CAAC,CAAC;QAChD,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,IAAI;QACX,WAAW,EAAG,aAAwC,CAAC,WAAW;KACnE,CAAC;IAEF,kBAAkB,EAAE,GAAa,EAAE;QACjC,oDAAoD;QACpD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,WAAW,EAAE,CAAC,aAAa,EAAE,OAAO,EAAc,EAAE,CAAC,CAAC;QACpD,GAAG,aAAa;QAChB,MAAM,EAAE,OAAO;QACf,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,OAAO;KACnB,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,EAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAC,EAAE,EAAE;QACtC,MAAM,KAAK,GAAG,GAAG,EAAoB,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAAE,OAAO;QAExC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,UAAU;YACzB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC;YAC1C,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,UAAU,GAAG,QAAQ;YACzB,CAAC,CAAC,yBAAyB,CAAC,QAAQ,CAAC;YACrC,CAAC,CAAC,IAAI,EAAE,UAAU,IAAI,kBAAkB,CAAC;QAE3C,IAAI,WAAyC,CAAC;QAC9C,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,KAAK,EAAE,CAAC;YACjC,WAAW,GAAG,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACR,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;oBACnB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;wBACvB,IAAI,EAAE,OAAO;wBACb,MAAM,EAAE,OAAO;wBACf,KAAK,EAAE,IAAI;wBACX,SAAS,EAAE,qDAAqD;qBACjE,CAAC;gBACJ,CAAC,CAAC,CACH,CAAC;gBACF,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE;YAClC,OAAO,EAAE,IAAI,EAAE,OAAO;YACtB,UAAU;YACV,WAAW;SACZ,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,GAAG,EAAoB,CAAC;QAC7C,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,YAAY,EAAE,CAAC;YACjB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACR,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;gBACnB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,uBAAuB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACxE,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC","sourcesContent":["import type {\n Cell,\n CellRegistryItem,\n CellsRootState,\n CellStatus,\n SqlCellStatus,\n} from '@sqlrooms/cells';\nimport {\n findArtifactIdForCell,\n resolveArtifactSchemaName,\n} from '@sqlrooms/cells';\nimport {produce} from 'immer';\nimport {PivotCellContent} from './PivotCellContent';\nimport {isPivotCell, type PivotCell} from './pivotCellTypes';\nimport {createPivotQuerySource} from './sql';\nimport type {PivotQuerySource, PivotSliceState, PivotStatus} from './types';\n\ntype PivotRootState = CellsRootState & PivotSliceState;\n\nfunction pivotStatusToCellStatus(pivotStatus: PivotStatus): CellStatus {\n const statusMap: Record<string, string> = {\n idle: 'idle',\n running: 'running',\n success: 'success',\n error: 'error',\n };\n return {\n type: 'pivot',\n status: statusMap[pivotStatus.state] ?? 'idle',\n stale: pivotStatus.stale,\n lastError: pivotStatus.lastError,\n lastRunTime: pivotStatus.lastRunTime,\n };\n}\n\nfunction resolveSqlQuerySource(\n state: CellsRootState,\n sqlId: string,\n): PivotQuerySource | undefined {\n const sourceStatus = state.cells.status[sqlId];\n const resultView =\n sourceStatus?.type === 'sql'\n ? (sourceStatus as SqlCellStatus).resultView\n : undefined;\n if (!resultView) return undefined;\n\n const sourceResult = state.cells.getCellResult(sqlId)?.arrowTable;\n const columns = sourceResult?.schema.fields.map((field) => ({\n name: field.name,\n type: String(field.type),\n }));\n if (!columns?.length) return undefined;\n\n return createPivotQuerySource(resultView, columns);\n}\n\nexport const pivotCellRegistryEntry: CellRegistryItem<PivotCell> = {\n type: 'pivot',\n title: 'Pivot Table',\n\n createCell: ({id, get}) => {\n const state = get() as PivotRootState;\n const pivotId = state.pivot.addPivot({title: 'Pivot'});\n return {\n id,\n type: 'pivot',\n data: {pivotId},\n };\n },\n\n renderCell: ({id, cell, renderContainer}) => (\n <PivotCellContent\n id={id}\n cell={cell as PivotCell}\n renderContainer={renderContainer}\n />\n ),\n\n findDependencies: async () => {\n // We can't access PivotSlice from here (only cell data + cells map).\n // Pivot source info lives in PivotSlice, not in cell data.\n // TODO: if dependency tracking is needed, extend findDependencies args\n // to include the full store, or store the source kind in cell data.\n return [];\n },\n\n createStatus: (): CellStatus => ({\n type: 'pivot',\n status: 'idle',\n stale: true,\n }),\n\n onInitialize: () => {\n // PivotSlice.initialize() handles runtime resets.\n },\n\n onRemove: async ({id, get}) => {\n const state = get() as PivotRootState;\n const cell = state.cells.config.data[id];\n if (!cell || !isPivotCell(cell)) return;\n state.pivot.removePivot(cell.data.pivotId);\n },\n\n hasSemanticChange: (oldCell: Cell, newCell: Cell): boolean => {\n if (!isPivotCell(oldCell) || !isPivotCell(newCell)) return false;\n return oldCell.data.pivotId !== newCell.data.pivotId;\n },\n\n invalidateStatus: (currentStatus): CellStatus => ({\n type: 'pivot',\n status: 'idle',\n stale: true,\n lastRunTime: (currentStatus as {lastRunTime?: number}).lastRunTime,\n }),\n\n getRelationsToDrop: (): string[] => {\n // PivotSlice.removePivot() handles relation cleanup\n return [];\n },\n\n recordError: (currentStatus, message): CellStatus => ({\n ...currentStatus,\n status: 'error',\n stale: true,\n lastError: message,\n }),\n\n runCell: async ({id, opts, get, set}) => {\n const state = get() as PivotRootState;\n const cell = state.cells.config.data[id];\n if (!cell || !isPivotCell(cell)) return;\n\n const pivotId = cell.data.pivotId;\n const pivot = state.pivot.config.pivots[pivotId];\n if (!pivot) return;\n\n const artifactId = findArtifactIdForCell(state, id);\n const artifact = artifactId\n ? state.cells.config.artifacts[artifactId]\n : undefined;\n const schemaName = artifact\n ? resolveArtifactSchemaName(artifact)\n : opts?.schemaName || '__sqlrooms_pivot';\n\n let querySource: PivotQuerySource | undefined;\n if (pivot.source?.kind === 'sql') {\n querySource = resolveSqlQuerySource(state, pivot.source.sqlId);\n if (!querySource) {\n set((s) =>\n produce(s, (draft) => {\n draft.cells.status[id] = {\n type: 'pivot',\n status: 'error',\n stale: true,\n lastError: 'Pivot source SQL cell has no results. Run it first.',\n };\n }),\n );\n return;\n }\n }\n\n await state.pivot.runPivot(pivotId, {\n cascade: opts?.cascade,\n schemaName,\n querySource,\n });\n\n const updatedState = get() as PivotRootState;\n const updatedPivot = updatedState.pivot.config.pivots[pivotId];\n if (updatedPivot) {\n set((s) =>\n produce(s, (draft) => {\n draft.cells.status[id] = pivotStatusToCellStatus(updatedPivot.status);\n }),\n );\n }\n },\n};\n"]}
|
package/dist/types.d.ts
CHANGED
|
@@ -410,7 +410,6 @@ export declare const PivotSliceConfig: z.ZodObject<{
|
|
|
410
410
|
} | undefined;
|
|
411
411
|
}>>>>;
|
|
412
412
|
pivotOrder: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
413
|
-
currentPivotId: z.ZodOptional<z.ZodString>;
|
|
414
413
|
}, z.core.$strip>;
|
|
415
414
|
export type PivotSliceConfig = z.infer<typeof PivotSliceConfig>;
|
|
416
415
|
export type PivotDropZone = 'unused' | 'rows' | 'cols';
|
|
@@ -428,12 +427,17 @@ export type PivotSliceState = {
|
|
|
428
427
|
initialize: () => Promise<void>;
|
|
429
428
|
getPivotStore: (pivotId: string) => PivotInstanceStore;
|
|
430
429
|
addPivot: (props?: {
|
|
430
|
+
id?: string;
|
|
431
431
|
title?: string;
|
|
432
432
|
source?: PivotSource;
|
|
433
433
|
config?: Partial<PivotConfig>;
|
|
434
434
|
}) => string;
|
|
435
|
+
ensurePivot: (pivotId: string, props?: {
|
|
436
|
+
title?: string;
|
|
437
|
+
source?: PivotSource;
|
|
438
|
+
config?: Partial<PivotConfig>;
|
|
439
|
+
}) => void;
|
|
435
440
|
removePivot: (pivotId: string) => void;
|
|
436
|
-
setCurrentPivot: (pivotId: string) => void;
|
|
437
441
|
renamePivot: (pivotId: string, title: string) => void;
|
|
438
442
|
setSource: (pivotId: string, source: PivotSource | undefined) => void;
|
|
439
443
|
setStatus: (pivotId: string, status: Partial<PivotStatus>) => void;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AAE9C,eAAO,MAAM,oBAAoB,2QAevB,CAAC;AAEX,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;EAA+B,CAAC;AAC9D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,cAAc;;;;EAIzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,oBAAoB,wCAAoC,CAAC;AACtE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,sBAAsB,kEAGlC,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBActB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,WAAW;;;;;;2BAStB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,kBAAkB;;;;;;iBAM7B,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,eAAO,MAAM,aAAa;;;;;;EAMxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;iBAOtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAwBtD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAWtB,CAAC;AACN,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -102,6 +102,5 @@ export const PivotSliceItem = z
|
|
|
102
102
|
export const PivotSliceConfig = z.object({
|
|
103
103
|
pivots: z.record(z.string(), PivotSliceItem).default({}),
|
|
104
104
|
pivotOrder: z.array(z.string()).default([]),
|
|
105
|
-
currentPivotId: z.string().optional(),
|
|
106
105
|
});
|
|
107
106
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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","sourcesContent":["import {SliceFunctions} from '@sqlrooms/room-store';\nimport {z} from 'zod';\nimport type {StoreApi} from 'zustand/vanilla';\n\nexport const PIVOT_RENDERER_NAMES = [\n 'Table',\n 'Table Heatmap',\n 'Table Col Heatmap',\n 'Table Row Heatmap',\n 'Exportable TSV',\n 'Grouped Column Chart',\n 'Stacked Column Chart',\n 'Grouped Bar Chart',\n 'Stacked Bar Chart',\n 'Line Chart',\n 'Dot Chart',\n 'Area Chart',\n 'Scatter Chart',\n 'Multiple Pie Chart',\n] as const;\n\nexport const PivotRendererName = z.enum(PIVOT_RENDERER_NAMES);\nexport type PivotRendererName = z.infer<typeof PivotRendererName>;\n\nexport const PivotSortOrder = z.enum([\n 'key_a_to_z',\n 'value_a_to_z',\n 'value_z_to_a',\n]);\nexport type PivotSortOrder = z.infer<typeof PivotSortOrder>;\n\nexport const PivotFilterMapSchema = z.record(z.string(), z.boolean());\nexport type PivotFilterMap = z.infer<typeof PivotFilterMapSchema>;\n\nexport const PivotValueFilterSchema = z.record(\n z.string(),\n PivotFilterMapSchema,\n);\nexport type PivotValueFilter = z.infer<typeof PivotValueFilterSchema>;\n\nexport const PivotConfig = z.object({\n rendererName: PivotRendererName.default('Table'),\n aggregatorName: z.string().default('Count'),\n rows: z.array(z.string()).default([]),\n cols: z.array(z.string()).default([]),\n vals: z.array(z.string()).default([]),\n valueFilter: PivotValueFilterSchema.default({}),\n rowOrder: PivotSortOrder.default('key_a_to_z'),\n colOrder: PivotSortOrder.default('key_a_to_z'),\n unusedOrder: z.array(z.string()).default([]),\n menuLimit: z.number().int().positive().default(500),\n hiddenAttributes: z.array(z.string()).default([]),\n hiddenFromAggregators: z.array(z.string()).default([]),\n hiddenFromDragDrop: z.array(z.string()).default([]),\n});\nexport type PivotConfig = z.infer<typeof PivotConfig>;\n\nexport const PivotSource = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('table'),\n tableName: z.string(),\n }),\n z.object({\n kind: z.literal('sql'),\n sqlId: z.string(),\n }),\n]);\nexport type PivotSource = z.infer<typeof PivotSource>;\n\nexport const PivotRelationViews = z.object({\n cells: z.string().optional(),\n rowTotals: z.string().optional(),\n colTotals: z.string().optional(),\n grandTotal: z.string().optional(),\n export: z.string().optional(),\n});\nexport type PivotRelationViews = z.infer<typeof PivotRelationViews>;\n\nexport const PivotRunState = z.enum([\n 'idle',\n 'running',\n 'success',\n 'cancel',\n 'error',\n]);\nexport type PivotRunState = z.infer<typeof PivotRunState>;\n\nexport const PivotStatus = z.object({\n state: PivotRunState.default('idle'),\n stale: z.boolean().default(false),\n lastError: z.string().optional(),\n lastRunTime: z.number().optional(),\n relations: PivotRelationViews.optional(),\n sourceRelation: z.string().optional(),\n});\nexport type PivotStatus = z.infer<typeof PivotStatus>;\n\nfunction sanitizePersistedPivotStatus(status: PivotStatus): PivotStatus {\n const hasEphemeralRuntimeState = Boolean(\n status.relations ||\n status.sourceRelation ||\n status.lastError ||\n status.state === 'running' ||\n status.state === 'success' ||\n status.state === 'cancel' ||\n status.state === 'error',\n );\n\n if (!hasEphemeralRuntimeState) {\n return status;\n }\n\n return {\n state: 'idle',\n stale: true,\n lastRunTime: status.lastRunTime,\n };\n}\n\nexport const PivotSliceItem = z\n .object({\n id: z.string(),\n title: z.string(),\n source: PivotSource.optional(),\n config: PivotConfig,\n status: PivotStatus.default({state: 'idle', stale: false}),\n })\n .transform((item) => ({\n ...item,\n status: sanitizePersistedPivotStatus(item.status),\n }));\nexport type PivotSliceItem = z.infer<typeof PivotSliceItem>;\n\nexport const PivotSliceConfig = z.object({\n pivots: z.record(z.string(), PivotSliceItem).default({}),\n pivotOrder: z.array(z.string()).default([]),\n currentPivotId: z.string().optional(),\n});\nexport type PivotSliceConfig = z.infer<typeof PivotSliceConfig>;\n\nexport type PivotDropZone = 'unused' | 'rows' | 'cols';\n\nexport type PivotField = {\n name: string;\n type: string;\n};\n\nexport type PivotQuerySource = {\n tableRef: string;\n columns: PivotField[];\n};\n\nexport type PivotSliceState = {\n pivot: SliceFunctions & {\n config: PivotSliceConfig;\n initialize: () => Promise<void>;\n getPivotStore: (pivotId: string) => PivotInstanceStore;\n addPivot: (props?: {\n title?: string;\n source?: PivotSource;\n config?: Partial<PivotConfig>;\n }) => string;\n removePivot: (pivotId: string) => void;\n setCurrentPivot: (pivotId: string) => void;\n renamePivot: (pivotId: string, title: string) => void;\n setSource: (pivotId: string, source: PivotSource | undefined) => void;\n setStatus: (pivotId: string, status: Partial<PivotStatus>) => void;\n setConfig: (pivotId: string, config: PivotConfig) => void;\n patchConfig: (pivotId: string, config: Partial<PivotConfig>) => void;\n setRendererName: (pivotId: string, rendererName: PivotRendererName) => void;\n setAggregatorName: (pivotId: string, aggregatorName: string) => void;\n setRows: (pivotId: string, rows: string[]) => void;\n setCols: (pivotId: string, cols: string[]) => void;\n setVals: (pivotId: string, vals: string[]) => void;\n setUnusedOrder: (pivotId: string, unusedOrder: string[]) => void;\n moveField: (\n pivotId: string,\n field: string,\n destination: PivotDropZone,\n index?: number,\n ) => void;\n cycleRowOrder: (pivotId: string) => void;\n cycleColOrder: (pivotId: string) => void;\n setAttributeFilterValues: (\n pivotId: string,\n attribute: string,\n values: string[],\n ) => void;\n addAttributeFilterValues: (\n pivotId: string,\n attribute: string,\n values: string[],\n ) => void;\n removeAttributeFilterValues: (\n pivotId: string,\n attribute: string,\n values: string[],\n ) => void;\n clearAttributeFilter: (pivotId: string, attribute: string) => void;\n runPivot: (\n pivotId: string,\n opts?: {\n cascade?: boolean;\n schemaName?: string;\n querySource?: PivotQuerySource;\n },\n ) => Promise<void>;\n };\n};\n\nexport type PivotEditorUiState = {\n sectionOpenState: Record<string, boolean>;\n};\n\nexport type PivotInstanceSnapshot = {\n source?: PivotSource;\n config: PivotConfig;\n status: PivotStatus;\n querySource?: PivotQuerySource;\n fields: PivotField[];\n availableTables: string[];\n};\n\nexport type PivotInstanceCallbacks = {\n setSource?: (source: PivotSource | undefined) => void;\n setConfig?: (config: PivotConfig) => void;\n run?: () => void | Promise<void>;\n};\n\nexport type PivotInstanceState = PivotInstanceSnapshot & {\n ui: PivotEditorUiState;\n setSource: (source: PivotSource | undefined) => void;\n setConfig: (config: PivotConfig) => void;\n patchConfig: (config: Partial<PivotConfig>) => void;\n setRendererName: (rendererName: PivotConfig['rendererName']) => void;\n setAggregatorName: (aggregatorName: string) => void;\n setVals: (vals: string[]) => void;\n moveField: (\n field: string,\n destination: PivotDropZone,\n index?: number,\n ) => void;\n cycleRowOrder: () => void;\n cycleColOrder: () => void;\n setAttributeFilterValues: (attribute: string, values: string[]) => void;\n addAttributeFilterValues: (attribute: string, values: string[]) => void;\n removeAttributeFilterValues: (attribute: string, values: string[]) => void;\n clearAttributeFilter: (attribute: string) => void;\n setSectionOpen: (section: string, isOpen: boolean) => void;\n run: () => Promise<void>;\n};\n\nexport type PivotInstanceStore = StoreApi<PivotInstanceState> & {\n destroy: () => void;\n};\n\nexport type CreatePivotCoreStoreProps = {\n source?: PivotSource;\n config?: Partial<PivotConfig>;\n status?: Partial<PivotStatus>;\n querySource?: PivotQuerySource;\n fields?: PivotField[];\n availableTables?: string[];\n callbacks?: PivotInstanceCallbacks;\n};\n\nexport type PivotOutputCell = {\n rowKey: string[];\n colKey: string[];\n value: number | string | null;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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","sourcesContent":["import {SliceFunctions} from '@sqlrooms/room-store';\nimport {z} from 'zod';\nimport type {StoreApi} from 'zustand/vanilla';\n\nexport const PIVOT_RENDERER_NAMES = [\n 'Table',\n 'Table Heatmap',\n 'Table Col Heatmap',\n 'Table Row Heatmap',\n 'Exportable TSV',\n 'Grouped Column Chart',\n 'Stacked Column Chart',\n 'Grouped Bar Chart',\n 'Stacked Bar Chart',\n 'Line Chart',\n 'Dot Chart',\n 'Area Chart',\n 'Scatter Chart',\n 'Multiple Pie Chart',\n] as const;\n\nexport const PivotRendererName = z.enum(PIVOT_RENDERER_NAMES);\nexport type PivotRendererName = z.infer<typeof PivotRendererName>;\n\nexport const PivotSortOrder = z.enum([\n 'key_a_to_z',\n 'value_a_to_z',\n 'value_z_to_a',\n]);\nexport type PivotSortOrder = z.infer<typeof PivotSortOrder>;\n\nexport const PivotFilterMapSchema = z.record(z.string(), z.boolean());\nexport type PivotFilterMap = z.infer<typeof PivotFilterMapSchema>;\n\nexport const PivotValueFilterSchema = z.record(\n z.string(),\n PivotFilterMapSchema,\n);\nexport type PivotValueFilter = z.infer<typeof PivotValueFilterSchema>;\n\nexport const PivotConfig = z.object({\n rendererName: PivotRendererName.default('Table'),\n aggregatorName: z.string().default('Count'),\n rows: z.array(z.string()).default([]),\n cols: z.array(z.string()).default([]),\n vals: z.array(z.string()).default([]),\n valueFilter: PivotValueFilterSchema.default({}),\n rowOrder: PivotSortOrder.default('key_a_to_z'),\n colOrder: PivotSortOrder.default('key_a_to_z'),\n unusedOrder: z.array(z.string()).default([]),\n menuLimit: z.number().int().positive().default(500),\n hiddenAttributes: z.array(z.string()).default([]),\n hiddenFromAggregators: z.array(z.string()).default([]),\n hiddenFromDragDrop: z.array(z.string()).default([]),\n});\nexport type PivotConfig = z.infer<typeof PivotConfig>;\n\nexport const PivotSource = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('table'),\n tableName: z.string(),\n }),\n z.object({\n kind: z.literal('sql'),\n sqlId: z.string(),\n }),\n]);\nexport type PivotSource = z.infer<typeof PivotSource>;\n\nexport const PivotRelationViews = z.object({\n cells: z.string().optional(),\n rowTotals: z.string().optional(),\n colTotals: z.string().optional(),\n grandTotal: z.string().optional(),\n export: z.string().optional(),\n});\nexport type PivotRelationViews = z.infer<typeof PivotRelationViews>;\n\nexport const PivotRunState = z.enum([\n 'idle',\n 'running',\n 'success',\n 'cancel',\n 'error',\n]);\nexport type PivotRunState = z.infer<typeof PivotRunState>;\n\nexport const PivotStatus = z.object({\n state: PivotRunState.default('idle'),\n stale: z.boolean().default(false),\n lastError: z.string().optional(),\n lastRunTime: z.number().optional(),\n relations: PivotRelationViews.optional(),\n sourceRelation: z.string().optional(),\n});\nexport type PivotStatus = z.infer<typeof PivotStatus>;\n\nfunction sanitizePersistedPivotStatus(status: PivotStatus): PivotStatus {\n const hasEphemeralRuntimeState = Boolean(\n status.relations ||\n status.sourceRelation ||\n status.lastError ||\n status.state === 'running' ||\n status.state === 'success' ||\n status.state === 'cancel' ||\n status.state === 'error',\n );\n\n if (!hasEphemeralRuntimeState) {\n return status;\n }\n\n return {\n state: 'idle',\n stale: true,\n lastRunTime: status.lastRunTime,\n };\n}\n\nexport const PivotSliceItem = z\n .object({\n id: z.string(),\n title: z.string(),\n source: PivotSource.optional(),\n config: PivotConfig,\n status: PivotStatus.default({state: 'idle', stale: false}),\n })\n .transform((item) => ({\n ...item,\n status: sanitizePersistedPivotStatus(item.status),\n }));\nexport type PivotSliceItem = z.infer<typeof PivotSliceItem>;\n\nexport const PivotSliceConfig = z.object({\n pivots: z.record(z.string(), PivotSliceItem).default({}),\n pivotOrder: z.array(z.string()).default([]),\n});\nexport type PivotSliceConfig = z.infer<typeof PivotSliceConfig>;\n\nexport type PivotDropZone = 'unused' | 'rows' | 'cols';\n\nexport type PivotField = {\n name: string;\n type: string;\n};\n\nexport type PivotQuerySource = {\n tableRef: string;\n columns: PivotField[];\n};\n\nexport type PivotSliceState = {\n pivot: SliceFunctions & {\n config: PivotSliceConfig;\n initialize: () => Promise<void>;\n getPivotStore: (pivotId: string) => PivotInstanceStore;\n addPivot: (props?: {\n id?: string;\n title?: string;\n source?: PivotSource;\n config?: Partial<PivotConfig>;\n }) => string;\n ensurePivot: (\n pivotId: string,\n props?: {\n title?: string;\n source?: PivotSource;\n config?: Partial<PivotConfig>;\n },\n ) => void;\n removePivot: (pivotId: string) => void;\n renamePivot: (pivotId: string, title: string) => void;\n setSource: (pivotId: string, source: PivotSource | undefined) => void;\n setStatus: (pivotId: string, status: Partial<PivotStatus>) => void;\n setConfig: (pivotId: string, config: PivotConfig) => void;\n patchConfig: (pivotId: string, config: Partial<PivotConfig>) => void;\n setRendererName: (pivotId: string, rendererName: PivotRendererName) => void;\n setAggregatorName: (pivotId: string, aggregatorName: string) => void;\n setRows: (pivotId: string, rows: string[]) => void;\n setCols: (pivotId: string, cols: string[]) => void;\n setVals: (pivotId: string, vals: string[]) => void;\n setUnusedOrder: (pivotId: string, unusedOrder: string[]) => void;\n moveField: (\n pivotId: string,\n field: string,\n destination: PivotDropZone,\n index?: number,\n ) => void;\n cycleRowOrder: (pivotId: string) => void;\n cycleColOrder: (pivotId: string) => void;\n setAttributeFilterValues: (\n pivotId: string,\n attribute: string,\n values: string[],\n ) => void;\n addAttributeFilterValues: (\n pivotId: string,\n attribute: string,\n values: string[],\n ) => void;\n removeAttributeFilterValues: (\n pivotId: string,\n attribute: string,\n values: string[],\n ) => void;\n clearAttributeFilter: (pivotId: string, attribute: string) => void;\n runPivot: (\n pivotId: string,\n opts?: {\n cascade?: boolean;\n schemaName?: string;\n querySource?: PivotQuerySource;\n },\n ) => Promise<void>;\n };\n};\n\nexport type PivotEditorUiState = {\n sectionOpenState: Record<string, boolean>;\n};\n\nexport type PivotInstanceSnapshot = {\n source?: PivotSource;\n config: PivotConfig;\n status: PivotStatus;\n querySource?: PivotQuerySource;\n fields: PivotField[];\n availableTables: string[];\n};\n\nexport type PivotInstanceCallbacks = {\n setSource?: (source: PivotSource | undefined) => void;\n setConfig?: (config: PivotConfig) => void;\n run?: () => void | Promise<void>;\n};\n\nexport type PivotInstanceState = PivotInstanceSnapshot & {\n ui: PivotEditorUiState;\n setSource: (source: PivotSource | undefined) => void;\n setConfig: (config: PivotConfig) => void;\n patchConfig: (config: Partial<PivotConfig>) => void;\n setRendererName: (rendererName: PivotConfig['rendererName']) => void;\n setAggregatorName: (aggregatorName: string) => void;\n setVals: (vals: string[]) => void;\n moveField: (\n field: string,\n destination: PivotDropZone,\n index?: number,\n ) => void;\n cycleRowOrder: () => void;\n cycleColOrder: () => void;\n setAttributeFilterValues: (attribute: string, values: string[]) => void;\n addAttributeFilterValues: (attribute: string, values: string[]) => void;\n removeAttributeFilterValues: (attribute: string, values: string[]) => void;\n clearAttributeFilter: (attribute: string) => void;\n setSectionOpen: (section: string, isOpen: boolean) => void;\n run: () => Promise<void>;\n};\n\nexport type PivotInstanceStore = StoreApi<PivotInstanceState> & {\n destroy: () => void;\n};\n\nexport type CreatePivotCoreStoreProps = {\n source?: PivotSource;\n config?: Partial<PivotConfig>;\n status?: Partial<PivotStatus>;\n querySource?: PivotQuerySource;\n fields?: PivotField[];\n availableTables?: string[];\n callbacks?: PivotInstanceCallbacks;\n};\n\nexport type PivotOutputCell = {\n rowKey: string[];\n colKey: string[];\n value: number | string | null;\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,29 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sqlrooms/pivot",
|
|
3
|
-
"version": "0.29.0-rc.
|
|
4
|
-
"main": "dist/index.js",
|
|
5
|
-
"types": "dist/index.d.ts",
|
|
6
|
-
"module": "dist/index.js",
|
|
7
|
-
"type": "module",
|
|
8
|
-
"sideEffects": false,
|
|
9
|
-
"author": "SQLRooms Contributors",
|
|
10
|
-
"license": "MIT",
|
|
3
|
+
"version": "0.29.0-rc.4",
|
|
11
4
|
"repository": {
|
|
12
5
|
"type": "git",
|
|
13
6
|
"url": "git+https://github.com/sqlrooms/sqlrooms.git"
|
|
14
7
|
},
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"author": "SQLRooms Contributors",
|
|
10
|
+
"sideEffects": false,
|
|
11
|
+
"type": "module",
|
|
12
|
+
"main": "dist/index.js",
|
|
13
|
+
"module": "dist/index.js",
|
|
14
|
+
"types": "dist/index.d.ts",
|
|
15
15
|
"files": [
|
|
16
16
|
"dist"
|
|
17
17
|
],
|
|
18
|
-
"publishConfig": {
|
|
19
|
-
"access": "public"
|
|
20
|
-
},
|
|
21
18
|
"scripts": {
|
|
22
|
-
"dev": "tsc -w",
|
|
23
19
|
"build": "tsc",
|
|
20
|
+
"dev": "tsc -w",
|
|
21
|
+
"lint": "eslint .",
|
|
24
22
|
"test": "NODE_OPTIONS='--experimental-vm-modules --no-warnings' jest",
|
|
25
23
|
"test:watch": "NODE_OPTIONS='--experimental-vm-modules --no-warnings' jest --watch",
|
|
26
|
-
"lint": "eslint .",
|
|
27
24
|
"typecheck": "tsc --noEmit",
|
|
28
25
|
"typedoc": "typedoc"
|
|
29
26
|
},
|
|
@@ -31,19 +28,19 @@
|
|
|
31
28
|
"@dnd-kit/core": "^6.3.1",
|
|
32
29
|
"@dnd-kit/sortable": "^10.0.0",
|
|
33
30
|
"@paralleldrive/cuid2": "^3.0.0",
|
|
34
|
-
"@sqlrooms/cells": "
|
|
35
|
-
"@sqlrooms/duckdb": "
|
|
36
|
-
"@sqlrooms/room-store": "
|
|
37
|
-
"@sqlrooms/ui": "
|
|
38
|
-
"@sqlrooms/utils": "
|
|
39
|
-
"@sqlrooms/vega": "
|
|
31
|
+
"@sqlrooms/cells": "0.29.0-rc.4",
|
|
32
|
+
"@sqlrooms/duckdb": "0.29.0-rc.4",
|
|
33
|
+
"@sqlrooms/room-store": "0.29.0-rc.4",
|
|
34
|
+
"@sqlrooms/ui": "0.29.0-rc.4",
|
|
35
|
+
"@sqlrooms/utils": "0.29.0-rc.4",
|
|
36
|
+
"@sqlrooms/vega": "0.29.0-rc.4",
|
|
40
37
|
"immer": "^11.0.1",
|
|
41
38
|
"lucide-react": "^0.556.0",
|
|
42
39
|
"zod": "^4.1.8",
|
|
43
40
|
"zustand": "^5.0.8"
|
|
44
41
|
},
|
|
45
42
|
"devDependencies": {
|
|
46
|
-
"@sqlrooms/preset-jest": "
|
|
43
|
+
"@sqlrooms/preset-jest": "0.29.0-rc.4",
|
|
47
44
|
"@types/jest": "^30.0.0",
|
|
48
45
|
"@types/react": "^19.1.13",
|
|
49
46
|
"@types/react-dom": "^19.1.9",
|
|
@@ -54,5 +51,9 @@
|
|
|
54
51
|
"apache-arrow": "17.0.0",
|
|
55
52
|
"react": ">=18",
|
|
56
53
|
"react-dom": ">=18"
|
|
57
|
-
}
|
|
54
|
+
},
|
|
55
|
+
"publishConfig": {
|
|
56
|
+
"access": "public"
|
|
57
|
+
},
|
|
58
|
+
"gitHead": "8694bab9d3d915a06d28675ad801b21444bcc55f"
|
|
58
59
|
}
|