* Add time=mtime option to postsparkline.
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Sun, 12 Aug 2007 09:19:20 +0000 (09:19 +0000)
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Sun, 12 Aug 2007 09:19:20 +0000 (09:19 +0000)
IkiWiki/Plugin/postsparkline.pm
debian/changelog
doc/plugins/postsparkline.mdwn
doc/todo.mdwn

index e4fe9c154d0fa95420243c0f4bf8c65ab2187322..6f7558bc44d2375afcfb3a6a38a7680fe3ffbb1b 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,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)};
        if ($@) {
                return "[[postsparkline error $@]]";
        }
+       delete $params{pages};
+       delete $params{formula};
+       delete $params{ftime};
        return IkiWiki::Plugin::sparkline::preprocess(%params, 
                map { $_ => "" } reverse @data);
 } # }}}
@@ -63,7 +71,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 +122,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;
index c6725a4a29bbae5b7586ef3db0390962b8a3e122..54ef280e3bd66469330d2958ccd2024655365b4d 100644 (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.
   * 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
 
index a85d7e82444d8ad94e77412c413f93272284baa1..da2e6830e83923547152da4c64b24bd3da1e12df 100644 (file)
@@ -16,8 +16,8 @@ statistics about a set of pages, such as posts to a blog.
 
 # 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
@@ -36,11 +36,14 @@ Available forumlae:
 * `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.
index b242871fc38ff43d79296a53088f0ad24325cfc3..a54c3c7f114f24838d0266f24b86042fda8fcfa4 100644 (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,
 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)"