2016-12-03 15 views
11

Pracuję nad CANVASjS i buduję przykładową aplikację, która wyświetla dane na wykresie. Włączam export, aby zapisać wykres w .png i .jpeg i wydrukować również. Wdrażając go na ripple emulator, eksport działa idealnie, ale kiedy wdrażam go na moim android device, to nie działa. Poniżej znajduje się część kodu, w której włączono eksport.Eksport na płótno js nie działa na urządzeniu z Androidem

var chart = new CanvasJS.Chart("container", { 
      zoomEnabled: true, 
      zoomType: "xy", 
      animationEnabled: true, 
      animationDuration: 2000, 
      exportEnabled: true, 
// all other chart code 
}); 

Aktualizacja 1:

function drawChart(data) 
      { 
       var chart = new CanvasJS.Chart("container", { 
        zoomEnabled: true, 
        zoomType: "xy", 
        animationEnabled: true, 
        animationDuration: 2000, 
        exportEnabled: true, 
        exportFileName: "Column Chart", 
        title: { 
         text: "Energy vs Date Time" 
        }, 
        axisY: { 
         title: "EnergykWh", 
         interlacedColor: "#F8F1E4", 
         tickLength: 10, 
         suffix: "k", 
        }, 
        legend: { 
         cursor: "pointer", 
         itemclick: function (e) { 
          if (typeof (e.dataSeries.visible) === "undefined" || e.dataSeries.visible) { 
           e.dataSeries.visible = false; 
          } else { 
           e.dataSeries.visible = true; 
          } 
          e.chart.render(); 
         } 
        }, 
        dataPointWidth: 20, 
        data: [{ 
         //legendText: "EngergykWh", 
         showInLegend: true, 
         type: 'column', 
         //xValueType: "dateTime", 
         xValueFormatString: "DD/MMM/YYYY h:mm TT", 
         //xValueFormatString: "YYYY-MM-DD hh:mm:ss TT", 
         showInLegend: true, 
         name: "series1", 
         legendText: "EnergykWh", 
         dataPoints: data       
        }] 
       }); 

       chart.render(); 
      } 

Aktualizacja 2:

Poniżej znajdują się zdjęcia z informacją i linkiem wersji OS urządzeń z systemem Android, na którym próbowałem

enter image description here

enter image description here

Galaxy j7 2015

Nie wiem, co jest głównym problemem tego. Każda pomoc będzie bardzo ceniona.

+0

Jakiej przeglądarki używasz? – Beevk

+0

Używam Google Chrome, ale eksport działa tylko w przeglądarce, a nie na żadnym urządzeniu z Androidem. – faisal1208

+0

Masz na myśli chrom na Androida, prawda? Działa dobrze na moim urządzeniu z Androidem. – Beevk

Odpowiedz

2

Po kliknięciu opcji pobierania canvasJS używa atrybutu pobierania HTML5, aby uruchomić pobieranie, co działa dobrze w przeglądarkach, które go obsługują.

Jednak po dotknięciu tego samego łącza w aplikacji Cordova, widok internetowy, w którym działa, nie wie, jak postępować z plikami do pobrania. Dlatego nic się nie dzieje.

Wygląda na to, że możesz włączyć tę funkcję samodzielnie, dodając niestandardową aplikację Java do aplikacji. Niestety nie jestem programistą Java dla Androida, ale ten problem może ci pomóc - Download File inside WebView

+0

Jak korzystać z 'CanvasJS' w' Cordova'? – faisal1208

6

Nie ma Menedżera pobierania w utworzonym widoku sieciowym, więc musisz ręcznie obsługiwać funkcję pobierania. Istnieją dwa sposoby na pobranie pliku ze strony internetowej.

1. Za pomocà Android Download Manager

przeglądarka internetowa 2.Using otwarte od WebView (które wewnętrznie używa Android Download Manager)

wymaganego zezwolenia zawiera WRITE_EXTERNAL_STORAGE

Następnie ustawić download-listener dla webview.

webView.setDownloadListener(new DownloadListener(){ 
    public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength){ 
     //for downloading directly through download manager 
     Request request = new Request(Uri.parse(url)); 
     request.allowScanningByMediaScanner(); 
     request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); 
     request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "download"); 
     DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); 
     dm.enqueue(request); 
    } 
}); 

sprawdź poniższe linki, aby uzyskać więcej informacji: Link 1, Link2, Link 3, Link4

+0

Jak korzystać z canvasJS in cordova? – faisal1208

0

Ten plugin powinny pomóc zaoszczędzić swój wizerunek jako pobranie pliku.

Prodvided Twój płótno "myCanvas":

Canvas2Image.saveAsPNG(myCanvas, width, height) 

lub

Canvas2Image.saveAsJPEG(myCanvas, width, height) 
+0

Jak korzystać z 'CanvasJS' w' Cordova'? – faisal1208

Powiązane problemy