amChart實現flash報表

來源:互聯網
上載者:User

       項目上需要做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吧) ,總結下來一句話:很好,很強大

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.