diff --git a/public/app/features/dashboard-scene/panel-edit/PanelDataPane/DetailView.tsx b/public/app/features/dashboard-scene/panel-edit/PanelDataPane/DetailView.tsx
index 88ea2cde2cd..95852e0e13c 100644
--- a/public/app/features/dashboard-scene/panel-edit/PanelDataPane/DetailView.tsx
+++ b/public/app/features/dashboard-scene/panel-edit/PanelDataPane/DetailView.tsx
@@ -1,9 +1,9 @@
import { css } from '@emotion/css';
import { memo, useCallback, useRef } from 'react';
-import { DataFrame, DataQuery, GrafanaTheme2, SelectableValue } from '@grafana/data';
+import { DataFrame, GrafanaTheme2, SelectableValue } from '@grafana/data';
import { Trans } from '@grafana/i18n';
-import { VizPanel } from '@grafana/scenes';
+import { SceneDataQuery, VizPanel } from '@grafana/scenes';
import { Container, ScrollContainer, useStyles2 } from '@grafana/ui';
import { isExpressionQuery } from 'app/features/expressions/guards';
@@ -18,7 +18,7 @@ import { TabId, QueryTransformItem } from './types';
export interface QueryLibraryMode {
active: boolean;
mode: 'browse' | 'save';
- currentQuery?: DataQuery;
+ currentQuery?: SceneDataQuery;
}
interface DetailViewProps {
@@ -33,10 +33,11 @@ interface DetailViewProps {
transformationData?: DataFrame[];
onGoToQueries?: () => void;
queryLibraryMode?: QueryLibraryMode;
- onQueryLibrarySelect?: (query: DataQuery) => void;
+ onQueryLibrarySelect?: (query: SceneDataQuery) => void;
onQueryLibrarySave?: (name: string, description: string) => void;
onQueryLibraryClose?: () => void;
onOpenQueryLibrary?: (mode: 'browse' | 'save', index?: number) => void;
+ onOpenQueryInspector?: () => void;
isDebugMode?: boolean;
debugPosition?: number;
}
@@ -58,6 +59,7 @@ export const DetailView = memo(
onQueryLibrarySave,
onQueryLibraryClose,
onOpenQueryLibrary,
+ onOpenQueryInspector,
isDebugMode,
debugPosition,
}: DetailViewProps) => {
@@ -119,22 +121,27 @@ export const DetailView = memo(
);
}
- if (selectedItem.type === 'query' && 'refId' in selectedItem.data) {
+ if (selectedItem.type === 'query') {
const query = selectedItem.data;
return (
<>
-
+
>
);
- } else if (selectedItem.type === 'expression' && 'refId' in selectedItem.data) {
+ } else if (selectedItem.type === 'expression') {
const data = selectedItem.data;
if (isExpressionQuery(data)) {
return (
<>
-
+
@@ -143,7 +150,7 @@ export const DetailView = memo(
}
} else {
const transformsTab = tabs.find((t): t is PanelDataTransformationsTab => t.tabId === TabId.Transformations);
- if (transformsTab && 'id' in selectedItem.data) {
+ if (transformsTab) {
return (
<>
void;
onToggleTransformVisibility?: (index: number) => void;
onOpenQueryLibrary?: (mode: 'browse' | 'save') => void;
+ onOpenQueryInspector?: () => void;
isDebugMode?: boolean;
debugPosition?: number;
queryLibraryMode?: never;
@@ -59,6 +60,7 @@ interface QueryLibraryModeProps {
onRemoveTransform?: never;
onToggleTransformVisibility?: never;
onOpenQueryLibrary?: never;
+ onOpenQueryInspector?: never;
queryLibraryMode: 'browse' | 'save';
onSelectQuery?: () => void;
onSaveQuery?: () => void;
@@ -152,6 +154,7 @@ function ItemHeader({
onRemoveTransform,
onToggleTransformVisibility,
onOpenQueryLibrary,
+ onOpenQueryInspector,
isDebugMode,
debugPosition,
}: ItemModeProps) {
@@ -567,6 +570,11 @@ function ItemHeader({
icon="trash-alt"
onClick={onRemoveQuery}
/>
+
}
>
@@ -693,6 +701,7 @@ export const DetailViewHeader = (props: DetailViewHeaderProps) => {
onRemoveTransform={props.onRemoveTransform}
onToggleTransformVisibility={props.onToggleTransformVisibility}
onOpenQueryLibrary={props.onOpenQueryLibrary}
+ onOpenQueryInspector={props.onOpenQueryInspector}
isDebugMode={props.isDebugMode}
debugPosition={props.debugPosition}
/>
@@ -709,7 +718,7 @@ const getStyles = (theme: GrafanaTheme2, config: { color: string }) => {
borderLeft: `4px solid ${config.color}`,
borderBottom: `1px solid ${theme.colors.border.weak}`,
background: theme.colors.background.secondary,
- minHeight: '41px',
+ minHeight: theme.spacing(6),
}),
headerContent: css({
display: 'flex',
diff --git a/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataPane.tsx b/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataPane.tsx
index 01a5d1cfc51..8fc158a684b 100644
--- a/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataPane.tsx
+++ b/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataPane.tsx
@@ -316,6 +316,10 @@ function PanelDataPaneRendered({ model }: SceneComponentProps) {
[transformations, transformsTab]
);
+ const handleOpenQueryInspector = useCallback(() => {
+ queriesTab?.onOpenInspector();
+ }, [queriesTab]);
+
// Get data for transformations drawer
const sourceData = queryRunner?.useState();
const series = sourceData?.data?.series || [];
@@ -339,6 +343,7 @@ function PanelDataPaneRendered({ model }: SceneComponentProps) {
onQueryLibrarySave={handleQueryLibrarySave}
onQueryLibraryClose={handleQueryLibraryClose}
onOpenQueryLibrary={handleOpenQueryLibrary}
+ onOpenQueryInspector={handleOpenQueryInspector}
isDebugMode={isDebugMode}
debugPosition={debugPosition}
/>
diff --git a/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataQueriesTab.test.tsx b/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataQueriesTab.test.tsx
index 96c3774f297..236b2e15215 100644
--- a/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataQueriesTab.test.tsx
+++ b/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataQueriesTab.test.tsx
@@ -837,7 +837,7 @@ async function setupScene(panelId: string) {
deactivators.push(dashboard.activate());
deactivators.push(panelEditor.activate());
- const queriesTab = panelEditor.state.dataPane!.state.editorRef.resolve().state.dataPaneTabs[0];
+ const queriesTab = panelEditor.state.dataPane!.state.tabs[0];
deactivators.push(queriesTab.activate());
await Promise.resolve();
diff --git a/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataTransformationsTab.tsx b/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataTransformationsTab.tsx
index a04d735ea33..c6218be2123 100644
--- a/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataTransformationsTab.tsx
+++ b/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataTransformationsTab.tsx
@@ -90,7 +90,7 @@ export function PanelDataTransformationsTabRendered({
return;
}
- const queriesTab = parent.state.editorRef.resolve().state.dataPaneTabs.find((tab) => tab.tabId === TabId.Queries);
+ const queriesTab = parent.state.tabs.find((tab) => tab.tabId === TabId.Queries);
if (!(queriesTab instanceof PanelDataQueriesTab)) {
return;
}
diff --git a/public/app/features/dashboard-scene/panel-edit/PanelDataPane/QueryTransformList.tsx b/public/app/features/dashboard-scene/panel-edit/PanelDataPane/QueryTransformList.tsx
index 778684be3c5..fcdf9a195d2 100644
--- a/public/app/features/dashboard-scene/panel-edit/PanelDataPane/QueryTransformList.tsx
+++ b/public/app/features/dashboard-scene/panel-edit/PanelDataPane/QueryTransformList.tsx
@@ -780,8 +780,6 @@ export const QueryTransformList = memo(
QueryTransformList.displayName = 'QueryTransformList';
const getStyles = (theme: GrafanaTheme2, colors: ReturnType) => {
- const headerHeight = 41;
- const footerHeight = 32;
const barBase = {
padding: theme.spacing(0.5, 2),
background: theme.colors.background.secondary,
@@ -804,7 +802,7 @@ const getStyles = (theme: GrafanaTheme2, colors: ReturnType div:first-child': {
@@ -929,7 +927,7 @@ const getStyles = (theme: GrafanaTheme2, colors: ReturnType