X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/89673afc6b75bdbf1f0f3d98841c6397a89f99c4..376944cb026945ab597db01eb1e3aea4fa320007:/IkiWiki/Plugin/postsparkline.pm?ds=sidebyside

diff --git a/IkiWiki/Plugin/postsparkline.pm b/IkiWiki/Plugin/postsparkline.pm
index 2bc93088d..9e885741e 100644
--- a/IkiWiki/Plugin/postsparkline.pm
+++ b/IkiWiki/Plugin/postsparkline.pm
@@ -3,7 +3,7 @@ package IkiWiki::Plugin::postsparkline;
 
 use warnings;
 use strict;
-use IkiWiki;
+use IkiWiki 2.00;
 
 sub import { #{{{
 	IkiWiki::loadplugin('sparkline');
@@ -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")."]]";
 	}
@@ -37,21 +44,31 @@ sub preprocess (@) { #{{{
 	my @list;
 	foreach my $page (keys %pagesources) {
 		next if $page eq $params{page};
-		if (pagespec_match($page, $params{pages}, $params{page})) {
+		if (pagespec_match($page, $params{pages}, location => $params{page})) {
 			push @list, $page;
 		}
 	}
 	
-	@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;