HighCharts 添加另一个变量

问题描述 投票:0回答:1

我有一个脚本,可以从 MySQl 数据表中调用数据并在 HighCharts 图表中使用它。我的工作正常,但我想从名为“uniqueid”的数据表中添加另一个变量(字段)。

脚本 1;

$categories = array();
$categories['name'] = 'Room';

$rows1 = array();
$rows1['name'] = 'Temp C';

$uniqueid = array();
$uniqueid['name'] = 'UniqueID';

while($row_AvgWaterTemp = mysql_fetch_assoc($AvgWaterTemp)) {
    $categories['data'][] = $row_AvgWaterTemp['Room'];
    $rows1['data'][] = $row_AvgWaterTemp['SeqID1306'];
    $uniqueid['data'][] = $row_AvgWaterTemp['UniqueID']; // NEW FIELD
}
$result = array();

array_push($result,$categories);
array_push($result,$rows1);
array_push($result,$uniqueid); // NEW FIELD

我还有一个调用脚本 1 并生成图表的脚本:

脚本2

$(function () {

var categories=[];
   var data =[];

 var chart;
$(document).ready(function() {

    $.getJSON("../charts/chart.php", function(json) { 
    $.each(json,function(i,el) { 
      if (el.name=="Room") 
        categories = el.data; 
        else data.push(el); 
        });


        $('#container1').highcharts({
            chart: {
                renderTo: 'container',
                type: 'line',
                zoomType: 'x',
                marginTop: 40,
                marginRight: 30,
                marginBottom: 50,
                plotBackgroundColor: '#FCFFC5'
            },
            title: {
                text: 'Room hot water temperatures ',
                x: -20, //center
                style: {
                fontFamily: 'Tahoma',
                color: '#000000',
                fontWeight: 'bold',
                fontSize: '10px'
                }
            },
            subtitle: {
                text: 'Zoom: hold cursor over chart, hold left mouse button and drag, release button',
                x: -20
            },
             xAxis: {
                 categories: categories,

                    labels: {
                        enabled: false
                    }
            },

            yAxis: {



                plotLines: [{
                value: '<?php echo $row_Rooms['Hotmax'];?>',
                color: '#FF0000',
                width: 1,
                zIndex: 10,
                label: {
                            text: 'Maximum <?php echo $row_Rooms['Hotmax'];?> °C',
                            align: 'center',
                            x: -10,
                            y: -5,
                                style: {
                                    color: '#FF0000'
                                }
                            }
                }, {
                 value: '<?php echo $row_Rooms['HotMin'];?>',
                color: '#0000CC',
                width: 1,
                zIndex: 10,
                label: {
                            text: 'Minimum <?php echo $row_Rooms['HotMin'];?> °C',
                            align: 'center',
                            x: -10,
                            y: 20,
                                style: {
                                    color: '#0000CC'
                                }
                            }
                 }],



                showFirstLabel: false,
                lineColor:'#999',
                lineWidth:0.2,
                tickColor:'#666',
                tickWidth:1,
                tickLength:2,
                tickInterval: 10,
                gridLineColor:'#ddd',
                title: {
                    text: 'Temperature °C',
                    style: {
                fontFamily: 'Tahoma',
                color: '#000000',
                fontWeight: 'bold',
                fontSize: '10px'
                }
                },


                },

                legend: {
                     enabled: false,
                itemStyle: {
                    font: '11px Trebuchet MS, Verdana, sans-serif',
                    color: '#000000'
                },
                 itemHoverStyle: {
                color: '#000000'
                },
                itemHiddenStyle: {
                 color: '#444'
                }

                },

                colors: [
                '#009900', 

            ],

                plotOptions: {
                    style: { textShadow: false },
                    column: {
                        color:'#ff00ff'
                    },



                series: {

                    cursor: 'pointer',
                    point: {
                    events: {
                    click: function() {
                        window.top.location.href = "../chart_click_hot_water.php?room=" + this.category;

                    }
                }
                },  



                    lineWidth: 1,
                    dataLabels: {
                    enabled: false,
                    rotation: 0,
                    color: '#000000',
                    align: 'center',
                    //format: '{point.y:.1f}', // one decimal
                    y: 0, // 10 pixels down from the top
                    style: {
                        textShadow: false,
                        fontSize: '10px',
                        fontFamily: 'Verdana, sans-serif'
                        }
                    }
                }

            },

            tooltip: {

                enabled: true,
                crosshairs: [false, true],
                positioner: function () {
                    return { x: 5, y: -5 };
                },
                shadow: false,
                borderWidth: 0,
                backgroundColor: 'rgba(255,255,255,0.8)',
                formatter: function () {
                    return 'Room: <b>' + this.x +
                '</b> is <b>' + this.y + ' °C</b>';
                }
            },



            credits: {
                enabled: false
            },


            series: data
        });
    });

});

});

我的问题是,如何包含新字段“uniqueid”并在点击功能中使用:

 click: function() {
      window.top.location.href ="../chart_click_hot_water.php?uniqueid=" + this.category;
}

目前,我的“工具提示”显示房间号和水温,但是当我在脚本 1 中包含附加字段时,工具提示仅显示房间,并显示水温“未定义”。

是否可以从数据表中调用附加字段并在我的点击函数中使用它,如果可以,我该怎么做。

非常感谢您的帮助和时间。

干杯。

更新:

我有以下内容

$.getJSON("../charts/imaint_water_avg_temp_chart.php", function(json) { 
    $.each(json,function(i,el) { 
      if (el.name=="Room") 
        categories = el.data;
      else if (el.name=="UniqueID")  {
        uniqueid = el.data;
      } else data.push(el); 
      });

然后 console.log(uniqueid, "UniqueID");我在日志中看到了 UniqueID。

然后我有:

series: {
cursor: 'pointer',
point: {
   events: {
   click: function() {
        window.top.location.href = "../imaint_chart_click_hot_water.php?room=" + this.uniqueid;
}
}
},  

但是 ?room= 没有被填充。

你或其他人知道我哪里出错了吗? 谢谢

javascript php highcharts
1个回答
0
投票

通过使用

this.index
,您将获得数据的索引号,您可以使用该索引号通过
uniqueid[this.index]
获取 UniqueID。

提示: 如果有额外的数据字段,我建议您将数据表示为“具有命名值的对象列表”。它可以提供更多的结构和可读性。 您的数据可能如下所示:

[{ uniqueid: 'GLAZH03431464336298', room: '343', y:'50' },{ uniqueid: 'GLAZH04051465483111', room: '405', y:'50' }]

您可以跟随您的直觉并使用 
this.uniqueid

this.room

带有命名值的对象列表的示例

PHP 脚本可能看起来像这样(未经测试):

$data = array(); while($row_AvgWaterTemp = mysql_fetch_row($AvWaterTemp)){ $temp = array( "uniqueid" => $row_AvgWaterTemp['UniqueID'], "room" => $row_AvgWaterTemp['Room'], "y" => $row_AvgWaterTemp['SeqID1306'] ); array_push($data,$temp); } $result = array(); array_push($result,$data); echo json_encode($result); // Printing it out as json

您旧的初始 JS 代码将是相同的。 

祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.