diff --git a/snuba/admin/static/clickhouse_queries/query_display.tsx b/snuba/admin/static/clickhouse_queries/query_display.tsx index c5a0aec4ab..dab886da33 100644 --- a/snuba/admin/static/clickhouse_queries/query_display.tsx +++ b/snuba/admin/static/clickhouse_queries/query_display.tsx @@ -2,8 +2,9 @@ import React, { useEffect, useState } from "react"; import Client from "SnubaAdmin/api_client"; import QueryEditor from "SnubaAdmin/query_editor"; import ExecuteButton from "SnubaAdmin/utils/execute_button"; -import { Alert, Switch } from "@mantine/core"; +import { Alert, Box, SegmentedControl, Text, Tooltip } from "@mantine/core"; import { getRecentHistory, setRecentHistory } from "SnubaAdmin/query_history"; +import { COLORS, SECTION_HEADING_STYLE } from "SnubaAdmin/theme"; import { CustomSelect, getParamFromStorage } from "SnubaAdmin/select"; import { getHostsForStorage, getErrorDomElement } from "SnubaAdmin/utils/clickhouse_node_utils"; import { QueryHistoryEntry } from "SnubaAdmin/clickhouse_queries/query_history_entry"; @@ -172,10 +173,24 @@ function QueryDisplay(props: { return output; } + // The first thing still needed before the query can run, if any. It's + // flagged on its field and explains why Execute is disabled. + const missing = !query.storage + ? "storage" + : !query.host || !query.port + ? "host" + : !query.sql + ? "query" + : null; + const missingHint = { + storage: "Select a storage to run the query.", + host: "Select a host to run the query.", + query: "Write or pick a query to run.", + }; + return (