UNPKG

@xintao1105/rose-pie

Version:

```bash npm install @xintao1105/rose-pie ```

414 lines (413 loc) 9.03 kB
import React from "react"; interface dataProps { s: string | number; y: number; } interface offset { x: number; y: number; } /** * 类目 + 占比 + 真实值 */ interface labelProps { /** * 类目 */ category?: boolean | { /** * 文本样式 */ textStyle?: style; }; /** * 占比值 */ proportion?: boolean | { /** * 小数位数 */ decimalPlaces?: number; /** * 间距 */ spacing?: number; /** * 颜色跟随 设置为 true 时textStyle设置不生效 */ colorFollow?: boolean; /** * 文本样式 colorFollow = true 时不生效; */ textStyle?: style; }; /** * 真实值 */ trueValue?: boolean | { /** * 后缀 */ suffix?: boolean | { /** * 内容 */ content: string; /** * 字体大小 */ fontSize: number; /** * 偏移 */ deviation: offset; }; /** * 间距 */ spacing?: number; /** * 颜色跟随 设置为 true 时textStyle设置不生效 */ colorFollow?: boolean; /** * 文本样式 colorFollow = true 时不生效; */ textStyle?: style; }; } /** * 数值标签 */ interface valueLabel extends labelProps { /** * 线长 line1:第一线长;line2:第二线长 */ lineLength: { line1: number; line2: number; }; /** * 布局 上下 | 水平 */ layout: string | "vertical" | "horizontal"; /** * 偏移 */ deviation: offset; } /** * 图例布局 */ interface legendLayout { /** * 列数 * @default layoutNumberColumns = 1 */ layoutNumberColumns?: number; /** * 间距 * @default layoutSpacing = {row: 25,column: 10} */ layoutSpacing?: { row: number; column: number; }; /** * 位置 * @default legendPosition = 5 */ legendPosition?: number; /** * 偏移 * @default layoutDeviation = {x:-10,y:0} */ layoutDeviation?: offset; } /** * 图例 */ export interface legend extends labelProps, legendLayout { /** * 展示顺序 "数据返回顺序" | "从大到小" | "从小到大" * @default order = "asc" */ order?: "" | "desc" | "asc"; /** * 图形类型 * @default legendType = "legendTypePreset" */ legendType?: "legendTypePreset" | "legendTypeCustom"; /** * 图例Icon 当legendType = "legendTypeCustom" 时生效; * @default legendIcon = "" */ legendIcon?: string; /** * 图例Icon尺寸 当legendType = "legendTypeCustom" 时生效; * @default legendIconSize = {width:20,height:20} */ legendIconSize?: { width: number; height: number; }; /** * 图例图形尺寸 当legendType = "legendTypePreset" 时生效; * @default legendGraphicalSize = {width:10,height:10} */ legendGraphicalSize?: { width: number; height: number; }; /** * 图形圆角 * @default graphicFillet = 0 */ graphicFillet?: number; /** * 间距 * @default legendSpacing = 5 */ legendSpacing?: number; } /** * 系列 */ export interface dataSeriesProps { /** * 映射 */ seriesMapping?: { fieldName: string | number; displayName: string | number; }; /** * 颜色 */ seriesColor?: { startVal: string; endVal: string; direction: number; }; /** * 图例Icon */ seriesLegendIcon?: string; } export interface style { fontFamily?: string; fontSize?: number; color?: string; fontWeight?: string | number; letterSpacing?: number; lineHeight?: number; fontStyle?: string; } interface margin { top: number; bottom: number; left: number; right: number; } /** * 提示框类型 */ export interface promptBoxTabsProps extends labelProps { /** * 悬停触发 * @default hoverTrigger = true */ hoverTrigger?: boolean; /** * 边距 * @default margin = { "top": 15,"bottom": 15, "left": 10,"right": 10 } */ margin?: margin; /** * 图形类型 * @type {string} * @default tipType = "Preset" */ tipType?: "Preset" | "Custom"; /** * 图例Icon 当tipType = "Custom" 时生效; * @default tipIcon = "" */ tipIcon?: string; /** * 图标尺寸 当tipType = "Custom" 时生效; * @default tipIconSize = {width:20,height:20} */ tipIconSize?: { width: number; height: number; }; /** * 图标尺寸 当tipType = "Preset" 时生效; * @default tipGraphicalSize = {width:10,height:10} */ tipGraphicalSize?: { width: number; height: number; }; /** * 图形圆角 * @default tipgraphicFillet = 0 */ tipgraphicFillet?: number; /** * 间距 * @default tipSpacing = 5 */ tipSpacing?: number; /** * 指示器颜色 * @default bgColor = "rgba(45,51,61,0.8)" */ bgColor?: string; } export interface interProps { /** * 基础配置 */ base?: { width: number; height: number; }; /** * 边距 * @default margin = { "top": 10,"bottom": 0,"left": 0,"right": 115 } */ margin?: margin; /** * 数值标签 * @default valueLabel = false | { lineLength: { line1: 25, line2: 10 }, layout: "horizontal", deviation: {x:0,y:0}, category: true | { textStyle: { "fontFamily": "Microsoft Yahei", "fontSize": 12, "color": "rgba(230,247,255,0.7)", "fontWeight": "normal", "fontStyle": "normal", "letterSpacing": 0 } }, proportion: true | { decimalPlaces: 0, textStyle: { "fontFamily": "Microsoft Yahei", "fontSize": 12, "color": "#E5F1FF", "fontWeight": "normal", "fontStyle": "normal", "letterSpacing": 0 } }, trueValue: false | { suffix: false | { content: "", fontSize: 12, deviation: { x:8,y:0 } }, textStyle: { "fontFamily": "Microsoft Yahei", "fontSize": 12, "color": "rgba(230,247,255,0.7)", "fontWeight": "normal", "fontStyle": "normal", "letterSpacing": 0 } } }, */ valueLabel?: boolean | valueLabel; /** * 图例 * @default legend = true | {} */ legend?: boolean | legend; /** * 半径 取值范围 0-1 * @default innerRadius = 0.42 */ innerRadius?: number; /** * 外半径 取值范围 0-1 * @default outerRadius = 1 */ outerRadius?: number; /** * 圆角 * @default fillet = {radius:2} */ fillet?: { radius: number; }; /** * 间距 间隔角度0~20度 * @default graphicalSpacing = 4 */ graphicalSpacing?: number; /** * 展示顺序 "数据返回顺序" | "从大到小" | "从小到大" * @default seriesOrder = "asc" */ seriesOrder?: "" | "desc" | "asc"; dataSeries?: dataSeriesProps[]; promptBoxTabs?: promptBoxTabsProps; /** * 数据 */ data?: dataProps[]; /** * 点击回调 */ readonly onClick?: (e: any) => void; } interface interState { } /** * 多色玫瑰图组件 */ export declare class RosePie extends React.Component<interProps, interState> { static defaultProps: Partial<interProps>; private d3Node; private domRef; private tooltipRef; constructor(props: interProps); setData(): { s: string | number; y: number; name: string | number; value: number; displayName: string; extra: dataProps; }[]; getSort(): { data: { s: string | number; y: number; name: string | number; value: number; displayName: string; extra: dataProps; }[]; maxValue: number; total: number; }; init(): false | undefined; onClick(e: any): void; componentDidMount(): Promise<void>; componentWillUnmount(): void; componentDidUpdate(): Promise<void>; render(): import("react/jsx-runtime").JSX.Element; } export {};