如何让统计图数据点按指定顺序排列

1945
1

leiz 小试身手Lv3

发表于2020-7-22 13:16

楼主
本帖最后由 leiz 于 2020-7-22 13:18 编辑

有时主题表没有绑定维表,统计图展示数据的时候,顺序乱了,那么如何能在不绑定维表的情况下,让统计图的数据按照指定顺序排列呢?


下面有一个方法可以参考一下:
        如图所示,下图中数据没有绑定维表,统计图展示的顺序是错乱的:

        如果要让图中的星期按照正常顺序排列,只需加上下面的脚本即可实现:
  1. var series_sort = ["周一","周二","周三","周四","周五","周六","周日"]; //修改成实际想要的顺序
  2. var chartId="HHH2";//需要进行此排序的统计图ID
  3. ChartInRpSheet.prototype.refresh = function(){
  4. this._chartdispose();
  5. var chartObj = this._getDom();
  6. var type = this.getShowType();
  7. if(!this.contentstring){
  8. ChartManagerInRpSheet._noData(chartObj);
  9. return;
  10. }
  11. switch(type){
  12. case "echarts":
  13. if(parseBool(chartObj.getAttribute("is3d"),false)){
  14. this.refreshEchart3D();
  15. }else{
  16. var datajson = JSON.parse(this.contentstring);
  17. if(chartObj.id==chartId)
  18. {
  19. for(var i = 0;i<datajson.xAxis.length;i++){
  20. function sortxAxis(a,b){
  21. aindex = series_sort .indexOf(a);
  22. bindex = series_sort .indexOf(b);
  23.      // return a.localeCompare(b,"zh");
  24.    
  25. // return a.compareTo(b);
  26. return aindex -bindex ;
  27. }
  28. datajson.xAxis[i].data.sort(sortxAxis);

  29. }
  30. for(var k = 0;k<datajson.series.length;k++){
  31. var new_data = new Array(datajson.series[k].data.length);
  32. for(var a = 0;a<datajson.series[k].data.length;a++){
  33. new_data[a] ="-";
  34. }
  35. for(var l = 0;l<datajson.series[k].data.length;l++){
  36. for(var i = 0;i<datajson.xAxis.length;i++){
  37. for(var j = 0;j<datajson.xAxis[i].data.length;j++){
  38. if(datajson.series[k].data[l]!="-"&&datajson.series[k].data[l].name==datajson.xAxis[i].data[j]){
  39. new_data[j]=datajson.series[k].data[l];
  40. }
  41. }
  42. }
  43. }
  44. datajson.series[k].data=new_data;
  45. }
  46. }
  47. this.contentstring=JSON.stringify(datajson);
  48. this.refreshEchart2D();
  49. }
  50. break;
  51. case "fusionchart":
  52. this.refreshFusionChart();
  53. break;
  54. case "anychart":
  55. this.refreshAnyChart();
  56. break;
  57. case "JS":
  58. this.refeshMiniChart();
  59. default:
  60. break;
  61. }
  62. };
复制代码
       下图是加了脚本之后的统计图展示效果:

最近看过此主题的会员

Yuuuu

杨国签

安忆

wang111

daix

多喝热水8

幺小木

ccchen

yangm

Bryce

lcl01

zwz999

studyer

1个回答

只看楼主

leiz 小试身手Lv3

发表于2022-11-10 18:06

只看该作者

取消 关注该作者的回复

沙发

本帖最后由 leiz 于 2022-11-10 18:19 编辑

(不适用echarts统计图,ABI531版本后无法使用)ABI版本脚本:

var series_sort = ["周一","周二","周三","周四","周五","周六","周日"]; //修改成实际想要的顺序
var chartId="HHH3";//需要进行此排序的统计图ID
ChartInRpSheet.prototype.refresh = function(){
this._chartdispose();
var chartObj = this._getDom();
var type = this.getShowType();
if(!this.contentstring){
ChartManagerInRpSheet._noData(chartObj);
return;
}
switch(type){
case "echarts":
if(EUI.parseBool(chartObj.getAttribute("is3d"),false)){
this.refreshEchart3D();
}else{
var datajson = JSON.parse(this.contentstring);
if(chartObj.id==chartId)
{
for(var i = 0;i<datajson.xAxis.length;i++){
function sortxAxis(a,b){
aindex = series_sort .indexOf(a);
bindex = series_sort .indexOf(b);
     // return a.localeCompare(b,"zh");
   
// return a.compareTo(b);
return aindex -bindex ;
}
datajson.xAxis.data.sort(sortxAxis);

}
for(var k = 0;k<datajson.series.length;k++){
var new_data = new Array(datajson.series[k].data.length);
for(var a = 0;a<datajson.series[k].data.length;a++){
new_data[a] ="-";
}
for(var l = 0;l<datajson.series[k].data.length;l++){
for(var i = 0;i<datajson.xAxis.length;i++){
for(var j = 0;j<datajson.xAxis.data.length;j++){
if(datajson.series[k].data[l]!="-"&&datajson.series[k].data[l].name==datajson.xAxis.data[j]){
new_data[j]=datajson.series[k].data[l];
}
}
}
}
datajson.series[k].data=new_data;
}
}
this.contentstring=JSON.stringify(datajson);
this.refreshEchart2D();
}
break;
case "fusionchart":
this.refreshFusionChart();
break;
case "anychart":
this.refreshAnyChart();
break;
case "JS":
this.refeshMiniChart();
default:
break;
}
};

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号