angular 与 highcharts 结合使用

highcharts 图表结合angularjs 完成 请求数据动态显示图表。

一、我们要见将相关文件引入html中。

  <script type="text/javascript" src="/NEWPC/js/angular.min.js"></script>
   <script type="text/javascript" src="/NEWPC/js/jquery.min.js"></script>
   <script type="text/javascript" src="/NEWPC/js/highcharts.js"></script>
   <script type="text/javascript" src="/NEWPC/js/highcharts-ng.js"></script>

注意js引入的先后顺序

二、将图表以highchart DOM包含。

<highchart class="charts_div" config="chartConfig_interstate">

外层可以随意嵌套,样式要设置宽高,已经 block 属性

.charts_div{
    margin-top: 20px;
    width: 490px;/*必须*/
    height: 200px;/*必须*/
    display: block;/*必须*/
}

三、将series 中的data 设置为$scope 的变量。

先自定义一组初始数据。

//图表数据
            $scope.chartData={
                interstate_series:{
                    data_download:[340,230,450,660,340,230],
                    data_upspeed:[660,340,230,340,230,450]
                },
                terminalstate_series:{
                    data:[
                            ['QH-20170829XYKT',45.0],
                            ['Firefox2',45.0],
                            ['Firefox3',45.0],
                        ]
                },
                cpustate_series:{
                    data:[20,78,54,65,22,21,36,64,99]
                },
                memorystate_series:{
                    data:[20,78,54,65,22,21,36,64,99]
                }
            };

初始数据一定要放在引用数据之前,否则会报错。

//网络速度 面积曲线图
            $scope.chartConfig_interstate={
                chart: {
                    type: 'areaspline'
                },
                title:{
                    text:null
                },
                xAxis: {
                    allowDecimals: false,
                    labels:false
                },
                legend:{//底部title禁止显示
                    enabled:false
                },
                yAxis: {
                    title: {
                        text: ''
                    },
                    gridLineDashStyle: 'longdash',//修改Y刻度线的样式类型为破折号
                    labels: {
                        formatter: function () {
                            if(this.value>1000){
                                return Math.round(this.value/1024)+"MB/s"
                            }else if(this.value<=1000&&this.value>0){
                                return this.value + "KB/s"
                            }else{
                                return "0"
                            };
                        }
                    },
                    tickPositioner: function () {
                        if(this.dataMax>=0&&this.dataMax<=1000){
                            var positions = [0,200,400,600,800,1000];
                        }else if (this.dataMax>1000&&this.dataMax<=5120) {
                            var positions = [0,1024,2048,3072,4096,5120];
                        }else if(this.dataMax>5120&&this.dataMax<=10240){
                            var positions = [0,2048,4096,6144,8192,10240];
                        }else if(this.dataMax>10240&&this.dataMax<=20480){
                            var positions = [0,4096,8192,12288,16384,10240];
                        }
                        return positions;
                    }
                },
                tooltip: {//鼠标移入显示数据
                    formatter: function () {
                        if (this.y>=1024) {
                            return this.series.name + Math.round((this.y/1024)*10)/10 +"MB/s"
                        }else{
                            return this.series.name + Math.round(this.y*10)/10 + "KB/s"
                        }
                    }
                },
                series: [{
                    name: '实时下载速度',
                    data:$scope.chartData.interstate_series.data_download,
                    color:'#85f985'//面积图的背景色
                },{
                    name: '实时上传速度',
                    data: $scope.chartData.interstate_series.data_upspeed,
                    color:'#6bb1f7'//面积图的背景色
                }]
            };

 

四、设置定时器,周期请求数据并更新数据。

//定期获取数据
            var setChartDate = setInterval(function(){
                $http({
                    method:'GET',
                    url:'wifi.php'
                }).then(function successCallback(response){
//                    console.log(response);
                    if(response){
                        console.log(response);
成功后将请求的数据赋值
                    }
                }, function errorCallback(){
                    console.log(2);
                });
            },1000);

这样就可以实时动态更新数据了

posted @ 2017-09-30 17:14  RoadAspen  阅读(1558)  评论(0编辑  收藏  举报