谷歌图表上的奇怪行为

时间:2013-12-11 19:31:59

标签: javascript jquery python django google-visualization

我有一张图表有两个视图,第一个视图:6个月,第二个:12个月。所有这两个视图应该具有相同的数据,但实际上它们没有。

首先,让我告诉你我的打印屏幕:

Obs。:它是葡萄牙语,所以我最后会放一些字幕。

所以,这是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);
});

屏幕截图明确表示有什么问题。所以,如果你曾经遇到过这个问题,那么你就是有帮助的人。我会很有意思的。谢谢你!

1 个答案:

答案 0 :(得分:2)

您似乎正在为不同的时间间隔创建不同的数据集:

  • 如果interval为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