WEB开发网
开发学院图形图像Flash Flash图表(FusionChartsV3)的简单应用 阅读

Flash图表(FusionChartsV3)的简单应用

 2009-01-22 11:55:02 来源:WEB开发网   
核心提示:项目中需要用到报表,发现这个Flash做的工具很好用~效果漂亮,Flash图表(FusionChartsV3)的简单应用,且支持多达40多种报表,看图:简单说下这个东东在jsp环境下的应用.java代码:package com.eline.epicc.utils;import java.io.IOException;i

项目中需要用到报表,发现这个Flash做的工具很好用~

效果漂亮,且支持多达40多种报表。

看图:

Flash图表(FusionChartsV3)的简单应用

简单说下这个东东在jsp环境下的应用.

java代码:

package com.eline.epicc.utils;
  
import java.io.IOException;
  
import javax.servlet.http.HttpServletResponse;
  
/** *//**
* 报表生成公共类(创建FusionCharts<flash cool>)
*
* @author zdw
*
*/
public class ChartUtils
{
  /** *//**
   * 对Url数据转码的方法
   * @param strDataURL  - chart的数据url
   * @param addNoCacheStr - 非缓存字符串
   * @return
   */
  
  public String encodeDataURL(String strDataURL, String addNoCacheStr,
      HttpServletResponse response)
  {
    String encodedURL = strDataURL;
    if (addNoCacheStr.equals("true"))
    {
      java.util.Calendar nowCal = java.util.Calendar.getInstance();
      java.util.Date now = nowCal.getTime();
      java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
          "MM/dd/yyyy HH_mm_ss a");
      String strNow = sdf.format(now);
      if (strDataURL.indexOf("?") > 0)
      {
        encodedURL = strDataURL + "&FCCurrTime=" + strNow;
      }
      else
      {
        strDataURL = strDataURL + "?FCCurrTime=" + strNow;
      }
      encodedURL = response.encodeURL(strDataURL);
  
    }
    return encodedURL;
  }
  
  /** *//**
   * 用HTML+JavaScript创建FusionCharts对象(用此方式需要导入FusionCharts.js文件)
   * @param chartSWF -
   *      flash文件的位置,即chart图表类型
   * @param strURL - xml数据源
   * @param strXML - 字符流
   * @param chartId - chart对象在HTML中的唯一标识
   * @param chartWidth - flash chart 的宽度(单位px)
   * @param chartHeight - flash chart 的高度(单位px)
   * @param debugMode - 是否开启chart 调试模式
   * @param registerWithJS - 是否注册自己
   */
  public static String createChart(String chartSWF, String strURL,
      String strXML, String chartId, int chartWidth, int chartHeight,
      boolean debugMode, boolean registerWithJS)
  {
    StringBuffer strBuf = new StringBuffer();
    strBuf.append("<!--START Script Block for Chart -->n");
    strBuf.append("tt<div id='" + chartId + "Div' align='center'>n");
    strBuf.append("ttttChart.n");
    strBuf.append("tt</div>n");
    strBuf.append("tt<script type='text/javascript'>n");
    Boolean registerWithJSBool = new Boolean(registerWithJS);
    Boolean debugModeBool = new Boolean(debugMode);
    int regWithJSInt = boolToNum(registerWithJSBool);
    int debugModeInt = boolToNum(debugModeBool);
  
    strBuf.append("ttttvar chart_" + chartId + " = new FusionCharts('"
        + chartSWF + "', '" + chartId + "', '" + chartWidth + "', '"
        + chartHeight + "', '" + debugModeInt + "', '" + regWithJSInt
        + "');n");
    if (strXML.equals(""))
    {
      strBuf.append("tttt//Set the dataURL of the chartn");
      strBuf.append("ttttchart_" + chartId + ".setDataURL(""
          + strURL + "");n");
    }
    else
    {
      strBuf
          .append("tttt//Provide entire XML data using dataXML methodn");
      strBuf.append("ttttchart_" + chartId + ".setDataXML(""
          + strXML + "");n");
    }
    strBuf.append("tttt//Finally, render the chart.n");
    strBuf.append("ttttchart_" + chartId + ".render("" + chartId
        + "Div");n");
    strBuf.append("tt</script>n");
    strBuf.append("tt<!--END Script Block for Chart-->n");
    return strBuf.substring(0);
  }
  
  /** *//**
   * 创建swf charts对象(HTML)
   *
   * @param chartSWF -
   *      flash文件的位置,即chart图表类型
   *
   * @param strURL -
   *      xml数据源
   * @param strXML -
   *      If you intend to use dataXML method for this chart, pass the
   *      XML data as this parameter. Else, set it to "" (in case of
   *      dataURL method)
   * @param chartId -
   *      chart对象在HTML中的唯一标识
   * @param chartWidth -
   *      flash chart 的宽度(单位px)
   * @param chartHeight -
   *      flash chart 的高度(单位px)
   * @param debugMode -
   *      是否开启chart 调试模式
   */
  
  public static String createChartHTML(String chartSWF, String strURL,
      String strXML, String chartId, int chartWidth, int chartHeight,
      boolean debugMode)
  {
    String strFlashVars = "";
    Boolean debugModeBool = new Boolean(debugMode);
  
    if (strXML.equals(""))
    {
      strFlashVars = "chartWidth=" + chartWidth + "&chartHeight="
          + chartHeight + "&debugMode=" + boolToNum(debugModeBool)
          + "&dataURL=" + strURL + "";
    }
    else
    {
      strFlashVars = "chartWidth=" + chartWidth + "&chartHeight="
          + chartHeight + "&debugMode=" + boolToNum(debugModeBool)
          + "&dataXML=" + strXML + "";
    }
    StringBuffer strBuf = new StringBuffer();
    // 开始输出Object chart
    strBuf.append("tt<!--START Code Block for Chart-->n");
    strBuf
        .append("tttt<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0' width='"
            + chartWidth
            + "' height='"
            + chartHeight
            + "' id='"
            + chartId + "'>n");
    strBuf
        .append("tttt  <param name='allowScriptAccess' value='always' />n");
    strBuf.append("tttt  <param name='movie' value='" + chartSWF
        + "'/>n");
    strBuf.append("tttt<param name='FlashVars' value="" + strFlashVars
        + "" />n");
    strBuf.append("tttt  <param name='quality' value='high' />n");
    strBuf
        .append("tttt<embed src='"
            + chartSWF
            + "' FlashVars=""
            + strFlashVars
            + "" quality='high' width='"
            + chartWidth
            + "' height='"
            + chartHeight
            + "' name='"
            + chartId
            + "' allowScriptAccess='always' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer' />n");
    strBuf.append("tt</object>n");
    strBuf.append("tt<!--END Code Block for Chart-->n");
    return strBuf.substring(0);
  }
  
  /** *//**
   * 提供快速输出Chart的便捷方法(基于字符流的方式)
   *
   * @param chartSWF :
   *      flash文件的位置,即chart图表类型
   * @param strXml :
   *      xml文件流(string格式)
   * @param chartId :
   *      chart对象在HTML中的唯一标识
   * @param chartWidth :
   *      flash chart 的宽度(单位px)
   * @param chartHeight:
   *      flash chart 的高度(单位px)
   * @param response :
   *      reponse对象
   */
  public static void outChartHTML(String chartSWF, String strXml,
      String chartId, int chartWidth, int chartHeight,
      HttpServletResponse response)
  {
    String str = createChartHTML(chartSWF, "", strXml, chartId, chartWidth,
        chartHeight, false);
    try
    {
      response.getWriter().write(str);
    } catch (IOException e)
    {
      e.printStackTrace();
    }
  }
  
  /** *//**
   * 提供快速输出Chart的便捷方法(基于xml文件的方式)
   *
   * @param chartSWF :
   *      flash文件的位置,即chart图表类型
   * @param strURL :
   *      xml数据源(路径格式)
   * @param chartId :
   *      chart对象在HTML中的唯一标识
   * @param chartWidth :
   *      flash chart 的宽度(单位px)
   * @param chartHeight:
   *      flash chart 的高度(单位px)
   * @param response :
   *      reponse对象
   */
  public static void outChartSourceHTML(String chartSWF, String strURL,
      String chartId, int chartWidth, int chartHeight,
      HttpServletResponse response)
  {
    String str = createChartHTML(chartSWF, strURL, "", chartId, chartWidth,
        chartHeight, false);
    try
    {
      response.getWriter().write(str);
    } catch (IOException e)
    {
      e.printStackTrace();
    }
  }
  
  /** *//**
   * bollean转换为int
   */
  private static int boolToNum(Boolean bool)
  {
    int num = 0;
    if (bool.booleanValue())
    {
      num = 1;
    }
    return num;
  }
}

1 2 3  下一页

Tags:Flash 图表 FusionChartsV

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接