Skip to content
This repository has been archived by the owner on Dec 10, 2021. It is now read-only.

Commit

Permalink
fix: Color consistency (#1406)
Browse files Browse the repository at this point in the history
* Replace color in scheme statically

* Set color statically and re-use instance

* Fix tests and clean up

* Improve comments

* Refactor and simplify

* Update tests

* Remove unnecessary ColorMapControl

* Remove unnecessary const

* Remove control label_colors
  • Loading branch information
geido committed Nov 2, 2021
1 parent 412bac4 commit c54aa08
Show file tree
Hide file tree
Showing 30 changed files with 33 additions and 70 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ export const datasourceAndVizType: ControlPanelSectionConfig = {

export const colorScheme: ControlPanelSectionConfig = {
label: t('Color Scheme'),
controlSetRows: [['color_scheme', 'label_colors']],
controlSetRows: [['color_scheme']],
};

export const annotations: ControlPanelSectionConfig = {
Expand Down
14 changes: 0 additions & 14 deletions packages/superset-ui-chart-controls/src/shared-controls/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -478,19 +478,6 @@ const color_scheme: SharedControlConfig<'ColorSchemeControl'> = {
schemes: () => categoricalSchemeRegistry.getMap(),
};

const label_colors: SharedControlConfig<'ColorMapControl'> = {
type: 'ColorMapControl',
label: t('Color Map'),
default: {},
renderTrigger: true,
mapStateToProps: ({
form_data: { color_namespace: colorNamespace, color_scheme: colorScheme },
}) => ({
colorNamespace,
colorScheme,
}),
};

const enableExploreDnd = isFeatureEnabled(FeatureFlag.ENABLE_EXPLORE_DRAG_AND_DROP);

const sharedControls = {
Expand Down Expand Up @@ -522,7 +509,6 @@ const sharedControls = {
x_axis_time_format,
adhoc_filters: enableExploreDnd ? dnd_adhoc_filters : adhoc_filters,
color_scheme,
label_colors,
series_columns: enableExploreDnd ? dndColumnsControl : columnsControl,
series_limit,
series_limit_metric: enableExploreDnd ? dnd_sort_by : sort_by,
Expand Down
1 change: 0 additions & 1 deletion packages/superset-ui-chart-controls/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,6 @@ export type InternalControlType =
| 'BoundsControl'
| 'CheckboxControl'
| 'CollectionControl'
| 'ColorMapControl'
| 'ColorPickerControl'
| 'ColorSchemeControl'
| 'DatasourceControl'
Expand Down
14 changes: 8 additions & 6 deletions packages/superset-ui-core/src/color/CategoricalColorNamespace.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,8 @@ export default class CategoricalColorNamespace {

getScale(schemeId?: string) {
const id = schemeId ?? getCategoricalSchemeRegistry().getDefaultKey() ?? '';
const scale = this.scales[id];
if (scale) {
return scale;
}
const scheme = getCategoricalSchemeRegistry().get(id);

const newScale = new CategoricalColorScale(scheme?.colors ?? [], this.forcedItems);
this.scales[id] = newScale;

return newScale;
}
Expand All @@ -63,6 +57,10 @@ export default class CategoricalColorNamespace {

return this;
}

resetColors() {
this.forcedItems = {};
}
}

const namespaces: {
Expand All @@ -86,6 +84,10 @@ export function getColor(value?: string, schemeId?: string, namespace?: string)
return getNamespace(namespace).getScale(schemeId).getColor(value);
}

/*
Returns a new scale instance within the same namespace.
Especially useful when a chart is booting for the first time
*/
export function getScale(scheme?: string, namespace?: string) {
return getNamespace(namespace).getScale(scheme);
}
2 changes: 0 additions & 2 deletions packages/superset-ui-core/src/color/CategoricalColorScale.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@ class CategoricalColorScale extends ExtensibleFunction {

getColor(value?: string) {
const cleanedValue = stringifyAndTrim(value);

const parentColor = this.parentForcedColors && this.parentForcedColors[cleanedValue];
if (parentColor) {
return parentColor;
Expand All @@ -78,7 +77,6 @@ class CategoricalColorScale extends ExtensibleFunction {
*/
setColor(value: string, forcedColor: string) {
this.forcedColors[stringifyAndTrim(value)] = forcedColor;

return this;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,15 +81,6 @@ describe('CategoricalColorNamespace', () => {
expect(scale).toBeDefined();
getCategoricalSchemeRegistry().setDefaultKey('testColors');
});
it('returns same scale if the scale with that name already exists in this namespace', () => {
const namespace = getNamespace('test-get-scale2');
const scale1 = namespace.getScale('testColors');
const scale2 = namespace.getScale('testColors2');
const scale3 = namespace.getScale('testColors2');
const scale4 = namespace.getScale('testColors');
expect(scale1).toBe(scale4);
expect(scale2).toBe(scale3);
});
});
describe('.setColor()', () => {
it('overwrites color for all CategoricalColorScales in this namespace', () => {
Expand Down Expand Up @@ -127,19 +118,15 @@ describe('CategoricalColorNamespace', () => {
const scale = getScale();
expect(scale).toBeDefined();
const scale2 = getNamespace().getScale();
expect(scale).toBe(scale2);
expect(scale2).toBeDefined();
});
it('getScale(scheme) returns a CategoricalColorScale with specified scheme in default namespace', () => {
const scale = getScale('testColors');
const scale = getNamespace().getScale('testColors');
expect(scale).toBeDefined();
const scale2 = getNamespace().getScale('testColors');
expect(scale).toBe(scale2);
});
it('getScale(scheme, namespace) returns a CategoricalColorScale with specified scheme in specified namespace', () => {
const scale = getScale('testColors', 'test-getScale');
const scale = getNamespace('test-getScale').getScale('testColors');
expect(scale).toBeDefined();
const scale2 = getNamespace('test-getScale').getScale('testColors');
expect(scale).toBe(scale2);
});
});
describe('static getColor()', () => {
Expand Down
5 changes: 1 addition & 4 deletions plugins/legacy-plugin-chart-chord/src/controlPanel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,7 @@ const config: ControlPanelConfig = {
{
label: t('Chart Options'),
expanded: true,
controlSetRows: [
['y_axis_format', null],
['color_scheme', 'label_colors'],
],
controlSetRows: [['y_axis_format', null], ['color_scheme']],
},
],
controlOverrides: {
Expand Down
2 changes: 1 addition & 1 deletion plugins/legacy-plugin-chart-histogram/src/controlPanel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ const config: ControlPanelConfig = {
label: t('Chart Options'),
expanded: true,
controlSetRows: [
['color_scheme', 'label_colors'],
['color_scheme'],
[
{
name: 'link_length',
Expand Down
2 changes: 1 addition & 1 deletion plugins/legacy-plugin-chart-partition/src/controlPanel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ const config: ControlPanelConfig = {
expanded: true,
tabOverride: 'customize',
controlSetRows: [
['color_scheme', 'label_colors'],
['color_scheme'],
[
{
name: 'number_format',
Expand Down
2 changes: 1 addition & 1 deletion plugins/legacy-plugin-chart-rose/src/controlPanel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ const config: ControlPanelConfig = {
label: t('Chart Options'),
expanded: true,
controlSetRows: [
['color_scheme', 'label_colors'],
['color_scheme'],
[
{
name: 'number_format',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ const config: ControlPanelConfig = {
{
label: t('Chart Options'),
expanded: true,
controlSetRows: [['color_scheme', 'label_colors']],
controlSetRows: [['color_scheme']],
},
],
controlOverrides: {
Expand Down
2 changes: 1 addition & 1 deletion plugins/legacy-plugin-chart-sankey/src/controlPanel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ const config: ControlPanelConfig = {
{
label: t('Chart Options'),
expanded: true,
controlSetRows: [['color_scheme', 'label_colors']],
controlSetRows: [['color_scheme']],
},
],
};
Expand Down
2 changes: 1 addition & 1 deletion plugins/legacy-plugin-chart-treemap/src/controlPanel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ const config: ControlPanelConfig = {
expanded: true,
tabOverride: 'customize',
controlSetRows: [
['color_scheme', 'label_colors'],
['color_scheme'],
[
{
name: 'treemap_ratio',
Expand Down
2 changes: 1 addition & 1 deletion plugins/legacy-preset-chart-nvd3/src/Area/controlPanel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ const config: ControlPanelConfig = {
},
},
],
['color_scheme', 'label_colors'],
['color_scheme'],
[richTooltip, showControls],
],
},
Expand Down
1 change: 0 additions & 1 deletion plugins/legacy-preset-chart-nvd3/src/Bar/controlPanel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ const config: ControlPanelConfig = {
expanded: true,
controlSetRows: [
['color_scheme'],
['label_colors'],
[showBrush],
[showLegend],
[showBarValue],
Expand Down
5 changes: 1 addition & 4 deletions plugins/legacy-preset-chart-nvd3/src/Bubble/controlPanel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,7 @@ const config: ControlPanelConfig = {
label: t('Chart Options'),
expanded: true,
tabOverride: 'customize',
controlSetRows: [
['color_scheme', 'label_colors'],
[showLegend, null],
],
controlSetRows: [['color_scheme'], [showLegend, null]],
},
{
label: t('X Axis'),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ const config: ControlPanelConfig = {
{
label: t('Chart Options'),
expanded: true,
controlSetRows: [['color_scheme', 'label_colors']],
controlSetRows: [['color_scheme']],
},
{
label: t('X Axis'),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,6 @@ const config: ControlPanelConfig = {
expanded: true,
controlSetRows: [
['color_scheme'],
['label_colors'],
[showLegend],
[showBarValue],
[barStacked],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ const config: ControlPanelConfig = {
{
label: t('Chart Options'),
expanded: true,
controlSetRows: [['color_scheme', 'label_colors'], [showLegend], [xAxisFormat]],
controlSetRows: [['color_scheme'], [showLegend], [xAxisFormat]],
},
{
label: t('Y Axis 1'),
Expand Down
1 change: 0 additions & 1 deletion plugins/legacy-preset-chart-nvd3/src/Line/controlPanel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ const config: ControlPanelConfig = {
expanded: true,
controlSetRows: [
['color_scheme'],
['label_colors'],
[showBrush],
[
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ const config: ControlPanelConfig = {
tabOverride: 'customize',
expanded: true,
controlSetRows: [
['color_scheme', 'label_colors'],
['color_scheme'],
[
{
name: 'prefix_metric_with_slice_name',
Expand Down
2 changes: 1 addition & 1 deletion plugins/legacy-preset-chart-nvd3/src/Pie/controlPanel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ const config: ControlPanelConfig = {
},
},
],
['color_scheme', 'label_colors'],
['color_scheme'],
],
},
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ const config: ControlPanelConfig = {
label: t('Chart Options'),
expanded: true,
controlSetRows: [
['color_scheme', 'label_colors'],
['color_scheme'],
...createCustomizeSection(t('Query A'), ''),
...createCustomizeSection(t('Query B'), 'B'),
[
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ const config: ControlPanelConfig = {
label: t('Chart Options'),
expanded: true,
controlSetRows: [
['color_scheme', 'label_colors'],
['color_scheme'],
[
{
name: 'seriesType',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ const config: ControlPanelConfig = {
label: t('Chart Options'),
expanded: true,
controlSetRows: [
['color_scheme', 'label_colors'],
['color_scheme'],
...showValueSection,
[
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ const config: ControlPanelConfig = {
label: t('Chart Options'),
expanded: true,
controlSetRows: [
['color_scheme', 'label_colors'],
['color_scheme'],
...showValueSection,
[
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ const config: ControlPanelConfig = {
label: t('Chart Options'),
expanded: true,
controlSetRows: [
['color_scheme', 'label_colors'],
['color_scheme'],
[
{
name: 'seriesType',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ const config: ControlPanelConfig = {
label: t('Chart Options'),
expanded: true,
controlSetRows: [
['color_scheme', 'label_colors'],
['color_scheme'],
[
{
name: 'seriesType',
Expand Down
2 changes: 1 addition & 1 deletion plugins/plugin-chart-word-cloud/src/plugin/controlPanel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ const config: ControlPanelConfig = {
},
},
],
['color_scheme', 'label_colors'],
['color_scheme'],
],
},
],
Expand Down
2 changes: 1 addition & 1 deletion plugins/preset-chart-xy/src/BoxPlot/controlPanel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ const config: ControlPanelConfig = {
label: t('Chart Options'),
expanded: true,
controlSetRows: [
['color_scheme', 'label_colors'],
['color_scheme'],
[
{
name: 'whisker_options',
Expand Down

1 comment on commit c54aa08

@vercel
Copy link

@vercel vercel bot commented on c54aa08 Nov 2, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.