2013-12-11 163 views
0

我有一個圖表有兩個視圖,第一個視圖:6個月,第二個:12個月。所有這兩個視圖應該有相同的數據,但實際上他們不這樣做。谷歌圖表上的奇怪行爲

首先,讓我告訴你打印屏幕我拿了:

實驗值:這是在葡萄牙,所以我把一些在字幕結束。

所以,這是12個月的圖表:

enter image description here

現在讓我們來看看6個月的圖表。那就是:

enter image description here

正如你可以清楚地看到,是不是顯示了6個月圖表中的最後三個月份爲12

讓我告訴你,安裝所有這些代碼的東西。 負責的代碼是這樣的:

var someEvolutionChart = {}; 

someEvolutionChart.container = document.getElementById('chart-div'); 

someEvolutionChart.setupChartData = function (objects) { 
    var items = [['Day', 'Visits', 'Received Calls']]; 
    if(objects['objects'].length < 1) { 
     items.push(['Some text', 0, 0]); 
     return items; 
    } 

    $.each(objects['objects'], function(index, val) { 
     items.push([val.date, val.visited, val.calls]); 
    }); 

    return items; 
}; 

someEvolutionChart.getMaxValue = function (objects) { 
    var max_value = 0; 

    $.each(objects['objects'], function(index, val) { 
     max_value = Math.max(max_value, val.visited, val.calls); 
    }); 

    return max_value; 
}; 

someEvolutionChart.setVAxisMax = function(value, options) { 
    options['vAxis']['maxValue'] = findMaxAxisValue(value, 0, false); 
}; 

/* The interval is the quantity of months, 6 and 12, but it starts from 0 to 5 and 0 to 11. */ 
function loadsomeEvolutionChart(interval){ 
    var days = 1000 * 60 * 60 * 24; 
    var months = days * 30; 

    var initial_date = new Date(); 
    initial_date = new Date(initial_date - (months * interval)); 
    var period = initial_date.getFullYear() + "-" + (initial_date.getMonth() + 1); 

    var spinner = new Spinner({ 
     'top': '100' 
    }).spin(someEvolutionChart.container); 

    var url = '/api/v1/.../?format=json&period__gte=' + period; 

    $.getJSON(url, someEvolutionChart.callback); 
} 

someEvolutionChart.callback = function (objects) { 
    var items = someEvolutionChart.setupChartData(objects); 
    var max_value = someEvolutionChart.getMaxValue(objects); 

    var data = google.visualization.arrayToDataTable(items); 

    var options = { 
     pointSize: 5, 
     height: 300, 
     chartArea: { width: "100%", left: 40, top: 20 }, 
     legend: { position: "bottom" }, 
     bar: { groupWidth: 50 }, 
     fontSize: 12, 
     vAxis: { 
      minValue: 0, 
      viewWindowMode: "explicit", 
      viewWindow: { min: 0 } 
     }, 
     hAxis: { }, 
     colors: [chart_color_scheme.blue, chart_color_scheme.brown] 
    }; 

    someEvolutionChart.setVAxisMax(max_value, options); 
    setHAxisFontSize(data, options); 

    var chart = new google.visualization.ColumnChart(someEvolutionChart.container); 
    chart.draw(data, options); 
}; 


$(".reload-chart").click(function(){ 
    var item_header = $(this).parent().parent().parent().find(".dropdown-toggle"); 
    item_header.html($(this).text() + ' <i class="icon-chevron-down"></i>'); 

    var interval = $(this).attr('data-interval'); 
    loadsomeEvolutionChart(interval); 
}); 

的屏幕抓圖是明確地說是什麼的問題。所以,如果你曾經經歷過這個問題,那麼你就是這個能幫助你的人。我會很高興。多謝!

+0

你從哪裏得到val.opportunity計算最大值? –

+0

數據被推送爲'val.date,val.visited,val.calls',最大值是從'val.visited,val.opportunity'計算出來的? –

+0

「對象」在12個月圖表的回調中看起來像什麼? 6個月圖表看起來如何? – asgallant

回答

2

看來你正在創建不同的時間間隔不同的數據集:

  • ,如果時間間隔爲0,你的數據源是url: /api/v1/.../?format=json&period__gte=2013-12
  • 如果間隔爲6您的數據源是url: /api/v1/.../?format=json&period__gte=2013-6
  • 如果間隔是12您的數據來源是url: /api/v1/.../?format=json&period__gte=2012-12。不同的一年。

我建立JSON文件「手動」,並與你的代碼生成的圖表具有相同的數據,所以問題的另一面:您要發送什麼作爲objects數據。

請參見圖表12和6的間隔7-12。 X軸上的數字應該是幾個月,但我不想花太多時間來完全正確。

enter image description here

enter image description here

+0

你的回答給了我一些什麼和什麼可能是問題的提示,但還不完全確定。我會做一些小徑,直到找到問題的中心。無論如何,現在Jurkovic感謝。 – Doug