UNPKG

@xintao1105/rose-pie

Version:

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

371 lines (357 loc) 6.76 kB
!['示例图'](https://cdn.jsdelivr.net/npm/@xintao1105/rose-pie@1.0.0/rose-pie.png) ## 安装 ```bash npm install @xintao1105/rose-pie ``` or ```bash yarn add @xintao1105/rose-pie ``` ## 示例代码 ```ts import RosePie from '@xintao1105/rose-pie'; import type { interProps } from '@xintao1105/rose-pie'; const ars:interProps = { onClick: (e) => { console.log("onClick", e) } } <RosePie {...ars}/> ``` ## 参数类型 ```ts 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 | {} */ 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; } ```