2013-11-24 3 views
0

Мой код:Dojo график не загружается в устройство Android

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-устройстве. Я прошел через logcat устройства Android и обнаружил, что есть ошибка скрипта (подробная ошибка: 11-24 19: 20: 53.854: E/Web Console (335): Ошибка: scriptError в файле: /// android_asset/www/dojo /dojo/dojo.js:15). В браузере ПК он не показывает никакой ошибки (отлаживается с помощью firebug).

Я попытался удалить «dojox/charting/action2d/Tooltip» из инструкции require. И он также работал на Android. Но мне нужно отображать значение маркеров в диаграмме с помощью всплывающей подсказки, но оно вызывает ошибку. Итак, есть ли решение?

ответ

1

Я подозреваю, что вы можете столкнуться с проблемой того, что инструменты Android не включают файлы (или каталоги), начиная с подчеркивания в APK. Включая подсказку, вы, вероятно, включаете некоторые зависимости, которые начинаются с подчеркивания, таким образом, проблема.

У вас есть два способа для исправления того, что вы можете «построить» ваш код Dojo (см., В частности, уроки Dojo), удалив любое подчеркивание в ваших именах файлов.

Или вы можете сообщить Android-инструментам, чтобы они включали файлы, начинающиеся с underscore (см .: https://code.google.com/p/android/issues/detail?id=5343#c40). Я не тестировал это, и некоторые люди притворяются, что это не работа. Но я бы сказал, что это стоит проверить.

Обратите внимание, что выполнение сборки является хорошей идеей, поскольку это уменьшит количество файлов, которые будут загружены при запуске приложения, улучшая время запуска.