* Add time=mtime option to postsparkline.

master
joey 2007-08-12 09:19:20 +00:00
parent 522416b18a
commit 2e1670a821
4 changed files with 34 additions and 10 deletions

View File

@ -21,6 +21,13 @@ sub preprocess (@) { #{{{
return ""; return "";
} }
if (! exists $params{time} || $params{time} ne 'mtime') {
$params{timehash} = \%IkiWiki::pagectime;
}
else {
$params{timehash} = \%IkiWiki::pagemtime;
}
if (! exists $params{formula}) { if (! exists $params{formula}) {
return "[[postsparkline ".gettext("missing formula")."]]"; return "[[postsparkline ".gettext("missing formula")."]]";
} }
@ -42,14 +49,15 @@ 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)}; my @data=eval qq{IkiWiki::Plugin::postsparkline::formula::$formula(\\\%params, \@list)};
if ($@) { if ($@) {
return "[[postsparkline error $@]]"; return "[[postsparkline error $@]]";
} }
delete $params{pages};
delete $params{formula};
delete $params{ftime};
return IkiWiki::Plugin::sparkline::preprocess(%params, return IkiWiki::Plugin::sparkline::preprocess(%params,
map { $_ => "" } reverse @data); map { $_ => "" } reverse @data);
} # }}} } # }}}
@ -63,7 +71,7 @@ sub perfoo ($@) {
my $count=0; my $count=0;
my @data; my @data;
foreach (@_) { foreach (@_) {
$cur=$sub->($IkiWiki::pagectime{$_}); $cur=$sub->($params->{timehash}->{$_});
if (defined $prev) { if (defined $prev) {
if ($prev != $cur) { if ($prev != $cur) {
push @data, "$prev,$count"; push @data, "$prev,$count";
@ -114,7 +122,7 @@ sub interval ($@) {
my $max=$params->{max}; my $max=$params->{max};
my @data; my @data;
for (my $i=1; $i < @_; $i++) { 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; last if --$max <= 0;
} }
return @data; return @data;

3
debian/changelog vendored
View File

@ -21,8 +21,9 @@ ikiwiki (2.6) UNRELEASED; urgency=low
* The patch also adds dcterms:creator to rss items that have a known author. * The patch also adds dcterms:creator to rss items that have a known author.
* Support pagespec "functions" with no parameters, like included() in the * Support pagespec "functions" with no parameters, like included() in the
conditional plugin. 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 ikiwiki (2.5) unstable; urgency=low

View File

@ -16,8 +16,8 @@ statistics about a set of pages, such as posts to a blog.
# usage # usage
All options aside fron the `pages`, `max`, and `forumla` options are passed All options aside fron the `pages`, `max`, `formula`, and `time` options
on to the sparkline plugin. are passed on to the sparkline plugin.
You don't need to specify any data points (though you can if you want to). 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 Instead, data points are automatically generated based on the creation
@ -36,11 +36,14 @@ Available forumlae:
* `peryear` - Each point represents a day; the height represents how * `peryear` - Each point represents a day; the height represents how
many posts were made that year. 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 # adding formulae
Additional formulae can be added without modifying this plugin by writing Additional formulae can be added without modifying this plugin by writing
plugins that register functions in the plugins that register functions in the
`IkiWiki::Plugin::postsparkline::formula` namespace. These functions will `IkiWiki::Plugin::postsparkline::formula` namespace. These functions will
receive on input a reference to a hash of parameters, and a sorted list of 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 pages, and should return a list of data points for the sparkline plugin.
the sparkline plugin.

View File

@ -2,6 +2,18 @@ Feel free to post your ideas for todo and [[wishlist]] items here, as well
as any [[patches|patch]]. If it seems more like a bug in the existing code, 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. 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 [[inline pages="todo/* and !todo/done and !link(todo/done) and
!link(patch) and !link(wishlist) and !todo/*/*" !link(patch) and !link(wishlist) and !todo/*/*"
feedpages="created_after(todo/supporting_comments_via_disussion_pages)" feedpages="created_after(todo/supporting_comments_via_disussion_pages)"