Skip to content

Commit

Permalink
refactor: migrate RowCountLabel to TypeScript & added story (apache#1…
Browse files Browse the repository at this point in the history
…8105)

* enable superbook for explore component

* migrate RowCountLabel to TypeScript

* add storybook for RowCountLabel
  • Loading branch information
ad-m authored and shcoderAlex committed Feb 7, 2022
1 parent f06eb69 commit a383419
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 15 deletions.
4 changes: 3 additions & 1 deletion superset-frontend/.storybook/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@ module.exports = {
core: {
builder: 'webpack5',
},
stories: ['../src/@(components|common|filters)/**/*.stories.@(t|j)sx'],
stories: [
'../src/@(components|common|filters|explore)/**/*.stories.@(t|j)sx',
],
addons: [
'@storybook/addon-essentials',
'@storybook/addon-links',
Expand Down
59 changes: 59 additions & 0 deletions superset-frontend/src/explore/components/RowCountLabel.stories.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/**
* 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.
*/
import React from 'react';
import RowCountLabel from './RowCountLabel';

export default {
title: 'RowCountLabel',
component: RowCountLabel,
};

const options = {
loading: {
loading: true,
},
full: {
rowcount: 100,
limit: 100,
},
medium: {
rowcount: 50,
limit: 100,
},
suffix: {
rowcount: 1,
suffix: 'suffix',
},
};

export const RowCountLabelGallery = () => (
<>
{Object.keys(options).map(name => (
<>
<h4>{name}</h4>
<RowCountLabel
loading={options[name].loading}
rowcount={options[name].rowcount}
limit={options[name].limit}
suffix={options[name].suffix}
/>
</>
))}
</>
);
Original file line number Diff line number Diff line change
Expand Up @@ -17,25 +17,20 @@
* under the License.
*/
import React from 'react';
import PropTypes from 'prop-types';
import { getNumberFormatter, t } from '@superset-ui/core';

import Label from 'src/components/Label';
import { Tooltip } from 'src/components/Tooltip';

const propTypes = {
rowcount: PropTypes.number,
limit: PropTypes.number,
rows: PropTypes.string,
suffix: PropTypes.string,
loading: PropTypes.bool,
type RowCountLabelProps = {
rowcount: number;
limit?: number;
suffix?: string;
loading?: boolean;
};

const defaultProps = {
suffix: t('rows'),
};

export default function RowCountLabel({ rowcount, limit, suffix, loading }) {
export default function RowCountLabel(props: RowCountLabelProps) {
const { rowcount = 0, limit, suffix = t('rows'), loading } = props;
const limitReached = rowcount === limit;
const type =
limitReached || (rowcount === 0 && !loading) ? 'danger' : 'default';
Expand All @@ -55,5 +50,4 @@ export default function RowCountLabel({ rowcount, limit, suffix, loading }) {
);
}

RowCountLabel.propTypes = propTypes;
RowCountLabel.defaultProps = defaultProps;
export type { RowCountLabelProps };

0 comments on commit a383419

Please sign in to comment.