1

現在、ハイチャートを使用してデータを表示する Web サイトに取り組んでいます。サーバーからデータを取得するなど、さまざまなオプションをテストしてきましたが、すべてが完璧に機能しますが、クロムのみです。

Firefox でテストすると、チャートがどこにあるべきかがわかります。境界線、タイトル、印刷/エクスポート ボタン (これらはすべてプラグイン自体によって生成されます) は表示されますが、データは表示されません。firebug を使用して、サーバーからデータが正しく取得されているかどうかを確認しましたが、すべて問題ないようです。

IE6 では、境界線やタイトルなども見えないため、さらに悪化します。

Highcharts で折れ線グラフと jquery 1.7 に問題があることをどこかで読みましたが、さまざまな種類のグラフを試し、jquery のバージョンを 1.8 に変更しました。Chrome では常に動作しますが、Firefox/IE6 では動作しません

正直なところ、どこに問題があるのか​​ わからないため、コードを貼り付けていません。簡単に解決できるバグに過ぎないことを望んでいます..よろしくお願いします

編集:

私は jsFiddle をチェックアウトしましたが、いくつかのものを変更せずにサーバー側なしで動作させる方法を理解できませんでした。コードの一部を次に示します。それが役立つことを願っています:

HTML

<html class="gecko  win" xmlns="http://www.w3.org/1999/xhtml" dir="ltr" xml:lang="en" lang="en-US">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
    <title>Portal de Conciliacion SMS Prepago</title>
    <script type="text/javascript" src="Plantilla/script.js"></script>
    <script type="text/javascript" src="scripts/jquery-1.8.0.min.js"></script>  
    <script src="Highcharts/js/highcharts.js"></script>
    <script src="Highcharts/js/modules/exporting.js"></script>
    <style type="text/css" title="currentStyle">@import "DataTables/media/css/demo_table.css";</style>
    <script type="text/javascript" language="javascript" src="DataTables/media/js/jquery.dataTables.js"></script>
    <link rel="stylesheet" href="Plantilla/style.css" type="text/css" media="screen">
    <!--[if IE 6]><link rel="stylesheet" href="Plantilla/style.ie6.css" type="text/css" media="screen" /><![endif]-->
    <!--[if IE 7]><link rel="stylesheet" href="Plantilla/style.ie7.css" type="text/css" media="screen" /><![endif]-->   
</head>
    <body>
        <div style="overflow: hidden">  
            <div id="diferencia" style="width: 48%; height: 200px; margin: 0 auto"></div>
            <br>
            <br>        
            <div id="ttdm" style="float: left; width: 48%; height: 200px; margin: 0 auto"></div>        
            <div id="rtbs" style="float: right; width: 48%; height: 200px; margin: 0 auto"></div>   
        </div>
    </body>
</html>

(また、ページにデータを表示するために datatables プラグインを使用しています。コードのその部分は省略しましたが、何かする必要がある場合に備えてインクルードは残しました)

JS

function getUrlVars() {
    var vars = {};
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
        vars[key] = value;
    });
    return vars;
}

