react-ant-design-charts 柱状图x轴内容换行,tooltip 内容格式化

 1 export default {
 2     Histogram: function () {
 3        let data = [
 4         {
 5             type: '城市1',
 6             sales: '20',
 7             datsdetail: [‘城市1-1’,‘城市1-1’]
 8         },
 9         {
10             type: '地市2',
11             sales: 18,
12             datsdetail: ['城市2-1','城市2-2']
13         }
14     ]
15         const config = {
16             data,
17             xField: 'type', //x轴字段
18             yField: 'sales', // y轴字段
19             color:'#5470c6', // 柱子颜色
20             maxColumnWidth: 40, // 柱子宽度
21             minColumnWidth: 40,
22             tooltip: {
23                 trigger: 'axis',
24                 // triggerOn:'click',
25                 axisPointer: {
26                     type: 'shadow',
27                 },
28                 fields: ['type', 'sales', 'datsdetail'],
29                 customContent: (title, params) => { // 鼠标移入提示内容
30                     if (params[0]) {
31                         const { data } = params[0]
32                         var result = '';
33                         if (data?.datsdetail) {
34                             result += `<div style="padding:8px 8px 0 8px">${data.type}&nbsp;&nbsp;&nbsp;<span style="float:right">任务项${data.sales}</span><hr /></div>`
35                             data.datsdetail.forEach(function (item, index) {
36                                 result += `<p style="margin:0;padding:8px;">${index}、${item}</p>`
37                             });
38                         }
39                         return result;
40                     }
41 
42                 }
43             },
44             xAxis: {
45                 label: {
46                     autoHide: true,
47                     autoRotate: true,
48                     formatter: function (params) { // x轴的内容太长换行
49                         var newParamsName = "";// 最终拼接成的字符串
50                         var paramsNameNumber = params.length;// 实际标签的个数
51                         var provideNumber = 4;// 每行能显示的字的个数
52                         var rowNumber = Math.ceil(paramsNameNumber / provideNumber);// 换行的话,需要显示几行,向上取整
53                         /**
54                          * 判断标签的个数是否大于规定的个数, 如果大于,则进行换行处理 如果不大于,即等于或小于,就返回原标签
55                          */
56                         // 条件等同于rowNumber>1
57                         if (paramsNameNumber > provideNumber) {
58                             /** 循环每一行,p表示行 */
59                             for (var p = 0; p < rowNumber; p++) {
60                                 var tempStr = "";// 表示每一次截取的字符串
61                                 var start = p * provideNumber;// 开始截取的位置
62                                 var end = start + provideNumber;// 结束截取的位置
63                                 // 此处特殊处理最后一行的索引值
64                                 if (p == rowNumber - 1) {
65                                     // 最后一次不换行
66                                     tempStr = params.substring(start, paramsNameNumber);
67                                 } else {
68                                     // 每一次拼接字符串并换行
69                                     tempStr = params.substring(start, end) + "\n";
70                                 }
71                                 newParamsName += tempStr;// 最终拼成的字符串
72                             }
73 
74                         } else {
75                             // 将旧标签的值赋给新标签
76                             newParamsName = params;
77                         }
78                         //将最终的字符串返回
79                         return newParamsName
80                     }
81                 },
82             },
83         };
84         return <Column {...config} />;
85     }
86 }
View Code

 

posted @ 2022-01-12 13:50  多幸运1号  阅读(465)  评论(0)    收藏  举报