Skip to content

Commit

Permalink
fix: Color consistency (apache#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 authored and zhaoyongjie committed Nov 24, 2021
1 parent 9a7bf38 commit ff8d557
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
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
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
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);
}
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
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
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
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
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
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
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
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
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
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
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
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
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
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

0 comments on commit ff8d557

Please sign in to comment.