From b9e6f28bd6da53d75211c7a71252f2443e348e82 Mon Sep 17 00:00:00 2001 From: Vadim Ogievetsky Date: Wed, 10 Apr 2019 22:33:08 -0700 Subject: [PATCH 1/2] wrap with limit --- web-console/src/components/sql-control.scss | 19 +-- web-console/src/components/sql-control.tsx | 113 +++++++++++++----- .../src/components/table-column-selection.tsx | 8 +- web-console/src/entry.scss | 11 ++ web-console/src/views/sql-view.tsx | 50 ++++++-- 5 files changed, 139 insertions(+), 62 deletions(-) diff --git a/web-console/src/components/sql-control.scss b/web-console/src/components/sql-control.scss index 468e91a33108..ed3bcf891984 100644 --- a/web-console/src/components/sql-control.scss +++ b/web-console/src/components/sql-control.scss @@ -37,23 +37,6 @@ } -.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 { padding: 10px; background-color: #333D47; @@ -66,7 +49,7 @@ hr { margin: 10px 0; } - + .function-doc-name { font-size: 18px; } diff --git a/web-console/src/components/sql-control.tsx b/web-console/src/components/sql-control.tsx index 99c7c4397e20..e45f14e2be7e 100644 --- a/web-console/src/components/sql-control.tsx +++ b/web-console/src/components/sql-control.tsx @@ -16,7 +16,16 @@ * limitations under the License. */ -import { Button, Checkbox, Classes, FormGroup, Intent, Menu, Popover, Position } from '@blueprintjs/core'; +import { + Button, + Checkbox, + ControlGroup, + Intent, + Menu, + MenuItem, + Popover, + Position +} from '@blueprintjs/core'; import { IconNames } from '@blueprintjs/icons'; import axios from 'axios'; import * as ace from 'brace'; @@ -25,6 +34,7 @@ import 'brace/mode/hjson'; import 'brace/mode/sql'; import 'brace/theme/solarized_dark'; import * as classNames from 'classnames'; +import * as Hjson from 'hjson'; import * as React from 'react'; import AceEditor from 'react-ace'; import * as ReactDOMServer from 'react-dom/server'; @@ -34,18 +44,29 @@ import { AppToaster } from '../singletons/toaster'; import './sql-control.scss'; +function validHjson(query: string) { + try { + Hjson.parse(query); + return true; + } catch { + return false; + } +} + 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; + onRun: (query: string, bypassCache: boolean, wrapQuery: boolean) => void; + onExplain: (sqlQuery: string) => void; } export interface SqlControlState { query: string; - autoCompleteOn: boolean; + autoComplete: boolean; autoCompleteLoading: boolean; + bypassCache: boolean; + wrapQuery: boolean; } export class SqlControl extends React.Component { @@ -53,8 +74,10 @@ export class SqlControl extends React.Component { + const { onRun } = this.props; + const { query, bypassCache, wrapQuery } = this.state; + onRun(query, bypassCache, wrapQuery); + } - const isRune = query.trim().startsWith('{'); + renderExtraMenu(isRune: boolean) { + const { onRun, onExplain } = this.props; + const { query, autoComplete, bypassCache, wrapQuery } = this.state; - const SqlControlPopover = - - {!isRune ? SqlControlPopover : null} + +