﻿ticket	summary	type	release	owner	status	created	modified	_description	_reporter
9290	calendar vs milestones ?	task	0.11	Chris Nelson	assigned	2011-10-20T00:15:14+02:00	2020-05-01T06:51:13+02:00	"Hi,

does TracJsGanttPlugin allow to set ticket due dates using calendar rather than existing milestones ? If it does then where can I find some kind of a manual covering this ? If not then do you know a plug-in which add this feature ?

Best regards,
Denis"	d.e.serbin@…
12037	help request on how to display TracJsGantt in trac	task		Chris Nelson	new	2014-10-29T20:29:33+01:00	2014-10-29T20:43:49+01:00	"Hello,

I am sorry, this is only a support request... 

I installed and activated TracJsGantt in my trac project
but I cannot find right the command or menu entry to simply display a Gantt chart...
I followd all 4 steps described in the doc page http://trac-hacks.org/wiki/TracJsGanttPlugin#Installation but I'm missing the last step which could allow me to display the chart...

Many thanks in advance,

Best regards

Cyril"	cyril@…
12094	On 0.12 I get with all examples the error: AttributeError: 'Environment' object has no attribute 'db_query'	task	0.12	Chris Nelson	new	2014-12-05T14:06:56+01:00	2014-12-05T17:10:27+01:00	"Hello!
I get this error and maybe my environment has a problem?
I hope someone will give me a hint to solve this error.

Thanks a lot
Michael

{{{
2014-12-05 14:02:16,016 Trac[query] DEBUG: Query SQL: SELECT t.id AS id,t.priority AS priority,t.owner AS owner,t.milestone AS milestone,t.description AS description,t.status AS status,t.summary AS summary,t.type AS type,t.time AS time,t.changetime AS changetime,priority.value AS priority_value,`blocking`.value AS `blocking`,`blockedby`.value AS `blockedby`
FROM ticket AS t
  LEFT OUTER JOIN ticket_custom AS `blocking` ON (id=`blocking`.ticket AND `blocking`.name='blocking')
  LEFT OUTER JOIN ticket_custom AS `blockedby` ON (id=`blockedby`.ticket AND `blockedby`.name='blockedby')
  LEFT OUTER JOIN enum AS priority ON (priority.type='priority' AND priority.name=priority)
ORDER BY COALESCE(priority.value,'')='',CAST(priority.value AS integer),t.id
2014-12-05 14:02:16,032 Trac[formatter] ERROR: Macro TracJSGanttChart(root=self) failed:
Traceback (most recent call last):
  File ""build/bdist.linux-x86_64/egg/trac/wiki/formatter.py"", line 720, in _macro_formatter
    return macro.process(args, in_paragraph=True)
  File ""build/bdist.linux-x86_64/egg/trac/wiki/formatter.py"", line 304, in process
    text = self.processor(text)
  File ""build/bdist.linux-x86_64/egg/trac/wiki/formatter.py"", line 291, in _macro_processor
    text)
  File ""build/bdist.linux-x86_64/egg/tracjsgantt/tracjsgantt.py"", line 739, in expand_macro
    tasks = self._add_tasks(options)
  File ""build/bdist.linux-x86_64/egg/tracjsgantt/tracjsgantt.py"", line 672, in _add_tasks
    self.tickets = self._query_tickets(options)
  File ""build/bdist.linux-x86_64/egg/tracjsgantt/tracjsgantt.py"", line 328, in _query_tickets
    rawtickets = self.pm.query(query_options, fields, self.req)
  File ""build/bdist.linux-x86_64/egg/tracjsgantt/tracpm.py"", line 1197, in query
    self.postQuery(options, tickets)
  File ""build/bdist.linux-x86_64/egg/tracjsgantt/tracpm.py"", line 1093, in postQuery
    with self.env.db_query as db:
AttributeError: 'Environment' object has no attribute 'db_query'
}}}"	anonymous
11228	click on ticket raises a new browser window but we want a new tab page	enhancement		Chris Nelson	assigned	2013-07-17T14:13:32+02:00	2014-04-08T22:30:29+02:00	Is there an option to let the tickets appear as new tab in the browser? Raising a new browser window is unexpected behavior and confuses nearly all members of my team.	anonymous
8302	TracHoursPlugin integration	enhancement	0.11	Chris Nelson	new	2010-12-14T06:16:28+01:00	2011-07-12T10:00:41+02:00	"I'm currently maintaining the TracHoursPlugin, and plan to do a bunch of improvements. I'd really like to have integration with a Gantt chart.

I'm not sure what would be involved here, but I'd be willing to do some work on it down the road if you'd support the integration."	Ryan J Ollos
8530	scroll bar for the height TracJsGantt	enhancement	0.11	Chris Nelson	new	2011-02-22T18:04:54+01:00	2020-05-01T06:51:13+02:00	Is it possible to have a scroll bar for the height? My lists are large and if I scroll with Trac I can't see the header of columns anymore.	didley@…
8532	Current date as default in the overview	enhancement	0.11	Chris Nelson	assigned	2011-02-22T18:17:38+01:00	2020-05-01T06:51:13+02:00	Is it possible to show in the vRightTable the current date as default? I mean the blue column. At the start of Gantt it starts always with the earliest date. 	didley@…
8704	param for width of each column	enhancement	0.11	Chris Nelson	new	2011-04-14T11:43:06+02:00	2011-07-12T21:34:17+02:00	it would be nice, if the size of every column could be changed 	vogel00s
8786	display not only planned space of time as chart bar, but also really spent space of time	enhancement	0.12	Chris Nelson	new	2011-05-11T09:47:16+02:00	2020-05-01T06:51:13+02:00	"The chart displays bars for the planned time of a ticket. This lets us have a pretty look at what is the schedule which is very cool (like this plugin in general!).

To have a fast viewable comparison what we actually got in reality, I wish there was another bar for each ticket showing the space of time when the ticket really has been worked on.

 - This is likely the time range between 'accepted' and 'closed'.
 - Then both bars, for plan and reality, will be located in the same chart line.
 - Plan bar and reality bar may overlap each other, partially or completely, depending on how much plan and reality differ.
 - Note, if a ticket is reopened, we'll get more than one bar for the 'worked time'.
 - Another way for finding the time spaces of real work may be by analyzing the timestamps and values of field 'hours' (""Add hours"" of TimingAndEstimationPlugin)."	falkb
8967	Option to automatically size the table of task names	enhancement	0.11	Chris Nelson	new	2011-07-09T07:32:40+02:00	2013-07-03T09:23:59+02:00	Would it be possible to have an option to automatically size the table of task names to fit the largest one? Perhaps `lwidth = auto` as a syntax for the option.	Ryan J Ollos
8979	[PATCH] macro config=xxx argument, trac.ini option lookup with inheritance	enhancement	0.11	Chris Nelson	new	2011-07-12T21:29:50+02:00	2020-05-01T06:51:13+02:00	"As discussed shortly in #8704, here is a patch providing inheritable option
lookup and defaulting.

'''NOTE:''' depends on the newly created TracMacroConfigPlugin. I'm unsure whether that dependency can somehow be handled automatically in setup.py - there seem to be some options related to that, but I have not yet played with them.

With this patch applied, the configuration can contain something like this:

{{{
[trac-jsgantt]
option.inherit = base
base.userMap = 0
base.omitMilestones = 1
base.dateDisplay = yyyy-mm-dd
mini.inherit = base
mini.startDate = 0
mini.endDate = 0
mini.res = 0
mini.dur = 0
mini.comp = 0
mini.lwidth = 256
}}}

A macro call with only TracQuery arguments, or other but not all macro arguments, will then take its full option list from the ''option.xxx'' option set, which immediately inherits them all from ''base.xxx'' for the sake of exposition.

Additionally, a macro call written as {{{[[TracJSGanttChart(config=mini)]]}}}, will take its options from the ''mini.xxx'' settings (which also inherit some from ''base.xxx'')

It is even possible to write something like {{{[[TracJSGanttChart(config=mini|foobar)]]}}}
to get ''multiple inheritance'' from ''mini.xxx'', and from ''foobar.xxx'' when missing from the ''mini.'' path. Such multiple inheritance is also supported within trac.ini for the ''xxx.inherit = a|b'' options.

(tested under 0.11.7 and 0.12.2)
"	Patrick Schaaf
8987	Color overdue tasks in red	enhancement	0.11	Chris Nelson	assigned	2011-07-14T09:36:07+02:00	2014-06-24T15:28:07+02:00	Do you think it is possible to extend the `colorBy` option to include some specific status such as `overdue` (red) and `duetoday` (yellow)?	Ryan J Ollos
8989	Show nicer error message when there is a ticket with multiple parents	enhancement	0.11	Chris Nelson	new	2011-07-14T12:06:55+02:00	2013-08-04T18:51:04+02:00	"Here is the error I saw when I tried to include a ticket in a milestone displayed in the !TracJsGanttChart and that ticket had multiple parents (via SubticketsPlugin).

[[Image(TracJsGanttWithMultipleParents.png)]]

It might not be immediately obvious why this error is occurring, and that you can't have any tickets with multiple parents, so I propose to display a more user friendly error for this condition.

I can provide a patch this weekend."	Ryan J Ollos
9010	Add macro options to show columns for fields.estimate and fields.worked	enhancement	0.11	Chris Nelson	new	2011-07-21T19:22:19+02:00	2011-07-27T21:03:28+02:00	"Might it be possible to add columns for `fields.estimate` and `fields.worked` (when configured in `trac.ini`)? The default values could be 0 to preserve existing behavior.

If you are open to accepting a patch for this, I would take a crack at it this weekend. It seems easy enough since it should be possible to follow the implementation pattern that was used for the `resource`, `duration` and `percent complete`."	Ryan J Ollos
9015	[Patch] Show % complete for a milestone	enhancement	0.11	Chris Nelson	new	2011-07-22T21:53:44+02:00	2011-10-25T14:04:25+02:00	"The % complete measure shown for a milestone on Trac's roadmap page is calculated as (num closed tickets) / (num total tickets) * 100. This seems like a reasonable starting point for estimating % complete for a milestone, with the potential for more sophisticated calculations to be done in the future, such as using the %complete info for all tickets associated with a milestone.

