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);
-}

Reply via email to