]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/postsparkline.pm
Merge branch 'master' of ssh://git.kitenet.net/srv/git/ikiwiki.info
[git.ikiwiki.info.git] / IkiWiki / Plugin / postsparkline.pm
index e4fe9c154d0fa95420243c0f4bf8c65ab2187322..9e885741e073bc4ded2e3947366ea6265d8249db 100644 (file)
@@ -21,6 +21,13 @@ sub preprocess (@) { #{{{
                return "";
        }
 
+       if (! exists $params{time} || $params{time} ne 'mtime') {
+               $params{timehash} = \%IkiWiki::pagectime;
+       }
+       else {
+               $params{timehash} = \%IkiWiki::pagemtime;
+       }
+
        if (! exists $params{formula}) {
                return "[[postsparkline ".gettext("missing formula")."]]";
        }
@@ -42,16 +49,26 @@ sub preprocess (@) { #{{{
                }
        }
        
-       @list = sort { $IkiWiki::pagectime{$b} <=> $IkiWiki::pagectime{$a} } @list;
+       @list = sort { $params{timehash}->{$b} <=> $params{timehash}->{$a} } @list;
 
-       delete $params{pages};
-       delete $params{formula};
        my @data=eval qq{IkiWiki::Plugin::postsparkline::formula::$formula(\\\%params, \@list)};
        if ($@) {
                return "[[postsparkline error $@]]";
        }
+
+       if (! @data) {
+               # generate an empty graph
+               push @data, 0 foreach 1..($params{max} / 2);
+       }
+
+       my $color=exists $params{color} ? "($params{color})" : "";
+
+       delete $params{pages};
+       delete $params{formula};
+       delete $params{ftime};
+       delete $params{color};
        return IkiWiki::Plugin::sparkline::preprocess(%params, 
-               map { $_ => "" } reverse @data);
+               map { $_.$color => "" } reverse @data);
 } # }}}
 
 sub perfoo ($@) {
@@ -63,7 +80,7 @@ sub perfoo ($@) {
        my $count=0;
        my @data;
        foreach (@_) {
-               $cur=$sub->($IkiWiki::pagectime{$_});
+               $cur=$sub->($params->{timehash}->{$_});
                if (defined $prev) {
                        if ($prev != $cur) {
                                push @data, "$prev,$count";
@@ -114,7 +131,7 @@ sub interval ($@) {
        my $max=$params->{max};
        my @data;
        for (my $i=1; $i < @_; $i++) {
-               push @data, $IkiWiki::pagectime{$_[$i-1]} - $IkiWiki::pagectime{$_[$i]};
+               push @data, $params->{timehash}->{$_[$i-1]} - $params->{timehash}->{$_[$i]};
                last if --$max <= 0;
        }
        return @data;