This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new af58784040 feat(deckgl-map): use an arbitraty Mabpox style URL
(#26027) (#26031)
af58784040 is described below
commit af587840403d83a7da7fb0f57bc10ad2335d4eeb
Author: François Travais <[email protected]>
AuthorDate: Tue Nov 28 23:32:19 2023 +0100
feat(deckgl-map): use an arbitraty Mabpox style URL (#26027) (#26031)
Signed-off-by: François Travais <[email protected]>
---
.../superset-ui-core/src/validator/index.ts | 1 +
.../{index.ts => validateMapboxStylesUrl.ts} | 22 ++++++++++----
.../validator/validateMapboxStylesUrl.test.ts} | 35 ++++++++++++++++++----
.../src/controlPanel.ts | 14 +++++++--
.../src/Multi/controlPanel.ts | 3 +-
.../src/layers/Arc/controlPanel.ts | 5 +---
.../src/layers/Contour/controlPanel.ts | 4 +--
.../src/layers/Grid/controlPanel.ts | 3 +-
.../src/layers/Heatmap/controlPanel.ts | 3 +-
.../src/layers/Hex/controlPanel.ts | 4 +--
.../src/layers/Path/controlPanel.ts | 3 +-
.../src/layers/Scatter/controlPanel.ts | 5 +---
.../src/layers/Screengrid/controlPanel.ts | 5 +---
.../src/utilities/Shared_DeckGL.jsx | 8 ++++-
14 files changed, 81 insertions(+), 34 deletions(-)
diff --git a/superset-frontend/packages/superset-ui-core/src/validator/index.ts
b/superset-frontend/packages/superset-ui-core/src/validator/index.ts
index 532efcc959..169675b682 100644
--- a/superset-frontend/packages/superset-ui-core/src/validator/index.ts
+++ b/superset-frontend/packages/superset-ui-core/src/validator/index.ts
@@ -22,3 +22,4 @@ export { default as legacyValidateNumber } from
'./legacyValidateNumber';
export { default as validateInteger } from './validateInteger';
export { default as validateNumber } from './validateNumber';
export { default as validateNonEmpty } from './validateNonEmpty';
+export { default as validateMapboxStylesUrl } from './validateMapboxStylesUrl';
diff --git a/superset-frontend/packages/superset-ui-core/src/validator/index.ts
b/superset-frontend/packages/superset-ui-core/src/validator/validateMapboxStylesUrl.ts
similarity index 67%
copy from superset-frontend/packages/superset-ui-core/src/validator/index.ts
copy to
superset-frontend/packages/superset-ui-core/src/validator/validateMapboxStylesUrl.ts
index 532efcc959..bfbbaa7168 100644
--- a/superset-frontend/packages/superset-ui-core/src/validator/index.ts
+++
b/superset-frontend/packages/superset-ui-core/src/validator/validateMapboxStylesUrl.ts
@@ -17,8 +17,20 @@
* under the License.
*/
-export { default as legacyValidateInteger } from './legacyValidateInteger';
-export { default as legacyValidateNumber } from './legacyValidateNumber';
-export { default as validateInteger } from './validateInteger';
-export { default as validateNumber } from './validateNumber';
-export { default as validateNonEmpty } from './validateNonEmpty';
+import { t } from '../translation';
+
+/**
+ * Validate a [Mapbox styles
URL](https://docs.mapbox.com/help/glossary/style-url/)
+ * @param v
+ */
+export default function validateMapboxStylesUrl(v: unknown) {
+ if (
+ typeof v === 'string' &&
+ v.trim().length > 0 &&
+ v.trim().startsWith('mapbox://styles/')
+ ) {
+ return false;
+ }
+
+ return t('is expected to be a Mapbox URL');
+}
diff --git a/superset-frontend/packages/superset-ui-core/src/validator/index.ts
b/superset-frontend/packages/superset-ui-core/test/validator/validateMapboxStylesUrl.test.ts
similarity index 50%
copy from superset-frontend/packages/superset-ui-core/src/validator/index.ts
copy to
superset-frontend/packages/superset-ui-core/test/validator/validateMapboxStylesUrl.test.ts
index 532efcc959..dbd5822666 100644
--- a/superset-frontend/packages/superset-ui-core/src/validator/index.ts
+++
b/superset-frontend/packages/superset-ui-core/test/validator/validateMapboxStylesUrl.test.ts
@@ -1,4 +1,4 @@
-/*
+/**
* 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
@@ -16,9 +16,32 @@
* specific language governing permissions and limitations
* under the License.
*/
+import { validateMapboxStylesUrl } from '@superset-ui/core';
+import './setup';
-export { default as legacyValidateInteger } from './legacyValidateInteger';
-export { default as legacyValidateNumber } from './legacyValidateNumber';
-export { default as validateInteger } from './validateInteger';
-export { default as validateNumber } from './validateNumber';
-export { default as validateNonEmpty } from './validateNonEmpty';
+describe('validateMapboxStylesUrl', () => {
+ it('should validate mapbox style URLs', () => {
+ expect(
+ validateMapboxStylesUrl('mapbox://styles/mapbox/streets-v9'),
+ ).toEqual(false);
+ expect(
+ validateMapboxStylesUrl(
+ 'mapbox://styles/foobar/clp2dr5r4008a01pcg4ad45m8',
+ ),
+ ).toEqual(false);
+ });
+
+ [
+ 123,
+ ['mapbox://styles/mapbox/streets-v9'],
+ { url: 'mapbox://styles/mapbox/streets-v9' },
+ 'https://superset.apache.org/',
+ 'mapbox://tileset/mapbox/streets-v9',
+ ].forEach(value => {
+ it(`should not validate ${value}`, () => {
+ expect(validateMapboxStylesUrl(value)).toEqual(
+ 'is expected to be a Mapbox URL',
+ );
+ });
+ });
+});
diff --git
a/superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts
b/superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts
index 1dc75d96ef..e0b6524609 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts
+++ b/superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts
@@ -16,7 +16,12 @@
* specific language governing permissions and limitations
* under the License.
*/
-import { FeatureFlag, isFeatureEnabled, t } from '@superset-ui/core';
+import {
+ FeatureFlag,
+ isFeatureEnabled,
+ t,
+ validateMapboxStylesUrl,
+} from '@superset-ui/core';
import {
columnChoices,
ControlPanelConfig,
@@ -224,6 +229,8 @@ const config: ControlPanelConfig = {
label: t('Map Style'),
clearable: false,
renderTrigger: true,
+ freeForm: true,
+ validators: [validateMapboxStylesUrl],
choices: [
['mapbox://styles/mapbox/streets-v9', t('Streets')],
['mapbox://styles/mapbox/dark-v9', t('Dark')],
@@ -236,7 +243,10 @@ const config: ControlPanelConfig = {
['mapbox://styles/mapbox/outdoors-v9', t('Outdoors')],
],
default: 'mapbox://styles/mapbox/light-v9',
- description: t('Base layer map style'),
+ description: t(
+ 'Base layer map style. See Mapbox documentation: %s',
+ 'https://docs.mapbox.com/help/glossary/style-url/',
+ ),
},
},
],
diff --git
a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/Multi/controlPanel.ts
b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/Multi/controlPanel.ts
index 8571fe23d0..8f4df671c3 100644
---
a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/Multi/controlPanel.ts
+++
b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/Multi/controlPanel.ts
@@ -27,7 +27,8 @@ export default {
label: t('Map'),
expanded: true,
controlSetRows: [
- [mapboxStyle, viewport],
+ [mapboxStyle],
+ [viewport],
[
{
name: 'deck_slices',
diff --git
a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/controlPanel.ts
b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/controlPanel.ts
index 3794ef38da..664f389a0b 100644
---
a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/controlPanel.ts
+++
b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/controlPanel.ts
@@ -76,10 +76,7 @@ const config: ControlPanelConfig = {
},
{
label: t('Map'),
- controlSetRows: [
- [mapboxStyle, viewport],
- [autozoom, null],
- ],
+ controlSetRows: [[mapboxStyle], [autozoom, viewport]],
},
{
label: t('Arc'),
diff --git
a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Contour/controlPanel.ts
b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Contour/controlPanel.ts
index 238029aada..407cab3162 100644
---
a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Contour/controlPanel.ts
+++
b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Contour/controlPanel.ts
@@ -52,8 +52,8 @@ const config: ControlPanelConfig = {
label: t('Map'),
expanded: true,
controlSetRows: [
- [mapboxStyle, viewport],
- [autozoom],
+ [mapboxStyle],
+ [autozoom, viewport],
[
{
name: 'cellSize',
diff --git
a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Grid/controlPanel.ts
b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Grid/controlPanel.ts
index 9b8e33d739..fa9a03a8f3 100644
---
a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Grid/controlPanel.ts
+++
b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Grid/controlPanel.ts
@@ -53,7 +53,8 @@ const config: ControlPanelConfig = {
{
label: t('Map'),
controlSetRows: [
- [mapboxStyle, viewport],
+ [mapboxStyle],
+ [viewport],
['color_scheme'],
[autozoom],
[gridSize],
diff --git
a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Heatmap/controlPanel.ts
b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Heatmap/controlPanel.ts
index 6fa41c2e21..fd343eed16 100644
---
a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Heatmap/controlPanel.ts
+++
b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Heatmap/controlPanel.ts
@@ -99,7 +99,8 @@ const config: ControlPanelConfig = {
{
label: t('Map'),
controlSetRows: [
- [mapboxStyle, viewport],
+ [mapboxStyle],
+ [viewport],
['linear_color_scheme'],
[autozoom],
[
diff --git
a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.ts
b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.ts
index 2f9293c521..8865ed0052 100644
---
a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.ts
+++
b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.ts
@@ -53,8 +53,8 @@ const config: ControlPanelConfig = {
{
label: t('Map'),
controlSetRows: [
- [mapboxStyle, viewport],
- ['color_scheme'],
+ [mapboxStyle],
+ ['color_scheme', viewport],
[autozoom],
[gridSize],
[extruded],
diff --git
a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Path/controlPanel.ts
b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Path/controlPanel.ts
index 80691efa6b..b0403b3596 100644
---
a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Path/controlPanel.ts
+++
b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Path/controlPanel.ts
@@ -67,7 +67,8 @@ const config: ControlPanelConfig = {
label: t('Map'),
expanded: true,
controlSetRows: [
- [mapboxStyle, viewport],
+ [mapboxStyle],
+ [viewport],
['color_picker'],
[lineWidth],
[
diff --git
a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts
b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts
index ef3d45a956..9afeb1b415 100644
---
a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts
+++
b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts
@@ -62,10 +62,7 @@ const config: ControlPanelConfig = {
{
label: t('Map'),
expanded: true,
- controlSetRows: [
- [mapboxStyle, viewport],
- [autozoom, null],
- ],
+ controlSetRows: [[mapboxStyle], [autozoom, viewport]],
},
{
label: t('Point Size'),
diff --git
a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Screengrid/controlPanel.ts
b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Screengrid/controlPanel.ts
index caf052581c..82aeda1745 100644
---
a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Screengrid/controlPanel.ts
+++
b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Screengrid/controlPanel.ts
@@ -52,10 +52,7 @@ const config: ControlPanelConfig = {
},
{
label: t('Map'),
- controlSetRows: [
- [mapboxStyle, viewport],
- [autozoom, null],
- ],
+ controlSetRows: [[mapboxStyle], [autozoom, viewport]],
},
{
label: t('Grid'),
diff --git
a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx
b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx
index 9a123e91c3..5b307efd90 100644
---
a/superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx
+++
b/superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx
@@ -25,6 +25,7 @@ import {
isFeatureEnabled,
t,
validateNonEmpty,
+ validateMapboxStylesUrl,
} from '@superset-ui/core';
import { D3_FORMAT_OPTIONS, sharedControls } from
'@superset-ui/chart-controls';
import { columnChoices, PRIMARY_COLOR } from './controls';
@@ -370,6 +371,8 @@ export const mapboxStyle = {
label: t('Map Style'),
clearable: false,
renderTrigger: true,
+ freeForm: true,
+ validators: [validateMapboxStylesUrl],
choices: [
['mapbox://styles/mapbox/streets-v9', t('Streets')],
['mapbox://styles/mapbox/dark-v9', t('Dark')],
@@ -379,7 +382,10 @@ export const mapboxStyle = {
['mapbox://styles/mapbox/outdoors-v9', t('Outdoors')],
],
default: 'mapbox://styles/mapbox/light-v9',
- description: t('Base layer map style'),
+ description: t(
+ 'Base layer map style. See Mapbox documentation: %s',
+ 'https://docs.mapbox.com/help/glossary/style-url/',
+ ),
},
};