0

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
                }

            });
4

2 に答える 2

1

別の結果セットを追加するだけです:

// 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
});
于 2010-08-06T18:55:42.583 に答える
0

大まかに言うと、itor_PerfQuery.pl への呼び出しの結果を拡張して、追加の系列データを含める必要があります。次に、「結果」変数を多次元配列にして追加データをサポートし、それに応じて結果を入力する現在の xml の「検索」ループを更新する必要があります。コードの残りの部分は、 flot が拡張されたデータセットをプロットできる必要があるため、同じままにする必要があります。flot の例のレビューが役立つと思います。幸運を祈ります。

于 2010-08-06T18:52:28.133 に答える