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")."]]";
}
}
}
- @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 $@]]";
}
+ delete $params{pages};
+ delete $params{formula};
+ delete $params{ftime};
return IkiWiki::Plugin::sparkline::preprocess(%params,
map { $_ => "" } reverse @data);
} # }}}
my $count=0;
my @data;
foreach (@_) {
- $cur=$sub->($IkiWiki::pagectime{$_});
+ $cur=$sub->($params->{timehash}->{$_});
if (defined $prev) {
if ($prev != $cur) {
push @data, "$prev,$count";
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;
* The patch also adds dcterms:creator to rss items that have a known author.
* Support pagespec "functions" with no parameters, like included() in the
conditional plugin.
+ * Add time=mtime option to postsparkline.
- -- Joey Hess <joeyh@debian.org> Sat, 11 Aug 2007 19:26:14 -0400
+ -- Joey Hess <joeyh@debian.org> Sun, 12 Aug 2007 05:17:23 -0400
ikiwiki (2.5) unstable; urgency=low
# usage
-All options aside fron the `pages`, `max`, and `forumla` options are passed
-on to the sparkline plugin.
+All options aside fron the `pages`, `max`, `formula`, and `time` options
+are passed on to the sparkline plugin.
You don't need to specify any data points (though you can if you want to).
Instead, data points are automatically generated based on the creation
* `peryear` - Each point represents a day; the height represents how
many posts were made that year.
+The `time` parameter has a default value of "ctime", since forumae use
+the creation times of pages by default. If you instead want
+them to use the modification times of pages, set it to "mtime".
+
# adding formulae
Additional formulae can be added without modifying this plugin by writing
plugins that register functions in the
`IkiWiki::Plugin::postsparkline::formula` namespace. These functions will
receive on input a reference to a hash of parameters, and a sorted list of
-pages (newest pages first), and should return a list of data points for
-the sparkline plugin.
+pages, and should return a list of data points for the sparkline plugin.
as any [[patches|patch]]. If it seems more like a bug in the existing code,
post it to [[bugs]] instead. Link items to [[todo/done]] when done.
+[[if test="enabled(postsparkline)"
+then="""
+How long will it take your todo item to be fixed? Well...
+[[postsparkline pages="todo/* and !todo/done and !link(todo/done) and
+!link(patch) and !link(wishlist) and !todo/*/*" max=120
+formula=perday style=bar barwidth=2 barspacing=1 height=13]]
+this many are being added per day
+[[postsparkline pages="todo/* and !todo and link(todo/done)" max=120
+formula=perday time=mtime style=bar barwidth=2 barspacing=1 height=13]]
+while this many are being fixed.
+"""]]
+
[[inline pages="todo/* and !todo/done and !link(todo/done) and
!link(patch) and !link(wishlist) and !todo/*/*"
feedpages="created_after(todo/supporting_comments_via_disussion_pages)"