zoukankan      html  css  js  c++  java
  • ajax实现highchart与数据库数据结合完整案例分析(三)---柱状折线图

    作者原创,未经博主允许,不可转载

            在前面分析和讲解了用java代码分别实现饼状图和折线图,在工作当中,也会遇到很多用ajax进行异步请求

    实现highchart。

          先展示一下实现的效果图:

           用ajax请求获取数据库后台数据,可以实现异步刷新的效果,其主要实现放在了js代码,即客户端实现请求,

    这样可以减轻服务器端的压力。

    先展示js处代码:

    <!-- 播放统计柱型折线图 -->
    <script type="text/javascript">
         var chart;
         $(function(){
            $.ajax({
              type:"post",
              cache: false,
              async: false,
              url:"<%=basePath%>personSpace/showPlayer",
              success:function(data){
                 var data=eval(data);
                 if(data.hasData>0){
                  showBroadColumData(data);
                 }else{
                  $("#playStatistic").attr("src","images/playStatistic.png")
                  var left=($(window).width()-1000)/2+"px";
                  $("#playStatistic").css("margin-left",left);
                 }
              }
            });
         });
        
       function showBroadColumData(data){
         var xCategory=[];
         var yData=[];
         var demandData=[];
         var splineData=[];
         for(var i=0;i<data.playCountInfo.length;i++){
             xCategory.push(data.playCountInfo[i].yearMonth);
             yData.push(parseInt(data.playCountInfo[i].livePlayCount));
             demandData.push(parseInt(data.playCountInfo[i].vodPlayCount));
             splineData.push(parseInt(data.playCountInfo[i].count));
         }
         chart = new Highcharts.Chart({
            chart:{
               renderTo:'broadColum'
            },
            title:{             
                text:'播放统计',
                style:{
                  color:'#000',
                  fontSize:'18px',
                  fontFamily:"微软雅黑"
                }
            }, 
            credits:{             
                 enabled:false       
            }, 
            xAxis:[{
              categories:xCategory,
              lineWidth:2,//自定义x轴宽度 
              title: {
                text: '播放时间',
                style:{
                  color:'black',
                  fontSize:'14px',
                  fontFamily:"宋体"
                }
              },
              style:{                     
                  color:"#4572A7"                  
                }   
            }],
            yAxis:[{
              tickInterval:50,
              labels:{
                style:{                     
                  color:"#4572A7"                  
                }      
              },
              title:{
                text: '播放次数',
                style:{
                  color:'black',
                  fontSize:'14px',
                  fontFamily:"宋体"
                }
              }
            }],
            legend:{
              shadow:true,
              layout:"horizontal"
            },
            series:[{
              name:'直播',     
              type:"column",
              data:yData,
              color:Highcharts.getOptions().colors[3]
            },{
              name:'点播',     
              type:"column",
              data:demandData,
              color:Highcharts.getOptions().colors[7]
            },{
               name:'总播放次数',
               type:"spline",
               data:splineData,
               marker: {                                                     
                    lineWidth: 2,                                               
                    lineColor: Highcharts.getOptions().colors[4],               
                    fillColor: 'white'                                          
                },
               color:Highcharts.getOptions().colors[5]      
            }]      
         });
       }
      </script>

           其实现的思路为:先用ajax请求后台数据,从后台查询获取一个map的集合,然后将map中集合的数据遍历出来,将所需要的数据分别放入

    不同的数组当中。,然后再将数组放入highchart插件当中。

    此处展示java后台主要代码:

     @ResponseBody
        @RequestMapping(value = "/showPlayer", method = {RequestMethod.GET, RequestMethod.POST})
        public Map<String, Object> showPlayerStatisticToBroad(HttpServletRequest request) {
            List<PlayerStatisticsInfo> playerStatisticsInfos = new ArrayList<PlayerStatisticsInfo>();
            playerStatisticsInfos = playerStatisticService.qryPlayCountInfo(getSessionInfo(request).getUserId()); //查询数据集合
            Map<String, Object> map = new LinkedHashMap<String, Object>();//选择用map集合可以实现键值对形式,通过键值对的形式取得想要的数据和对象
            if (CollectionUtils.isNotEmpty(playerStatisticsInfos)) {
                map.put("playCountInfo", playerStatisticsInfos);
                map.put("hasData", 1);
            } else {
                map.put("hasData", 0);
            }
            return map;
        }

  • 相关阅读:
    10-vue自定义指令
    09-vue过滤器的基本使用
    vue总结
    07-vue的v-if和v-show
    06-循环数组v-for
    Java通过JNA调用dll或so
    Centos7安装FRP内网穿透工具进行远程连接
    centos7检查Java项目存活与否并重启
    centos7中Java项目重启
    Ubuntu 19.04: Connect to GNOME desktop environment via XRDP
  • 原文地址:https://www.cnblogs.com/zjdxr-up/p/7421445.html
Copyright © 2011-2022 走看看