帆软报表实现Highcharts 3D饼图

楼主
我是社区第395637位番薯,欢迎点我头像关注我哦~
最近用帆软报表做了一个项目,客户希望用到3D饼图。通过比对发现High charts 3D饼图效果不错。马上着手开发。先上效果图。

操作步骤:
1.下载Highcharts JS 文件。由于帆软report已经用到Jquery。本实现只需要下面俩文件。
cdn.highcharts.com.cn/highcharts/highcharts.js highcharts.js (256.9 KB, 下载次数: 73)
cdn.highcharts.com.cn/highcharts/highcharts-3d.js highcharts-3d.js (43.23 KB, 下载次数: 67)

2.保存以上俩文件到帆软安装目录

3.新建一个决策报表

4. 新建俩绝对画布块,上面一个是为了占.位,固定高度为50.

5. 在主绝对画布块,本示例为absolute0。选择事件Tab,然后添加“初始化后”事件。

6. 在事.件弹出框里面按照下图添加“引用JavaScript”,“参数”以及“JavaScript脚本”。其中qxz和qzm可以根据创建查询来取值。例如:本需求用到的JOINARRAY(ds1.select(defect_type), ",") JOINARRAY(ds1.select(DefQty), ",")。reportTitle是要展示的3D饼图的标题。containerName是要展示饼图的控件名称。

7. 本示例的JavaScript脚本,可以根据需要修改。
  1. setTimeout(function (){ //延时执行
  2. $("div[widgetname="+containerName.toUpperCase()+"]").empty(); //清空标签控件里的内容    LABEL0  标签控件名  
  3. $("div[widgetname="+containerName.toUpperCase()+"]").append("<div style='width:100%;height:100%;' id='"+containerName.toUpperCase()+"_threedpie'></div>");
  4. Highcharts.getOptions().colors = Highcharts.map(Highcharts.getOptions().colors, function(color) {  
  5.   
  6.     return {  
  7.   
  8.         radialGradient: { cx: 0.5, cy: 0.3, r: 0.7 },  
  9.   
  10.         stops: [  
  11.   
  12.             [0, color],  
  13.   
  14.             [1, Highcharts.Color(color).brighten(-0.3).get('rgb')] // darken  
  15.   
  16.         ]  
  17.   
  18.     };  
  19.   
  20. });  
  21. strs1 = qxm.split(",");  // 将参数转换成数组,根据图表数据格式进行处理
  22. strs2 = qxz.split(",");
  23. //计算百分比。
  24. ys = [];
  25. pdatas = [];
  26. total = 0;
  27. for (i=0; i<strs2.length; i++) {
  28.   total = total+parseInt(strs2, 10);
  29. }
  30. totalPercentage = 0;
  31. for (i=0; i<strs2.length; i++) {
  32.   if (i==strs2.length-1) {
  33.    ys = 100-totalPercentage;
  34.   } else {
  35.    ys = Math.round(parseInt(strs2, 10)/total * 1000)/10;
  36.   }
  37.   totalPercentage = totalPercentage+ys;
  38.   pdatas = {name: strs1,y: ys, txt: strs1, num: strs2};
  39. }
  40.         var chart = {
  41.          renderTo: containerName.toUpperCase()+'_threedpie',
  42.             type: 'pie',
  43.             options3d: {
  44.                 enabled: true,
  45.                 alpha: 45,
  46.                 beta: 0
  47.             }
  48.         };
  49.         var title = {
  50.             text: reportTitle
  51.         };
  52.         var tooltip = {
  53.             pointFormat: '{point.num}个 <b>{point.percentage:.1f}%</b>'
  54.         };
  55.         //var colors=['#FF0000','#00FF00','#0000FF','#FFFF00','#00FFFF','#FF00FF'];    //设置饼图颜色
  56.         var credits =  {
  57.             enabled: false    //禁用版权url    此处不设置,  会显示highecharts.com
  58.         };
  59.         var plotOptions = {
  60.             pie: {
  61.                 allowPointSelect: true,
  62.                 cursor: 'pointer',
  63.                 depth: 35, //饼图厚度
  64.                 // color:pieColors,
  65.                 dataLabels: {
  66.                     distance: 20,//设置引导线的长度
  67.                     // color:'red',//全局设置字体颜色
  68.                     enabled: true,
  69.                     // format: '{point.name}',
  70.                     formatter: function() {     //设置字体与引导线和饼图颜色一致
  71.       return '<b>'+ this.point.name +'</b>: '+ this.point.num +' 个 '+Highcharts.numberFormat(this.percentage, 2)+'%';
  72.                     }
  73.                     /* style: {
  74.                          fontSize: '10px',//设置字体大小
  75.                          fontFamily: 'Verdana, sans-serif'
  76.                      }*/
  77.                 },
  78.    showInLegend: true
  79.             },
  80.         };
  81.         var series= [{
  82.             type: 'pie',
  83.             name: 'Browser share',
  84.             startAngle: 180,//调整饼图的角度   方向:顺时针
  85.             data: pdatas
  86.         }];
  87.         var json = {};
  88.         json.chart = chart;
  89.         json.title = title;
  90.         json.tooltip = tooltip;
  91.         //json.colors = colors;   // 设置饼图颜色
  92.         json.credits = credits;
  93.         json.plotOptions = plotOptions;
  94.         json.series = series;
  95.         new Highcharts.Chart(json);
  96. }, 500);
复制代码


8. 以上步骤做完后生成的模板见。 Form13.frm (6.95 KB, 下载次数: 29, 售价: 20 个F豆)



分享扩散:

沙发
发表于 2020-6-12 11:34:58
哇哦,FR功能这么强大
板凳
发表于 2020-6-12 12:21:04
其实我想说 你安装一下老版本的图表插件 里面就有3D饼图功能
编辑于 2020-6-12 12:22  
地板
发表于 2020-6-23 11:14:22
真的是老牛逼了啊,大佬收下我的膝盖!
5楼
发表于 2020-7-3 15:31:02
好东西
6楼
发表于 2020-7-8 15:52:09
厉害了
7楼
发表于 2020-7-10 15:15:40
厉害了
8楼
发表于 2020-7-11 10:21:16
9楼
发表于 2020-8-22 10:32:38
10楼
发表于 2023-5-10 16:42:28
点击对应模块超链接到指定模板能不能实现大佬
11楼
发表于 2023-9-8 15:34:16
学会了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

15回帖数 11关注人数 11371浏览人数
最后回复于:2023-9-8 15:34

返回顶部 返回列表