highstock使用案例(异步请求,懒加载)

jsp中导入:<script src="<c:url value="/resources/js/highstock.js"></c:url>"></script>

jsp页面加入

<div id="historyChart" style="min-width:1050px;height:350px"></div> 
<div class="tab-pane fade" id="tab-friends">
                             <div class="row">
                                 <div class="radio" id="radio">
                                 <div class="col-md-2">
                                        <input type="radio" name="dimension" id="total"
                                                   value="total" checked="checked"> <label
                                                    for="total">总计</label>
                                 </div>
                                 <c:forEach var="item" items="${dimensionValues}">
                                     <div class="col-md-2">
                                             <input type="radio" name="dimension" id="${item}"
                                                    value="${item}" > <label
                                                    for="${item}"> ${item}</label>
                                     </div>
                                 </c:forEach>
                              </div>  

                           </div>  

                           <div class="alert alert-info fade in" id ="warningInfo" style="display: none;">
                                    <button type="button" class="close" id = "warnningButton" data-dismiss=""
                                        aria-hidden="">×</button>
                                    <i class="fa fa-info-circle fa-fw fa-lg"></i> <strong></strong> 您查找的无记录!
                            </div>
                            <br><br>
                           <div id="historyChart" style="min-width:1050px;height:350px"></div>
                        </div>  

后台穿过类的数据封装

@RequestMapping(value = "/comm/gethistorydata", method = RequestMethod.POST)
    public @ResponseBody JSONArray getHistoryData(String dimension,String metric,String start,
            String end,String businessType,String dimensionValue) {
        LeftNavParemeter navParameter = new LeftNavParemeter();  

        Calendar calendar = Calendar.getInstance();
        if (start == null && end == null) {
            end = DateUtils.format(new Date(), DateUtils.DATE_YYYY_MM_DD);// 测试数据2015-03-20
            Date date = DateUtils.parse(end, DateUtils.DATE_YYYY_MM_DD);
            calendar.setTime(date);
            calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR) - 1);
            Date preDate = calendar.getTime();
            start = DateUtils.format(preDate);
        }
        navParameter.setStartDate(start);
        navParameter.setEndDate(end);
        navParameter.setDimensionName(dimension);
        navParameter.setMetric(metric);
        navParameter.setBusinessType(businessType);  

        if (!start.contains("-")) {  <span style="white-space:pre">            </span>//根据时间的选择进行懒加载数据
            JSONArray json = getMinuteHistory(navParameter, dimensionValue);
            return json;
        }  

        SimpleDateFormat spf = new SimpleDateFormat("yyyy-MM-dd");
        Map<Date,Integer> valueMap = new LinkedHashMap<Date, Integer>();
        try {
            List<LoginCommDimension> loginCommDimensionList = loginService
                    .findCommByDimensionValue(navParameter);
            JSONArray dimensionValues = JSON.parseArray(currentnav
                    .getDimension().getDimensionValues());  

            JSONArray jsonarr = new JSONArray();  

            for (int i = 0; i < loginCommDimensionList.size(); i++) {
                LoginCommDimension item = loginCommDimensionList.get(i);
                JSONObject parseObject = JSONObject.parseObject(item
                        .getDimensionValue());
                Date date = spf.parse(item.getDate());
                if (dimensionValue.equals("total")) {  

                    if(valueMap.get(date)==null){
                        valueMap.put(date,item.getTotal());
                    }else{
                        valueMap.put(date, valueMap.get(date)+item.getTotal());
                    }  

                    continue;
                }
                for (Object value : dimensionValues) {
                    if (value.toString().equals(dimensionValue)) {
                        if (parseObject.containsKey(value)) {  

                            if(valueMap.get(date)==null){
                                valueMap.put(date,(Integer)parseObject.get(value));
                            }else{
                                valueMap.put(date, valueMap.get(date)+(Integer)parseObject.get(value));
                            }
                        }
                    }
                }  

            }
            for(Entry<Date, Integer> entry : valueMap.entrySet()){
                Object[] obj = new Object[2];
                obj[0] = entry.getKey();
                obj[1] = entry.getValue();
                jsonarr.add(obj);
            }
            return jsonarr;//返回jsonarray类型
        } catch (ParseException e) {
            throw new RuntimeException();
        }  

    }  

前台js代码:

