Dojo图表未在Android设备中加载

时间:2013-11-24 13:56:09

标签: android dojo tooltip dojox.charting

我的代码是:

require([
     // Require the basic chart class
    "dojox/charting/Chart",

    // Require the theme of our choosing
    "dojox/charting/themes/ThreeD",         

    // Charting plugins:
    "dojox/charting/widget/SelectableLegend",

    //  We want to plot Lines
    "dojox/charting/plot2d/Lines",                  
    //  We want to use Markers
    "dojox/charting/plot2d/Markers",

    //  We'll use default x/y axes
    "dojox/charting/axis2d/Default",

    "dojox/charting/action2d/Tooltip",
    "dojo/domReady!"
], function(Chart, theme,Legend, Line) {
    dojo.ready(function(){
            // When the DOM is ready and resources are loaded...         
            // Create the chart within it's "holding" node
            var chart = new Chart("chartNode");
        chart.title="Sales Revenue Trend";          

            // Set the theme
            chart.setTheme(theme);

            // Add the only/default plot
            chart.addPlot("default", {
            type: Line,labels:true,
            markers: true
            });


        var myLabelFunc = function(text, value, precision){
            if(text!="0")               
               return (parseFloat(text)/100000)+" lacs";
            else
               return text;
        };
            // Add axes
            chart.addAxis("x",{labels: labels,majorTickStep:1,rotation: -90,title:"Date", titleOrientation:"away", titleFont: "normal normal bold",titleFontColor: "black"});
            chart.addAxis("y", { vertical: true,minorLabels: false,minorTicks:true, fixLower: "major", fixUpper: "major",title:"Gross Revenue(INR)", titleFont: "normal normal bold",titleFontColor: "black",dropLabels: false, labelFunc: myLabelFunc});

            // Add the series of data
            for(i=0;i<cr.length;i++)
            {
            chart.addSeries(channels[i],cr[i]);
            }
        new dojox.charting.action2d.Tooltip(chart,"default");

            // Render the chart!
            chart.render();
            var legend = new Legend({ chart: chart }, "legend");
    });
});

以上代码适用于所有PC浏览器以及iOS设备。但问题出在Android设备上。我经历了Android设备的logcat,发现有脚本错误(详细错误:11-24 19:20:53.854:E / Web Console(335):错误:fileError上的scriptError:/// android_asset / www / dojo /dojo/dojo.js:15)。在PC浏览器上,它不显示任何错误(使用firebug调试)。

我尝试从require语句中删除“dojox / charting / action2d / Tooltip”。它也适用于Android。但我需要使用工具提示在图表中显示标记的值,但它会引发错误。那么,有什么解决方案吗?

1 个答案:

答案 0 :(得分:1)

我怀疑您可能会面临Android工具不包含以APK中的下划线开头的文件(或目录)的问题。通过包含工具提示,您可能会包含一些以下划线开头的依赖项,从而解决问题。

您有两种方法可以修复,您可以“构建”您的Dojo代码(特别是请参阅Dojo教程),删除文件名中的任何下划线。

或者您可以告诉Android工具包含以下划线开头的文件(请参阅:https://code.google.com/p/android/issues/detail?id=5343#c40)。我没有测试过这个,有些人假装这不行。但我想说这值得测试。

请注意,执行构建是一个好主意,因为这会减少应用程序启动时要加载的文件数量,从而缩短启动时间。