This is an automated email from the ASF dual-hosted git repository. rusackas pushed a commit to branch feat/glyph-single-file in repository https://gitbox.apache.org/repos/asf/superset.git
commit 522863d65c8d2c07c65bd1dd4fc169ffe14ae3ee Author: Evan Rusackas <[email protected]> AuthorDate: Mon May 25 19:41:11 2026 -0700 feat(glyph): consolidate plugin-chart-ag-grid-table to defineChart() Replace the legacy ChartPlugin class wrapper with defineChart(). Same light-touch consolidation used for plugin-chart-table: keep buildQuery.ts, transformProps.ts, controlPanel.tsx, and AgGridTableChart as separate modules and just import them into the thin defineChart entry. 210 plugin tests still pass. Co-Authored-By: Claude Sonnet 4.6 <[email protected]> --- .../plugin-chart-ag-grid-table/src/index.ts | 87 -------------------- .../plugin-chart-ag-grid-table/src/index.tsx | 96 ++++++++++++++++++++++ 2 files changed, 96 insertions(+), 87 deletions(-) diff --git a/superset-frontend/plugins/plugin-chart-ag-grid-table/src/index.ts b/superset-frontend/plugins/plugin-chart-ag-grid-table/src/index.ts deleted file mode 100644 index d17af0908b0..00000000000 --- a/superset-frontend/plugins/plugin-chart-ag-grid-table/src/index.ts +++ /dev/null @@ -1,87 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -import { t } from '@apache-superset/core/translation'; -import { Behavior, ChartMetadata, ChartPlugin } from '@superset-ui/core'; -import transformProps from './transformProps'; -import thumbnail from './images/thumbnail.png'; -import thumbnailDark from './images/thumbnail-dark.png'; -import example1 from './images/Table.jpg'; -import example1Dark from './images/Table-dark.jpg'; -import example2 from './images/Table2.jpg'; -import example2Dark from './images/Table2-dark.jpg'; -import example3 from './images/Table3.jpg'; -import example3Dark from './images/Table3-dark.jpg'; -import controlPanel from './controlPanel'; -import buildQuery from './buildQuery'; -import { TableChartFormData, TableChartProps } from './types'; - -// must export something for the module to be exist in dev mode -export { default as __hack__ } from './types'; -export * from './types'; -export { - convertAgGridStateToOwnState, - convertSortModel, - convertColumnState, - convertFilterModel, -} from './stateConversion'; - -const metadata = new ChartMetadata({ - behaviors: [ - Behavior.InteractiveChart, - Behavior.DrillToDetail, - Behavior.DrillBy, - ], - category: t('Table'), - canBeAnnotationTypes: ['EVENT', 'INTERVAL'], - description: t( - 'Classic row-by-column spreadsheet like view of a dataset. Use tables to showcase a view into the underlying data or to show aggregated metrics.', - ), - exampleGallery: [ - { url: example1, urlDark: example1Dark }, - { url: example2, urlDark: example2Dark }, - { url: example3, urlDark: example3Dark }, - ], - name: t('Table V2'), - tags: [ - t('Additive'), - t('Business'), - t('Pattern'), - t('Featured'), - t('Report'), - t('Sequential'), - t('Tabular'), - ], - thumbnail, - thumbnailDark, -}); - -export default class AgGridTableChartPlugin extends ChartPlugin< - TableChartFormData, - TableChartProps -> { - constructor() { - super({ - loadChart: () => import('./AgGridTableChart'), - metadata, - transformProps, - controlPanel, - buildQuery, - }); - } -} diff --git a/superset-frontend/plugins/plugin-chart-ag-grid-table/src/index.tsx b/superset-frontend/plugins/plugin-chart-ag-grid-table/src/index.tsx new file mode 100644 index 00000000000..36b3003eede --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-ag-grid-table/src/index.tsx @@ -0,0 +1,96 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { t } from '@apache-superset/core/translation'; +import { Behavior } from '@superset-ui/core'; +import { ControlPanelSectionConfig } from '@superset-ui/chart-controls'; +import { defineChart } from '@superset-ui/glyph-core'; +import AgGridTableChart from './AgGridTableChart'; +import transformProps from './transformProps'; +import controlPanel from './controlPanel'; +import buildQuery from './buildQuery'; +import { TableChartProps } from './types'; +import thumbnail from './images/thumbnail.png'; +import thumbnailDark from './images/thumbnail-dark.png'; +import example1 from './images/Table.jpg'; +import example1Dark from './images/Table-dark.jpg'; +import example2 from './images/Table2.jpg'; +import example2Dark from './images/Table2-dark.jpg'; +import example3 from './images/Table3.jpg'; +import example3Dark from './images/Table3-dark.jpg'; + +// must export something for the module to be exist in dev mode +export { default as __hack__ } from './types'; +export * from './types'; +export { + convertAgGridStateToOwnState, + convertSortModel, + convertColumnState, + convertFilterModel, +} from './stateConversion'; + +const AgGridTableChartPlugin = defineChart<Record<string, never>, TableChartProps>({ + metadata: { + name: t('Table V2'), + description: t( + 'Classic row-by-column spreadsheet like view of a dataset. Use tables to showcase a view into the underlying data or to show aggregated metrics.', + ), + category: t('Table'), + behaviors: [ + Behavior.InteractiveChart, + Behavior.DrillToDetail, + Behavior.DrillBy, + ], + canBeAnnotationTypes: ['EVENT', 'INTERVAL'], + tags: [ + t('Additive'), + t('Business'), + t('Pattern'), + t('Featured'), + t('Report'), + t('Sequential'), + t('Tabular'), + ], + thumbnail, + thumbnailDark, + exampleGallery: [ + { url: example1, urlDark: example1Dark }, + { url: example2, urlDark: example2Dark }, + { url: example3, urlDark: example3Dark }, + ], + }, + arguments: {}, + suppressQuerySection: true, + prependSections: (controlPanel.controlPanelSections?.filter( + (s): s is ControlPanelSectionConfig => s !== null && s !== undefined, + ) ?? []) as ControlPanelSectionConfig[], + additionalControlOverrides: controlPanel.controlOverrides as Record< + string, + Record<string, unknown> + >, + formDataOverrides: controlPanel.formDataOverrides, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + buildQuery: (formData: any) => buildQuery(formData), + // eslint-disable-next-line @typescript-eslint/no-explicit-any + transform: chartProps => transformProps(chartProps as any) as any, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + render: props => <AgGridTableChart {...(props as any)} />, +}); + +export { AgGridTableChartPlugin }; +export default AgGridTableChartPlugin;
