Skip to content

Commit

Permalink
feat(explore): Add empty state to annotations (#20160)
Browse files Browse the repository at this point in the history
* feat(explore): Add empty state to annotations

* Set line height for small empty state description

* Simplify code
  • Loading branch information
kgabryje committed May 31, 2022
1 parent c8fe518 commit 0ee1f49
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 1 deletion.
1 change: 1 addition & 0 deletions superset-frontend/src/components/EmptyState/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ const BigDescription = styled(Description)`
const SmallDescription = styled(Description)`
${({ theme }) => css`
margin-top: ${theme.gridUnit}px;
line-height: 1.2;
`}
`;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import {
getChartMetadataRegistry,
validateNonEmpty,
isValidExpression,
styled,
withTheme,
} from '@superset-ui/core';

Expand All @@ -43,6 +44,7 @@ import {
} from 'src/modules/AnnotationTypes';
import PopoverSection from 'src/components/PopoverSection';
import ControlHeader from 'src/explore/components/ControlHeader';
import { EmptyStateSmall } from 'src/components/EmptyState';

const AUTOMATIC_COLOR = '';

Expand Down Expand Up @@ -98,6 +100,35 @@ const defaultProps = {
close: () => {},
};

const NotFoundContentWrapper = styled.div`
&& > div:first-child {
padding-left: 0;
padding-right: 0;
}
`;

const NotFoundContent = () => (
<NotFoundContentWrapper>
<EmptyStateSmall
title={t('No annotation layers')}
description={
<span>
{t('Add an annotation layer')}{' '}
<a
href="/annotationlayermodelview/list"
target="_blank"
rel="noopener noreferrer"
>
{t('here')}
</a>
.
</span>
}
image="empty.svg"
/>
</NotFoundContentWrapper>
);

class AnnotationLayer extends React.PureComponent {
constructor(props) {
super(props);
Expand Down Expand Up @@ -416,6 +447,7 @@ class AnnotationLayer extends React.PureComponent {
onChange={this.handleValue}
validationErrors={!value ? ['Mandatory'] : []}
optionRenderer={this.renderOption}
notFoundContent={<NotFoundContent />}
/>
);
}
Expand Down Expand Up @@ -760,9 +792,10 @@ class AnnotationLayer extends React.PureComponent {
ariaLabel={t('Annotation source type')}
hovered
description={t('Choose the source of your annotations')}
label={t('Annotation Source')}
label={t('Annotation source')}
name="annotation-source-type"
options={supportedSourceTypes}
notFoundContent={<NotFoundContent />}
value={sourceType}
onChange={this.handleAnnotationSourceType}
validationErrors={!sourceType ? [t('Mandatory')] : []}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ const propTypes = {
placeholder: PropTypes.string,
filterOption: PropTypes.func,
tokenSeparators: PropTypes.arrayOf(PropTypes.string),
notFoundContent: PropTypes.object,

// ControlHeader props
label: PropTypes.string,
Expand Down Expand Up @@ -179,6 +180,7 @@ export default class SelectControl extends React.PureComponent {
showHeader,
value,
tokenSeparators,
notFoundContent,
// ControlHeader props
description,
renderTrigger,
Expand Down Expand Up @@ -245,6 +247,7 @@ export default class SelectControl extends React.PureComponent {
sortComparator: this.props.sortComparator,
value: getValue(),
tokenSeparators,
notFoundContent,
};

return (
Expand Down

0 comments on commit 0ee1f49

Please sign in to comment.