Skip to content

Commit

Permalink
[Lens] Make table and metric show on top Chart switcher (#96601)
Browse files Browse the repository at this point in the history
Co-authored-by: Kibana Machine <[email protected]>
  • Loading branch information
dej611 and kibanamachine authored Apr 12, 2021
1 parent a05a66c commit d2012c0
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ export const datatableVisualization: Visualization<DatatableVisualizationState>
groupLabel: i18n.translate('xpack.lens.datatable.groupLabel', {
defaultMessage: 'Tabular and single value',
}),
sortPriority: 1,
},
],

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -219,12 +219,15 @@ export const ChartSwitch = memo(function ChartSwitch(props: Props) {
// reorganize visualizations in groups
const grouped: Record<
string,
Array<
VisualizationType & {
visualizationId: string;
selection: VisualizationSelection;
}
>
{
priority: number;
visualizations: Array<
VisualizationType & {
visualizationId: string;
selection: VisualizationSelection;
}
>;
}
> = {};
// Will need it later on to quickly pick up the metadata from it
const lookup: Record<
Expand All @@ -240,23 +243,29 @@ export const ChartSwitch = memo(function ChartSwitch(props: Props) {
visualizationType.label.toLowerCase().includes(lowercasedSearchTerm) ||
visualizationType.fullLabel?.toLowerCase().includes(lowercasedSearchTerm);
if (isSearchMatch) {
grouped[visualizationType.groupLabel] = grouped[visualizationType.groupLabel] || [];
grouped[visualizationType.groupLabel] = grouped[visualizationType.groupLabel] || {
priority: 0,
visualizations: [],
};
const visualizationEntry = {
...visualizationType,
visualizationId,
selection: getSelection(visualizationId, visualizationType.id),
};
grouped[visualizationType.groupLabel].push(visualizationEntry);
grouped[visualizationType.groupLabel].priority += visualizationType.sortPriority || 0;
grouped[visualizationType.groupLabel].visualizations.push(visualizationEntry);
lookup[`${visualizationId}:${visualizationType.id}`] = visualizationEntry;
}
}
});

return {
visualizationTypes: Object.keys(grouped)
.sort()
.sort((groupA, groupB) => {
return grouped[groupB].priority - grouped[groupA].priority;
})
.flatMap((group): SelectableEntry[] => {
const visualizations = grouped[group];
const { visualizations } = grouped[group];
if (visualizations.length === 0) {
return [];
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ export const metricVisualization: Visualization<MetricState> = {
groupLabel: i18n.translate('xpack.lens.metric.groupLabel', {
defaultMessage: 'Tabular and single value',
}),
sortPriority: 1,
},
],

Expand Down
5 changes: 5 additions & 0 deletions x-pack/plugins/lens/public/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -550,6 +550,11 @@ export interface VisualizationType {
* The group the visualization belongs to
*/
groupLabel: string;
/**
* The priority of the visualization in the list (global priority)
* Higher number means higher priority. When omitted defaults to 0
*/
sortPriority?: number;
}

export interface Visualization<T = unknown> {
Expand Down

0 comments on commit d2012c0

Please sign in to comment.