Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ export type ColorRampOptions = {
selectedMode: ClassificationMode | undefined;
};

const isValidNumberOfShades = (value: number | undefined) => {
return value !== undefined && !isNaN(value) && value > 0;
};

const ColorRamp: React.FC<IColorRampProps> = ({
layerParams,
modeOptions,
Expand Down Expand Up @@ -84,6 +88,7 @@ const ColorRamp: React.FC<IColorRampProps> = ({
) : (
<Button
className="jp-Dialog-button jp-mod-accept jp-mod-styled"
disabled={!isValidNumberOfShades(numberOfShades)}
onClick={() =>
classifyFunc(
selectedMode,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -304,11 +304,8 @@ const SingleBandPseudoColor: React.FC<ISymbologyDialogProps> = ({
const currentBand = bandRows[selectedBand - 1];
const source = model.getSource(layer?.parameters?.source);
const sourceInfo = source?.parameters?.urls[0];
if (!numberOfShades) {
console.warn('No number of shades provided');
return;
}
const nClasses = selectedMode === 'continuous' ? 52 : +numberOfShades;
const nClasses =
selectedMode === 'continuous' ? 52 : (numberOfShades as number);

setIsLoading(true);
switch (selectedMode) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -230,40 +230,35 @@ const Graduated: React.FC<ISymbologyTabbedDialogWithAttributesProps> = ({

const values = Array.from(selectableAttributesAndValues[selectedAttribute]);

if (!numberOfShades) {
console.warn('No number of shades provided');
return;
}

switch (selectedMode) {
case 'quantile':
stops = VectorClassifications.calculateQuantileBreaks(
values,
+numberOfShades,
numberOfShades as number,
);
break;
case 'equal interval':
stops = VectorClassifications.calculateEqualIntervalBreaks(
values,
+numberOfShades,
numberOfShades as number,
);
break;
case 'jenks':
stops = VectorClassifications.calculateJenksBreaks(
values,
+numberOfShades,
numberOfShades as number,
);
break;
case 'pretty':
stops = VectorClassifications.calculatePrettyBreaks(
values,
+numberOfShades,
numberOfShades as number,
);
break;
case 'logarithmic':
stops = VectorClassifications.calculateLogarithmicBreaks(
values,
+numberOfShades,
numberOfShades as number,
);
break;
default:
Expand All @@ -277,7 +272,7 @@ const Graduated: React.FC<ISymbologyTabbedDialogWithAttributesProps> = ({
: Utils.getValueColorPairs(
stops,
selectedRamp,
+numberOfShades,
numberOfShades as number,
reverseRamp,
);

Expand Down
Loading