Почему этот фрагмент кубизма JS не сгенерирует график из Graphite?

Я пытаюсь создать график, используя этот фрагмент JS. Кажется, у меня проблема с metrics2.

если я задаю metrics2 таким образом, то в моем браузере отображается график.

[1]

 var metrics2 = [
     graphite.metric("servers.<HOSTNAME>-1_domain_local.load.load.shortterm"), 
     graphite.metric("servers.<HOSTNAME>-2_domain_local.load.load.shortterm"), 
     graphite.metric("servers.<HOSTNAME>-3_domain_local.load.load.shortterm"), 
     graphite.metric("servers.<HOSTNAME>-4_domain_local.load.load.shortterm")
 ]

Однако в следующем коде js график НЕ отображается в моем браузере.

[2]

var metrics = [];
graphite.find("servers.*.load.load.shortterm", function(error, results) {
    for (var i = 0; i < results.length; i++) {
        metrics[i] = results[i];
    }
});

var metrics2 = metrics.map(function(i) { 
    return graphite.metric(i);
});

Это фрагмент кубизма, который вызывает metrics2 и генерирует график.

d3.select(".span4").call(function(div) {
    a = metrics.length;
    div.select(".charts2").call(context.axis().orient("top"));
    div.select(".charts2").selectAll(".horizon")
        .data(metrics2)
        .enter().append("div")
        .attr("class", "horizon")
        .call(context.horizon().height(30));
});

Почему [2] на самом деле не сгенерирует график? что-то с массивом metrics2?


person akshatpradhan    schedule 30.10.2012    source источник


Ответы (1)


Я понял. Эта часть JS сделает все необходимое.

graphite.find("servers.???-in-?-*.load.load.shortterm", function(error, results) {
    var metrics = results.map(function(i) {
        return graphite.metric(i);
    });

    d3.select(".span4").call(function(div) {
        div.select(".charts2").call(context.axis().orient("top"));
        div.select(".charts2").selectAll(".horizon")
            .data(metrics)
            .enter().append("div")
            .attr("class", "horizon")
            .call(context.horizon().height(30));
    });
});
person akshatpradhan    schedule 30.10.2012