Commit 061a1e7d authored by 陈帅's avatar 陈帅

type: beter type

parent 278a1ce9
...@@ -34,14 +34,10 @@ export interface IPieProps { ...@@ -34,14 +34,10 @@ export interface IPieProps {
valueFormat?: (value: string) => string | React.ReactNode; valueFormat?: (value: string) => string | React.ReactNode;
subTitle?: React.ReactNode; subTitle?: React.ReactNode;
} }
/* eslint react/no-danger:0 */
interface IPieState { interface IPieState {
legendData: Array<{ checked: boolean; x: string; color: string; percent: number; y: string }>; legendData: Array<{ checked: boolean; x: string; color: string; percent: number; y: string }>;
legendBlock: boolean; legendBlock: boolean;
} }
class Pie extends Component<IPieProps, IPieState> { class Pie extends Component<IPieProps, IPieState> {
state: IPieState = { state: IPieState = {
legendData: [], legendData: [],
...@@ -74,8 +70,10 @@ class Pie extends Component<IPieProps, IPieState> { ...@@ -74,8 +70,10 @@ class Pie extends Component<IPieProps, IPieState> {
window.cancelAnimationFrame(this.requestRef); window.cancelAnimationFrame(this.requestRef);
} }
window.removeEventListener('resize', this.resize); window.removeEventListener('resize', this.resize);
if (this.resize) {
(this.resize as any).cancel(); (this.resize as any).cancel();
} }
}
getG2Instance = (chart: G2.Chart) => { getG2Instance = (chart: G2.Chart) => {
this.chart = chart; this.chart = chart;
...@@ -85,8 +83,6 @@ class Pie extends Component<IPieProps, IPieState> { ...@@ -85,8 +83,6 @@ class Pie extends Component<IPieProps, IPieState> {
}); });
}; };
root!: HTMLDivElement;
chart: G2.Chart | undefined;
// for custom lengend view // for custom lengend view
getLegendData = () => { getLegendData = () => {
if (!this.chart) return; if (!this.chart) return;
...@@ -94,7 +90,7 @@ class Pie extends Component<IPieProps, IPieState> { ...@@ -94,7 +90,7 @@ class Pie extends Component<IPieProps, IPieState> {
if (!geom) return; if (!geom) return;
const items = geom.get('dataArray') || []; // 获取图形对应的 const items = geom.get('dataArray') || []; // 获取图形对应的
const legendData = items.map((item: Array<any>) => { const legendData = items.map((item: { color: any; _origin: any }[]) => {
/* eslint no-underscore-dangle:0 */ /* eslint no-underscore-dangle:0 */
const origin = item[0]._origin; const origin = item[0]._origin;
origin.color = item[0].color; origin.color = item[0].color;
...@@ -106,7 +102,6 @@ class Pie extends Component<IPieProps, IPieState> { ...@@ -106,7 +102,6 @@ class Pie extends Component<IPieProps, IPieState> {
legendData, legendData,
}); });
}; };
handleRoot = (n: HTMLDivElement) => { handleRoot = (n: HTMLDivElement) => {
this.root = n; this.root = n;
}; };
...@@ -128,6 +123,8 @@ class Pie extends Component<IPieProps, IPieState> { ...@@ -128,6 +123,8 @@ class Pie extends Component<IPieProps, IPieState> {
legendData, legendData,
}); });
}; };
root!: HTMLDivElement;
chart: G2.Chart | undefined;
// for window resize auto responsive legend // for window resize auto responsive legend
@Bind() @Bind()
...@@ -139,7 +136,11 @@ class Pie extends Component<IPieProps, IPieState> { ...@@ -139,7 +136,11 @@ class Pie extends Component<IPieProps, IPieState> {
window.removeEventListener('resize', this.resize); window.removeEventListener('resize', this.resize);
return; return;
} }
if ((this.root!.parentNode! as HTMLDivElement).clientWidth <= 380) { if (
this.root &&
this.root.parentNode &&
(this.root.parentNode as HTMLElement).clientWidth <= 380
) {
if (!legendBlock) { if (!legendBlock) {
this.setState({ this.setState({
legendBlock: true, legendBlock: true,
...@@ -160,11 +161,13 @@ class Pie extends Component<IPieProps, IPieState> { ...@@ -160,11 +161,13 @@ class Pie extends Component<IPieProps, IPieState> {
hasLegend = false, hasLegend = false,
className, className,
style, style,
height = 1, height = 0,
forceFit = true, forceFit = true,
percent, percent,
color,
inner = 0.75, inner = 0.75,
animate = true, animate = true,
colors,
lineWidth = 1, lineWidth = 1,
} = this.props; } = this.props;
...@@ -183,9 +186,12 @@ class Pie extends Component<IPieProps, IPieState> { ...@@ -183,9 +186,12 @@ class Pie extends Component<IPieProps, IPieState> {
let data = propsData || []; let data = propsData || [];
let selected = propsSelected; let selected = propsSelected;
let tooltip = propsTooltip; let tooltip = propsTooltip;
const defaultColors = colors;
data = data || []; data = data || [];
selected = selected || true; selected = selected || true;
tooltip = tooltip || true; tooltip = tooltip || true;
let formatColor;
const scale = { const scale = {
x: { x: {
...@@ -200,6 +206,12 @@ class Pie extends Component<IPieProps, IPieState> { ...@@ -200,6 +206,12 @@ class Pie extends Component<IPieProps, IPieState> {
if (percent || percent === 0) { if (percent || percent === 0) {
selected = false; selected = false;
tooltip = false; tooltip = false;
formatColor = (value: string) => {
if (value === '占比') {
return color || 'rgba(24, 144, 255, 0.85)';
}
return '#F0F2F5';
};
data = [ data = [
{ {
...@@ -221,7 +233,7 @@ class Pie extends Component<IPieProps, IPieState> { ...@@ -221,7 +233,7 @@ class Pie extends Component<IPieProps, IPieState> {
}), }),
]; ];
const padding: [number, number, number, number] = [12, 0, 12, 0]; const padding = [12, 0, 12, 0] as [number, number, number, number];
const dv = new DataView(); const dv = new DataView();
dv.source(data).transform({ dv.source(data).transform({
...@@ -248,9 +260,10 @@ class Pie extends Component<IPieProps, IPieState> { ...@@ -248,9 +260,10 @@ class Pie extends Component<IPieProps, IPieState> {
<Coord type="theta" innerRadius={inner} /> <Coord type="theta" innerRadius={inner} />
<Geom <Geom
style={{ lineWidth, stroke: '#fff' }} style={{ lineWidth, stroke: '#fff' }}
tooltip={tooltip && tooltipFormat} tooltip={tooltip ? tooltipFormat : undefined}
type="intervalStack" type="intervalStack"
position="percent" position="percent"
color={['x', percent || percent === 0 ? formatColor : defaultColors] as any}
selected={selected} selected={selected}
/> />
</Chart> </Chart>
......
...@@ -13,7 +13,8 @@ const CustomTab = ({ ...@@ -13,7 +13,8 @@ const CustomTab = ({
}: { }: {
data: IOfflineData; data: IOfflineData;
currentTabKey: string; currentTabKey: string;
}) => ( }) => {
return (
<Row gutter={8} style={{ width: 138, margin: '8px 0' }}> <Row gutter={8} style={{ width: 138, margin: '8px 0' }}>
<Col span={12}> <Col span={12}>
<NumberInfo <NumberInfo
...@@ -40,7 +41,8 @@ const CustomTab = ({ ...@@ -40,7 +41,8 @@ const CustomTab = ({
/> />
</Col> </Col>
</Row> </Row>
); );
};
const { TabPane } = Tabs; const { TabPane } = Tabs;
......
...@@ -21,7 +21,8 @@ const ProportionSales = ({ ...@@ -21,7 +21,8 @@ const ProportionSales = ({
salesType: 'all' | 'online' | 'stores'; salesType: 'all' | 'online' | 'stores';
salesPieData: ISalesData[]; salesPieData: ISalesData[];
handleChangeSalesType?: (e: RadioChangeEvent) => void; handleChangeSalesType?: (e: RadioChangeEvent) => void;
}) => ( }) => {
return (
<Card <Card
loading={loading} loading={loading}
className={styles.salesCard} className={styles.salesCard}
...@@ -72,6 +73,7 @@ const ProportionSales = ({ ...@@ -72,6 +73,7 @@ const ProportionSales = ({
/> />
</div> </div>
</Card> </Card>
); );
};
export default ProportionSales; export default ProportionSales;
import React from 'react'; import React from 'react';
import { yuan } from 'ant-design-pro/lib/Charts'; import { yuan } from '../components/Charts';
/** /**
* 减少使用 dangerouslySetInnerHTML * 减少使用 dangerouslySetInnerHTML
*/ */
export default class Yuan extends React.PureComponent { export default class Yuan extends React.Component<{
children: React.ReactText;
}> {
componentDidMount() { componentDidMount() {
this.rendertoHtml(); this.renderToHtml();
} }
componentDidUpdate() { componentDidUpdate() {
this.rendertoHtml(); this.renderToHtml();
} }
main: HTMLSpanElement | undefined | null;
rendertoHtml = () => { renderToHtml = () => {
const { children } = this.props; const { children } = this.props;
if (this.main) { if (this.main) {
this.main.innerHTML = yuan(children); this.main.innerHTML = yuan(children);
......
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