Code Monkey home page Code Monkey logo

tracstats's Introduction

TracStats

The TracStats project is a plugin for the trac project management tool.

The TracStats plugin adds a "Stats" tab to the trac project. Underneath this tab can be found statistics about changesets, wiki pages, and tickets.

Some features include:

  • Recent activity (last 30 days) showing top 10 developers, projects, and paths within the repository.

  • Detailed statistics of source code development:

    • Total files by time
    • Commits by time, author, month, day of week, hour of day
    • Recent commits
    • Activity by time, author, project, filetype, change type
    • Most active paths, files
    • Commit cloud (built from checkin comments)
  • Detailed statistics of Trac wiki pages:

    • Total pages by time
    • Edits by author
    • Latest wiki pages changed
    • Most active wiki pages
    • Largest wiki pages
  • Detailed statistics of Trac tickets:

    • Open tickets by time
    • Tickets by author, component
    • Most active tickets
    • Oldest open tickets
    • Latest tickets reported, changed
  • Drill down by author or path within the repository for more information.

The TracStats plugin supports Trac installations with SQLite, MySQL, and PostgreSQL database backends.

The TracStats plugin has been tested with Subversion, Mercurial, and Git version control systems.

Installation

The TracStats plugin can be installed using standard:

$ pip install tracstats

Or, grab the sources and build using:

$ python setup.py install

Configuration

It is configured in the trac.ini file by enabling and configuring:

[components]
tracstats.* = enabled

The STATS_VIEW permission is used to control access to the statistics pages.

In addition, an optional "project root" within your repository can be configured as the base for all projects and source code statistics:

[stats]
root = path/to/projects

Troubleshooting

If you use Git (i.e. the GitPlugin for Trac) and are not able to see any of the code statistics, you likely need to configure it to cache the repository to make it work:

[git]
cached_repository = true
persistent_cache = true

You might need to run trac-admin <project-env> repository resync <reponame> after the change.

tracstats's People

Contributors

acetous avatar eblot avatar icco avatar mdkendall avatar miihael avatar mrjbq7 avatar petamem avatar stoecker avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tracstats's Issues

ie 8 - graphs don't display

The graphs look great in firefox but ie they don't appear.


Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Timestamp: Wed, 16 Mar 2011 18:25:55 UTC

Message: 'parentNode' is null or not an object
Line: 1
Char: 1026
Code: 0
URI: http://192.168.1.4:8080/trac/xxxxx/chrome/stats/excanvas.pack.js

Message: 'parentNode' is null or not an object
Line: 1
Char: 1026
Code: 0
URI: http://192.168.1.4:8080/trac/xxxxx/chrome/stats/excanvas.pack.js

Setup a demo web site

Please, might we have somewhere a publicly available demonstration web site (or trac forge using the plugin), so we can build an opinion about the tool without having to install it?

Internal Error on Code Pane (table tmp_revision already exists)

Similar to issue #1 I just created, the code link worked for at least one view and then failed with:
OperationalError: table tmp_revision already exists

Trace:
File "C:\Python25\Lib\site-packages\Trac-0.11.5-py2.5-win32.egg\trac\web\main.py", line 444, in _dispatch_request
dispatcher.dispatch(req)
File "C:\Python25\Lib\site-packages\Trac-0.11.5-py2.5-win32.egg\trac\web\main.py", line 205, in dispatch
resp = chosen_handler.process_request(req)
File "build\bdist.win32\egg\tracstats\web_ui.py", line 105, in process_requestFile "build\bdist.win32\egg\tracstats\web_ui.py", line 246, in _process_codeFile "C:\Python25\Lib\site-packages\Trac-0.11.5-py2.5-win32.egg\trac\db\util.py", line 60, in execute
return self.cursor.execute(sql)
File "C:\Python25\Lib\site-packages\Trac-0.11.5-py2.5-win32.egg\trac\db\sqlite_backend.py", line 58, in execute
args or [])
File "C:\Python25\Lib\site-packages\Trac-0.11.5-py2.5-win32.egg\trac\db\sqlite_backend.py", line 50, in _rollback_on_error
return function(self, _args, *_kwargs)

