mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Revert: Scenes/PanelEditor: Fix panel options search crash 82003 (#82439)
This commit is contained in:
parent
44ecb26ea1
commit
04005d770b
@ -5,7 +5,7 @@ import { GrafanaTheme2 } from '@grafana/data';
|
||||
import { selectors } from '@grafana/e2e-selectors';
|
||||
import { SceneComponentProps, SceneObjectBase, SceneObjectState, sceneGraph } from '@grafana/scenes';
|
||||
import { Box, ButtonGroup, FilterInput, RadioButtonGroup, ToolbarButton, useStyles2 } from '@grafana/ui';
|
||||
import { OptionFilter, RenderSearchHits } from 'app/features/dashboard/components/PanelEditor/OptionsPaneOptions';
|
||||
import { OptionFilter, renderSearchHits } from 'app/features/dashboard/components/PanelEditor/OptionsPaneOptions';
|
||||
import { getFieldOverrideCategories } from 'app/features/dashboard/components/PanelEditor/getFieldOverrideElements';
|
||||
import { getPanelFrameCategory2 } from 'app/features/dashboard/components/PanelEditor/getPanelFrameOptions';
|
||||
import { getVisualizationOptions2 } from 'app/features/dashboard/components/PanelEditor/getVisualizationOptions';
|
||||
@ -97,29 +97,24 @@ export class PanelOptionsPane extends SceneObjectBase<PanelOptionsPaneState> {
|
||||
|
||||
if (isSearching) {
|
||||
mainBoxElements.push(
|
||||
<RenderSearchHits
|
||||
allOptions={[panelFrameOptions, ...(visualizationOptions ?? [])]}
|
||||
overrides={justOverrides}
|
||||
searchQuery={searchQuery}
|
||||
key="render-search-hits"
|
||||
/>
|
||||
renderSearchHits([panelFrameOptions, ...(visualizationOptions ?? [])], justOverrides, searchQuery)
|
||||
);
|
||||
} else {
|
||||
switch (listMode) {
|
||||
case OptionFilter.All:
|
||||
mainBoxElements.push(<panelFrameOptions.Render key="panel-frame-options" />);
|
||||
mainBoxElements.push(panelFrameOptions.render());
|
||||
|
||||
for (const item of visualizationOptions ?? []) {
|
||||
mainBoxElements.push(<item.Render key={item.props.id} />);
|
||||
mainBoxElements.push(item.render());
|
||||
}
|
||||
|
||||
for (const item of justOverrides) {
|
||||
mainBoxElements.push(<item.Render key={item.props.id} />);
|
||||
mainBoxElements.push(item.render());
|
||||
}
|
||||
break;
|
||||
case OptionFilter.Overrides:
|
||||
for (const item of justOverrides) {
|
||||
mainBoxElements.push(<item.Render key={item.props.id} />);
|
||||
mainBoxElements.push(item.render());
|
||||
}
|
||||
default:
|
||||
break;
|
||||
|
@ -52,7 +52,7 @@ export class OptionsPaneCategoryDescriptor {
|
||||
return sub;
|
||||
}
|
||||
|
||||
Render = ({ searchQuery }: { searchQuery?: string }) => {
|
||||
render(searchQuery?: string) {
|
||||
if (this.props.customRender) {
|
||||
return this.props.customRender();
|
||||
}
|
||||
@ -60,10 +60,8 @@ export class OptionsPaneCategoryDescriptor {
|
||||
return (
|
||||
<OptionsPaneCategory key={this.props.title} {...this.props}>
|
||||
{this.items.map((item) => item.render(searchQuery))}
|
||||
{this.categories.map((category) => (
|
||||
<category.Render key={category.props.id} searchQuery={searchQuery} />
|
||||
))}
|
||||
{this.categories.map((category) => category.render(searchQuery))}
|
||||
</OptionsPaneCategory>
|
||||
);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -54,14 +54,7 @@ export const OptionsPaneOptions = (props: OptionPaneRenderProps) => {
|
||||
: [panelFrameOptions, ...vizOptions];
|
||||
|
||||
if (isSearching) {
|
||||
mainBoxElements.push(
|
||||
<RenderSearchHits
|
||||
key="render-search-hits"
|
||||
allOptions={allOptions}
|
||||
overrides={justOverrides}
|
||||
searchQuery={searchQuery}
|
||||
/>
|
||||
);
|
||||
mainBoxElements.push(renderSearchHits(allOptions, justOverrides, searchQuery));
|
||||
|
||||
// If searching for angular panel, then we need to add notice that results are limited
|
||||
if (props.plugin.angularPanelCtrl) {
|
||||
@ -76,10 +69,10 @@ export const OptionsPaneOptions = (props: OptionPaneRenderProps) => {
|
||||
case OptionFilter.All:
|
||||
if (isPanelModelLibraryPanel(panel)) {
|
||||
// Library Panel options first
|
||||
mainBoxElements.push(<libraryPanelOptions.Render key="library-panel-options" />);
|
||||
mainBoxElements.push(libraryPanelOptions.render());
|
||||
}
|
||||
// Panel frame options second
|
||||
mainBoxElements.push(<panelFrameOptions.Render key="panel-frame-options" />);
|
||||
mainBoxElements.push(panelFrameOptions.render());
|
||||
// If angular add those options next
|
||||
if (props.plugin.angularPanelCtrl) {
|
||||
mainBoxElements.push(
|
||||
@ -88,16 +81,16 @@ export const OptionsPaneOptions = (props: OptionPaneRenderProps) => {
|
||||
}
|
||||
// Then add all panel and field defaults
|
||||
for (const item of vizOptions) {
|
||||
mainBoxElements.push(<item.Render key={item.props.id} />);
|
||||
mainBoxElements.push(item.render());
|
||||
}
|
||||
|
||||
for (const item of justOverrides) {
|
||||
mainBoxElements.push(<item.Render key={item.props.id} />);
|
||||
mainBoxElements.push(item.render());
|
||||
}
|
||||
break;
|
||||
case OptionFilter.Overrides:
|
||||
for (const override of justOverrides) {
|
||||
mainBoxElements.push(<override.Render key={override.props.id} />);
|
||||
mainBoxElements.push(override.render());
|
||||
}
|
||||
break;
|
||||
case OptionFilter.Recent:
|
||||
@ -157,13 +150,11 @@ export enum OptionFilter {
|
||||
Recent = 'Recent',
|
||||
}
|
||||
|
||||
interface RenderSearchHitsProps {
|
||||
allOptions: OptionsPaneCategoryDescriptor[];
|
||||
overrides: OptionsPaneCategoryDescriptor[];
|
||||
searchQuery: string;
|
||||
}
|
||||
|
||||
export function RenderSearchHits({ allOptions, overrides, searchQuery }: RenderSearchHitsProps) {
|
||||
export function renderSearchHits(
|
||||
allOptions: OptionsPaneCategoryDescriptor[],
|
||||
overrides: OptionsPaneCategoryDescriptor[],
|
||||
searchQuery: string
|
||||
) {
|
||||
const engine = new OptionSearchEngine(allOptions, overrides);
|
||||
const { optionHits, totalCount, overrideHits } = engine.search(searchQuery);
|
||||
|
||||
@ -177,9 +168,7 @@ export function RenderSearchHits({ allOptions, overrides, searchQuery }: RenderS
|
||||
>
|
||||
{optionHits.map((hit) => hit.render(searchQuery))}
|
||||
</OptionsPaneCategory>
|
||||
{overrideHits.map((override) => (
|
||||
<override.Render key={override.props.id} searchQuery={searchQuery} />
|
||||
))}
|
||||
{overrideHits.map((override) => override.render(searchQuery))}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user