X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=contrib%2Fcollection3%2Flib%2FCollectd%2FGraph%2FType%2FGenericStacked.pm;h=c5114a8019ddd3bed411343649adb9ede404d76b;hb=9d15d1058b93acb7be041934acfe76548539041a;hp=ab95ee2f3f145c6bfdf735e158315f69f053f22a;hpb=22bb251996a1b114197ad47b85d818a2962ddf0e;p=collectd.git diff --git a/contrib/collection3/lib/Collectd/Graph/Type/GenericStacked.pm b/contrib/collection3/lib/Collectd/Graph/Type/GenericStacked.pm index ab95ee2f..c5114a80 100644 --- a/contrib/collection3/lib/Collectd/Graph/Type/GenericStacked.pm +++ b/contrib/collection3/lib/Collectd/Graph/Type/GenericStacked.pm @@ -1,5 +1,20 @@ package Collectd::Graph::Type::GenericStacked; +# Copyright (C) 2008,2009 Florian octo Forster +# +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free Software +# Foundation; only version 2 of the License is applicable. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +# details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + use strict; use warnings; use base ('Collectd::Graph::Type'); @@ -62,6 +77,23 @@ sub getRRDArgs } } + my $stacking = $obj->{'stacking'}; + if ($stacking) + { + if ($stacking =~ m/^(no|false|off|none)$/i) + { + $stacking = 0; + } + else + { + $stacking = 1; + } + } + else # if (!$stacking) + { + $stacking = 1; + } + if (defined $obj->{'rrd_vertical'}) { push (@ret, '-v', $obj->{'rrd_vertical'}); @@ -101,7 +133,7 @@ sub getRRDArgs { $ds_name_len = length ($names[$i]); } - + # Escape colons _after_ the length has been checked. $names[$i] =~ s/:/\\:/g; @@ -111,34 +143,45 @@ sub getRRDArgs "DEF:max${i}=${filename}:${data_source}:MAX"); } - for (my $i = @$idents - 1; $i >= 0; $i--) + if ($stacking) { - if ($i == (@$idents - 1)) + for (my $i = @$idents - 1; $i >= 0; $i--) { - push (@ret, - "CDEF:cdef${i}=avg${i}"); + if ($i == (@$idents - 1)) + { + push (@ret, + "CDEF:cdef${i}=avg${i},UN,0,avg${i},IF"); + } + else + { + my $j = $i + 1; + push (@ret, + "CDEF:cdef${i}=avg${i},UN,0,avg${i},IF,cdef${j},+"); + } } - else + + for (my $i = 0; $i < @$idents; $i++) { - my $j = $i + 1; + my $type_instance = $idents->[$i]{'type_instance'}; + my $color = '000000'; + if (exists $colors->{$type_instance}) + { + $color = $colors->{$type_instance}; + } + + $color = get_faded_color ($color); + push (@ret, - "CDEF:cdef${i}=cdef${j},avg${i},+"); + "AREA:cdef${i}#${color}"); } } - - for (my $i = 0; $i < @$idents; $i++) + else # if (!$stacking) { - my $type_instance = $idents->[$i]{'type_instance'}; - my $color = '000000'; - if (exists $colors->{$type_instance}) + for (my $i = @$idents - 1; $i >= 0; $i--) { - $color = $colors->{$type_instance}; + push (@ret, + "CDEF:cdef${i}=avg${i}"); } - - $color = get_faded_color ($color); - - push (@ret, - "AREA:cdef${i}#${color}"); } for (my $i = 0; $i < @$idents; $i++)