System Information:
User Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3
Trac: 0.11.5
Python: 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)]
setuptools: 0.6c9
SQLite: 3.3.4
pysqlite: 2.3.2
Genshi: 0.6dev-r0
mod_python: 3.3.1
Pygments: 1.2.2
Subversion: 1.6.4 (r38063)
jQuery: 1.4.2

As I mentioned in the other ticket, we do use a custom field for our ticket (a radio option), but otherwise it is a very vanilla install.

Plugin crashes on viewing the ticket pane

File "build/bdist.linux-x86_64/egg/trac/web/main.py", line 513, in _dispatch_request
  dispatcher.dispatch(req)
File "build/bdist.linux-x86_64/egg/trac/web/main.py", line 235, in dispatch
  resp = chosen_handler.process_request(req)
File "build/bdist.linux-x86_64/egg/tracstats/web_ui.py", line 156, in process_request
  result = self._process_tickets(req, cursor, where, data)
File "build/bdist.linux-x86_64/egg/tracstats/web_ui.py", line 981, in _process_tickets
  stats.append({'name': summary, 
File "build/bdist.linux-x86_64/egg/trac/util/datefmt.py", line 63, in to_datetime
  raise TypeError('expecting datetime, int, long, float, or None; got %s' %

We're using trac stats 0.3 (github head from august 3rd...), trac 0.12, with mysql backend, and have just shy of 5000 tickets.

Trac 0.12
Genshi 0.6
MySQL server: "5.0.77", client: "5.0.44", thread-safe: 1
MySQLdb 1.2.1
Python 2.4.3 (#1, Sep 3 2009, 15:37:37) [GCC 4.1.2 20080704 (Red Hat 4.1.2-46)]
setuptools 0.6c5
Subversion 1.4.2 (r22196)
jQuery 1.4.2

Missing README.md in packaged 0.6

 easy_install --upgrade TracStats
install_dir /usr/local/lib/python2.6/dist-packages/
Searching for TracStats
Reading http://pypi.python.org/simple/TracStats/
Best match: TracStats 0.6
Downloading https://pypi.python.org/packages/16/51/4c65557d03282239c86ab37969d789d87823195e1ecd5fea6ec60733c179/TracStats-0.6.tar.gz#md5=012808788d4e998e309b07b3723e0e32
Processing TracStats-0.6.tar.gz
Running TracStats-0.6/setup.py -q bdist_egg --dist-dir /tmp/easy_install-ALOJu5/TracStats-0.6/egg-dist-tmp-OZxdc1
error: /tmp/easy_install-ALOJu5/TracStats-0.6/README.md: No such file or directory

Add mercurial support

Mercurial doesn't use the node change/revisions tables. It does its own thing. We store almost all our code in a couple dozen hg repositories, and would love to have them included. Git would be nice, too, but we don't use it yet.

Support for mulitple repositories

Currently if I click on a revision link, it points to the default repository instead of the repository the revision belongs to in Trac 0.12. Is there any way to fix this?

OverflowError: normalized days too large to fit in a C int

While doing a GET operation on /stats, Trac issued an internal error:
"OverflowError: normalized days too large to fit in a C int"

I've installed your plugin and clicked on the new tab "stats".

Request parameters:
{'path': '/'}

User agent: Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1

System Information

|| '''Trac''' || 1.0 ||
|| '''Babel''' || 0.9.5 ||
|| '''Bitten''' || 0.7dev-r1008 ||
|| '''CustomFieldAdmin''' || 0.2.5 ||
|| '''Genshi''' || 0.6 (without speedups) ||
|| '''GIT''' || 1.7.2.5 ||
|| '''mod_wsgi''' || 3.3 (WSGIProcessGroup WSGIApplicationGroup %{GLOBAL}) ||
|| '''Pygments''' || 1.3.1 ||
|| '''pysqlite''' || 2.4.1 ||
|| '''Python''' || 2.6.6 (r266:84292, Dec 26 2010, 22:48:11) [[br]] [GCC 4.4.5] ||
|| '''pytz''' || 2012d ||
|| '''RPC''' || 1.1.2-r11148 ||
|| '''setuptools''' || 0.6c11 ||
|| '''SQLite''' || 3.7.3 ||
|| '''Subversion''' || 1.6.12 (r955767) ||
|| '''jQuery''' || 1.7.2 ||

Enabled Plugins

  • AutocompleteUsers: 0.4.1
  • Bitten: 0.7dev-r1008
  • Default-CC: 0.1-r5293
  • IniAdmin: 0.2
  • NavAdd: 0.1
  • sslauthentication: 0.1
  • TracAccountManager: 0.4dev-r11184
  • TracCustomFieldAdmin: 0.2.5
  • TracFLSNotifierUpdater: 0.1
  • TracFLSWikiListener: 0.1
  • TracForms: 0.5dev-r10924
  • TracHackergotchi: 1.0
  • TracMasterTickets: 3.0.2
  • TracNoAnonymous: 2.3
  • TracStats: 0.4
  • TracUserManagerPlugin: 0.4
  • TracXMLRPC: 1.1.2-r11148

Python Traceback

Traceback (most recent call last):
  File "build/bdist.linux-x86_64/egg/trac/web/main.py", line 497, in _dispatch_request
    dispatcher.dispatch(req)
  File "build/bdist.linux-x86_64/egg/trac/web/main.py", line 214, in dispatch
    resp = chosen_handler.process_request(req)
  File "build/bdist.linux-x86_64/egg/tracstats/web_ui.py", line 161, in process_request
    result = self._process(req, cursor, where, data)
  File "build/bdist.linux-x86_64/egg/tracstats/web_ui.py", line 233, in _process
    td = datetime.timedelta(seconds=age)
OverflowError: normalized days too large to fit in a C int

STATS_VIEW permissions not visible after installing through pip, default Trac installation.

I've installed a Trac instance following these rules:

https://trac.edgewall.org/wiki/TracDev/DevelopmentEnvironmentSetup

Then I install tracstats using pip on the Python, which is for this environment. Following these rules:

https://github.com/trac-hacks/tracstats

(I also did the configuration part)

After restarting Trac, there's no STATS_VIEW permission visible under Admin settings. tracstats seems reachable by running the Python interpreter and typing import tracstats. So it seems like it's installed.

Trac version: Trac 1.5.4.dev0

Subdirectories for Projects list

It would be useful to be able to select a sudirectory or subdirectories where to search for projects.

We, for instance, do not have our projects listed under the root directory of the repository so the stats only list "depot".

Trac 1.0 Postgres not filtering by date

I'm using Trac 1.0.1, and my stats don't seem to filter date (the last 30 days). They seem to give a snapshot of all development since ever. I am using a postgres backend, having migrated from sqlite.

I saw a #Fixme comment in the code, is there any action planned?

allow for flexible widths

There seem to be some hard coded px values for widths of div + td elements.
Would be good if widths were dynamic.

Problem with French language on Trac (?)

Hi,
We are using your Trac plugin and we have a problem with some URLs:

The error is "KeyError: 'lun'".
I think it's coming from days in french language: 'lun' is for lundi (like Mon for Monday).

I can see the variable day='lun' and days={'Wed': 3, 'Sun': 0, 'Fri': 5, 'Tue': 2, 'Mon': 1, 'Thu': 4, 'Sat': 6}.

Do you know a procedure to get those URLs working ?

Thank for your help.

Julien

Code View Crash

When clicking on the "Code" (/stats/code) link, and after waiting a few seconds, I am presented with this stack trace:

Traceback (most recent call last):
File "/usr/lib/python2.5/site-packages/Trac-0.11.6-py2.5.egg/trac/web/api.py", line 
377, in send_error
'text/html')
File "/usr/lib/python2.5/site-packages/Trac-0.11.6-py2.5.egg/trac/web/chrome.py", 
line 733, in render_template
message = req.session.pop('chrome.%s.%d' % (type_, i))
File "/usr/lib/python2.5/site-packages/Trac-0.11.6-py2.5.egg/trac/web/api.py", line 
195, in __getattr__
value = self.callbacks[name](self)
File "/usr/lib/python2.5/site-packages/Trac-0.11.6-py2.5.egg/trac/web/main.py", line 
265, in _get_session
return Session(self.env, req)
File "/usr/lib/python2.5/site-packages/Trac-0.11.6-py2.5.egg/trac/web/session.py", 
line 160, in __init__
self.get_session(req.authname, authenticated=True)
File "/usr/lib/python2.5/site-packages/Trac-0.11.6-py2.5.egg/trac/web/session.py", 
line 176, in get_session
super(Session, self).get_session(sid, authenticated)
File "/usr/lib/python2.5/site-packages/Trac-0.11.6-py2.5.egg/trac/web/session.py",  
line 59, in get_session
(sid, int(authenticated)))
File "/usr/lib/python2.5/site-packages/Trac-0.11.6-py2.5.egg/trac/db/util.py", line 64, 
in execute
return self.cursor.execute(sql_escape_percent(sql), args)
File "/usr/lib/python2.5/site-packages/Trac-0.11.6-py2.5.egg/trac/db/util.py", line 64, 
in execute
return self.cursor.execute(sql_escape_percent(sql), args)
ProgrammingError: current transaction is aborted, commands ignored until end of 
transaction block"

Any idea what might be the issue here? Thanks!

View Improvements and General Feedback

These are all just ideas and feedback on some initial use of the plugin. Some of these may need to be their own issues, if desired. I don't know if these are feasible or would require a lot of effort, just trying to help :)

  1. The summary tab could be more exciting: that is, use some of those colorful graphs on the summary view as well, rather than or in addition to the simplified grayscale graph on top.

  2. Paths on the summary and code views can be quite long. Truncating them so that they fit in the designated column length would make the views flow better.

  3. Some of the top graphs, like "Total Files" and "Total Pages" are useful but represent values that are unlikely to go down significantly over time, meaning these graphs will be less & less useful. Presenting current information closer to the top may be a better choice, like commits by month on top instead.

  4. Presenting commits/month for the entire lifespan of the Trac instance is useful, but it would be nice to see more recent information also. Website activity over the last month, for example.

  5. Tying into 4 above, I don't know if this is feasible or not, but it would be nice to "tab" some graphs: display one graph with several tabs to change the data. Why present three separate graphs of "Commits by month, day of week, hour of day" when you could combine the three into one? I don't know if you can use AJAX or Javascript for that, or would have to reload the pages with "?status=accepted" parameters like Custom Queries do.

  6. In general, a more horizontal layout would be nice. The code view in particular is several pages long, but if there's horizontal room left over on the browser, why not let things stack up into columns? I'm no web developer, but you could probably add table columns or what-not that would gracefully go back to a 1-column view if the window is too narrow.

  7. Requesting these tables/graphs individually from Wiki articles would be useful. I could see a lot of people happy with the idea of a "commit activity over the last month" graph displayed on their home page, etc. This could be in the form of individual macros, like [[TotalFilesGraph]], or some central query macro, like [[GetGraph(TotalFiles)]]. This would probably be a lot of work, but could make stats usable in concise pieces rather than bombarding everything in one page.

  8. Some of the tables could also be pie graphs, like "Most active wiki pages." Label the graph with the stats of the top X categories, and it would probably be more illustrative.

  9. The "Commit cloud" in the Code view should have each word link to a search of commit history for that keyword. Essentially, each word in the cloud would link to "/search?q=KEYWORD&noquickjump=1&changeset=on" Probably tweak the CSS/etc so that it doesn't underline everything...

update about

This might be clearer than the current example for resync-ing:

trac-admin < yourprojenv > repository resync < reponame >

Thanks

Internal Error on Tickets Pane (no such column: ticket)

Installed plugin on Trac 0.11 and works fine except for tickets link, which gives an internal error:
OperationalError: no such column: ticket

Trace:
File "C:\Python25\Lib\site-packages\Trac-0.11.5-py2.5-win32.egg\trac\web\main.py", line 444, in _dispatch_request
dispatcher.dispatch(req)
File "C:\Python25\Lib\site-packages\Trac-0.11.5-py2.5-win32.egg\trac\web\main.py", line 205, in dispatch
resp = chosen_handler.process_request(req)
File "build\bdist.win32\egg\tracstats\web_ui.py", line 113, in process_requestFile "build\bdist.win32\egg\tracstats\web_ui.py", line 822, in _process_ticketsFile "C:\Python25\Lib\site-packages\Trac-0.11.5-py2.5-win32.egg\trac\db\util.py", line 60, in execute
return self.cursor.execute(sql)
File "C:\Python25\Lib\site-packages\Trac-0.11.5-py2.5-win32.egg\trac\db\sqlite_backend.py", line 58, in execute
args or [])
File "C:\Python25\Lib\site-packages\Trac-0.11.5-py2.5-win32.egg\trac\db\sqlite_backend.py", line 50, in _rollback_on_error
return function(self, _args, *_kwargs)

System Information:
User Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3
Trac: 0.11.5
Python: 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)]
setuptools: 0.6c9
SQLite: 3.3.4
pysqlite: 2.3.2
Genshi: 0.6dev-r0
mod_python: 3.3.1
Pygments: 1.2.2
Subversion: 1.6.4 (r38063)
jQuery: 1.4.2

