2016-05-30 2 views
0

Wenn ich die Daten zwischen dem 1. Februar und dem 28. Februar auswähle, zeigt die Google-Visualisierung die Daten von März statt von Februar an.Goole Visualisierung DateRangeFilter Datenproblem. Datenkonflikt zwischen Februar und März

Screenshot

Der Code unten weist und Daten- und Steuertabelle Wrapper.

google.load('visualization', '1', {packages:['corechart','controls','table'], callback:drawChart}); 

Js Fiddle Link

mir bitte helfen, eine Lösung für diese zu finden.

Vielen Dank im Voraus.

Antwort

0

versuchen die neuere Bibliothek, loader.js vs jsapi

scheint hier gut zu funktionieren ...

google.charts.load('current', { 
 
    callback: function() { 
 
    var data = new google.visualization.DataTable(); 
 
    data.addColumn('date','OrderDate'); 
 
    data.addColumn('number','Order_Qty'); 
 
    data.addRows([ 
 
     [new Date(2014,0,1),100], 
 
     [new Date(2014,0,3),120], 
 
     [new Date(2014,0,30),110], 
 
     [new Date(2014,1,1),170], 
 
     [new Date(2014,1,10),180], 
 
     [new Date(2014,1,25),110], 
 
     [new Date(2014,2,1),170], 
 
     [new Date(2014,2,14),170], 
 
     [new Date(2014,2,20),170], 
 
     [new Date(2014,3,12),170], 
 
     [new Date(2014,3,16),170], 
 
     [new Date(2014,3,13),170] 
 
    ]); 
 

 

 
    var table_Chart = new google.visualization.ChartWrapper({ 
 
     'chartType': 'Table', 
 
     'containerId': 'table_div', 
 
     'options': {}, 
 
     'view': {'columns':[0, 1]} 
 
    }); 
 

 
    var slider_Date = new google.visualization.ControlWrapper({ 
 
     'controlType': 'DateRangeFilter', 
 
     'containerId': 'filter_date_div_Date', 
 
     'options': { 
 
      'filterColumnIndex':'0' 
 
     } 
 
    }); 
 

 
    new google.visualization.Dashboard(document.getElementById('dashboard_div')) 
 
    .bind([slider_Date],[table_Chart]) 
 
    .draw(data); 
 
    }, 
 
    packages: ['controls', 'table'] 
 
});
<script src="https://www.gstatic.com/charts/loader.js"></script> 
 
<div id="dashboard_div"> 
 
    <div id="filter_date_div_Date"></div> 
 
    <div id="table_div"></div> 
 
</div>

+0

Dank @WhiteHat, es funktioniert ... –

0

Kurzfristige Lösung für die .clone() und .toDataTable() Problem mit der Live-Version der Visualisierung.

Clone Usage:

prev: newDatatable = oldDatatable.clone();

jetzt: newDatatable = cloneDataTable (oldDatatable);

ToDatatableUsage:

prev: newDatatable = oldDataView.toDatatable();

jetzt: newDatatable = convertDataViewToDataTable (oldDataView);

Funktionen:

function cloneDataTable(dataTable) { 
    var newDataTable = dataTable.clone(); 
    for (var c = 0; c < dataTable.getNumberOfColumns(); c++) { 
     if (dataTable.getColumnType(c) == 'datetime' || dataTable.getColumnType(c) == 'date') { 
      for (var r = 0; r < dataTable.getNumberOfRows() ; r++) { 
       newDataTable.setValue(r, c, dataTable.getValue(r, c)); 
      } 
     } 
    } 
    return newDataTable; 
} 

function convertDataViewToDataTable(dataView) { 
    var newDataTable = dataView.toDataTable(); 
    for (var c = 0; c < dataView.getNumberOfColumns(); c++) { 
     if (dataView.getColumnType(c) == 'datetime' || dataView.getColumnType(c) == 'date') { 
      for (var r = 0; r < dataView.getNumberOfRows(); r++) { 
       newDataTable.setValue(r, c, dataView.getValue(r, c)); 
      } 
     } 
    } 
    return newDataTable; 
} 

hoffe, das hilft ... J