No idea at all about the technical details, but an improved Statistics page would be a great tool -> that's a great way to graphically demonstrate the activity of a given wiki. Guillaume On 16/10/2007, Marius Dumitru Florea <[email protected]> wrote:
Hi all,
The statistics page needs improvement. See http://jira.xwiki.org/jira/browse/XE-37 for a brief introduction. I propose we take the following steps:
1) Extend the xwiki core api with:
package com.xpn.xwiki.api;
/** * Statistics api */ public class StatsService extends Api{ /** * Retrieve all-time statistics for top pages * * @param action Can be "view", "save", etc. * @param space The space from which to consider pages. If space is the empty string or null then the whole wiki is considered. * @param count The number of page stats to retrieve. * * @return a list of document stats */ List<DocumentStats> getTopPages(String action, String space, int count){} List<DocumentStats> getMonthTopPages(String action, String space, Date month, int count){} List<DocumentStats> getDayTopPages(String action, String space, Date day, int count){}
/** * Retrieve all-time statistics for top contributors * * @param space The space in which to look for contributions. If space is the empty string or null then the whole wiki is considered. NOTE: currently the database stores statistics regarding only the whole wiki (e.g. the number of saves a user has made in the entire wiki, but not at space level). To implement space-level contributor statistics I need to consider page history, which is time-consuming (e.g. for each page in space, for each history entry ...). I go for offering (at least for the moment) user stats only at wiki level by removing this parameter. * @param count The number of user stats to retrieve * * @return The list of user stats */ List<VisitStats> getTopContributors(String space, int count){} List<VisitStats> getMonthTopContributors(String space, Date month, int count){} List<VisitStats> getDayTopContributors(String space, Date day, int count){}
/** * Retrieve the evolution of the specified activity over a period of time * * @param action Can be "view", "save", etc. * @param docOrSpace The (full)name of a document or space or the empty string / null for the whole wiki * @param startDay The start date * @param endDay The end date * @param dayInterval The sample rate (e.g. at every 2 days) * * @return A map of (date, action count) pairs. */ Map<Date, Integer> getActivityPerDay(String action, String docOrSpace, Date startDay, Date endDay, int dayInterval){} Map<Date, Integer> getActivityPerMonth(String action, String docOrSpace, Date startMonth, Date endMonth, int monthInterval){} Map<Date, Integer> getActivityPerYear(String action, String docOrSpace, Date startYear, Date endYear, int yearInterval){} }
2) Add in the com.xpn.xwiki.api.XWiki the following method:
public StatsService getStatsService(){}
3) Extend the com.xpn.xwiki.stats.api.XWikiStatsService with:
List<DocumentStats> getTopPages(String action, String space, int count, XWikiContext context){}
List<DocumentStats> getMonthTopPages(String action, String space, Date month, int count, XWikiContext context){}
List<DocumentStats> getDayTopPages(String action, String space, Date day, int count, XWikiContext context){}
List<VisitStats> getTopContributors(String space, int count, XWikiContext context){}
List<VisitStats> getMonthTopContributors(String space, Date month, int count, XWikiContext context){}
List<VisitStats> getDayTopContributors(String space, Date day, int count, XWikiContext context){}
Map<Date, Integer> getActivityPerDay(String action, String docOrSpace, Date startDay, Date endDay, int dayInterval, XWikiContext context){}
Map<Date, Integer> getActivityPerMonth(String action, String docOrSpace, Date startMonth, Date endMonth, int monthInterval, XWikiContext context){}
Map<Date, Integer> getActivityPerYear(String action, String docOrSpace, Date startYear, Date endYear, int yearInterval, XWikiContext context){}
4) Adjust the com.xpn.xwiki.stats.impl.XWikiStatsServiceImpl
5) In com.xpn.xwiki.api.XWiki there are 2 methods related to statistics:
* getCurrentMonthXWikiStats * getRefererText
We could duplicate this methods in the StatsService and deprecate them in XWiki.
6) Currently the xwiki chart macro doesn't support hidden (aka not visible in page) data sources. This is how the char macro is used now:
{chart:type=time|source=type:table;table_number:4;...}
I propose to extend the macro to allow the following usage:
{chart:type=time|source=type:table;...} {table} | Series1 | Series2 2001-2 | 181.8 | 129.6 2001-3 | 167.3 | 123.2 2001-4 | 153.8 | 117.2 {table} {chart}
This extension consists in: * add chart macro's content to the parameters map given to the data source * adjust the TableDataSource to use this content when no table_number is specified
7) Create the xwiki-platform-applications/statistics application to host the statistics related pages. Different stats will be displayed using special panels that can be inserted into a page (see http://llunati.xwiki.com/xwiki/bin/view/Albatross/PanelInPage for a sample). I propose to use the Panels space for this pages (e.g use the path src/main/resources/Panels). Vincent could help me with this.
8) Create the Stats page (aka the UI). The Stats page is now in the XWiki space, meaning it is not accessible for the regular user (event when the statistics module is enabled). I don't really like this. I like more how jira.xwiki.org shows me its stats even when I'm not logged in. In the future, I think it would be great if the users could see page/space/wiki stats much the same they see now the xwiki code of the page (e.g. Show > Stats). For the moment I propose to make only a single stats page (XWiki.Stats).
That's all. WDYT? -Marius
_______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs