Commit cf5d3b0e authored by 陈帅's avatar 陈帅

run eslint fix

parent 8ae5c0b9
This diff is collapsed.
/functions/mock/**
/scripts
/config
\ No newline at end of file
/config
**/node_modules/**
_scripts
\ No newline at end of file
const fabric = require('@umijs/fabric');
module.exports = {
parser: 'babel-eslint',
extends: ['airbnb', 'prettier', 'plugin:compat/recommended'],
env: {
browser: true,
node: true,
es6: true,
mocha: true,
jest: true,
jasmine: true,
...fabric.default,
rules: {
...fabric.default.rules,
},
globals: {
APP_TYPE: true,
ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION: true,
page: true,
},
rules: {
'react/jsx-filename-extension': [1, { extensions: ['.js'] }],
'react/jsx-wrap-multilines': 0,
'react/prop-types': 0,
'react/forbid-prop-types': 0,
'react/jsx-one-expression-per-line': 0,
'import/no-unresolved': [2, { ignore: ['^@/', '^umi/'] }],
'import/no-extraneous-dependencies': [
2,
{
optionalDependencies: true,
devDependencies: ['**/tests/**.js', '/mock/**.js', '**/**.test.js'],
},
],
'jsx-a11y/no-noninteractive-element-interactions': 0,
'jsx-a11y/click-events-have-key-events': 0,
'jsx-a11y/no-static-element-interactions': 0,
'jsx-a11y/anchor-is-valid': 0,
'linebreak-style': 0,
},
settings: {
polyfills: ['fetch', 'promises', 'url'],
},
};
{
"singleQuote": true,
"trailingComma": "all",
"printWidth": 100,
"proseWrap": "never",
"overrides": [
{
"files": ".prettierrc",
"options": {
"parser": "json"
}
}
]
}
\ No newline at end of file
const fabric = require('@umijs/fabric');
module.exports = {
...fabric.prettier,
};
const fabric = require('@umijs/fabric');
module.exports = {
...fabric.stylelint,
};
{
"extends": [
"stylelint-config-standard",
"stylelint-config-css-modules",
"stylelint-config-rational-order",
"stylelint-config-prettier"
],
"plugins": ["stylelint-order", "stylelint-declaration-block-no-ignored-properties"],
"rules": {
"no-descending-specificity": null,
"plugin/declaration-block-no-ignored-properties": true
}
}
......@@ -119,7 +119,7 @@ function fakeList(count: number): ListItemDataType[] {
owner: user[i % 10],
title: titles[i % 8],
avatar: avatars[i % 8],
cover: parseInt(i / 4 + '', 10) % 2 === 0 ? covers[i % 4] : covers[3 - (i % 4)],
cover: parseInt(`${i / 4}`, 10) % 2 === 0 ? covers[i % 4] : covers[3 - (i % 4)],
status: ['active', 'exception', 'normal'][i % 3] as
| 'normal'
| 'exception'
......
......@@ -19,7 +19,7 @@ export interface AvatarListProps {
maxLength?: number;
excessItemsStyle?: React.CSSProperties;
style?: React.CSSProperties;
children: React.ReactElement<AvatarItemProps> | Array<React.ReactElement<AvatarItemProps>>;
children: React.ReactElement<AvatarItemProps> | React.ReactElement<AvatarItemProps>[];
}
const avatarSizeToClassName = (size?: SizeType) =>
......@@ -54,9 +54,7 @@ const AvatarList: React.SFC<AvatarListProps> & { Item: typeof Item } = ({
}) => {
const numOfChildren = React.Children.count(children);
const numToShow = maxLength >= numOfChildren ? numOfChildren : maxLength;
const childrenArray = React.Children.toArray(children) as Array<
React.ReactElement<AvatarItemProps>
>;
const childrenArray = React.Children.toArray(children) as React.ReactElement<AvatarItemProps>[];
const childrenWithProps = childrenArray.slice(0, numToShow).map(child =>
React.cloneElement(child, {
size,
......
......@@ -138,6 +138,7 @@ class PAGE_NAME_UPPER_CAMEL_CASE extends PureComponent<
inputValue: '',
});
};
renderChildrenByTabKey = (tabKey: BLOCK_NAME_CAMEL_CASEState['tabKey']) => {
if (tabKey === 'projects') {
return <Projects />;
......@@ -150,6 +151,7 @@ class PAGE_NAME_UPPER_CAMEL_CASE extends PureComponent<
}
return null;
};
render() {
const { newTags, inputVisible, inputValue, tabKey } = this.state;
const { currentUser, currentUserLoading } = this.props;
......@@ -184,9 +186,7 @@ class PAGE_NAME_UPPER_CAMEL_CASE extends PureComponent<
<Divider dashed />
<div className={styles.tags}>
<div className={styles.tagsTitle}>标签</div>
{currentUser.tags.concat(newTags).map(item => {
return <Tag key={item.key}>{item.label}</Tag>;
})}
{currentUser.tags.concat(newTags).map(item => <Tag key={item.key}>{item.label}</Tag>)}
{inputVisible && (
<Input
ref={ref => this.saveInputRef(ref)}
......
import { queryCurrent, queryFakeList } from './service';
import { Reducer, AnyAction } from 'redux';
import { EffectsCommandMap } from 'dva';
import { CurrentUser, ListItemDataType } from './data';
import { queryCurrent, queryFakeList } from './service';
export interface ModalState {
currentUser: Partial<CurrentUser>;
list: ListItemDataType[];
}
import { Reducer } from 'redux';
import { EffectsCommandMap } from 'dva';
import { AnyAction } from 'redux';
export type Effect = (
action: AnyAction,
effects: EffectsCommandMap & { select: <T>(func: (state: ModalState) => T) => T },
......
......@@ -5,7 +5,7 @@ export async function queryCurrent() {
}
export async function queryFakeList(params: { count: number }) {
return request(`/api/fake_list`, {
return request('/api/fake_list', {
params,
});
}
import React, { Component } from 'react';
import { Select, Spin } from 'antd';
import { connect } from 'dva';
import styles from './GeographicView.less';
import { Dispatch } from 'redux';
import styles from './GeographicView.less';
import { ProvinceData, CityData } from '../data';
const { Option } = Select;
interface SelectItem {
......
......@@ -7,6 +7,7 @@ import styles from './BaseView.less';
import GeographicView from './GeographicView';
import PhoneView from './PhoneView';
import { CurrentUser } from '../data';
const FormItem = Form.Item;
const { Option } = Select;
......@@ -71,6 +72,7 @@ interface BaseViewProps extends FormComponentProps {
}))
class BaseView extends Component<BaseViewProps> {
view: HTMLDivElement | undefined;
componentDidMount() {
this.setBaseInfo();
}
......
......@@ -34,6 +34,7 @@ class PAGE_NAME_UPPER_CAMEL_CASE extends Component<
PAGE_NAME_UPPER_CAMEL_CASEState
> {
main: HTMLDivElement | undefined;
constructor(props: PAGE_NAME_UPPER_CAMEL_CASEProps) {
super(props);
const menuMap = {
......
import { query as queryUsers, queryCurrent, queryProvince, queryCity } from './service';
import { Reducer } from 'redux';
import { Reducer, AnyAction } from 'redux';
import { EffectsCommandMap } from 'dva';
import { AnyAction } from 'redux';
import { query as queryUsers, queryCurrent, queryProvince, queryCity } from './service';
import { CurrentUser, City, Province } from './data';
export interface ModalState {
......
......@@ -10,10 +10,10 @@ export interface IBarProps {
color?: string;
padding?: [number, number, number, number];
height?: number;
data: Array<{
data: {
x: string;
y: number;
}>;
}[];
forceFit?: boolean;
autoLabel?: boolean;
style?: React.CSSProperties;
......@@ -28,7 +28,9 @@ class Bar extends Component<
state = {
autoHideXLabels: false,
};
root: HTMLDivElement | undefined;
node: HTMLDivElement | undefined;
componentDidMount() {
......@@ -38,9 +40,11 @@ class Bar extends Component<
componentWillUnmount() {
window.removeEventListener('resize', this.resize);
}
handleRoot = (n: HTMLDivElement) => {
this.root = n;
};
handleRef = (n: HTMLDivElement) => {
this.node = n;
};
......
......@@ -112,7 +112,7 @@ class Gauge extends React.Component<IGaugeProps> {
label={{
offset: -12,
formatter,
textStyle: textStyle,
textStyle,
}}
/>
<Guide>
......
......@@ -23,10 +23,10 @@ export interface IMiniAreaProps {
scale?: { x: any; y: any };
yAxis?: IAxis;
borderWidth?: number;
data: Array<{
data: {
x: number | string;
y: number;
}>;
}[];
}
class MiniArea extends React.Component<IMiniAreaProps> {
......
......@@ -6,10 +6,10 @@ import styles from '../index.less';
export interface IMiniBarProps {
color?: string;
height?: number;
data: Array<{
data: {
x: number | string;
y: number;
}>;
}[];
forceFit?: boolean;
style?: React.CSSProperties;
}
......
......@@ -17,8 +17,7 @@ const MiniProgress: React.SFC<IMiniProgressProps> = ({
color = 'rgb(19, 194, 194)',
strokeWidth,
percent,
}) => {
return (
}) => (
<div className={styles.miniProgress}>
<Tooltip title={targetLabel}>
<div className={styles.target} style={{ left: target ? `${target}%` : undefined }}>
......@@ -38,6 +37,5 @@ const MiniProgress: React.SFC<IMiniProgressProps> = ({
</div>
</div>
);
};
export default MiniProgress;
......@@ -9,6 +9,7 @@ import Bind from 'lodash-decorators/bind';
import autoHeight from '../autoHeight';
import styles from './index.less';
export interface IPieProps {
animate?: boolean;
color?: string;
......@@ -19,10 +20,10 @@ export interface IPieProps {
hasLegend?: boolean;
padding?: [number, number, number, number];
percent?: number;
data?: Array<{
data?: {
x: string | string;
y: number;
}>;
}[];
inner?: number;
lineWidth?: number;
forceFit?: boolean;
......@@ -35,7 +36,7 @@ export interface IPieProps {
subTitle?: React.ReactNode;
}
interface IPieState {
legendData: Array<{ checked: boolean; x: string; color: string; percent: number; y: string }>;
legendData: { checked: boolean; x: string; color: string; percent: number; y: string }[];
legendBlock: boolean;
}
class Pie extends Component<IPieProps, IPieState> {
......@@ -45,7 +46,9 @@ class Pie extends Component<IPieProps, IPieState> {
};
requestRef: number | undefined;
root!: HTMLDivElement;
chart: G2.Chart | undefined;
componentDidMount() {
......@@ -104,6 +107,7 @@ class Pie extends Component<IPieProps, IPieState> {
legendData,
});
};
handleRoot = (n: HTMLDivElement) => {
this.root = n;
};
......@@ -118,7 +122,7 @@ class Pie extends Component<IPieProps, IPieState> {
const filteredLegendData = legendData.filter(l => l.checked).map(l => l.x);
if (this.chart) {
this.chart.filter('x', val => filteredLegendData.indexOf(val + '') > -1);
this.chart.filter('x', val => filteredLegendData.indexOf(`${val}`) > -1);
}
this.setState({
......@@ -216,11 +220,11 @@ class Pie extends Component<IPieProps, IPieState> {
data = [
{
x: '占比',
y: parseFloat(percent + ''),
y: parseFloat(`${percent}`),
},
{
x: '反比',
y: 100 - parseFloat(percent + ''),
y: 100 - parseFloat(`${percent}`),
},
];
}
......
......@@ -13,10 +13,10 @@ import styles from './index.less';
const imgUrl = 'https://gw.alipayobjects.com/zos/rmsportal/gWyeGLCdFFRavBGIDzWk.png';
export interface ITagCloudProps {
data: Array<{
data: {
name: string;
value: number;
}>;
}[];
height?: number;
className?: string;
style?: React.CSSProperties;
......@@ -34,10 +34,13 @@ class TagCloud extends Component<ITagCloudProps, ITagCloudState> {
height: 0,
width: 0,
};
isUnmount!: boolean;
requestRef!: number;
root: HTMLDivElement | undefined;
imageMask: HTMLImageElement | undefined;
componentDidMount() {
......@@ -54,16 +57,19 @@ class TagCloud extends Component<ITagCloudProps, ITagCloudState> {
this.renderChart(this.props);
}
}
componentWillUnmount() {
this.isUnmount = true;
window.cancelAnimationFrame(this.requestRef);
window.removeEventListener('resize', this.resize);
}
resize = () => {
this.requestRef = requestAnimationFrame(() => {
this.renderChart(this.props);
});
};
saveRootRef = (node: HTMLDivElement) => {
this.root = node;
};
......
......@@ -6,11 +6,11 @@ import autoHeight from '../autoHeight';
import styles from './index.less';
export interface ITimelineChartProps {
data: Array<{
data: {
x: number;
y1: number;
y2: number;
}>;
}[];
title?: string;
titleMap: { y1: string; y2: string };
padding?: [number, number, number, number];
......
......@@ -18,8 +18,11 @@ class WaterWave extends Component<IWaterWaveProps> {
state = {
radio: 1,
};
timer: number = 0;
root: HTMLDivElement | undefined | null;
node: HTMLCanvasElement | undefined | null;
componentDidMount() {
......@@ -59,6 +62,7 @@ class WaterWave extends Component<IWaterWaveProps> {
});
}
};
renderChart(type?: string) {
const { percent, color = '#1890FF' } = this.props;
const data = percent / 100;
......@@ -201,6 +205,7 @@ class WaterWave extends Component<IWaterWaveProps> {
}
render();
}
render() {
const { radio } = this.state;
const { percent, title, height = 1 } = this.props;
......
......@@ -7,10 +7,10 @@ export type IReactComponent<P = any> =
function computeHeight(node: HTMLDivElement) {
node.style.height = '100%';
const totalHeight = parseInt(getComputedStyle(node).height + '', 10);
const totalHeight = parseInt(`${getComputedStyle(node).height}`, 10);
const padding =
parseInt(getComputedStyle(node).paddingTop + '', 10) +
parseInt(getComputedStyle(node).paddingBottom + '', 10);
parseInt(`${getComputedStyle(node).paddingTop}`, 10) +
parseInt(`${getComputedStyle(node).paddingBottom}`, 10);
return totalHeight - padding;
}
......@@ -35,14 +35,16 @@ interface IAutoHeightProps {
}
function autoHeight() {
return function<P extends IAutoHeightProps>(
return function<P extends IAutoHeightProps> (
WrappedComponent: React.ComponentClass<P> | React.SFC<P>,
): React.ComponentClass<P> {
class AutoHeightComponent extends React.Component<P & IAutoHeightProps> {
state = {
computedHeight: 0,
};
root!: HTMLDivElement;
componentDidMount() {
const { height } = this.props;
if (!height) {
......@@ -55,9 +57,11 @@ function autoHeight() {
}
}
}
handleRoot = (node: HTMLDivElement) => {
this.root = node;
};
render() {
const { height } = this.props;
const { computedHeight } = this.state;
......
import React from 'react';
import { Row, Col, Icon, Tooltip } from 'antd';
import { FormattedMessage } from 'umi-plugin-react/locale';
import Charts from './Charts';
import numeral from 'numeral';
import Charts from './Charts';
import styles from '../style.less';
import Yuan from '../utils/Yuan';
import Trend from './Trend';
import { IVisitData } from '../data.d';
const { ChartCard, MiniArea, MiniBar, MiniProgress, Field } = Charts;
const topColResponsiveProps = {
......@@ -18,8 +19,7 @@ const topColResponsiveProps = {
style: { marginBottom: 24 },
};
const IntroduceRow = ({ loading, visitData }: { loading: boolean; visitData: IVisitData[] }) => {
return (
const IntroduceRow = ({ loading, visitData }: { loading: boolean; visitData: IVisitData[] }) => (
<Row gutter={24}>
<Col {...topColResponsiveProps}>
<ChartCard
......@@ -160,6 +160,5 @@ const IntroduceRow = ({ loading, visitData }: { loading: boolean; visitData: IVi
</Col>
</Row>
);
};
export default IntroduceRow;
......@@ -2,6 +2,7 @@ import React from 'react';
import { Icon } from 'antd';
import classNames from 'classnames';
import styles from './index.less';
export interface NumberInfoProps {
title?: React.ReactNode | string;
subTitle?: React.ReactNode | string;
......
......@@ -5,6 +5,7 @@ import Charts from './Charts';
import styles from '../style.less';
import NumberInfo from './NumberInfo';
import { IOfflineData, IOfflineChartData } from '../data';
const { TimelineChart, Pie } = Charts;
const CustomTab = ({
......@@ -13,8 +14,7 @@ const CustomTab = ({
}: {
data: IOfflineData;
currentTabKey: string;
}) => {
return (
}) => (
<Row gutter={8} style={{ width: 138, margin: '8px 0' }}>
<Col span={12}>
<NumberInfo
......@@ -42,7 +42,6 @@ const CustomTab = ({
</Col>
</Row>
);
};
const { TabPane } = Tabs;
......
import React from 'react';
import { Card, Radio } from 'antd';
import Charts from './Charts';
import { FormattedMessage } from 'umi-plugin-react/locale';
import { RadioChangeEvent } from 'antd/es/radio';
import Charts from './Charts';
import styles from '../style.less';
import Yuan from '../utils/Yuan';
import { RadioChangeEvent } from 'antd/es/radio';
import { ISalesData } from '../data';
const { Pie } = Charts;
......@@ -21,8 +21,7 @@ const ProportionSales = ({
salesType: 'all' | 'online' | 'stores';
salesPieData: ISalesData[];
handleChangeSalesType?: (e: RadioChangeEvent) => void;
}) => {
return (
}) => (
<Card
loading={loading}
className={styles.salesCard}
......@@ -74,6 +73,5 @@ const ProportionSales = ({
</div>
</Card>
);
};
export default ProportionSales;
......@@ -2,8 +2,8 @@ import React from 'react';
import { Row, Col, Card, Tabs, DatePicker } from 'antd';
import { FormattedMessage, formatMessage } from 'umi-plugin-react/locale';
import numeral from 'numeral';
import Charts from './Charts';
import { RangePickerValue } from 'antd/es/date-picker/interface';
import Charts from './Charts';
import { ISalesData } from '../data';
import styles from '../style.less';
......
import React from 'react';
import { Row, Col, Table, Tooltip, Card, Icon } from 'antd';
import { FormattedMessage } from 'umi-plugin-react/locale';
import numeral from 'numeral';
import Charts from './Charts';
import Trend from './Trend';
import NumberInfo from './NumberInfo';
import numeral from 'numeral';
import styles from '../style.less';
import { ISearchData, IVisitData2 } from '../data';
......
......@@ -2,13 +2,13 @@ import React, { Component, Suspense } from 'react';
import { connect } from 'dva';
import { Row, Col, Icon, Menu, Dropdown } from 'antd';
import { RangePickerValue } from 'antd/es/date-picker/interface';
import { Dispatch } from 'redux';
import { RadioChangeEvent } from 'antd/es/radio';
import { GridContent } from '@ant-design/pro-layout';
import { getTimeDistance } from './utils/utils';
import styles from './style.less';
import PageLoading from './components/PageLoading';
import { Dispatch } from 'redux';
import { IAnalysisData } from './data.d';
import { RadioChangeEvent } from 'antd/es/radio';
import { GridContent } from '@ant-design/pro-layout';
const IntroduceRow = React.lazy(() => import('./components/IntroduceRow'));
const SalesCard = React.lazy(() => import('./components/SalesCard'));
......@@ -51,8 +51,11 @@ class PAGE_NAME_UPPER_CAMEL_CASE extends Component<
currentTabKey: '',
rangePickerValue: getTimeDistance('year'),
};
reqRef!: number;
timeoutId!: number;
componentDidMount() {
const { dispatch } = this.props;
this.reqRef = requestAnimationFrame(() => {
......
import { fakeChartData } from './service';
import { IAnalysisData } from './data';
import { Reducer } from 'redux';
import { Reducer, AnyAction } from 'redux';
import { EffectsCommandMap } from 'dva';
import { AnyAction } from 'redux';
import { IAnalysisData } from './data';
import { fakeChartData } from './service';
export type Effect = (
action: AnyAction,
......
......@@ -7,6 +7,7 @@ export default class Yuan extends React.Component<{
children: React.ReactText;
}> {
main: HTMLSpanElement | undefined | null;
componentDidMount() {
this.renderToHtml();
}
......@@ -14,6 +15,7 @@ export default class Yuan extends React.Component<{
componentDidUpdate() {
this.renderToHtml();
}
renderToHtml = () => {
const { children } = this.props;
if (this.main) {
......
import React, { Component } from 'react';
import Charts from '../Charts';
import { Statistic } from 'antd';
import Charts from '../Charts';
import styles from './index.less';
const { MiniArea } = Charts;
......@@ -24,12 +24,15 @@ export default class ActiveChart extends Component {
state = {
activeData: getActiveData(),
};
timer: number | undefined;
requestRef: number | undefined;
componentDidMount() {
this.loopData();
}
componentWillUnmount() {
clearTimeout(this.timer);
if (this.requestRef) {
......
......@@ -112,7 +112,7 @@ class Gauge extends React.Component<IGaugeProps> {
label={{
offset: -12,
formatter,
textStyle: textStyle,
textStyle,
}}
/>
<Guide>
......
......@@ -24,10 +24,10 @@ export interface IMiniAreaProps {
scale?: { x?: any; y?: any };
yAxis?: Partial<IAxis>;
borderWidth?: number;
data: Array<{
data: {
x: number | string;
y: number;
}>;
}[];
}
class MiniArea extends React.Component<IMiniAreaProps> {
......
......@@ -9,6 +9,7 @@ import Bind from 'lodash-decorators/bind';
import autoHeight from '../autoHeight';
import styles from './index.less';
export interface IPieProps {
animate?: boolean;
color?: string;
......@@ -19,10 +20,10 @@ export interface IPieProps {
hasLegend?: boolean;
padding?: [number, number, number, number];
percent?: number;
data?: Array<{
data?: {
x: string | string;
y: number;
}>;
}[];
inner?: number;
lineWidth?: number;
forceFit?: boolean;
......@@ -35,7 +36,7 @@ export interface IPieProps {
subTitle?: React.ReactNode;
}
interface IPieState {
legendData: Array<{ checked: boolean; x: string; color: string; percent: number; y: string }>;
legendData: { checked: boolean; x: string; color: string; percent: number; y: string }[];
legendBlock: boolean;
}
class Pie extends Component<IPieProps, IPieState> {
......@@ -45,7 +46,9 @@ class Pie extends Component<IPieProps, IPieState> {
};
requestRef: number | undefined;
root!: HTMLDivElement;
chart: G2.Chart | undefined;
componentDidMount() {
......@@ -104,6 +107,7 @@ class Pie extends Component<IPieProps, IPieState> {
legendData,
});
};
handleRoot = (n: HTMLDivElement) => {
this.root = n;
};
......@@ -118,7 +122,7 @@ class Pie extends Component<IPieProps, IPieState> {
const filteredLegendData = legendData.filter(l => l.checked).map(l => l.x);
if (this.chart) {
this.chart.filter('x', val => filteredLegendData.indexOf(val + '') > -1);
this.chart.filter('x', val => filteredLegendData.indexOf(`${val}`) > -1);
}
this.setState({
......@@ -216,11 +220,11 @@ class Pie extends Component<IPieProps, IPieState> {
data = [
{
x: '占比',
y: parseFloat(percent + ''),
y: parseFloat(`${percent}`),
},
{
x: '反比',
y: 100 - parseFloat(percent + ''),
y: 100 - parseFloat(`${percent}`),
},
];
}
......
......@@ -13,10 +13,10 @@ import styles from './index.less';
const imgUrl = 'https://gw.alipayobjects.com/zos/rmsportal/gWyeGLCdFFRavBGIDzWk.png';
export interface ITagCloudProps {
data: Array<{
data: {
name: string;
value: string;
}>;
}[];
height?: number;
className?: string;
style?: React.CSSProperties;
......@@ -34,10 +34,13 @@ class TagCloud extends Component<ITagCloudProps, ITagCloudState> {
height: 0,
width: 0,
};
isUnmount!: boolean;
requestRef!: number;
root: HTMLDivElement | undefined;
imageMask: HTMLImageElement | undefined;
componentDidMount() {
......@@ -54,16 +57,19 @@ class TagCloud extends Component<ITagCloudProps, ITagCloudState> {
this.renderChart(this.props);
}
}
componentWillUnmount() {
this.isUnmount = true;
window.cancelAnimationFrame(this.requestRef);
window.removeEventListener('resize', this.resize);
}
resize = () => {
this.requestRef = requestAnimationFrame(() => {
this.renderChart(this.props);
});
};
saveRootRef = (node: HTMLDivElement) => {
this.root = node;
};
......
......@@ -18,8 +18,11 @@ class WaterWave extends Component<IWaterWaveProps> {
state = {
radio: 1,
};
timer: number = 0;
root: HTMLDivElement | undefined | null;
node: HTMLCanvasElement | undefined | null;
componentDidMount() {
......@@ -59,6 +62,7 @@ class WaterWave extends Component<IWaterWaveProps> {
});
}
};
renderChart(type?: string) {
const { percent, color = '#1890FF' } = this.props;
const data = percent / 100;
......@@ -201,6 +205,7 @@ class WaterWave extends Component<IWaterWaveProps> {
}
render();
}
render() {
const { radio } = this.state;
const { percent, title, height = 1 } = this.props;
......
......@@ -7,10 +7,10 @@ export type IReactComponent<P = any> =
function computeHeight(node: HTMLDivElement) {
node.style.height = '100%';
const totalHeight = parseInt(getComputedStyle(node).height + '', 10);
const totalHeight = parseInt(`${getComputedStyle(node).height}`, 10);
const padding =
parseInt(getComputedStyle(node).paddingTop + '', 10) +
parseInt(getComputedStyle(node).paddingBottom + '', 10);
parseInt(`${getComputedStyle(node).paddingTop}`, 10) +
parseInt(`${getComputedStyle(node).paddingBottom}`, 10);
return totalHeight - padding;
}
......@@ -35,14 +35,16 @@ interface IAutoHeightProps {
}
function autoHeight() {
return function<P extends IAutoHeightProps>(
return function<P extends IAutoHeightProps> (
WrappedComponent: React.ComponentClass<P> | React.SFC<P>,
): React.ComponentClass<P> {
class AutoHeightComponent extends React.Component<P & IAutoHeightProps> {
state = {
computedHeight: 0,
};
root!: HTMLDivElement;
componentDidMount() {
const { height } = this.props;
if (!height) {
......@@ -54,9 +56,11 @@ function autoHeight() {
}
}
}
handleRoot = (node: HTMLDivElement) => {
this.root = node;
};
render() {
const { height } = this.props;
const { computedHeight } = this.state;
......
......@@ -3,6 +3,7 @@ import Gauge from './Gauge';
import WaterWave from './WaterWave';
import TagCloud from './TagCloud';
import MiniArea from './MiniArea';
const Charts = {
Pie,
WaterWave,
......
......@@ -4,11 +4,11 @@ import { formatMessage, FormattedMessage } from 'umi-plugin-react/locale';
import { Row, Col, Card, Statistic, Tooltip } from 'antd';
import numeral from 'numeral';
import { Dispatch } from 'redux';
import { GridContent } from '@ant-design/pro-layout';
import { IStateType } from './model';
import ActiveChart from './components/ActiveChart';
import styles from './style.less';
import Charts from './components/Charts';
import { GridContent } from '@ant-design/pro-layout';
const { Countdown } = Statistic;
......
import { queryTags } from './service';
import { ITag } from './data';
import { Reducer } from 'redux';
import { Reducer, AnyAction } from 'redux';
import { EffectsCommandMap } from 'dva';
import { AnyAction } from 'redux';
import { ITag } from './data';
import { queryTags } from './service';
export interface IStateType {
tags: ITag[];
......
......@@ -7,10 +7,10 @@ export type IReactComponent<P = any> =
function computeHeight(node: HTMLDivElement) {
node.style.height = '100%';
const totalHeight = parseInt(getComputedStyle(node).height + '', 10);
const totalHeight = parseInt(`${getComputedStyle(node).height}`, 10);
const padding =
parseInt(getComputedStyle(node).paddingTop + '', 10) +
parseInt(getComputedStyle(node).paddingBottom + '', 10);
parseInt(`${getComputedStyle(node).paddingTop}`, 10) +
parseInt(`${getComputedStyle(node).paddingBottom}`, 10);
return totalHeight - padding;
}
......@@ -35,14 +35,16 @@ interface IAutoHeightProps {
}
function autoHeight() {
return function<P extends IAutoHeightProps>(
return function<P extends IAutoHeightProps> (
WrappedComponent: React.ComponentClass<P> | React.SFC<P>,
): React.ComponentClass<P> {
class AutoHeightComponent extends React.Component<P & IAutoHeightProps> {
state = {
computedHeight: 0,
};
root!: HTMLDivElement;
componentDidMount() {
const { height } = this.props;
if (!height) {
......@@ -55,9 +57,11 @@ function autoHeight() {
}
}
}
handleRoot = (node: HTMLDivElement) => {
this.root = node;
};
render() {
const { height } = this.props;
const { computedHeight } = this.state;
......
......@@ -9,11 +9,11 @@ export interface IRadarProps {
height?: number;
padding?: [number, number, number, number];
hasLegend?: boolean;
data: Array<{
data: {
name: string;
label: string;
value: string | number;
}>;
}[];
colors?: string[];
animate?: boolean;
forceFit?: boolean;
......@@ -21,20 +21,22 @@ export interface IRadarProps {
style?: React.CSSProperties;
}
interface IRadarState {
legendData: Array<{
legendData: {
checked: boolean;
name: string;
color: string;
percent: number;
value: string;
}>;
}[];
}
/* eslint react/no-danger:0 */
class Radar extends Component<IRadarProps, IRadarState> {
state: IRadarState = {
legendData: [],
};
chart: G2.Chart | undefined;
node: HTMLDivElement | undefined;
componentDidMount() {
......@@ -97,7 +99,7 @@ class Radar extends Component<IRadarProps, IRadarState> {
const filteredLegendData = legendData.filter(l => l.checked).map(l => l.name);
if (this.chart) {
this.chart.filter('name', val => filteredLegendData.indexOf(val + '') > -1);
this.chart.filter('name', val => filteredLegendData.indexOf(`${val}`) > -1);
this.chart.repaint();
}
......
......@@ -5,11 +5,11 @@ import Link from 'umi/link';
import { Row, Col, Card, List, Avatar } from 'antd';
import { Dispatch } from 'redux';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import EditableLinkGroup from './components/EditableLinkGroup';
import Radar from './components/Radar';
import { ModalState } from './model';
import { ICurrentUser, IActivities, IRadarData, INotice } from './data';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import styles from './style.less';
......@@ -209,9 +209,7 @@ class PAGE_NAME_UPPER_CAMEL_CASE extends PureComponent<BLOCK_NAME_CAMEL_CASEProp
>
<List<IActivities>
loading={activitiesLoading}
renderItem={item => {
return this.renderActivities(item);
}}
renderItem={item => this.renderActivities(item)}
dataSource={activities}
className={styles.activitiesList}
size="large"
......
......@@ -7,6 +7,7 @@ flow
```sh
umi block add ant-design-pro/flow
```
## SNAPSHOT
![SNAPSHOT](./snapshot.png)
......
......@@ -3,8 +3,7 @@ import { NodeMenu, EdgeMenu, GroupMenu, MultiMenu, CanvasMenu, ContextMenu } fro
import MenuItem from './MenuItem';
import styles from './index.less';
const FlowContextMenu = () => {
return (
const FlowContextMenu = () => (
<ContextMenu className={styles.contextMenu}>
<NodeMenu>
<MenuItem command="copy" />
......@@ -31,6 +30,5 @@ const FlowContextMenu = () => {
</CanvasMenu>
</ContextMenu>
);
};
export default FlowContextMenu;
......@@ -3,9 +3,7 @@ import { Command } from 'gg-editor';
import IconFont from '../../common/IconFont';
import styles from './index.less';
const upperFirst = (str: string) => {
return str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase());
};
const upperFirst = (str: string) => str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase());
interface MenuItemProps {
command: string;
......
......@@ -3,8 +3,7 @@ import { NodeMenu, CanvasMenu, ContextMenu } from 'gg-editor';
import MenuItem from './MenuItem';
import styles from './index.less';
const MindContextMenu = () => {
return (
const MindContextMenu = () => (
<ContextMenu className={styles.contextMenu}>
<NodeMenu>
<MenuItem command="append" text="Topic" />
......@@ -19,6 +18,5 @@ const MindContextMenu = () => {
</CanvasMenu>
</ContextMenu>
);
};
export default MindContextMenu;
......@@ -3,9 +3,7 @@ import { Card, Form, Input, Select } from 'antd';
import { withPropsAPI } from 'gg-editor';
import { FormComponentProps } from 'antd/es/form';
const upperFirst = (str: string) => {
return str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase());
};
const upperFirst = (str: string) => str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase());
const { Item } = Form;
const { Option } = Select;
......@@ -60,15 +58,13 @@ class DetailForm extends React.Component<DetailFormProps> {
}, 0);
};
renderEdgeShapeSelect = () => {
return (
renderEdgeShapeSelect = () => (
<Select onChange={this.handleSubmit}>
<Option value="flow-smooth">Smooth</Option>
<Option value="flow-polyline">Polyline</Option>
<Option value="flow-polyline-round">Polyline Round</Option>
</Select>
);
};
renderNodeDetail = () => {
const { form } = this.props;
......
......@@ -4,8 +4,7 @@ import { NodePanel, EdgePanel, GroupPanel, MultiPanel, CanvasPanel, DetailPanel
import DetailForm from './DetailForm';
import styles from './index.less';
const FlowDetailPanel = () => {
return (
const FlowDetailPanel = () => (
<DetailPanel className={styles.detailPanel}>
<NodePanel>
<DetailForm type="node" />
......@@ -24,6 +23,5 @@ const FlowDetailPanel = () => {
</CanvasPanel>
</DetailPanel>
);
};
export default FlowDetailPanel;
......@@ -4,8 +4,7 @@ import { NodePanel, CanvasPanel, DetailPanel } from 'gg-editor';
import DetailForm from './DetailForm';
import styles from './index.less';
const MindDetailPanel = () => {
return (
const MindDetailPanel = () => (
<DetailPanel className={styles.detailPanel}>
<NodePanel>
<DetailForm type="node" />
......@@ -15,6 +14,5 @@ const MindDetailPanel = () => {
</CanvasPanel>
</DetailPanel>
);
};
export default MindDetailPanel;
......@@ -3,8 +3,7 @@ import { Card } from 'antd';
import { ItemPanel, Item } from 'gg-editor';
import styles from './index.less';
const FlowItemPanel = () => {
return (
const FlowItemPanel = () => (
<ItemPanel className={styles.itemPanel}>
<Card bordered={false}>
<Item
......@@ -50,6 +49,5 @@ const FlowItemPanel = () => {
</Card>
</ItemPanel>
);
};
export default FlowItemPanel;
......@@ -3,8 +3,7 @@ import { Card } from 'antd';
import { ItemPanel, Item } from 'gg-editor';
import styles from './index.less';
const KoniItemPanel = () => {
return (
const KoniItemPanel = () => (
<ItemPanel className={styles.itemPanel}>
<Card bordered={false}>
<Item
......@@ -49,6 +48,5 @@ const KoniItemPanel = () => {
</Card>
</ItemPanel>
);
};
export default KoniItemPanel;
......@@ -2,12 +2,10 @@ import React from 'react';
import { Card } from 'antd';
import { Minimap } from 'gg-editor';
const EditorMinimap = () => {
return (
const EditorMinimap = () => (
<Card type="inner" size="small" title="Minimap" bordered={false}>
<Minimap height={200} />
</Card>
);
};
export default EditorMinimap;
......@@ -4,8 +4,7 @@ import { Toolbar } from 'gg-editor';
import ToolbarButton from './ToolbarButton';
import styles from './index.less';
const FlowToolbar = () => {
return (
const FlowToolbar = () => (
<Toolbar className={styles.toolbar}>
<ToolbarButton command="undo" />
<ToolbarButton command="redo" />
......@@ -27,6 +26,5 @@ const FlowToolbar = () => {
<ToolbarButton command="unGroup" icon="ungroup" text="Ungroup" />
</Toolbar>
);
};
export default FlowToolbar;
......@@ -4,8 +4,7 @@ import { Toolbar } from 'gg-editor';
import ToolbarButton from './ToolbarButton';
import styles from './index.less';
const FlowToolbar = () => {
return (
const FlowToolbar = () => (
<Toolbar className={styles.toolbar}>
<ToolbarButton command="undo" />
<ToolbarButton command="redo" />
......@@ -22,6 +21,5 @@ const FlowToolbar = () => {
<ToolbarButton command="expand" text="Unfold" />
</Toolbar>
);
};
export default FlowToolbar;
......@@ -4,9 +4,7 @@ import { Command } from 'gg-editor';
import IconFont from '../../common/IconFont';
import styles from './index.less';
const upperFirst = (str: string) => {
return str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase());
};
const upperFirst = (str: string) => str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase());
interface ToolbarButtonProps {
command: string;
......
import React from 'react';
import { Row, Col } from 'antd';
import GGEditor, { Flow } from 'gg-editor';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { formatMessage } from 'umi-plugin-react/locale';
import EditorMinimap from './components/EditorMinimap';
import { FlowContextMenu } from './components/EditorContextMenu';
import { FlowToolbar } from './components/EditorToolbar';
import { FlowItemPanel } from './components/EditorItemPanel';
import { FlowDetailPanel } from './components/EditorDetailPanel';
import styles from './index.less';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { formatMessage } from 'umi-plugin-react/locale';
GGEditor.setTrackable(false);
export default () => {
return (
<PageHeaderWrapper
content={formatMessage({
id: 'BLOCK_NAME.description',
defaultMessage: 'description',
})}
>
<GGEditor className={styles.editor}>
<Row type="flex" className={styles.editorHd}>
<Col span={24}>
<FlowToolbar />
</Col>
</Row>
<Row type="flex" className={styles.editorBd}>
<Col span={4} className={styles.editorSidebar}>
<FlowItemPanel />
</Col>
<Col span={16} className={styles.editorContent}>
<Flow className={styles.flow} />
</Col>
<Col span={4} className={styles.editorSidebar}>
<FlowDetailPanel />
<EditorMinimap />
</Col>
</Row>
<FlowContextMenu />
</GGEditor>
</PageHeaderWrapper>
);
};
export default () => (
<PageHeaderWrapper
content={formatMessage({
id: 'BLOCK_NAME.description',
defaultMessage: 'description',
})}
>
<GGEditor className={styles.editor}>
<Row type="flex" className={styles.editorHd}>
<Col span={24}>
<FlowToolbar />
</Col>
</Row>
<Row type="flex" className={styles.editorBd}>
<Col span={4} className={styles.editorSidebar}>
<FlowItemPanel />
</Col>
<Col span={16} className={styles.editorContent}>
<Flow className={styles.flow} />
</Col>
<Col span={4} className={styles.editorSidebar}>
<FlowDetailPanel />
<EditorMinimap />
</Col>
</Row>
<FlowContextMenu />
</GGEditor>
</PageHeaderWrapper>
);
......@@ -7,6 +7,7 @@ flow
```sh
umi block add ant-design-pro/flow
```
## SNAPSHOT
![SNAPSHOT](./snapshot.png)
......
......@@ -3,8 +3,7 @@ import { NodeMenu, EdgeMenu, GroupMenu, MultiMenu, CanvasMenu, ContextMenu } fro
import MenuItem from './MenuItem';
import styles from './index.less';
const FlowContextMenu = () => {
return (
const FlowContextMenu = () => (
<ContextMenu className={styles.contextMenu}>
<NodeMenu>
<MenuItem command="copy" />
......@@ -31,6 +30,5 @@ const FlowContextMenu = () => {
</CanvasMenu>
</ContextMenu>
);
};
export default FlowContextMenu;
......@@ -3,9 +3,8 @@ import { Command } from 'gg-editor';
import IconFont from '../../common/IconFont';
import styles from './index.less';
const upperFirst = (str: string) => {
return str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase());
};
const upperFirst = (str: string) =>
str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase());
interface MenuItemProps {
command: string;
......
......@@ -3,8 +3,7 @@ import { NodeMenu, CanvasMenu, ContextMenu } from 'gg-editor';
import MenuItem from './MenuItem';
import styles from './index.less';
const MindContextMenu = () => {
return (
const MindContextMenu = () => (
<ContextMenu className={styles.contextMenu}>
<NodeMenu>
<MenuItem command="append" text="Topic" />
......@@ -19,6 +18,5 @@ const MindContextMenu = () => {
</CanvasMenu>
</ContextMenu>
);
};
export default MindContextMenu;
......@@ -3,9 +3,7 @@ import { Card, Form, Input, Select } from 'antd';
import { withPropsAPI } from 'gg-editor';
import { FormComponentProps } from 'antd/es/form';
const upperFirst = (str: string) => {
return str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase());
};
const upperFirst = (str: string) => str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase());
const { Item } = Form;
const { Option } = Select;
......@@ -60,15 +58,13 @@ class DetailForm extends React.Component<DetailFormProps> {
}, 0);
};
renderEdgeShapeSelect = () => {
return (
renderEdgeShapeSelect = () => (
<Select onChange={this.handleSubmit}>
<Option value="flow-smooth">Smooth</Option>
<Option value="flow-polyline">Polyline</Option>
<Option value="flow-polyline-round">Polyline Round</Option>
</Select>
);
};
renderNodeDetail = () => {
const { form } = this.props;
......
......@@ -4,8 +4,7 @@ import { NodePanel, EdgePanel, GroupPanel, MultiPanel, CanvasPanel, DetailPanel
import DetailForm from './DetailForm';
import styles from './index.less';
const FlowDetailPanel = () => {
return (
const FlowDetailPanel = () => (
<DetailPanel className={styles.detailPanel}>
<NodePanel>
<DetailForm type="node" />
......@@ -24,6 +23,5 @@ const FlowDetailPanel = () => {
</CanvasPanel>
</DetailPanel>
);
};
export default FlowDetailPanel;
......@@ -4,8 +4,7 @@ import { NodePanel, CanvasPanel, DetailPanel } from 'gg-editor';
import DetailForm from './DetailForm';
import styles from './index.less';
const MindDetailPanel = () => {
return (
const MindDetailPanel = () => (
<DetailPanel className={styles.detailPanel}>
<NodePanel>
<DetailForm type="node" />
......@@ -15,6 +14,5 @@ const MindDetailPanel = () => {
</CanvasPanel>
</DetailPanel>
);
};
export default MindDetailPanel;
......@@ -3,8 +3,7 @@ import { Card } from 'antd';
import { ItemPanel, Item } from 'gg-editor';
import styles from './index.less';
const FlowItemPanel = () => {
return (
const FlowItemPanel = () => (
<ItemPanel className={styles.itemPanel}>
<Card bordered={false}>
<Item
......@@ -50,6 +49,5 @@ const FlowItemPanel = () => {
</Card>
</ItemPanel>
);
};
export default FlowItemPanel;
......@@ -3,8 +3,7 @@ import { Card } from 'antd';
import { ItemPanel, Item } from 'gg-editor';
import styles from './index.less';
const KoniItemPanel = () => {
return (
const KoniItemPanel = () => (
<ItemPanel className={styles.itemPanel}>
<Card bordered={false}>
<Item
......@@ -49,6 +48,5 @@ const KoniItemPanel = () => {
</Card>
</ItemPanel>
);
};
export default KoniItemPanel;
......@@ -2,12 +2,10 @@ import React from 'react';
import { Card } from 'antd';
import { Minimap } from 'gg-editor';
const EditorMinimap = () => {
return (
const EditorMinimap = () => (
<Card type="inner" size="small" title="Minimap" bordered={false}>
<Minimap height={200} />
</Card>
);
};
export default EditorMinimap;
......@@ -4,8 +4,7 @@ import { Toolbar } from 'gg-editor';
import ToolbarButton from './ToolbarButton';
import styles from './index.less';
const FlowToolbar = () => {
return (
const FlowToolbar = () => (
<Toolbar className={styles.toolbar}>
<ToolbarButton command="undo" />
<ToolbarButton command="redo" />
......@@ -27,6 +26,5 @@ const FlowToolbar = () => {
<ToolbarButton command="unGroup" icon="ungroup" text="Ungroup" />
</Toolbar>
);
};
export default FlowToolbar;
......@@ -4,8 +4,7 @@ import { Toolbar } from 'gg-editor';
import ToolbarButton from './ToolbarButton';
import styles from './index.less';
const FlowToolbar = () => {
return (
const FlowToolbar = () => (
<Toolbar className={styles.toolbar}>
<ToolbarButton command="undo" />
<ToolbarButton command="redo" />
......@@ -22,6 +21,5 @@ const FlowToolbar = () => {
<ToolbarButton command="expand" text="Unfold" />
</Toolbar>
);
};
export default FlowToolbar;
......@@ -4,9 +4,7 @@ import { Command } from 'gg-editor';
import IconFont from '../../common/IconFont';
import styles from './index.less';
const upperFirst = (str: string) => {
return str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase());
};
const upperFirst = (str: string) => str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase());
interface ToolbarButtonProps {
command: string;
......
import React from 'react';
import { Row, Col } from 'antd';
import GGEditor, { Koni } from 'gg-editor';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { formatMessage } from 'umi-plugin-react/locale';
import EditorMinimap from './components/EditorMinimap';
import { KoniContextMenu } from './components/EditorContextMenu';
import { KoniToolbar } from './components/EditorToolbar';
import { KoniItemPanel } from './components/EditorItemPanel';
import { KoniDetailPanel } from './components/EditorDetailPanel';
import styles from './index.less';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { formatMessage } from 'umi-plugin-react/locale';
GGEditor.setTrackable(false);
export default () => {
return (
export default () => (
<PageHeaderWrapper
content={formatMessage({
id: 'BLOCK_NAME.description',
......@@ -42,4 +41,3 @@ export default () => {
</GGEditor>
</PageHeaderWrapper>
);
};
......@@ -7,6 +7,7 @@ flow
```sh
umi block add ant-design-pro/flow
```
## SNAPSHOT
![SNAPSHOT](./snapshot.png)
......
......@@ -3,8 +3,7 @@ import { NodeMenu, EdgeMenu, GroupMenu, MultiMenu, CanvasMenu, ContextMenu } fro
import MenuItem from './MenuItem';
import styles from './index.less';
const FlowContextMenu = () => {
return (
const FlowContextMenu = () => (
<ContextMenu className={styles.contextMenu}>
<NodeMenu>
<MenuItem command="copy" />
......@@ -31,6 +30,5 @@ const FlowContextMenu = () => {
</CanvasMenu>
</ContextMenu>
);
};
export default FlowContextMenu;
......@@ -3,9 +3,7 @@ import { Command } from 'gg-editor';
import IconFont from '../../common/IconFont';
import styles from './index.less';
const upperFirst = (str: string) => {
return str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase());
};
const upperFirst = (str: string) => str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase());
interface MenuItemProps {
command: string;
......
......@@ -3,8 +3,7 @@ import { NodeMenu, CanvasMenu, ContextMenu } from 'gg-editor';
import MenuItem from './MenuItem';
import styles from './index.less';
const MindContextMenu = () => {
return (
const MindContextMenu = () => (
<ContextMenu className={styles.contextMenu}>
<NodeMenu>
<MenuItem command="append" text="Topic" />
......@@ -19,6 +18,5 @@ const MindContextMenu = () => {
</CanvasMenu>
</ContextMenu>
);
};
export default MindContextMenu;
......@@ -3,9 +3,7 @@ import { Card, Form, Input, Select } from 'antd';
import { withPropsAPI } from 'gg-editor';
import { FormComponentProps } from 'antd/es/form';
const upperFirst = (str: string) => {
return str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase());
};
const upperFirst = (str: string) => str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase());
const { Item } = Form;
const { Option } = Select;
......@@ -60,15 +58,13 @@ class DetailForm extends React.Component<DetailFormProps> {
}, 0);
};
renderEdgeShapeSelect = () => {
return (
renderEdgeShapeSelect = () => (
<Select onChange={this.handleSubmit}>
<Option value="flow-smooth">Smooth</Option>
<Option value="flow-polyline">Polyline</Option>
<Option value="flow-polyline-round">Polyline Round</Option>
</Select>
);
};
renderNodeDetail = () => {
const { form } = this.props;
......
......@@ -4,8 +4,7 @@ import { NodePanel, EdgePanel, GroupPanel, MultiPanel, CanvasPanel, DetailPanel
import DetailForm from './DetailForm';
import styles from './index.less';
const FlowDetailPanel = () => {
return (
const FlowDetailPanel = () => (
<DetailPanel className={styles.detailPanel}>
<NodePanel>
<DetailForm type="node" />
......@@ -24,6 +23,5 @@ const FlowDetailPanel = () => {
</CanvasPanel>
</DetailPanel>
);
};
export default FlowDetailPanel;
......@@ -4,8 +4,7 @@ import { NodePanel, CanvasPanel, DetailPanel } from 'gg-editor';
import DetailForm from './DetailForm';
import styles from './index.less';
const MindDetailPanel = () => {
return (
const MindDetailPanel = () => (
<DetailPanel className={styles.detailPanel}>
<NodePanel>
<DetailForm type="node" />
......@@ -15,6 +14,5 @@ const MindDetailPanel = () => {
</CanvasPanel>
</DetailPanel>
);
};
export default MindDetailPanel;
......@@ -3,8 +3,7 @@ import { Card } from 'antd';
import { ItemPanel, Item } from 'gg-editor';
import styles from './index.less';
const FlowItemPanel = () => {
return (
const FlowItemPanel = () => (
<ItemPanel className={styles.itemPanel}>
<Card bordered={false}>
<Item
......@@ -50,6 +49,5 @@ const FlowItemPanel = () => {
</Card>
</ItemPanel>
);
};
export default FlowItemPanel;
......@@ -3,8 +3,7 @@ import { Card } from 'antd';
import { ItemPanel, Item } from 'gg-editor';
import styles from './index.less';
const KoniItemPanel = () => {
return (
const KoniItemPanel = () => (
<ItemPanel className={styles.itemPanel}>
<Card bordered={false}>
<Item
......@@ -49,6 +48,5 @@ const KoniItemPanel = () => {
</Card>
</ItemPanel>
);
};
export default KoniItemPanel;
......@@ -2,12 +2,10 @@ import React from 'react';
import { Card } from 'antd';
import { Minimap } from 'gg-editor';
const EditorMinimap = () => {
return (
const EditorMinimap = () => (
<Card type="inner" size="small" title="Minimap" bordered={false}>
<Minimap height={200} />
</Card>
);
};
export default EditorMinimap;
......@@ -4,8 +4,7 @@ import { Toolbar } from 'gg-editor';
import ToolbarButton from './ToolbarButton';
import styles from './index.less';
const FlowToolbar = () => {
return (
const FlowToolbar = () => (
<Toolbar className={styles.toolbar}>
<ToolbarButton command="undo" />
<ToolbarButton command="redo" />
......@@ -27,6 +26,5 @@ const FlowToolbar = () => {
<ToolbarButton command="unGroup" icon="ungroup" text="Ungroup" />
</Toolbar>
);
};
export default FlowToolbar;
......@@ -4,8 +4,7 @@ import { Toolbar } from 'gg-editor';
import ToolbarButton from './ToolbarButton';
import styles from './index.less';
const FlowToolbar = () => {
return (
const FlowToolbar = () => (
<Toolbar className={styles.toolbar}>
<ToolbarButton command="undo" />
<ToolbarButton command="redo" />
......@@ -22,6 +21,5 @@ const FlowToolbar = () => {
<ToolbarButton command="expand" text="Unfold" />
</Toolbar>
);
};
export default FlowToolbar;
......@@ -4,9 +4,7 @@ import { Command } from 'gg-editor';
import IconFont from '../../common/IconFont';
import styles from './index.less';
const upperFirst = (str: string) => {
return str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase());
};
const upperFirst = (str: string) => str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase());
interface ToolbarButtonProps {
command: string;
......
import React from 'react';
import { Row, Col } from 'antd';
import GGEditor, { Mind } from 'gg-editor';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { formatMessage } from 'umi-plugin-react/locale';
import EditorMinimap from './components/EditorMinimap';
import { MindContextMenu } from './components/EditorContextMenu';
import { MindToolbar } from './components/EditorToolbar';
import { MindDetailPanel } from './components/EditorDetailPanel';
import data from './worldCup2018.json';
import styles from './index.less';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { formatMessage } from 'umi-plugin-react/locale';
GGEditor.setTrackable(false);
export default () => {
return (
export default () => (
<PageHeaderWrapper
content={formatMessage({
id: 'BLOCK_NAME.description',
......@@ -39,4 +38,3 @@ export default () => {
</GGEditor>
</PageHeaderWrapper>
);
};
......@@ -2,9 +2,9 @@ import { Button } from 'antd';
import classNames from 'classnames';
import * as H from 'history';
import React, { createElement } from 'react';
import Link from 'umi/link';
import styles from './index.less';
import config from './typeConfig';
import Link from 'umi/link';
export interface ExceptionProps<
L = {
......
......@@ -2,9 +2,9 @@ import { Button } from 'antd';
import classNames from 'classnames';
import * as H from 'history';
import React, { createElement } from 'react';
import Link from 'umi/link';
import styles from './index.less';
import config from './typeConfig';
import Link from 'umi/link';
export interface ExceptionProps<
L = {
......
......@@ -2,9 +2,9 @@ import { Button } from 'antd';
import classNames from 'classnames';
import * as H from 'history';
import React, { createElement } from 'react';
import Link from 'umi/link';
import styles from './index.less';
import config from './typeConfig';
import Link from 'umi/link';
export interface ExceptionProps<
L = {
......
......@@ -13,9 +13,11 @@ class TableForm extends PureComponent {
value: nextProps.value,
};
}
index = 0;
cacheOriginData = {};
columns = [
{
title: '成员姓名',
......@@ -230,6 +232,7 @@ class TableForm extends PureComponent {
this.setState({ data: newData });
this.clickedCancel = false;
}
render() {
const { loading, data } = this.state;
......
......@@ -13,12 +13,12 @@ import {
Popover,
} from 'antd';
import { connect } from 'dva';
import TableForm from './components/TableForm';
import styles from './style.less';
import { FormComponentProps } from 'antd/es/form';
import { Dispatch } from 'redux';
import FooterToolbar from './components/FooterToolbar';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import TableForm from './components/TableForm';
import styles from './style.less';
import FooterToolbar from './components/FooterToolbar';
const { Option } = Select;
const { RangePicker } = DatePicker;
......
import { message } from 'antd';
import { fakeSubmitForm } from './service';
import { EffectsCommandMap } from 'dva';
import { AnyAction } from 'redux';
import { fakeSubmitForm } from './service';
export interface ModalState {}
......
......@@ -14,9 +14,9 @@ import {
Tooltip,
} from 'antd';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import styles from './style.less';
import { FormComponentProps } from 'antd/es/form';
import { Dispatch } from 'redux';
import styles from './style.less';
const FormItem = Form.Item;
const { Option } = Select;
......
import { message } from 'antd';
import { fakeSubmitForm } from './service';
import { EffectsCommandMap } from 'dva';
import { AnyAction } from 'redux';
import { fakeSubmitForm } from './service';
export interface ModalState {}
......
import React, { Fragment } from 'react';
import { connect } from 'dva';
import { Form, Input, Button, Select, Divider } from 'antd';
import styles from './index.less';
import { FormComponentProps } from 'antd/es/form';
import { IStateType } from '../../model';
import { Dispatch } from 'redux';
import styles from './index.less';
import { IStateType } from '../../model';
const { Option } = Select;
......
import React from 'react';
import { connect } from 'dva';
import { Form, Input, Button, Alert, Divider, Statistic } from 'antd';
import styles from './index.less';
import { Form, Input, Button, Alert, Divider } from 'antd';
import { FormComponentProps } from 'antd/es/form';
import { IStateType } from '../../model';
import { Dispatch } from 'redux';
import styles from './index.less';
import { IStateType } from '../../model';
const formItemLayout = {
labelCol: {
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment