zoukankan      html  css  js  c++  java
  • birt的Chart自适应宽度

    chart 设置了固定的长宽尺寸之后,图表呈现的时候经常出现过粗、或者过密的问题。严重影响了图表的呈现,如果能根据数据的多少,动态调整图表的长宽尺寸就好了。

    chart 的长宽是固定的,不能适应数据量的变化,导致生成的图无法看。例如你设置了Width: 300points; Height: 200points; 当数据量很少的时候,柱图很粗(难看);当数据量很多时,柱图很密(没法看)。     如果能根据数据量得多少,动态调整chart 图的大小就很很好的解决上述问题。幸运的是BIRT 提供的支持还是很强大的,提供JS、Java的接口进行动态设置

      通过JavaScript 重写chart onRender 事件,根据查询数据量,动态调整chart 尺寸大小。

      

     1 //获取chart 绑定数据集的数据量,传入变量var barcnt;
     2 
     3     /** 
     4 
     5      * Called after populating the series dataset. 
     6 
     7      *  
     8 
     9      * @param series 
    10 
    11      *            Series 
    12 
    13      * @param dataSet 
    14 
    15      *            DataSet 
    16 
    17      * @param icsc 
    18 
    19      *            IChartScriptContext 
    20 
    21      */  
    22 
    23       
    24 
    25     function afterDataSetFilled( series, dataSet, icsc )  
    26 
    27     {  
    28 
    29         importPackage( Packages.java.io );  
    30 
    31         importPackage( Packages.org.eclipse.birt.chart.model.type.impl );  
    32 
    33       
    34 
    35         if( series.getClass() == LineSeriesImpl ){  
    36 
    37             series.getLineAttributes().setThickness(5);  
    38 
    39         }  
    40 
    41         if( series.getClass() == BarSeriesImpl ){  
    42 
    43             if( series.getSeriesIdentifier() == "myY" ){  
    44 
    45                 var list = dataSet.getValues();  
    46 
    47                 barcnt = list.length;  
    48 
    49             }  
    50 
    51         }  
    52 
    53     }  
    54 
    55   //"mybar"为chart 数据区 自定义的名字

    2:获取变量barcnt 的值,重写设置chart 尺寸

     Called before generation of chart model to GeneratedChartState. 
    
     *  
    
     * @param chart 
    
     *            Chart 
    
     * @param icsc 
    
     *            IChartScriptContext 
    
     */  
    
      
    
    function beforeGeneration( chart, icsc )  
    
    {  
    
        chart.getBlock().getBounds().setWidth(50*barcnt);  
    
        chart.getBlock().getBounds().setHeight(400);  
    
    }  

    图例:

    效果图(随便画的,没做美化,难看点,将就一下吧):

  • 相关阅读:
    隐藏虚拟网卡
    Eclipse3.2编码选中对象着色
    PHP里的字符串定义小技巧汇总
    【原创】交互型网页防止IP欺骗的技巧
    VS2005的报错让我“二”了一把
    【原创】利用PHP5的__autoload代替繁琐低效的的外部文件包含方式
    关于WebDataWindow.Net的一些开发小细节
    PHP效率损失操作汇总
    动态添加按钮及关联方法(带参数)
    GridView中模版列使用RowCommand事件如何得到当前列的行索引或记录ID
  • 原文地址:https://www.cnblogs.com/wuxinyu/p/4203195.html
Copyright © 2011-2022 走看看