Therefore I've modified the chart to show in the % complete column for milestones, the value calculated by (num closed tickets) / ( num total tickets) * 100.

In the future, the private method `__get_milestone_percent_complete` could be extended to support other calculations of % completion for a milestone.

This patch satisfies my needs, but if you want me to add options to control this behavior or make some other modifications, please let me know.

This patch also goes well with another patch I intend to make - determine the start and end dates for a milestone using the earliest start date and latest due date of any tickets associated with the milestone. Or perhaps, just make this change for the start date and continue to use the due date for a milestone. I still need to look more closely at this to work out a proposed plan.

Note: I also removed the comment ''FIXME - perhaps a closed ticket should always be 100% done.'' because it looked like this had already been implemented.

This change also ties in with #8947. If there is an option to group tickets under milestones, then especially in that case it make sense to show % complete for that milestone."	Ryan J Ollos
9042	Display unscheduled tasks at the end of the milestone	enhancement	0.11	Chris Nelson	assigned	2011-07-27T20:52:31+02:00	2012-03-23T18:52:07+01:00	"Currently, unscheduled tasks have their start and due dates set to the current day. This is causing a bit of a problem for my group because it is not immediately obvious whether a tasks is unscheduled or actually has a start and due date set to today. We have many tasks that span a single day, so this issues arises quite a bit.

Although not a perfect solution, I think it would be less confusing to have tasks with no start and due date appear at the end of the milestone. It might also be useful to have them appear with some kind of marker, like the diamond that is displayed for a milestone, rather than the tasks having a span of 1 day.

Hoping to get some feedback and ideas about how to best deal with this."	Ryan J Ollos
9442	"Don't show tickets with ""negative"" resolutions in the chart"	enhancement	0.11	Chris Nelson	new	2011-10-26T03:46:39+02:00	2011-11-14T09:17:21+01:00	"We use the Gantt chart to display all tickets associated with a milestone and it would be nice to have tickets with any ""negative"" resolution hidden by default (e.g. ''duplicate'', ''invalid'', ...). I guess this probably needs to be made an option."	Ryan J Ollos
9666	Is it possible to account for close date?	enhancement	0.11	Chris Nelson	new	2012-01-05T21:35:15+01:00	2012-10-24T00:03:52+02:00	"It would be nice if the actual scheduled end date for a task would be something in the form of:

MAX ( scheduled_end, closed ? closed_date : today )

So that ongoing tickets are represented as such."	dinu
9667	Feature to auto-scroll gantt	enhancement	0.11	Chris Nelson	assigned	2012-01-05T21:39:36+01:00	2013-04-08T17:08:18+02:00	"Is it possible to add a parameter to trigger initial horizontal scroll of the gantt? I don't know what the best approach would be, I'm wanting something like ""Show me 2 days in the past by default""... it would be nice if there would be something like initialScroll=-2 (where the number represents the number of days either in the future or in the past where the graphs origin should be set)."	dinu
9668	Hide completed tasks?	enhancement	0.11	Chris Nelson	new	2012-01-05T21:43:25+01:00	2012-06-29T21:32:00+02:00	"Would it be possible to add a parameter/frontend switch that would allow toggling display of completed tasks?

The only problem I see would be ticket hierarchies, but I see trac plugins enforce that all children must be closed before a ticket can be closed. So it should be fairly trivial."	anonymous
9759	Static resources shouldn't be loaded for every page	enhancement	0.11	Chris Nelson	new	2012-02-03T21:07:12+01:00	2012-02-06T19:42:02+01:00	"The static resources of this macro are loaded for every page, even on pages that the macro is not used. For example, on a ticket page (with no instances of the macro), I see the following:

{{{
<link rel=""stylesheet"" href=""/chrome/tracjsgantt/jsgantt.css"" type=""text/css"" />
<link rel=""stylesheet"" href=""/chrome/tracjsgantt/tracjsgantt.css"" type=""text/css"" />
}}}

{{{
</script><script type=""text/javascript"" src=""/chrome/tracjsgantt/jsgantt.js"">
}}}

Also, there are two components that must be enabled for this plugin, but I can't see any circumstance in which only one component could be enabled without enabling the other.

[[Image(TwoComponents.png)]]

My suggestions are:
 * Don't implement `IRequestFilter`. Add the stylesheets and scripts in `expand_macro`.
 * Inherit from `WikiMacroBase` rather than `Component`.

Dose that make sense, or am I missing something? I can try this out and provide a patch very shortly if it makes sense to you. I did the exact same cleanup for the NoteBoxPlugin recently in #9739, and had some discussion with hasienda about these issues."	Ryan J Ollos
9922	Add display filter option	enhancement	0.11	Chris Nelson	new	2012-03-23T18:48:04+01:00	2012-03-23T18:51:36+01:00	It is sometimes desirable to filter what tickets are displayed in a Gantt.  For example, a user could view (and schedule) a whole project but just want to see the tickets he or she is reponsible for.	Chris Nelson
9926	query for root and milestone	enhancement	0.12	Chris Nelson	new	2012-03-27T18:07:44+02:00	2012-07-20T16:10:54+02:00	"I'm using !ChildsTicketPlugin

I want to display all tickets for a milestone XXX and a special type with all childs.

Which parameter have I to use?

When I use for example `[[TracJSGanttChart(milestone=XXX, type=enhancement, etc)]]` it shows me only first level of tickets because I can't use the root parameter. If I would use the root parameter makes milestone no sense because I have to put in all numbers of tickets.

Is there a possibility to combine parameter in this way? "	didley@…
9983	Exclude filter for display doesn't work & Parent ticket should be always on Top of it's childs	enhancement	0.11	Chris Nelson	assigned	2012-04-20T13:50:43+02:00	2013-07-25T09:58:38+02:00	"If I want to display only open tickets with
{{{
display!=status:closed
}}}
The closed tickets are still displayed."	Rochi
10026	When start is empty, auto set start from blocked/predecessors.	enhancement	0.11	Chris Nelson	new	2012-05-11T11:08:43+02:00	2012-05-11T11:08:43+02:00	If issues has blocked/blocking relation, and the successors do not set start time but just estimatehours. Auto set start time depending on predecessors.	jiunshian@…
10234	Support storing calculated schedule	enhancement	0.11	Chris Nelson	new	2012-08-06T14:17:49+02:00	2020-05-01T06:51:13+02:00	"The TracPM component currently only does ""soft"" scheduling.  It will add calc_start and calc_finish fields to the list of tickets it is passed but it doesn't provide anyway to save that schedule back to the database so, for example, a report can be sorted by those calculated dates.

The user can currently configure `fields.start` and `fields.finish` to specify the fields where the user-specified start or finish (due) dates are stored.  In retrospect, this may be a bad choice of names.  These configuration values might be better used for the calculated dates.

It seems I can:

 * Rename the existing fields to `user_*` or `due_*` or something and user `start` and `finish` for the calculated values.  Users would have to adjust their configuration.
 * Keep `start` and `finish` the same and use `scheduled_*` or `calculated_*` for the output of the scheduler. I think this makes less sense.

I may also review PM literature to see if there's an industry standard way to distinguish these two types of dates.
"	Chris Nelson
10579	[PATCH] colorBy=status should use fixed colours	enhancement		Chris Nelson	new	2012-10-30T16:16:19+01:00	2012-10-30T16:54:58+01:00	"This little patch sets fixed colours if you choose {{{ colorBy=status }}} as chart option. It's a user request here because they were confused and didn't realize why the colours changed from time to time, and they wished they can accociate a certain state with certain fixed colours. (Remember, currently {{{ _buildMap(colorBy) }}} traverses the tickets and simply increments the colour in the map by the states it finds first on its way through the tickets). Note, I use a hard-coded state<->colour mapping as desired here:

{{{
#!diff
Index: tracjsganttplugin/0.11/tracjsgantt/tracjsgantt.py
===================================================================
--- tracjsganttplugin/0.11/tracjsgantt/tracjsgantt.py	(revision 12265)
+++ tracjsganttplugin/0.11/tracjsgantt/tracjsgantt.py	(working copy)
@@ -409,6 +410,16 @@
                     i = i + 1
                     self.classMap[t[field]] = i
 
+        def _buildStatusMap(field):
+            self.classMap = {}
+            self.classMap['new'] = 1
+            self.classMap['reopened'] = 1
+            self.classMap['assigned'] = 2
+            self.classMap['needs_work'] = 2
+            self.classMap['accepted'] = 4
+            self.classMap['testing'] = 0
+            self.classMap['closed'] = 3
+
         def _buildEnumMap(field):
             self.classMap = {}
             db = self.env.get_db_cnx()
@@ -427,6 +438,8 @@
             # Enums (TODO: what others should I list?)
             if options['colorBy'] in ['priority', 'severity']:
                 _buildEnumMap(colorBy)
+            elif options['colorBy'] in ['status']:
+                _buildStatusMap(colorBy)
             else:
                 _buildMap(colorBy)
 
}}}"	falkb
10580	Optimized resource leveling (if there are ticket dependencies)	enhancement		Chris Nelson	new	2012-10-30T16:35:10+01:00	2012-10-30T17:19:38+01:00	"Do you see a chance to improve the resource leveling this way?:

[[Image(optimRessourceLeveling.PNG)]]

This is a sketch one of my users gave me. He says the red ticket should rather be scheduled like the green ticket. This would extremely help to improve the planning he says."	falkb
10697	datetime of closed should set implicit enddate of ticket (if not explicitely given)	enhancement		Chris Nelson	new	2012-12-11T17:47:12+01:00	2012-12-11T17:53:04+01:00	"Most closed tickets here have no explicitely given enddate or startdate. They just align to its parent or to its milestone.