function afterSetExtremes(e) {//懒加载,当数据量比较大的时候使用。
        navParameters.metric = getCheckedMetric();
        var parameter = JSON.stringify(navParameters);
        var chart = $(‘#historyChart‘).highcharts();
        chart.showLoading(‘Loading data from server...‘);
        $.ajax({
            url : ‘comm/gethistorydata‘,
            type : ‘post‘,
            data : {‘start‘: Math.round(e.min),‘end‘:Math.round(e.max),
                ‘dimensionValue‘:dimensionValue,‘businessType‘:navParameters.businessType,
                ‘dimension‘:navParameters.dimensionName,‘metric‘:navParameters.metric},
            dataType : ‘json‘,
            success : function(data) {
                 chart.series[0].setData(data);
                 chart.hideLoading();
            }
        });
    }

    function  getHistory(){
        navParameters.metric = getCheckedMetric();

         $.ajax({
                url : ‘comm/gethistorydata‘,
                type : ‘post‘,
                data : {
                    ‘dimensionValue‘:dimensionValue,‘businessType‘:navParameters.businessType,
                    ‘dimension‘:navParameters.dimensionName,‘metric‘:navParameters.metric},
                dataType : ‘json‘,
                success : function(data) {
                    if(!isBlank(data)){
                        $("#warningInfo").hide();
                    }else{
                        $("#warningInfo").show();
                        $("#historyChart").html("");
                        return;
                    }
                    var currentDate = new Date();

                    data = [].concat(data, [[Date.UTC(currentDate.getFullYear(),
                                            currentDate.getMonth(),
                                            currentDate.getDate(), 16, 00),
                                             0]]);
                    $(‘#historyChart‘).highcharts(‘StockChart‘, {
                        chart : {
                            type: ‘spline‘,
                            zoomType:‘x‘,
                            borderColor : ‘#EBBA95‘,
                            borderWidth : 1
                        },

                        navigator : {
                            adaptToUpdatedData: false,
                            series : {
                                data : data
                            },
                            xAxis : {
                                dateTimeLabelFormats:{
                                    second: ‘%H:%M:%S‘,
                                    minute: ‘%H:%M‘,
                                    hour: ‘%H:%M‘,
                                    day: ‘%m-%d‘, //‘%Y<br/>%m-%d‘
                                    week: ‘%m-%d‘,
                                    month: ‘%m‘,
                                    year: ‘%Y‘
                                }
                            }
                        },

                        scrollbar: {
                            liveRedraw: true
                        },

                        rangeSelector : {
                            buttons: [{
                                type: ‘hour‘,
                                count: 1,
                                text: ‘1小时‘
                            },{
                                type: ‘day‘,
                                count: 1,
                                text: ‘1天‘
                            }, {
                                type: ‘all‘,
                                text: ‘全部‘
                            }],
                            inputEnabled: false, // it supports only days
                            selected : 2 // all
                        },
                        credits:{enabled:false},
                        xAxis : {
                            events : {
                                afterSetExtremes : afterSetExtremes
                            },
                            dateTimeLabelFormats:{
                                second: ‘%H:%M:%S‘,
                                minute: ‘%H:%M‘,
                                hour: ‘%H:%M‘,
                                day: ‘%m-%d‘, //‘%Y<br/>%m-%d‘
                                week: ‘%m-%d‘,
                                month: ‘%m‘,
                                year: ‘%Y‘
                            }

                        },

                        yAxis: {
                            floor: 0
                        },
                        tooltip: {
                            pointFormat: ‘<span style="color:{series.color}">‘+dimensionValue+‘</span>: <b>{point.y}</b><br/>‘,
                        }, 

                        series : [{
                            data : data,
                        }]
                    });
                }
            });

    }

原文:http://blog.csdn.net/u010815305/article/details/45062467

参考:

http://www.tuicool.com/articles/MNBVniE

http://blog.csdn.net/ace_luffy/article/details/8233307

时间: 2024-10-11 05:18:20

highstock使用案例(异步请求,懒加载)的相关文章

js实现所有异步请求全部加载完毕后,loading效果消失

