@platforma-sdk/model 1.79.24 → 1.80.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/block_model.d.ts +2 -0
- package/dist/block_model.d.ts.map +1 -1
- package/dist/columns/column.cjs +28 -0
- package/dist/columns/column.cjs.map +1 -0
- package/dist/columns/column.d.ts +30 -0
- package/dist/columns/column.d.ts.map +1 -0
- package/dist/columns/column.js +27 -0
- package/dist/columns/column.js.map +1 -0
- package/dist/columns/column_lazy.cjs +248 -0
- package/dist/columns/column_lazy.cjs.map +1 -0
- package/dist/columns/column_lazy.d.ts +137 -0
- package/dist/columns/column_lazy.d.ts.map +1 -0
- package/dist/columns/column_lazy.js +245 -0
- package/dist/columns/column_lazy.js.map +1 -0
- package/dist/columns/column_providers/index.cjs +62 -0
- package/dist/columns/column_providers/index.cjs.map +1 -0
- package/dist/columns/column_providers/index.d.ts +30 -0
- package/dist/columns/column_providers/index.d.ts.map +1 -0
- package/dist/columns/column_providers/index.js +53 -0
- package/dist/columns/column_providers/index.js.map +1 -0
- package/dist/columns/column_providers/providers.cjs +123 -0
- package/dist/columns/column_providers/providers.cjs.map +1 -0
- package/dist/columns/column_providers/providers.d.ts +75 -0
- package/dist/columns/column_providers/providers.d.ts.map +1 -0
- package/dist/columns/column_providers/providers.js +118 -0
- package/dist/columns/column_providers/providers.js.map +1 -0
- package/dist/columns/column_providers/types.d.ts +23 -0
- package/dist/columns/column_providers/types.d.ts.map +1 -0
- package/dist/columns/column_recipes/column_discovered_recipe.cjs +180 -0
- package/dist/columns/column_recipes/column_discovered_recipe.cjs.map +1 -0
- package/dist/columns/column_recipes/column_discovered_recipe.d.ts +120 -0
- package/dist/columns/column_recipes/column_discovered_recipe.d.ts.map +1 -0
- package/dist/columns/column_recipes/column_discovered_recipe.js +180 -0
- package/dist/columns/column_recipes/column_discovered_recipe.js.map +1 -0
- package/dist/columns/column_recipes/column_filtered_recipe.cjs +133 -0
- package/dist/columns/column_recipes/column_filtered_recipe.cjs.map +1 -0
- package/dist/columns/column_recipes/column_filtered_recipe.d.ts +75 -0
- package/dist/columns/column_recipes/column_filtered_recipe.d.ts.map +1 -0
- package/dist/columns/column_recipes/column_filtered_recipe.js +133 -0
- package/dist/columns/column_recipes/column_filtered_recipe.js.map +1 -0
- package/dist/columns/column_recipes/column_overrided_recipe.cjs +101 -0
- package/dist/columns/column_recipes/column_overrided_recipe.cjs.map +1 -0
- package/dist/columns/column_recipes/column_overrided_recipe.d.ts +73 -0
- package/dist/columns/column_recipes/column_overrided_recipe.d.ts.map +1 -0
- package/dist/columns/column_recipes/column_overrided_recipe.js +101 -0
- package/dist/columns/column_recipes/column_overrided_recipe.js.map +1 -0
- package/dist/columns/column_recipes/index.cjs +72 -0
- package/dist/columns/column_recipes/index.cjs.map +1 -0
- package/dist/columns/column_recipes/index.d.ts +52 -0
- package/dist/columns/column_recipes/index.d.ts.map +1 -0
- package/dist/columns/column_recipes/index.js +68 -0
- package/dist/columns/column_recipes/index.js.map +1 -0
- package/dist/columns/column_recipes/leaf_rebrand.cjs +22 -0
- package/dist/columns/column_recipes/leaf_rebrand.cjs.map +1 -0
- package/dist/columns/column_recipes/leaf_rebrand.js +22 -0
- package/dist/columns/column_recipes/leaf_rebrand.js.map +1 -0
- package/dist/columns/column_recipes/types.d.ts +101 -0
- package/dist/columns/column_recipes/types.d.ts.map +1 -0
- package/dist/columns/columns_collection.cjs +124 -0
- package/dist/columns/columns_collection.cjs.map +1 -0
- package/dist/columns/columns_collection.d.ts +64 -0
- package/dist/columns/columns_collection.d.ts.map +1 -0
- package/dist/columns/columns_collection.js +122 -0
- package/dist/columns/columns_collection.js.map +1 -0
- package/dist/columns/derive_axis_values_labels.cjs +76 -0
- package/dist/columns/derive_axis_values_labels.cjs.map +1 -0
- package/dist/columns/derive_axis_values_labels.d.ts +30 -0
- package/dist/columns/derive_axis_values_labels.d.ts.map +1 -0
- package/dist/columns/derive_axis_values_labels.js +76 -0
- package/dist/columns/derive_axis_values_labels.js.map +1 -0
- package/dist/columns/expand_by_partition.cjs +53 -56
- package/dist/columns/expand_by_partition.cjs.map +1 -1
- package/dist/columns/expand_by_partition.d.ts +22 -18
- package/dist/columns/expand_by_partition.d.ts.map +1 -1
- package/dist/columns/expand_by_partition.js +55 -58
- package/dist/columns/expand_by_partition.js.map +1 -1
- package/dist/columns/index.cjs +44 -18
- package/dist/columns/index.d.ts +15 -7
- package/dist/columns/index.js +12 -6
- package/dist/columns/utils.cjs +186 -0
- package/dist/columns/utils.cjs.map +1 -0
- package/dist/columns/utils.d.ts +96 -0
- package/dist/columns/utils.d.ts.map +1 -0
- package/dist/columns/utils.js +179 -0
- package/dist/columns/utils.js.map +1 -0
- package/dist/components/PFrameForGraphs.cjs +1 -0
- package/dist/components/PFrameForGraphs.cjs.map +1 -1
- package/dist/components/PFrameForGraphs.d.ts +1 -1
- package/dist/components/PFrameForGraphs.d.ts.map +1 -1
- package/dist/components/PFrameForGraphs.js +1 -0
- package/dist/components/PFrameForGraphs.js.map +1 -1
- package/dist/components/PlDataTable/columnResolver.cjs +28 -0
- package/dist/components/PlDataTable/columnResolver.cjs.map +1 -0
- package/dist/components/PlDataTable/columnResolver.js +28 -0
- package/dist/components/PlDataTable/columnResolver.js.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.cjs +4 -2
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.cjs.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.js +4 -2
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.js.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.cjs +20 -25
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.cjs.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.js +20 -25
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.js.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs +58 -26
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js +60 -28
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs +224 -194
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts +13 -16
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js +228 -198
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/discoverColumns.cjs +40 -98
- package/dist/components/PlDataTable/createPlDataTable/discoverColumns.cjs.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/discoverColumns.d.ts +17 -8
- package/dist/components/PlDataTable/createPlDataTable/discoverColumns.d.ts.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/discoverColumns.js +40 -98
- package/dist/components/PlDataTable/createPlDataTable/discoverColumns.js.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/index.cjs +1 -1
- package/dist/components/PlDataTable/createPlDataTable/index.cjs.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/index.d.ts +2 -2
- package/dist/components/PlDataTable/createPlDataTable/index.js +2 -2
- package/dist/components/PlDataTable/createPlDataTable/index.js.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/utils.cjs +51 -169
- package/dist/components/PlDataTable/createPlDataTable/utils.cjs.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/utils.d.ts +1 -1
- package/dist/components/PlDataTable/createPlDataTable/utils.d.ts.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/utils.js +52 -166
- package/dist/components/PlDataTable/createPlDataTable/utils.js.map +1 -1
- package/dist/components/PlDataTable/createPlDataTableSheet.cjs.map +1 -1
- package/dist/components/PlDataTable/createPlDataTableSheet.d.ts +1 -1
- package/dist/components/PlDataTable/createPlDataTableSheet.js.map +1 -1
- package/dist/components/PlDataTable/index.cjs +1 -1
- package/dist/components/PlDataTable/index.d.ts +4 -4
- package/dist/components/PlDataTable/index.js +2 -2
- package/dist/components/PlDataTable/labels.cjs +0 -1
- package/dist/components/PlDataTable/labels.cjs.map +1 -1
- package/dist/components/PlDataTable/labels.js +0 -1
- package/dist/components/PlDataTable/labels.js.map +1 -1
- package/dist/components/PlDataTable/state-migration.cjs +107 -10
- package/dist/components/PlDataTable/state-migration.cjs.map +1 -1
- package/dist/components/PlDataTable/state-migration.d.ts +5 -4
- package/dist/components/PlDataTable/state-migration.d.ts.map +1 -1
- package/dist/components/PlDataTable/state-migration.js +107 -10
- package/dist/components/PlDataTable/state-migration.js.map +1 -1
- package/dist/components/PlDataTable/typesV7.d.ts +1 -36
- package/dist/components/PlDataTable/typesV7.d.ts.map +1 -1
- package/dist/components/PlDataTable/typesV8.d.ts +123 -0
- package/dist/components/PlDataTable/typesV8.d.ts.map +1 -0
- package/dist/components/PlDatasetSelector/build_dataset_options.cjs +27 -34
- package/dist/components/PlDatasetSelector/build_dataset_options.cjs.map +1 -1
- package/dist/components/PlDatasetSelector/build_dataset_options.d.ts.map +1 -1
- package/dist/components/PlDatasetSelector/build_dataset_options.js +27 -34
- package/dist/components/PlDatasetSelector/build_dataset_options.js.map +1 -1
- package/dist/components/PlDatasetSelector/enrichment_discovery.cjs +28 -33
- package/dist/components/PlDatasetSelector/enrichment_discovery.cjs.map +1 -1
- package/dist/components/PlDatasetSelector/enrichment_discovery.js +29 -34
- package/dist/components/PlDatasetSelector/enrichment_discovery.js.map +1 -1
- package/dist/components/PlDatasetSelector/filter_discovery.cjs +27 -17
- package/dist/components/PlDatasetSelector/filter_discovery.cjs.map +1 -1
- package/dist/components/PlDatasetSelector/filter_discovery.d.ts +24 -10
- package/dist/components/PlDatasetSelector/filter_discovery.d.ts.map +1 -1
- package/dist/components/PlDatasetSelector/filter_discovery.js +28 -18
- package/dist/components/PlDatasetSelector/filter_discovery.js.map +1 -1
- package/dist/components/PlDatasetSelector/index.d.ts +2 -2
- package/dist/components/index.cjs +1 -1
- package/dist/components/index.d.ts +5 -5
- package/dist/components/index.js +2 -2
- package/dist/filters/converters/filterToQuery.cjs +5 -6
- package/dist/filters/converters/filterToQuery.cjs.map +1 -1
- package/dist/filters/converters/filterToQuery.d.ts +12 -3
- package/dist/filters/converters/filterToQuery.d.ts.map +1 -1
- package/dist/filters/converters/filterToQuery.js +5 -6
- package/dist/filters/converters/filterToQuery.js.map +1 -1
- package/dist/filters/converters/index.d.ts +2 -2
- package/dist/filters/index.d.ts +2 -2
- package/dist/index.cjs +64 -35
- package/dist/index.d.ts +23 -15
- package/dist/index.js +15 -9
- package/dist/labels/derive_distinct_labels.cjs.map +1 -1
- package/dist/labels/derive_distinct_labels.d.ts +1 -2
- package/dist/labels/derive_distinct_labels.d.ts.map +1 -1
- package/dist/labels/derive_distinct_labels.js.map +1 -1
- package/dist/labels/derive_distinct_tooltips.cjs +1 -1
- package/dist/labels/derive_distinct_tooltips.cjs.map +1 -1
- package/dist/labels/derive_distinct_tooltips.d.ts +6 -3
- package/dist/labels/derive_distinct_tooltips.d.ts.map +1 -1
- package/dist/labels/derive_distinct_tooltips.js +1 -1
- package/dist/labels/derive_distinct_tooltips.js.map +1 -1
- package/dist/package.cjs +1 -1
- package/dist/package.js +1 -1
- package/dist/pframe_utils/axes.cjs.map +1 -1
- package/dist/pframe_utils/axes.d.ts +2 -2
- package/dist/pframe_utils/axes.d.ts.map +1 -1
- package/dist/pframe_utils/axes.js.map +1 -1
- package/dist/pframe_utils/columns.cjs +6 -10
- package/dist/pframe_utils/columns.cjs.map +1 -1
- package/dist/pframe_utils/columns.d.ts +4 -4
- package/dist/pframe_utils/columns.d.ts.map +1 -1
- package/dist/pframe_utils/columns.js +7 -11
- package/dist/pframe_utils/columns.js.map +1 -1
- package/dist/pframe_utils/index.cjs.map +1 -1
- package/dist/pframe_utils/index.d.ts +1 -1
- package/dist/pframe_utils/index.d.ts.map +1 -1
- package/dist/pframe_utils/index.js.map +1 -1
- package/dist/render/accessor.cjs +15 -16
- package/dist/render/accessor.cjs.map +1 -1
- package/dist/render/accessor.d.ts +7 -10
- package/dist/render/accessor.d.ts.map +1 -1
- package/dist/render/accessor.js +15 -16
- package/dist/render/accessor.js.map +1 -1
- package/dist/render/api.cjs +34 -36
- package/dist/render/api.cjs.map +1 -1
- package/dist/render/api.d.ts +30 -20
- package/dist/render/api.d.ts.map +1 -1
- package/dist/render/api.js +35 -38
- package/dist/render/api.js.map +1 -1
- package/dist/render/index.cjs +4 -0
- package/dist/render/index.d.ts +4 -4
- package/dist/render/index.js +3 -2
- package/dist/render/internal.cjs +3 -2
- package/dist/render/internal.cjs.map +1 -1
- package/dist/render/internal.d.ts +17 -9
- package/dist/render/internal.d.ts.map +1 -1
- package/dist/render/internal.js +3 -2
- package/dist/render/internal.js.map +1 -1
- package/dist/render/util/axis_filtering.cjs.map +1 -1
- package/dist/render/util/axis_filtering.js.map +1 -1
- package/dist/render/util/column_collection.cjs +6 -4
- package/dist/render/util/column_collection.cjs.map +1 -1
- package/dist/render/util/column_collection.d.ts +9 -9
- package/dist/render/util/column_collection.d.ts.map +1 -1
- package/dist/render/util/column_collection.js +6 -4
- package/dist/render/util/column_collection.js.map +1 -1
- package/dist/render/util/index.d.ts +2 -2
- package/dist/render/util/pcolumn_data.cjs +1 -1
- package/dist/render/util/pcolumn_data.cjs.map +1 -1
- package/dist/render/util/pcolumn_data.d.ts +3 -3
- package/dist/render/util/pcolumn_data.d.ts.map +1 -1
- package/dist/render/util/pcolumn_data.js +1 -1
- package/dist/render/util/pcolumn_data.js.map +1 -1
- package/dist/services/block_services.cjs +2 -1
- package/dist/services/block_services.cjs.map +1 -1
- package/dist/services/block_services.d.ts +1 -0
- package/dist/services/block_services.d.ts.map +1 -1
- package/dist/services/block_services.js +2 -1
- package/dist/services/block_services.js.map +1 -1
- package/dist/services/get_services.cjs +2 -2
- package/dist/services/get_services.cjs.map +1 -1
- package/dist/services/get_services.d.ts +4 -1
- package/dist/services/get_services.d.ts.map +1 -1
- package/dist/services/get_services.js +2 -2
- package/dist/services/get_services.js.map +1 -1
- package/package.json +9 -7
- package/src/columns/__test_helpers__/collection_driver.ts +197 -0
- package/src/columns/__test_helpers__/stub_registry.ts +134 -0
- package/src/columns/column.ts +46 -0
- package/src/columns/column_lazy.test.ts +201 -0
- package/src/columns/column_lazy.ts +311 -0
- package/src/columns/column_providers/index.ts +78 -0
- package/src/columns/column_providers/providers.ts +193 -0
- package/src/columns/column_providers/types.ts +24 -0
- package/src/columns/column_recipes/column_discovered_recipe.ts +231 -0
- package/src/columns/column_recipes/column_filtered_recipe.ts +184 -0
- package/src/columns/column_recipes/column_overrided_recipe.ts +146 -0
- package/src/columns/column_recipes/column_recipes.test.ts +681 -0
- package/src/columns/column_recipes/index.ts +127 -0
- package/src/columns/column_recipes/leaf_rebrand.ts +28 -0
- package/src/columns/column_recipes/types.ts +113 -0
- package/src/columns/columns_collection.test.ts +164 -0
- package/src/columns/columns_collection.ts +170 -0
- package/src/columns/derive_axis_values_labels.ts +98 -0
- package/src/columns/expand_by_partition.test.ts +146 -110
- package/src/columns/expand_by_partition.ts +72 -84
- package/src/columns/index.ts +7 -5
- package/src/columns/utils.test.ts +249 -0
- package/src/columns/utils.ts +226 -0
- package/src/components/PFrameForGraphs.ts +3 -1
- package/src/components/PlAnnotations/filters_ui.test.ts +46 -47
- package/src/components/PlDataTable/columnResolver.test.ts +122 -0
- package/src/components/PlDataTable/columnResolver.ts +57 -0
- package/src/components/PlDataTable/createPlDataTable/createPTableDefV2.ts +9 -9
- package/src/components/PlDataTable/createPlDataTable/createPTableDefV3.ts +31 -63
- package/src/components/PlDataTable/createPlDataTable/createPlDataTableV2.ts +85 -58
- package/src/components/PlDataTable/createPlDataTable/createPlDataTableV3.ts +316 -354
- package/src/components/PlDataTable/createPlDataTable/discoverColumns.ts +48 -144
- package/src/components/PlDataTable/createPlDataTable/index.ts +2 -2
- package/src/components/PlDataTable/createPlDataTable/utils.test.ts +60 -69
- package/src/components/PlDataTable/createPlDataTable/utils.ts +65 -173
- package/src/components/PlDataTable/createPlDataTableSheet.ts +1 -1
- package/src/components/PlDataTable/index.ts +4 -2
- package/src/components/PlDataTable/labels.ts +4 -33
- package/src/components/PlDataTable/state-migration.ts +151 -22
- package/src/components/PlDataTable/typesV8.ts +188 -0
- package/src/components/PlDatasetSelector/build_dataset_options.ts +35 -60
- package/src/components/PlDatasetSelector/enrichment_discovery.ts +65 -61
- package/src/components/PlDatasetSelector/filter_discovery.test.ts +110 -72
- package/src/components/PlDatasetSelector/filter_discovery.ts +51 -31
- package/src/filters/converters/filterToQuery.test.ts +15 -8
- package/src/filters/converters/filterToQuery.ts +22 -9
- package/src/filters/converters/filterUiToExpressionImpl.test.ts +35 -36
- package/src/labels/derive_distinct_labels.ts +1 -1
- package/src/labels/derive_distinct_tooltips.test.ts +7 -4
- package/src/labels/derive_distinct_tooltips.ts +3 -3
- package/src/pframe_utils/axes.ts +2 -2
- package/src/pframe_utils/columns.ts +14 -23
- package/src/pframe_utils/index.ts +1 -1
- package/src/render/accessor.ts +35 -38
- package/src/render/api.ts +45 -61
- package/src/render/index.ts +2 -1
- package/src/render/internal.ts +43 -10
- package/src/render/util/axis_filtering.ts +0 -1
- package/src/render/util/column_collection.ts +17 -17
- package/src/render/util/pcolumn_data.ts +5 -9
- package/src/services/block_services.ts +1 -0
- package/src/services/get_services.ts +5 -2
- package/dist/columns/column_collection_builder.cjs +0 -241
- package/dist/columns/column_collection_builder.cjs.map +0 -1
- package/dist/columns/column_collection_builder.d.ts +0 -119
- package/dist/columns/column_collection_builder.d.ts.map +0 -1
- package/dist/columns/column_collection_builder.js +0 -241
- package/dist/columns/column_collection_builder.js.map +0 -1
- package/dist/columns/column_selector.cjs +0 -49
- package/dist/columns/column_selector.cjs.map +0 -1
- package/dist/columns/column_selector.d.ts +0 -33
- package/dist/columns/column_selector.d.ts.map +0 -1
- package/dist/columns/column_selector.js +0 -47
- package/dist/columns/column_selector.js.map +0 -1
- package/dist/columns/column_snapshot.cjs +0 -19
- package/dist/columns/column_snapshot.cjs.map +0 -1
- package/dist/columns/column_snapshot.d.ts +0 -39
- package/dist/columns/column_snapshot.d.ts.map +0 -1
- package/dist/columns/column_snapshot.js +0 -18
- package/dist/columns/column_snapshot.js.map +0 -1
- package/dist/columns/column_snapshot_provider.cjs +0 -137
- package/dist/columns/column_snapshot_provider.cjs.map +0 -1
- package/dist/columns/column_snapshot_provider.d.ts +0 -74
- package/dist/columns/column_snapshot_provider.d.ts.map +0 -1
- package/dist/columns/column_snapshot_provider.js +0 -133
- package/dist/columns/column_snapshot_provider.js.map +0 -1
- package/dist/columns/ctx_column_sources.cjs +0 -80
- package/dist/columns/ctx_column_sources.cjs.map +0 -1
- package/dist/columns/ctx_column_sources.d.ts +0 -30
- package/dist/columns/ctx_column_sources.d.ts.map +0 -1
- package/dist/columns/ctx_column_sources.js +0 -79
- package/dist/columns/ctx_column_sources.js.map +0 -1
- package/src/columns/column_collection_builder.test.ts +0 -484
- package/src/columns/column_collection_builder.ts +0 -485
- package/src/columns/column_selector.test.ts +0 -90
- package/src/columns/column_selector.ts +0 -100
- package/src/columns/column_snapshot.ts +0 -58
- package/src/columns/column_snapshot_provider.ts +0 -194
- package/src/columns/ctx_column_sources.ts +0 -99
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AxisId,
|
|
3
|
+
ColumnUniversalId,
|
|
4
|
+
PObjectId,
|
|
5
|
+
PTableColumnId,
|
|
6
|
+
PTableColumnIdColumn,
|
|
7
|
+
} from "@milaboratories/pl-model-common";
|
|
8
|
+
import { extractPObjectId, getAxisId, matchAxisId } from "@milaboratories/pl-model-common";
|
|
9
|
+
import type { ColumnRecipe } from "../../columns";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Resolves a user-supplied PTableColumnId against the discovered set of
|
|
13
|
+
* columns and axes. For column refs, accepts either the full recipe id (rich
|
|
14
|
+
* {@link ColumnUniversalId}) or the bare {@link PObjectId} and returns a ref
|
|
15
|
+
* carrying the recipe's full id — the same id that appears as the leaf in the
|
|
16
|
+
* emitted SpecQuery, so engine-side dedup is consistent with the resolver's
|
|
17
|
+
* view. Axis refs are checked against the union of axes spanned by the
|
|
18
|
+
* columns and pass through unchanged on hit.
|
|
19
|
+
* Returns `undefined` when the reference cannot be matched.
|
|
20
|
+
*/
|
|
21
|
+
export type ColumnResolver = (ref: PTableColumnId) => PTableColumnId | undefined;
|
|
22
|
+
|
|
23
|
+
export function createColumnResolver(
|
|
24
|
+
columns: ColumnRecipe[],
|
|
25
|
+
deps?: { warn?: (msg: string) => void },
|
|
26
|
+
): ColumnResolver {
|
|
27
|
+
const axisIds: AxisId[] = [];
|
|
28
|
+
for (const c of columns) {
|
|
29
|
+
for (const ax of c.getSpec().axesSpec) {
|
|
30
|
+
axisIds.push(getAxisId(ax));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const byFullId = new Map<ColumnUniversalId, ColumnRecipe>();
|
|
35
|
+
const byPObjectId = new Map<PObjectId, ColumnRecipe>();
|
|
36
|
+
for (const c of columns) {
|
|
37
|
+
byFullId.set(c.id, c);
|
|
38
|
+
const pid = extractPObjectId(c.id);
|
|
39
|
+
const existing = byPObjectId.get(pid);
|
|
40
|
+
if (existing === undefined) {
|
|
41
|
+
byPObjectId.set(pid, c);
|
|
42
|
+
} else if (existing.id !== c.id) {
|
|
43
|
+
deps?.warn?.(
|
|
44
|
+
`Ambiguous PObjectId ${pid}: recipe ids ${existing.id} and ${c.id} both match — keeping first.`,
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return (ref: PTableColumnId): PTableColumnId | undefined => {
|
|
50
|
+
if (ref.type === "axis") {
|
|
51
|
+
return axisIds.some((a) => matchAxisId(ref.id, a)) ? ref : undefined;
|
|
52
|
+
}
|
|
53
|
+
const hit = byFullId.get(ref.id) ?? byPObjectId.get(extractPObjectId(ref.id));
|
|
54
|
+
if (hit === undefined) return undefined;
|
|
55
|
+
return { type: "column", id: hit.id } satisfies PTableColumnIdColumn;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import type {
|
|
2
|
+
ColumnUniversalId,
|
|
2
3
|
PColumn,
|
|
3
4
|
PColumnIdAndSpec,
|
|
4
5
|
PTableSorting,
|
|
5
6
|
PTableDefV2,
|
|
6
|
-
DataInfo,
|
|
7
|
-
PColumnValues,
|
|
8
7
|
} from "@milaboratories/pl-model-common";
|
|
9
8
|
import { getColumnIdAndSpec } from "@milaboratories/pl-model-common";
|
|
10
|
-
import type { PColumnDataUniversal
|
|
9
|
+
import type { PColumnDataUniversal } from "../../../render";
|
|
11
10
|
import { isFunction } from "es-toolkit";
|
|
12
|
-
import type { PlDataTableFilters } from "../
|
|
11
|
+
import type { PlDataTableFilters } from "../typesV8";
|
|
13
12
|
import { createPTableDefV3 } from "./createPTableDefV3";
|
|
13
|
+
import { ColumnLazyImpl } from "../../../columns";
|
|
14
14
|
|
|
15
15
|
export function createPTableDefV2(params: {
|
|
16
|
-
columns: PColumn<PColumnDataUniversal>[];
|
|
17
|
-
labelColumns: PColumn<PColumnDataUniversal>[];
|
|
16
|
+
columns: PColumn<undefined | PColumnDataUniversal>[];
|
|
17
|
+
labelColumns: PColumn<undefined | PColumnDataUniversal>[];
|
|
18
18
|
coreJoinType: "inner" | "full";
|
|
19
19
|
filters: null | PlDataTableFilters;
|
|
20
20
|
sorting: PTableSorting[];
|
|
21
21
|
coreColumnPredicate?: (spec: PColumnIdAndSpec) => boolean;
|
|
22
|
-
}): PTableDefV2<
|
|
22
|
+
}): PTableDefV2<ColumnUniversalId> {
|
|
23
23
|
let coreColumns = params.columns;
|
|
24
24
|
const secondaryColumns: typeof params.columns = [];
|
|
25
25
|
|
|
@@ -33,8 +33,8 @@ export function createPTableDefV2(params: {
|
|
|
33
33
|
secondaryColumns.push(...params.labelColumns);
|
|
34
34
|
|
|
35
35
|
return createPTableDefV3({
|
|
36
|
-
primary: coreColumns.map((column) => (
|
|
37
|
-
secondary: secondaryColumns.map((column) => (
|
|
36
|
+
primary: coreColumns.map((column) => ColumnLazyImpl.fromColumn(column)),
|
|
37
|
+
secondary: secondaryColumns.map((column) => ColumnLazyImpl.fromColumn(column)),
|
|
38
38
|
primaryJoinType: params.coreJoinType,
|
|
39
39
|
filters: params.filters,
|
|
40
40
|
sorting: params.sorting,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
AxisQualification,
|
|
3
|
-
|
|
3
|
+
ColumnUniversalId,
|
|
4
|
+
PObjectId,
|
|
4
5
|
PTableColumnId,
|
|
5
6
|
PTableSorting,
|
|
6
7
|
PTableDefV2,
|
|
@@ -8,53 +9,33 @@ import type {
|
|
|
8
9
|
SpecQuery,
|
|
9
10
|
SpecQueryExpression,
|
|
10
11
|
SpecQueryJoinEntry,
|
|
11
|
-
PObjectId,
|
|
12
12
|
} from "@milaboratories/pl-model-common";
|
|
13
13
|
import { isBooleanExpression } from "@milaboratories/pl-model-common";
|
|
14
|
-
import type { PColumnDataUniversal } from "../../../render";
|
|
15
14
|
import { isNil } from "es-toolkit";
|
|
16
|
-
import type { PlDataTableFilters } from "../
|
|
15
|
+
import type { PlDataTableFilters } from "../typesV8";
|
|
17
16
|
import { distillFilterSpec, filterSpecToSpecQueryExpr } from "../../../filters";
|
|
18
17
|
import type { Nil } from "@milaboratories/helpers";
|
|
18
|
+
import type { ColumnRecipe } from "../../..";
|
|
19
|
+
import { hitQualifications, queriesQualifications } from "../../../columns";
|
|
19
20
|
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
qualifications?: AxisQualification[];
|
|
30
|
-
/**
|
|
31
|
-
* Linker chain leading to `column`, ordered from outermost to innermost.
|
|
32
|
-
* When present, the entry is emitted as nested `linkerJoin` operators —
|
|
33
|
-
* one per linker — wrapping the hit column. Binds this hit to this exact
|
|
34
|
-
* chain so the engine cannot reuse a sibling chain that happens to share
|
|
35
|
-
* axis name + domain.
|
|
36
|
-
*/
|
|
37
|
-
linkers?: PColumn<Data>[];
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
/** Secondary group — one join subtree outer-joined onto primary. */
|
|
41
|
-
export type SecondaryGroup<Data> = {
|
|
42
|
-
entries: SecondaryEntry<Data>[];
|
|
43
|
-
/** Per-variant qualifications applied to the cloned primary anchors on this group's side.
|
|
44
|
-
* Keyed by `PrimaryEntry.column.id`. Omit → base primary used unqualified (labels, non-variant columns). */
|
|
45
|
-
primaryQualifications?: Record<PObjectId, AxisQualification[]>;
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
export function createPTableDefV3<Data = PColumnDataUniversal>(params: {
|
|
21
|
+
/**
|
|
22
|
+
* Assemble a ptable def directly from recipes. Each secondary recipe is its own
|
|
23
|
+
* outer-joined subtree: `getQuery()` encodes its linker chain, and its
|
|
24
|
+
* hit-/queries-qualifications are derived on the spot via {@link hitQualifications}
|
|
25
|
+
* / {@link queriesQualifications} — no pre-extracted DTO. Bare leaves yield empty
|
|
26
|
+
* qualifications, so plain {@link ColumnRecipe} arrays (e.g. label columns) work
|
|
27
|
+
* unchanged.
|
|
28
|
+
*/
|
|
29
|
+
export function createPTableDefV3(params: {
|
|
49
30
|
primaryJoinType: "inner" | "full";
|
|
50
|
-
primary:
|
|
51
|
-
secondary:
|
|
31
|
+
primary: ColumnRecipe[];
|
|
32
|
+
secondary: ColumnRecipe[];
|
|
52
33
|
filters?: Nil | PlDataTableFilters;
|
|
53
34
|
sorting?: Nil | PTableSorting[];
|
|
54
|
-
}): PTableDefV2<
|
|
55
|
-
let query: SpecQuery
|
|
35
|
+
}): PTableDefV2<ColumnUniversalId> {
|
|
36
|
+
let query: SpecQuery = {
|
|
56
37
|
type: params.primaryJoinType === "inner" ? "innerJoin" : "fullJoin",
|
|
57
|
-
entries: params.primary.map((
|
|
38
|
+
entries: params.primary.map((c) => columnToJoinEntry(c, [])),
|
|
58
39
|
};
|
|
59
40
|
|
|
60
41
|
if (params.secondary.length > 0) {
|
|
@@ -62,11 +43,12 @@ export function createPTableDefV3<Data = PColumnDataUniversal>(params: {
|
|
|
62
43
|
type: "outerJoin",
|
|
63
44
|
primary: {
|
|
64
45
|
entry: query,
|
|
65
|
-
qualifications: params.secondary.flatMap((
|
|
66
|
-
|
|
67
|
-
|
|
46
|
+
qualifications: params.secondary.flatMap((s) => {
|
|
47
|
+
const quals = queriesQualifications(s);
|
|
48
|
+
return params.primary.flatMap((p) => quals[p.id as PObjectId] ?? []);
|
|
49
|
+
}),
|
|
68
50
|
},
|
|
69
|
-
secondary: params.secondary.
|
|
51
|
+
secondary: params.secondary.map((c) => columnToJoinEntry(c, hitQualifications(c))),
|
|
70
52
|
};
|
|
71
53
|
}
|
|
72
54
|
|
|
@@ -95,7 +77,7 @@ export function createPTableDefV3<Data = PColumnDataUniversal>(params: {
|
|
|
95
77
|
sortBy: params.sorting.map((s) => ({
|
|
96
78
|
expression: columnIdToExpr(s.column),
|
|
97
79
|
ascending: s.ascending,
|
|
98
|
-
nullsFirst:
|
|
80
|
+
nullsFirst: s.naAndAbsentAreLeastValues,
|
|
99
81
|
})),
|
|
100
82
|
};
|
|
101
83
|
}
|
|
@@ -109,26 +91,12 @@ function columnIdToExpr(col: PTableColumnId): SpecQueryExpression {
|
|
|
109
91
|
: { type: "columnRef", value: col.id };
|
|
110
92
|
}
|
|
111
93
|
|
|
112
|
-
function
|
|
113
|
-
col:
|
|
114
|
-
|
|
115
|
-
): SpecQueryJoinEntry
|
|
94
|
+
function columnToJoinEntry(
|
|
95
|
+
col: ColumnRecipe,
|
|
96
|
+
qualifications: readonly AxisQualification[],
|
|
97
|
+
): SpecQueryJoinEntry {
|
|
116
98
|
return {
|
|
117
|
-
entry:
|
|
118
|
-
qualifications
|
|
99
|
+
entry: col.getQuery(),
|
|
100
|
+
qualifications,
|
|
119
101
|
};
|
|
120
102
|
}
|
|
121
|
-
|
|
122
|
-
function toJoinEntry<Data>(e: SecondaryEntry<Data>): SpecQueryJoinEntry<PColumn<Data>> {
|
|
123
|
-
const qs = e.qualifications ?? [];
|
|
124
|
-
if (isNil(e.linkers) || e.linkers.length === 0) return toLeaf(e.column, qs);
|
|
125
|
-
|
|
126
|
-
const folded = e.linkers.reduceRight<SpecQueryJoinEntry<PColumn<Data>>>(
|
|
127
|
-
(inner, linker) => ({
|
|
128
|
-
entry: { type: "linkerJoin", linker: { column: linker }, secondary: [inner] },
|
|
129
|
-
qualifications: [],
|
|
130
|
-
}),
|
|
131
|
-
toLeaf(e.column, []),
|
|
132
|
-
);
|
|
133
|
-
return { ...folded, qualifications: qs };
|
|
134
|
-
}
|
|
@@ -1,20 +1,14 @@
|
|
|
1
1
|
import type {
|
|
2
|
-
|
|
2
|
+
ColumnUniversalId,
|
|
3
|
+
FilterSpecNode,
|
|
3
4
|
PColumn,
|
|
4
|
-
PObjectId,
|
|
5
|
-
PTableColumnId,
|
|
6
|
-
PTableColumnIdAxis,
|
|
7
5
|
PTableColumnIdColumn,
|
|
8
|
-
|
|
6
|
+
PTableSorting,
|
|
9
7
|
} from "@milaboratories/pl-model-common";
|
|
10
8
|
import {
|
|
11
9
|
Annotation,
|
|
12
|
-
canonicalizeJson,
|
|
13
|
-
getAxisId,
|
|
14
10
|
getColumnIdAndSpec,
|
|
15
11
|
isLinkerColumn,
|
|
16
|
-
uniqueBy,
|
|
17
|
-
parseJson,
|
|
18
12
|
PColumnName,
|
|
19
13
|
} from "@milaboratories/pl-model-common";
|
|
20
14
|
import type {
|
|
@@ -25,14 +19,21 @@ import type {
|
|
|
25
19
|
} from "../../../render";
|
|
26
20
|
import { allPColumnsReady, deriveLabels, PColumnCollection } from "../../../render";
|
|
27
21
|
import { identity } from "es-toolkit";
|
|
28
|
-
import type {
|
|
22
|
+
import type {
|
|
23
|
+
CreatePlDataTableOps,
|
|
24
|
+
PlDataTableFilters,
|
|
25
|
+
PlDataTableFilterSpecLeaf,
|
|
26
|
+
PlDataTableModel,
|
|
27
|
+
} from "../typesV8";
|
|
29
28
|
import { upgradePlDataTableStateV2 } from "../state-migration";
|
|
30
29
|
import type { PlDataTableStateV2 } from "../state-migration";
|
|
31
30
|
import { getMatchingLabelColumns } from "../labels";
|
|
32
|
-
import { collectFilterSpecColumns } from "../../../filters/traverse";
|
|
33
|
-
import { isEmpty } from "es-toolkit/compat";
|
|
31
|
+
import { collectFilterSpecColumns, traverseFilterSpec } from "../../../filters/traverse";
|
|
34
32
|
import { createPTableDefV2 } from "./createPTableDefV2";
|
|
35
33
|
import { isColumnOptional } from "./utils";
|
|
34
|
+
import { ColumnLazyImpl } from "../../../columns";
|
|
35
|
+
import { createColumnResolver, type ColumnResolver } from "../columnResolver";
|
|
36
|
+
import { isNil, type Nil } from "@milaboratories/helpers";
|
|
36
37
|
|
|
37
38
|
/**
|
|
38
39
|
* @deprecated This function is deprecated and will be removed in future. Please migrate to createPlDataTable with v3 options for improved column discovery and display configuration. See createPlDataTableOptionsV3 for details on the new options format and migration guidance.
|
|
@@ -81,52 +82,32 @@ export function createPlDataTableV2<A, U>(
|
|
|
81
82
|
|
|
82
83
|
const fullColumns = [...columns, ...fullLabelColumns];
|
|
83
84
|
|
|
84
|
-
const
|
|
85
|
-
fullColumns.
|
|
86
|
-
|
|
85
|
+
const resolver = createColumnResolver(
|
|
86
|
+
fullColumns.map((c) => ColumnLazyImpl.fromColumn(c)),
|
|
87
|
+
{ warn: ctx.logWarn.bind(ctx) },
|
|
87
88
|
);
|
|
88
|
-
const fullColumnsIds: PTableColumnId[] = [
|
|
89
|
-
...fullColumnsAxes.map((a) => ({ type: "axis", id: a }) satisfies PTableColumnIdAxis),
|
|
90
|
-
...fullColumns.map((c) => ({ type: "column", id: c.id }) satisfies PTableColumnIdColumn),
|
|
91
|
-
];
|
|
92
|
-
const fullColumnsIdsSet = new Set(fullColumnsIds.map((c) => canonicalizeJson<PTableColumnId>(c)));
|
|
93
|
-
const isValidColumnId = (id: string): boolean =>
|
|
94
|
-
fullColumnsIdsSet.has(id as CanonicalizedJson<PTableColumnId>);
|
|
95
|
-
|
|
96
|
-
// -- Filtering validation --
|
|
97
|
-
const filters = tableStateNormalized.pTableParams.filters;
|
|
98
|
-
const defaultFilters = options?.filters ?? undefined;
|
|
99
|
-
const filterColumns = filters !== null ? collectFilterSpecColumns(filters) : [];
|
|
100
|
-
const firstInvalidFilterColumn = filterColumns.find((col) => !isValidColumnId(col));
|
|
101
|
-
if (firstInvalidFilterColumn)
|
|
102
|
-
throw new Error(
|
|
103
|
-
`Invalid filter column ${firstInvalidFilterColumn}: column reference does not match the table columns`,
|
|
104
|
-
);
|
|
105
|
-
const defaultFilterColumns =
|
|
106
|
-
defaultFilters !== undefined ? collectFilterSpecColumns(defaultFilters) : [];
|
|
107
|
-
const firstInvalidDefaultFilterColumn = defaultFilterColumns.find((col) => !isValidColumnId(col));
|
|
108
|
-
if (firstInvalidDefaultFilterColumn)
|
|
109
|
-
throw new Error(
|
|
110
|
-
`Invalid default filter column ${firstInvalidDefaultFilterColumn}: column reference does not match the table columns`,
|
|
111
|
-
);
|
|
112
89
|
|
|
113
|
-
// --
|
|
114
|
-
const
|
|
115
|
-
const
|
|
116
|
-
const
|
|
117
|
-
|
|
90
|
+
// -- Filtering: rewrite via resolver, throw if any reference is unresolved --
|
|
91
|
+
const rawFilters = tableStateNormalized.pTableParams.filters;
|
|
92
|
+
const rawDefaultFilters = options?.filters ?? undefined;
|
|
93
|
+
const filters = remapFiltersThrowing(rawFilters, resolver, "filter");
|
|
94
|
+
const defaultFilters = remapFiltersThrowing(
|
|
95
|
+
rawDefaultFilters ?? null,
|
|
96
|
+
resolver,
|
|
97
|
+
"default filter",
|
|
118
98
|
);
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
99
|
+
|
|
100
|
+
// -- Sorting: rewrite via resolver, throw if any reference is unresolved --
|
|
101
|
+
const userSorting = tableStateNormalized.pTableParams.sorting;
|
|
102
|
+
const rawSorting = (isNil(userSorting) ? options?.sorting : userSorting) ?? [];
|
|
103
|
+
const sorting = remapSortingThrowing(rawSorting, resolver);
|
|
123
104
|
|
|
124
105
|
const coreJoinType = options?.coreJoinType ?? "full";
|
|
125
106
|
const fullDef = createPTableDefV2({
|
|
126
107
|
columns,
|
|
127
108
|
labelColumns: fullLabelColumns,
|
|
128
109
|
coreJoinType,
|
|
129
|
-
filters,
|
|
110
|
+
filters: filters ?? null,
|
|
130
111
|
sorting,
|
|
131
112
|
coreColumnPredicate: options?.coreColumnPredicate,
|
|
132
113
|
});
|
|
@@ -135,8 +116,8 @@ export function createPlDataTableV2<A, U>(
|
|
|
135
116
|
const pframeHandle = ctx.createPFrame(fullColumns);
|
|
136
117
|
if (!fullHandle || !pframeHandle) return undefined;
|
|
137
118
|
|
|
138
|
-
const hiddenColumns = new Set<
|
|
139
|
-
(():
|
|
119
|
+
const hiddenColumns = new Set<ColumnUniversalId>(
|
|
120
|
+
((): ColumnUniversalId[] => {
|
|
140
121
|
// Inner join works as a filter - all columns must be present
|
|
141
122
|
if (coreJoinType === "inner") return [];
|
|
142
123
|
|
|
@@ -172,10 +153,7 @@ export function createPlDataTableV2<A, U>(
|
|
|
172
153
|
// Preserve filter columns from being hidden
|
|
173
154
|
if (filters) {
|
|
174
155
|
collectFilterSpecColumns(filters)
|
|
175
|
-
.flatMap((c) =>
|
|
176
|
-
const obj = parseJson(c);
|
|
177
|
-
return obj.type === "column" ? [obj.id] : [];
|
|
178
|
-
})
|
|
156
|
+
.flatMap((c) => (c.type === "column" ? [c.id] : []))
|
|
179
157
|
.forEach((c) => hiddenColumns.delete(c));
|
|
180
158
|
}
|
|
181
159
|
|
|
@@ -192,7 +170,7 @@ export function createPlDataTableV2<A, U>(
|
|
|
192
170
|
columns: visibleColumns,
|
|
193
171
|
labelColumns: visibleLabelColumns,
|
|
194
172
|
coreJoinType,
|
|
195
|
-
filters,
|
|
173
|
+
filters: filters ?? null,
|
|
196
174
|
sorting,
|
|
197
175
|
coreColumnPredicate,
|
|
198
176
|
});
|
|
@@ -205,13 +183,62 @@ export function createPlDataTableV2<A, U>(
|
|
|
205
183
|
fullTableHandle: fullHandle,
|
|
206
184
|
fullPframeHandle: pframeHandle,
|
|
207
185
|
visibleTableHandle: visibleHandle,
|
|
208
|
-
defaultFilters,
|
|
186
|
+
defaultFilters: defaultFilters ?? undefined,
|
|
209
187
|
} satisfies PlDataTableModel;
|
|
210
188
|
}
|
|
211
189
|
|
|
190
|
+
/** Rewrite filter column refs through the resolver; throw on any unresolved ref. */
|
|
191
|
+
function remapFiltersThrowing(
|
|
192
|
+
filters: Nil | PlDataTableFilters,
|
|
193
|
+
resolver: ColumnResolver,
|
|
194
|
+
label: string,
|
|
195
|
+
): Nil | PlDataTableFilters {
|
|
196
|
+
if (isNil(filters)) return filters;
|
|
197
|
+
|
|
198
|
+
type Node = FilterSpecNode<PlDataTableFilterSpecLeaf>;
|
|
199
|
+
return traverseFilterSpec(filters, {
|
|
200
|
+
leaf: (leaf): Node => {
|
|
201
|
+
if (leaf.type === undefined) return leaf;
|
|
202
|
+
const result = { ...leaf };
|
|
203
|
+
if ("column" in result) {
|
|
204
|
+
const c = resolver(result.column);
|
|
205
|
+
if (isNil(c))
|
|
206
|
+
throw new Error(
|
|
207
|
+
`Invalid ${label} column ${JSON.stringify(result.column)}: column reference does not match the table columns`,
|
|
208
|
+
);
|
|
209
|
+
result.column = c;
|
|
210
|
+
}
|
|
211
|
+
if ("rhs" in result) {
|
|
212
|
+
const c = resolver(result.rhs);
|
|
213
|
+
if (isNil(c))
|
|
214
|
+
throw new Error(
|
|
215
|
+
`Invalid ${label} column ${JSON.stringify(result.rhs)}: column reference does not match the table columns`,
|
|
216
|
+
);
|
|
217
|
+
result.rhs = c;
|
|
218
|
+
}
|
|
219
|
+
return result;
|
|
220
|
+
},
|
|
221
|
+
and: (results): Node => ({ type: "and", filters: results }),
|
|
222
|
+
or: (results): Node => ({ type: "or", filters: results }),
|
|
223
|
+
not: (result): Node => ({ type: "not", filter: result }),
|
|
224
|
+
}) as PlDataTableFilters;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/** Rewrite sorting column refs through the resolver; throw on any unresolved ref. */
|
|
228
|
+
function remapSortingThrowing(sorting: PTableSorting[], resolver: ColumnResolver): PTableSorting[] {
|
|
229
|
+
return sorting.map((s) => {
|
|
230
|
+
const c = resolver(s.column);
|
|
231
|
+
if (isNil(c))
|
|
232
|
+
throw new Error(
|
|
233
|
+
`Invalid sorting column ${JSON.stringify(s.column)}: column reference does not match the table columns`,
|
|
234
|
+
);
|
|
235
|
+
return { ...s, column: c };
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
|
|
212
239
|
function getAllLabelColumns(
|
|
213
240
|
resultPool: AxisLabelProvider & ColumnProvider,
|
|
214
|
-
): PColumn<PColumnDataUniversal>[]
|
|
241
|
+
): undefined | PColumn<undefined | PColumnDataUniversal>[] {
|
|
215
242
|
return new PColumnCollection()
|
|
216
243
|
.addAxisLabelProvider(resultPool)
|
|
217
244
|
.addColumnProvider(resultPool)
|