Web console: switch to switches instead of checkboxes (#10454)
* switch to switches
* add img alt
* add relative
* change icons
* update snapshot
diff --git a/web-console/src/components/menu-checkbox/__snapshots__/menu-checkbox.spec.tsx.snap b/web-console/src/components/menu-checkbox/__snapshots__/menu-checkbox.spec.tsx.snap
index 24b2770..96312ff 100644
--- a/web-console/src/components/menu-checkbox/__snapshots__/menu-checkbox.spec.tsx.snap
+++ b/web-console/src/components/menu-checkbox/__snapshots__/menu-checkbox.spec.tsx.snap
@@ -1,18 +1,71 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`menu checkbox matches snapshot 1`] = `
+exports[`MenuCheckbox matches snapshot checked 1`] = `
<li
- class="menu-checkbox"
+ class=""
>
- <label
- class="bp3-control bp3-checkbox"
+ <a
+ class="bp3-menu-item menu-checkbox"
>
- <input
- type="checkbox"
- />
<span
- class="bp3-control-indicator"
- />
- </label>
+ class="bp3-icon bp3-icon-tick-circle"
+ icon="tick-circle"
+ >
+ <svg
+ data-icon="tick-circle"
+ height="16"
+ viewBox="0 0 16 16"
+ width="16"
+ >
+ <desc>
+ tick-circle
+ </desc>
+ <path
+ d="M8 16c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm4-11c-.28 0-.53.11-.71.29L7 9.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l5-5A1.003 1.003 0 0012 5z"
+ fill-rule="evenodd"
+ />
+ </svg>
+ </span>
+ <div
+ class="bp3-text-overflow-ellipsis bp3-fill"
+ >
+ hello
+ </div>
+ </a>
+</li>
+`;
+
+exports[`MenuCheckbox matches snapshot unchecked 1`] = `
+<li
+ class=""
+>
+ <a
+ class="bp3-menu-item menu-checkbox"
+ >
+ <span
+ class="bp3-icon bp3-icon-circle"
+ icon="circle"
+ >
+ <svg
+ data-icon="circle"
+ height="16"
+ viewBox="0 0 16 16"
+ width="16"
+ >
+ <desc>
+ circle
+ </desc>
+ <path
+ d="M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 14c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6z"
+ fill-rule="evenodd"
+ />
+ </svg>
+ </span>
+ <div
+ class="bp3-text-overflow-ellipsis bp3-fill"
+ >
+ hello
+ </div>
+ </a>
</li>
`;
diff --git a/web-console/src/components/menu-checkbox/menu-checkbox.scss b/web-console/src/components/menu-checkbox/menu-checkbox.scss
deleted file mode 100644
index 8d4963a..0000000
--- a/web-console/src/components/menu-checkbox/menu-checkbox.scss
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-.menu-checkbox {
- height: 30px;
- padding: 7px 4px;
-
- label {
- margin: 0;
- }
-}
diff --git a/web-console/src/components/menu-checkbox/menu-checkbox.spec.tsx b/web-console/src/components/menu-checkbox/menu-checkbox.spec.tsx
index ef938a8..5e64aba 100644
--- a/web-console/src/components/menu-checkbox/menu-checkbox.spec.tsx
+++ b/web-console/src/components/menu-checkbox/menu-checkbox.spec.tsx
@@ -21,9 +21,15 @@
import { MenuCheckbox } from './menu-checkbox';
-describe('menu checkbox', () => {
- it('matches snapshot', () => {
- const menuCheckbox = <MenuCheckbox />;
+describe('MenuCheckbox', () => {
+ it('matches snapshot checked', () => {
+ const menuCheckbox = <MenuCheckbox text="hello" checked onChange={() => {}} />;
+ const { container } = render(menuCheckbox);
+ expect(container.firstChild).toMatchSnapshot();
+ });
+
+ it('matches snapshot unchecked', () => {
+ const menuCheckbox = <MenuCheckbox text="hello" checked={false} onChange={() => {}} />;
const { container } = render(menuCheckbox);
expect(container.firstChild).toMatchSnapshot();
});
diff --git a/web-console/src/components/menu-checkbox/menu-checkbox.tsx b/web-console/src/components/menu-checkbox/menu-checkbox.tsx
index e79db83..10cdad1 100644
--- a/web-console/src/components/menu-checkbox/menu-checkbox.tsx
+++ b/web-console/src/components/menu-checkbox/menu-checkbox.tsx
@@ -16,15 +16,26 @@
* limitations under the License.
*/
-import { Checkbox, ICheckboxProps } from '@blueprintjs/core';
+import { MenuItem } from '@blueprintjs/core';
+import { IconNames } from '@blueprintjs/icons';
import React from 'react';
-import './menu-checkbox.scss';
+export interface MenuCheckboxProps {
+ text: string;
+ checked: boolean;
+ onChange: () => void;
+}
-export function MenuCheckbox(props: ICheckboxProps) {
+export function MenuCheckbox(props: MenuCheckboxProps) {
+ const { text, checked, onChange } = props;
+
return (
- <li className="menu-checkbox">
- <Checkbox {...props} />
- </li>
+ <MenuItem
+ className="menu-checkbox"
+ icon={checked ? IconNames.TICK_CIRCLE : IconNames.CIRCLE}
+ text={text}
+ onClick={onChange}
+ shouldDismissPopover={false}
+ />
);
}
diff --git a/web-console/src/components/show-log/__snapshots__/show-log.spec.tsx.snap b/web-console/src/components/show-log/__snapshots__/show-log.spec.tsx.snap
index 1dfe370..233b9e8 100644
--- a/web-console/src/components/show-log/__snapshots__/show-log.spec.tsx.snap
+++ b/web-console/src/components/show-log/__snapshots__/show-log.spec.tsx.snap
@@ -8,7 +8,7 @@
class="top-actions"
>
<label
- class="bp3-control bp3-checkbox"
+ class="bp3-control bp3-switch tail-log"
>
<input
checked=""
diff --git a/web-console/src/components/show-log/show-log.scss b/web-console/src/components/show-log/show-log.scss
index 6dfb87b..18e7bac 100644
--- a/web-console/src/components/show-log/show-log.scss
+++ b/web-console/src/components/show-log/show-log.scss
@@ -21,15 +21,23 @@
height: 100%;
.top-actions {
+ position: relative;
text-align: right;
padding-bottom: 10px;
& > * {
display: inline-block;
}
+
+ .tail-log {
+ position: absolute;
+ top: 6px;
+ left: 0;
+ }
}
.main-area {
+ position: relative;
height: calc(100% - 40px);
textarea {
@@ -41,9 +49,4 @@
line-height: 13px;
}
}
-
- .bp3-checkbox {
- float: left;
- margin-top: 5px;
- }
}
diff --git a/web-console/src/components/show-log/show-log.tsx b/web-console/src/components/show-log/show-log.tsx
index 48fe705..a4409d2 100644
--- a/web-console/src/components/show-log/show-log.tsx
+++ b/web-console/src/components/show-log/show-log.tsx
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-import { AnchorButton, Button, ButtonGroup, Checkbox, Intent } from '@blueprintjs/core';
+import { AnchorButton, Button, ButtonGroup, Intent, Switch } from '@blueprintjs/core';
import axios from 'axios';
import copy from 'copy-to-clipboard';
import React from 'react';
@@ -94,6 +94,7 @@
}
componentWillUnmount(): void {
+ this.showLogQueryManager.terminate();
this.removeTailer();
}
@@ -143,7 +144,8 @@
<div className="show-log">
<div className="top-actions">
{status === 'RUNNING' && (
- <Checkbox
+ <Switch
+ className="tail-log"
label="Tail log"
checked={this.state.tail}
onChange={this.handleCheckboxChange}
diff --git a/web-console/src/components/table-column-selector/table-column-selector.tsx b/web-console/src/components/table-column-selector/table-column-selector.tsx
index fc5359e..6cdd951 100644
--- a/web-console/src/components/table-column-selector/table-column-selector.tsx
+++ b/web-console/src/components/table-column-selector/table-column-selector.tsx
@@ -41,7 +41,7 @@
<Menu className="table-column-selector-menu">
{columns.map(column => (
<MenuCheckbox
- label={column}
+ text={column}
key={column}
checked={isColumnShown(column)}
onChange={() => onChange(column)}
diff --git a/web-console/src/components/warning-checklist/__snapshots__/warning-checklist.spec.tsx.snap b/web-console/src/components/warning-checklist/__snapshots__/warning-checklist.spec.tsx.snap
index afadb07..93970fc 100644
--- a/web-console/src/components/warning-checklist/__snapshots__/warning-checklist.spec.tsx.snap
+++ b/web-console/src/components/warning-checklist/__snapshots__/warning-checklist.spec.tsx.snap
@@ -5,7 +5,7 @@
class="warning-checklist"
>
<label
- class="bp3-control bp3-checkbox"
+ class="bp3-control bp3-switch"
>
<input
type="checkbox"
@@ -16,7 +16,7 @@
Check A
</label>
<label
- class="bp3-control bp3-checkbox"
+ class="bp3-control bp3-switch"
>
<input
type="checkbox"
@@ -27,7 +27,7 @@
Check B
</label>
<label
- class="bp3-control bp3-checkbox"
+ class="bp3-control bp3-switch"
>
<input
type="checkbox"
diff --git a/web-console/src/components/warning-checklist/warning-checklist.tsx b/web-console/src/components/warning-checklist/warning-checklist.tsx
index cef323f..9c2b37f 100644
--- a/web-console/src/components/warning-checklist/warning-checklist.tsx
+++ b/web-console/src/components/warning-checklist/warning-checklist.tsx
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-import { Checkbox } from '@blueprintjs/core';
+import { Switch } from '@blueprintjs/core';
import React, { useState } from 'react';
export interface WarningChecklistProps {
@@ -38,9 +38,9 @@
return (
<div className="warning-checklist">
- {checks.map((check, i) => {
- return <Checkbox key={i} label={check} onChange={() => doCheck(check)} />;
- })}
+ {checks.map((check, i) => (
+ <Switch key={i} label={check} onChange={() => doCheck(check)} />
+ ))}
</div>
);
});
diff --git a/web-console/src/views/load-data-view/load-data-view.tsx b/web-console/src/views/load-data-view/load-data-view.tsx
index 75ba008..49b814e 100644
--- a/web-console/src/views/load-data-view/load-data-view.tsx
+++ b/web-console/src/views/load-data-view/load-data-view.tsx
@@ -689,7 +689,10 @@
});
}}
>
- <img src={UrlBaser.base(`/assets/${getIngestionImage(comboType)}.png`)} />
+ <img
+ src={UrlBaser.base(`/assets/${getIngestionImage(comboType)}.png`)}
+ alt={`Ingestion tile for ${comboType}`}
+ />
<p>{getIngestionTitle(comboType)}</p>
</Card>
);
diff --git a/web-console/src/views/query-view/run-button/run-button.tsx b/web-console/src/views/query-view/run-button/run-button.tsx
index 2d62191..afa7d4e 100644
--- a/web-console/src/views/query-view/run-button/run-button.tsx
+++ b/web-console/src/views/query-view/run-button/run-button.tsx
@@ -24,6 +24,7 @@
HotkeysTarget,
Intent,
Menu,
+ MenuDivider,
MenuItem,
Popover,
Position,
@@ -105,14 +106,24 @@
target="_blank"
/>
<MenuItem icon={IconNames.HISTORY} text="Query history" onClick={onHistory} />
+ {!runeMode && onExplain && (
+ <MenuItem icon={IconNames.CLEAN} text="Explain SQL query" onClick={onExplain} />
+ )}
+ {runeMode && (
+ <MenuItem icon={IconNames.ALIGN_LEFT} text="Prettify JSON" onClick={onPrettier} />
+ )}
+ <MenuItem
+ icon={IconNames.PROPERTIES}
+ text="Edit context"
+ onClick={onEditContext}
+ label={numContextKeys ? pluralIfNeeded(numContextKeys, 'key') : undefined}
+ />
+ <MenuDivider />
{!runeMode && (
<>
- {onExplain && (
- <MenuItem icon={IconNames.CLEAN} text="Explain SQL query" onClick={onExplain} />
- )}
<MenuCheckbox
checked={useApproximateCountDistinct}
- label="Use approximate COUNT(DISTINCT)"
+ text="Use approximate COUNT(DISTINCT)"
onChange={() => {
onQueryContextChange(
setUseApproximateCountDistinct(queryContext, !useApproximateCountDistinct),
@@ -121,7 +132,7 @@
/>
<MenuCheckbox
checked={useApproximateTopN}
- label="Use approximate TopN"
+ text="Use approximate TopN"
onChange={() => {
onQueryContextChange(setUseApproximateTopN(queryContext, !useApproximateTopN));
}}
@@ -130,22 +141,11 @@
)}
<MenuCheckbox
checked={useCache}
- label="Use cache"
+ text="Use cache"
onChange={() => {
onQueryContextChange(setUseCache(queryContext, !useCache));
}}
/>
- {!runeMode && (
- <MenuItem
- icon={IconNames.PROPERTIES}
- text="Edit context"
- onClick={onEditContext}
- labelElement={numContextKeys ? pluralIfNeeded(numContextKeys, 'key') : undefined}
- />
- )}
- {runeMode && (
- <MenuItem icon={IconNames.ALIGN_LEFT} text="Prettify JSON" onClick={onPrettier} />
- )}
</Menu>
);
}