Добавить еще одну серию к существующему сюжету с помощью flot - PullRequest
0 голосов
/ 06 августа 2010

Мне нужно знать, как я могу легко добавить еще одну серию к существующему графику, используя Flot.

Вот как я сейчас строю одну серию:

function sendQuery() {
    var host_name = $('#hostNameInput').val();
    var objectName = $('#objectNameSelect option:selected').text();
    var instanceName = $('#instanceNameSelect option:selected').text();
    var counterName = $('#counterNameSelect option:selected').text();
    $.ajax({
        beforeSend: function () {
            $('#loading').show();
        },
        type: "GET",
        url: "http://okcmondev102/cgi-bin/itor_PerfQuery.pl?machine=" + host_name + "&objectName=" + objectName + "&instanceName=" + instanceName + "&counterName=" + counterName,
        dataType: "XML",
        success: function (xml) {
            var results = new Array();
            var counter = 0;


            var $xml = $.xmlDOM(xml);
            $xml.find('DATA').each(function () {
                results[counter] = new Array(2);
                results[counter][0] = $(this).find('TIMESTAMP').text();
                results[counter][1] = $(this).find('VALUE').text();
                counter++;
            });

            plot = $.plot($("#resultsArea"), [{
                data: results,
                label: host_name
            }], {
                series: {
                    lines: {
                        show: true
                    }
                },
                xaxis: {
                    mode: "time",
                    timeformat: "%m/%d/%y %h:%S%P"
                },
                colors: ["#000099"],
                crosshair: {
                    mode: "x"
                },
                grid: {
                    hoverable: true,
                    clickable: true
                }

            });

Ответы [ 2 ]

1 голос
/ 06 августа 2010

Вы можете просто добавить другой набор результатов:

// build two data sets
var dataset1 = new Array();
var dataset2 = new Array();

var $xml = $.xmlDOM(xml);
$xml.find('DATA').each(function(){
  // use the time stamp for the x axis of both data sets
  dataset1[counter][0] = $(this).find('TIMESTAMP').text();
  dataset2[counter][0] = $(this).find('TIMESTAMP').text();
  // use the different data values for the y axis
  dataset1[counter][1] = $(this).find('VALUE1').text();
  dataset2[counter][2] = $(this).find('VALUE2').text();
  counter++;
});

// build the result array and push the two data sets in it
var results = new Array();
results.push({label: "label1", data: dataset1});
results.push({label: "label2", data: dataset2});

// display the results as before
plot = $.plot($("#resultsArea"), results, {
  // your display options
});
0 голосов
/ 06 августа 2010

На высоком уровне, результат вашего вызова в itor_PerfQuery.pl должен быть расширен, чтобы включить дополнительные данные серии. Затем вы захотите сделать вашу переменную «results» многомерным массивом для поддержки дополнительных данных, и вам нужно будет обновить текущий xml-цикл «find», который соответственно заполняет результаты. Остальная часть кода должна оставаться такой же, как flot должен иметь возможность построить расширенный набор данных. Я думаю, что обзор примера flot поможет вам. Желаем удачи.

...