$(function () {

    var fecha = getUrlVars()["fecha"];
    if (fecha) {
        console.log(fecha);
    }
    else {
        fecha = "";
        console.log("NO!!!");
    }

    var chart_diferencia;
    var chart_ttdm;
    var chart_rtbs;

    $(document).ready(function() {

        var options_diff = {

            chart: {
                renderTo: 'diferencia',
                borderColor: '#000000',
                borderWidth: 2,
                margin: [30, 30, 30, 30],
                type: 'area'
            },

            title: {
                text: 'Diferencia (TTDM vs RTBS)'
            },

            xAxis: {
                type: 'datetime',
                tickInterval: 3 * 24 * 3600 * 1000,
                tickWidth: 5,
                gridLineWidth: 1,
                labels: {
                    align: 'center',
                    formatter: function() {
                        return Highcharts.dateFormat('%e/%m', this.value);
                    }
                }           
            },

            yAxis: [{
                title: {
                    text: null
                },
                labels: {
                    align: 'center',
                    x: -12,
                    formatter: function() {
                        return Highcharts.numberFormat(this.value/1000, 0) + 'K';
                    }
                },
                showFirstLabel: false,
            }],

            legend: {
                enabled: false,
            },

            tooltip: {
                shared: true,
                crosshairs: true,               
            },

            series: [{
                name: 'Diferencia',
                color: '#FF8C00',
                lineWidth: 2,
                marker: {
                    radius: 3
                }
            }]
        };

        var options_ttdm = {

            chart: {
                renderTo: 'ttdm',
                borderColor: '#000000',
                borderWidth: 2,
                margin: [30, 30, 30, 30],
                type: 'area'
            },

            title: {
                text: 'TTDM (cursado)'
            },

            xAxis: {
                type: 'datetime',
                tickInterval: 3 * 24 * 3600 * 1000,
                tickWidth: 5,
                gridLineWidth: 1,
                labels: {
                    align: 'center',
                    formatter: function() {
                        return Highcharts.dateFormat('%e/%m', this.value);
                    }
                }           
            },

            yAxis: [{
                title: {
                    text: null
                },
                labels: {
                    align: 'center',
                    x: -12,
                    formatter: function() {
                        return Highcharts.numberFormat(this.value/1000000, 0) + 'M';
                    }
                },
                showFirstLabel: false,
            }],

            legend: {
                enabled: false,
            },

            tooltip: {
                shared: true,
                crosshairs: true,               
            },

            series: [{
                name: 'TTDM',
                lineWidth: 2,
                marker: {
                    radius: 3
                }
            }]
        };

        var options_rtbs = {

            chart: {
                renderTo: 'rtbs',
                borderColor: '#000000',
                borderWidth: 2,
                margin: [30, 30, 30, 30],
                type: 'area'
            },

            title: {
                text: 'RTBS (facturado)'
            },

            xAxis: {
                type: 'datetime',
                tickInterval: 3 * 24 * 3600 * 1000,
                tickWidth: 5,
                gridLineWidth: 1,
                labels: {
                    align: 'center',
                    formatter: function() {
                        return Highcharts.dateFormat('%e/%m', this.value);
                    }
                }           
            },

            yAxis: [{
                title: {
                    text: null
                },
                labels: {
                    align: 'center',
                    x: -12,
                    formatter: function() {
                        return Highcharts.numberFormat(this.value/1000000, 0) + 'M';
                    }
                },
                showFirstLabel: false,
            }],

            legend: {
                enabled: false,
            },

            tooltip: {
                shared: true,
                crosshairs: true,               
            },

            series: [{
                name: 'RTBS',
                color: '#8B0000',
                lineWidth: 2,
                marker: {
                    radius: 3
                }
            }]
        };


        // Load data asynchronously using jQuery. On success, add the data
        // to the options and initiate the chart.
        // This data is obtained by exporting a GA custom report to TSV.
        // http://api.jquery.com/jQuery.get/
        jQuery.get('Solicitudes/concil_TTDMvsRTBS.php', null, function(tsv, state, xhr) {
            var lines = [],
                listen = false,
                date,

                // set up the two data series
                diferencia = [],
                ttdm = [],
                rtbs = [];

            // inconsistency
            if (typeof tsv !== 'string') {
                tsv = xhr.responseText;
            }

            // split the data return into lines and parse them
            tsv = tsv.split(/\n/g);
            jQuery.each(tsv, function(i, line) {



                listen = true;
                //console.log(line);

                // all data lines start with a double quote
                if (line != "") {


                    line = line.split(',');

                    //console.log(line);



                    date = Date.parse(line[0] +' UTC');

                    diferencia.push([
                        date,
                        parseInt(line[1].replace(',', ''), 10)
                    ]);
                    ttdm.push([
                        date,
                        parseInt(line[2].replace(',', ''), 10)
                    ]);
                    rtbs.push([
                        date,
                        parseInt(line[3].replace(',', ''), 10)
                    ]);
                }
            });

            //console.log(allVisits);
            diferencia.reverse();
            ttdm.reverse();
            rtbs.reverse();


            options_diff.series[0].data = diferencia;
            options_ttdm.series[0].data = ttdm;
            options_rtbs.series[0].data = rtbs;
            //options.series[1].data = newVisitors;

            //console.log(allVisits);
            //console.log(newVisitors);


            Highcharts.setOptions({ 
                lang: { 
                    weekdays: ['Domingo', 'Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado']
                } 
            }); 
            Highcharts.setOptions({ 
                lang: { 
                    months: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre']
                } 
            }); 
            chart_diferencia = new Highcharts.Chart(options_diff);
            chart_ttdm = new Highcharts.Chart(options_ttdm);
            chart_rtbs = new Highcharts.Chart(options_rtbs);

            console.log("LISTO!");
        });

        $('#example').dataTable( {
            "sScrollY": "200px",
            "bPaginate": false,
            "bInfo": false,
            "bFilter": false,
            "bAutoWidth": true
        });
    });

});

3 つの異なるグラフィックスのオプションを設定したので、ちょっと長くなりました。プラグインに付属のサンプルを変更して取得したため、get 部分は少し面倒ですが、両方のデバッグ コンソール (firebug と chrome) で確認したところ、データは両方でまったく同じように受信されました。

ハイチャートのサポート フォーラムで、チャート オプションのカンマが IE6 で動作しない理由である可能性があることを読みました。明日、職場で確認する必要があります。しかし、先に述べたように、Firefox では背景、タイトル、印刷/エクスポート ボタンは表示されますが、データは表示されません。

ハイチャートのバージョンは 2.2.5 です。2.3 をダウンロードしましたが、まだ試していません。まずは明日の朝。

助けてくれてありがとう!

4

0 に答える 0