refactor: icon to icons for syntaxhighlighter and querylist components (#15618)

* initial commit

* make changes

* more simplify

* remove code

* add prop

* remove unsued code
This commit is contained in:
Phillip Kelley-Dotson 2021-07-12 11:35:26 -07:00 committed by GitHub
parent 257385e888
commit 34542db3b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 40 additions and 47 deletions

View File

@ -26,7 +26,7 @@ import jsonSyntax from 'react-syntax-highlighter/dist/cjs/languages/hljs/json';
import github from 'react-syntax-highlighter/dist/cjs/styles/hljs/github';
import SyntaxHighlighter from 'react-syntax-highlighter/dist/cjs/light';
import { ToastProps } from 'src/messageToasts/enhancers/withToasts';
import Icon from 'src/components/Icon';
import Icons from 'src/components/Icons';
import copyTextToClipboard from 'src/utils/copy';
SyntaxHighlighter.registerLanguage('sql', sqlSyntax);
@ -49,6 +49,7 @@ const SyntaxHighlighterWrapper = styled.div`
left: 512px;
visibility: hidden;
margin: -4px;
color: ${({ theme }) => theme.colors.grayscale.base};
}
`;
@ -78,9 +79,8 @@ export default function SyntaxHighlighterCopy({
}
return (
<SyntaxHighlighterWrapper>
<Icon
<Icons.Copy
tabIndex={0}
name="copy"
role="button"
onClick={e => {
e.preventDefault();

View File

@ -16,8 +16,8 @@
* specific language governing permissions and limitations
* under the License.
*/
import React, { useMemo, useState, useCallback } from 'react';
import { SupersetClient, t, styled } from '@superset-ui/core';
import React, { useMemo, useState, useCallback, ReactElement } from 'react';
import { SupersetClient, t, styled, useTheme } from '@superset-ui/core';
import moment from 'moment';
import {
createFetchRelated,
@ -35,7 +35,6 @@ import ListView, {
FilterOperator,
ListViewProps,
} from 'src/components/ListView';
import Icon, { IconName } from 'src/components/Icon';
import { Tooltip } from 'src/components/Tooltip';
import SyntaxHighlighter from 'react-syntax-highlighter/dist/cjs/light';
import sql from 'react-syntax-highlighter/dist/cjs/languages/hljs/sql';
@ -43,6 +42,7 @@ import github from 'react-syntax-highlighter/dist/cjs/styles/hljs/github';
import { DATETIME_WITH_TIME_ZONE, TIME_WITH_MS } from 'src/constants';
import { QueryObject, QueryObjectColumns } from 'src/views/CRUD/types';
import Icons from 'src/components/Icons';
import QueryPreviewModal from './QueryPreviewModal';
const PAGE_SIZE = 25;
@ -80,19 +80,6 @@ const StyledPopoverItem = styled.div`
color: ${({ theme }) => theme.colors.grayscale.dark2};
`;
const StatusIcon = styled(Icon, {
shouldForwardProp: prop => prop !== 'status',
})<{ status: string }>`
color: ${({ status, theme }) => {
if (status === 'success') return theme.colors.success.base;
if (status === 'failed') return theme.colors.error.base;
if (status === 'running') return theme.colors.primary.base;
if (status === 'offline') return theme.colors.grayscale.light1;
return theme.colors.grayscale.base;
}};
`;
function QueryList({ addDangerToast, addSuccessToast }: QueryListProps) {
const {
state: { loading, resourceCount: queryCount, resourceCollection: queries },
@ -109,6 +96,8 @@ function QueryList({ addDangerToast, addSuccessToast }: QueryListProps) {
setQueryCurrentlyPreviewing,
] = useState<QueryObject>();
const theme = useTheme();
const handleQueryPreview = useCallback(
(id: number) => {
SupersetClient.get({
@ -141,44 +130,48 @@ function QueryList({ addDangerToast, addSuccessToast }: QueryListProps) {
original: { status },
},
}: any) => {
const statusConfig = {
name: '',
const statusConfig: {
name: ReactElement | null;
label: string;
} = {
name: null,
label: '',
status: '',
};
if (status === 'success') {
statusConfig.name = 'check';
statusConfig.name = (
<Icons.Check iconColor={theme.colors.success.base} />
);
statusConfig.label = t('Success');
statusConfig.status = 'success';
}
if (status === 'failed' || status === 'stopped') {
statusConfig.name = 'x-small';
} else if (status === 'failed' || status === 'stopped') {
statusConfig.name = (
<Icons.XSmall
iconColor={
status === 'failed'
? theme.colors.error.base
: theme.colors.grayscale.base
}
/>
);
statusConfig.label = t('Failed');
statusConfig.status = 'failed';
}
if (status === 'running') {
statusConfig.name = 'running';
} else if (status === 'running') {
statusConfig.name = (
<Icons.Running iconColor={theme.colors.primary.base} />
);
statusConfig.label = t('Running');
statusConfig.status = 'running';
}
if (status === 'timed_out') {
statusConfig.name = 'offline';
} else if (status === 'timed_out') {
statusConfig.name = (
<Icons.Offline iconColor={theme.colors.grayscale.light1} />
);
statusConfig.label = t('Offline');
statusConfig.status = 'offline';
}
if (status === 'scheduled' || status === 'pending') {
statusConfig.name = 'queued';
} else if (status === 'scheduled' || status === 'pending') {
statusConfig.name = (
<Icons.Queued iconColor={theme.colors.grayscale.base} />
);
statusConfig.label = t('Scheduled');
statusConfig.status = 'queued';
}
return (
<Tooltip title={statusConfig.label} placement="bottom">
<span>
<StatusIcon
name={statusConfig.name as IconName}
status={statusConfig.status}
/>
</span>
<span>{statusConfig.name}</span>
</Tooltip>
);
},
@ -325,7 +318,7 @@ function QueryList({ addDangerToast, addSuccessToast }: QueryListProps) {
}: any) => (
<Tooltip title={t('Open query in SQL Lab')} placement="bottom">
<a href={`/superset/sqllab?queryId=${id}`}>
<Icon name="full" />
<Icons.Full iconColor={theme.colors.grayscale.base} />
</a>
</Tooltip>
),