We do use a custom field for our ticket (a radio option), but otherwise it is a very vanilla install.

Postgresql transaction aborted

We're running a old version of multirepos (waiting to do an upgrade to Ubuntu 10.04 at the same time we switch to 0.12). The backend is postgresql, 8.2 I think.

Here's what I get when I try to load the /stats page

Traceback (most recent call last):
  File "/usr/local/lib/python2.5/site-packages/Trac-0.12multirepos_r7684-py2.5.egg/trac/web/api.py", line 375, in send_error
    data, 'text/html')
  File "/usr/local/lib/python2.5/site-packages/Trac-0.12multirepos_r7684-py2.5.egg/trac/web/chrome.py", line 710, in render_template
    if not req.session or not int(req.session.get('accesskeys', 0)):
  File "/usr/local/lib/python2.5/site-packages/Trac-0.12multirepos_r7684-py2.5.egg/trac/web/api.py", line 198, in __getattr__
    value = self.callbacks[name](self)
  File "/usr/local/lib/python2.5/site-packages/Trac-0.12multirepos_r7684-py2.5.egg/trac/web/main.py", line 277, in _get_session
    return Session(self.env, req)
  File "/usr/local/lib/python2.5/site-packages/Trac-0.12multirepos_r7684-py2.5.egg/trac/web/session.py", line 157, in __init__
    self.get_session(req.authname, authenticated=True)
  File "/usr/local/lib/python2.5/site-packages/Trac-0.12multirepos_r7684-py2.5.egg/trac/web/session.py", line 173, in get_session
    super(Session, self).get_session(sid, authenticated)
  File "/usr/local/lib/python2.5/site-packages/Trac-0.12multirepos_r7684-py2.5.egg/trac/web/session.py", line 56, in get_session
    (sid, int(authenticated)))
  File "/usr/local/lib/python2.5/site-packages/Trac-0.12multirepos_r7684-py2.5.egg/trac/db/util.py", line 50, in execute
    return self.cursor.execute(sql_escape_percent(sql), args)
  File "/usr/local/lib/python2.5/site-packages/Trac-0.12multirepos_r7684-py2.5.egg/trac/db/util.py", line 50, in execute
    return self.cursor.execute(sql_escape_percent(sql), args)