在实际开发中,一定有情况是这样的,一个页面我们有多个地方请求了ajax,在这种情况下,我们要实现数据没来之前出现我们炫酷的loading效果,而且要等到所有的ajax都请求完毕后,才让我们的loading效果消失,那么问题来了,每个ajax请求数据的时间都是不确定的,我们这个loading效果结束的逻辑又应该放到哪里呢?就好比这样(伪代码模拟): console.log('loading效果图旋转中') var timer1 = setTimeout(() => { console.log('第

关于Element UI tree组件 懒加载的更新操作

近期根据需求,要做一个懒加载的组织树,并且可以编辑组织树.但是编辑了之后无法进行实时更新. 一开始想到了很多解决方案,也在网上参考了很多方案,但是都又种种不足. 所以我去看了elementUI的tree组件的懒加载方法的源代码 Node.prototype.loadData = function loadData(callback) { var _this5 = this; var defaultProps = arguments.length > 1 && arguments[1]

tableview加载图片的时候的优化之lazy(懒加载)模式and异步加载模式

iOS---tableview加载图片的时候的优化之lazy(懒加载)模式and异步加载模式举个例子,当我们在用网易新闻App时,看着那么多的新闻,并不是所有的都是我们感兴趣的,有的时候我们只是很快的滑过,想要快速的略过不喜欢的内容,但是只要滑动经过了,图片就开始加载了,这样用户体验就不太好,而且浪费内存.这个时候,我们就可以利用lazy加载技术,当界面滑动或者滑动减速的时候,都不进行图片加载,只有当用户不再滑动并且减速效果停止的时候,才进行加载.刚开始我异步加载图片利用SDWebImage来做

iOS---tableview加载图片的时候的优化之lazy(懒加载)模式and异步加载模式

举个例子,当我们在用网易新闻App时,看着那么多的新闻,并不是所有的都是我们感兴趣的,有的时候我们只是很快的滑过,想要快速的略过不喜欢的内容,但是只要滑动经过了,图片就开始加载了,这样用户体验就不太好,而且浪费内存. 这个时候,我们就可以利用lazy加载技术,当界面滑动或者滑动减速的时候,都不进行图片加载,只有当用户不再滑动并且减速效果停止的时候,才进行加载. 刚开始我异步加载图片利用SDWebImage来做,最后试验的时候出现了重用bug,因为虽然SDWebImage实现了异步加载缓存,当加载

抛砖引玉:大型网站性能优化之Javascript异步懒加载技术

懒加载技术是现在许多大型网站的都使用的提高网站性能的方式,它的核心思想是当用户想看页面某个区域时,再加载该区域的数据.这在一定程度上减轻了服务器端的压力,也加快了页面的呈现速度. 其实国内很多网站都用到了懒加载技术,比如国内两个大型电商网站的页面都运用到了这项技术: 天猫首页: 京东商品列表页: 最近在学习时,自己写了一个带懒加载功能的电影列表展示页,大家可以先看下页面效果: http://f81236211.w4w7.tumm.top/lazyload/ 然后自己在页面底部写了一个分页功能,页

vue路由的异步加载(懒加载)方法

vue路由的异步加载(懒加载)方法. javascriptvue.jsvue-router 阅读约 2 分钟 vue本身不多介绍.直接说问题,因为vue的所有路由都是加载在一个app.js里的,如果项目巨大,那么首页加载会是灾难.所以我们就需要把某些路由用异步加载(懒加载)的方式进行加载. 1.先来看正常的加载方式 import Login from "@/components/pages/signIn/signIn"; export default new Router({ rout

Javascript图片的懒加载与预加载

1. 缓载.预载的概念 这些技术不仅限于图片加载,但我们首先讨论最常用的图片加载. 缓载:延迟加载图片或符合某些条件时才加载某些图片. 预载:提前加载图片,当用户需要查看时可直接从本地缓存中渲染. 两种技术的本质:两者的行为是相反的,一个是提前加载,一个是迟缓甚至不加载.缓载对服务器前端有一定的缓解压力作用,预载则会增加服务器前端压力. 2. 缓载的意义与实现 缓载的主要目的是作为服务器前端的优化,减少请求数或延迟请求数. 主要体现在三种模式上: 第一种是纯粹的延迟加载,使用setTimeOut

懒加载图片

图片懒加载 定义 图片延迟加载也称为懒加载,延迟加载图片或符合某些条件时才加载某些图片,通常用于图片比较多的网页.可以减少请求数或者延迟请求数,优化性能. 呈现形式 [1]延时加载,使用setTimeout或setInterval进行加载延迟,如果用户在加载前就离开,自然就不会进行加载.[2]条件加载,符合某些条件或者触发了某些条件才开始异步加载.[3]可视区域加载,仅仅加载用户可以看到的区域,这个主要监控滚动条来实现,一般距离用户看到的底边很近的时候开始加载,这样能保证用户下拉时图片正好接上,

懒加载和预加载

参考链接: 懒加载和预加载 懒加载的原理及实现 处理图片预加载时设置img的src属性和img的onload事件的位置前后顺序关系 关于图片的预加载,你所不知道的 页面中的img元素,如果没有src属性,浏览器就不会发出请求去下载图片,只有通过javascript设置了图片路径,浏览器才会发送请求. 加载图片的过程是异步的 一.懒加载 介绍 懒加载也就是延迟加载. 当访问一个页面的时候,先把所有img标签的src设为同一张空白图片的路径(占位图,只需请求一次),将其真正的图片地址存储在img标签