wiki:TracJsGanttPlugin

Version 19 (modified by Chris Nelson, 13 years ago) (diff)

Document goal option

Trac jsGantt plugin

Description

A plugin which allows Trac ticket data to be displayed in a jsGantt chart in a wiki page. Tasks and milestones are links to the corresponding ticket or milestone.

Configurable field names allow integration with other plugins such as MasterTicketsPlugin (for dependencies), SubticketsPlugin (for parent/child relationships) and TimingAndEstimationPlugin (for estimated and total hours).

Usage

[[TracJSGanttChart(sample=1)]] displays the sample project from jsgantt.com. [[TracJSGanttChart(milestone=Test)]] displays all the tickets in the Test milestone.

jsGantt sample tasks in a wiki page

Arguments

The chart display can be controlled with a number of macro arguments:

Argument Version Description Default
format Initial display format: day, week, month, or quarter day
sample Display sample tasks (1) or not (0) 0
res Show resource column (1) or not (0) 1
dur Show duration colunn (1) or not (0) 1
comp Show percent complete column (1) or not (0) 1
caption Caption to place to right of tasks: None, Caption, Resource, Duration, %Complete Resource
startDate Show start date column (1) or not (0) 1
endDate Show end date column (1) or not (0) 1
dateDisplay Date display format: 'mm/dd/yyyy', 'dd/mm/yyyy', or 'yyyy-mm-dd' 'mm/dd/yyyy'
openLevel Number of levels of tasks to show. 1 = only top level task. 999
colorBy Field to use to choose task colors. Each unique value of the field will have a different color task. Other likely useful values are owner and milestone but any field can be used. priority
root When using something like Subtickets plugin to maintain a tree of tickets and subtickets, you may create a Gantt showing a ticket and all of its descendants with root=<ticket#>. The macro uses the configured parent field to find all descendant tasks and build an id= argument for Trac's native query handler.

Multiple roots may be provided like root=1|12|32.

When used in a ticket description or comment, root=self will display the current ticket's descendants.
goal 0.9 When using something like MasterTickets plugin to maintain ticket dependencies, you may create a Gantt showing a ticket and all of its predecessors with goal=<ticket#>. The macro uses the configured succ field to find all predecessor tasks and build an id= argument for Trac's native query handler.

Multiple goals may be provided like goal=1|12|32.

When used in a ticket description or comment, goal=self will display the current ticket's predecessors.
lwidth The width, in pixels, of the table of task names, etc. on the left of the Gantt.
showdepShow dependencies (1) or not (0)1
userMap0.8Map user IDs to full names (1) or not (0).1
omitMilestones0.8Show milestones for displayed tickets (0) or only those specified by milestone= (1)0

Site-wide defaults for macro arguments may be set in trac.ini. option.<opt> overrides the built-in default for <opt> from the table above.

All other macro arguments are treated as TracQuery specification (e.g., milestone=MS1|MS2) to control which tickets are displayed.

Installation

  1. Install globally with:
      sudo easy_install http://trac-hacks.org/svn/tracjsganttplugin/0.11/
    
  2. Enable the plugin by updating TracIni file (..../trac.ini) as follows:
      [components]
      tracjsgantt.* = enabled
    
  3. Configure the plugin at its own configuration section, placed into 'trac.ini' file as follows:
      [trac-jsgantt]
      # To work with Timing and Estimation for percent complete
      fields.estimate = estimatedhours
      fields.worked = totalhours
      # Each unit in estimate is 1/8 of a day
      days_per_estimate = 0.125
      # To work with Master Tickets for dependencies
      fields.pred = blockedby
      fields.succ = blocking
      # To work with Subtickets for parent/child relationships
      fields.parent = parents
      #
      # To work with ChildTickets plugin
      # parent_format = #%s
      #
      # Custom fields for start and due dates
      fields.start = userstart
      fields.finish = userfinish
      #
      date_format = %Y-%m-%d
      milestone_type = milestone
    
  4. Restart web server on command line:
        $ sudo /etc/init.d/apache2 restart
    

Configuration details

TracJsGanttPlugin is intended to be flexible enough to get data from various plugins by configuring the field names for those plugins in trac.ini. It is known to work with TimingAndEstimationPlugin (for estimated and total hours), MasterTicketsPlugin (for FS dependencies), and SubticketsPlugin for parent/child relationships. Custom fields for start and finish date are also supported.

Tasks are colored based on ticket attributes. When colored by priority colors are consistent with the colors used in Trac reports. Other coloring choices (e.g., by milestone or owner) use arbitrary, unique colors.

All of the fields.* items name custom fields which may contain data for the Gantt.

When estimate and worked are both configured, the plugin attempts to display (100 * worked/estimate) as the percent complete. The example works with TimingAndEstimationPlugin. Alternatively, if percent is configured, the plugin attempts to display it as the percent complete (it should be a number from 0 to 100). If none of those are configured, all tasks will be marked as 0% complete.

When pred and succ are configured the plugin uses them to determine the task dependencies. The example works with MasterTicketsPlugin. If these fields are not configured, no dependencies are shown.

When parent is configured, it is the field which holds the parent ticket number. The example works with Subtickets. If this field is not configured, no parent/child relationship will be displayed. If it is configured, the Gantt can be collapsed by the user to show or hide subtasks. (parent_format determines the format of the content of the parent field. Use "%s" (default) for SubticketsPlugin, "#%s" for ChildTicketsPlugin.)

When start and finish are configured, the plugin uses them to set task start and finish dates. The date_format field is a Python strptime() format specifier which describes the contents of start and finish. If these fields are not configured, all tasks end today and have a 1-day duration.

When estimate and finish are both configured (and start is not configured or not on the ticket), the plugin attempts to determine the start of the task from finish and estimate as start = finish - estimate with consideration for weekends and hours per day.

The milestone_type may be used to have a custom ticket type show up as milestones on the chart. If this field is not specified, only Trac milestones are displayed as milestones.

Bugs/Feature Requests

Existing bugs and feature requests for TracJsGanttPlugin are here.

If you have any issues, create a new ticket.

Known issues

  1. Only one chart can be displayed per page.

Planned enhancements

  1. Allow configuration of default task duration.
  2. Display a legend of task colors and their meaning (e.g., which milestone or owner they represent).
  3. Allow some tasks to be open or closed by default.
  4. Figure out finish date if start and estimate are provided.

Source & Download

You can check out TracJsGanttPlugin from here using Subversion, or browse the source with Trac.

Download the zipped source from [download:tracjsganttplugin here].

Recent Changes

17888 by rjollos on 2020-12-03 05:44:28
Trac-jsGantt 1.2.0.0dev: Fix typo in section name
17707 by rjollos on 2020-04-29 19:05:19
Trac-jsGantt 1.2.0.0dev: Handle milestone with no tickets

Refs #13627.

17638 by jun66j5 on 2019-12-19 18:34:55
Trac-jsGantt 1.2.0.0dev: make compatible with Trac 1.4 (closes #13713)
(more)

Author/Contributors

Author: ChrisNelson
Maintainer: ChrisNelson
Contributors: rjollos, bof, Matt Sable

Attachments (1)

Download all attachments as: .zip