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 5b0d8953224331875c3159a71f2673ea1a2c9633 Author: Evan Rusackas <[email protected]> AuthorDate: Thu May 14 18:51:46 2026 -0700 feat(glyph): consolidate deckgl Hex layer to defineChart() Collapse multi-file plugin into single index.tsx. Hex uses shared buildSpatialQuery/transformSpatialProps + categorical color scheme + dynamic aggregation function (sum/min/max/mean/median/count/etc). Hex.tsx component stays as sibling for Multi. Co-Authored-By: Claude Sonnet 4.6 <[email protected]> --- .../src/layers/Hex/buildQuery.ts | 29 ----------- .../preset-chart-deckgl/src/layers/Hex/index.ts | 53 -------------------- .../src/layers/Hex/{controlPanel.ts => index.tsx} | 58 ++++++++++++++++++---- .../src/layers/Hex/transformProps.ts | 24 --------- 4 files changed, 49 insertions(+), 115 deletions(-) diff --git a/superset-frontend/plugins/preset-chart-deckgl/src/layers/Hex/buildQuery.ts b/superset-frontend/plugins/preset-chart-deckgl/src/layers/Hex/buildQuery.ts deleted file mode 100644 index d5b9a56a131..00000000000 --- a/superset-frontend/plugins/preset-chart-deckgl/src/layers/Hex/buildQuery.ts +++ /dev/null @@ -1,29 +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 { SpatialFormData, buildSpatialQuery } from '../spatialUtils'; - -export interface DeckHexFormData extends SpatialFormData { - extruded?: boolean; - js_agg_function?: string; - grid_size?: number; -} - -export default function buildQuery(formData: DeckHexFormData) { - return buildSpatialQuery(formData); -} diff --git a/superset-frontend/plugins/preset-chart-deckgl/src/layers/Hex/index.ts b/superset-frontend/plugins/preset-chart-deckgl/src/layers/Hex/index.ts deleted file mode 100644 index 0c95e97a2b7..00000000000 --- a/superset-frontend/plugins/preset-chart-deckgl/src/layers/Hex/index.ts +++ /dev/null @@ -1,53 +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 { ChartMetadata, ChartPlugin, Behavior } from '@superset-ui/core'; -import thumbnail from './images/thumbnail.png'; -import thumbnailDark from './images/thumbnail-dark.png'; -import example from './images/example.png'; -import exampleDark from './images/example-dark.png'; -import buildQuery from './buildQuery'; -import transformProps from './transformProps'; -import controlPanel from './controlPanel'; - -const metadata = new ChartMetadata({ - category: t('Map'), - credits: ['https://uber.github.io/deck.gl'], - description: t( - 'Overlays a hexagonal grid on a map, and aggregates data within the boundary of each cell.', - ), - exampleGallery: [{ url: example, urlDark: exampleDark }], - name: t('deck.gl 3D Hexagon'), - thumbnail, - thumbnailDark, - tags: [t('deckGL'), t('3D'), t('Geo'), t('Comparison')], - behaviors: [Behavior.InteractiveChart], -}); - -export default class HexChartPlugin extends ChartPlugin { - constructor() { - super({ - buildQuery, - loadChart: () => import('./Hex'), - controlPanel, - metadata, - transformProps, - }); - } -} diff --git a/superset-frontend/plugins/preset-chart-deckgl/src/layers/Hex/controlPanel.ts b/superset-frontend/plugins/preset-chart-deckgl/src/layers/Hex/index.tsx similarity index 59% rename from superset-frontend/plugins/preset-chart-deckgl/src/layers/Hex/controlPanel.ts rename to superset-frontend/plugins/preset-chart-deckgl/src/layers/Hex/index.tsx index d1f53eae519..dd6e3500575 100644 --- a/superset-frontend/plugins/preset-chart-deckgl/src/layers/Hex/controlPanel.ts +++ b/superset-frontend/plugins/preset-chart-deckgl/src/layers/Hex/index.tsx @@ -16,11 +16,16 @@ * specific language governing permissions and limitations * under the License. */ -import { - ControlPanelConfig, - getStandardizedControls, -} from '@superset-ui/chart-controls'; import { t } from '@apache-superset/core/translation'; +import { Behavior } from '@superset-ui/core'; +import { getStandardizedControls } from '@superset-ui/chart-controls'; +import { defineChart } from '@superset-ui/glyph-core'; +import HexComponent from './Hex'; +import { + SpatialFormData, + buildSpatialQuery, + transformSpatialProps, +} from '../spatialUtils'; import { autozoom, extruded, @@ -40,9 +45,39 @@ import { tooltipTemplate, } from '../../utilities/Shared_DeckGL'; import { COLOR_SCHEME_TYPES } from '../../utilities/utils'; +import thumbnail from './images/thumbnail.png'; +import thumbnailDark from './images/thumbnail-dark.png'; +import example from './images/example.png'; +import exampleDark from './images/example-dark.png'; + +// ─── Types ─────────────────────────────────────────────────────────────────── -const config: ControlPanelConfig = { - controlPanelSections: [ +export interface DeckHexFormData extends SpatialFormData { + extruded?: boolean; + js_agg_function?: string; + grid_size?: number; +} + +// ─── Plugin definition ─────────────────────────────────────────────────────── + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export default defineChart<Record<string, never>, any>({ + metadata: { + name: t('deck.gl 3D Hexagon'), + description: t( + 'Overlays a hexagonal grid on a map, and aggregates data within the boundary of each cell.', + ), + category: t('Map'), + credits: ['https://uber.github.io/deck.gl'], + behaviors: [Behavior.InteractiveChart], + tags: [t('deckGL'), t('3D'), t('Geo'), t('Comparison')], + thumbnail, + thumbnailDark, + exampleGallery: [{ url: example, urlDark: exampleDark }], + }, + arguments: {}, + suppressQuerySection: true, + prependSections: [ { label: t('Query'), expanded: true, @@ -115,6 +150,11 @@ const config: ControlPanelConfig = { ...formData, size: getStandardizedControls().shiftMetric(), }), -}; - -export default config; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + buildQuery: (formData: any) => buildSpatialQuery(formData as DeckHexFormData), + transform: chartProps => transformSpatialProps(chartProps), + render: ({ transformedProps }) => ( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + <HexComponent {...(transformedProps as any)} /> + ), +}); diff --git a/superset-frontend/plugins/preset-chart-deckgl/src/layers/Hex/transformProps.ts b/superset-frontend/plugins/preset-chart-deckgl/src/layers/Hex/transformProps.ts deleted file mode 100644 index 4b8f437d7fc..00000000000 --- a/superset-frontend/plugins/preset-chart-deckgl/src/layers/Hex/transformProps.ts +++ /dev/null @@ -1,24 +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 { ChartProps } from '@superset-ui/core'; -import { transformSpatialProps } from '../spatialUtils'; - -export default function transformProps(chartProps: ChartProps) { - return transformSpatialProps(chartProps); -}