I wish in such case the timestamp of reaching the 'closed' state can implicitely set an enddate.

Don't know if it fits to the current approach of the system; if not valid, you can simply close this one with 'wontfix'."	falkb
11318	PATCH: ALAP scheduling uses remaininghours to compute finish of predecessor tickets	enhancement	1.0	Chris Nelson	new	2013-09-11T09:39:24+02:00	2013-09-11T09:39:24+02:00	"The official plugin code uses the planned (== ""estimate"") work hours for computing the finish of predecessor tickets in ALAP mode (as late as possible).

This is a problem here where we want to have a Gantt chart plan that shows today's ALAP scheduling based on the remaininghours of the tickets, which the ticket owners have estimated as the rest of necessary work from week to week. This way we have a survey of the current state of a project, and if the milestone is still feasible.

Look at the attached trial of a patch. It still doesn't work, and I could need your hints how to get it working. I have doResourceScheduling on, but the tickets of a certain owner are not cascaded as expected.

Given for example 2 tickets with estimate=80 (originally planned), totalhours=40 (already worked), remaininghours=20 (currently estimated rest of work) I would expect that ALAP scheduling let ticket 1 finish 20 hours before ticket 2 finishes. The original plugin code lets ticket 1 finish 80 hours before ticket 2 finishes. My current patch lets both tickets finish at the same time, and I don't know why. Could you help me, please?"	falkb
11549	introduced fields.remain in tracpm.py	enhancement		Chris Nelson	new	2014-02-07T08:48:12+01:00	2014-02-07T08:48:12+01:00	"I use Trac with these additional custom ticket fields:
 1. estimatedhours.label = originally planned time
 2. remaininghours.label = currently estimated rest time
 3. totalhours.label = sum of worked time
I set in trac.ini
{{{
[TracPM]
fields.estimate = estimatedhours
fields.worked = totalhours
}}}
but this patch allows me setting also the remaininghours for the Gantt chart to consider:
{{{
[TracPM]
fields.estimate = estimatedhours
fields.worked = totalhours
fields.remain = remaininghours
}}}

