You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by mi...@apache.org on 2023/10/13 12:15:12 UTC
[superset] 03/06: fix(Charts): Set max row limit + removed the option to use an empty row limit value (#25579)
This is an automated email from the ASF dual-hosted git repository.
michaelsmolina pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/superset.git
commit 732c5b1f0808a1eef95c0faaa0e8fc0366cae84b
Author: Corbin Bullard <co...@gmail.com>
AuthorDate: Wed Oct 11 13:31:21 2023 -0400
fix(Charts): Set max row limit + removed the option to use an empty row limit value (#25579)
(cherry picked from commit f556ef53f3177746ec2526b4b963da4ef00c2d58)
---
.../src/shared-controls/sharedControls.tsx | 9 +++++++-
.../superset-ui-core/src/validator/index.ts | 1 +
.../src/validator/validateMaxValue.ts | 8 ++++++++
.../validator/validateMaxValue.test.ts} | 24 +++++++++++++++++-----
4 files changed, 36 insertions(+), 6 deletions(-)
diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx
index abf5153bb0..69fa8a6864 100644
--- a/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx
+++ b/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx
@@ -47,6 +47,8 @@ import {
isDefined,
hasGenericChartAxes,
NO_TIME_RANGE,
+ validateNonEmpty,
+ validateMaxValue,
} from '@superset-ui/core';
import {
@@ -245,7 +247,12 @@ const row_limit: SharedControlConfig<'SelectControl'> = {
type: 'SelectControl',
freeForm: true,
label: t('Row limit'),
- validators: [legacyValidateInteger],
+ clearable: false,
+ validators: [
+ validateNonEmpty,
+ legacyValidateInteger,
+ v => validateMaxValue(v, 100000),
+ ],
default: 10000,
choices: formatSelectOptions(ROW_LIMIT_OPTIONS),
description: t('Limits the number of rows that get displayed.'),
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..fb37328c02 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 validateMaxValue } from './validateMaxValue';
diff --git a/superset-frontend/packages/superset-ui-core/src/validator/validateMaxValue.ts b/superset-frontend/packages/superset-ui-core/src/validator/validateMaxValue.ts
new file mode 100644
index 0000000000..24c1da1c79
--- /dev/null
+++ b/superset-frontend/packages/superset-ui-core/src/validator/validateMaxValue.ts
@@ -0,0 +1,8 @@
+import { t } from '../translation';
+
+export default function validateMaxValue(v: unknown, max: Number) {
+ if (Number(v) > +max) {
+ return t('Value cannot exceed %s', max);
+ }
+ return false;
+}
diff --git a/superset-frontend/packages/superset-ui-core/src/validator/index.ts b/superset-frontend/packages/superset-ui-core/test/validator/validateMaxValue.test.ts
similarity index 52%
copy from superset-frontend/packages/superset-ui-core/src/validator/index.ts
copy to superset-frontend/packages/superset-ui-core/test/validator/validateMaxValue.test.ts
index 532efcc959..70f3d332c5 100644
--- a/superset-frontend/packages/superset-ui-core/src/validator/index.ts
+++ b/superset-frontend/packages/superset-ui-core/test/validator/validateMaxValue.test.ts
@@ -17,8 +17,22 @@
* 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 { validateMaxValue } from '@superset-ui/core';
+import './setup';
+
+describe('validateInteger()', () => {
+ it('returns the warning message if invalid', () => {
+ expect(validateMaxValue(10.1, 10)).toBeTruthy();
+ expect(validateMaxValue(1, 0)).toBeTruthy();
+ expect(validateMaxValue('2', 1)).toBeTruthy();
+ });
+ it('returns false if the input is valid', () => {
+ expect(validateMaxValue(0, 1)).toBeFalsy();
+ expect(validateMaxValue(10, 10)).toBeFalsy();
+ expect(validateMaxValue(undefined, 1)).toBeFalsy();
+ expect(validateMaxValue(NaN, NaN)).toBeFalsy();
+ expect(validateMaxValue(null, 1)).toBeFalsy();
+ expect(validateMaxValue('1', 1)).toBeFalsy();
+ expect(validateMaxValue('a', 1)).toBeFalsy();
+ });
+});