@platforma-sdk/ui-vue 1.41.9 → 1.41.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +11 -11
- package/.turbo/turbo-type-check.log +1 -1
- package/CHANGELOG.md +12 -0
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.d.ts +2 -7
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +159 -181
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/types.d.ts +0 -14
- package/dist/components/PlAgDataTable/types.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/types.js +9 -9
- package/dist/components/PlAgDataTable/types.js.map +1 -1
- package/dist/internal/createAppV2.d.ts +1 -7
- package/dist/internal/createAppV2.d.ts.map +1 -1
- package/dist/internal/createAppV2.js +66 -64
- package/dist/internal/createAppV2.js.map +1 -1
- package/package.json +5 -5
- package/src/components/PlAgDataTable/PlAgDataTableV2.vue +1 -38
- package/src/components/PlAgDataTable/types.ts +2 -16
- package/src/internal/createAppV2.ts +52 -36
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAgDataTableV2.vue2.js","sources":["../../../src/components/PlAgDataTable/PlAgDataTableV2.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { promiseTimeout, isJsonEqual } from '@milaboratories/helpers';\nimport type {\n AxisId,\n PlDataTableGridStateCore,\n PlDataTableStateV2,\n PlSelectionModel,\n PlTableColumnIdJson,\n PTableColumnSpec,\n PTableKey,\n PTableValue,\n} from '@platforma-sdk/model';\nimport {\n getRawPlatformaInstance,\n parseJson,\n createPlSelectionModel,\n matchAxisId,\n getAxisId,\n canonicalizeJson,\n} from '@platforma-sdk/model';\nimport type {\n CellRendererSelectorFunc,\n ColDef,\n ColGroupDef,\n GridApi,\n GridOptions,\n GridState,\n ManagedGridOptionKey,\n ManagedGridOptions,\n} from 'ag-grid-enterprise';\nimport { AgGridVue } from 'ag-grid-vue3';\nimport { computed, effectScope, ref, shallowRef, toRefs, watch } from 'vue';\nimport { AgGridTheme } from '../../aggrid';\nimport PlAgCsvExporter from '../PlAgCsvExporter/PlAgCsvExporter.vue';\nimport { PlAgGridColumnManager } from '../PlAgGridColumnManager';\nimport type { PlDataTableFiltersSettings } from '../PlTableFilters';\nimport PlTableFiltersV2 from '../PlTableFilters/PlTableFiltersV2.vue';\nimport PlAgDataTableSheets from './PlAgDataTableSheets.vue';\nimport PlOverlayLoading from './PlAgOverlayLoading.vue';\nimport PlOverlayNoRows from './PlAgOverlayNoRows.vue';\nimport PlAgRowCount from './PlAgRowCount.vue';\nimport { DeferredCircular, ensureNodeVisible } from './sources/focus-row';\nimport { autoSizeRowNumberColumn, PlAgDataTableRowNumberColId } from './sources/row-number';\nimport type { PlAgCellButtonAxisParams } from './sources/table-source-v2';\nimport { calculateGridOptions } from './sources/table-source-v2';\nimport { useTableState } from './sources/table-state-v2';\nimport type {\n PlAgDataTableV2Controller,\n PlAgDataTableV2Row,\n PlAgOverlayLoadingParams,\n PlAgOverlayNoRowsParams,\n PlDataTableSettingsV2,\n PlDataTableSheetsSettings,\n PlTableRowId,\n PlTableRowIdJson,\n} from './types';\nimport { watchCached } from '@milaboratories/uikit';\nimport { isPTableHidden, type PTableHidden } from './sources/common';\n\nconst tableState = defineModel<PlDataTableStateV2>({\n required: true,\n});\n/** Warning: selection model value updates are ignored, use updateSelection instead */\nconst selection = defineModel<PlSelectionModel>('selection');\nconst props = defineProps<{\n /** Required component settings */\n settings: Readonly<PlDataTableSettingsV2>;\n\n /**\n * The disableColumnsPanel prop controls the display of a button that activates\n * the columns management panel in the table. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n disableColumnsPanel?: boolean;\n\n /**\n * The disableFiltersPanel prop controls the display of a button that activates\n * the filters management panel in the table. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n disableFiltersPanel?: boolean;\n\n /**\n * The showExportButton prop controls the display of a button that allows\n * to export table data in CSV format. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n showExportButton?: boolean;\n\n /**\n * The AxisId property is used to configure and display the PlAgTextAndButtonCell component\n */\n showCellButtonForAxisId?: AxisId;\n\n /**\n * If cellButtonInvokeRowsOnDoubleClick = true, clicking a button inside the row\n * triggers the doubleClick event for the entire row.\n *\n * If cellButtonInvokeRowsOnDoubleClick = false, the doubleClick event for the row\n * is not triggered, but will triggered cellButtonClicked event with (key: PTableRowKey) argument.\n */\n cellButtonInvokeRowsOnDoubleClick?: boolean;\n\n /** @see {@link PlAgOverlayLoadingParams.loadingText} */\n loadingText?: string;\n\n /** @see {@link PlAgOverlayLoadingParams.notReadyText} */\n notReadyText?: string;\n\n /** @see {@link PlAgOverlayNoRowsParams.text} */\n noRowsText?: string;\n\n /**\n * Callback to override the default renderer for a given cell.\n * @see https://www.ag-grid.com/vue-data-grid/component-cell-renderer/#dynamic-component-selection\n */\n cellRendererSelector?: CellRendererSelectorFunc<PlAgDataTableV2Row>;\n}>();\nconst { settings } = toRefs(props);\nconst emit = defineEmits<{\n rowDoubleClicked: [key?: PTableKey];\n cellButtonClicked: [key?: PTableKey];\n newDataRendered: [];\n}>();\n\nconst { gridState, sheetsState, filtersState } = useTableState(tableState, settings);\n\nconst sheetsSettings = computed<PlDataTableSheetsSettings>(() => {\n const settingsCopy = { ...settings.value };\n return settingsCopy.sourceId !== null\n ? {\n sheets: settingsCopy.sheets ?? [],\n cachedState: [...sheetsState.value],\n }\n : {\n sheets: [],\n cachedState: [],\n };\n});\n\nconst filterableColumns = ref<PTableColumnSpec[]>([]);\nconst filtersSettings = computed<PlDataTableFiltersSettings>(() => {\n const settingsCopy = { ...settings.value };\n const columns = filterableColumns.value;\n const result = settingsCopy.sourceId !== null && columns.length > 0\n ? {\n columns,\n config: (column: PTableColumnSpec) => settingsCopy.filtersConfig({ sourceId: settingsCopy.sourceId, column }),\n cachedState: [...filtersState.value],\n }\n : {\n columns: [],\n config: () => ({}),\n cachedState: [],\n };\n return result;\n});\n\nconst gridApi = shallowRef<GridApi<PlAgDataTableV2Row> | null>(null);\nconst dataRenderedTracker = new DeferredCircular<GridApi<PlAgDataTableV2Row>>();\nconst gridOptions = shallowRef<GridOptions<PlAgDataTableV2Row>>({\n animateRows: false,\n suppressColumnMoveAnimation: true,\n cellSelection: !selection.value,\n initialState: gridState.value,\n autoSizeStrategy: { type: 'fitCellContents' },\n rowSelection: selection.value\n ? {\n mode: 'multiRow',\n selectAll: 'all',\n groupSelects: 'self',\n checkboxes: false,\n headerCheckbox: false,\n enableClickSelection: false,\n }\n : undefined,\n onSelectionChanged: (event) => {\n if (selection.value) {\n const state = event.api.getServerSideSelectionState();\n const selectedKeys = state?.toggledNodes?.map((nodeId) => parseJson(nodeId as PlTableRowIdJson)) ?? [];\n if (!isJsonEqual(selection.value.selectedKeys, selectedKeys)) {\n selection.value = { ...selection.value, selectedKeys };\n }\n }\n },\n onRowDoubleClicked: (event) => {\n if (event.data && event.data.axesKey) emit('rowDoubleClicked', event.data.axesKey);\n },\n defaultColDef: {\n suppressHeaderMenuButton: true,\n sortingOrder: ['desc', 'asc', null],\n cellRendererSelector: props.cellRendererSelector,\n },\n maintainColumnOrder: true,\n localeText: {\n loadingError: '...',\n },\n rowModelType: 'serverSide',\n // cacheBlockSize should be tha same as PlMultiSequenceAlignment limit\n // so that selectAll will add all rows to selection\n cacheBlockSize: 1000,\n maxBlocksInCache: 100,\n blockLoadDebounceMillis: 500,\n serverSideSortAllLevels: true,\n suppressServerSideFullWidthLoadingRow: true,\n getRowId: (params) => params.data.id,\n loading: true,\n loadingOverlayComponentParams: {\n notReady: true,\n loadingText: props.loadingText,\n notReadyText: props.notReadyText,\n } satisfies PlAgOverlayLoadingParams,\n loadingOverlayComponent: PlOverlayLoading,\n noRowsOverlayComponent: PlOverlayNoRows,\n noRowsOverlayComponentParams: {\n text: props.noRowsText,\n } satisfies PlAgOverlayNoRowsParams,\n defaultCsvExportParams: {\n allColumns: true,\n suppressQuotes: true,\n fileName: 'table.csv',\n },\n statusBar: {\n statusPanels: [\n { statusPanel: PlAgRowCount, align: 'left' },\n ],\n },\n onGridReady: (event) => {\n const api = event.api;\n autoSizeRowNumberColumn(api);\n const setGridOption = (\n key: ManagedGridOptionKey,\n value: GridOptions[ManagedGridOptionKey],\n ) => {\n const options = { ...gridOptions.value };\n options[key] = value;\n gridOptions.value = options;\n api.setGridOption(key, value);\n };\n const updateGridOptions = (options: ManagedGridOptions) => {\n gridOptions.value = {\n ...gridOptions.value,\n ...options,\n };\n api.updateGridOptions(options);\n };\n gridApi.value = new Proxy(api, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'setGridOption':\n return setGridOption;\n case 'updateGridOptions':\n return updateGridOptions;\n default:\n return Reflect.get(target, prop, receiver);\n }\n },\n });\n },\n onStateUpdated: (event) => {\n gridOptions.value.initialState = gridState.value = makePartialState(\n event.state,\n );\n event.api.autoSizeColumns(\n event.api.getAllDisplayedColumns().filter(\n (column) => column.getColId() !== PlAgDataTableRowNumberColId,\n ),\n );\n },\n onGridPreDestroyed: (event) => {\n gridOptions.value.initialState = gridState.value = makePartialState(\n event.api.getState(),\n );\n gridApi.value = null;\n },\n});\n\n// Restore proper types erased by AgGrid\nfunction makePartialState(state: GridState): PlDataTableGridStateCore {\n return {\n columnOrder: state.columnOrder as {\n orderedColIds: PlTableColumnIdJson[];\n } | undefined,\n sort: state.sort as {\n sortModel: {\n colId: PlTableColumnIdJson;\n sort: 'asc' | 'desc';\n }[];\n } | undefined,\n columnVisibility: state.columnVisibility as {\n hiddenColIds: PlTableColumnIdJson[];\n } | undefined,\n };\n};\n\n// Reload AgGrid when new state arrives from server\nconst reloadKey = ref(0);\nwatch(\n () => [gridApi.value, gridState.value] as const,\n ([gridApi, gridState]) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n const selfState = makePartialState(gridApi.getState());\n if (!isJsonEqual(gridState, {}) && !isJsonEqual(gridState, selfState)) {\n gridOptions.value.initialState = gridState;\n ++reloadKey.value;\n }\n },\n);\n\n// Make loadingOverlayComponentParams reactive\nlet oldOptions: GridOptions | null = null;\nwatch(\n () => [gridApi.value, gridOptions.value] as const,\n ([gridApi, options]) => {\n // Wait for AgGrid reinitialization, gridApi will eventially become initialized\n if (!gridApi || gridApi.isDestroyed()) return;\n if (options.loading && oldOptions?.loading && !isJsonEqual(\n options.loadingOverlayComponentParams,\n oldOptions?.loadingOverlayComponentParams,\n )) {\n // Hack to reapply loadingOverlayComponentParams\n gridApi.setGridOption('loading', false);\n gridApi.setGridOption('loading', true);\n }\n oldOptions = options;\n },\n { immediate: true },\n);\n\n// Make cellRendererSelector reactive\nconst cellRendererSelector = computed(() => props.cellRendererSelector ?? null);\nwatch(\n () => [gridApi.value, cellRendererSelector.value] as const,\n ([gridApi, cellRendererSelector]) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n gridApi.setGridOption('defaultColDef', {\n ...gridOptions.value.defaultColDef,\n cellRendererSelector: cellRendererSelector ?? undefined,\n });\n },\n);\n\ndefineExpose<PlAgDataTableV2Controller>({\n focusRow: async (rowKey) => {\n const gridApi = await dataRenderedTracker.promise;\n if (gridApi.isDestroyed()) return false;\n\n return ensureNodeVisible(gridApi, (row) => isJsonEqual(row.data?.axesKey, rowKey));\n },\n updateSelection: async ({ axesSpec, selectedKeys }) => {\n const gridApi = await dataRenderedTracker.promise;\n if (gridApi.isDestroyed()) return false;\n\n const axes = selection.value?.axesSpec;\n if (!axes || axes.length !== axesSpec.length) return false;\n\n const mapping = axesSpec\n .map((spec) => {\n const id = getAxisId(spec);\n return axes.findIndex((axis) => matchAxisId(axis, id));\n });\n const mappingSet = new Set(mapping);\n if (mappingSet.has(-1) || mappingSet.size !== axesSpec.length) return false;\n\n const selectedNodes = selectedKeys\n .map((key) => canonicalizeJson<PlTableRowId>(mapping.map((index) => key[index])));\n const oldSelectedKeys = gridApi.getServerSideSelectionState()?.toggledNodes ?? [];\n if (!isJsonEqual(oldSelectedKeys, selectedNodes)) {\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: selectedNodes,\n });\n\n // wait for `onSelectionChanged` to update `selection` model\n const scope = effectScope();\n const { resolve, promise } = Promise.withResolvers();\n scope.run(() => watch(selection, resolve, { once: true }));\n try {\n await promiseTimeout(promise, 500);\n } catch {\n return false;\n } finally {\n scope.stop();\n }\n }\n return true;\n },\n getRowCount: async () => {\n const gridApi = await dataRenderedTracker.promise;\n if (gridApi.isDestroyed()) return;\n\n return gridApi.getDisplayedRowCount();\n },\n getRow: async (index) => {\n const gridApi = await dataRenderedTracker.promise;\n if (gridApi.isDestroyed()) return;\n\n const visibleColumns: {\n spec: PTableColumnSpec;\n field: `${number}`;\n }[] = getDataColDefs(gridApi.getColumnDefs())\n .filter((def) => !def.hide)\n .map((def) => ({\n spec: parseJson(def.colId! satisfies string as PlTableColumnIdJson).labeled,\n field: def.field! as `${number}`,\n }));\n\n const row = Array.isArray(index)\n ? gridApi.getRowNode(canonicalizeJson<PlTableRowId>(index))\n : gridApi.getDisplayedRowAtIndex(index);\n if (!row) return;\n\n const rowData = row.data;\n if (!rowData) return;\n\n const getTableValue = (value: PTableValue | PTableHidden): PTableValue => {\n if (isPTableHidden(value)) throw new Error('hidden value was not filtered out');\n return value;\n };\n\n const spec: PTableColumnSpec[] = visibleColumns.map((column) => column.spec);\n const data: PTableValue[] = visibleColumns.map((column) => getTableValue(rowData[column.field]));\n return { spec, data };\n },\n});\n\nfunction getDataColDefs(\n columnDefs: ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[] | null | undefined,\n): ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[] {\n const isColDef = <TData, TValue>(\n def: ColDef<TData, TValue> | ColGroupDef<TData>,\n ): def is ColDef<TData, TValue> => !('children' in def);\n if (!columnDefs) return [];\n return columnDefs\n .filter(isColDef)\n .filter((def) => def.colId && def.colId !== PlAgDataTableRowNumberColId);\n}\n\n// Propagate columns for filter component\nwatchCached(\n () => gridOptions.value.columnDefs,\n (columnDefs) => {\n const sourceId = settings.value.sourceId;\n if (sourceId === null) {\n filterableColumns.value = [];\n } else {\n const dataColumns = getDataColDefs(columnDefs);\n filterableColumns.value = dataColumns\n .map((def) => parseJson(def.colId! satisfies string as PlTableColumnIdJson).labeled);\n }\n },\n { immediate: true },\n);\n\n// Update AgGrid when settings change\nconst defaultSelection = createPlSelectionModel();\nlet oldSettings: PlDataTableSettingsV2 | null = null;\nconst generation = ref(0);\nwatch(\n () => [gridApi.value, settings.value] as const,\n ([gridApi, settings]) => {\n // Wait for AgGrid reinitialization, gridApi will eventially become initialized\n if (!gridApi || gridApi.isDestroyed()) return;\n // Verify that this is not a false watch trigger\n if (isJsonEqual(settings, oldSettings)) return;\n ++generation.value;\n try {\n // Hide no rows overlay if it is shown, or else loading overlay will not be shown\n gridApi.hideOverlay();\n dataRenderedTracker.reset();\n\n // No data source selected -> reset state to default\n if (!settings.sourceId) {\n gridApi.updateGridOptions({\n loading: true,\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n notReady: true,\n } satisfies PlAgOverlayLoadingParams,\n columnDefs: undefined,\n serverSideDatasource: undefined,\n });\n if (selection.value) {\n if (selection.value && !isJsonEqual(selection.value, defaultSelection)) {\n selection.value = createPlSelectionModel();\n }\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n return;\n }\n\n // Data source changed -> show full page loader, clear selection\n if (settings.sourceId !== oldSettings?.sourceId) {\n gridApi.updateGridOptions({\n loading: true,\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n notReady: false,\n } satisfies PlAgOverlayLoadingParams,\n });\n if (selection.value && oldSettings?.sourceId) {\n if (selection.value && !isJsonEqual(selection.value, defaultSelection)) {\n selection.value = createPlSelectionModel();\n }\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n }\n\n // Model updated -> show skeletons instead of data\n const sourceChanged = (settings.model?.sourceId && settings.model.sourceId !== settings.sourceId);\n if (!settings.model || sourceChanged) {\n const state = gridApi.getServerSideGroupLevelState();\n const rowCount = !sourceChanged && state.length > 0\n ? state[0].rowCount\n : 1;\n return gridApi.updateGridOptions({\n serverSideDatasource: {\n getRows: (params) => {\n params.success({ rowData: [], rowCount });\n },\n },\n });\n }\n\n // Model ready -> calculate new state\n const stateGeneration = generation.value;\n calculateGridOptions({\n generation,\n pfDriver: getRawPlatformaInstance().pFrameDriver,\n model: settings.model,\n sheets: settings.sheets ?? [],\n dataRenderedTracker,\n hiddenColIds: gridState.value.columnVisibility?.hiddenColIds,\n cellButtonAxisParams: {\n showCellButtonForAxisId: props.showCellButtonForAxisId,\n cellButtonInvokeRowsOnDoubleClick:\n props.cellButtonInvokeRowsOnDoubleClick,\n trigger: (key?: PTableKey) => emit('cellButtonClicked', key),\n } satisfies PlAgCellButtonAxisParams,\n }).then((result) => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n const { axesSpec, ...options } = result;\n gridApi.updateGridOptions({\n ...options,\n });\n if (selection.value) {\n // Update selection if axesSpec changed, as order of axes may have changed and so we need to remap selected keys\n const { axesSpec: oldAxesSpec, selectedKeys: oldSelectedKeys } = selection.value;\n if (!isJsonEqual(oldAxesSpec, axesSpec)) {\n if (!oldAxesSpec || axesSpec.length !== oldAxesSpec.length) {\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: [] };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n\n const mapping = oldAxesSpec\n .map(getAxisId)\n .map((id) => axesSpec.findIndex((axis) => matchAxisId(axis, id)));\n const mappingSet = new Set(mapping);\n if (mappingSet.has(-1) || mappingSet.size !== axesSpec.length) {\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: [] };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n\n const selectedNodes = oldSelectedKeys\n .map((key) => mapping.map((index) => key[index]));\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: selectedNodes };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: selectedNodes.map((key) => canonicalizeJson<PlTableRowId>(key)),\n });\n }\n }\n }).catch((error: unknown) => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n console.trace(error);\n }).finally(() => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n gridApi.updateGridOptions({\n loading: false,\n });\n });\n dataRenderedTracker.promise.then(() => emit('newDataRendered'));\n } catch (error: unknown) {\n console.trace(error);\n } finally {\n oldSettings = settings;\n }\n },\n);\n\nwatch(\n () => ({\n gridApi: gridApi.value,\n loadingText: props.loadingText,\n notReadyText: props.notReadyText,\n noRowsText: props.noRowsText,\n }),\n ({ gridApi, loadingText, notReadyText, noRowsText }) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n gridApi.updateGridOptions({\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n loadingText,\n notReadyText,\n },\n noRowsOverlayComponentParams: {\n ...gridOptions.value.noRowsOverlayComponentParams,\n text: noRowsText,\n },\n });\n },\n);\n</script>\n\n<template>\n <div :class=\"$style.container\">\n <PlAgGridColumnManager\n v-if=\"gridApi && !disableColumnsPanel\"\n :api=\"gridApi\"\n />\n <PlTableFiltersV2\n v-if=\"!disableFiltersPanel\"\n v-model=\"filtersState\"\n :settings=\"filtersSettings\"\n />\n <PlAgCsvExporter\n v-if=\"gridApi && showExportButton\"\n :api=\"gridApi\"\n />\n <PlAgDataTableSheets\n v-model=\"sheetsState\"\n :settings=\"sheetsSettings\"\n >\n <template #before>\n <slot name=\"before-sheets\" />\n </template>\n <template #after>\n <slot name=\"after-sheets\" />\n </template>\n </PlAgDataTableSheets>\n <AgGridVue\n :key=\"reloadKey\"\n :theme=\"AgGridTheme\"\n :class=\"$style.grid\"\n :grid-options=\"gridOptions\"\n />\n </div>\n</template>\n\n<style lang=\"css\" module>\n.container {\n display: flex;\n flex-direction: column;\n height: 100%;\n gap: 12px;\n}\n\n.grid {\n flex: 1;\n}\n</style>\n"],"names":["tableState","_useModel","selection","__props","props","settings","toRefs","emit","__emit","gridState","sheetsState","filtersState","useTableState","sheetsSettings","computed","settingsCopy","filterableColumns","ref","filtersSettings","columns","column","gridApi","shallowRef","dataRenderedTracker","DeferredCircular","gridOptions","event","state","selectedKeys","_a","nodeId","parseJson","isJsonEqual","params","PlOverlayLoading","PlOverlayNoRows","PlAgRowCount","api","autoSizeRowNumberColumn","setGridOption","key","value","options","updateGridOptions","target","prop","receiver","makePartialState","PlAgDataTableRowNumberColId","reloadKey","watch","selfState","oldOptions","cellRendererSelector","__expose","rowKey","ensureNodeVisible","row","axesSpec","axes","mapping","spec","id","getAxisId","axis","matchAxisId","mappingSet","selectedNodes","canonicalizeJson","index","oldSelectedKeys","scope","effectScope","resolve","promise","promiseTimeout","visibleColumns","getDataColDefs","def","rowData","getTableValue","isPTableHidden","data","columnDefs","isColDef","watchCached","dataColumns","defaultSelection","createPlSelectionModel","oldSettings","generation","sourceChanged","rowCount","stateGeneration","calculateGridOptions","getRawPlatformaInstance","_b","result","oldAxesSpec","newSelection","error","loadingText","notReadyText","noRowsText"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PlAgDataTableV2.vue2.js","sources":["../../../src/components/PlAgDataTable/PlAgDataTableV2.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { promiseTimeout, isJsonEqual } from '@milaboratories/helpers';\nimport type {\n AxisId,\n PlDataTableGridStateCore,\n PlDataTableStateV2,\n PlSelectionModel,\n PlTableColumnIdJson,\n PTableColumnSpec,\n PTableKey,\n PTableValue,\n} from '@platforma-sdk/model';\nimport {\n getRawPlatformaInstance,\n parseJson,\n createPlSelectionModel,\n matchAxisId,\n getAxisId,\n canonicalizeJson,\n} from '@platforma-sdk/model';\nimport type {\n CellRendererSelectorFunc,\n ColDef,\n ColGroupDef,\n GridApi,\n GridOptions,\n GridState,\n ManagedGridOptionKey,\n ManagedGridOptions,\n} from 'ag-grid-enterprise';\nimport { AgGridVue } from 'ag-grid-vue3';\nimport { computed, effectScope, ref, shallowRef, toRefs, watch } from 'vue';\nimport { AgGridTheme } from '../../aggrid';\nimport PlAgCsvExporter from '../PlAgCsvExporter/PlAgCsvExporter.vue';\nimport { PlAgGridColumnManager } from '../PlAgGridColumnManager';\nimport type { PlDataTableFiltersSettings } from '../PlTableFilters';\nimport PlTableFiltersV2 from '../PlTableFilters/PlTableFiltersV2.vue';\nimport PlAgDataTableSheets from './PlAgDataTableSheets.vue';\nimport PlOverlayLoading from './PlAgOverlayLoading.vue';\nimport PlOverlayNoRows from './PlAgOverlayNoRows.vue';\nimport PlAgRowCount from './PlAgRowCount.vue';\nimport { DeferredCircular, ensureNodeVisible } from './sources/focus-row';\nimport { autoSizeRowNumberColumn, PlAgDataTableRowNumberColId } from './sources/row-number';\nimport type { PlAgCellButtonAxisParams } from './sources/table-source-v2';\nimport { calculateGridOptions } from './sources/table-source-v2';\nimport { useTableState } from './sources/table-state-v2';\nimport type {\n PlAgDataTableV2Controller,\n PlAgDataTableV2Row,\n PlAgOverlayLoadingParams,\n PlAgOverlayNoRowsParams,\n PlDataTableSettingsV2,\n PlDataTableSheetsSettings,\n PlTableRowId,\n PlTableRowIdJson,\n} from './types';\nimport { watchCached } from '@milaboratories/uikit';\nimport { type PTableHidden } from './sources/common';\n\nconst tableState = defineModel<PlDataTableStateV2>({\n required: true,\n});\n/** Warning: selection model value updates are ignored, use updateSelection instead */\nconst selection = defineModel<PlSelectionModel>('selection');\nconst props = defineProps<{\n /** Required component settings */\n settings: Readonly<PlDataTableSettingsV2>;\n\n /**\n * The disableColumnsPanel prop controls the display of a button that activates\n * the columns management panel in the table. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n disableColumnsPanel?: boolean;\n\n /**\n * The disableFiltersPanel prop controls the display of a button that activates\n * the filters management panel in the table. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n disableFiltersPanel?: boolean;\n\n /**\n * The showExportButton prop controls the display of a button that allows\n * to export table data in CSV format. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n showExportButton?: boolean;\n\n /**\n * The AxisId property is used to configure and display the PlAgTextAndButtonCell component\n */\n showCellButtonForAxisId?: AxisId;\n\n /**\n * If cellButtonInvokeRowsOnDoubleClick = true, clicking a button inside the row\n * triggers the doubleClick event for the entire row.\n *\n * If cellButtonInvokeRowsOnDoubleClick = false, the doubleClick event for the row\n * is not triggered, but will triggered cellButtonClicked event with (key: PTableRowKey) argument.\n */\n cellButtonInvokeRowsOnDoubleClick?: boolean;\n\n /** @see {@link PlAgOverlayLoadingParams.loadingText} */\n loadingText?: string;\n\n /** @see {@link PlAgOverlayLoadingParams.notReadyText} */\n notReadyText?: string;\n\n /** @see {@link PlAgOverlayNoRowsParams.text} */\n noRowsText?: string;\n\n /**\n * Callback to override the default renderer for a given cell.\n * @see https://www.ag-grid.com/vue-data-grid/component-cell-renderer/#dynamic-component-selection\n */\n cellRendererSelector?: CellRendererSelectorFunc<PlAgDataTableV2Row>;\n}>();\nconst { settings } = toRefs(props);\nconst emit = defineEmits<{\n rowDoubleClicked: [key?: PTableKey];\n cellButtonClicked: [key?: PTableKey];\n newDataRendered: [];\n}>();\n\nconst { gridState, sheetsState, filtersState } = useTableState(tableState, settings);\n\nconst sheetsSettings = computed<PlDataTableSheetsSettings>(() => {\n const settingsCopy = { ...settings.value };\n return settingsCopy.sourceId !== null\n ? {\n sheets: settingsCopy.sheets ?? [],\n cachedState: [...sheetsState.value],\n }\n : {\n sheets: [],\n cachedState: [],\n };\n});\n\nconst filterableColumns = ref<PTableColumnSpec[]>([]);\nconst filtersSettings = computed<PlDataTableFiltersSettings>(() => {\n const settingsCopy = { ...settings.value };\n const columns = filterableColumns.value;\n const result = settingsCopy.sourceId !== null && columns.length > 0\n ? {\n columns,\n config: (column: PTableColumnSpec) => settingsCopy.filtersConfig({ sourceId: settingsCopy.sourceId, column }),\n cachedState: [...filtersState.value],\n }\n : {\n columns: [],\n config: () => ({}),\n cachedState: [],\n };\n return result;\n});\n\nconst gridApi = shallowRef<GridApi<PlAgDataTableV2Row> | null>(null);\nconst dataRenderedTracker = new DeferredCircular<GridApi<PlAgDataTableV2Row>>();\nconst gridOptions = shallowRef<GridOptions<PlAgDataTableV2Row>>({\n animateRows: false,\n suppressColumnMoveAnimation: true,\n cellSelection: !selection.value,\n initialState: gridState.value,\n autoSizeStrategy: { type: 'fitCellContents' },\n rowSelection: selection.value\n ? {\n mode: 'multiRow',\n selectAll: 'all',\n groupSelects: 'self',\n checkboxes: false,\n headerCheckbox: false,\n enableClickSelection: false,\n }\n : undefined,\n onSelectionChanged: (event) => {\n if (selection.value) {\n const state = event.api.getServerSideSelectionState();\n const selectedKeys = state?.toggledNodes?.map((nodeId) => parseJson(nodeId as PlTableRowIdJson)) ?? [];\n if (!isJsonEqual(selection.value.selectedKeys, selectedKeys)) {\n selection.value = { ...selection.value, selectedKeys };\n }\n }\n },\n onRowDoubleClicked: (event) => {\n if (event.data && event.data.axesKey) emit('rowDoubleClicked', event.data.axesKey);\n },\n defaultColDef: {\n suppressHeaderMenuButton: true,\n sortingOrder: ['desc', 'asc', null],\n cellRendererSelector: props.cellRendererSelector,\n },\n maintainColumnOrder: true,\n localeText: {\n loadingError: '...',\n },\n rowModelType: 'serverSide',\n // cacheBlockSize should be tha same as PlMultiSequenceAlignment limit\n // so that selectAll will add all rows to selection\n cacheBlockSize: 1000,\n maxBlocksInCache: 100,\n blockLoadDebounceMillis: 500,\n serverSideSortAllLevels: true,\n suppressServerSideFullWidthLoadingRow: true,\n getRowId: (params) => params.data.id,\n loading: true,\n loadingOverlayComponentParams: {\n notReady: true,\n loadingText: props.loadingText,\n notReadyText: props.notReadyText,\n } satisfies PlAgOverlayLoadingParams,\n loadingOverlayComponent: PlOverlayLoading,\n noRowsOverlayComponent: PlOverlayNoRows,\n noRowsOverlayComponentParams: {\n text: props.noRowsText,\n } satisfies PlAgOverlayNoRowsParams,\n defaultCsvExportParams: {\n allColumns: true,\n suppressQuotes: true,\n fileName: 'table.csv',\n },\n statusBar: {\n statusPanels: [\n { statusPanel: PlAgRowCount, align: 'left' },\n ],\n },\n onGridReady: (event) => {\n const api = event.api;\n autoSizeRowNumberColumn(api);\n const setGridOption = (\n key: ManagedGridOptionKey,\n value: GridOptions[ManagedGridOptionKey],\n ) => {\n const options = { ...gridOptions.value };\n options[key] = value;\n gridOptions.value = options;\n api.setGridOption(key, value);\n };\n const updateGridOptions = (options: ManagedGridOptions) => {\n gridOptions.value = {\n ...gridOptions.value,\n ...options,\n };\n api.updateGridOptions(options);\n };\n gridApi.value = new Proxy(api, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'setGridOption':\n return setGridOption;\n case 'updateGridOptions':\n return updateGridOptions;\n default:\n return Reflect.get(target, prop, receiver);\n }\n },\n });\n },\n onStateUpdated: (event) => {\n gridOptions.value.initialState = gridState.value = makePartialState(\n event.state,\n );\n event.api.autoSizeColumns(\n event.api.getAllDisplayedColumns().filter(\n (column) => column.getColId() !== PlAgDataTableRowNumberColId,\n ),\n );\n },\n onGridPreDestroyed: (event) => {\n gridOptions.value.initialState = gridState.value = makePartialState(\n event.api.getState(),\n );\n gridApi.value = null;\n },\n});\n\n// Restore proper types erased by AgGrid\nfunction makePartialState(state: GridState): PlDataTableGridStateCore {\n return {\n columnOrder: state.columnOrder as {\n orderedColIds: PlTableColumnIdJson[];\n } | undefined,\n sort: state.sort as {\n sortModel: {\n colId: PlTableColumnIdJson;\n sort: 'asc' | 'desc';\n }[];\n } | undefined,\n columnVisibility: state.columnVisibility as {\n hiddenColIds: PlTableColumnIdJson[];\n } | undefined,\n };\n};\n\n// Reload AgGrid when new state arrives from server\nconst reloadKey = ref(0);\nwatch(\n () => [gridApi.value, gridState.value] as const,\n ([gridApi, gridState]) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n const selfState = makePartialState(gridApi.getState());\n if (!isJsonEqual(gridState, {}) && !isJsonEqual(gridState, selfState)) {\n gridOptions.value.initialState = gridState;\n ++reloadKey.value;\n }\n },\n);\n\n// Make loadingOverlayComponentParams reactive\nlet oldOptions: GridOptions | null = null;\nwatch(\n () => [gridApi.value, gridOptions.value] as const,\n ([gridApi, options]) => {\n // Wait for AgGrid reinitialization, gridApi will eventially become initialized\n if (!gridApi || gridApi.isDestroyed()) return;\n if (options.loading && oldOptions?.loading && !isJsonEqual(\n options.loadingOverlayComponentParams,\n oldOptions?.loadingOverlayComponentParams,\n )) {\n // Hack to reapply loadingOverlayComponentParams\n gridApi.setGridOption('loading', false);\n gridApi.setGridOption('loading', true);\n }\n oldOptions = options;\n },\n { immediate: true },\n);\n\n// Make cellRendererSelector reactive\nconst cellRendererSelector = computed(() => props.cellRendererSelector ?? null);\nwatch(\n () => [gridApi.value, cellRendererSelector.value] as const,\n ([gridApi, cellRendererSelector]) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n gridApi.setGridOption('defaultColDef', {\n ...gridOptions.value.defaultColDef,\n cellRendererSelector: cellRendererSelector ?? undefined,\n });\n },\n);\n\ndefineExpose<PlAgDataTableV2Controller>({\n focusRow: async (rowKey) => {\n const gridApi = await dataRenderedTracker.promise;\n if (gridApi.isDestroyed()) return false;\n\n return ensureNodeVisible(gridApi, (row) => isJsonEqual(row.data?.axesKey, rowKey));\n },\n updateSelection: async ({ axesSpec, selectedKeys }) => {\n const gridApi = await dataRenderedTracker.promise;\n if (gridApi.isDestroyed()) return false;\n\n const axes = selection.value?.axesSpec;\n if (!axes || axes.length !== axesSpec.length) return false;\n\n const mapping = axesSpec\n .map((spec) => {\n const id = getAxisId(spec);\n return axes.findIndex((axis) => matchAxisId(axis, id));\n });\n const mappingSet = new Set(mapping);\n if (mappingSet.has(-1) || mappingSet.size !== axesSpec.length) return false;\n\n const selectedNodes = selectedKeys\n .map((key) => canonicalizeJson<PlTableRowId>(mapping.map((index) => key[index])));\n const oldSelectedKeys = gridApi.getServerSideSelectionState()?.toggledNodes ?? [];\n if (!isJsonEqual(oldSelectedKeys, selectedNodes)) {\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: selectedNodes,\n });\n\n // wait for `onSelectionChanged` to update `selection` model\n const scope = effectScope();\n const { resolve, promise } = Promise.withResolvers();\n scope.run(() => watch(selection, resolve, { once: true }));\n try {\n await promiseTimeout(promise, 500);\n } catch {\n return false;\n } finally {\n scope.stop();\n }\n }\n return true;\n },\n});\n\nfunction getDataColDefs(\n columnDefs: ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[] | null | undefined,\n): ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[] {\n const isColDef = <TData, TValue>(\n def: ColDef<TData, TValue> | ColGroupDef<TData>,\n ): def is ColDef<TData, TValue> => !('children' in def);\n if (!columnDefs) return [];\n return columnDefs\n .filter(isColDef)\n .filter((def) => def.colId && def.colId !== PlAgDataTableRowNumberColId);\n}\n\n// Propagate columns for filter component\nwatchCached(\n () => gridOptions.value.columnDefs,\n (columnDefs) => {\n const sourceId = settings.value.sourceId;\n if (sourceId === null) {\n filterableColumns.value = [];\n } else {\n const dataColumns = getDataColDefs(columnDefs);\n filterableColumns.value = dataColumns\n .map((def) => parseJson(def.colId! satisfies string as PlTableColumnIdJson).labeled);\n }\n },\n { immediate: true },\n);\n\n// Update AgGrid when settings change\nconst defaultSelection = createPlSelectionModel();\nlet oldSettings: PlDataTableSettingsV2 | null = null;\nconst generation = ref(0);\nwatch(\n () => [gridApi.value, settings.value] as const,\n ([gridApi, settings]) => {\n // Wait for AgGrid reinitialization, gridApi will eventially become initialized\n if (!gridApi || gridApi.isDestroyed()) return;\n // Verify that this is not a false watch trigger\n if (isJsonEqual(settings, oldSettings)) return;\n ++generation.value;\n try {\n // Hide no rows overlay if it is shown, or else loading overlay will not be shown\n gridApi.hideOverlay();\n dataRenderedTracker.reset();\n\n // No data source selected -> reset state to default\n if (!settings.sourceId) {\n gridApi.updateGridOptions({\n loading: true,\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n notReady: true,\n } satisfies PlAgOverlayLoadingParams,\n columnDefs: undefined,\n serverSideDatasource: undefined,\n });\n if (selection.value) {\n if (selection.value && !isJsonEqual(selection.value, defaultSelection)) {\n selection.value = createPlSelectionModel();\n }\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n return;\n }\n\n // Data source changed -> show full page loader, clear selection\n if (settings.sourceId !== oldSettings?.sourceId) {\n gridApi.updateGridOptions({\n loading: true,\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n notReady: false,\n } satisfies PlAgOverlayLoadingParams,\n });\n if (selection.value && oldSettings?.sourceId) {\n if (selection.value && !isJsonEqual(selection.value, defaultSelection)) {\n selection.value = createPlSelectionModel();\n }\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n }\n\n // Model updated -> show skeletons instead of data\n const sourceChanged = (settings.model?.sourceId && settings.model.sourceId !== settings.sourceId);\n if (!settings.model || sourceChanged) {\n const state = gridApi.getServerSideGroupLevelState();\n const rowCount = !sourceChanged && state.length > 0\n ? state[0].rowCount\n : 1;\n return gridApi.updateGridOptions({\n serverSideDatasource: {\n getRows: (params) => {\n params.success({ rowData: [], rowCount });\n },\n },\n });\n }\n\n // Model ready -> calculate new state\n const stateGeneration = generation.value;\n calculateGridOptions({\n generation,\n pfDriver: getRawPlatformaInstance().pFrameDriver,\n model: settings.model,\n sheets: settings.sheets ?? [],\n dataRenderedTracker,\n hiddenColIds: gridState.value.columnVisibility?.hiddenColIds,\n cellButtonAxisParams: {\n showCellButtonForAxisId: props.showCellButtonForAxisId,\n cellButtonInvokeRowsOnDoubleClick:\n props.cellButtonInvokeRowsOnDoubleClick,\n trigger: (key?: PTableKey) => emit('cellButtonClicked', key),\n } satisfies PlAgCellButtonAxisParams,\n }).then((result) => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n const { axesSpec, ...options } = result;\n gridApi.updateGridOptions({\n ...options,\n });\n if (selection.value) {\n // Update selection if axesSpec changed, as order of axes may have changed and so we need to remap selected keys\n const { axesSpec: oldAxesSpec, selectedKeys: oldSelectedKeys } = selection.value;\n if (!isJsonEqual(oldAxesSpec, axesSpec)) {\n if (!oldAxesSpec || axesSpec.length !== oldAxesSpec.length) {\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: [] };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n\n const mapping = oldAxesSpec\n .map(getAxisId)\n .map((id) => axesSpec.findIndex((axis) => matchAxisId(axis, id)));\n const mappingSet = new Set(mapping);\n if (mappingSet.has(-1) || mappingSet.size !== axesSpec.length) {\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: [] };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n\n const selectedNodes = oldSelectedKeys\n .map((key) => mapping.map((index) => key[index]));\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: selectedNodes };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: selectedNodes.map((key) => canonicalizeJson<PlTableRowId>(key)),\n });\n }\n }\n }).catch((error: unknown) => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n console.trace(error);\n }).finally(() => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n gridApi.updateGridOptions({\n loading: false,\n });\n });\n dataRenderedTracker.promise.then(() => emit('newDataRendered'));\n } catch (error: unknown) {\n console.trace(error);\n } finally {\n oldSettings = settings;\n }\n },\n);\n\nwatch(\n () => ({\n gridApi: gridApi.value,\n loadingText: props.loadingText,\n notReadyText: props.notReadyText,\n noRowsText: props.noRowsText,\n }),\n ({ gridApi, loadingText, notReadyText, noRowsText }) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n gridApi.updateGridOptions({\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n loadingText,\n notReadyText,\n },\n noRowsOverlayComponentParams: {\n ...gridOptions.value.noRowsOverlayComponentParams,\n text: noRowsText,\n },\n });\n },\n);\n</script>\n\n<template>\n <div :class=\"$style.container\">\n <PlAgGridColumnManager\n v-if=\"gridApi && !disableColumnsPanel\"\n :api=\"gridApi\"\n />\n <PlTableFiltersV2\n v-if=\"!disableFiltersPanel\"\n v-model=\"filtersState\"\n :settings=\"filtersSettings\"\n />\n <PlAgCsvExporter\n v-if=\"gridApi && showExportButton\"\n :api=\"gridApi\"\n />\n <PlAgDataTableSheets\n v-model=\"sheetsState\"\n :settings=\"sheetsSettings\"\n >\n <template #before>\n <slot name=\"before-sheets\" />\n </template>\n <template #after>\n <slot name=\"after-sheets\" />\n </template>\n </PlAgDataTableSheets>\n <AgGridVue\n :key=\"reloadKey\"\n :theme=\"AgGridTheme\"\n :class=\"$style.grid\"\n :grid-options=\"gridOptions\"\n />\n </div>\n</template>\n\n<style lang=\"css\" module>\n.container {\n display: flex;\n flex-direction: column;\n height: 100%;\n gap: 12px;\n}\n\n.grid {\n flex: 1;\n}\n</style>\n"],"names":["tableState","_useModel","selection","__props","props","settings","toRefs","emit","__emit","gridState","sheetsState","filtersState","useTableState","sheetsSettings","computed","settingsCopy","filterableColumns","ref","filtersSettings","columns","column","gridApi","shallowRef","dataRenderedTracker","DeferredCircular","gridOptions","event","state","selectedKeys","_a","nodeId","parseJson","isJsonEqual","params","PlOverlayLoading","PlOverlayNoRows","PlAgRowCount","api","autoSizeRowNumberColumn","setGridOption","key","value","options","updateGridOptions","target","prop","receiver","makePartialState","PlAgDataTableRowNumberColId","reloadKey","watch","selfState","oldOptions","cellRendererSelector","__expose","rowKey","ensureNodeVisible","row","axesSpec","axes","mapping","spec","id","getAxisId","axis","matchAxisId","mappingSet","selectedNodes","canonicalizeJson","index","oldSelectedKeys","scope","effectScope","resolve","promise","promiseTimeout","getDataColDefs","columnDefs","isColDef","def","watchCached","dataColumns","defaultSelection","createPlSelectionModel","oldSettings","generation","sourceChanged","rowCount","stateGeneration","calculateGridOptions","getRawPlatformaInstance","_b","result","oldAxesSpec","newSelection","error","loadingText","notReadyText","noRowsText"],"mappings":"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"}
|
|
@@ -94,20 +94,6 @@ export type PlAgDataTableV2Controller = {
|
|
|
94
94
|
axesSpec: AxisId[];
|
|
95
95
|
selectedKeys: PTableKey[];
|
|
96
96
|
}) => Promise<boolean>;
|
|
97
|
-
/**
|
|
98
|
-
* Get number of rows in the table.
|
|
99
|
-
* @returns number of rows
|
|
100
|
-
*/
|
|
101
|
-
getRowCount: () => Promise<undefined | number>;
|
|
102
|
-
/**
|
|
103
|
-
* Get row by index or axes key.
|
|
104
|
-
* @param index - row index or axes key
|
|
105
|
-
* @returns row spec and data, `undefined` if row was not loaded
|
|
106
|
-
*/
|
|
107
|
-
getRow: (index: number | PlTableRowId) => Promise<undefined | {
|
|
108
|
-
spec: PTableColumnSpec[];
|
|
109
|
-
data: PTableValue[];
|
|
110
|
-
}>;
|
|
111
97
|
};
|
|
112
98
|
export type PlTableRowId = PTableKey;
|
|
113
99
|
export type PlTableRowIdJson = CanonicalizedJson<PTableKey>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/PlAgDataTable/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/PlAgDataTable/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAKzD,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GACjC;IAAE,QAAQ,EAAE,IAAI,CAAA;CAAE,GAClB;IACA,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,sCAAsC;IACtC,KAAK,EAAE,gBAAgB,GAAG,SAAS,CAAC;CACrC,CAAC;AAEJ,6BAA6B;AAC7B,MAAM,MAAM,qBAAqB,GAAG,yBAAyB,GAAG;IAC9D,iDAAiD;IACjD,aAAa,EAAE,CAAC,IAAI,EAAE;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,gBAAgB,CAAC;KAC1B,KAAK,uBAAuB,CAAC;CAC/B,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,oDAAoD;IACpD,KAAK,EAAE,gBAAgB,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;IACtD;;;QAGI;IACJ,MAAM,CAAC,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,GAAG,SAAS,CAAC,CAAC;CAC3D,CAAC;AAEF,KAAK,aAAa,GAAG,YAAY,GAAG;IAClC;;;QAGI;IACJ,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE;QACrB,MAAM,EAAE,gBAAgB,CAAC;KAC1B,KAAK,uBAAuB,CAAC;CAC/B,CAAC;AAEF,KAAK,eAAe,CAAC,CAAC,IAAI,YAAY,GAAG;IACvC;;;;;QAKI;IACJ,QAAQ,EAAE,gBAAgB,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAC1C;;;;QAII;IACJ,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE;QACrB,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,EAAE,gBAAgB,CAAC;KAC1B,KAAK,uBAAuB,CAAC;CAC/B,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC,CAAC;AAC7G,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,WAAW,CAAC,qBAAqB,CAAC,CAAC;AAqErG,uCAAuC;AACvC,MAAM,MAAM,yBAAyB,GAAG;IACtC,qEAAqE;IACrE,MAAM,EAAE,cAAc,CAAC;IACvB,oDAAoD;IACpD,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;CACzC,CAAC;AAEF,4CAA4C;AAC5C,MAAM,MAAM,qBAAqB,GAAG;IAClC,uDAAuD;IACvD,MAAM,EAAE,cAAc,CAAC;IACvB,mBAAmB;IACnB,OAAO,EAAE,aAAa,CAAC;CACxB,CAAC;AAEF,6DAA6D;AAC7D,MAAM,MAAM,yBAAyB,GAAG;IACtC;;;;OAIG;IACH,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD;;;;;;OAMG;IACH,eAAe,EAAE,CAAC,EAChB,QAAQ,EACR,YAAY,GACb,EAAE;QACD,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,YAAY,EAAE,SAAS,EAAE,CAAC;KAC3B,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC;AAErC,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAE5D,0BAA0B;AAC1B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,eAAe;IACf,OAAO,EAAE,SAAS,CAAC;IACnB,4BAA4B;IAC5B,EAAE,EAAE,gBAAgB,CAAC;IACrB,qEAAqE;IACrE,CAAC,KAAK,EAAE,GAAG,MAAM,EAAE,GAAG,WAAW,GAAG,YAAY,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,WAAW,CAAC,EAAE,aAAa,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,4CAA4C;IAC5C,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,2CAA2C;IAC3C,WAAW,EAAE,qBAAqB,EAAE,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,OAAO,EAAE,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC3C,+BAA+B;IAC/B,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;CAC/B,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { computed as f, toValue as l } from "vue";
|
|
2
2
|
import u from "../../_virtual/canonicalize.js";
|
|
3
|
-
import { deepClone as
|
|
3
|
+
import { deepClone as c } from "../../lib/util/helpers/dist/index.js";
|
|
4
4
|
function I(s) {
|
|
5
|
-
const
|
|
5
|
+
const o = s.filtersConfig, d = typeof o == "function" ? (e) => {
|
|
6
6
|
try {
|
|
7
|
-
return
|
|
7
|
+
return o({
|
|
8
8
|
sourceId: JSON.parse(e.sourceId),
|
|
9
9
|
column: e.column
|
|
10
10
|
});
|
|
@@ -13,15 +13,15 @@ function I(s) {
|
|
|
13
13
|
}
|
|
14
14
|
} : () => ({});
|
|
15
15
|
return f(() => {
|
|
16
|
-
const e = l(s.model);
|
|
16
|
+
const e = c(l(s.model));
|
|
17
17
|
let r;
|
|
18
18
|
if ("sourceId" in s) {
|
|
19
|
-
const t =
|
|
19
|
+
const t = c(l(s.sourceId));
|
|
20
20
|
if (s.sheets) {
|
|
21
|
-
const
|
|
22
|
-
r = t &&
|
|
21
|
+
const n = c(l(s.sheets));
|
|
22
|
+
r = t && n ? {
|
|
23
23
|
sourceId: u(t),
|
|
24
|
-
sheets:
|
|
24
|
+
sheets: n,
|
|
25
25
|
model: e
|
|
26
26
|
} : { sourceId: null };
|
|
27
27
|
} else
|
|
@@ -31,7 +31,7 @@ function I(s) {
|
|
|
31
31
|
model: e
|
|
32
32
|
} : { sourceId: null };
|
|
33
33
|
} else if (s.sheets) {
|
|
34
|
-
const t = l(s.sheets);
|
|
34
|
+
const t = c(l(s.sheets));
|
|
35
35
|
r = t ? {
|
|
36
36
|
sourceId: u("static"),
|
|
37
37
|
sheets: t,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../src/components/PlAgDataTable/types.ts"],"sourcesContent":["import {\n type JsonCompatible,\n type AxisId,\n type CanonicalizedJson,\n type ListOptionBase,\n type PlDataTableModel,\n type PlDataTableSheet,\n type PlDataTableSheetState,\n type PlTableFilter,\n type PlTableFilterType,\n type PTableColumnId,\n type PTableColumnSpec,\n type PTableKey,\n type PTableValue,\n} from '@platforma-sdk/model';\nimport type { PTableHidden } from './sources/common';\nimport type { ComputedRef, MaybeRefOrGetter } from 'vue';\nimport { computed, toValue } from 'vue';\nimport canonicalize from 'canonicalize';\nimport { deepClone } from '@milaboratories/helpers';\n\nexport type PlDataTableFilterConfig = {\n options?: PlTableFilterType[];\n default?: PlTableFilter;\n};\n\nexport type PlDataTableSettingsV2Base =\n | { sourceId: null }\n | {\n /** Unique source id for state caching */\n sourceId: string;\n /** Sheets that we want to show in our table */\n sheets: PlDataTableSheet[];\n /** Result of `createPlDataTableV2` */\n model: PlDataTableModel | undefined;\n };\n\n/** Data table V2 settings */\nexport type PlDataTableSettingsV2 = PlDataTableSettingsV2Base & {\n /** Callback configuring filters for the table */\n filtersConfig: (info: {\n sourceId: string;\n column: PTableColumnSpec;\n }) => PlDataTableFilterConfig;\n};\n\ntype OptionsBasic = {\n /** Block output created by `createPlDataTableV2` */\n model: MaybeRefOrGetter<PlDataTableModel | undefined>;\n /**\n * Sheets for partitioned data sources.\n * Do not set if data source is never partitioned.\n */\n sheets?: MaybeRefOrGetter<PlDataTableSheet[] | undefined>;\n};\n\ntype OptionsSimple = OptionsBasic & {\n /**\n * Callback configuring filters for the table.\n * If not provided, filtering will be disabled.\n */\n filtersConfig?: (info: {\n column: PTableColumnSpec;\n }) => PlDataTableFilterConfig;\n};\n\ntype OptionsAdvanced<T> = OptionsBasic & {\n /**\n * Block property (such as inputAnchor) used to produce the data source.\n * Mandatory for cases when the table can change without block run.\n * Skip when the table is changed only after block run.\n * Ask developers for help if you don't know what to set here.\n */\n sourceId: MaybeRefOrGetter<T | undefined>;\n /**\n * Callback configuring filters for the table.\n * If not provided, filtering will be disabled.\n * Parameter `sourceId` should be compared using `isJsonEqual` from `@milaboratories/helpers`.\n */\n filtersConfig?: (info: {\n sourceId: JsonCompatible<T>;\n column: PTableColumnSpec;\n }) => PlDataTableFilterConfig;\n};\n\nexport function usePlDataTableSettingsV2<T>(options: OptionsAdvanced<T>): ComputedRef<PlDataTableSettingsV2>;\nexport function usePlDataTableSettingsV2(options: OptionsSimple): ComputedRef<PlDataTableSettingsV2>;\nexport function usePlDataTableSettingsV2<T>(options: OptionsAdvanced<T> | OptionsSimple): ComputedRef<PlDataTableSettingsV2> {\n const fc = options.filtersConfig;\n const filtersConfigValue = typeof fc === 'function'\n ? (ops: {\n sourceId: string;\n column: PTableColumnSpec;\n }) => {\n try {\n return fc({\n sourceId: JSON.parse(ops.sourceId) as JsonCompatible<T>,\n column: ops.column,\n });\n } catch (e) {\n console.error(`filtersConfig failed for sourceId: ${ops.sourceId}, column: ${JSON.stringify(ops.column)} - using default config`, e);\n return {};\n }\n }\n : () => ({});\n return computed(() => {\n const modelValue = toValue(options.model);\n let settingsBase: PlDataTableSettingsV2Base;\n if ('sourceId' in options) {\n const sourceIdValue = deepClone(toValue(options.sourceId));\n if (options.sheets) {\n const sheetsValue = deepClone(toValue(options.sheets));\n settingsBase = sourceIdValue && sheetsValue\n ? {\n sourceId: canonicalize(sourceIdValue)!,\n sheets: sheetsValue,\n model: modelValue,\n }\n : { sourceId: null };\n } else {\n settingsBase = sourceIdValue\n ? {\n sourceId: canonicalize(sourceIdValue)!,\n sheets: [],\n model: modelValue,\n }\n : { sourceId: null };\n }\n } else {\n if (options.sheets) {\n const sheetsValue = toValue(options.sheets);\n settingsBase = sheetsValue\n ? {\n sourceId: canonicalize('static')!,\n sheets: sheetsValue,\n model: modelValue,\n }\n : { sourceId: null };\n } else {\n settingsBase = modelValue\n ? {\n sourceId: canonicalize('static')!,\n sheets: [],\n model: modelValue,\n }\n : { sourceId: null };\n }\n }\n return {\n ...settingsBase,\n filtersConfig: filtersConfigValue,\n };\n });\n};\n\n/** PlTableFilters restriction entry */\nexport type PlTableFiltersRestriction = {\n /** Spec of the column for which filter types should be restricted */\n column: PTableColumnId;\n /** List of filter types applicable to the column */\n allowedFilterTypes: PlTableFilterType[];\n};\n\n/** PlTableFilters default settings entry */\nexport type PlTableFiltersDefault = {\n /** Spec of the column the default should be applied */\n column: PTableColumnId;\n /** Filter entry */\n default: PlTableFilter;\n};\n\n/** PlAgDataTable controller contains all exported methods */\nexport type PlAgDataTableV2Controller = {\n /**\n * Scroll table to make row with provided key visible\n * Warning: works reliably only in client side mode.\n * @returns `true` if row was found and focused, `false` otherwise\n */\n focusRow: (rowKey: PTableKey) => Promise<boolean>;\n /**\n * Update selection in the table.\n * @param axesIds - axes ids identifying axes key values in `selectedKeys`\n * @param selectedKeys - axes keys of the rows to select\n * Warning: update will be ignored if axes ids cannot be correctly resolved\n * @returns `true` if selection was updated, `false` otherwise\n */\n updateSelection: ({\n axesSpec,\n selectedKeys,\n }: {\n axesSpec: AxisId[];\n selectedKeys: PTableKey[];\n }) => Promise<boolean>;\n
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../src/components/PlAgDataTable/types.ts"],"sourcesContent":["import {\n type JsonCompatible,\n type AxisId,\n type CanonicalizedJson,\n type ListOptionBase,\n type PlDataTableModel,\n type PlDataTableSheet,\n type PlDataTableSheetState,\n type PlTableFilter,\n type PlTableFilterType,\n type PTableColumnId,\n type PTableColumnSpec,\n type PTableKey,\n type PTableValue,\n} from '@platforma-sdk/model';\nimport type { PTableHidden } from './sources/common';\nimport type { ComputedRef, MaybeRefOrGetter } from 'vue';\nimport { computed, toValue } from 'vue';\nimport canonicalize from 'canonicalize';\nimport { deepClone } from '@milaboratories/helpers';\n\nexport type PlDataTableFilterConfig = {\n options?: PlTableFilterType[];\n default?: PlTableFilter;\n};\n\nexport type PlDataTableSettingsV2Base =\n | { sourceId: null }\n | {\n /** Unique source id for state caching */\n sourceId: string;\n /** Sheets that we want to show in our table */\n sheets: PlDataTableSheet[];\n /** Result of `createPlDataTableV2` */\n model: PlDataTableModel | undefined;\n };\n\n/** Data table V2 settings */\nexport type PlDataTableSettingsV2 = PlDataTableSettingsV2Base & {\n /** Callback configuring filters for the table */\n filtersConfig: (info: {\n sourceId: string;\n column: PTableColumnSpec;\n }) => PlDataTableFilterConfig;\n};\n\ntype OptionsBasic = {\n /** Block output created by `createPlDataTableV2` */\n model: MaybeRefOrGetter<PlDataTableModel | undefined>;\n /**\n * Sheets for partitioned data sources.\n * Do not set if data source is never partitioned.\n */\n sheets?: MaybeRefOrGetter<PlDataTableSheet[] | undefined>;\n};\n\ntype OptionsSimple = OptionsBasic & {\n /**\n * Callback configuring filters for the table.\n * If not provided, filtering will be disabled.\n */\n filtersConfig?: (info: {\n column: PTableColumnSpec;\n }) => PlDataTableFilterConfig;\n};\n\ntype OptionsAdvanced<T> = OptionsBasic & {\n /**\n * Block property (such as inputAnchor) used to produce the data source.\n * Mandatory for cases when the table can change without block run.\n * Skip when the table is changed only after block run.\n * Ask developers for help if you don't know what to set here.\n */\n sourceId: MaybeRefOrGetter<T | undefined>;\n /**\n * Callback configuring filters for the table.\n * If not provided, filtering will be disabled.\n * Parameter `sourceId` should be compared using `isJsonEqual` from `@milaboratories/helpers`.\n */\n filtersConfig?: (info: {\n sourceId: JsonCompatible<T>;\n column: PTableColumnSpec;\n }) => PlDataTableFilterConfig;\n};\n\nexport function usePlDataTableSettingsV2<T>(options: OptionsAdvanced<T>): ComputedRef<PlDataTableSettingsV2>;\nexport function usePlDataTableSettingsV2(options: OptionsSimple): ComputedRef<PlDataTableSettingsV2>;\nexport function usePlDataTableSettingsV2<T>(options: OptionsAdvanced<T> | OptionsSimple): ComputedRef<PlDataTableSettingsV2> {\n const fc = options.filtersConfig;\n const filtersConfigValue = typeof fc === 'function'\n ? (ops: {\n sourceId: string;\n column: PTableColumnSpec;\n }) => {\n try {\n return fc({\n sourceId: JSON.parse(ops.sourceId) as JsonCompatible<T>,\n column: ops.column,\n });\n } catch (e) {\n console.error(`filtersConfig failed for sourceId: ${ops.sourceId}, column: ${JSON.stringify(ops.column)} - using default config`, e);\n return {};\n }\n }\n : () => ({});\n return computed(() => {\n const modelValue = deepClone(toValue(options.model));\n let settingsBase: PlDataTableSettingsV2Base;\n if ('sourceId' in options) {\n const sourceIdValue = deepClone(toValue(options.sourceId));\n if (options.sheets) {\n const sheetsValue = deepClone(toValue(options.sheets));\n settingsBase = sourceIdValue && sheetsValue\n ? {\n sourceId: canonicalize(sourceIdValue)!,\n sheets: sheetsValue,\n model: modelValue,\n }\n : { sourceId: null };\n } else {\n settingsBase = sourceIdValue\n ? {\n sourceId: canonicalize(sourceIdValue)!,\n sheets: [],\n model: modelValue,\n }\n : { sourceId: null };\n }\n } else {\n if (options.sheets) {\n const sheetsValue = deepClone(toValue(options.sheets));\n settingsBase = sheetsValue\n ? {\n sourceId: canonicalize('static')!,\n sheets: sheetsValue,\n model: modelValue,\n }\n : { sourceId: null };\n } else {\n settingsBase = modelValue\n ? {\n sourceId: canonicalize('static')!,\n sheets: [],\n model: modelValue,\n }\n : { sourceId: null };\n }\n }\n return {\n ...settingsBase,\n filtersConfig: filtersConfigValue,\n };\n });\n};\n\n/** PlTableFilters restriction entry */\nexport type PlTableFiltersRestriction = {\n /** Spec of the column for which filter types should be restricted */\n column: PTableColumnId;\n /** List of filter types applicable to the column */\n allowedFilterTypes: PlTableFilterType[];\n};\n\n/** PlTableFilters default settings entry */\nexport type PlTableFiltersDefault = {\n /** Spec of the column the default should be applied */\n column: PTableColumnId;\n /** Filter entry */\n default: PlTableFilter;\n};\n\n/** PlAgDataTable controller contains all exported methods */\nexport type PlAgDataTableV2Controller = {\n /**\n * Scroll table to make row with provided key visible\n * Warning: works reliably only in client side mode.\n * @returns `true` if row was found and focused, `false` otherwise\n */\n focusRow: (rowKey: PTableKey) => Promise<boolean>;\n /**\n * Update selection in the table.\n * @param axesIds - axes ids identifying axes key values in `selectedKeys`\n * @param selectedKeys - axes keys of the rows to select\n * Warning: update will be ignored if axes ids cannot be correctly resolved\n * @returns `true` if selection was updated, `false` otherwise\n */\n updateSelection: ({\n axesSpec,\n selectedKeys,\n }: {\n axesSpec: AxisId[];\n selectedKeys: PTableKey[];\n }) => Promise<boolean>;\n};\n\nexport type PlTableRowId = PTableKey;\n\nexport type PlTableRowIdJson = CanonicalizedJson<PTableKey>;\n\n/** PlAgDataTableV2 row */\nexport type PlAgDataTableV2Row = {\n /** Axes key */\n axesKey: PTableKey;\n /** Unique row identifier */\n id: PlTableRowIdJson;\n /** Row values by column; sheet axes and labeled axes are excluded */\n [field: `${number}`]: PTableValue | PTableHidden;\n};\n\nexport type PlAgOverlayLoadingParams = {\n /**\n * Required flag, that shows catInBag icon with message if `true`, shows PlSplash component if `false`.\n */\n notReady?: boolean;\n /**\n * Prop to override default \"Loading\" text\n */\n loadingText?: string;\n /**\n * Prop to override default \"No datasource\" text (So why props name is notReady? Good question)\n */\n notReadyText?: string;\n /**\n * Use \"transparent\" to make table headers visible below the loading layer\n */\n overlayType?: 'transparent';\n};\n\nexport type PlAgOverlayNoRowsParams = {\n /**\n * Prop to override default \"Empty\" text\n */\n text?: string;\n};\n\nexport type PlDataTableSheetsSettings = {\n /** User-provided sheets for the sourceId */\n sheets: PlDataTableSheet[];\n /** Persisted selection for the sourceId */\n cachedState: PlDataTableSheetState[];\n};\n\nexport type PlDataTableSheetNormalized = {\n /** id of the axis */\n axisId: AxisId;\n /** sheet prefix */\n prefix: string;\n /** options to show in the filter dropdown */\n options: ListOptionBase<string | number>[];\n /** default (selected) value */\n defaultValue: string | number;\n};\n"],"names":["usePlDataTableSettingsV2","options","fc","filtersConfigValue","ops","e","computed","modelValue","deepClone","toValue","settingsBase","sourceIdValue","sheetsValue","canonicalize"],"mappings":";;;AAuFO,SAASA,EAA4BC,GAAiF;AAC3H,QAAMC,IAAKD,EAAQ,eACbE,IAAqB,OAAOD,KAAO,aACrC,CAACE,MAGK;AACA,QAAA;AACF,aAAOF,EAAG;AAAA,QACR,UAAU,KAAK,MAAME,EAAI,QAAQ;AAAA,QACjC,QAAQA,EAAI;AAAA,MAAA,CACb;AAAA,aACMC,GAAG;AACF,qBAAA,MAAM,sCAAsCD,EAAI,QAAQ,aAAa,KAAK,UAAUA,EAAI,MAAM,CAAC,2BAA2BC,CAAC,GAC5H,CAAC;AAAA,IAAA;AAAA,EAEZ,IACA,OAAO,CAAA;AACX,SAAOC,EAAS,MAAM;AACpB,UAAMC,IAAaC,EAAUC,EAAQR,EAAQ,KAAK,CAAC;AAC/C,QAAAS;AACJ,QAAI,cAAcT,GAAS;AACzB,YAAMU,IAAgBH,EAAUC,EAAQR,EAAQ,QAAQ,CAAC;AACzD,UAAIA,EAAQ,QAAQ;AAClB,cAAMW,IAAcJ,EAAUC,EAAQR,EAAQ,MAAM,CAAC;AACrD,QAAAS,IAAeC,KAAiBC,IAC5B;AAAA,UACE,UAAUC,EAAaF,CAAa;AAAA,UACpC,QAAQC;AAAA,UACR,OAAOL;AAAA,QAAA,IAET,EAAE,UAAU,KAAK;AAAA,MAAA;AAErB,QAAAG,IAAeC,IACX;AAAA,UACE,UAAUE,EAAaF,CAAa;AAAA,UACpC,QAAQ,CAAC;AAAA,UACT,OAAOJ;AAAA,QAAA,IAET,EAAE,UAAU,KAAK;AAAA,IACvB,WAEIN,EAAQ,QAAQ;AAClB,YAAMW,IAAcJ,EAAUC,EAAQR,EAAQ,MAAM,CAAC;AACrD,MAAAS,IAAeE,IACX;AAAA,QACE,UAAUC,EAAa,QAAQ;AAAA,QAC/B,QAAQD;AAAA,QACR,OAAOL;AAAA,MAAA,IAET,EAAE,UAAU,KAAK;AAAA,IAAA;AAErB,MAAAG,IAAeH,IACX;AAAA,QACE,UAAUM,EAAa,QAAQ;AAAA,QAC/B,QAAQ,CAAC;AAAA,QACT,OAAON;AAAA,MAAA,IAET,EAAE,UAAU,KAAK;AAGlB,WAAA;AAAA,MACL,GAAGG;AAAA,MACH,eAAeP;AAAA,IACjB;AAAA,EAAA,CACD;AACH;"}
|
|
@@ -18,19 +18,13 @@ export declare const createNextAuthorMarker: (marker: AuthorMarker | undefined)
|
|
|
18
18
|
* @returns A reactive application object with methods, getters, and state.
|
|
19
19
|
*/
|
|
20
20
|
export declare function createAppV2<Args = unknown, Outputs extends BlockOutputsBase = BlockOutputsBase, UiState = unknown, Href extends `/${string}` = `/${string}`>(state: ValueWithUTag<BlockState<Args, Outputs, UiState, Href>>, platforma: PlatformaV2<Args, Outputs, UiState, Href>, settings: AppSettings): {
|
|
21
|
+
error: string;
|
|
21
22
|
model: {
|
|
22
23
|
args: import('vue').UnwrapRef<Args>;
|
|
23
24
|
ui: import('vue').UnwrapRef<UiState>;
|
|
24
25
|
outputs: import('vue').UnwrapRef<OutputValues<Outputs>>;
|
|
25
26
|
outputErrors: import('vue').UnwrapRef<OutputErrors<Outputs>>;
|
|
26
27
|
};
|
|
27
|
-
readonly valid: boolean;
|
|
28
|
-
readonly isChanged: boolean;
|
|
29
|
-
readonly error: Error | undefined;
|
|
30
|
-
readonly errorString: string | undefined;
|
|
31
|
-
readonly save: () => void;
|
|
32
|
-
readonly revert: () => void;
|
|
33
|
-
readonly setError: (cause: unknown) => void;
|
|
34
28
|
cloneArgs: () => Args;
|
|
35
29
|
cloneUiState: () => UiState;
|
|
36
30
|
cloneNavigationState: () => Mutable<NavigationState<Href>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createAppV2.d.ts","sourceRoot":"","sources":["../../src/internal/createAppV2.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpI,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"createAppV2.d.ts","sourceRoot":"","sources":["../../src/internal/createAppV2.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpI,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAO1G,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,eAAO,MAAM,sBAAsB,WAAY,YAAY,GAAG,SAAS,KAAG,YAGxE,CAAC;AAEH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CACzB,IAAI,GAAG,OAAO,EACd,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,EACnD,OAAO,GAAG,OAAO,EACjB,IAAI,SAAS,IAAI,MAAM,EAAE,GAAG,IAAI,MAAM,EAAE,EAExC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EAC9D,SAAS,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EACpD,QAAQ,EAAE,WAAW;WAsFZ,MAAM;;;;;;;qBAiF2C,IAAI;wBACH,OAAO;gCACc,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;sBAM5F,CAAC,SAAS,IAAI,mBAAkB,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;oBAmB5D,CAAC,SAAS,OAAO,qBAAqB,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,8BAAuB,MAAM,OAAO;oBAwBvG,CAAC,SAAS,MAAM,OAAO,WAAW,CAAC,EAAE,KAAG,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;qBAWhE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,KAAG,OAAO,CAAC,OAAO,CAAC;wBAcpC,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,KAAG,OAAO,CAAC,OAAO,CAAC;uBAY9C,IAAI;;;;cAlNf,IAAI;iBACD,OAAO,CAAC,OAAO,CAAC;YACrB,OAAO;yBACM,eAAe,CAAC,IAAI,CAAC;;;;;EAmOzC;AAED,MAAM,MAAM,SAAS,CACnB,IAAI,GAAG,OAAO,EACd,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,EACnD,OAAO,GAAG,OAAO,EACjB,IAAI,SAAS,IAAI,MAAM,EAAE,GAAG,IAAI,MAAM,EAAE,IACtC,UAAU,CAAC,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC"}
|
|
@@ -1,73 +1,75 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { deepClone as l, uniqueId as V, delay as L } from "../lib/util/helpers/dist/index.js";
|
|
2
2
|
import "../sdk/model/dist/index.js";
|
|
3
|
-
import { ref as A, computed as
|
|
3
|
+
import { ref as A, computed as p, reactive as B, watch as W } from "vue";
|
|
4
4
|
import { createModel as N } from "../createModel.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { MultiError as F, unwrapValueOrErrors as G } from "../utils.js";
|
|
5
|
+
import { parseQuery as F } from "../urls.js";
|
|
6
|
+
import { MultiError as G, unwrapValueOrErrors as H } from "../utils.js";
|
|
8
7
|
import "../node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/index.js";
|
|
9
|
-
import { UpdateSerializer as
|
|
10
|
-
import { unwrapResult as
|
|
8
|
+
import { UpdateSerializer as m } from "./UpdateSerializer.js";
|
|
9
|
+
import { unwrapResult as c, hasAbortError as K } from "../lib/model/common/dist/index.js";
|
|
11
10
|
import { applyPatch as O } from "../node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/core.js";
|
|
12
|
-
const
|
|
13
|
-
authorId: (n == null ? void 0 : n.authorId) ??
|
|
11
|
+
const Q = 100, X = (n) => ({
|
|
12
|
+
authorId: (n == null ? void 0 : n.authorId) ?? V(),
|
|
14
13
|
localVersion: ((n == null ? void 0 : n.localVersion) ?? 0) + 1
|
|
15
14
|
});
|
|
16
|
-
function
|
|
15
|
+
function se(n, d, h) {
|
|
17
16
|
const r = (e, ...t) => {
|
|
18
|
-
|
|
17
|
+
h.debug && console.log(`%c>>> %c${e}`, "color: orange; font-weight: bold", "color: orange", h.appId, ...t);
|
|
19
18
|
}, b = (e, ...t) => {
|
|
20
|
-
console.error(`%c>>> %c${e}`, "color: red; font-weight: bold", "color: red",
|
|
19
|
+
console.error(`%c>>> %c${e}`, "color: red; font-weight: bold", "color: red", h.appId, ...t);
|
|
21
20
|
}, u = {
|
|
22
21
|
isExternalSnapshot: !1,
|
|
23
22
|
author: {
|
|
24
|
-
authorId:
|
|
23
|
+
authorId: V(),
|
|
25
24
|
localVersion: 0
|
|
26
25
|
}
|
|
27
|
-
}, S = () => (u.author =
|
|
26
|
+
}, S = () => (u.author = X(u.author), r("nextAuthorMarker", u.author), u.author), g = A(!1), f = A(n.uTag), v = h.debounceSpan ?? 200, y = new m({ debounceSpan: v }), M = new m({ debounceSpan: v }), U = new m({ debounceSpan: v }), R = new m({ debounceSpan: v }), o = A(n.value), T = async (e) => d.setBlockArgs(e, S()), x = async (e) => d.setBlockUiState(e, S()), k = async (e, t) => d.setBlockArgsAndUiState(e, t, S()), q = async (e) => d.setNavigationState(e), C = p(() => {
|
|
27
|
+
const e = Object.entries(o.value.outputs).map(([t, a]) => [t, a.ok && a.value !== void 0 ? a.value : void 0]);
|
|
28
|
+
return Object.fromEntries(e);
|
|
29
|
+
}), D = p(() => {
|
|
30
|
+
const e = Object.entries(o.value.outputs).map(([t, a]) => [t, a && !a.ok ? new G(a.errors) : void 0]);
|
|
31
|
+
return Object.fromEntries(e);
|
|
32
|
+
}), s = B({
|
|
33
|
+
error: "",
|
|
34
|
+
model: {
|
|
35
|
+
args: l(o.value.args),
|
|
36
|
+
ui: l(o.value.ui),
|
|
37
|
+
outputs: C,
|
|
38
|
+
outputErrors: D
|
|
39
|
+
}
|
|
40
|
+
}), E = W(
|
|
41
|
+
() => s.model,
|
|
42
|
+
(e) => {
|
|
43
|
+
const t = l(e);
|
|
44
|
+
r("appModel.model", t), U.run(() => k(t.args, t.ui).then(c));
|
|
45
|
+
},
|
|
46
|
+
{ deep: !0 }
|
|
47
|
+
), $ = (e) => {
|
|
48
|
+
r("updateAppModelSilently", e), E.pause(), s.model.args = l(e.args), s.model.ui = l(e.ui), E.resume();
|
|
49
|
+
};
|
|
28
50
|
(async () => {
|
|
29
51
|
var e, t;
|
|
30
52
|
for (window.addEventListener("beforeunload", () => {
|
|
31
|
-
|
|
53
|
+
g.value = !0, d.dispose().then(c).catch((a) => {
|
|
32
54
|
b("error in dispose", a);
|
|
33
55
|
});
|
|
34
|
-
}); !
|
|
56
|
+
}); !g.value; )
|
|
35
57
|
try {
|
|
36
|
-
const a = await
|
|
37
|
-
if (r("patches",
|
|
38
|
-
await new Promise((
|
|
58
|
+
const a = await d.getPatches(f.value).then(c);
|
|
59
|
+
if (r("patches.length", a.value.length), r("uTagRef.value", f.value), r("patches.uTag", a.uTag), r("patches.author", a.author), r("data.author", u.author), f.value = a.uTag, a.value.length === 0) {
|
|
60
|
+
await new Promise((w) => setTimeout(w, Q));
|
|
39
61
|
continue;
|
|
40
62
|
}
|
|
41
|
-
const
|
|
42
|
-
|
|
63
|
+
const i = ((e = u.author) == null ? void 0 : e.authorId) !== ((t = a.author) == null ? void 0 : t.authorId);
|
|
64
|
+
i || u.isExternalSnapshot ? (r("got external changes, applying them to the snapshot", JSON.stringify(o.value, null, 2)), o.value = O(o.value, a.value, !1, !1).newDocument, $(o.value), u.isExternalSnapshot = i) : o.value = O(o.value, a.value).newDocument, await new Promise((w) => setTimeout(w, Q));
|
|
43
65
|
} catch (a) {
|
|
44
|
-
|
|
66
|
+
K(a) ? (r("patches loop aborted"), g.value = !0) : (b("error in patches loop", a), await new Promise((i) => setTimeout(i, 1e3)));
|
|
45
67
|
}
|
|
46
68
|
})();
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const e = Object.entries(o.value.outputs).map(([t, a]) => [t, a && !a.ok ? new F(a.errors) : void 0]);
|
|
52
|
-
return Object.fromEntries(e);
|
|
53
|
-
}), i = D(
|
|
54
|
-
{
|
|
55
|
-
get() {
|
|
56
|
-
return { args: o.value.args, ui: o.value.ui };
|
|
57
|
-
},
|
|
58
|
-
autoSave: !0,
|
|
59
|
-
onSave(e) {
|
|
60
|
-
r("onSave", e), M.run(() => V(e.args, e.ui).then(s));
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
outputs: k,
|
|
65
|
-
outputErrors: q
|
|
66
|
-
}
|
|
67
|
-
), E = () => w(i.model.args), I = () => w(i.model.ui), j = () => w(o.value.navigationState), C = {
|
|
68
|
-
cloneArgs: E,
|
|
69
|
-
cloneUiState: I,
|
|
70
|
-
cloneNavigationState: j,
|
|
69
|
+
const I = () => l(s.model.args), j = () => l(s.model.ui), P = () => l(o.value.navigationState), z = {
|
|
70
|
+
cloneArgs: I,
|
|
71
|
+
cloneUiState: j,
|
|
72
|
+
cloneNavigationState: P,
|
|
71
73
|
createArgsModel(e = {}) {
|
|
72
74
|
return N({
|
|
73
75
|
get() {
|
|
@@ -76,7 +78,7 @@ function ue(n, c, d) {
|
|
|
76
78
|
validate: e.validate,
|
|
77
79
|
autoSave: !0,
|
|
78
80
|
onSave(t) {
|
|
79
|
-
y.run(() => T(t).then(
|
|
81
|
+
y.run(() => T(t).then(c));
|
|
80
82
|
}
|
|
81
83
|
});
|
|
82
84
|
},
|
|
@@ -91,7 +93,7 @@ function ue(n, c, d) {
|
|
|
91
93
|
validate: e.validate,
|
|
92
94
|
autoSave: !0,
|
|
93
95
|
onSave(a) {
|
|
94
|
-
|
|
96
|
+
M.run(() => x(a).then(c));
|
|
95
97
|
}
|
|
96
98
|
});
|
|
97
99
|
},
|
|
@@ -104,7 +106,7 @@ function ue(n, c, d) {
|
|
|
104
106
|
* @returns An object with unwrapped output values.
|
|
105
107
|
*/
|
|
106
108
|
unwrapOutputs(...e) {
|
|
107
|
-
const t = o.value.outputs, a = e.map((
|
|
109
|
+
const t = o.value.outputs, a = e.map((i) => [i, H(t[i])]);
|
|
108
110
|
return Object.fromEntries(a);
|
|
109
111
|
},
|
|
110
112
|
/**
|
|
@@ -114,8 +116,8 @@ function ue(n, c, d) {
|
|
|
114
116
|
* @returns A promise resolving after the update is applied.
|
|
115
117
|
*/
|
|
116
118
|
updateArgs(e) {
|
|
117
|
-
const t =
|
|
118
|
-
return e(t), r("updateArgs", t),
|
|
119
|
+
const t = I();
|
|
120
|
+
return e(t), r("updateArgs", t), s.model.args = t, y.run(() => T(t).then(c));
|
|
119
121
|
},
|
|
120
122
|
/**
|
|
121
123
|
* Updates the UI state by applying a callback.
|
|
@@ -125,8 +127,8 @@ function ue(n, c, d) {
|
|
|
125
127
|
* @todo Make it mutable since there is already an initial one
|
|
126
128
|
*/
|
|
127
129
|
updateUiState(e) {
|
|
128
|
-
const t = e(
|
|
129
|
-
return r("updateUiState", t),
|
|
130
|
+
const t = e(j());
|
|
131
|
+
return r("updateUiState", t), s.model.ui = t, M.run(() => x(t).then(c));
|
|
130
132
|
},
|
|
131
133
|
/**
|
|
132
134
|
* Navigates to a specific href by updating the navigation state.
|
|
@@ -135,24 +137,24 @@ function ue(n, c, d) {
|
|
|
135
137
|
* @returns A promise resolving after the navigation state is updated.
|
|
136
138
|
*/
|
|
137
139
|
navigateTo(e) {
|
|
138
|
-
const t =
|
|
139
|
-
return t.href = e,
|
|
140
|
+
const t = P();
|
|
141
|
+
return t.href = e, R.run(() => q(t).then(c));
|
|
140
142
|
},
|
|
141
143
|
async allSettled() {
|
|
142
|
-
return await
|
|
144
|
+
return await L(0), U.allSettled();
|
|
143
145
|
}
|
|
144
146
|
}, J = {
|
|
145
|
-
closedRef:
|
|
147
|
+
closedRef: g,
|
|
146
148
|
snapshot: o,
|
|
147
|
-
queryParams:
|
|
148
|
-
href:
|
|
149
|
-
hasErrors:
|
|
149
|
+
queryParams: p(() => F(o.value.navigationState.href)),
|
|
150
|
+
href: p(() => o.value.navigationState.href),
|
|
151
|
+
hasErrors: p(() => Object.values(o.value.outputs).some((e) => !(e != null && e.ok)))
|
|
150
152
|
};
|
|
151
|
-
return
|
|
153
|
+
return B(Object.assign(s, z, J));
|
|
152
154
|
}
|
|
153
155
|
export {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
156
|
+
se as createAppV2,
|
|
157
|
+
X as createNextAuthorMarker,
|
|
158
|
+
Q as patchPoolingDelay
|
|
157
159
|
};
|
|
158
160
|
//# sourceMappingURL=createAppV2.js.map
|