InternalError: current transaction is aborted, commands ignored until end of transaction block

500 error on trac 0.12, python 2.4

I get a 500 error trying to load /stats/code.

Nov 12 16:42:19 ip-10-202-253-193 httpd[1500]: [warn] mod_fcgid: read data timeout in 40 seconds
Nov 12 16:42:19 ip-10-202-253-193 httpd[1500]: [error] [client 208.85.207.99] Premature end of script headers: trac.fcgi, referer: http://www.cominor.com/trac/stats

When I load a subpage of code, such as a developer page, it works fine. But the root code page always errors out.

MySQL problem

This plugin does not work with the MySQL:

Trac detected an internal error:
OperationalError: (1305, 'FUNCTION trac_estimateca.strftime does not exist')

958927 years and code not working

Using Trac version 1.1.1 and svn, tracstats reports 958927 years under summary for code.
Also the code link never returns. I have resynced and tried using the [stats] parameter.
Neither seemed to help.
Any suggestions?

Thanks,

Ignore certain paths in the repository

If for some reason svn:externals isn't an option or if you just like to ease deploying to production from your versioning system and put external libs in your main tree:

there should be an option to ignore certain paths so they do not count for statistics.

Code View & General Performance

Code view could be faster (discussed in #2).

Additionally, it may be a smart idea to cache these results/graphs and only regenerate them if there's new data. Ideally:

  1. If there's no cached results, generate manually
  2. Check to see if there's a new revision / ticket change / wiki edit (as appropriate)
  3. If there's no new changes, return the cached results
  4. If there ARE new changes, re-generate

That would prevent unnecessary load on the server over multiple requests/users.

Postgres problem

Got this when trying to access the stats:

Trac detected an internal error:
OperationalError: ERROR: function strftime(unknown, integer, unknown) does not exist LINE 2: select strftime('%Y-%W', time, 'unixepoch'), ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts.

System Information:

User Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1064 Safari/532.5

Trac: 0.11.7rc1
Python: 2.5.2 (r252:60911, Jan 24 2010, 15:24:24) [GCC 4.3.2]
setuptools: 0.6c11
pyPgSQL: 2.5.1
Genshi: 0.5.1
mod_wsgi: 2.5 (WSGIProcessGroup WSGIApplicationGroup %{GLOBAL})
Pygments: 0.10
Bitten: 0.6dev-r816
RPC: 1.0.6
Subversion: 1.5.1 (r32289)
jQuery: 1.4.2

i18n support

Compliments for a great first impression of this Trac plugin. I just gave it a shot at Trac 0.11 - just works, will do later on Trac 0.13dev.

I'll continue to explore it, but at first glance THE major show-stopper for my Trac application is missing German localization. Would you accept a contribution? I don't know, if I could make more than a patch stack, because I don't use Git and have not tested Git support in Mercurial yet. Apart from that I'd like to throw in my expertise on the subject as my time permits.

Add git support

when instaling tracstats with git repostories, (trac 0.12, two git repositories)
i got:

  • 0 years, 0 days, 0 hours of development
  • 0 authors, 0 revisions,

wiki pages and tickets are (obviously) fine.

I don't have much knowledge programming with python or trac but I'm willing to look into it if you someone can tell me where to start looking. and if possible a brief todo list/pointers.

map user names in history

It might be nice to map usernames in the history (like git's .mailmap feature) in case your repository commits have a single author identified by different names.

No code stats

I've got the plugin installed and I'm getting stats for tickets and wiki, however I'm getting no stats at all for code. Did I miss a step somewhere along the line?

I'm using Trac 0.12 with multiple repositories, with TracStats 0.3 (grabbed from github today).

I also spotted the following snippet in the readme:

In addition, an optional "project root" within your repository can be
configured as the base for all projects and source code statistics::

[stats]
root = path/to/projects

What form does the path take, eg url within trac, path on the file system, etc? How does this work with multiple repositories, as we have each of our projects in a separate repository?

Any interest in joining the trac-hacks organization?

Hi,

I'm an administrator for trac-hacks.org. We've created an organization on GitHub and are inviting authors of trac-hacks plugins to join the organization. Your repository could be transferred into the organization as described in the GitHub docs. You'd retain full control over the repository, but the hope is that it will be easier for users on GitHub to find trac-hacks plugins, such as yours, by viewing the trac-hacks organization.

In the future, if you choose to no longer maintain the plugin, the organization would be able to provide commit access to new developers. This would only be done with your permission, as has been the policy for plugins hosted on trac-hacks.org. If you've already decided to no longer maintain the plugin, we would particularly appreciate you transferring the plugin to the trac-hacks organization so that we can help find new maintainers for it.

Finally, creating the trac-hacks organization is a work in progress. I appreciate if you have any suggestions on how to best support the community of trac plugin developers on GitHub. More information can be found in the blog post.

Kind regards,
Ryan

(Apologies if I open a ticket against two of your plugins. I'm doing a manual search of GitHub to find Trac plugins and invite plugin authors; it's sometimes difficult to keep everything straight).

Incorrect component link in tickets view

The component links for the tickets in the "Most active tickets" section point to the wrong URL (the ticket and not the component query). The following patch fixes things:

diff --git a/tracstats/templates/tickets.html b/tracstats/templates/tickets.html
index d017883..075e7b0 100644
--- a/tracstats/templates/tickets.html
+++ b/tracstats/templates/tickets.html
@@ -137,7 +137,7 @@ $(document).ready(function()
 <py:for each="stat in active">
 <tr>
     <td width="50"><a href="${stat.url}">${stat.id}</a></td>
-    <td width="150"><a href="${stat.url}">${stat.component}</a></td>
+    <td width="150"><a href="${stat.url2}">${stat.component}</a></td>
     <td width="350">${stat.name}</td>
     <td width="75" align="right">${stat.count}</td>
     <td width="75" align="right">${stat.percent}%</td>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.