@sqlrooms/mosaic 0.29.0-rc.7 → 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/LICENSE.md +2 -1
- package/README.md +179 -35
- package/dist/MosaicSlice.d.ts +1 -0
- package/dist/MosaicSlice.d.ts.map +1 -1
- package/dist/MosaicSlice.js.map +1 -1
- package/dist/VgPlotChart.d.ts.map +1 -1
- package/dist/VgPlotChart.js +9 -3
- package/dist/VgPlotChart.js.map +1 -1
- 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.d.ts +3 -1
- package/dist/charts/MosaicChart.d.ts.map +1 -1
- package/dist/charts/MosaicChart.js +2 -2
- package/dist/charts/MosaicChart.js.map +1 -1
- package/dist/charts/MosaicChartError.d.ts +8 -2
- package/dist/charts/MosaicChartError.d.ts.map +1 -1
- package/dist/charts/MosaicChartError.js +29 -3
- package/dist/charts/MosaicChartError.js.map +1 -1
- package/dist/charts/MosaicChartSettingsButton.d.ts +15 -0
- package/dist/charts/MosaicChartSettingsButton.d.ts.map +1 -0
- package/dist/charts/MosaicChartSettingsButton.js +7 -0
- package/dist/charts/MosaicChartSettingsButton.js.map +1 -0
- package/dist/charts/MosaicChartView.d.ts +2 -0
- package/dist/charts/MosaicChartView.d.ts.map +1 -1
- package/dist/charts/MosaicChartView.js +19 -7
- package/dist/charts/MosaicChartView.js.map +1 -1
- package/dist/charts/chart-settings/MosaicChartSettings.d.ts.map +1 -1
- package/dist/charts/chart-settings/MosaicChartSettings.js +3 -3
- package/dist/charts/chart-settings/MosaicChartSettings.js.map +1 -1
- package/dist/charts/chart-settings/MosaicChartSettingsPanel.js +1 -1
- package/dist/charts/chart-settings/MosaicChartSettingsPanel.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 +3 -3
- package/dist/charts/chart-settings/MosaicChartTypeSelector.js.map +1 -1
- package/dist/charts/chart-types/base-types.d.ts +40 -25
- package/dist/charts/chart-types/base-types.d.ts.map +1 -1
- package/dist/charts/chart-types/base-types.js +5 -0
- 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 +28 -13
- 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/chart-config.d.ts +3 -1
- package/dist/charts/chart-types/chart-config.d.ts.map +1 -1
- package/dist/charts/chart-types/chart-config.js +2 -2
- package/dist/charts/chart-types/chart-config.js.map +1 -1
- 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 +2 -1
- package/dist/charts/chart-types/count-plot/spec.d.ts.map +1 -1
- package/dist/charts/chart-types/count-plot/spec.js +47 -34
- 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 +26 -33
- 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/createDefaultChartTypes.js +2 -2
- package/dist/charts/chart-types/createDefaultChartTypes.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/custom-spec/spec.d.ts +2 -1
- package/dist/charts/chart-types/custom-spec/spec.d.ts.map +1 -1
- package/dist/charts/chart-types/custom-spec/spec.js +16 -12
- package/dist/charts/chart-types/custom-spec/spec.js.map +1 -1
- package/dist/charts/chart-types/errors.d.ts +35 -0
- package/dist/charts/chart-types/errors.d.ts.map +1 -1
- package/dist/charts/chart-types/errors.js +56 -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 +2 -1
- package/dist/charts/chart-types/heatmap/spec.d.ts.map +1 -1
- package/dist/charts/chart-types/heatmap/spec.js +21 -21
- 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 +27 -37
- 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/HistogramSettings.d.ts.map +1 -1
- package/dist/charts/chart-types/histogram/HistogramSettings.js +3 -1
- package/dist/charts/chart-types/histogram/HistogramSettings.js.map +1 -1
- 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/schema.d.ts +2 -0
- package/dist/charts/chart-types/histogram/schema.d.ts.map +1 -1
- package/dist/charts/chart-types/histogram/schema.js +1 -0
- package/dist/charts/chart-types/histogram/schema.js.map +1 -1
- package/dist/charts/chart-types/histogram/spec.d.ts +2 -1
- package/dist/charts/chart-types/histogram/spec.d.ts.map +1 -1
- package/dist/charts/chart-types/histogram/spec.js +31 -28
- package/dist/charts/chart-types/histogram/spec.js.map +1 -1
- package/dist/charts/chart-types/histogram/tool.d.ts +39 -24
- package/dist/charts/chart-types/histogram/tool.d.ts.map +1 -1
- package/dist/charts/chart-types/histogram/tool.js +39 -33
- 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 +5 -11
- package/dist/charts/chart-types/index.d.ts.map +1 -1
- package/dist/charts/chart-types/index.js +6 -12
- package/dist/charts/chart-types/index.js.map +1 -1
- package/dist/charts/chart-types/line-chart/LineChartSettings.d.ts.map +1 -1
- package/dist/charts/chart-types/line-chart/LineChartSettings.js +4 -13
- package/dist/charts/chart-types/line-chart/LineChartSettings.js.map +1 -1
- package/dist/charts/chart-types/line-chart/LineChartXFieldSelector.d.ts +7 -0
- package/dist/charts/chart-types/line-chart/LineChartXFieldSelector.d.ts.map +1 -0
- package/dist/charts/chart-types/line-chart/LineChartXFieldSelector.js +22 -0
- package/dist/charts/chart-types/line-chart/LineChartXFieldSelector.js.map +1 -0
- package/dist/charts/chart-types/line-chart/LineChartYFieldsSelector.d.ts +7 -0
- package/dist/charts/chart-types/line-chart/LineChartYFieldsSelector.d.ts.map +1 -0
- package/dist/charts/chart-types/line-chart/LineChartYFieldsSelector.js +42 -0
- package/dist/charts/chart-types/line-chart/LineChartYFieldsSelector.js.map +1 -0
- 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/schema.d.ts +2 -0
- package/dist/charts/chart-types/line-chart/schema.d.ts.map +1 -1
- package/dist/charts/chart-types/line-chart/schema.js +5 -0
- package/dist/charts/chart-types/line-chart/schema.js.map +1 -1
- package/dist/charts/chart-types/line-chart/spec.d.ts +2 -1
- package/dist/charts/chart-types/line-chart/spec.d.ts.map +1 -1
- package/dist/charts/chart-types/line-chart/spec.js +56 -65
- package/dist/charts/chart-types/line-chart/spec.js.map +1 -1
- package/dist/charts/chart-types/line-chart/tool.d.ts +28 -24
- package/dist/charts/chart-types/line-chart/tool.d.ts.map +1 -1
- package/dist/charts/chart-types/line-chart/tool.js +27 -39
- package/dist/charts/chart-types/line-chart/tool.js.map +1 -1
- package/dist/charts/chart-types/line-chart/utils.d.ts +7 -0
- package/dist/charts/chart-types/line-chart/utils.d.ts.map +1 -0
- package/dist/charts/chart-types/line-chart/utils.js +17 -0
- package/dist/charts/chart-types/line-chart/utils.js.map +1 -0
- 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/mosaicChartTypes.d.ts +4 -2
- package/dist/charts/chart-types/mosaicChartTypes.d.ts.map +1 -1
- package/dist/charts/chart-types/mosaicChartTypes.js +2 -2
- package/dist/charts/chart-types/mosaicChartTypes.js.map +1 -1
- 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/ScatterPlotSettings.d.ts +3 -0
- package/dist/charts/chart-types/scatter-plot/ScatterPlotSettings.d.ts.map +1 -0
- package/dist/charts/chart-types/{bubble-chart/BubbleChartSettings.js → scatter-plot/ScatterPlotSettings.js} +4 -4
- package/dist/charts/chart-types/scatter-plot/ScatterPlotSettings.js.map +1 -0
- package/dist/charts/chart-types/scatter-plot/definition.d.ts +4 -0
- package/dist/charts/chart-types/scatter-plot/definition.d.ts.map +1 -0
- package/dist/charts/chart-types/scatter-plot/definition.js +25 -0
- package/dist/charts/chart-types/scatter-plot/definition.js.map +1 -0
- package/dist/charts/chart-types/{bubble-chart → scatter-plot}/schema.d.ts +5 -5
- package/dist/charts/chart-types/scatter-plot/schema.d.ts.map +1 -0
- package/dist/charts/chart-types/{bubble-chart → scatter-plot}/schema.js +5 -5
- package/dist/charts/chart-types/scatter-plot/schema.js.map +1 -0
- package/dist/charts/chart-types/scatter-plot/spec.d.ts +5 -0
- package/dist/charts/chart-types/scatter-plot/spec.d.ts.map +1 -0
- package/dist/charts/chart-types/scatter-plot/spec.js +37 -0
- package/dist/charts/chart-types/scatter-plot/spec.js.map +1 -0
- package/dist/charts/chart-types/scatter-plot/tool.d.ts +39 -0
- package/dist/charts/chart-types/scatter-plot/tool.d.ts.map +1 -0
- package/dist/charts/chart-types/scatter-plot/tool.js +57 -0
- package/dist/charts/chart-types/scatter-plot/tool.js.map +1 -0
- 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/MosaicDashboardChartHeaderActions.d.ts.map +1 -1
- package/dist/charts/dashboard/MosaicDashboardChartHeaderActions.js +12 -5
- package/dist/charts/dashboard/MosaicDashboardChartHeaderActions.js.map +1 -1
- package/dist/charts/dashboard/MosaicDashboardChartRenderer.d.ts.map +1 -1
- package/dist/charts/dashboard/MosaicDashboardChartRenderer.js +6 -4
- package/dist/charts/dashboard/MosaicDashboardChartRenderer.js.map +1 -1
- package/dist/charts/useChartDataPolicy.d.ts.map +1 -1
- package/dist/charts/useChartDataPolicy.js +2 -1
- package/dist/charts/useChartDataPolicy.js.map +1 -1
- package/dist/charts/useChartPanelClients.d.ts +8 -0
- package/dist/charts/useChartPanelClients.d.ts.map +1 -0
- package/dist/charts/useChartPanelClients.js +22 -0
- package/dist/charts/useChartPanelClients.js.map +1 -0
- package/dist/charts/useMosaicChartRenderContext.d.ts +2 -3
- package/dist/charts/useMosaicChartRenderContext.d.ts.map +1 -1
- package/dist/charts/useMosaicChartRenderContext.js +15 -15
- package/dist/charts/useMosaicChartRenderContext.js.map +1 -1
- package/dist/charts/worksheet/ChartBlockHeader.d.ts.map +1 -1
- package/dist/charts/worksheet/ChartBlockHeader.js +4 -3
- package/dist/charts/worksheet/ChartBlockHeader.js.map +1 -1
- package/dist/charts/worksheet/ChartBlockRenderer.d.ts.map +1 -1
- package/dist/charts/worksheet/ChartBlockRenderer.js +3 -13
- package/dist/charts/worksheet/ChartBlockRenderer.js.map +1 -1
- package/dist/column-types-utils.d.ts.map +1 -1
- package/dist/column-types-utils.js +12 -4
- package/dist/column-types-utils.js.map +1 -1
- package/dist/components/AggregationSelector.d.ts.map +1 -1
- package/dist/components/AggregationSelector.js +9 -2
- package/dist/components/AggregationSelector.js.map +1 -1
- package/dist/components/BlockCaptionEditor.d.ts +20 -0
- package/dist/components/BlockCaptionEditor.d.ts.map +1 -0
- package/dist/components/BlockCaptionEditor.js +15 -0
- package/dist/components/BlockCaptionEditor.js.map +1 -0
- package/dist/components/ColorSelector.d.ts +12 -0
- package/dist/components/ColorSelector.d.ts.map +1 -0
- package/dist/components/ColorSelector.js +13 -0
- package/dist/components/ColorSelector.js.map +1 -0
- package/dist/components/ColumnSelector.d.ts +1 -0
- package/dist/components/ColumnSelector.d.ts.map +1 -1
- package/dist/components/ColumnSelector.js +2 -2
- package/dist/components/ColumnSelector.js.map +1 -1
- package/dist/components/FieldSelectorInput.d.ts +1 -0
- package/dist/components/FieldSelectorInput.d.ts.map +1 -1
- package/dist/components/FieldSelectorInput.js +4 -9
- package/dist/components/FieldSelectorInput.js.map +1 -1
- package/dist/components/MultiFieldSelector.d.ts +4 -1
- package/dist/components/MultiFieldSelector.d.ts.map +1 -1
- package/dist/components/MultiFieldSelector.js +4 -13
- package/dist/components/MultiFieldSelector.js.map +1 -1
- package/dist/components/TemporalGranularitySelector.d.ts.map +1 -1
- package/dist/components/TemporalGranularitySelector.js +13 -9
- package/dist/components/TemporalGranularitySelector.js.map +1 -1
- package/dist/constants/chart-colors.d.ts +3 -0
- package/dist/constants/chart-colors.d.ts.map +1 -0
- package/dist/constants/chart-colors.js +5 -0
- package/dist/constants/chart-colors.js.map +1 -0
- package/dist/dashboard/DefaultMosaicDashboardBlock.d.ts +2 -1
- package/dist/dashboard/DefaultMosaicDashboardBlock.d.ts.map +1 -1
- package/dist/dashboard/DefaultMosaicDashboardBlock.js +1 -1
- package/dist/dashboard/DefaultMosaicDashboardBlock.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/MosaicDashboardSlice.d.ts +22 -4
- package/dist/dashboard/MosaicDashboardSlice.d.ts.map +1 -1
- package/dist/dashboard/MosaicDashboardSlice.js +55 -0
- package/dist/dashboard/MosaicDashboardSlice.js.map +1 -1
- package/dist/dashboard/components/ResetFiltersButton.d.ts +14 -0
- package/dist/dashboard/components/ResetFiltersButton.d.ts.map +1 -0
- package/dist/dashboard/components/ResetFiltersButton.js +15 -0
- package/dist/dashboard/components/ResetFiltersButton.js.map +1 -0
- package/dist/dashboard/dashboard-types.d.ts +9 -3
- package/dist/dashboard/dashboard-types.d.ts.map +1 -1
- package/dist/dashboard/dashboard-types.js.map +1 -1
- package/dist/dashboard/hooks/useDashboardResetFilters.d.ts +14 -0
- package/dist/dashboard/hooks/useDashboardResetFilters.d.ts.map +1 -0
- package/dist/dashboard/hooks/useDashboardResetFilters.js +39 -0
- package/dist/dashboard/hooks/useDashboardResetFilters.js.map +1 -0
- package/dist/dashboard/hooks/usePanelResetFilters.d.ts +16 -0
- package/dist/dashboard/hooks/usePanelResetFilters.d.ts.map +1 -0
- package/dist/dashboard/hooks/usePanelResetFilters.js +47 -0
- package/dist/dashboard/hooks/usePanelResetFilters.js.map +1 -0
- 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/MosaicDashboardAddPanelDropdown.d.ts.map +1 -1
- package/dist/dashboard/toolbar/MosaicDashboardAddPanelDropdown.js +3 -3
- package/dist/dashboard/toolbar/MosaicDashboardAddPanelDropdown.js.map +1 -1
- package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.d.ts +7 -0
- package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.d.ts.map +1 -0
- package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.js +18 -0
- package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.js.map +1 -0
- package/dist/dashboard/toolbar/MosaicDashboardResetFiltersButton.d.ts.map +1 -1
- package/dist/dashboard/toolbar/MosaicDashboardResetFiltersButton.js +4 -32
- package/dist/dashboard/toolbar/MosaicDashboardResetFiltersButton.js.map +1 -1
- package/dist/dashboard/toolbar/MosaicDashboardToolbar.d.ts +2 -2
- package/dist/dashboard/toolbar/MosaicDashboardToolbar.d.ts.map +1 -1
- package/dist/dashboard/toolbar/MosaicDashboardToolbar.js +14 -10
- package/dist/dashboard/toolbar/MosaicDashboardToolbar.js.map +1 -1
- package/dist/dashboard/usePanelClientRegistration.d.ts +7 -0
- package/dist/dashboard/usePanelClientRegistration.d.ts.map +1 -0
- package/dist/dashboard/usePanelClientRegistration.js +30 -0
- package/dist/dashboard/usePanelClientRegistration.js.map +1 -0
- package/dist/dashboard/usePanelClients.d.ts +7 -0
- package/dist/dashboard/usePanelClients.d.ts.map +1 -0
- package/dist/dashboard/usePanelClients.js +13 -0
- package/dist/dashboard/usePanelClients.js.map +1 -0
- 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/DataTableExplorer.d.ts +4 -2
- package/dist/data-table-explorer/DataTableExplorer.d.ts.map +1 -1
- package/dist/data-table-explorer/DataTableExplorer.js +4 -4
- package/dist/data-table-explorer/DataTableExplorer.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 +4 -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/createDataTableExplorerStore.d.ts +3 -0
- package/dist/data-table-explorer/createDataTableExplorerStore.d.ts.map +1 -1
- package/dist/data-table-explorer/createDataTableExplorerStore.js +6 -0
- package/dist/data-table-explorer/createDataTableExplorerStore.js.map +1 -1
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.d.ts +4 -0
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.d.ts.map +1 -0
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.js +13 -0
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.js.map +1 -0
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.d.ts.map +1 -1
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.js +26 -8
- package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.js.map +1 -1
- package/dist/data-table-explorer/dashboard/useDataTableExplorerPanelClients.d.ts +13 -0
- package/dist/data-table-explorer/dashboard/useDataTableExplorerPanelClients.d.ts.map +1 -0
- package/dist/data-table-explorer/dashboard/useDataTableExplorerPanelClients.js +32 -0
- package/dist/data-table-explorer/dashboard/useDataTableExplorerPanelClients.js.map +1 -0
- package/dist/data-table-explorer/dataTableExplorerController.d.ts +63 -3
- package/dist/data-table-explorer/dataTableExplorerController.d.ts.map +1 -1
- package/dist/data-table-explorer/dataTableExplorerController.js +73 -10
- package/dist/data-table-explorer/dataTableExplorerController.js.map +1 -1
- package/dist/data-table-explorer/hooks/useDataTableExplorerColumns.d.ts +12 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerColumns.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerColumns.js +19 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerColumns.js.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.d.ts +52 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.js +153 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.js.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.d.ts +42 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.js +43 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.js.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerSelection.d.ts +13 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerSelection.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerSelection.js +40 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerSelection.js.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStatus.d.ts +18 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStatus.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStatus.js +23 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStatus.js.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStoreState.d.ts +27 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStoreState.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStoreState.js +28 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerStoreState.js.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerVisiblePage.d.ts +15 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerVisiblePage.d.ts.map +1 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerVisiblePage.js +21 -0
- package/dist/data-table-explorer/hooks/useDataTableExplorerVisiblePage.js.map +1 -0
- package/dist/data-table-explorer/types.d.ts +16 -3
- 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 +20 -279
- 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/DataTableBlockHeader.d.ts +1 -0
- package/dist/data-table-explorer/worksheet/DataTableBlockHeader.d.ts.map +1 -1
- package/dist/data-table-explorer/worksheet/DataTableBlockHeader.js +4 -2
- package/dist/data-table-explorer/worksheet/DataTableBlockHeader.js.map +1 -1
- package/dist/data-table-explorer/worksheet/DataTableBlockRenderer.d.ts.map +1 -1
- package/dist/data-table-explorer/worksheet/DataTableBlockRenderer.js +4 -4
- package/dist/data-table-explorer/worksheet/DataTableBlockRenderer.js.map +1 -1
- package/dist/index.d.ts +55 -31
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +86 -26
- 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 +151 -25
- package/dist/useVgPlotChartRender.js.map +1 -1
- package/dist/useVgPlotChartRetention.d.ts +11 -0
- package/dist/useVgPlotChartRetention.d.ts.map +1 -1
- package/dist/useVgPlotChartRetention.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 -103
- package/dist/ai/ai.d.ts.map +0 -1
- package/dist/ai/ai.js +0 -419
- 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/charts/chart-types/bubble-chart/BubbleChartSettings.d.ts +0 -3
- package/dist/charts/chart-types/bubble-chart/BubbleChartSettings.d.ts.map +0 -1
- package/dist/charts/chart-types/bubble-chart/BubbleChartSettings.js.map +0 -1
- package/dist/charts/chart-types/bubble-chart/definition.d.ts +0 -4
- package/dist/charts/chart-types/bubble-chart/definition.d.ts.map +0 -1
- package/dist/charts/chart-types/bubble-chart/definition.js +0 -24
- package/dist/charts/chart-types/bubble-chart/definition.js.map +0 -1
- package/dist/charts/chart-types/bubble-chart/schema.d.ts.map +0 -1
- package/dist/charts/chart-types/bubble-chart/schema.js.map +0 -1
- package/dist/charts/chart-types/bubble-chart/spec.d.ts +0 -4
- package/dist/charts/chart-types/bubble-chart/spec.d.ts.map +0 -1
- package/dist/charts/chart-types/bubble-chart/spec.js +0 -31
- package/dist/charts/chart-types/bubble-chart/spec.js.map +0 -1
- package/dist/charts/chart-types/bubble-chart/tool.d.ts +0 -42
- package/dist/charts/chart-types/bubble-chart/tool.d.ts.map +0 -1
- package/dist/charts/chart-types/bubble-chart/tool.js +0 -66
- package/dist/charts/chart-types/bubble-chart/tool.js.map +0 -1
- package/dist/hooks/useDataTable.d.ts +0 -3
- package/dist/hooks/useDataTable.d.ts.map +0 -1
- package/dist/hooks/useDataTable.js +0 -28
- package/dist/hooks/useDataTable.js.map +0 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useMemo } from 'react';
|
|
3
|
+
import { MultiFieldSelector } from '../../../components/MultiFieldSelector';
|
|
4
|
+
import { AggregationSelector } from '../../../components/AggregationSelector';
|
|
5
|
+
import { ColorSelector } from '../../../components/ColorSelector';
|
|
6
|
+
import { useMosaicChartSettingsContext } from '../../chart-settings/MosaicChartSettingsContext';
|
|
7
|
+
import { useColumnsContext } from '../../../components/ColumnsContext';
|
|
8
|
+
import { isTemporalType } from '../../../column-types-utils';
|
|
9
|
+
import { getUnusedColor } from './utils';
|
|
10
|
+
import { DEFAULT_CHART_COLORS, DEFAULT_CHART_FALLBACK_COLOR, } from '../../../constants/chart-colors';
|
|
11
|
+
/**
|
|
12
|
+
* Field selector specifically for line chart Y-axis fields.
|
|
13
|
+
* Includes aggregation and color selection.
|
|
14
|
+
*/
|
|
15
|
+
export const LineChartYFieldsSelector = () => {
|
|
16
|
+
const { onChangeConfig, config } = useMosaicChartSettingsContext('line-chart');
|
|
17
|
+
const { columns } = useColumnsContext();
|
|
18
|
+
const yFields = useMemo(() => config.settings.yFields ?? [], [config.settings.yFields]);
|
|
19
|
+
const xColumn = columns.find((c) => c.name === config.settings.x);
|
|
20
|
+
const isXFieldTemporal = xColumn && isTemporalType(xColumn.type);
|
|
21
|
+
const showAggregation = Boolean(isXFieldTemporal && config.settings.xInterval);
|
|
22
|
+
const handleChange = useCallback((newYFields) => onChangeConfig('yFields', newYFields), [onChangeConfig]);
|
|
23
|
+
const handleAdd = useCallback((fieldName) => {
|
|
24
|
+
if (fieldName) {
|
|
25
|
+
const usedColors = yFields
|
|
26
|
+
.map((f) => f.color)
|
|
27
|
+
.filter((c) => Boolean(c));
|
|
28
|
+
onChangeConfig('yFields', [
|
|
29
|
+
...yFields,
|
|
30
|
+
{
|
|
31
|
+
field: fieldName,
|
|
32
|
+
aggregate: 'sum',
|
|
33
|
+
color: getUnusedColor(DEFAULT_CHART_COLORS, usedColors),
|
|
34
|
+
},
|
|
35
|
+
]);
|
|
36
|
+
}
|
|
37
|
+
}, [yFields, onChangeConfig]);
|
|
38
|
+
return (_jsx(MultiFieldSelector.Numeric, { value: yFields, onChange: handleChange, onAdd: handleAdd, renderItem: (fieldConfig, index, handleUpdate) => (_jsxs("div", { className: "grid items-end gap-2", style: {
|
|
39
|
+
gridTemplateColumns: showAggregation ? 'auto auto' : 'auto',
|
|
40
|
+
}, children: [showAggregation && (_jsx(AggregationSelector, { value: fieldConfig.aggregate || 'sum', onChange: (newAggregate) => handleUpdate(index, { aggregate: newAggregate }) })), _jsx(ColorSelector, { items: DEFAULT_CHART_COLORS, value: fieldConfig.color ?? DEFAULT_CHART_FALLBACK_COLOR, onChange: (color) => handleUpdate(index, { color }) })] })) }));
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=LineChartYFieldsSelector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LineChartYFieldsSelector.js","sourceRoot":"","sources":["../../../../src/charts/chart-types/line-chart/LineChartYFieldsSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import {useCallback, useMemo, type FC} from 'react';\nimport {MultiFieldSelector} from '../../../components/MultiFieldSelector';\nimport {AggregationSelector} from '../../../components/AggregationSelector';\nimport {ColorSelector} from '../../../components/ColorSelector';\nimport {useMosaicChartSettingsContext} from '../../chart-settings/MosaicChartSettingsContext';\nimport {useColumnsContext} from '../../../components/ColumnsContext';\nimport {isTemporalType} from '../../../column-types-utils';\nimport {getUnusedColor} from './utils';\nimport {\n DEFAULT_CHART_COLORS,\n DEFAULT_CHART_FALLBACK_COLOR,\n} from '../../../constants/chart-colors';\n\n/**\n * Field selector specifically for line chart Y-axis fields.\n * Includes aggregation and color selection.\n */\nexport const LineChartYFieldsSelector: FC = () => {\n const {onChangeConfig, config} = useMosaicChartSettingsContext('line-chart');\n const {columns} = useColumnsContext();\n\n const yFields = useMemo(\n () => config.settings.yFields ?? [],\n [config.settings.yFields],\n );\n\n const xColumn = columns.find((c) => c.name === config.settings.x);\n const isXFieldTemporal = xColumn && isTemporalType(xColumn.type);\n\n const showAggregation = Boolean(\n isXFieldTemporal && config.settings.xInterval,\n );\n\n const handleChange = useCallback(\n (newYFields: typeof yFields) => onChangeConfig('yFields', newYFields),\n [onChangeConfig],\n );\n\n const handleAdd = useCallback(\n (fieldName: string) => {\n if (fieldName) {\n const usedColors = yFields\n .map((f) => f.color)\n .filter((c): c is string => Boolean(c));\n\n onChangeConfig('yFields', [\n ...yFields,\n {\n field: fieldName,\n aggregate: 'sum',\n color: getUnusedColor(DEFAULT_CHART_COLORS, usedColors),\n },\n ]);\n }\n },\n [yFields, onChangeConfig],\n );\n\n return (\n <MultiFieldSelector.Numeric\n value={yFields}\n onChange={handleChange}\n onAdd={handleAdd}\n renderItem={(fieldConfig, index, handleUpdate) => (\n <div\n className=\"grid items-end gap-2\"\n style={{\n gridTemplateColumns: showAggregation ? 'auto auto' : 'auto',\n }}\n >\n {showAggregation && (\n <AggregationSelector\n value={fieldConfig.aggregate || 'sum'}\n onChange={(newAggregate) =>\n handleUpdate(index, {aggregate: newAggregate})\n }\n />\n )}\n\n <ColorSelector\n items={DEFAULT_CHART_COLORS}\n value={fieldConfig.color ?? DEFAULT_CHART_FALLBACK_COLOR}\n onChange={(color) => handleUpdate(index, {color})}\n />\n </div>\n )}\n />\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../../../src/charts/chart-types/line-chart/definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,eAAe,EAAoB,MAAM,UAAU,CAAC;AAU5D,eAAO,MAAM,kBAAkB,EAAE,uBAAuB,CAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../../../src/charts/chart-types/line-chart/definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,eAAe,EAAoB,MAAM,UAAU,CAAC;AAU5D,eAAO,MAAM,kBAAkB,EAAE,uBAAuB,CAAC,eAAe,CAmBvE,CAAC"}
|
|
@@ -10,6 +10,7 @@ export const lineChartChartType = {
|
|
|
10
10
|
id: 'line-chart',
|
|
11
11
|
label: 'Line Chart',
|
|
12
12
|
description: DESCRIPTION,
|
|
13
|
+
aiDescription: `${DESCRIPTION} - trends over time or ordered variable (use with aggregations for >10k rows)`,
|
|
13
14
|
icon: LineChart,
|
|
14
15
|
schema: LineChartSettings,
|
|
15
16
|
settingsComponent: LineChartSettingsComponent,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../../../../src/charts/chart-types/line-chart/definition.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,iBAAiB,EAAC,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAC,oBAAoB,EAAC,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAC,0BAA0B,EAAC,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAC,qBAAqB,EAAC,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,EAAC,mBAAmB,EAAC,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAC,6BAA6B,EAAC,MAAM,wBAAwB,CAAC;AAErE,MAAM,WAAW,GAAG,mCAAmC,CAAC;AAExD,MAAM,CAAC,MAAM,kBAAkB,GAA6C;IAC1E,EAAE,EAAE,YAAY;IAChB,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,WAAW;IACxB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,iBAAiB;IACzB,iBAAiB,EAAE,0BAA0B;IAC7C,UAAU,EAAE,oBAAoB,CAAC,WAAW,CAAC;IAC7C,UAAU,EAAE,qBAAqB;IACjC,aAAa,EAAE,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE,CAC1B,MAAM,CAAC,QAAQ,CAAC,SAAS;QACvB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC;YACE,OAAO,EAAE,6BAA6B;YACtC,MAAM,EACJ,sHAAsH;SACzH;IACP,UAAU,EAAE,mBAAmB;CAChC,CAAC","sourcesContent":["import type {SpecChartTypeDefinition} from '../base-types';\nimport {LineChartConfig, LineChartSettings} from './schema';\nimport {titleFromDescription} from '../../../chart-builders/chartTypeUtils';\nimport {LineChartSettingsComponent} from './LineChartSettings';\nimport {createLineChartAiTool} from './tool';\nimport {LineChart} from 'lucide-react';\nimport {createLineChartSpec} from './spec';\nimport {DEFAULT_CHART_MAX_DATA_POINTS} from '../../../chart-runtime';\n\nconst DESCRIPTION = 'Create a line chart of two fields';\n\nexport const lineChartChartType: SpecChartTypeDefinition<LineChartConfig> = {\n id: 'line-chart',\n label: 'Line Chart',\n description: DESCRIPTION,\n icon: LineChart,\n schema: LineChartSettings,\n settingsComponent: LineChartSettingsComponent,\n buildTitle: titleFromDescription(DESCRIPTION),\n createTool: createLineChartAiTool,\n getDataPolicy: ({config}) =>\n config.settings.xInterval\n ? null\n : {\n maxRows: DEFAULT_CHART_MAX_DATA_POINTS,\n reason:\n 'Unaggregated line charts render source rows. Add a temporal interval or use an aggregated chart for larger datasets.',\n },\n createSpec: createLineChartSpec,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../../../../src/charts/chart-types/line-chart/definition.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,iBAAiB,EAAC,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAC,oBAAoB,EAAC,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAC,0BAA0B,EAAC,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAC,qBAAqB,EAAC,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,EAAC,mBAAmB,EAAC,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAC,6BAA6B,EAAC,MAAM,wBAAwB,CAAC;AAErE,MAAM,WAAW,GAAG,mCAAmC,CAAC;AAExD,MAAM,CAAC,MAAM,kBAAkB,GAA6C;IAC1E,EAAE,EAAE,YAAY;IAChB,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,WAAW;IACxB,aAAa,EAAE,GAAG,WAAW,+EAA+E;IAC5G,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,iBAAiB;IACzB,iBAAiB,EAAE,0BAA0B;IAC7C,UAAU,EAAE,oBAAoB,CAAC,WAAW,CAAC;IAC7C,UAAU,EAAE,qBAAqB;IACjC,aAAa,EAAE,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE,CAC1B,MAAM,CAAC,QAAQ,CAAC,SAAS;QACvB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC;YACE,OAAO,EAAE,6BAA6B;YACtC,MAAM,EACJ,sHAAsH;SACzH;IACP,UAAU,EAAE,mBAAmB;CAChC,CAAC","sourcesContent":["import type {SpecChartTypeDefinition} from '../base-types';\nimport {LineChartConfig, LineChartSettings} from './schema';\nimport {titleFromDescription} from '../../../chart-builders/chartTypeUtils';\nimport {LineChartSettingsComponent} from './LineChartSettings';\nimport {createLineChartAiTool} from './tool';\nimport {LineChart} from 'lucide-react';\nimport {createLineChartSpec} from './spec';\nimport {DEFAULT_CHART_MAX_DATA_POINTS} from '../../../chart-runtime';\n\nconst DESCRIPTION = 'Create a line chart of two fields';\n\nexport const lineChartChartType: SpecChartTypeDefinition<LineChartConfig> = {\n id: 'line-chart',\n label: 'Line Chart',\n description: DESCRIPTION,\n aiDescription: `${DESCRIPTION} - trends over time or ordered variable (use with aggregations for >10k rows)`,\n icon: LineChart,\n schema: LineChartSettings,\n settingsComponent: LineChartSettingsComponent,\n buildTitle: titleFromDescription(DESCRIPTION),\n createTool: createLineChartAiTool,\n getDataPolicy: ({config}) =>\n config.settings.xInterval\n ? null\n : {\n maxRows: DEFAULT_CHART_MAX_DATA_POINTS,\n reason:\n 'Unaggregated line charts render source rows. Add a temporal interval or use an aggregated chart for larger datasets.',\n },\n createSpec: createLineChartSpec,\n};\n"]}
|
|
@@ -32,6 +32,7 @@ export declare const LineChartSettings: z.ZodObject<{
|
|
|
32
32
|
avg: "avg";
|
|
33
33
|
}>>>;
|
|
34
34
|
}, z.core.$strip>>>;
|
|
35
|
+
showLegend: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
35
36
|
}, z.core.$strip>;
|
|
36
37
|
export type LineChartSettings = z.infer<typeof LineChartSettings>;
|
|
37
38
|
export declare const LineChartConfig: z.ZodObject<{
|
|
@@ -58,6 +59,7 @@ export declare const LineChartConfig: z.ZodObject<{
|
|
|
58
59
|
avg: "avg";
|
|
59
60
|
}>>>;
|
|
60
61
|
}, z.core.$strip>>>;
|
|
62
|
+
showLegend: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
61
63
|
}, z.core.$strip>;
|
|
62
64
|
settingsOpen: z.ZodOptional<z.ZodBoolean>;
|
|
63
65
|
dataPolicy: z.ZodOptional<z.ZodObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/charts/chart-types/line-chart/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAKtB,eAAO,MAAM,YAAY;;;;;;;;;iBAMvB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/charts/chart-types/line-chart/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAKtB,eAAO,MAAM,YAAY;;;;;;;;;iBAMvB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;iBAiB5B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAK1B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
|
|
@@ -19,6 +19,11 @@ export const LineChartSettings = z.object({
|
|
|
19
19
|
.array(YFieldConfig)
|
|
20
20
|
.optional()
|
|
21
21
|
.describe('Array of Y fields to plot, supports multiple lines'),
|
|
22
|
+
showLegend: z
|
|
23
|
+
.boolean()
|
|
24
|
+
.optional()
|
|
25
|
+
.default(true)
|
|
26
|
+
.describe('Show interactive legend for toggling line visibility'),
|
|
22
27
|
});
|
|
23
28
|
export const LineChartConfig = z.object({
|
|
24
29
|
chartType: z.literal('line-chart'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/charts/chart-types/line-chart/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,6BAA6B,EAAC,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAC,gBAAgB,EAAE,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AAErE,wBAAwB;AACxB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACnE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACrE,SAAS,EAAE,iBAAiB,CAAC,QAAQ,EAAE;SACpC,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,6CAA6C,CAAC;CAC3D,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,CAAC,EAAE,CAAC;SACD,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,mDAAmD,CAAC;IAChE,SAAS,EAAE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC7C,yDAAyD,CAC1D;IACD,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,YAAY,CAAC;SACnB,QAAQ,EAAE;SACV,QAAQ,CAAC,oDAAoD,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/charts/chart-types/line-chart/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,6BAA6B,EAAC,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAC,gBAAgB,EAAE,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AAErE,wBAAwB;AACxB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACnE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACrE,SAAS,EAAE,iBAAiB,CAAC,QAAQ,EAAE;SACpC,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,6CAA6C,CAAC;CAC3D,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,CAAC,EAAE,CAAC;SACD,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,mDAAmD,CAAC;IAChE,SAAS,EAAE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC7C,yDAAyD,CAC1D;IACD,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,YAAY,CAAC;SACnB,QAAQ,EAAE;SACV,QAAQ,CAAC,oDAAoD,CAAC;IACjE,UAAU,EAAE,CAAC;SACV,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,sDAAsD,CAAC;CACpE,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;IAClC,QAAQ,EAAE,iBAAiB;IAC3B,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACpC,UAAU,EAAE,6BAA6B,CAAC,QAAQ,EAAE;CACrD,CAAC,CAAC","sourcesContent":["import {z} from 'zod';\nimport {ChartDataPolicyOverrideConfig} from '../data-policy-schema';\nimport {TemporalInterval, AggregateFunction} from '../../../schemas';\n\n// Y-field configuration\nexport const YFieldConfig = z.object({\n field: z.string().describe('Numeric column name to plot on Y axis'),\n color: z.string().optional().describe('Optional color for this line'),\n aggregate: AggregateFunction.optional()\n .default('sum')\n .describe('Aggregation function: sum, avg, min, or max'),\n});\nexport type YFieldConfig = z.infer<typeof YFieldConfig>;\n\nexport const LineChartSettings = z.object({\n x: z\n .string()\n .optional()\n .describe('Column for X axis, typically temporal (date/time)'),\n xInterval: TemporalInterval.optional().describe(\n 'Temporal binning interval: year, month, day, hour, etc.',\n ),\n yFields: z\n .array(YFieldConfig)\n .optional()\n .describe('Array of Y fields to plot, supports multiple lines'),\n showLegend: z\n .boolean()\n .optional()\n .default(true)\n .describe('Show interactive legend for toggling line visibility'),\n});\n\nexport type LineChartSettings = z.infer<typeof LineChartSettings>;\n\nexport const LineChartConfig = z.object({\n chartType: z.literal('line-chart'),\n settings: LineChartSettings,\n settingsOpen: z.boolean().optional(),\n dataPolicy: ChartDataPolicyOverrideConfig.optional(),\n});\n\nexport type LineChartConfig = z.infer<typeof LineChartConfig>;\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Spec } from '@uwdata/mosaic-spec';
|
|
2
2
|
import { LineChartSettings } from './schema';
|
|
3
|
-
|
|
3
|
+
import { CreateSpecOptions } from '../base-types';
|
|
4
|
+
export declare function createLineChartSpec(options: CreateSpecOptions<LineChartSettings>): Spec;
|
|
4
5
|
//# sourceMappingURL=spec.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../../../src/charts/chart-types/line-chart/spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAC,iBAAiB,EAAC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../../../src/charts/chart-types/line-chart/spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAC,iBAAiB,EAAC,MAAM,UAAU,CAAC;AAG3C,OAAO,EAAC,iBAAiB,EAAyB,MAAM,eAAe,CAAC;AAcxE,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,GAC5C,IAAI,CAsFN"}
|
|
@@ -1,90 +1,81 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
'#f4a261', // chart-5: hsl(27, 87%, 67%)
|
|
9
|
-
];
|
|
10
|
-
function getLineColor(fieldConfig, index) {
|
|
11
|
-
if (fieldConfig.color) {
|
|
12
|
-
return fieldConfig.color;
|
|
1
|
+
import { isTemporalType } from '../../../column-types-utils';
|
|
2
|
+
import { getChartTableReference } from '../base-types';
|
|
3
|
+
import { DEFAULT_CHART_FALLBACK_COLOR } from '../../../constants/chart-colors';
|
|
4
|
+
import { validateLineChartSettings } from './validation';
|
|
5
|
+
function getLegendLabel(yColumn, hasAggregation) {
|
|
6
|
+
if (hasAggregation && yColumn.aggregate) {
|
|
7
|
+
return `${yColumn.field} (${yColumn.aggregate.toUpperCase()})`;
|
|
13
8
|
}
|
|
14
|
-
|
|
15
|
-
return CHART_COLORS[index % CHART_COLORS.length];
|
|
9
|
+
return yColumn.field;
|
|
16
10
|
}
|
|
17
|
-
export function createLineChartSpec(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
if (!yFields || yFields.length === 0) {
|
|
22
|
-
throw new ChartSpecError('At least one Y field is required for line chart');
|
|
23
|
-
}
|
|
11
|
+
export function createLineChartSpec(options) {
|
|
12
|
+
const { dataTable, selectionName, settings } = options;
|
|
13
|
+
const { xColumn, yColumns, xInterval } = validateLineChartSettings(options);
|
|
14
|
+
const isXTemporal = isTemporalType(xColumn.type);
|
|
24
15
|
const plotMarks = [];
|
|
25
|
-
//
|
|
26
|
-
const dataSource =
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
// Generate lineY and text marks for each Y field
|
|
33
|
-
yFields.forEach((fieldConfig, index) => {
|
|
34
|
-
const color = getLineColor(fieldConfig, index);
|
|
35
|
-
const aggregate = fieldConfig.aggregate || 'sum';
|
|
16
|
+
// Data source always includes filterBy for brush
|
|
17
|
+
const dataSource = {
|
|
18
|
+
from: getChartTableReference(dataTable),
|
|
19
|
+
filterBy: '$brush',
|
|
20
|
+
};
|
|
21
|
+
// Generate lineY marks for each Y field
|
|
22
|
+
yColumns.forEach(({ color, column, aggregate }) => {
|
|
36
23
|
// When temporal aggregation is active, use bin for X and aggregation for Y
|
|
37
|
-
if (xInterval) {
|
|
24
|
+
if (isXTemporal && xInterval) {
|
|
38
25
|
// Use bin syntax for temporal aggregation
|
|
39
26
|
plotMarks.push({
|
|
40
27
|
mark: 'lineY',
|
|
41
28
|
data: dataSource,
|
|
42
|
-
x: { bin:
|
|
43
|
-
y: { [aggregate]:
|
|
29
|
+
x: { bin: xColumn.name, interval: xInterval },
|
|
30
|
+
y: { [aggregate]: column.name },
|
|
44
31
|
stroke: color,
|
|
45
32
|
});
|
|
46
|
-
// Text label with aggregation info
|
|
47
|
-
plotMarks.push({
|
|
48
|
-
mark: 'text',
|
|
49
|
-
data: dataSource,
|
|
50
|
-
x: { bin: x, interval: xInterval },
|
|
51
|
-
y: { [aggregate]: fieldConfig.field },
|
|
52
|
-
text: [`${fieldConfig.field} (${aggregate})`],
|
|
53
|
-
fill: color,
|
|
54
|
-
dx: 5,
|
|
55
|
-
dy: -5,
|
|
56
|
-
});
|
|
57
33
|
}
|
|
58
34
|
else {
|
|
59
35
|
// No aggregation - direct field references
|
|
60
36
|
plotMarks.push({
|
|
61
37
|
mark: 'lineY',
|
|
62
38
|
data: dataSource,
|
|
63
|
-
x,
|
|
64
|
-
y:
|
|
39
|
+
x: xColumn.name,
|
|
40
|
+
y: column.name,
|
|
65
41
|
stroke: color,
|
|
66
42
|
});
|
|
67
|
-
plotMarks.push({
|
|
68
|
-
mark: 'text',
|
|
69
|
-
data: dataSource,
|
|
70
|
-
x,
|
|
71
|
-
y: fieldConfig.field,
|
|
72
|
-
text: [fieldConfig.field],
|
|
73
|
-
fill: color,
|
|
74
|
-
dx: 5,
|
|
75
|
-
dy: -5,
|
|
76
|
-
});
|
|
77
43
|
}
|
|
78
44
|
});
|
|
79
|
-
// Add brush
|
|
80
|
-
|
|
81
|
-
|
|
45
|
+
// Add brush control only if selectionName is provided
|
|
46
|
+
if (selectionName) {
|
|
47
|
+
plotMarks.push({ select: 'intervalX', as: '$brush' });
|
|
48
|
+
}
|
|
49
|
+
const showLegend = settings.showLegend ?? true;
|
|
50
|
+
const plotSpec = {
|
|
82
51
|
plot: plotMarks,
|
|
83
|
-
|
|
52
|
+
name: 'lineChart',
|
|
53
|
+
xLabel: xColumn.name,
|
|
84
54
|
yLabel: undefined,
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
55
|
+
margins: {
|
|
56
|
+
left: 50,
|
|
57
|
+
right: 20,
|
|
58
|
+
top: 20,
|
|
59
|
+
bottom: 50,
|
|
60
|
+
},
|
|
61
|
+
colorDomain: yColumns.map((yColumn) => getLegendLabel({ field: yColumn.column.name, aggregate: yColumn.aggregate }, Boolean(isXTemporal && xInterval))),
|
|
62
|
+
colorRange: yColumns.map((yColumn) => yColumn.color ?? DEFAULT_CHART_FALLBACK_COLOR),
|
|
63
|
+
};
|
|
64
|
+
if (!showLegend) {
|
|
65
|
+
return {
|
|
66
|
+
...plotSpec,
|
|
67
|
+
params: { brush: { select: 'crossfilter' } },
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
vconcat: [
|
|
72
|
+
plotSpec,
|
|
73
|
+
{
|
|
74
|
+
legend: 'color',
|
|
75
|
+
for: 'lineChart',
|
|
76
|
+
columns: yColumns.length,
|
|
77
|
+
},
|
|
78
|
+
],
|
|
88
79
|
params: { brush: { select: 'crossfilter' } },
|
|
89
80
|
};
|
|
90
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../../src/charts/chart-types/line-chart/spec.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,cAAc,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../../src/charts/chart-types/line-chart/spec.ts"],"names":[],"mappings":"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","sourcesContent":["import type {Spec} from '@uwdata/mosaic-spec';\nimport {LineChartSettings} from './schema';\nimport {isTemporalType} from '../../../column-types-utils';\nimport {AggregateFunction} from '../../../schemas';\nimport {CreateSpecOptions, getChartTableReference} from '../base-types';\nimport {DEFAULT_CHART_FALLBACK_COLOR} from '../../../constants/chart-colors';\nimport {validateLineChartSettings} from './validation';\n\nfunction getLegendLabel(\n yColumn: {field: string; aggregate?: AggregateFunction},\n hasAggregation: boolean,\n): string {\n if (hasAggregation && yColumn.aggregate) {\n return `${yColumn.field} (${yColumn.aggregate.toUpperCase()})`;\n }\n return yColumn.field;\n}\n\nexport function createLineChartSpec(\n options: CreateSpecOptions<LineChartSettings>,\n): Spec {\n const {dataTable, selectionName, settings} = options;\n\n const {xColumn, yColumns, xInterval} = validateLineChartSettings(options);\n\n const isXTemporal = isTemporalType(xColumn.type);\n\n const plotMarks: unknown[] = [];\n\n // Data source always includes filterBy for brush\n const dataSource = {\n from: getChartTableReference(dataTable),\n filterBy: '$brush',\n };\n\n // Generate lineY marks for each Y field\n yColumns.forEach(({color, column, aggregate}) => {\n // When temporal aggregation is active, use bin for X and aggregation for Y\n if (isXTemporal && xInterval) {\n // Use bin syntax for temporal aggregation\n plotMarks.push({\n mark: 'lineY',\n data: dataSource,\n x: {bin: xColumn.name, interval: xInterval},\n y: {[aggregate]: column.name},\n stroke: color,\n });\n } else {\n // No aggregation - direct field references\n plotMarks.push({\n mark: 'lineY',\n data: dataSource,\n x: xColumn.name,\n y: column.name,\n stroke: color,\n });\n }\n });\n\n // Add brush control only if selectionName is provided\n if (selectionName) {\n plotMarks.push({select: 'intervalX', as: '$brush'});\n }\n\n const showLegend = settings.showLegend ?? true;\n\n const plotSpec = {\n plot: plotMarks,\n name: 'lineChart',\n xLabel: xColumn.name,\n yLabel: undefined,\n margins: {\n left: 50,\n right: 20,\n top: 20,\n bottom: 50,\n },\n colorDomain: yColumns.map((yColumn) =>\n getLegendLabel(\n {field: yColumn.column.name, aggregate: yColumn.aggregate},\n Boolean(isXTemporal && xInterval),\n ),\n ),\n colorRange: yColumns.map(\n (yColumn) => yColumn.color ?? DEFAULT_CHART_FALLBACK_COLOR,\n ),\n };\n\n if (!showLegend) {\n return {\n ...plotSpec,\n params: {brush: {select: 'crossfilter'}},\n } as Spec;\n }\n\n return {\n vconcat: [\n plotSpec,\n {\n legend: 'color',\n for: 'lineChart',\n columns: yColumns.length,\n },\n ],\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 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<{
|
|
@@ -28,11 +27,12 @@ export declare const LineChartToolParameters: z.ZodObject<{
|
|
|
28
27
|
avg: "avg";
|
|
29
28
|
}>>>;
|
|
30
29
|
}, z.core.$strip>>>>;
|
|
30
|
+
showLegend: z.ZodNonOptional<z.ZodDefault<z.ZodOptional<z.ZodBoolean>>>;
|
|
31
31
|
}, z.core.$strip>;
|
|
32
32
|
}, z.core.$strip>;
|
|
33
|
-
export type
|
|
34
|
-
export declare function createLineChartAiTool(
|
|
35
|
-
|
|
33
|
+
export type LineChartToolInput = z.infer<typeof LineChartToolInput>;
|
|
34
|
+
export declare function createLineChartAiTool({ databaseAdapter, addChart, maxDataPoints, }: ChartToolParams): import("ai").Tool<{
|
|
35
|
+
tableName: string;
|
|
36
36
|
reasoning: string;
|
|
37
37
|
settings: {
|
|
38
38
|
x: string;
|
|
@@ -42,23 +42,27 @@ export declare function createLineChartAiTool(deps: DashboardToolDeps): import("
|
|
|
42
42
|
aggregate: "sum" | "max" | "min" | "avg";
|
|
43
43
|
color?: string | undefined;
|
|
44
44
|
}[];
|
|
45
|
+
showLegend: boolean;
|
|
45
46
|
};
|
|
46
|
-
|
|
47
|
-
tableName?: string | undefined;
|
|
47
|
+
title?: string | undefined;
|
|
48
48
|
panelId?: string | undefined;
|
|
49
|
-
}, {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
details?: undefined;
|
|
61
|
-
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;
|
|
62
60
|
};
|
|
63
|
-
|
|
61
|
+
settingsOpen?: boolean | undefined;
|
|
62
|
+
dataPolicy?: {
|
|
63
|
+
disabled?: boolean | undefined;
|
|
64
|
+
maxRows?: number | undefined;
|
|
65
|
+
reason?: string | undefined;
|
|
66
|
+
} | undefined;
|
|
67
|
+
}>>;
|
|
64
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 ${
|
|
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.
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
inputSchema: LineChartToolParameters,
|
|
33
|
-
execute: async (params, context) => {
|
|
29
|
+
Do NOT use for: single point distributions (use histogram), categorical counts (use count-plot), two-variable correlations (use scatter-plot).`,
|
|
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,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Find the first unused color from the palette.
|
|
3
|
+
* Scans the used colors and returns the first palette color not in the set.
|
|
4
|
+
* If all colors are used, returns the first color.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getUnusedColor(colors: readonly string[], usedColors: string[]): string;
|
|
7
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/charts/chart-types/line-chart/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,UAAU,EAAE,MAAM,EAAE,GACnB,MAAM,CAYR"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Find the first unused color from the palette.
|
|
3
|
+
* Scans the used colors and returns the first palette color not in the set.
|
|
4
|
+
* If all colors are used, returns the first color.
|
|
5
|
+
*/
|
|
6
|
+
export function getUnusedColor(colors, usedColors) {
|
|
7
|
+
const usedSet = new Set(usedColors);
|
|
8
|
+
// Find first unused color
|
|
9
|
+
for (const color of colors) {
|
|
10
|
+
if (!usedSet.has(color)) {
|
|
11
|
+
return color;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
// All colors used, fallback to first color
|
|
15
|
+
return colors[0];
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/charts/chart-types/line-chart/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAyB,EACzB,UAAoB;IAEpB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAEpC,0BAA0B;IAC1B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,OAAO,MAAM,CAAC,CAAC,CAAE,CAAC;AACpB,CAAC","sourcesContent":["/**\n * Find the first unused color from the palette.\n * Scans the used colors and returns the first palette color not in the set.\n * If all colors are used, returns the first color.\n */\nexport function getUnusedColor(\n colors: readonly string[],\n usedColors: string[],\n): string {\n const usedSet = new Set(usedColors);\n\n // Find first unused color\n for (const color of colors) {\n if (!usedSet.has(color)) {\n return color;\n }\n }\n\n // All colors used, fallback to first color\n return colors[0]!;\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
|