The patch is here:
{{{
!diff
Index: tracpm.py
===================================================================
--- tracpm.py	(revision 13386)
+++ tracpm.py	(working copy)
@@ -150,6 +150,8 @@
            """"""Ticket field to use as the data source for estimated work"""""")
     Option(cfgSection, 'fields.worked', None,
            """"""Ticket field to use as the data source for completed work"""""")
+    Option(cfgSection, 'fields.remain', None,
+           """"""Ticket field to use as the data source for remaining work"""""")
     Option(cfgSection, 'fields.start', None, 
            """"""Ticket field to use as the data source for start date"""""")
     Option(cfgSection, 'fields.finish', None, 
@@ -187,7 +189,7 @@
         self.sources = {}
 
         # All the data sources that may come from custom fields.
-        fields = ('percent', 'estimate', 'worked', 'start', 'finish',
+        fields = ('percent', 'estimate', 'worked', 'remain', 'start', 'finish',
                   'pred', 'succ', 'parent')
 
         # All the data sources that may come from external relations.
@@ -501,11 +503,11 @@
             est = 0.0
         # Closed tickets took as long as they took
         elif ticket['status'] == 'closed' and work:
-            est = work
+            est = 0 # work
         # If the task is over its estimate, assume it will take
         # pad more time
-        elif work > est:
-            est = work + self.estPad
+        #elif work > est:
+        #    est = work + self.estPad
         # If unestimated, use the default
         elif not est or est == 0:
             est = self.dftEst
@@ -540,7 +542,9 @@
                     percent = 0
                 else:
                     worked = float(worked)
-                    percent = '%s/%s' % (worked, estimate)
+                    prcnt = worked * 100.0 / (float(estimate) + worked)
+                    percent = int(prcnt)
+                    #self.env.log.info('#### percent(%s) = (worked=%d, estimate=%d) : %d' % (ticket['id'], worked, estimate, percent))
         # Use percent if provided
         elif self.isCfg('percent'):
             try:
@@ -794,6 +798,9 @@
         if self.isCfg('worked'):
             ticket[self.fields['worked']] = 0
 
+        if self.isCfg('remain'):
+            ticket[self.fields['remain']] = 0
+
         # There is no percent complete for a pseudoticket
         if self.isCfg('percent'):
             ticket[self.fields['percent']] = 0
@@ -820,11 +827,11 @@
         else:
             milestones = []
 
-        for t in tickets:
-            if 'milestone' in t and \
-                    t['milestone'] != '' and \
-                    t['milestone'] not in milestones:
-                milestones.append(t['milestone'])
+            for t in tickets:
+                if 'milestone' in t and \
+                        t['milestone'] != '' and \
+                        t['milestone'] not in milestones:
+                    milestones.append(t['milestone'])
 
         # Need a unique ID for each task.
         if len(milestones) > 0:
@@ -1008,7 +1015,7 @@
             nullable = [ 'pred', 'succ', 
                          'start', 'finish', 
                          'parent', 
-                         'worked', 'estimate', 'percent' ]
+                         'worked', 'estimate', 'remain', 'percent' ]
             for field in nullable:
                 if self.isField(field):
                     fieldName = self.fields[self.sources[field]]
@@ -1841,7 +1848,12 @@
                 # Set the field
                 t['_calc_finish'] = finish
 
+            start_based_on_work = False
+            overruled_start = None
+            start = None
+
             if t.get('_calc_start') == None:
+                hours = 0
                 # If work has begun, the start is the actual start.
                 if t.get('_actual_start') and options.get('useActuals'):
                     start = [ to_datetime(t['_actual_start']), True ]
@@ -1856,6 +1868,7 @@
                 # Otherwise, the start is based on the finish and the
                 # work to be done before then.
                 else:
+                    start_based_on_work = True
                     hours = self.pm.workHours(t)
                     start = t['_calc_finish'][0] + \
                         _calendarOffset(t, 
@@ -1865,9 +1878,27 @@
 
                 t['_calc_start'] = start
 
+                if start_based_on_work:
+                    if self.pm.isCfg('remain') and t.get(self.pm.fields['remain']) != None:
+                        remain_str = t[self.pm.fields['remain']]
+                        if remain_str != '':
+                            remaininghours = float(remain_str)
+                        else:
+                            remaininghours = 0.0
+
+                        start = t['_calc_finish'][0] + \
+                            _calendarOffset(t, 
+                                            -1*(remaininghours), 
+                                            t['_calc_finish'][0])
+                        start = [start, t['_calc_finish'][1]]
+                        overruled_start = start
+                        #t['_calc_start'] = overruled_start
+
                 # Adjust implicit finish for explicit start
                 if _betterDate(start, finish):
                     hours = self.pm.workHours(t)
+                    if (overruled_start):
+                        hours = remaining_hours
                     finish[0] = start[0] + _calendarOffset(t,
                                                            hours,
                                                            start[0])
@@ -1876,13 +1907,19 @@
 
             # Remember the limit for open tickets
             if t['status'] != 'closed':
+                if start is None:
+                    start = t['_calc_start']
                 limit = self.limits.get(t['owner'])
-                if not limit or limit > t['_calc_start'][0]:
-                    self.limits[t['owner']] = t['_calc_start'][0]
+                if not limit or limit > start[0]:
+                    self.limits[t['owner']] = start[0]
 
             self.taskStack.pop()
 
-            return t['_calc_start']
+            if overruled_start:
+                #self.env.log.warning('ticket=%s' % t['id'])
+                return overruled_start
+            else:
+                return t['_calc_start']
 
         # Schedule a task As Soon As Possible
         # Return the finish of the task as a date object
}}}

Now the length of a ticket bar is equal to 'estimatedhours' but tickets can overlap because resource leveling will consider the 'remaininghours'.

Remaining issue: For proper ressource leveling, I don't get it work that closed tickets have the original bar length of 'estimatedhours'."	falkb
11633	"subtickets - gantt display - suppress red arrow line from ""parent"" to milestone"	enhancement		Chris Nelson	new	2014-03-18T13:13:17+01:00	2014-03-18T13:13:17+01:00	"I'm installing/configuring tracjsgantt - and it's a great Job. 
I'm refering back to the diagram on the page: http://trac-hacks.org/wiki/TracJsGanttPlugin
Which Shows collapsible Groups of Tasks - the parent Tasks have black bar on the diagram.

I can get a similar effect with the Subtickets module. The parent of the subtasks must also have the same Milestone - which makes sense, otherwise it is not displayed with the 
{{{
[[TracJSGanttChart(milestone=testmilestone)]]
}}}
directive.

This is fine, the only Thing is that the black line displayed also has a red arrow line leading to the Milestone. Is there a way to not Display this arrow line"	jc
11673	Add task scheduling tests	enhancement		Chris Nelson	new	2014-04-04T15:49:38+02:00	2014-04-04T15:51:49+02:00	Many subtle issues arise as schedule algorithms are modified. To date, the tests have been looking at canned sets of tickets in a Gantt and seeing if they seem right.  We can do better.	Chris Nelson
11868	Tasks and defects should always be grouped with the relevant milestone.	enhancement	1.2	Chris Nelson	new	2014-07-09T20:46:53+02:00	2014-07-09T20:46:53+02:00	"If tasks are entered out of sequence, or you enter a milestone that has tasks already completed, the gantt chart is messed up.

It seems to display the groupings in chronological order and as the start date of a milestone is the date it is created, even if i enter tasks that are already in progress and a past date as the start date, they tasks/defects in that milestone are shown separately from the milestone. 

See image - tasks 33, 34 and 35 belong to the MS Complete Basic Sandbox Build task and 36 and 37 belong to the Install Planning Templates task but the two milestones are shown at the bottom and the other elements are mixed in with tasks from other milestones.

Tasks and defects should always be listed under the relevant milestone. "	twjnorth@…
12115	Allow overriding of actual ticket times with user times	enhancement		Chris Nelson	new	2014-12-16T05:33:50+01:00	2014-12-16T19:53:59+01:00	"At the moment the precedence is
1. if useActuals is set, use the actual time
2. else if there is a cached date in the db, use that
3. else if there is a user-supplied field set, use it
4. otherwise compute the dates

I would like the option to change the order of precedence for these policies. Especially, it would be great to be able to override the actual ticket time with a user field, e.g. if a ticket was re-opened or closed long after its real completion, so that it doesn't mess up the gantt chart.

In my case, I would want to use the following order:
1. Use the user-supplied field, if it is set
2. Else  if useActuals is set and the ticket was closed, use the actual date,
3. Else if a cached date field exists, use it
4. Else compute the dates.

"	fabian.freyer@…
12382	Generic milestone=self	enhancement	1.0	Chris Nelson	new	2015-06-03T09:02:32+02:00	2015-06-03T09:02:32+02:00	"I'm adding a
{{{
[[TracJSGanttChart(milestone=MS2.0-1)]]
}}}
for every milestone as description in order to have the charts in the /roadmap.

Please implement
{{{
[[TracJSGanttChart(milestone=self)]]
}}}
to have a generic description for all milestones. Is it possible however to add that generic description to every milestone automatically without editing new milestones?"	massimo.b@…
14090	Give option to easy select projects from SimpleMultiProjectPlugin	enhancement	1.4	Chris Nelson	new	2021-12-07T20:13:28+01:00	2021-12-08T00:39:40+01:00	"Eg. I want to put

{{{
[[TracJSGanttChart(SimpleMultiProjectPlugin=1)]]
[[TracJSGanttChart(SimpleMultiProjectPlugin=Name1)]]
[[TracJSGanttChart(SimpleMultiProjectPlugin=Name1, Milestone=Milestone1)]]
[[TracJSGanttChart(SimpleMultiProjectPlugin=Name1, Component=Component1)]]
}}}
"	userTracJSGanttChart
9123	Allow custom columns in table next to Gantt chart	enhancement	0.11	Chris Nelson	new	2011-08-25T14:12:51+02:00	2020-05-01T06:51:13+02:00	"It would be nice to be able to include Trac-specific columns in the table to the left of the chart.  For example, to show status or priority.

This requires a fair bit of JavaScript work.  The high-level chart object would need an ""addColumn"" or something method.  Ideally, the existing column handling would be reworked so that the table was empty and the default case called ""addColumn('res')"", etc.

Then the when adding a task, you'd need to be able to provide values for custom columns (perhaps by having optional argument at the end with a value like ""column=value,column=value""?).

Once that infrastructure was in place, the macro needs new options to allow the user to specify which Trac fields to include.  Perhaps something like ""columns=priority|status""."	Chris Nelson
11287	Convert to .executemany() where appropriate	enhancement		Chris Nelson	assigned	2013-08-27T14:16:24+02:00	2014-02-20T20:31:09+01:00	As noted in comment:3:ticket:11131 and http://www.python.org/dev/peps/pep-0249/#executemany, `.executemany()` is preferred over passing a list of tuples.  This can clean up a number of database accesses, potentially making them more portable and readable.	Chris Nelson
8529	Param for vRightTable size	enhancement	0.11	Chris Nelson	new	2011-02-22T18:01:17+01:00	2011-07-09T07:54:01+02:00	"Is it possible to boost the vRightTable?

The right table don't fill out the right side of the window. There is place for more timeline. "	didley@…
9845	Scheduling sometimes fails completely	defect	0.12	Chris Nelson	new	2012-02-23T11:37:09+01:00	2013-08-26T19:04:47+02:00	"For some sets of tasks, scheduling is so bad as to render the gantt chart useless.

The problem might be related to short tasks.  

Attached are:
  * A listing of a small set of inter-related tasks
  * A JPeg of the Gantt chart produced (7 hours per day) showing most tasks being assigned start dates before those of the tasks blocking them.  Inter-task relationships are shown, but have no effect on scheduling.
  * A JPeg of the Gantt chart produced for 1 hour per day (and removing all start dates), showing a reasonable flow of tasks given the relative task sizes and the actual blocking/blocked-by relationships.  But, of course, the timescale is nonsense, and I can see no reason for the huge delay between the finish of 71 and the start of 72."	anonymous
14098	Give option for ticket as start and end date (project management)	defect	1.4	Chris Nelson	new	2021-12-08T20:56:38+01:00	2021-12-09T00:55:40+01:00	"As Product Owner need manage tikets by time for start to end time.

Due this want see chart with tickets under milestones and components"	anonymous
9003	Shift of taskbar in graph	defect	0.12	Chris Nelson	assigned	2011-07-19T14:06:44+02:00	2020-11-10T21:34:54+01:00	"If you see the example graph, there is a shift of the taskbar regarding start date and end date. 
Example with the ticket named ""Constructor proc"": the start date is 2/21/2011 but the taskbar begins on 2/20. The end date is 3/9 but the taskbar ends on 3/8. 
Is it possible to correct this ? For me it's blocking to use the plugin. 
I also need to use this kiind of chart to schedule tasks. I have seen in another ticket you work on this aspect. For it, I have locally adapted the code to align subtickets (when no end date is defined) on the parent end date (parent used here as ""milestone"", but not in the graph). Are you interested by the code?
Another improvement should be to serialize tickets assigned to the same developer: calculate start and end of developer tickets regarding the others, like the ""succ"" functionality. Stephan Geulette"	Stephan Geulette
9833	Scheduling Ignores Milestones	defect	0.12	Chris Nelson	assigned	2012-02-20T01:17:21+01:00	2012-05-06T12:18:24+02:00	"When scheduling as late as possible, tasks should be scheduled to complete no later than their milestone.  Currently, it seems to be ignored, so that tasks are sometimes scheduled to (start and) finish after their milestone.

Obviously, if the milestone has no date, or a successor has an earlier ""latest start date"", or a parent has an earlier finish date, then that should take priority.  





"	Robert Inder
9535	Can't handle collaborative working	defect	0.12	Chris Nelson	new	2011-11-09T20:34:54+01:00	2020-05-01T06:51:13+02:00	"When the system calculates start dates from estimated hours and finish dates, there is no way to cope with the possibility of more than one person working no it.

That's a serious limitation for general project planning.

Particularly given that the chart seems to always calculate its own start date even if there is one on the ticket. (#9534)


"	Robert Inder
10127	[PATCH] if the milestone due date is the only given date at all, ALAP scheduling must use it as end date of last successor ticket	defect	0.11	Chris Nelson	new	2012-07-02T16:48:58+02:00	2012-07-02T22:35:59+02:00	"related to #9705.

I have several tickets grouped with parent tickets. They all don't have any dates set at all. The only date set is the milestone due date.

ALAP scheduling only works well if I apply this patch:
{{{
#!diff
Index: tracjsganttplugin/0.11/tracjsgantt/tracpm.py
===================================================================
--- tracjsganttplugin/0.11/tracjsgantt/tracpm.py	(revision 11706)
+++ tracjsganttplugin/0.11/tracjsgantt/tracpm.py	(working copy)
@@ -619,8 +619,7 @@
                 if self.isCfg(['pred', 'succ']):
                     pred = []
                     for t in tickets:
-                        if not t['children'] and \
-                                t['milestone'] == row[0] and \
+                        if t['milestone'] == row[0] and \
                                 self.successors(t) == []:
                             if self.isField('succ'):
                                 t[self.fields[self.sources['succ']]] = \
}}}

Without this patch, ""today"" is used as end date of the last successor and the scheduled plan starts in the past, which is completely wrong."	falkb
14091	Bad view on TracJSGanttChart in wiki	defect	1.4	Chris Nelson	new	2021-12-07T20:18:13+01:00	2021-12-08T00:40:02+01:00	"As on attachemnts in case:
1. Wiki edit options are turn on then table vertical size is shifted (IE)
2. Wiki edit options are turn off then table vertical size is shifted (FireFox)"	anonymous
8966	Scroll bar can be longer than vRightTable	defect	0.11	Chris Nelson	new	2011-07-09T07:20:25+02:00	2011-07-09T10:36:12+02:00	"Minor aesthetic issue:

[[Image(ScrollBarLongerThanChart.png)]]"	Ryan J Ollos
9111	if fields.start and fields.finish not set in trac.ini, use datetime of 'accepted' and 'closed'	defect	0.11	Chris Nelson	new	2011-08-19T15:39:38+02:00	2020-05-01T06:51:13+02:00	"This way, if we don't schedule tickets, we could use this Gantt chart as time survey over the done activities.

This is somehow related to #8786.

Addon: we also have the ticket state 'testing' before 'closed'. Would be cool if the Gantt chart bar changes the color after the state switch."	falkb
9279	start date in chart different to set start date in ticket	defect	0.12	Chris Nelson	new	2011-10-18T09:13:37+02:00	2020-05-01T06:51:13+02:00	"I have a ticket which is parent of other tickets and it has set fields.start and fields.finish. I understand both fields as they are for setting the __planned__ range of time.

But the chart don't display the given start date in column ""Start Date"" correctly, but it seems to compute a new start date from ""End Date"" minus worked hours. That confuses us when reading the chart as plan.

BTW: on several places it's not clear in the chart what is just data of plan/schedule and what is data of the past reality. This should be clearly distinguished by the chart, maybe by colors. This is somehow related to #8786."	falkb
9300	Tickets with parent don't layout chronologically	defect	0.11	Chris Nelson	assigned	2011-10-20T20:07:52+02:00	2012-03-23T18:52:07+01:00	"As can be seen in the following image:

[[Image(TicketsWithParentDontLayoutCorrectly.png, 100%)]]"	Ryan J Ollos
9443	[Patch] Milestones with no due date are shown one day late	defect	0.11	Chris Nelson	assigned	2011-10-26T04:14:33+02:00	2011-11-03T00:42:07+01:00	[[Image(MilestoneOneDayLate.png)]]	Ryan J Ollos
9509	with IE9: chart doesn't resize to web page width	defect	0.12	Chris Nelson	assigned	2011-11-01T10:56:05+01:00	2020-05-01T06:51:13+02:00	Automatic resizing to page width works with Firefox but the gannt chart has a fixed size of visible 970 pixels using Internet Explorer 9.0.8112.16421.	falkb
9648	Miscellaneous refactoring and minor clean ups	defect	0.11	Chris Nelson	assigned	2011-12-30T22:35:43+01:00	2014-10-14T19:39:25+02:00	A ticket to link various small fixes to.	Chris Nelson
9691	"Dependencies from MasterTickets not handled correctly for ""goal="""	defect	0.11	Chris Nelson	assigned	2012-01-13T20:10:30+01:00	2012-03-23T18:52:07+01:00	"If ticket 1 is required for 2 and 3 and ticket 3 has a Gantt with ""goal=self"", ticket 1 doesn't show up. 

MasterTickets doesn't create a real relation, at least not in `ticket_custom`.  There I see entries like:

{{{
    165 | blocking | 166, 167
    166 | blocking | 167
    168 | blocking | 167, 169
}}}

So the query which does:

{{{
            cursor.execute(""SELECT t.id ""
                           ""FROM ticket AS t ""
                           ""LEFT OUTER JOIN ticket_custom AS p ON ""
                           ""    (t.id=p.ticket AND p.name='%s') ""
                           ""WHERE p.value IN (%s)"" % 
                           (field, n_list))
            nodes = ['%s' % row[0] for row in cursor] 
}}}

can't work.  I either need a ''like'' query or to query the master tickets table."	Chris Nelson
9705	In ALAP scheduling, today is not a valid end date if no dates are assigned	defect	0.11	Chris Nelson	new	2012-01-19T02:28:16+01:00	2012-07-02T16:51:20+02:00	"Any unspecified date defaults to today but if no dates are specified, an ALAP schedule works backwards from the end, gives the last task today as a due date then works into the past.  But we can't work in the past so that's not a great choice.

Unfortunately, we don't know the makespan of the project before starting so we can't easily say ""today plus makespan"" as the starting point.

This should be fixed, even though I don't know how right now."	Chris Nelson
9724	schedule=asap: Partially completed tasks should have unworked hours starting today	defect	0.11	Chris Nelson	new	2012-01-23T16:27:59+01:00	2012-01-23T16:29:34+01:00	"Here we continue the story of #9042.

situation: milestone date set and we have some unscheduled tickets

The ticket must start earlier than today in case we already have worked on it, which means the remaining hours are less than the planned hours. Then you must let it start on 'today minus already worked hours'. Here's illustrated what I mean: 

Currently, we have:
attachment:ticket:9042:9042_asap_unsched_tick_NOK.jpg

It should be something like this:
attachment:ticket:9042:9042_asap_unsched_tick_OK.jpg

ChrisNelson already has an idea which way to go: comment:ticket:9042:38"	falkb
9784	Hours to do on chart not over weekends	defect	0.11	Chris Nelson	new	2012-02-10T16:09:10+01:00	2012-03-23T18:52:07+01:00	A ticket where the time to work on from timingandestimationplugin goes over the weekend it should break the line over the weekend and keep going from monday on.	benjamin.vonlanthen@…
9832	Nothing displayed. Always sends sample data	defect	0.12	Chris Nelson	new	2012-02-18T20:28:43+01:00	2012-02-18T20:28:43+01:00	"Attempting to setup and demonstrate the plugin. Create blank project via initenv; turn on gantt chart; create wiki page to reference macro. Regardless of macro options, always sends the sample data from _add_sample_tasks; never displays 'No tasks selected.'  Nothing is ever displayed.

During a previous trial, it worked briefly, but recreating the Trac environment completely from scratch has never been able to reproduce the working plugin.  

page source attached."	taddock@…
9838	NameError: global name 'fieldname' is not defined	defect	0.12	Chris Nelson	assigned	2012-02-21T08:05:38+01:00	2012-03-23T18:51:07+01:00	"I'm using childticketplugin also. Is the parent field empty JSGantt works. Is parent field filled with a number for example #XXXX than it fails with error below.


{{{

 Traceback (most recent call last):
  File ""C:\Programme\Python25\lib\site-packages\trac-0.12.2-py2.5.egg\trac\wiki\formatter.py"", line 717, in _macro_formatter
    return macro.process(args, in_paragraph=True)
  File ""C:\Programme\Python25\lib\site-packages\trac-0.12.2-py2.5.egg\trac\wiki\formatter.py"", line 304, in process
    text = self.processor(text)
  File ""C:\Programme\Python25\lib\site-packages\trac-0.12.2-py2.5.egg\trac\wiki\formatter.py"", line 291, in _macro_processor
    text)
  File ""build\bdist.win32\egg\tracjsgantt\tracjsgantt.py"", line 621, in expand_macro
    tasks = self._add_tasks(options)
  File ""build\bdist.win32\egg\tracjsgantt\tracjsgantt.py"", line 559, in _add_tasks
    self.pm.postQuery(options, self.tickets)
  File ""build\bdist.win32\egg\tracjsgantt\tracpm.py"", line 643, in postQuery
    t[fieldname] = parent[1:]
NameError: global name 'fieldname' is not defined
}}}


I checked this part of coding where the error comes up but I can't find any error. Do you have any idea?

 {{{
 #!py
     def postQuery(self, options, tickets):
         # Handle custom fields.
 
         # Clean up custom fields which might be null ('--') vs. blank ('')
 ...
 
         # Normalize parent field values.  All parent values must be
         # done before building child lists, below.
         if self.isCfg('parent'):
             for t in tickets:
                 # ChildTicketsPlugin puts '#' at the start of the
                 # parent field.  Strip it for simplicity.
                 fieldName = self.fields[self.sources['parent']]
                 parent = t[fieldName]
                 if len(parent) > 0 and parent[0] == '#':
                     t[fieldname] = parent[1:]
 }}}

 

didley 
"	didley@…
9892	Problem with TracJsGanttPlugin - no gantt	defect	0.12	Chris Nelson	reopened	2012-03-10T18:46:04+01:00	2012-10-03T21:03:55+02:00	"I installed Trac 0.12.3 and plugins:
 1. timingandestimationplugin 1.2.6b
 1. !TracMasterTickets 3.0.2
 1. !TracSubTicketsPlugin 0.1.0
 1. Trac-jsGantt 0.9-r11182

There was no errors. I started Trac, add authorization based on htpasswd file.
I add one ticket and create new wiki page with `[[TracJSGanttChart(sample=1)]]`.

I can't see chart. There is no errors in python log. Trac.ini configuration file seems to be ok. I tried install, reinstall plugins, but now I have no idea what can I check."	anonymous
9928	Parameter openLevel works not	defect	0.12	Chris Nelson	new	2012-03-28T13:37:19+02:00	2014-04-08T22:16:00+02:00	"I'm using !ChildTicketsPlugin.

When I set parameter !openLevel=1 it shows me all levels of tasks.

 didley"	didley@…
9999	Filter for milestone doesn't work with umlauts	defect	0.11	Chris Nelson	assigned	2012-04-30T17:41:50+02:00	2012-07-19T22:05:59+02:00	"The filter for Milestones doesn't work with german umlauts.
{{{
milestone=SäHO
}}}
doesn't work"	Rochi
10311	in ASAP mode: end date of ticket 1 is after start date of ticket 2 although 2 depends on 1	defect	0.12	Chris Nelson	new	2012-09-12T18:09:29+02:00	2012-09-12T18:09:29+02:00	"Hi,
look at the attached image [[Image(asap_dependency_bug.png)]] which shows the problem. Today is 12/Sep/2012, column 9/9 so to speak. 

The dates of tickets {{{ #12 }}} and {{{ #13 }}} are computed from today since they don't have fields.start and fields.finish set. The end date of {{{ #1 }}} is computed from the end date of {{{ #13 }}} because it also doesn't have its fields.finish set.

There is a set dependency that {{{ #2 }}} requires {{{ #1 }}} by fields.succ and fields.pred, respectively. And {{{ 2 }}} has its fields.start and fields.finish explicitely set.

I expect that {{{ #1 }}} has to end before {{{ #2 }}} starts and as a result from that {{{ #12 }}} and {{{ #13 }}} have to start earlier. This means {{{ #13 }}} actually must end on the start date of {{{ #2 }}}, and this means {{{ 12 }}} must start earlier than today."	falkb
10589	partially completed tasks should be remainghours long	defect	0.12	Chris Nelson	new	2012-11-01T17:01:33+01:00	2012-11-02T00:20:52+01:00	"Using the !TimingAndEstimationPlugin, the length of each task seems always to be fixed to estimatedhours. This causes the following miss behaviour:

- Using ASAP scheduling, succeding tasks of an incompleted task start to late. [[BR]]
- Using ALAP scheduling, incompleted tasks start in the past even if the are on-time. [[BR]]
- In any case, the plan does not include any delay (remaininghours > estimatedhours).

To calculate the percentage of completion, totalhours/estimatedhours still could be used. Thus, completion = 100% and remainghours > 0 indicates that a task is to late. But you still would see the actual estimated remaining effort (remainghours = delay)."	maikb
10665	execute() takes at least 2 arguments (1 given)	defect	0.12	Chris Nelson	new	2012-11-30T17:36:37+01:00	2012-11-30T19:01:13+01:00	"I changed to the latest rev:12330 and get this error

See [attachment:trac_js_2arg.JPG trac_js_2arg.JPG]

[[Image(trac_js_2arg.JPG)]]

With rev:r11863 it works fine.

 didley"	didley@…
10717	Closed tickets are scheduled to future with resource leveling	defect		Chris Nelson	new	2012-12-19T07:19:33+01:00	2013-03-20T21:27:40+01:00	"When ""resource leveling"" is on, closed tickets are getting ""planned"" to future even though they are:
 * closed
 * have start date and end date set explicitly
 * have ""worked hours"" set to ""estimated number of hours"""	anonymous
10937	Weird results when using planned_finish	defect	0.12	Chris Nelson	new	2013-03-14T14:34:53+01:00	2013-03-14T14:34:53+01:00	"I wrote a script that automatically updates the ""Planned finish"" / userfinish upon resolution, because I wanted my tickets to show up on the correct day instead of ""following"" me in the jsgantt schema.

Now I notice if I have a ticket blocking another ticket like this:

[ticket | userfinish=set | duration=set] --> blocks --> [ticket | userfinish=set | duration=set]

I get the first blocking ""parent"" at the end of the day and the ""child"" ticket is located at the start of the next day, with a duration of 0 it looks like.

Instead of moving the parent backwards OR putting the child underneath the parent.

Is this a bug or should I go about this in another way?

I would love to be able to use the gantt as a daily schedule for my work, and also use it to keep track WHEN the ticket actually was finished."	tommy.wallberg@…
10956	Macro TracJSGanttChart fails when using Trac 1.1.1's date ticket fields	defect	1.2	Chris Nelson	new	2013-03-19T18:00:38+01:00	2013-03-19T18:00:38+01:00	"Set custom ticket fields userstart and userfinish to ""time"":

{{{
userfinish = time
userfinish.format = date
userfinish.label = Due Date
userstart = time
userstart.format = date
userstart.label = Start Date
}}}

to get a nice date chooser widget with Trac 1.1.1. When displaying a JsGantt chart with a date entered into either field, this error is triggered:

{{{
2013-03-19 17:42:13,023 Trac[formatter] ERROR: Macro TracJSGanttChart(milestone=Milestone 1) failed: 
Traceback (most recent call last):
  File ""/usr/local/lib/python2.7/dist-packages/Trac-1.1.1-py2.7.egg/trac/wiki/formatter.py"", line 765, in _macro_formatter
    return macro.ensure_inline(macro.process(args))
  File ""/usr/local/lib/python2.7/dist-packages/Trac-1.1.1-py2.7.egg/trac/wiki/formatter.py"", line 356, in process
    text = self.processor(text)
  File ""/usr/local/lib/python2.7/dist-packages/Trac-1.1.1-py2.7.egg/trac/wiki/formatter.py"", line 343, in _macro_processor
    text)
  File ""/usr/local/lib/python2.7/dist-packages/Trac_jsGantt-0.10_r12565-py2.7.egg/tracjsgantt/tracjsgantt.py"", line 727, in expand_macro
    tasks = self._add_tasks(options)
  File ""/usr/local/lib/python2.7/dist-packages/Trac_jsGantt-0.10_r12565-py2.7.egg/tracjsgantt/tracjsgantt.py"", line 662, in _add_tasks
    self.pm.computeSchedule(options, self.tickets)
  File ""/usr/local/lib/python2.7/dist-packages/Trac_jsGantt-0.10_r12565-py2.7.egg/tracjsgantt/tracpm.py"", line 1027, in computeSchedule
    self.scheduler.scheduleTasks(options, ticketsByID)
  File ""/usr/local/lib/python2.7/dist-packages/Trac_jsGantt-0.10_r12565-py2.7.egg/tracjsgantt/tracpm.py"", line 1893, in scheduleTasks
    serialSGS(_schedule_task_asap, 'npred', 0, self.pm.successors)
  File ""/usr/local/lib/python2.7/dist-packages/Trac_jsGantt-0.10_r12565-py2.7.egg/tracjsgantt/tracpm.py"", line 1850, in serialSGS
    scheduleFunction(ticket)
  File ""/usr/local/lib/python2.7/dist-packages/Trac_jsGantt-0.10_r12565-py2.7.egg/tracjsgantt/tracpm.py"", line 1602, in _schedule_task_asap
    if self.pm.isSet(t, 'start'):
  File ""/usr/local/lib/python2.7/dist-packages/Trac_jsGantt-0.10_r12565-py2.7.egg/tracjsgantt/tracpm.py"", line 247, in isSet
    and len(ticket[self.fields[field]]) != 0:
TypeError: object of type 'datetime.datetime' has no len()
}}}

Changing the type of the field to ""text"", the error changes to:
{{{
2013-03-19 17:57:01,380 Trac[formatter] ERROR: Macro TracJSGanttChart(milestone=Milestone 1) failed: 
Traceback (most recent call last):
  File ""/usr/local/lib/python2.7/dist-packages/Trac-1.1.1-py2.7.egg/trac/wiki/formatter.py"", line 765, in _macro_formatter
    return macro.ensure_inline(macro.process(args))
  File ""/usr/local/lib/python2.7/dist-packages/Trac-1.1.1-py2.7.egg/trac/wiki/formatter.py"", line 356, in process
    text = self.processor(text)
  File ""/usr/local/lib/python2.7/dist-packages/Trac-1.1.1-py2.7.egg/trac/wiki/formatter.py"", line 343, in _macro_processor
    text)
  File ""/usr/local/lib/python2.7/dist-packages/Trac_jsGantt-0.10_r12565-py2.7.egg/tracjsgantt/tracjsgantt.py"", line 727, in expand_macro
    tasks = self._add_tasks(options)
  File ""/usr/local/lib/python2.7/dist-packages/Trac_jsGantt-0.10_r12565-py2.7.egg/tracjsgantt/tracjsgantt.py"", line 662, in _add_tasks
    self.pm.computeSchedule(options, self.tickets)
  File ""/usr/local/lib/python2.7/dist-packages/Trac_jsGantt-0.10_r12565-py2.7.egg/tracjsgantt/tracpm.py"", line 1027, in computeSchedule
    self.scheduler.scheduleTasks(options, ticketsByID)
  File ""/usr/local/lib/python2.7/dist-packages/Trac_jsGantt-0.10_r12565-py2.7.egg/tracjsgantt/tracpm.py"", line 1893, in scheduleTasks
    serialSGS(_schedule_task_asap, 'npred', 0, self.pm.successors)
  File ""/usr/local/lib/python2.7/dist-packages/Trac_jsGantt-0.10_r12565-py2.7.egg/tracjsgantt/tracpm.py"", line 1850, in serialSGS
    scheduleFunction(ticket)
  File ""/usr/local/lib/python2.7/dist-packages/Trac_jsGantt-0.10_r12565-py2.7.egg/tracjsgantt/tracpm.py"", line 1604, in _schedule_task_asap
    start = self.pm.parseStart(t)
  File ""/usr/local/lib/python2.7/dist-packages/Trac_jsGantt-0.10_r12565-py2.7.egg/tracjsgantt/tracpm.py"", line 276, in parseStart
    self.dbDateFormat))
TracError: Ticket 4999 has an invalid userstart value, ""001363647600000000"". It should match the format ""%Y-%m-%d"".
}}}
"	jspohr@…
11059	pDate is null Javascript error	defect	1.0	Chris Nelson	assigned	2013-05-08T11:24:07+02:00	2013-08-22T22:22:52+02:00	"I have a javascript error even with `[[TracJSGanttChart(sample=1)]]` macro.

{{{
jsgantt.js (line 2350)
TypeError: pDate is null
vYear4Str = pDate.getFullYear() + '';
}}}

Firefox 20.0.1
Trac 1.0.1
"	wrobel.przemyslaw@…
11061	Cannot batch modify tickets	defect	1.0	Chris Nelson	new	2013-05-08T12:24:22+02:00	2013-08-22T22:51:42+02:00	"When this plugin is enabled I cannot batch modify tickets because of error.
Details attached.
"	wrobel.przemyslaw@…
11084	PATCH: better resize the chart to be smaller than to overlap other page elements	defect		Chris Nelson	new	2013-05-15T09:12:00+02:00	2013-05-15T09:12:00+02:00	"Just a trivial one:

{{{
#!diff
Index: 0.11/tracjsgantt/htdocs/jsgantt.js
===================================================================
--- 0.11/tracjsgantt/htdocs/jsgantt.js	(revision 13125)
+++ 0.11/tracjsgantt/htdocs/jsgantt.js	(working copy)
@@ -1753,6 +1753,7 @@
 
 	 // Sane defaults for most screens these days. In the worst
 	 // case, it will scroll
+/*
 	 var width = ""1000px"";
          if (typeof window.innerWidth != 'undefined')
          {
@@ -1764,7 +1765,7 @@
 	 }
 
 	 vDiv.style.width = width;
-
+*/
         // Scroll to configured date, if any.
         var vScrollToEl = document.getElementById(pGanttVar+'-scrollTo');
         if (vScrollToEl != null) {
}}}

Several months tested with IE and FF. If you want I could attach screenshots where you can see how the Gantt chart badly overlaps without this patch."	falkb
11264	TypeError: object of type 'NoneType' has no len()	defect	1.0	Chris Nelson	assigned	2013-08-08T00:31:00+02:00	2014-04-08T22:34:32+02:00	"{{{#!python
2013-08-07 19:20:07,902 Trac[main] ERROR: Internal Server Error:
Traceback (most recent call last):
  File ""/usr/local/lib/python2.7/dist-packages/Trac-1.0-py2.7.egg/trac/web/main.py"", line 497, in _dispatch_request
    dispatcher.dispatch(req)
  File ""/usr/local/lib/python2.7/dist-packages/Trac-1.0-py2.7.egg/trac/web/main.py"", line 214, in dispatch
    resp = chosen_handler.process_request(req)
  File ""/usr/local/lib/python2.7/dist-packages/Trac-1.0-py2.7.egg/trac/ticket/web_ui.py"", line 179, in process_request
    return self._process_ticket_request(req)
  File ""/usr/local/lib/python2.7/dist-packages/Trac-1.0-py2.7.egg/trac/ticket/web_ui.py"", line 614, in _process_ticket_request
    self._do_save(req, ticket, action)
  File ""/usr/local/lib/python2.7/dist-packages/Trac-1.0-py2.7.egg/trac/ticket/web_ui.py"", line 1328, in _do_save
    replyto=req.args.get('replyto'))
  File ""/usr/local/lib/python2.7/dist-packages/Trac-1.0-py2.7.egg/trac/ticket/model.py"", line 363, in save_changes
    listener.ticket_changed(self, comment, author, old_values)
  File ""/usr/local/lib/python2.7/dist-packages/Trac_jsGantt-0.10-py2.7.egg/tracjsgantt/tracpm.py"", line 2951, in ticket_changed
    self.rescheduleTickets(ticket, old_values)
  File ""/usr/local/lib/python2.7/dist-packages/Trac_jsGantt-0.10-py2.7.egg/tracjsgantt/tracpm.py"", line 2739, in rescheduleTickets
    ids = self._findAffected(ticket, old_values)
  File ""/usr/local/lib/python2.7/dist-packages/Trac_jsGantt-0.10-py2.7.egg/tracjsgantt/tracpm.py"", line 2427, in _findAffected
    affected |= affectedByOld(old_values)
  File ""/usr/local/lib/python2.7/dist-packages/Trac_jsGantt-0.10-py2.7.egg/tracjsgantt/tracpm.py"", line 2360, in affectedByOld
    and len(old_values['parents']) != 0:
TypeError: object of type 'NoneType' has no len()
}}}"	Ivanelson Nunes
11289	doResourceLeveling chart-parameter breaks ticket termination at its milestone	defect	1.0	Chris Nelson	new	2013-08-28T10:14:10+02:00	2013-09-20T08:56:52+02:00	"Hi,
look at the attached screenshot.

[[Image(attachment:resourceLevelingBreaksMilestoneDating.png)]]

As soon as I switch on resource leveling, the tickets are set to terminate on the wrong milestone date.

My Gantt chart call is this one:
{{{ [[TracJSGanttChart(version=Foo,doResourceLeveling=1,openLevel=2,userMap=0,showdep=1,format=week,schedule=alap)]] }}}

Without resource leveling on: then all tickets are set to terminate at their certain milestone correctly.

CU, F@lk"	falkb
11385	ProgrammingError: You cannot execute SELECT statements in executemany().	defect		Chris Nelson	new	2013-11-13T10:01:58+01:00	2014-04-08T22:20:51+02:00	"==== How to Reproduce ====

While doing a POST operation on `/newticket`, Trac issued an internal error.

''(please provide additional details here)''

Request parameters:
{{{
{'__FORM_TOKEN': u'5eabd14b40fbec3d0683fa58',
 'field_billable': u'1',
 'field_blockedby': u'',
 'field_blocking': u'',
 'field_cc': u'',
 'field_checkbox_billable': u'1',
 'field_component': u'HW-Mecc/El',
 'field_description': u'',
 'field_estimatedhours': u'0',
 'field_hours': u'0',
 'field_keywords': u'',
 'field_milestone': u'',
 'field_owner': u'',
 'field_parent': u'',
 'field_parents': u'',
 'field_priority': u'major',
 'field_project': u'',
 'field_reporter': u'devilli',
 'field_summary': u'prova',
 'field_type': u'sviluppo',
 'field_userfinish': u'2013-11-13',
 'field_userstart': u'2013-11-13',
 'submit': u'Create ticket'}
}}}

User agent: `Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0`

==== System Information ====
|| '''`Trac`''' || `1.0.1` ||
|| '''`Genshi`''' || `0.6 (without speedups)` ||
|| '''`Pygments`''' || `1.4` ||
|| '''`pysqlite`''' || `2.4.1` ||
|| '''`Python`''' || `2.6.5 (r265:79063, Apr 16 2010, 13:09:56) ` [[br]] `[GCC 4.4.3]` ||
|| '''`setuptools`''' || `0.6c11` ||
|| '''`SQLite`''' || `3.6.22` ||
|| '''`Subversion`''' || `1.6.6 (r40053)` ||
|| '''`jQuery`''' || `1.7.2` ||

==== Enabled Plugins ====
|| '''`BatchModify`''' || `0.8.1-trac0.12dev` ||
|| '''`SimpleMultiProject`''' || `0.0.3dev` ||
|| '''`timingandestimationplugin`''' || `1.3.7` ||
|| '''`Trac-jsGantt`''' || `0.10-r13401` ||
|| '''`Tracchildtickets`''' || `2.5.2` ||
|| '''`TracSubTicketsPlugin`''' || `0.2.0.dev-20131113` ||

==== Python Traceback ====
{{{
Traceback (most recent call last):
  File ""build/bdist.linux-i686/egg/trac/web/main.py"", line 497, in _dispatch_request
    dispatcher.dispatch(req)
  File ""build/bdist.linux-i686/egg/trac/web/main.py"", line 214, in dispatch
    resp = chosen_handler.process_request(req)
  File ""build/bdist.linux-i686/egg/trac/ticket/web_ui.py"", line 180, in process_request
    return self._process_newticket_request(req)
  File ""build/bdist.linux-i686/egg/trac/ticket/web_ui.py"", line 465, in _process_newticket_request
    self._do_create(req, ticket) # (redirected if successful)
  File ""build/bdist.linux-i686/egg/trac/ticket/web_ui.py"", line 1289, in _do_create
    ticket.insert()
  File ""build/bdist.linux-i686/egg/trac/ticket/model.py"", line 256, in insert
    listener.ticket_created(self)
  File ""build/bdist.linux-i686/egg/tracjsgantt/tracpm.py"", line 2946, in ticket_created
    self.rescheduleTickets(ticket, {})
  File ""build/bdist.linux-i686/egg/tracjsgantt/tracpm.py"", line 2741, in rescheduleTickets
    ids = self._findAffected(ticket, old_values)
  File ""build/bdist.linux-i686/egg/tracjsgantt/tracpm.py"", line 2443, in _findAffected
    toExplore = more(border)
  File ""build/bdist.linux-i686/egg/tracjsgantt/tracpm.py"", line 2402, in more
    newOwners = ownersOf(n)
  File ""build/bdist.linux-i686/egg/tracjsgantt/tracpm.py"", line 2322, in ownersOf
    cursor.executemany(query, values)
  File ""build/bdist.linux-i686/egg/trac/db/util.py"", line 85, in executemany
    return self.cursor.executemany(sql_escape_percent(sql), args)
  File ""build/bdist.linux-i686/egg/trac/db/sqlite_backend.py"", line 62, in executemany
    args)
  File ""build/bdist.linux-i686/egg/trac/db/sqlite_backend.py"", line 48, in _rollback_on_error
    return function(self, *args, **kwargs)
ProgrammingError: You cannot execute SELECT statements in executemany().
}}}"	matteo.devilli@…
11634	"Create a NEW ticket -> rescheduleTickets OperationalError: near "","": syntax error"	defect	1.0	Chris Nelson	reopened	2014-03-18T13:34:20+01:00	2014-05-27T17:49:07+02:00	"I get this error when creating a new ticket (with empty Dates etc.) 

{{{#!ini
tracjsgantt.tracpm.ticketrescheduler = enabled   
}}}

This error has been reported is some ways in the past:
* https://trac-hacks.org/ticket/11139
* http://trac-hacks.org/ticket/11027
* https://groups.google.com/forum/?_escaped_fragment_=topic/trac-users/QhctQ2rWzuc#!topic/trac-users/QhctQ2rWzuc

But I can't see a solution to the Problem beyond:

{{{#!ini
tracjsgantt.tracpm.ticketrescheduler = disabled   
}}}

My question is, is there a solution to this Problem and what exactly am I losing by disabling '''tracjsgantt.tracpm.ticketrescheduler'''


The error report:


Oops…
Trac detected an internal error:

OperationalError: near "","": syntax error

This is probably a local installation issue.
Found a bug in Trac?

If you think this should work and you can reproduce the problem, you should consider creating a bug report.

Note that the Trac-jsGantt plugin seems to be involved. Please report this issue to the plugin maintainer.

Before you do that, though, please first try searching for similar issues, as it is quite likely that this problem has been reported before. For questions about installation and configuration of Trac or its plugins, please try the mailing list instead of creating a ticket.

Otherwise, please a new bug report describing the problem and explain how to reproduce it.
Python traceback
Most recent call last:
{{{
    File ""/usr/local/lib/python2.7/dist-packages/Trac-1.0.1-py2.7.egg/trac/web/main.py"", line 497, in _dispatch_request
    File ""/usr/local/lib/python2.7/dist-packages/Trac-1.0.1-py2.7.egg/trac/web/main.py"", line 214, in dispatch
    File ""/usr/local/lib/python2.7/dist-packages/Trac-1.0.1-py2.7.egg/trac/ticket/web_ui.py"", line 180, in process_request
    File ""/usr/local/lib/python2.7/dist-packages/Trac-1.0.1-py2.7.egg/trac/ticket/web_ui.py"", line 465, in _process_newticket_request
    File ""/usr/local/lib/python2.7/dist-packages/Trac-1.0.1-py2.7.egg/trac/ticket/web_ui.py"", line 1289, in _do_create
    File ""/usr/local/lib/python2.7/dist-packages/Trac-1.0.1-py2.7.egg/trac/ticket/model.py"", line 256, in insert
    File ""/usr/local/lib/python2.7/dist-packages/Trac_jsGantt-0.10_r13705-py2.7.egg/tracjsgantt/tracpm.py"", line 2950, in ticket_created
    File ""/usr/local/lib/python2.7/dist-packages/Trac_jsGantt-0.10_r13705-py2.7.egg/tracjsgantt/tracpm.py"", line 2917, in rescheduleTickets
    File ""/usr/local/lib/python2.7/dist-packages/Trac-1.0.1-py2.7.egg/trac/db/util.py"", line 65, in execute
    File ""/usr/local/lib/python2.7/dist-packages/Trac-1.0.1-py2.7.egg/trac/db/sqlite_backend.py"", line 78, in execute
    File ""/usr/local/lib/python2.7/dist-packages/Trac-1.0.1-py2.7.egg/trac/db/sqlite_backend.py"", line 56, in execute
    File ""/usr/local/lib/python2.7/dist-packages/Trac-1.0.1-py2.7.egg/trac/db/sqlite_backend.py"", line 48, in _rollback_on_error
}}}

System information:
{{{
User Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0
Trac 	1.0.1
Babel 	0.9.6
Docutils 	0.8.1
Genshi 	0.6 (with speedups)
mod_wsgi 	3.3 (WSGIProcessGroup WSGIApplicationGroup %{GLOBAL})
Pygments 	1.4
pysqlite 	2.6.0
Python 	2.7.3 (default, Feb 27 2014, 20:09:21) [GCC 4.6.3]
pytz 	2011k
setuptools 	3.2
SQLite 	3.7.9
Subversion 	1.6.17 (r1128011)
jQuery	1.7.2
Enabled plugins:
timingandestimationplugin 	1.3.7b 	/usr/local/lib/python2.7/dist-packages/timingandestimationplugin-1.3.7b-py2.7.egg
Trac-jsGantt 	0.10-r13705 	/usr/local/lib/python2.7/dist-packages/Trac_jsGantt-0.10_r13705-py2.7.egg
TracDateField 	3.0.0dev-r12118 	/usr/local/lib/python2.7/dist-packages/TracDateField-3.0.0dev_r12118-py2.7.egg
TracMasterTickets 	3.0.5dev-r13684 	/usr/local/lib/python2.7/dist-packages/TracMasterTickets-3.0.5dev_r13684-py2.7.egg
TracSubTicketsPlugin 	0.2.0.dev-20140315 	/usr/local/lib/python2.7/dist-packages/TracSubTicketsPlugin-0.2.0.dev_20140315-py2.7.egg
}}}"	jc
11709	jsGantt needs priorities, ticket types and severities	defect	1.0	Chris Nelson	new	2014-04-30T20:11:58+02:00	2020-05-05T06:47:19+02:00	"Removing all priorities, ticket types or severities from the ticket system makes the Trac jsGantt plugin unusable.

it fails with different error messages.

For example when all ticket types are removed I get this debugging error message:
{{{
  File ""build/bdist.linux-i686/egg/tracjsgantt/tracpm.py"", line 473, in isMilestone
    return ticket['type'] == self.goalTicketType
KeyError: 'type'
}}}

I would like to use Trac jsGantt plugin without priorities, ticket types or severities, but currently jsGantt can not handle these cases.

{{{
Trac_jsGantt-0.10_r13868
Trac 1.0.1
}}}"	Markus
11761	query for bubbled up finish date - for use in Time Reports	defect	1.0	Chris Nelson	new	2014-05-23T11:29:44+02:00	2014-06-06T16:21:14+02:00	"- i have a number of tasks related by ""blocked by"" and ""blocking"".
- tracjsgantt make a great job of displaying them, linked with a red arrow line.
- most of the tasks contain no date - the first has a ""Start Date""
- all these tasks are 100% complete - shown as a greyish bar inside the task bar.
All the above is great and as expected.
The tasks are shown from 13 Sept. 2013 onwards.
When I come to do time reporting, these tasks are shown in March 2014 - because that's when I got round to setting the status to closed/fixed. (Developer Work Summary). That's because the report query uses:
 AND ticket_change.time >= $STARTDATE
 AND ticket_change.time < $ENDDATE

I looked in ticket_custom and other tables in sqlite etc. to find the date tracjsgantt uses, but couldn't find anything (probably calculated on the fly) (?).

What db field or query can I use to have the tasks appear in September 2013 in the ""Developer Work Summary"" Time Report?

One idea - a query to set the ticket_change.time to the time tracjsgantt uses/calculates, which I can run now and then before generating Time Reports.
"	jc
11988	trac-jsgantt versus trac-jsGantt	defect		Chris Nelson	new	2014-09-18T14:43:51+02:00	2014-09-18T15:57:29+02:00	"we are using the trac ini-editor to offer the posibility to change ini settings using the web interface. This plugin reports the sections trac-jsgantt and trac-jsGantt.
I had a look in the sourcecode and saw both section names. Can all section names be written as trac-jsgantt or trac-jsGantt? We are using Linux to host Trac and are therefore case sensitive.

Further the section TracPM is detected but no options are beeing reported."	jvbussel
12045	Rescheduling not working?	defect	1.0	Chris Nelson	new	2014-10-31T18:05:05+01:00	2014-10-31T19:05:52+01:00	"I trying to understand the rescheduling capabilities of TracJsGanttPlugin.  I am using it in conjunction with the MasterTickets plugin.  Imagine the following simple scenario:

Ticket A has a specified finish date.
Ticket B has *no* specified start date, and is blocked by Ticket A (by defining the blockedby value in the new ticket panel)

Should Ticket B's start date be auto-scheduled to be the finish date of Ticket A?  I am not getting that behavior.  The start date just matches the finish date of Ticket B (minus any esimated hours).  The gantt chart is otherwise drawn correctly with the dependency lines, so it seems to be otherwise functional.

I have enabled logscheduling and seeing info in my logfile, and I can pass that along if it helps.

Other config info:
{{{
System Information

Package	Version
Trac	1.0.1
Babel	0.9.6
Docutils	0.10
Genshi	0.6 (without speedups)
GIT	1.9.0
mod_wsgi	3.5 (WSGIProcessGroup wsgi-trac WSGIApplicationGroup %{GLOBAL})
Pygments	1.6
pysqlite	2.6.3
Python	2.7.6 (default, Aug 14 2014, 16:02:39) [GCC 4.1.2 20070626 (Red Hat 4.1.2-14)]
setuptools	0.6c11
SQLite	3.7.15.1
jQuery	1.7.2
Installed Plugins

Name	Version	Location
timingandestimationplugin	1.4.0b	/opt/bitnami/python/lib/python2.7/site-packages/timingandestimationplugin-1.4.0b-py2.7.egg
Trac-jsGantt	0.10	/opt/bitnami/python/lib/python2.7/site-packages/Trac_jsGantt-0.10-py2.7.egg
TracAccountManager	0.3.2	/opt/bitnami/apps/trac/lib/TracAccountManager-0.3.2-py2.7.egg
TracCustomFieldAdmin	0.2.8	/opt/bitnami/python/lib/python2.7/site-packages/TracCustomFieldAdmin-0.2.8-py2.7.egg
TracDateField	3.0.0dev	/opt/bitnami/python/lib/python2.7/site-packages/TracDateField-3.0.0dev-py2.7.egg
TracMasterTickets	3.0.5dev	/opt/bitnami/python/lib/python2.7/site-packages/TracMasterTickets-3.0.5dev-py2.7.egg
TracSubTicketsPlugin	0.2.0.dev-20141030	/opt/bitnami/python/lib/python2.7/site-packages/TracSubTicketsPlugin-0.2.0.dev_20141030-py2.7.egg
}}}"	MattLichter
12273	tracpm.py - TicketRescheduler has undefined variables linkFieldsName and linkFieldsNames	defect		Chris Nelson	new	2015-04-16T02:35:12+02:00	2015-04-16T02:35:12+02:00	In tracpm.py, the variables linkFieldsName and linkFieldsNames are undefined and appear to be typos for linkFieldNames.	anonymous
12381	Chart as Milestone description hiding filter box	defect	1.0	Chris Nelson	new	2015-06-03T08:59:33+02:00	2015-06-30T10:04:46+02:00	"I'm adding a
{{{
[[TracJSGanttChart(milestone=MS2.0-1)]]
}}}
for every milestone as description in order to have the charts in the /roadmap.

If the chart is overlapping the right aligned filterbox, the filterbox gets hidden and is not available anymore.

I tried to work around using a sized box from TracWikiExtras:
{{{
{{{#!box align=left width=1000
[[TracJSGanttChart(milestone=MS2.0-1)]]
}}}
}}}

This is Trac-1.0.5 and JsGanttPlugin current 0.11 from svn."	massimo.b@…
12986	Cannot display multiple Gantt chart	defect		Chris Nelson	new	2016-12-09T03:35:59+01:00	2016-12-09T04:33:24+01:00	"I use Trac on Windows 7 64-bit (using Python 2.7 32-bit).
Installation steps can be found here:
http://www.jochenhebbrecht.be/site/2014-08-03/windows/installing-trac-101-windows-81-configuring-subversion-repository

`[[TracJSGanttChart(sample=1)]]` displays a Gantt chart as expected.

But these lines:
{{{
[[TracJSGanttChart(sample=1)]]

[[TracJSGanttChart(sample=1)]]

[[TracJSGanttChart(sample=1)]]
}}}
don't display 3 Gantt charts. Only 1 displayed."	anonymous
14120	doResourceLeveling ignore startDate	defect		Chris Nelson	new	2022-03-10T14:10:27+01:00	2022-03-10T14:10:27+01:00	If a ticket has a start date set and doResolveLeveling=1 then Gant produces the same output as there is no start date set. If the start date is in the past, all future tickets without a start date should be scheduled after this ticket end.	marcin.postek@…
11489	Collapse/Uncollapse works only for first Gantt displayed in same page	defect	1.0	Chris Nelson	accepted	2014-01-09T21:42:00+01:00	2014-04-16T22:43:55+02:00	"When having multiple graphs in the same page, the +/- collapse tool might collapse/uncollapse the group in the other graph. The JS onclick event listener seems to look for ""span#group_[ticket_id]"", which would match the same ticket displayed in another graph (with same, or more likely, different configuration). It seems to only affect the first match found.

I think this would be solved if the graph id ""g_[graph_id]"" could be prepended or appended to the group id string in the so that it only affects the correct graph."	Jorge Ortiz
