amChart实现flash报表

       项目上需要做flash报表,查看了一下amchart,发现这个比较简单(可能是由于没有接触过其他的),总结下来,主要是两方面的配置,一个是setting_file这个属性的设置,用于加载flash报表的样式,也就是通常的什么颜色,形状之类的配置,可以动态改变,一边为直接写死为 XXX.xml文件,其实只要返回的是xml格式的就是行了,不用实际存在这个文件,所以可以把setting_file属性设置成一个url请求,例如:  setting_file='XXAction?query.do'  ,只要返回的是一个文件包含的内容符合它的配置文件的格式就行了。同样的。对于数据的请求也是一样的,只要请求返回一个满足数据文件格式的内容就行了。不一定存在数据文件。

例如

数据jsp文件代码:

<%@page import="java.util.*,com.trishield.prisonplat.prisoner.entity.PrisonerCount,com.trishield.prisonplat.prisoner.service.IPrisonerService" %>
<%@page contentType="text/xml; charset=UTF-8"%>
<pie>
<%
//      List countList=(List)request.getAttribute("pieDataList");
     String queryType=(String)request.getAttribute("queryType");
    int totalOnreg=10;
    int totalInhospital=10;
    int totalControl=10;
    int totalOnHold=10;
    if("status".equals(queryType)){
        List<PrisonerCount> countList=(List<PrisonerCount>)request.getAttribute("pieDataList");
    for(PrisonerCount ct:countList){
    totalOnreg+=ct.getOnRegCount();
    totalInhospital+=ct.getInHospitalCount();
    totalControl+=ct.getControlCount();
    totalOnHold+=ct.getOnHoldCount();
    }
        %>
        <slice title="在押" description="点击查看趋势图"><%=totalOnHold%></slice>
    <slice title="住院" description="点击查看趋势图"><%=totalInhospital%></slice>
    <slice title="严管" description="点击查看趋势图"><%=totalControl%></slice>
    <slice title="在册" description="点击查看趋势图"><%=totalOnreg%></slice>
        <%
    }else if("controlLevel".equals(queryType)){
    List prisonerList=(List)request.getAttribute("pieDataList");
    for(int i=0;i<prisonerList.size();i++){
    Object[] valueArray=(Object[])prisonerList.get(i);
    %>
     <slice title="<%=valueArray[1]%>"><%=valueArray[0]%></slice>
    <%
    }
    }
    %>
</pie> 
   
   配置文件:


<%                                         
String lable=(String)request.getAttribute("label");
StringBuffer sql=new StringBuffer();
sql.append("<?xml version='1.0' encoding='UTF-8'?>");
sql.append("<settings>");
sql.append("<data_type>xml</data_type>");
sql.append("<skip_rows>1</skip_rows>");
sql.append("<pie>");
sql.append("<x></x>");
sql.append("<y></y>");
sql.append("<radius>90</radius>");
sql.append("<inner_radius>10</inner_radius>");
sql.append("<height>10</height>");
sql.append("<angle>0</angle>");
sql.append("<start_angle></start_angle>");
sql.append("<outline_color></outline_color>");
sql.append("<outline_alpha></outline_alpha>");
sql.append("<base_color></base_color>");
sql.append("<brightness_step></brightness_step>");
sql.append("<colors>");
sql.append("[#8E0E1B,#0E528F,#7D9308,#860D6C,#FFCA21,#E97A04,#FF9E01]");
sql.append("</colors>");      
sql.append("<link_target>_parent</link_target>");
sql.append("<alpha></alpha>");
sql.append("<hover_brightness></hover_brightness>");
sql.append("<gradient></gradient>");
sql.append("<gradient_ratio></gradient_ratio>");
sql.append("</pie>");
sql.append("<animation>");
sql.append("<start_time>3</start_time>");
sql.append("<start_effect>regular</start_effect>");
sql.append("<sequenced>true</sequenced>");
sql.append("<pull_out_on_click></pull_out_on_click>");
sql.append("<pull_out_time>0.5</pull_out_time>");
sql.append("<pull_out_effect>strong</pull_out_effect>");
sql.append("</animation>");
sql.append("<data_labels>");
sql.append("<radius></radius>");
sql.append("<text_color></text_color>");
sql.append("<text_size>10</text_size>");
sql.append("<max_width></max_width>");
sql.append("<show>");
sql.append("<![CDATA[{title}: {percents}%]]>");
sql.append("</show>");
sql.append("<show_lines></show_lines>");
sql.append("<line_color></line_color>");
sql.append("<line_alpha>100</line_alpha> ");
sql.append("<hide_labels_percent></hide_labels_percent>");
sql.append("<avoid_overlapping></avoid_overlapping>"); 
sql.append("</data_labels>");
sql.append("<balloon>");
sql.append("<enabled></enabled>");
sql.append("<color></color>");
sql.append("<alpha>80</alpha>");
sql.append("</balloon>");
sql.append("<legend>");
sql.append("<enabled></enabled>");
sql.append("<x></x>");
sql.append("<y></y>");
sql.append("<width>280</width>");
sql.append("<color></color>");
sql.append("<max_columns></max_columns>");
sql.append("<alpha></alpha>");
sql.append("<border_color></border_color>");
sql.append("<border_alpha>20</border_alpha>");
sql.append("<text_color></text_color>");
sql.append("<text_size></text_size>");
sql.append("<spacing>9</spacing>");
sql.append("<margins>5</margins>");
sql.append("<reverse_order></reverse_order>");
sql.append("<align>center</align>");
sql.append("</legend>");
sql.append("<error_messages>");
sql.append("<enabled></enabled>");
sql.append("<x></x>");
sql.append("<y></y>");
sql.append("<color></color>");
sql.append("<alpha></alpha>");
sql.append("<text_color></text_color>");
sql.append("<text_size>20</text_size>");
sql.append("</error_messages>");
sql.append("<labels>");
sql.append("<label lid='0'>");
sql.append("<x>0</x>");
sql.append("<y>0</y>");
sql.append("<rotate>false</rotate>");
sql.append("<width></width>");
sql.append("<align>center</align>");
sql.append("<text_color></text_color>");
sql.append("<text_size>12</text_size>");
sql.append("<text>");
sql.append("<![CDATA[<b>");
sql.append(lable);
sql.append("</b>]]>");
sql.append("</text>");
sql.append("</label>");
sql.append("</labels>");
sql.append("</settings>");
response.getWriter().write(sql.toString());

%>




这样写的话,就可以根据业务数据的需求,动态的改变flash报表了。和js交互数据也就那几个方法(flashMovie.setData...详情参见API吧) ,总结下来一句话:很好,很强大

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值