@sqlrooms/mosaic 0.29.0-rc.8 → 0.29.0-rc.9
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/README.md +84 -74
- package/dist/ai/agentIntent.d.ts +5 -0
- package/dist/ai/agentIntent.d.ts.map +1 -0
- package/dist/ai/agentIntent.js +8 -0
- package/dist/ai/agentIntent.js.map +1 -0
- package/dist/ai/block-document/constants.d.ts +9 -0
- package/dist/ai/block-document/constants.d.ts.map +1 -0
- package/dist/ai/block-document/constants.js +9 -0
- package/dist/ai/block-document/constants.js.map +1 -0
- package/dist/ai/block-document/createAddMosaicDashboardBlockTool.d.ts +48 -0
- package/dist/ai/block-document/createAddMosaicDashboardBlockTool.d.ts.map +1 -0
- package/dist/ai/block-document/createAddMosaicDashboardBlockTool.js +59 -0
- package/dist/ai/block-document/createAddMosaicDashboardBlockTool.js.map +1 -0
- package/dist/ai/block-document/createBlockDocumentChartTools.d.ts +19 -0
- package/dist/ai/block-document/createBlockDocumentChartTools.d.ts.map +1 -0
- package/dist/ai/block-document/createBlockDocumentChartTools.js +37 -0
- package/dist/ai/block-document/createBlockDocumentChartTools.js.map +1 -0
- package/dist/ai/block-document/createBlockDocumentDataTableExplorerTool.d.ts +32 -0
- package/dist/ai/block-document/createBlockDocumentDataTableExplorerTool.d.ts.map +1 -0
- package/dist/ai/block-document/createBlockDocumentDataTableExplorerTool.js +37 -0
- package/dist/ai/block-document/createBlockDocumentDataTableExplorerTool.js.map +1 -0
- package/dist/ai/constants.d.ts +3 -0
- package/dist/ai/constants.d.ts.map +1 -0
- package/dist/ai/constants.js +3 -0
- package/dist/ai/constants.js.map +1 -0
- package/dist/ai/createDataTableExplorerTool.d.ts +69 -0
- package/dist/ai/createDataTableExplorerTool.d.ts.map +1 -0
- package/dist/ai/createDataTableExplorerTool.js +68 -0
- package/dist/ai/createDataTableExplorerTool.js.map +1 -0
- package/dist/ai/dashboard/constants.d.ts +6 -0
- package/dist/ai/dashboard/constants.d.ts.map +1 -0
- package/dist/ai/dashboard/constants.js +6 -0
- package/dist/ai/dashboard/constants.js.map +1 -0
- package/dist/ai/dashboard/createDashboardAgentTool.d.ts +17 -0
- package/dist/ai/dashboard/createDashboardAgentTool.d.ts.map +1 -0
- package/dist/ai/dashboard/createDashboardAgentTool.js +205 -0
- package/dist/ai/dashboard/createDashboardAgentTool.js.map +1 -0
- package/dist/ai/dashboard/createDashboardAiAdapter.d.ts +14 -0
- package/dist/ai/dashboard/createDashboardAiAdapter.d.ts.map +1 -0
- package/dist/ai/dashboard/createDashboardAiAdapter.js +75 -0
- package/dist/ai/dashboard/createDashboardAiAdapter.js.map +1 -0
- package/dist/ai/dashboard/createDashboardAiTools.d.ts +26 -0
- package/dist/ai/dashboard/createDashboardAiTools.d.ts.map +1 -0
- package/dist/ai/dashboard/createDashboardAiTools.js +40 -0
- package/dist/ai/dashboard/createDashboardAiTools.js.map +1 -0
- package/dist/ai/dashboard/createDashboardChartTools.d.ts +27 -0
- package/dist/ai/dashboard/createDashboardChartTools.d.ts.map +1 -0
- package/dist/ai/dashboard/createDashboardChartTools.js +55 -0
- package/dist/ai/dashboard/createDashboardChartTools.js.map +1 -0
- package/dist/ai/dashboard/createDashboardDataTableExplorerTool.d.ts +23 -0
- package/dist/ai/dashboard/createDashboardDataTableExplorerTool.d.ts.map +1 -0
- package/dist/ai/dashboard/createDashboardDataTableExplorerTool.js +29 -0
- package/dist/ai/dashboard/createDashboardDataTableExplorerTool.js.map +1 -0
- package/dist/ai/dashboard/createListDashboardPanelsTool.d.ts +28 -0
- package/dist/ai/dashboard/createListDashboardPanelsTool.d.ts.map +1 -0
- package/dist/ai/dashboard/createListDashboardPanelsTool.js +54 -0
- package/dist/ai/dashboard/createListDashboardPanelsTool.js.map +1 -0
- package/dist/ai/dashboard/dashboard-types.d.ts +59 -0
- package/dist/ai/dashboard/dashboard-types.d.ts.map +1 -0
- package/dist/ai/dashboard/dashboard-types.js +2 -0
- package/dist/ai/dashboard/dashboard-types.js.map +1 -0
- package/dist/ai/database-types.d.ts +12 -0
- package/dist/ai/database-types.d.ts.map +1 -0
- package/dist/ai/database-types.js +2 -0
- package/dist/ai/database-types.js.map +1 -0
- package/dist/ai/errors.d.ts +8 -0
- package/dist/ai/errors.d.ts.map +1 -0
- package/dist/ai/errors.js +11 -0
- package/dist/ai/errors.js.map +1 -0
- package/dist/ai/tool-helpers.d.ts +28 -29
- package/dist/ai/tool-helpers.d.ts.map +1 -1
- package/dist/ai/tool-helpers.js +38 -76
- package/dist/ai/tool-helpers.js.map +1 -1
- package/dist/ai/tool-schemas.d.ts +9 -4
- package/dist/ai/tool-schemas.d.ts.map +1 -1
- package/dist/ai/tool-schemas.js +12 -12
- package/dist/ai/tool-schemas.js.map +1 -1
- package/dist/ai/tool-types.d.ts +19 -1
- package/dist/ai/tool-types.d.ts.map +1 -1
- package/dist/ai/tool-types.js.map +1 -1
- package/dist/ai/types.d.ts +64 -0
- package/dist/ai/types.d.ts.map +1 -0
- package/dist/ai/types.js +2 -0
- package/dist/ai/types.js.map +1 -0
- package/dist/ai.d.ts +16 -2
- package/dist/ai.d.ts.map +1 -1
- package/dist/ai.js +14 -5
- package/dist/ai.js.map +1 -1
- package/dist/charts/MosaicChart.js +1 -1
- package/dist/charts/MosaicChart.js.map +1 -1
- package/dist/charts/MosaicChartView.d.ts.map +1 -1
- package/dist/charts/MosaicChartView.js +1 -2
- package/dist/charts/MosaicChartView.js.map +1 -1
- package/dist/charts/chart-settings/MosaicChartSpecViewerPanel.d.ts.map +1 -1
- package/dist/charts/chart-settings/MosaicChartSpecViewerPanel.js +2 -1
- package/dist/charts/chart-settings/MosaicChartSpecViewerPanel.js.map +1 -1
- package/dist/charts/chart-settings/MosaicChartTypeSelector.d.ts.map +1 -1
- package/dist/charts/chart-settings/MosaicChartTypeSelector.js +4 -11
- package/dist/charts/chart-settings/MosaicChartTypeSelector.js.map +1 -1
- package/dist/charts/chart-types/base-types.d.ts +27 -23
- package/dist/charts/chart-types/base-types.d.ts.map +1 -1
- package/dist/charts/chart-types/base-types.js +3 -1
- package/dist/charts/chart-types/base-types.js.map +1 -1
- package/dist/charts/chart-types/box-plot/definition.d.ts.map +1 -1
- package/dist/charts/chart-types/box-plot/definition.js +1 -0
- package/dist/charts/chart-types/box-plot/definition.js.map +1 -1
- package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.d.ts +37 -3
- package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.d.ts.map +1 -1
- package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.js +26 -6
- package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.js.map +1 -1
- package/dist/charts/chart-types/box-plot/renderer/BoxPlotPanelRenderer.js +2 -2
- package/dist/charts/chart-types/box-plot/renderer/BoxPlotPanelRenderer.js.map +1 -1
- package/dist/charts/chart-types/box-plot/renderer/useBoxPlotClient.d.ts +12 -1
- package/dist/charts/chart-types/box-plot/renderer/useBoxPlotClient.d.ts.map +1 -1
- package/dist/charts/chart-types/box-plot/renderer/useBoxPlotClient.js +13 -3
- package/dist/charts/chart-types/box-plot/renderer/useBoxPlotClient.js.map +1 -1
- package/dist/charts/chart-types/box-plot/tool.d.ts +20 -24
- package/dist/charts/chart-types/box-plot/tool.d.ts.map +1 -1
- package/dist/charts/chart-types/box-plot/tool.js +25 -33
- package/dist/charts/chart-types/box-plot/tool.js.map +1 -1
- package/dist/charts/chart-types/box-plot/validation.d.ts +9 -0
- package/dist/charts/chart-types/box-plot/validation.d.ts.map +1 -0
- package/dist/charts/chart-types/box-plot/validation.js +32 -0
- package/dist/charts/chart-types/box-plot/validation.js.map +1 -0
- package/dist/charts/chart-types/column-types.d.ts +8 -0
- package/dist/charts/chart-types/column-types.d.ts.map +1 -0
- package/dist/charts/chart-types/column-types.js +2 -0
- package/dist/charts/chart-types/column-types.js.map +1 -0
- package/dist/charts/chart-types/count-plot/definition.d.ts.map +1 -1
- package/dist/charts/chart-types/count-plot/definition.js +1 -0
- package/dist/charts/chart-types/count-plot/definition.js.map +1 -1
- package/dist/charts/chart-types/count-plot/spec.d.ts.map +1 -1
- package/dist/charts/chart-types/count-plot/spec.js +1 -19
- package/dist/charts/chart-types/count-plot/spec.js.map +1 -1
- package/dist/charts/chart-types/count-plot/tool.d.ts +19 -24
- package/dist/charts/chart-types/count-plot/tool.d.ts.map +1 -1
- package/dist/charts/chart-types/count-plot/tool.js +25 -32
- package/dist/charts/chart-types/count-plot/tool.js.map +1 -1
- package/dist/charts/chart-types/count-plot/validation.d.ts +8 -0
- package/dist/charts/chart-types/count-plot/validation.d.ts.map +1 -0
- package/dist/charts/chart-types/count-plot/validation.js +20 -0
- package/dist/charts/chart-types/count-plot/validation.js.map +1 -0
- package/dist/charts/chart-types/createChartInstructions.d.ts +3 -0
- package/dist/charts/chart-types/createChartInstructions.d.ts.map +1 -0
- package/dist/charts/chart-types/createChartInstructions.js +12 -0
- package/dist/charts/chart-types/createChartInstructions.js.map +1 -0
- package/dist/charts/chart-types/createChartTools.d.ts +15 -9
- package/dist/charts/chart-types/createChartTools.d.ts.map +1 -1
- package/dist/charts/chart-types/createChartTools.js +16 -10
- package/dist/charts/chart-types/createChartTools.js.map +1 -1
- package/dist/charts/chart-types/custom-spec/definition.d.ts.map +1 -1
- package/dist/charts/chart-types/custom-spec/definition.js +1 -0
- package/dist/charts/chart-types/custom-spec/definition.js.map +1 -1
- package/dist/charts/chart-types/errors.d.ts +10 -0
- package/dist/charts/chart-types/errors.d.ts.map +1 -1
- package/dist/charts/chart-types/errors.js +18 -0
- package/dist/charts/chart-types/errors.js.map +1 -1
- package/dist/charts/chart-types/heatmap/definition.d.ts.map +1 -1
- package/dist/charts/chart-types/heatmap/definition.js +1 -0
- package/dist/charts/chart-types/heatmap/definition.js.map +1 -1
- package/dist/charts/chart-types/heatmap/spec.d.ts.map +1 -1
- package/dist/charts/chart-types/heatmap/spec.js +1 -33
- package/dist/charts/chart-types/heatmap/spec.js.map +1 -1
- package/dist/charts/chart-types/heatmap/tool.d.ts +20 -24
- package/dist/charts/chart-types/heatmap/tool.d.ts.map +1 -1
- package/dist/charts/chart-types/heatmap/tool.js +26 -36
- package/dist/charts/chart-types/heatmap/tool.js.map +1 -1
- package/dist/charts/chart-types/heatmap/validation.d.ts +9 -0
- package/dist/charts/chart-types/heatmap/validation.d.ts.map +1 -0
- package/dist/charts/chart-types/heatmap/validation.js +34 -0
- package/dist/charts/chart-types/heatmap/validation.js.map +1 -0
- package/dist/charts/chart-types/histogram/definition.d.ts.map +1 -1
- package/dist/charts/chart-types/histogram/definition.js +1 -0
- package/dist/charts/chart-types/histogram/definition.js.map +1 -1
- package/dist/charts/chart-types/histogram/spec.d.ts.map +1 -1
- package/dist/charts/chart-types/histogram/spec.js +1 -21
- package/dist/charts/chart-types/histogram/spec.js.map +1 -1
- package/dist/charts/chart-types/histogram/tool.d.ts +37 -24
- package/dist/charts/chart-types/histogram/tool.d.ts.map +1 -1
- package/dist/charts/chart-types/histogram/tool.js +38 -32
- package/dist/charts/chart-types/histogram/tool.js.map +1 -1
- package/dist/charts/chart-types/histogram/validation.d.ts +9 -0
- package/dist/charts/chart-types/histogram/validation.d.ts.map +1 -0
- package/dist/charts/chart-types/histogram/validation.js +22 -0
- package/dist/charts/chart-types/histogram/validation.js.map +1 -0
- package/dist/charts/chart-types/index.d.ts +1 -7
- package/dist/charts/chart-types/index.d.ts.map +1 -1
- package/dist/charts/chart-types/index.js +2 -8
- package/dist/charts/chart-types/index.js.map +1 -1
- package/dist/charts/chart-types/line-chart/definition.d.ts.map +1 -1
- package/dist/charts/chart-types/line-chart/definition.js +1 -0
- package/dist/charts/chart-types/line-chart/definition.js.map +1 -1
- package/dist/charts/chart-types/line-chart/spec.d.ts.map +1 -1
- package/dist/charts/chart-types/line-chart/spec.js +5 -46
- package/dist/charts/chart-types/line-chart/spec.js.map +1 -1
- package/dist/charts/chart-types/line-chart/tool.d.ts +26 -24
- package/dist/charts/chart-types/line-chart/tool.d.ts.map +1 -1
- package/dist/charts/chart-types/line-chart/tool.js +26 -38
- package/dist/charts/chart-types/line-chart/tool.js.map +1 -1
- package/dist/charts/chart-types/line-chart/validation.d.ts +16 -0
- package/dist/charts/chart-types/line-chart/validation.d.ts.map +1 -0
- package/dist/charts/chart-types/line-chart/validation.js +43 -0
- package/dist/charts/chart-types/line-chart/validation.js.map +1 -0
- package/dist/charts/chart-types/resolveChartTypes.d.ts +3 -0
- package/dist/charts/chart-types/resolveChartTypes.d.ts.map +1 -0
- package/dist/charts/chart-types/resolveChartTypes.js +8 -0
- package/dist/charts/chart-types/resolveChartTypes.js.map +1 -0
- package/dist/charts/chart-types/scatter-plot/definition.d.ts.map +1 -1
- package/dist/charts/chart-types/scatter-plot/definition.js +1 -0
- package/dist/charts/chart-types/scatter-plot/definition.js.map +1 -1
- package/dist/charts/chart-types/scatter-plot/spec.d.ts.map +1 -1
- package/dist/charts/chart-types/scatter-plot/spec.js +1 -45
- package/dist/charts/chart-types/scatter-plot/spec.js.map +1 -1
- package/dist/charts/chart-types/scatter-plot/tool.d.ts +21 -24
- package/dist/charts/chart-types/scatter-plot/tool.d.ts.map +1 -1
- package/dist/charts/chart-types/scatter-plot/tool.js +28 -41
- package/dist/charts/chart-types/scatter-plot/tool.js.map +1 -1
- package/dist/charts/chart-types/scatter-plot/validation.d.ts +13 -0
- package/dist/charts/chart-types/scatter-plot/validation.d.ts.map +1 -0
- package/dist/charts/chart-types/scatter-plot/validation.js +52 -0
- package/dist/charts/chart-types/scatter-plot/validation.js.map +1 -0
- package/dist/charts/chart-types/tool-types.d.ts +43 -0
- package/dist/charts/chart-types/tool-types.d.ts.map +1 -0
- package/dist/charts/chart-types/tool-types.js +2 -0
- package/dist/charts/chart-types/tool-types.js.map +1 -0
- package/dist/charts/chart-types/utils.d.ts +3 -0
- package/dist/charts/chart-types/utils.d.ts.map +1 -0
- package/dist/charts/chart-types/utils.js +4 -0
- package/dist/charts/chart-types/utils.js.map +1 -0
- package/dist/charts/dashboard/MosaicDashboardChartRenderer.d.ts.map +1 -1
- package/dist/charts/dashboard/MosaicDashboardChartRenderer.js +5 -3
- package/dist/charts/dashboard/MosaicDashboardChartRenderer.js.map +1 -1
- package/dist/charts/useChartDataPolicy.js +2 -2
- package/dist/charts/useChartDataPolicy.js.map +1 -1
- package/dist/components/AggregationSelector.d.ts.map +1 -1
- package/dist/components/AggregationSelector.js +1 -1
- package/dist/components/AggregationSelector.js.map +1 -1
- package/dist/components/ColorSelector.d.ts.map +1 -1
- package/dist/components/ColorSelector.js +1 -2
- package/dist/components/ColorSelector.js.map +1 -1
- package/dist/components/FieldSelectorInput.d.ts.map +1 -1
- package/dist/components/FieldSelectorInput.js +3 -3
- package/dist/components/FieldSelectorInput.js.map +1 -1
- package/dist/components/TemporalGranularitySelector.d.ts.map +1 -1
- package/dist/components/TemporalGranularitySelector.js +1 -1
- package/dist/components/TemporalGranularitySelector.js.map +1 -1
- package/dist/dashboard/MosaicDashboardCommands.d.ts +19 -0
- package/dist/dashboard/MosaicDashboardCommands.d.ts.map +1 -0
- package/dist/dashboard/MosaicDashboardCommands.js +226 -0
- package/dist/dashboard/MosaicDashboardCommands.js.map +1 -0
- package/dist/dashboard/dashboard-types.d.ts.map +1 -1
- package/dist/dashboard/dashboard-types.js.map +1 -1
- package/dist/dashboard/panel/MosaicDashboardPanel.d.ts.map +1 -1
- package/dist/dashboard/panel/MosaicDashboardPanel.js +1 -1
- package/dist/dashboard/panel/MosaicDashboardPanel.js.map +1 -1
- package/dist/dashboard/panel/MosaicDashboardPanelLayout.d.ts.map +1 -1
- package/dist/dashboard/panel/MosaicDashboardPanelLayout.js +3 -3
- package/dist/dashboard/panel/MosaicDashboardPanelLayout.js.map +1 -1
- package/dist/dashboard/panel/MosaicDashboardPanels.d.ts.map +1 -1
- package/dist/dashboard/panel/MosaicDashboardPanels.js +4 -2
- package/dist/dashboard/panel/MosaicDashboardPanels.js.map +1 -1
- package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.d.ts.map +1 -1
- package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.js +4 -4
- package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.js.map +1 -1
- package/dist/dashboard/toolbar/MosaicDashboardToolbar.d.ts.map +1 -1
- package/dist/dashboard/toolbar/MosaicDashboardToolbar.js +5 -3
- package/dist/dashboard/toolbar/MosaicDashboardToolbar.js.map +1 -1
- package/dist/dashboard/useSelectedOrFirstTable.d.ts +1 -1
- package/dist/dashboard/useSelectedOrFirstTable.d.ts.map +1 -1
- package/dist/dashboard/useSelectedOrFirstTable.js +10 -8
- package/dist/dashboard/useSelectedOrFirstTable.js.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerCategoryClient.d.ts +3 -2
- package/dist/data-table-explorer/DataTableExplorerCategoryClient.d.ts.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerCategoryClient.js +3 -3
- package/dist/data-table-explorer/DataTableExplorerCategoryClient.js.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerCountClient.d.ts +3 -1
- package/dist/data-table-explorer/DataTableExplorerCountClient.d.ts.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerCountClient.js +3 -3
- package/dist/data-table-explorer/DataTableExplorerCountClient.js.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerHistogramClient.d.ts +3 -2
- package/dist/data-table-explorer/DataTableExplorerHistogramClient.d.ts.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerHistogramClient.js +4 -4
- package/dist/data-table-explorer/DataTableExplorerHistogramClient.js.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerPageClient.d.ts +3 -1
- package/dist/data-table-explorer/DataTableExplorerPageClient.d.ts.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerPageClient.js +3 -1
- package/dist/data-table-explorer/DataTableExplorerPageClient.js.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerUnsupportedSummaryClient.d.ts +3 -2
- package/dist/data-table-explorer/DataTableExplorerUnsupportedSummaryClient.d.ts.map +1 -1
- package/dist/data-table-explorer/DataTableExplorerUnsupportedSummaryClient.js +3 -3
- package/dist/data-table-explorer/DataTableExplorerUnsupportedSummaryClient.js.map +1 -1
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.d.ts.map +1 -1
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.js +7 -4
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.js.map +1 -1
- package/dist/data-table-explorer/dataTableExplorerController.d.ts +58 -2
- package/dist/data-table-explorer/dataTableExplorerController.d.ts.map +1 -1
- package/dist/data-table-explorer/dataTableExplorerController.js +68 -8
- package/dist/data-table-explorer/dataTableExplorerController.js.map +1 -1
- package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.d.ts +23 -1
- package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.d.ts.map +1 -1
- package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.js +46 -13
- package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.js.map +1 -1
- package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.d.ts +17 -3
- package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.d.ts.map +1 -1
- package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.js +9 -6
- package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.js.map +1 -1
- package/dist/data-table-explorer/types.d.ts +10 -0
- package/dist/data-table-explorer/types.d.ts.map +1 -1
- package/dist/data-table-explorer/types.js.map +1 -1
- package/dist/data-table-explorer/useDataTableExplorer.d.ts.map +1 -1
- package/dist/data-table-explorer/useDataTableExplorer.js +10 -6
- package/dist/data-table-explorer/useDataTableExplorer.js.map +1 -1
- package/dist/data-table-explorer/utils.d.ts +64 -6
- package/dist/data-table-explorer/utils.d.ts.map +1 -1
- package/dist/data-table-explorer/utils.js +58 -0
- package/dist/data-table-explorer/utils.js.map +1 -1
- package/dist/data-table-explorer/worksheet/DataTableBlockRenderer.d.ts.map +1 -1
- package/dist/data-table-explorer/worksheet/DataTableBlockRenderer.js +2 -2
- package/dist/data-table-explorer/worksheet/DataTableBlockRenderer.js.map +1 -1
- package/dist/index.d.ts +49 -29
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +81 -25
- package/dist/index.js.map +1 -1
- package/dist/mosaicTableReference.d.ts +59 -0
- package/dist/mosaicTableReference.d.ts.map +1 -0
- package/dist/mosaicTableReference.js +68 -0
- package/dist/mosaicTableReference.js.map +1 -0
- package/dist/useVgPlotChartRender.d.ts.map +1 -1
- package/dist/useVgPlotChartRender.js +26 -1
- package/dist/useVgPlotChartRender.js.map +1 -1
- package/dist/utils/table-lookup.d.ts +7 -0
- package/dist/utils/table-lookup.d.ts.map +1 -0
- package/dist/utils/table-lookup.js +10 -0
- package/dist/utils/table-lookup.js.map +1 -0
- package/package.json +14 -14
- package/dist/ai/ai.d.ts +0 -108
- package/dist/ai/ai.d.ts.map +0 -1
- package/dist/ai/ai.js +0 -461
- package/dist/ai/ai.js.map +0 -1
- package/dist/ai/data-table-explorer-tool.d.ts +0 -40
- package/dist/ai/data-table-explorer-tool.d.ts.map +0 -1
- package/dist/ai/data-table-explorer-tool.js +0 -75
- package/dist/ai/data-table-explorer-tool.js.map +0 -1
- package/dist/ai/list-panels-tool.d.ts +0 -35
- package/dist/ai/list-panels-tool.d.ts.map +0 -1
- package/dist/ai/list-panels-tool.js +0 -66
- package/dist/ai/list-panels-tool.js.map +0 -1
- package/dist/ai/remove-panel-tool.d.ts +0 -31
- package/dist/ai/remove-panel-tool.d.ts.map +0 -1
- package/dist/ai/remove-panel-tool.js +0 -55
- package/dist/ai/remove-panel-tool.js.map +0 -1
- package/dist/ai/tool-validation.d.ts +0 -3
- package/dist/ai/tool-validation.d.ts.map +0 -1
- package/dist/ai/tool-validation.js +0 -11
- package/dist/ai/tool-validation.js.map +0 -1
- package/dist/components/Combobox.d.ts +0 -45
- package/dist/components/Combobox.d.ts.map +0 -1
- package/dist/components/Combobox.js +0 -58
- package/dist/components/Combobox.js.map +0 -1
- package/dist/components/useCombobox.d.ts +0 -23
- package/dist/components/useCombobox.d.ts.map +0 -1
- package/dist/components/useCombobox.js +0 -26
- package/dist/components/useCombobox.js.map +0 -1
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import
|
|
3
|
-
export declare const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
createArtifactIfMissing: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
2
|
+
import { ChartToolParams, ChartToolOutput } from '../tool-types';
|
|
3
|
+
export declare const LineChartToolInput: z.ZodObject<{
|
|
4
|
+
tableName: z.ZodString;
|
|
5
|
+
title: z.ZodOptional<z.ZodString>;
|
|
7
6
|
panelId: z.ZodOptional<z.ZodString>;
|
|
8
7
|
reasoning: z.ZodString;
|
|
9
8
|
settings: z.ZodObject<{
|
|
@@ -31,9 +30,9 @@ export declare const LineChartToolParameters: z.ZodObject<{
|
|
|
31
30
|
showLegend: z.ZodNonOptional<z.ZodDefault<z.ZodOptional<z.ZodBoolean>>>;
|
|
32
31
|
}, z.core.$strip>;
|
|
33
32
|
}, z.core.$strip>;
|
|
34
|
-
export type
|
|
35
|
-
export declare function createLineChartAiTool(
|
|
36
|
-
|
|
33
|
+
export type LineChartToolInput = z.infer<typeof LineChartToolInput>;
|
|
34
|
+
export declare function createLineChartAiTool({ databaseAdapter, addChart, maxDataPoints, }: ChartToolParams): import("ai").Tool<{
|
|
35
|
+
tableName: string;
|
|
37
36
|
reasoning: string;
|
|
38
37
|
settings: {
|
|
39
38
|
x: string;
|
|
@@ -45,22 +44,25 @@ export declare function createLineChartAiTool(deps: DashboardToolDeps): import("
|
|
|
45
44
|
}[];
|
|
46
45
|
showLegend: boolean;
|
|
47
46
|
};
|
|
48
|
-
|
|
49
|
-
tableName?: string | undefined;
|
|
47
|
+
title?: string | undefined;
|
|
50
48
|
panelId?: string | undefined;
|
|
51
|
-
}, {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
details?: undefined;
|
|
63
|
-
data?: undefined;
|
|
49
|
+
}, ChartToolOutput<{
|
|
50
|
+
chartType: "line-chart";
|
|
51
|
+
settings: {
|
|
52
|
+
showLegend: boolean;
|
|
53
|
+
x?: string | undefined;
|
|
54
|
+
xInterval?: "second" | "minute" | "hour" | "day" | "week" | "month" | "quarter" | "year" | undefined;
|
|
55
|
+
yFields?: {
|
|
56
|
+
field: string;
|
|
57
|
+
aggregate: "sum" | "max" | "min" | "avg";
|
|
58
|
+
color?: string | undefined;
|
|
59
|
+
}[] | undefined;
|
|
64
60
|
};
|
|
65
|
-
|
|
61
|
+
settingsOpen?: boolean | undefined;
|
|
62
|
+
dataPolicy?: {
|
|
63
|
+
disabled?: boolean | undefined;
|
|
64
|
+
maxRows?: number | undefined;
|
|
65
|
+
reason?: string | undefined;
|
|
66
|
+
} | undefined;
|
|
67
|
+
}>>;
|
|
66
68
|
//# sourceMappingURL=tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../../src/charts/chart-types/line-chart/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../../src/charts/chart-types/line-chart/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAStB,OAAO,EAAC,eAAe,EAAE,eAAe,EAAC,MAAM,eAAe,CAAC;AAO/D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAE7B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,wBAAgB,qBAAqB,CAAC,EACpC,eAAe,EACf,QAAQ,EACR,aAAa,GACd,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoDjB"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { tool } from 'ai';
|
|
2
2
|
import { LineChartSettings } from './schema';
|
|
3
3
|
import { AggregateFunction, TemporalInterval } from '../../../schemas';
|
|
4
|
-
import {
|
|
5
|
-
import { validateColumnExists } from '../../../ai/tool-validation';
|
|
4
|
+
import { BaseChartToolInput } from '../../../ai/tool-schemas';
|
|
6
5
|
import { NUMERIC_COLUMN_TYPES, QUANTITATIVE_COLUMN_TYPES, TEMPORAL_COLUMN_TYPES, } from '../../../column-types-utils';
|
|
7
|
-
import {
|
|
6
|
+
import { validateLineChartSettings } from './validation';
|
|
7
|
+
import { ensureTable } from '../../../ai/tool-helpers';
|
|
8
8
|
const AGGREGATE_FUNCTIONS = AggregateFunction.options;
|
|
9
9
|
const TEMPORAL_INTERVALS = TemporalInterval.options;
|
|
10
|
-
export const
|
|
10
|
+
export const LineChartToolInput = BaseChartToolInput.extend({
|
|
11
11
|
settings: LineChartSettings.required(),
|
|
12
12
|
});
|
|
13
|
-
export function createLineChartAiTool(
|
|
13
|
+
export function createLineChartAiTool({ databaseAdapter, addChart, maxDataPoints, }) {
|
|
14
14
|
return tool({
|
|
15
15
|
description: `Line chart: shows trends and changes over time or ordered continuous variable. Connects data points to show progression.
|
|
16
16
|
|
|
@@ -24,49 +24,37 @@ Required:
|
|
|
24
24
|
Optional: xInterval for temporal grouping (${TEMPORAL_INTERVALS.join(', ')}) when x is temporal (${TEMPORAL_COLUMN_TYPES.join(', ')}).
|
|
25
25
|
Multiple yFields create multi-line chart for comparing metrics.
|
|
26
26
|
|
|
27
|
-
NOTE: Line charts with aggregation (xInterval or aggregate functions) handle large datasets well. Without aggregation, line charts plot individual points and should not be used for tables with more than ${
|
|
28
|
-
|
|
29
|
-
To UPDATE an existing line chart: provide the panelId parameter. Otherwise creates new panel.
|
|
27
|
+
NOTE: Line charts with aggregation (xInterval or aggregate functions) handle large datasets well. Without aggregation, line charts plot individual points and should not be used for tables with more than ${maxDataPoints.toLocaleString()} rows - use aggregated visualizations instead.
|
|
30
28
|
|
|
31
29
|
Do NOT use for: single point distributions (use histogram), categorical counts (use count-plot), two-variable correlations (use scatter-plot).`,
|
|
32
|
-
inputSchema:
|
|
33
|
-
execute: async (
|
|
30
|
+
inputSchema: LineChartToolInput,
|
|
31
|
+
execute: async ({ tableName, title, settings, panelId }) => {
|
|
34
32
|
try {
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
33
|
+
const dataTable = ensureTable(databaseAdapter, tableName);
|
|
34
|
+
validateLineChartSettings({
|
|
35
|
+
dataTable,
|
|
36
|
+
settings,
|
|
37
|
+
});
|
|
38
|
+
const chartConfig = {
|
|
39
|
+
chartType: 'line-chart',
|
|
40
|
+
settings,
|
|
41
|
+
};
|
|
42
|
+
await addChart({
|
|
45
43
|
tableName,
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
config: {
|
|
50
|
-
chartType: 'line-chart',
|
|
51
|
-
settings: params.settings,
|
|
52
|
-
},
|
|
44
|
+
panelId,
|
|
45
|
+
title,
|
|
46
|
+
config: chartConfig,
|
|
53
47
|
});
|
|
54
48
|
return {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
? `Updated line chart "${result.title}".`
|
|
59
|
-
: `Created line chart "${result.title}".`,
|
|
60
|
-
data: result,
|
|
61
|
-
},
|
|
49
|
+
success: true,
|
|
50
|
+
details: `Generated line chart configuration.`,
|
|
51
|
+
data: chartConfig,
|
|
62
52
|
};
|
|
63
53
|
}
|
|
64
54
|
catch (error) {
|
|
65
55
|
return {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
errorMessage: error instanceof Error ? error.message : String(error),
|
|
69
|
-
},
|
|
56
|
+
success: false,
|
|
57
|
+
errorMessage: error instanceof Error ? error.message : String(error),
|
|
70
58
|
};
|
|
71
59
|
}
|
|
72
60
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../../src/charts/chart-types/line-chart/tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAExB,OAAO,
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../../src/charts/chart-types/line-chart/tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,IAAI,CAAC;AAExB,OAAO,EAAkB,iBAAiB,EAAC,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAC,iBAAiB,EAAE,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAC,yBAAyB,EAAC,MAAM,cAAc,CAAC;AACvD,OAAO,EAAC,WAAW,EAAC,MAAM,0BAA0B,CAAC;AAErD,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,OAAO,CAAC;AACtD,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAEpD,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAC1D,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAIH,MAAM,UAAU,qBAAqB,CAAC,EACpC,eAAe,EACf,QAAQ,EACR,aAAa,GACG;IAChB,OAAO,IAAI,CAAuD;QAChE,WAAW,EAAE;;;;;;4BAMW,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;+CACjB,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;;6CAEhF,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;;;6MAG0E,aAAa,CAAC,cAAc,EAAE;;+IAE5F;QAC3I,WAAW,EAAE,kBAAkB;QAC/B,OAAO,EAAE,KAAK,EAAE,EAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAC,EAAE,EAAE;YACvD,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,WAAW,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;gBAE1D,yBAAyB,CAAC;oBACxB,SAAS;oBACT,QAAQ;iBACT,CAAC,CAAC;gBAEH,MAAM,WAAW,GAAoB;oBACnC,SAAS,EAAE,YAAqB;oBAChC,QAAQ;iBACT,CAAC;gBAEF,MAAM,QAAQ,CAAC;oBACb,SAAS;oBACT,OAAO;oBACP,KAAK;oBACL,MAAM,EAAE,WAAW;iBACpB,CAAC,CAAC;gBAEH,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,qCAAqC;oBAC9C,IAAI,EAAE,WAAW;iBAClB,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,YAAY,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBACrE,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import {tool} from 'ai';\nimport {z} from 'zod';\nimport {LineChartConfig, LineChartSettings} from './schema';\nimport {AggregateFunction, TemporalInterval} from '../../../schemas';\nimport {BaseChartToolInput} from '../../../ai/tool-schemas';\nimport {\n NUMERIC_COLUMN_TYPES,\n QUANTITATIVE_COLUMN_TYPES,\n TEMPORAL_COLUMN_TYPES,\n} from '../../../column-types-utils';\nimport {ChartToolParams, ChartToolOutput} from '../tool-types';\nimport {validateLineChartSettings} from './validation';\nimport {ensureTable} from '../../../ai/tool-helpers';\n\nconst AGGREGATE_FUNCTIONS = AggregateFunction.options;\nconst TEMPORAL_INTERVALS = TemporalInterval.options;\n\nexport const LineChartToolInput = BaseChartToolInput.extend({\n settings: LineChartSettings.required(),\n});\n\nexport type LineChartToolInput = z.infer<typeof LineChartToolInput>;\n\nexport function createLineChartAiTool({\n databaseAdapter,\n addChart,\n maxDataPoints,\n}: ChartToolParams) {\n return tool<LineChartToolInput, ChartToolOutput<LineChartConfig>>({\n description: `Line chart: shows trends and changes over time or ordered continuous variable. Connects data points to show progression.\n\nUse when: user asks about \"trend\", \"over time\", \"changes in\", \"time series\", \"progression of\", \"track X over Y\".\nExample queries: \"population growth over time\", \"temperature trend by month\", \"show land development over years\", \"elevation changes along route\", \"average precipitation by season\".\n\nRequired:\n- x: quantitative column (${QUANTITATIVE_COLUMN_TYPES.join(', ')})\n- yFields: array of {field: string (numeric: ${NUMERIC_COLUMN_TYPES.join(', ')}), aggregate?: ${AGGREGATE_FUNCTIONS.join('|')}}\n\nOptional: xInterval for temporal grouping (${TEMPORAL_INTERVALS.join(', ')}) when x is temporal (${TEMPORAL_COLUMN_TYPES.join(', ')}).\nMultiple yFields create multi-line chart for comparing metrics.\n\nNOTE: Line charts with aggregation (xInterval or aggregate functions) handle large datasets well. Without aggregation, line charts plot individual points and should not be used for tables with more than ${maxDataPoints.toLocaleString()} rows - use aggregated visualizations instead.\n\nDo NOT use for: single point distributions (use histogram), categorical counts (use count-plot), two-variable correlations (use scatter-plot).`,\n inputSchema: LineChartToolInput,\n execute: async ({tableName, title, settings, panelId}) => {\n try {\n const dataTable = ensureTable(databaseAdapter, tableName);\n\n validateLineChartSettings({\n dataTable,\n settings,\n });\n\n const chartConfig: LineChartConfig = {\n chartType: 'line-chart' as const,\n settings,\n };\n\n await addChart({\n tableName,\n panelId,\n title,\n config: chartConfig,\n });\n\n return {\n success: true,\n details: `Generated line chart configuration.`,\n data: chartConfig,\n };\n } catch (error) {\n return {\n success: false,\n errorMessage: error instanceof Error ? error.message : String(error),\n };\n }\n },\n });\n}\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { LineChartSettings } from './schema';
|
|
2
|
+
import { ValidateSpecOptions } from '../base-types';
|
|
3
|
+
import { TableColumn } from '@sqlrooms/duckdb';
|
|
4
|
+
import { AggregateFunction, TemporalInterval } from '../../../schemas';
|
|
5
|
+
export type ValidatedLineChartSettings = {
|
|
6
|
+
xColumn: TableColumn;
|
|
7
|
+
yColumns: {
|
|
8
|
+
field: string;
|
|
9
|
+
column: TableColumn;
|
|
10
|
+
aggregate: AggregateFunction;
|
|
11
|
+
color: string;
|
|
12
|
+
}[];
|
|
13
|
+
xInterval?: TemporalInterval;
|
|
14
|
+
};
|
|
15
|
+
export declare function validateLineChartSettings({ dataTable, settings: { x, yFields, xInterval }, }: ValidateSpecOptions<LineChartSettings>): ValidatedLineChartSettings;
|
|
16
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../src/charts/chart-types/line-chart/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAC,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAOlD,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAC,iBAAiB,EAAE,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAGrE,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,WAAW,CAAC;QACpB,SAAS,EAAE,iBAAiB,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IACJ,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,EACxC,SAAS,EACT,QAAQ,EAAE,EAAC,CAAC,EAAE,OAAY,EAAE,SAAS,EAAC,GACvC,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,GAAG,0BAA0B,CAgDrE"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { InvalidColumnTypeError, MissingColumnsError, RequiredFieldsError, } from '../errors';
|
|
2
|
+
import { isNumericType, isQuantitativeType } from '../../../column-types-utils';
|
|
3
|
+
import { DEFAULT_CHART_FALLBACK_COLOR } from '../../../constants/chart-colors';
|
|
4
|
+
export function validateLineChartSettings({ dataTable, settings: { x, yFields = [], xInterval }, }) {
|
|
5
|
+
// Basic validation for required fields
|
|
6
|
+
if (!x || yFields.length === 0) {
|
|
7
|
+
throw new RequiredFieldsError([
|
|
8
|
+
...(x ? [] : ['X-axis']),
|
|
9
|
+
...(yFields.length > 0 ? [] : ['Y-axis']),
|
|
10
|
+
]);
|
|
11
|
+
}
|
|
12
|
+
// Validate X and Y field existence
|
|
13
|
+
const xColumn = dataTable.columns.find((col) => col.name === x);
|
|
14
|
+
const yColumns = yFields.map((y) => ({
|
|
15
|
+
field: y.field,
|
|
16
|
+
column: dataTable.columns.find((col) => col.name === y.field),
|
|
17
|
+
aggregate: y.aggregate ?? 'sum',
|
|
18
|
+
color: y.color ?? DEFAULT_CHART_FALLBACK_COLOR,
|
|
19
|
+
}));
|
|
20
|
+
const missingYColumns = yColumns.filter((y) => !y.column);
|
|
21
|
+
if (!xColumn || missingYColumns.length > 0) {
|
|
22
|
+
throw new MissingColumnsError([
|
|
23
|
+
...(xColumn ? [] : ['X-axis']),
|
|
24
|
+
...missingYColumns.map((y) => y.field),
|
|
25
|
+
]);
|
|
26
|
+
}
|
|
27
|
+
// Validate X and Y field types
|
|
28
|
+
if (!isQuantitativeType(xColumn.type)) {
|
|
29
|
+
throw new InvalidColumnTypeError(xColumn.name, 'quantitative');
|
|
30
|
+
}
|
|
31
|
+
const invalidYFields = yColumns.filter((y) => {
|
|
32
|
+
return y.column && !isNumericType(y.column.type);
|
|
33
|
+
});
|
|
34
|
+
if (invalidYFields.length > 0) {
|
|
35
|
+
throw new InvalidColumnTypeError(invalidYFields.map(({ field }) => field), 'numeric');
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
xColumn,
|
|
39
|
+
yColumns,
|
|
40
|
+
xInterval,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/charts/chart-types/line-chart/validation.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAC,aAAa,EAAE,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AAG9E,OAAO,EAAC,4BAA4B,EAAC,MAAM,iCAAiC,CAAC;AAa7E,MAAM,UAAU,yBAAyB,CAAC,EACxC,SAAS,EACT,QAAQ,EAAE,EAAC,CAAC,EAAE,OAAO,GAAG,EAAE,EAAE,SAAS,EAAC,GACC;IACvC,uCAAuC;IACvC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,mBAAmB,CAAC;YAC5B,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACxB,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,mCAAmC;IACnC,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnC,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC;QAC7D,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,KAAK;QAC/B,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,4BAA4B;KAC/C,CAAC,CAAC,CAAC;IAEJ,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAE1D,IAAI,CAAC,OAAO,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,mBAAmB,CAAC;YAC5B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC9B,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;SACvC,CAAC,CAAC;IACL,CAAC;IAED,+BAA+B;IAC/B,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,sBAAsB,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3C,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,sBAAsB,CAC9B,cAAc,CAAC,GAAG,CAAC,CAAC,EAAC,KAAK,EAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EACtC,SAAS,CACV,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO;QACP,QAAQ;QACR,SAAS;KACoB,CAAC;AAClC,CAAC","sourcesContent":["import {LineChartSettings} from './schema';\nimport {ValidateSpecOptions} from '../base-types';\nimport {\n InvalidColumnTypeError,\n MissingColumnsError,\n RequiredFieldsError,\n} from '../errors';\nimport {isNumericType, isQuantitativeType} from '../../../column-types-utils';\nimport {TableColumn} from '@sqlrooms/duckdb';\nimport {AggregateFunction, TemporalInterval} from '../../../schemas';\nimport {DEFAULT_CHART_FALLBACK_COLOR} from '../../../constants/chart-colors';\n\nexport type ValidatedLineChartSettings = {\n xColumn: TableColumn;\n yColumns: {\n field: string;\n column: TableColumn;\n aggregate: AggregateFunction;\n color: string;\n }[];\n xInterval?: TemporalInterval;\n};\n\nexport function validateLineChartSettings({\n dataTable,\n settings: {x, yFields = [], xInterval},\n}: ValidateSpecOptions<LineChartSettings>): ValidatedLineChartSettings {\n // Basic validation for required fields\n if (!x || yFields.length === 0) {\n throw new RequiredFieldsError([\n ...(x ? [] : ['X-axis']),\n ...(yFields.length > 0 ? [] : ['Y-axis']),\n ]);\n }\n\n // Validate X and Y field existence\n const xColumn = dataTable.columns.find((col) => col.name === x);\n const yColumns = yFields.map((y) => ({\n field: y.field,\n column: dataTable.columns.find((col) => col.name === y.field),\n aggregate: y.aggregate ?? 'sum',\n color: y.color ?? DEFAULT_CHART_FALLBACK_COLOR,\n }));\n\n const missingYColumns = yColumns.filter((y) => !y.column);\n\n if (!xColumn || missingYColumns.length > 0) {\n throw new MissingColumnsError([\n ...(xColumn ? [] : ['X-axis']),\n ...missingYColumns.map((y) => y.field),\n ]);\n }\n\n // Validate X and Y field types\n if (!isQuantitativeType(xColumn.type)) {\n throw new InvalidColumnTypeError(xColumn.name, 'quantitative');\n }\n\n const invalidYFields = yColumns.filter((y) => {\n return y.column && !isNumericType(y.column.type);\n });\n\n if (invalidYFields.length > 0) {\n throw new InvalidColumnTypeError(\n invalidYFields.map(({field}) => field),\n 'numeric',\n );\n }\n\n return {\n xColumn,\n yColumns,\n xInterval,\n } as ValidatedLineChartSettings;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveChartTypes.d.ts","sourceRoot":"","sources":["../../../src/charts/chart-types/resolveChartTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,cAAc,CAAC;AAGjD,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,mBAAmB,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,GACjD,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAM5B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createDefaultChartTypes } from './createDefaultChartTypes';
|
|
2
|
+
export function resolveChartTypes(chartTypes) {
|
|
3
|
+
if (chartTypes === undefined) {
|
|
4
|
+
return createDefaultChartTypes({ includeCustomSpec: false });
|
|
5
|
+
}
|
|
6
|
+
return chartTypes;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=resolveChartTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveChartTypes.js","sourceRoot":"","sources":["../../../src/charts/chart-types/resolveChartTypes.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAElE,MAAM,UAAU,iBAAiB,CAC/B,UAAkD;IAElD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,uBAAuB,CAAC,EAAC,iBAAiB,EAAE,KAAK,EAAC,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC","sourcesContent":["import {ChartTypeDefinition} from './base-types';\nimport {createDefaultChartTypes} from './createDefaultChartTypes';\n\nexport function resolveChartTypes(\n chartTypes: ChartTypeDefinition<any>[] | undefined,\n): ChartTypeDefinition<any>[] {\n if (chartTypes === undefined) {\n return createDefaultChartTypes({includeCustomSpec: false});\n }\n\n return chartTypes;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../../../src/charts/chart-types/scatter-plot/definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,sBAAsB,EAA2B,MAAM,UAAU,CAAC;AAU1E,eAAO,MAAM,oBAAoB,EAAE,uBAAuB,CAAC,sBAAsB,
|
|
1
|
+
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../../../src/charts/chart-types/scatter-plot/definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,sBAAsB,EAA2B,MAAM,UAAU,CAAC;AAU1E,eAAO,MAAM,oBAAoB,EAAE,uBAAuB,CAAC,sBAAsB,CAiB9E,CAAC"}
|
|
@@ -10,6 +10,7 @@ export const scatterPlotChartType = {
|
|
|
10
10
|
id: 'scatter-plot',
|
|
11
11
|
label: 'Scatter Plot',
|
|
12
12
|
description: DESCRIPTION,
|
|
13
|
+
aiDescription: `${DESCRIPTION} - relationship between two numeric columns (avoid for >10k rows, use heatmap instead)`,
|
|
13
14
|
icon: Workflow,
|
|
14
15
|
schema: ScatterPlotChartSettings,
|
|
15
16
|
settingsComponent: ScatterPlotSettingsComponent,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../../../../src/charts/chart-types/scatter-plot/definition.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,wBAAwB,EAAC,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAC,oBAAoB,EAAC,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAC,4BAA4B,EAAC,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAC,uBAAuB,EAAC,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAC,QAAQ,EAAC,MAAM,cAAc,CAAC;AACtC,OAAO,EAAC,qBAAqB,EAAC,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAC,6BAA6B,EAAC,MAAM,wBAAwB,CAAC;AAErE,MAAM,WAAW,GAAG,6BAA6B,CAAC;AAElD,MAAM,CAAC,MAAM,oBAAoB,GAC/B;IACE,EAAE,EAAE,cAAc;IAClB,KAAK,EAAE,cAAc;IACrB,WAAW,EAAE,WAAW;IACxB,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,wBAAwB;IAChC,iBAAiB,EAAE,4BAA4B;IAC/C,UAAU,EAAE,oBAAoB,CAAC,WAAW,CAAC;IAC7C,UAAU,EAAE,uBAAuB;IACnC,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC;QACpB,OAAO,EAAE,6BAA6B;QACtC,MAAM,EACJ,yGAAyG;KAC5G,CAAC;IACF,UAAU,EAAE,qBAAqB;CAClC,CAAC","sourcesContent":["import type {SpecChartTypeDefinition} from '../base-types';\nimport {ScatterPlotChartConfig, ScatterPlotChartSettings} from './schema';\nimport {titleFromDescription} from '../../../chart-builders/chartTypeUtils';\nimport {ScatterPlotSettingsComponent} from './ScatterPlotSettings';\nimport {createScatterPlotAiTool} from './tool';\nimport {Workflow} from 'lucide-react';\nimport {createScatterPlotSpec} from './spec';\nimport {DEFAULT_CHART_MAX_DATA_POINTS} from '../../../chart-runtime';\n\nconst DESCRIPTION = 'Create a scatter plot chart';\n\nexport const scatterPlotChartType: SpecChartTypeDefinition<ScatterPlotChartConfig> =\n {\n id: 'scatter-plot',\n label: 'Scatter Plot',\n description: DESCRIPTION,\n icon: Workflow,\n schema: ScatterPlotChartSettings,\n settingsComponent: ScatterPlotSettingsComponent,\n buildTitle: titleFromDescription(DESCRIPTION),\n createTool: createScatterPlotAiTool,\n getDataPolicy: () => ({\n maxRows: DEFAULT_CHART_MAX_DATA_POINTS,\n reason:\n 'Scatter charts render one point per row. Use a heatmap or another aggregated chart for larger datasets.',\n }),\n createSpec: createScatterPlotSpec,\n };\n"]}
|
|
1
|
+
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../../../../src/charts/chart-types/scatter-plot/definition.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,wBAAwB,EAAC,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAC,oBAAoB,EAAC,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAC,4BAA4B,EAAC,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAC,uBAAuB,EAAC,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAC,QAAQ,EAAC,MAAM,cAAc,CAAC;AACtC,OAAO,EAAC,qBAAqB,EAAC,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAC,6BAA6B,EAAC,MAAM,wBAAwB,CAAC;AAErE,MAAM,WAAW,GAAG,6BAA6B,CAAC;AAElD,MAAM,CAAC,MAAM,oBAAoB,GAC/B;IACE,EAAE,EAAE,cAAc;IAClB,KAAK,EAAE,cAAc;IACrB,WAAW,EAAE,WAAW;IACxB,aAAa,EAAE,GAAG,WAAW,wFAAwF;IACrH,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,wBAAwB;IAChC,iBAAiB,EAAE,4BAA4B;IAC/C,UAAU,EAAE,oBAAoB,CAAC,WAAW,CAAC;IAC7C,UAAU,EAAE,uBAAuB;IACnC,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC;QACpB,OAAO,EAAE,6BAA6B;QACtC,MAAM,EACJ,yGAAyG;KAC5G,CAAC;IACF,UAAU,EAAE,qBAAqB;CAClC,CAAC","sourcesContent":["import type {SpecChartTypeDefinition} from '../base-types';\nimport {ScatterPlotChartConfig, ScatterPlotChartSettings} from './schema';\nimport {titleFromDescription} from '../../../chart-builders/chartTypeUtils';\nimport {ScatterPlotSettingsComponent} from './ScatterPlotSettings';\nimport {createScatterPlotAiTool} from './tool';\nimport {Workflow} from 'lucide-react';\nimport {createScatterPlotSpec} from './spec';\nimport {DEFAULT_CHART_MAX_DATA_POINTS} from '../../../chart-runtime';\n\nconst DESCRIPTION = 'Create a scatter plot chart';\n\nexport const scatterPlotChartType: SpecChartTypeDefinition<ScatterPlotChartConfig> =\n {\n id: 'scatter-plot',\n label: 'Scatter Plot',\n description: DESCRIPTION,\n aiDescription: `${DESCRIPTION} - relationship between two numeric columns (avoid for >10k rows, use heatmap instead)`,\n icon: Workflow,\n schema: ScatterPlotChartSettings,\n settingsComponent: ScatterPlotSettingsComponent,\n buildTitle: titleFromDescription(DESCRIPTION),\n createTool: createScatterPlotAiTool,\n getDataPolicy: () => ({\n maxRows: DEFAULT_CHART_MAX_DATA_POINTS,\n reason:\n 'Scatter charts render one point per row. Use a heatmap or another aggregated chart for larger datasets.',\n }),\n createSpec: createScatterPlotSpec,\n };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../../../src/charts/chart-types/scatter-plot/spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAC,wBAAwB,EAAC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../../../src/charts/chart-types/scatter-plot/spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAC,wBAAwB,EAAC,MAAM,UAAU,CAAC;AAIlD,OAAO,EAAC,iBAAiB,EAAyB,MAAM,eAAe,CAAC;AAKxE,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,iBAAiB,CAAC,wBAAwB,CAAC,GACnD,IAAI,CAoCN"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { validateScatterPlotSettings } from './validation';
|
|
2
2
|
import { getChartTableReference } from '../base-types';
|
|
3
|
-
import { isNumericType } from '../../../column-types-utils';
|
|
4
3
|
const FG_COLOR = 'var(--color-chart-1)';
|
|
5
4
|
const DEFAULT_POINT_SIZE = 3;
|
|
6
5
|
export function createScatterPlotSpec(options) {
|
|
@@ -35,47 +34,4 @@ export function createScatterPlotSpec(options) {
|
|
|
35
34
|
params: { brush: { select: 'crossfilter' } },
|
|
36
35
|
};
|
|
37
36
|
}
|
|
38
|
-
function validateScatterPlotSettings({ dataTable, settings: { x, y, size }, }) {
|
|
39
|
-
// Basic validation for required fields
|
|
40
|
-
if (!x || !y) {
|
|
41
|
-
throw new RequiredFieldsError([
|
|
42
|
-
...(x ? [] : ['X field']),
|
|
43
|
-
...(y ? [] : ['Y field']),
|
|
44
|
-
]);
|
|
45
|
-
}
|
|
46
|
-
// Validate X and Y field existence
|
|
47
|
-
const xColumn = dataTable.columns.find((col) => col.name === x);
|
|
48
|
-
const yColumn = dataTable.columns.find((col) => col.name === y);
|
|
49
|
-
if (!xColumn || !yColumn) {
|
|
50
|
-
throw new MissingColumnsError([
|
|
51
|
-
...(xColumn ? [] : [x]),
|
|
52
|
-
...(yColumn ? [] : [y]),
|
|
53
|
-
]);
|
|
54
|
-
}
|
|
55
|
-
// Validate X and Y field are numeric
|
|
56
|
-
const xIsNumeric = isNumericType(xColumn.type);
|
|
57
|
-
const yIsNumeric = isNumericType(yColumn.type);
|
|
58
|
-
if (!xIsNumeric || !yIsNumeric) {
|
|
59
|
-
throw new InvalidColumnTypeError([
|
|
60
|
-
...(!xIsNumeric ? [xColumn.name] : []),
|
|
61
|
-
...(!yIsNumeric ? [yColumn.name] : []),
|
|
62
|
-
], 'numeric');
|
|
63
|
-
}
|
|
64
|
-
// Validate size field if provided
|
|
65
|
-
let sizeColumn = undefined;
|
|
66
|
-
if (size) {
|
|
67
|
-
sizeColumn = dataTable.columns.find((col) => col.name === size);
|
|
68
|
-
if (!sizeColumn) {
|
|
69
|
-
throw new MissingColumnsError([size]);
|
|
70
|
-
}
|
|
71
|
-
if (!isNumericType(sizeColumn.type)) {
|
|
72
|
-
throw new InvalidColumnTypeError([sizeColumn.name], 'numeric');
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return {
|
|
76
|
-
xColumn,
|
|
77
|
-
yColumn,
|
|
78
|
-
sizeColumn,
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
37
|
//# sourceMappingURL=spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../../src/charts/chart-types/scatter-plot/spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../../src/charts/chart-types/scatter-plot/spec.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,2BAA2B,EAAC,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAoB,sBAAsB,EAAC,MAAM,eAAe,CAAC;AAExE,MAAM,QAAQ,GAAG,sBAAsB,CAAC;AACxC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B,MAAM,UAAU,qBAAqB,CACnC,OAAoD;IAEpD,MAAM,EAAC,SAAS,EAAE,aAAa,EAAC,GAAG,OAAO,CAAC;IAE3C,MAAM,EAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAC,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAE5E,MAAM,OAAO,GAA4B;QACvC,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,EAAC,IAAI,EAAE,sBAAsB,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAC;QACnE,CAAC,EAAE,OAAO,CAAC,IAAI;QACf,CAAC,EAAE,OAAO,CAAC,IAAI;QACf,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,GAAG;KACjB,CAAC;IAEF,gFAAgF;IAChF,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,CAAC,GAAG,kBAAkB,CAAC;IACjC,CAAC;IAED,MAAM,IAAI,GAAc,CAAC,OAAO,CAAC,CAAC;IAElC,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO;QACL,IAAI;QACJ,MAAM,EAAE,OAAO,CAAC,IAAI;QACpB,MAAM,EAAE,OAAO,CAAC,IAAI;QACpB,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAC;QACnD,MAAM,EAAE,EAAC,KAAK,EAAE,EAAC,MAAM,EAAE,aAAa,EAAC,EAAC;KACjC,CAAC;AACZ,CAAC","sourcesContent":["import type {Spec} from '@uwdata/mosaic-spec';\nimport {ScatterPlotChartSettings} from './schema';\n\nimport {validateScatterPlotSettings} from './validation';\n\nimport {CreateSpecOptions, getChartTableReference} from '../base-types';\n\nconst FG_COLOR = 'var(--color-chart-1)';\nconst DEFAULT_POINT_SIZE = 3;\n\nexport function createScatterPlotSpec(\n options: CreateSpecOptions<ScatterPlotChartSettings>,\n): Spec {\n const {dataTable, selectionName} = options;\n\n const {xColumn, yColumn, sizeColumn} = validateScatterPlotSettings(options);\n\n const dotMark: Record<string, unknown> = {\n mark: 'dot',\n data: {from: getChartTableReference(dataTable), filterBy: '$brush'},\n x: xColumn.name,\n y: yColumn.name,\n fill: FG_COLOR,\n fillOpacity: 0.5,\n };\n\n // If size column is provided, use it for point radius; otherwise use fixed size\n if (sizeColumn) {\n dotMark.r = sizeColumn.name;\n } else {\n dotMark.r = DEFAULT_POINT_SIZE;\n }\n\n const plot: unknown[] = [dotMark];\n\n if (selectionName) {\n plot.push({select: 'intervalXY', as: '$brush'});\n }\n\n return {\n plot,\n xLabel: xColumn.name,\n yLabel: yColumn.name,\n height: 250,\n width: 380,\n margins: {left: 50, right: 20, top: 20, bottom: 50},\n params: {brush: {select: 'crossfilter'}},\n } as Spec;\n}\n"]}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import {
|
|
3
|
-
export declare const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
createArtifactIfMissing: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
2
|
+
import { ChartToolParams, ChartToolOutput } from '../tool-types';
|
|
3
|
+
export declare const ScatterPlotToolInput: z.ZodObject<{
|
|
4
|
+
tableName: z.ZodString;
|
|
5
|
+
title: z.ZodOptional<z.ZodString>;
|
|
7
6
|
panelId: z.ZodOptional<z.ZodString>;
|
|
8
7
|
reasoning: z.ZodString;
|
|
9
8
|
settings: z.ZodObject<{
|
|
@@ -12,31 +11,29 @@ export declare const ScatterPlotToolParameters: z.ZodObject<{
|
|
|
12
11
|
size: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
|
|
13
12
|
}, z.core.$strip>;
|
|
14
13
|
}, z.core.$strip>;
|
|
15
|
-
export type
|
|
16
|
-
export declare function createScatterPlotAiTool(
|
|
17
|
-
|
|
14
|
+
export type ScatterPlotToolInput = z.infer<typeof ScatterPlotToolInput>;
|
|
15
|
+
export declare function createScatterPlotAiTool({ databaseAdapter, addChart, maxDataPoints, }: ChartToolParams): import("ai").Tool<{
|
|
16
|
+
tableName: string;
|
|
18
17
|
reasoning: string;
|
|
19
18
|
settings: {
|
|
20
19
|
x: string;
|
|
21
20
|
y: string;
|
|
22
21
|
size: string;
|
|
23
22
|
};
|
|
24
|
-
|
|
25
|
-
tableName?: string | undefined;
|
|
23
|
+
title?: string | undefined;
|
|
26
24
|
panelId?: string | undefined;
|
|
27
|
-
}, {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
};
|
|
34
|
-
} | {
|
|
35
|
-
llmResult: {
|
|
36
|
-
success: boolean;
|
|
37
|
-
errorMessage: string;
|
|
38
|
-
details?: undefined;
|
|
39
|
-
data?: undefined;
|
|
25
|
+
}, ChartToolOutput<{
|
|
26
|
+
chartType: "scatter-plot";
|
|
27
|
+
settings: {
|
|
28
|
+
x?: string | undefined;
|
|
29
|
+
y?: string | undefined;
|
|
30
|
+
size?: string | undefined;
|
|
40
31
|
};
|
|
41
|
-
|
|
32
|
+
settingsOpen?: boolean | undefined;
|
|
33
|
+
dataPolicy?: {
|
|
34
|
+
disabled?: boolean | undefined;
|
|
35
|
+
maxRows?: number | undefined;
|
|
36
|
+
reason?: string | undefined;
|
|
37
|
+
} | undefined;
|
|
38
|
+
}>>;
|
|
42
39
|
//# sourceMappingURL=tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../../src/charts/chart-types/scatter-plot/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../../src/charts/chart-types/scatter-plot/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAItB,OAAO,EAAC,eAAe,EAAE,eAAe,EAAC,MAAM,eAAe,CAAC;AAI/D,eAAO,MAAM,oBAAoB;;;;;;;;;;iBAE/B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,wBAAgB,uBAAuB,CAAC,EACtC,eAAe,EACf,QAAQ,EACR,aAAa,GACd,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;IAiDjB"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { tool } from 'ai';
|
|
2
2
|
import { ScatterPlotChartSettings } from './schema';
|
|
3
|
-
import {
|
|
4
|
-
import { validateColumnExists } from '../../../ai/tool-validation';
|
|
3
|
+
import { BaseChartToolInput } from '../../../ai/tool-schemas';
|
|
5
4
|
import { NUMERIC_COLUMN_TYPES } from '../../../column-types-utils';
|
|
6
|
-
import {
|
|
7
|
-
|
|
5
|
+
import { validateScatterPlotSettings } from './validation';
|
|
6
|
+
import { ensureTable } from '../../../ai/tool-helpers';
|
|
7
|
+
export const ScatterPlotToolInput = BaseChartToolInput.extend({
|
|
8
8
|
settings: ScatterPlotChartSettings.required(),
|
|
9
9
|
});
|
|
10
|
-
export function createScatterPlotAiTool(
|
|
10
|
+
export function createScatterPlotAiTool({ databaseAdapter, addChart, maxDataPoints, }) {
|
|
11
11
|
return tool({
|
|
12
12
|
description: `Scatter chart: plots individual points positioned by two numeric columns (x, y), with optional size dimension.
|
|
13
13
|
|
|
@@ -17,51 +17,38 @@ Example queries: "plot latitude vs longitude", "show correlation between elevati
|
|
|
17
17
|
Required: x and y must be numeric (${NUMERIC_COLUMN_TYPES.join(', ')}).
|
|
18
18
|
Optional: size can encode a third numeric dimension (magnitude, frequency, count).
|
|
19
19
|
|
|
20
|
-
IMPORTANT: Scatter charts render ALL rows as individual points. Do NOT create scatter charts for tables with more than ${
|
|
20
|
+
IMPORTANT: Scatter charts render ALL rows as individual points. Do NOT create scatter charts for tables with more than ${maxDataPoints.toLocaleString()} rows - use aggregated visualizations instead (histogram, count-plot, line-chart with time intervals, or heatmap).
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
inputSchema: ScatterPlotToolParameters,
|
|
26
|
-
execute: async (params, context) => {
|
|
22
|
+
Do NOT use for: distributions (use histogram), categorical counts (use count-plot), trends over time (use line-chart), or large datasets (>${maxDataPoints.toLocaleString()} rows).`,
|
|
23
|
+
inputSchema: ScatterPlotToolInput,
|
|
24
|
+
execute: async ({ tableName, title, settings, panelId }) => {
|
|
27
25
|
try {
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
dashboardId: artifactId,
|
|
26
|
+
const dataTable = ensureTable(databaseAdapter, tableName);
|
|
27
|
+
validateScatterPlotSettings({
|
|
28
|
+
dataTable,
|
|
29
|
+
settings,
|
|
30
|
+
maxDataPoints,
|
|
31
|
+
});
|
|
32
|
+
const chartConfig = {
|
|
33
|
+
chartType: 'scatter-plot',
|
|
34
|
+
settings,
|
|
35
|
+
};
|
|
36
|
+
await addChart({
|
|
40
37
|
tableName,
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
config: {
|
|
45
|
-
chartType: 'scatter-plot',
|
|
46
|
-
settings: params.settings,
|
|
47
|
-
},
|
|
38
|
+
panelId,
|
|
39
|
+
config: chartConfig,
|
|
40
|
+
title,
|
|
48
41
|
});
|
|
49
42
|
return {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
? `Updated scatter chart "${result.title}".`
|
|
54
|
-
: `Created scatter chart "${result.title}".`,
|
|
55
|
-
data: result,
|
|
56
|
-
},
|
|
43
|
+
success: true,
|
|
44
|
+
details: `Generated scatter chart configuration.`,
|
|
45
|
+
data: chartConfig,
|
|
57
46
|
};
|
|
58
47
|
}
|
|
59
48
|
catch (error) {
|
|
60
49
|
return {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
errorMessage: error instanceof Error ? error.message : String(error),
|
|
64
|
-
},
|
|
50
|
+
success: false,
|
|
51
|
+
errorMessage: error instanceof Error ? error.message : String(error),
|
|
65
52
|
};
|
|
66
53
|
}
|
|
67
54
|
},
|