HighChart扩展-动态获取数据
来源:互联网 发布:淘宝做代销怎么样 编辑:程序博客网 时间:2024/05/18 00:48
HighChart扩展实践-动态获取数据封装jQuery工具类
这篇文章没有介绍highChart的基础篇,主要实现了封装工具类,动态从后台加载数据。
后台Servlet代码:
package com.kenneth.test.servlet;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.google.gson.Gson;@SuppressWarnings("unused")public class LoadDataServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8");// 这条语句指明了向客户端发送的内容格式和采用的字符编码. PrintWriter out = response.getWriter(); // 获取模拟数据list // List<String[]> list = getModelList(); // 获取模拟数据Map// Map<String, List<String[]>> map = new HashMap<String, List<String[]>>(); Gson gson = new Gson(); String json = gson.toJson(getModelMap()); out.write(json); out.close(); } // 用于处理客户端发送的POST请求 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } private List<String[]> getModelList() { List<String[]> list = new ArrayList<String[]>(); for (int i = 0; i < 5; i++) { String[] item = new String[6]; for (int j = 0; j < item.length; j++) { item[j] = Math.random() * 100 + ""; } list.add(item); } return list; } private Map<String, Map<String,Object>> getModelMap() { Map<String, Map<String,Object>> map = new HashMap<String, Map<String,Object>>(); for (int i = 0; i < 5; i++) { Map<String,Object> obj = new HashMap<String,Object>(); String[] item = new String[6]; for (int j = 0; j < item.length; j++) { item[j] = Math.random() * 100 + ""; } obj.put("data", item); obj.put("name", "类别"+i); map.put(i+"", obj); } return map; }}
封装highChart工具类对象:
var ChartUtil = { /** * 创建图表 * * @param options * @returns */ createChart : function(options) { if (options && options != {}) { var defaultOptions = ChartUtil.initOptions(); // 如果有配置参数 , 则 把配置参数添加到默认参数中 options = $.extend(defaultOptions, options); } return ChartUtil.loadData(options); }, /** * 加载默认配置 */ initOptions : function() { return { loadDataConfig : { url : "", params : {} }, callback : ChartUtil.callback }; }, /** * 加载动态数据 * * @param options */ loadData : function(options) { var config = options.loadDataConfig; var callback = options.callback; if (config && config.url != "" && $.type(config.params) == "object") { $.post(config.url, config.params, function(data) { var dataArr = JSON.parse(data); if ($.type(callback) == "function") callback(options, dataArr); }); } if ($.type(callback) == "function") callback(options); }, /** * 默认的回调函数 加载动态数据执行完成之后执行 * * @param options * @param dataResult */ callback : function(options, dataResult) { // 当有结果集时 if (dataResult) { options.series = ChartUtil.parseObjToSeries(dataResult); } options.chart = options.chart || {}; options.chart['renderTo'] = options.selectorId; return new Highcharts.Chart(options); }, /** * 将整个对象转换成序列对象 */ parseObjToSeries : function(objs) { var series = []; $.each(objs, function(index, item) { var obj = []; // list if ($.type(item) == "array") { obj = ChartUtil.getItemObj(item); } // key-value 格式 if ($.type(item) == "object") { obj = ChartUtil.getItemObj(item.data); } item.data = obj; series.push(item); }); return series; }, /** * 获取序列中的单行对象 */ getItemObj : function(data) { var obj = []; $.each(data, function(objIndex, objItem) { obj.push(parseFloat(objItem)); }); return obj; }};
封装jQuery插件用于调用:
(function($) { var ChartUtil = ChartUtil || ""; $.fn.createDynChart = function(options) { options = options || {}; // 选择器没有找到对象 if ($(this).length == 0) { return false; } // 遍历选择器获取到的界面对象,在每个内部生成一个图表 $.each($(this), function(index, item) { if (!$(item).attr("id")) { $(item).attr("id", "$default_chart_" + index); } options['selectorId'] = $(item).attr("id"); if ($.type(ChartUtil) != "object") { alert("请先引入图表生成工具再使用该插件!"); return; } ChartUtil.createChart(options); }); }})(jQuery);
前台界面代码:
<style> .my-charts{ width: 800px; margin:0 auto; } </style><script type="text/javascript"> $(function(){ var options = { title : { text : "测试报表" }, xAxis : { categories : [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun' ] }, chart : { type : "column" }, loadDataConfig : { "url" : $("base").attr("href") + "test/loadData", "params" : {} } }; $(".my-charts").createDynChart(options); }); </script> <div class="my-charts"></div> <div class="my-charts"></div>
这样,就完成了把任意元素转换成highChart图表的功能。也可以把封装的highChart工具类分离出来单独使用。
生成的效果图:
由于界面我用的class样式获取的元素有2个,所以会生成2个图表。
源代码项目下载:源代码项目点此下载
0 0
- HighChart扩展-动态获取数据
- highchart 动态添加数据
- 使用AngularJS结合Highchart图表动态获取JSON格式数据
- HighChart 折线图 动态加载数据
- HighChart 3D饼状图 动态加载数据
- HighChart学习——动态加载数据
- HighChart 动态加载数据 不成功的解决办法
- 遇到一个highchart 获取json数据展现问题
- highchart 动态刷新表格
- highchart动态生成图形
- highChart动态生成图表一片空白
- highchart 动态图的展示
- 集群监控之web端动态的显示数据(highchart)
- highchart
- highchart
- highchart
- listview动态获取数据
- ECharts动态获取数据
- struts基本配置
- C#线程篇---让你知道什么是线程(1)
- prototype 来由
- php session存储到文件、memcache或redis
- Android studio 快捷键
- HighChart扩展-动态获取数据
- shell教程
- root.sh 脚本执行失败
- mwArray的用法
- OSG使用更新回调来更改模型
- mysqldump工具备份还原Mysql数据库实例及参数详细说明
- iOS9 HTTP 不能正常使用的解决办法
- Struts2基本配置(1)
- 2、构造、析构和赋值运算