From a66291a9cd6cda06cc5f9d29b33e82eb08c49c94 Mon Sep 17 00:00:00 2001 From: Qi Shu Date: Fri, 5 Apr 2019 12:44:51 -0700 Subject: [PATCH] SQL explain in web console (#7402) * Add explain for SQL query * Terminate explain query manager * Add signature for semi-joined queries * Extract components out * Hide more button in rune mode * Add types for query explanation parser * Add type for query-plan-dialog --- web-console/src/components/sql-control.scss | 16 +- web-console/src/components/sql-control.tsx | 34 +++-- .../src/dialogs/query-plan-dialog.scss | 40 +++++ web-console/src/dialogs/query-plan-dialog.tsx | 139 ++++++++++++++++++ web-console/src/utils/druid-query.tsx | 67 +++++++++ web-console/src/views/sql-view.scss | 1 + web-console/src/views/sql-view.tsx | 62 +++++++- 7 files changed, 339 insertions(+), 20 deletions(-) create mode 100644 web-console/src/dialogs/query-plan-dialog.scss create mode 100644 web-console/src/dialogs/query-plan-dialog.tsx diff --git a/web-console/src/components/sql-control.scss b/web-console/src/components/sql-control.scss index f8ae7951382..468e91a3310 100644 --- a/web-console/src/components/sql-control.scss +++ b/web-console/src/components/sql-control.scss @@ -37,9 +37,21 @@ } -.auto-complete-checkbox { - margin:10px; +.sql-control-popover { + padding:10px; min-width: 120px; + + .bp3-form-group { + margin-bottom: 0; + } + + button { + span { + position: relative; + left: -7px; + } + padding-right: 35px; + } } .ace_tooltip { diff --git a/web-console/src/components/sql-control.tsx b/web-console/src/components/sql-control.tsx index 033944bd9a2..0dd8adecc56 100644 --- a/web-console/src/components/sql-control.tsx +++ b/web-console/src/components/sql-control.tsx @@ -16,7 +16,7 @@ * limitations under the License. */ -import { Button, Checkbox, Classes, Intent, Popover, Position } from "@blueprintjs/core"; +import { Button, Checkbox, Classes, FormGroup, Intent, Menu, Popover, Position } from "@blueprintjs/core"; import { IconNames } from "@blueprintjs/icons"; import axios from "axios"; import * as ace from 'brace'; @@ -39,6 +39,7 @@ const langTools = ace.acequire('ace/ext/language_tools'); export interface SqlControlProps extends React.Props { initSql: string | null; onRun: (query: string) => void; + onExplain: (query: string) => void; } export interface SqlControlState { @@ -165,19 +166,28 @@ export class SqlControl extends React.Component - this.setState({autoCompleteOn: !autoCompleteOn})} - /> - ; + const SqlControlPopover = + - -