taskjuggler 3.2.0 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (320) hide show
  1. data/CHANGELOG +30 -0
  2. data/README.rdoc +1 -0
  3. data/data/tjp.vim +13 -9
  4. data/lib/taskjuggler/Allocation.rb +2 -2
  5. data/lib/taskjuggler/AttributeBase.rb +10 -0
  6. data/lib/taskjuggler/Attributes.rb +2 -8
  7. data/lib/taskjuggler/Journal.rb +20 -19
  8. data/lib/taskjuggler/PTNProxy.rb +14 -1
  9. data/lib/taskjuggler/ProjectFileParser.rb +3 -0
  10. data/lib/taskjuggler/ProjectFileScanner.rb +54 -44
  11. data/lib/taskjuggler/PropertyList.rb +32 -0
  12. data/lib/taskjuggler/PropertyTreeNode.rb +4 -0
  13. data/lib/taskjuggler/ResourceScenario.rb +53 -20
  14. data/lib/taskjuggler/RichText/Document.rb +7 -5
  15. data/lib/taskjuggler/RichText/Scanner.rb +38 -38
  16. data/lib/taskjuggler/RichText/TOCEntry.rb +1 -1
  17. data/lib/taskjuggler/TaskScenario.rb +78 -62
  18. data/lib/taskjuggler/TextParser.rb +4 -3
  19. data/lib/taskjuggler/TextParser/MacroTable.rb +3 -1
  20. data/lib/taskjuggler/TextParser/Scanner.rb +73 -58
  21. data/lib/taskjuggler/Tj3Config.rb +1 -1
  22. data/lib/taskjuggler/TjpSyntaxRules.rb +215 -67
  23. data/lib/taskjuggler/apps/Tj3Client.rb +1 -1
  24. data/lib/taskjuggler/daemon/ReportServer.rb +8 -1
  25. data/lib/taskjuggler/reports/ExportRE.rb +46 -0
  26. data/lib/taskjuggler/reports/MspXmlRE.rb +409 -0
  27. data/lib/taskjuggler/reports/Report.rb +29 -4
  28. data/lib/taskjuggler/reports/ReportBase.rb +0 -8
  29. data/lib/taskjuggler/reports/TableReport.rb +13 -3
  30. data/lib/taskjuggler/reports/TaskListRE.rb +1 -0
  31. data/lib/taskjuggler/reports/TjpExportRE.rb +1 -1
  32. data/manual/Rich_Text_Attributes +2 -2
  33. data/manual/Tutorial +15 -11
  34. data/manual/html/Day_To_Day_Juggling.html +1 -1
  35. data/manual/html/Getting_Started.html +1 -1
  36. data/manual/html/How_To_Contribute.html +1 -1
  37. data/manual/html/Installation.html +1 -1
  38. data/manual/html/Intro.html +1 -1
  39. data/manual/html/Reporting_Bugs.html +1 -1
  40. data/manual/html/Rich_Text_Attributes.html +1 -1
  41. data/manual/html/Software.html +1 -1
  42. data/manual/html/TaskJuggler_2x_Migration.html +1 -1
  43. data/manual/html/TaskJuggler_Internals.html +1 -1
  44. data/manual/html/The_TaskJuggler_Syntax.html +1 -1
  45. data/manual/html/Tutorial.html +5 -2
  46. data/manual/html/account.html +1 -1
  47. data/manual/html/account.task.html +1 -1
  48. data/manual/html/accountprefix.html +1 -1
  49. data/manual/html/accountreport.html +9 -3
  50. data/manual/html/accountroot.html +1 -1
  51. data/manual/html/active.html +1 -1
  52. data/manual/html/adopt.task.html +3 -3
  53. data/manual/html/aggregate.html +1 -1
  54. data/manual/html/alert.html +1 -1
  55. data/manual/html/alertlevels.html +1 -1
  56. data/manual/html/allocate.html +5 -2
  57. data/manual/html/alphabet.html +1 -1
  58. data/manual/html/alternative.html +1 -1
  59. data/manual/html/author.html +1 -1
  60. data/manual/html/balance.html +1 -1
  61. data/manual/html/booking.resource.html +1 -1
  62. data/manual/html/booking.task.html +1 -1
  63. data/manual/html/caption.html +1 -1
  64. data/manual/html/cellcolor.column.html +1 -1
  65. data/manual/html/celltext.column.html +43 -4
  66. data/manual/html/center.html +1 -1
  67. data/manual/html/charge.html +1 -1
  68. data/manual/html/chargeset.html +2 -2
  69. data/manual/html/columnid.html +6 -6
  70. data/manual/html/columns.html +1 -1
  71. data/manual/html/complete.html +1 -1
  72. data/manual/html/copyright.html +1 -1
  73. data/manual/html/credits.html +1 -1
  74. data/manual/html/currency.html +1 -1
  75. data/manual/html/currencyformat.html +1 -1
  76. data/manual/html/dailymax.html +1 -1
  77. data/manual/html/dailymin.html +1 -1
  78. data/manual/html/dailyworkinghours.html +1 -1
  79. data/manual/html/date.extend.html +1 -1
  80. data/manual/html/date.html +2 -2
  81. data/manual/html/definitions.html +1 -1
  82. data/manual/html/depends.html +1 -1
  83. data/manual/html/details.html +1 -1
  84. data/manual/html/disabled.html +1 -1
  85. data/manual/html/duration.html +1 -1
  86. data/manual/html/efficiency.html +1 -1
  87. data/manual/html/effort.html +1 -1
  88. data/manual/html/email.html +1 -1
  89. data/manual/html/enabled.html +1 -1
  90. data/manual/html/end.column.html +1 -1
  91. data/manual/html/end.html +1 -1
  92. data/manual/html/end.limit.html +1 -1
  93. data/manual/html/end.report.html +9 -3
  94. data/manual/html/end.timesheet.html +1 -1
  95. data/manual/html/endcredit.html +1 -1
  96. data/manual/html/epilog.html +1 -1
  97. data/manual/html/export.html +73 -5
  98. data/manual/html/extend.html +1 -1
  99. data/manual/html/fail.html +1 -1
  100. data/manual/html/fdl.html +1 -1
  101. data/manual/html/flags.account.html +1 -1
  102. data/manual/html/flags.html +1 -1
  103. data/manual/html/flags.journalentry.html +1 -1
  104. data/manual/html/flags.report.html +1 -1
  105. data/manual/html/flags.resource.html +1 -1
  106. data/manual/html/flags.statussheet.html +1 -1
  107. data/manual/html/flags.task.html +1 -1
  108. data/manual/html/flags.timesheet.html +1 -1
  109. data/manual/html/fontcolor.column.html +1 -1
  110. data/manual/html/footer.html +1 -1
  111. data/manual/html/formats.export.html +72 -0
  112. data/manual/html/formats.html +3 -3
  113. data/manual/html/functions.html +3 -3
  114. data/manual/html/gapduration.html +2 -2
  115. data/manual/html/gaplength.html +1 -1
  116. data/manual/html/halign.center.html +1 -1
  117. data/manual/html/halign.column.html +1 -1
  118. data/manual/html/halign.left.html +1 -1
  119. data/manual/html/halign.right.html +1 -1
  120. data/manual/html/hasalert.html +1 -1
  121. data/manual/html/header.html +1 -1
  122. data/manual/html/headline.html +1 -1
  123. data/manual/html/height.html +1 -1
  124. data/manual/html/hideaccount.html +1 -1
  125. data/manual/html/hidejournalentry.html +1 -1
  126. data/manual/html/hidereport.html +1 -1
  127. data/manual/html/hideresource.html +1 -1
  128. data/manual/html/hidetask.html +1 -1
  129. data/manual/html/icalreport.html +1 -1
  130. data/manual/html/include.macro.html +1 -1
  131. data/manual/html/include.project.html +1 -1
  132. data/manual/html/include.properties.html +1 -1
  133. data/manual/html/index.html +1 -1
  134. data/manual/html/inherit.extend.html +1 -1
  135. data/manual/html/interval1.html +2 -2
  136. data/manual/html/interval2.html +2 -2
  137. data/manual/html/interval3.html +2 -2
  138. data/manual/html/interval4.html +2 -2
  139. data/manual/html/isactive.html +1 -1
  140. data/manual/html/ischildof.html +1 -1
  141. data/manual/html/isdependencyof.html +1 -1
  142. data/manual/html/isdutyof.html +1 -1
  143. data/manual/html/isfeatureof.html +1 -1
  144. data/manual/html/isleaf.html +1 -1
  145. data/manual/html/ismilestone.html +1 -1
  146. data/manual/html/isongoing.html +1 -1
  147. data/manual/html/isresource.html +1 -1
  148. data/manual/html/isresponsibilityof.html +1 -1
  149. data/manual/html/istask.html +1 -1
  150. data/manual/html/journalattributes.html +1 -1
  151. data/manual/html/journalentry.html +1 -1
  152. data/manual/html/journalmode.html +11 -3
  153. data/manual/html/leaveallowance.html +1 -1
  154. data/manual/html/leaves.html +1 -1
  155. data/manual/html/left.html +1 -1
  156. data/manual/html/length.html +1 -1
  157. data/manual/html/limits.allocate.html +1 -1
  158. data/manual/html/limits.html +1 -1
  159. data/manual/html/limits.resource.html +1 -1
  160. data/manual/html/limits.task.html +1 -1
  161. data/manual/html/listitem.column.html +1 -1
  162. data/manual/html/listtype.column.html +1 -1
  163. data/manual/html/loadunit.html +2 -2
  164. data/manual/html/logicalexpression.html +1 -1
  165. data/manual/html/logicalflagexpression.html +1 -1
  166. data/manual/html/macro.html +1 -1
  167. data/manual/html/managers.html +1 -1
  168. data/manual/html/mandatory.html +1 -1
  169. data/manual/html/maxend.html +1 -1
  170. data/manual/html/maximum.html +1 -1
  171. data/manual/html/maxstart.html +1 -1
  172. data/manual/html/milestone.html +1 -1
  173. data/manual/html/minend.html +1 -1
  174. data/manual/html/minimum.html +1 -1
  175. data/manual/html/minstart.html +1 -1
  176. data/manual/html/monthlymax.html +1 -1
  177. data/manual/html/monthlymin.html +1 -1
  178. data/manual/html/navbar.html +5 -1
  179. data/manual/html/navigator.html +1 -1
  180. data/manual/html/newtask.html +1 -1
  181. data/manual/html/nikureport.html +1 -1
  182. data/manual/html/note.task.html +1 -1
  183. data/manual/html/now.html +1 -1
  184. data/manual/html/numberformat.html +1 -1
  185. data/manual/html/onend.html +1 -1
  186. data/manual/html/onstart.html +1 -1
  187. data/manual/html/opennodes.html +1 -1
  188. data/manual/html/overtime.booking.html +1 -1
  189. data/manual/html/period.column.html +1 -1
  190. data/manual/html/period.limit.html +1 -1
  191. data/manual/html/period.report.html +1 -1
  192. data/manual/html/period.task.html +1 -1
  193. data/manual/html/persistent.html +1 -1
  194. data/manual/html/precedes.html +1 -1
  195. data/manual/html/priority.html +1 -1
  196. data/manual/html/priority.timesheet.html +1 -1
  197. data/manual/html/project.html +1 -1
  198. data/manual/html/projectid.html +1 -1
  199. data/manual/html/projectid.task.html +1 -1
  200. data/manual/html/projectids.html +1 -1
  201. data/manual/html/projection.html +1 -1
  202. data/manual/html/prolog.html +1 -1
  203. data/manual/html/properties.html +1 -1
  204. data/manual/html/purge.html +8 -5
  205. data/manual/html/rate.html +1 -1
  206. data/manual/html/rate.resource.html +1 -1
  207. data/manual/html/reference.extend.html +1 -1
  208. data/manual/html/remaining.html +1 -1
  209. data/manual/html/replace.html +1 -1
  210. data/manual/html/reportprefix.html +1 -1
  211. data/manual/html/resource.html +1 -1
  212. data/manual/html/resourceattributes.html +1 -1
  213. data/manual/html/resourceprefix.html +1 -1
  214. data/manual/html/resourcereport.html +9 -3
  215. data/manual/html/resourceroot.html +1 -1
  216. data/manual/html/resources.limit.html +1 -1
  217. data/manual/html/responsible.html +1 -1
  218. data/manual/html/richtext.extend.html +1 -1
  219. data/manual/html/right.html +1 -1
  220. data/manual/html/rollupaccount.html +1 -1
  221. data/manual/html/rollupresource.html +1 -1
  222. data/manual/html/rolluptask.html +1 -1
  223. data/manual/html/scale.column.html +1 -1
  224. data/manual/html/scenario.html +1 -1
  225. data/manual/html/scenario.ical.html +1 -1
  226. data/manual/html/scenarios.export.html +1 -1
  227. data/manual/html/scenarios.html +1 -1
  228. data/manual/html/scenariospecific.extend.html +1 -1
  229. data/manual/html/scheduled.html +2 -2
  230. data/manual/html/scheduling.html +1 -1
  231. data/manual/html/select.html +1 -1
  232. data/manual/html/selfcontained.html +1 -1
  233. data/manual/html/shift.allocate.html +1 -1
  234. data/manual/html/shift.html +1 -1
  235. data/manual/html/shift.resource.html +1 -1
  236. data/manual/html/shift.task.html +1 -1
  237. data/manual/html/shift.timesheet.html +1 -1
  238. data/manual/html/shifts.allocate.html +1 -1
  239. data/manual/html/shifts.resource.html +1 -1
  240. data/manual/html/shifts.task.html +1 -1
  241. data/manual/html/shorttimeformat.html +1 -1
  242. data/manual/html/sloppy.booking.html +1 -1
  243. data/manual/html/sloppy.projection.html +1 -1
  244. data/manual/html/sortaccounts.html +1 -1
  245. data/manual/html/sortjournalentries.html +1 -1
  246. data/manual/html/sortresources.html +1 -1
  247. data/manual/html/sorttasks.html +1 -1
  248. data/manual/html/start.column.html +1 -1
  249. data/manual/html/start.html +1 -1
  250. data/manual/html/start.limit.html +1 -1
  251. data/manual/html/start.report.html +1 -1
  252. data/manual/html/startcredit.html +1 -1
  253. data/manual/html/status.statussheet.html +1 -1
  254. data/manual/html/status.timesheet.html +1 -1
  255. data/manual/html/statussheet.html +1 -1
  256. data/manual/html/statussheetreport.html +1 -1
  257. data/manual/html/strict.projection.html +1 -1
  258. data/manual/html/summary.html +1 -1
  259. data/manual/html/supplement.html +1 -1
  260. data/manual/html/supplement.resource.html +1 -1
  261. data/manual/html/supplement.task.html +1 -1
  262. data/manual/html/tagfile.html +1 -1
  263. data/manual/html/task.html +1 -1
  264. data/manual/html/task.statussheet.html +1 -1
  265. data/manual/html/task.timesheet.html +1 -1
  266. data/manual/html/taskattributes.html +1 -1
  267. data/manual/html/taskprefix.html +1 -1
  268. data/manual/html/taskreport.html +9 -3
  269. data/manual/html/taskroot.export.html +104 -0
  270. data/manual/html/taskroot.html +3 -3
  271. data/manual/html/text.extend.html +3 -3
  272. data/manual/html/textreport.html +9 -3
  273. data/manual/html/timeformat.html +1 -1
  274. data/manual/html/timeoff.nikureport.html +1 -1
  275. data/manual/html/timesheet.html +1 -1
  276. data/manual/html/timesheetreport.html +1 -1
  277. data/manual/html/timezone.export.html +1 -1
  278. data/manual/html/timezone.html +1 -1
  279. data/manual/html/timezone.report.html +1 -1
  280. data/manual/html/timezone.shift.html +1 -1
  281. data/manual/html/timingresolution.html +1 -1
  282. data/manual/html/title.column.html +1 -1
  283. data/manual/html/title.html +1 -1
  284. data/manual/html/toc.html +203 -189
  285. data/manual/html/tooltip.column.html +1 -1
  286. data/manual/html/tracereport.html +9 -3
  287. data/manual/html/trackingscenario.html +1 -1
  288. data/manual/html/treelevel.html +1 -1
  289. data/manual/html/vacation.html +1 -1
  290. data/manual/html/vacation.resource.html +1 -1
  291. data/manual/html/vacation.shift.html +1 -1
  292. data/manual/html/warn.html +1 -1
  293. data/manual/html/weeklymax.html +1 -1
  294. data/manual/html/weeklymin.html +1 -1
  295. data/manual/html/weekstartsmonday.html +1 -1
  296. data/manual/html/weekstartssunday.html +1 -1
  297. data/manual/html/width.column.html +1 -1
  298. data/manual/html/width.html +1 -1
  299. data/manual/html/work.html +1 -1
  300. data/manual/html/workinghours.project.html +1 -1
  301. data/manual/html/workinghours.resource.html +1 -1
  302. data/manual/html/workinghours.shift.html +1 -1
  303. data/manual/html/yearlyworkingdays.html +1 -1
  304. data/test/TestSuite/CSV-Reports/project-1.tji +0 -6
  305. data/test/TestSuite/CSV-Reports/refs/alert.csv +0 -7
  306. data/test/TestSuite/CSV-Reports/refs/celltext.csv +0 -7
  307. data/test/TestSuite/CSV-Reports/refs/resourcereport_with_tasks.csv +0 -3
  308. data/test/TestSuite/CSV-Reports/refs/sortByTree.csv +0 -7
  309. data/test/TestSuite/CSV-Reports/refs/sortBy_duration.down.csv +0 -7
  310. data/test/TestSuite/CSV-Reports/refs/sortBy_effort.up.csv +0 -7
  311. data/test/TestSuite/CSV-Reports/refs/sortBy_plan.start.down.csv +0 -7
  312. data/test/TestSuite/CSV-Reports/refs/taskreport.csv +0 -7
  313. data/test/TestSuite/CSV-Reports/refs/taskreport_with_resources.csv +0 -18
  314. data/test/TestSuite/CSV-Reports/refs/weekly.csv +0 -1
  315. data/test/TestSuite/HTML-Reports/Alerts-2.tjp +46 -0
  316. data/test/TestSuite/Scheduler/Correct/purge.tjp +30 -0
  317. data/test/TestSuite/Syntax/Correct/Export.tjp +8 -2
  318. data/test/TestSuite/Syntax/Correct/tutorial.tjp +0 -1
  319. metadata +16 -10
  320. data/test/TestSuite/CSV-Reports/refs/taskcounter.csv +0 -9
@@ -20,7 +20,7 @@ require 'taskjuggler/reports/TaskListRE'
20
20
  require 'taskjuggler/reports/ResourceListRE'
21
21
  require 'taskjuggler/reports/TraceReport'
22
22
  require 'taskjuggler/reports/TagFile'
23
- require 'taskjuggler/reports/TjpExportRE'
23
+ require 'taskjuggler/reports/ExportRE'
24
24
  require 'taskjuggler/reports/StatusSheetReport'
25
25
  require 'taskjuggler/reports/TimeSheetReport'
26
26
  require 'taskjuggler/reports/NikuReport'
@@ -95,6 +95,8 @@ class TaskJuggler
95
95
  generateNiku
96
96
  when :tjp
97
97
  generateTJP
98
+ when :mspxml
99
+ generateMspXml
98
100
  else
99
101
  raise 'Unknown report output format #{format}.'
100
102
  end
@@ -118,7 +120,7 @@ class TaskJuggler
118
120
  when :accountreport
119
121
  @content = AccountListRE.new(self)
120
122
  when :export
121
- @content = TjpExportRE.new(self)
123
+ @content = ExportRE.new(self)
122
124
  when :iCal
123
125
  @content = ICalReport.new(self)
124
126
  when :niku
@@ -280,7 +282,7 @@ EOT
280
282
  end
281
283
  end
282
284
 
283
- # Generate time sheet drafts.
285
+ # Generate the report in TJP format.
284
286
  def generateTJP
285
287
  unless @content.respond_to?('to_tjp')
286
288
  warning('tjp_not_supported',
@@ -304,6 +306,29 @@ EOT
304
306
  end
305
307
  end
306
308
 
309
+ # Generate the report in Microsoft Project XML format.
310
+ def generateMspXml
311
+ unless @content.respond_to?('to_mspxml')
312
+ warning('mspxml_not_supported',
313
+ "Microsoft Project XML format is not supported for " +
314
+ "report #{@id} of type #{@typeSpec}.")
315
+ return nil
316
+ end
317
+
318
+ begin
319
+ fileName = '.'
320
+ if @name == '.'
321
+ $stdout.write(@content.to_mspxml)
322
+ else
323
+ fileName = (@name[0] == '/' ? '' : @project.outputDir) + @name + '.xml'
324
+ fileName.untaint
325
+ File.open(fileName, 'w') { |f| f.write(@content.to_mspxml) }
326
+ end
327
+ rescue IOError, SystemCallError
328
+ error('write_mspxml', "Cannot write to file #{fileName}.\n#{$!}")
329
+ end
330
+ end
331
+
307
332
  # Generate Niku report
308
333
  def generateNiku
309
334
  unless @content.respond_to?('to_niku')
@@ -323,7 +348,7 @@ EOT
323
348
  end
324
349
  end
325
350
 
326
- # Generate Niku report
351
+ # Generate the report in iCal format.
327
352
  def generateICal
328
353
  unless @content.respond_to?('to_iCal')
329
354
  warning('ical_not_supported',
@@ -38,14 +38,6 @@ class TaskJuggler
38
38
  end
39
39
  end
40
40
 
41
- def to_html
42
- raise 'This function must be overriden by derived classes.'
43
- end
44
-
45
- def to_csv
46
- raise 'This function must be overriden by derived classes.'
47
- end
48
-
49
41
  # Take the complete account list and remove all accounts that are matching
50
42
  # the hide expression, the rollup Expression or are not a descendent of
51
43
  # accountroot.
@@ -307,10 +307,19 @@ class TaskJuggler
307
307
  rStart -= margin
308
308
  rEnd += margin
309
309
 
310
+ # This could cause rStart to be larger than rEnd.
311
+ rStart = origStart if doNotAdjustStart
312
+ rEnd = origEnd if doNotAdjustEnd
313
+
314
+ # Ensure that we have a valid interval. If not, go back to the
315
+ # original interval dates.
316
+ if rStart >= rEnd
317
+ rStart = origStart
318
+ rEnd = origEnd
319
+ end
320
+
310
321
  # Save the adjusted dates to the columns Hash.
311
- @columns[columnDef] = TableReportColumn.new(
312
- doNotAdjustStart ? origStart : rStart,
313
- doNotAdjustEnd ? origEnd : rEnd)
322
+ @columns[columnDef] = TableReportColumn.new(rStart, rEnd)
314
323
  end
315
324
  end
316
325
 
@@ -328,6 +337,7 @@ class TaskJuggler
328
337
  # table.
329
338
  gantt = GanttChart.new(a('now'),
330
339
  a('weekStartsMonday'), self)
340
+
331
341
  gantt.generateByScale(rStart, rEnd, columnDef.scale)
332
342
  # The header consists of 2 lines separated by a 1 pixel boundary.
333
343
  gantt.header.height = @table.headerLineHeight * 2 + 1
@@ -42,6 +42,7 @@ class TaskJuggler
42
42
  @report.get('rollupTask'),
43
43
  @report.get('openNodes'))
44
44
  taskList.sort!
45
+ taskList.checkForDuplicates(@report.sourceFileInfo)
45
46
 
46
47
  # Prepare the resource list. Don't filter it yet! It would break the
47
48
  # *_() LogicalFunctions.
@@ -480,7 +480,7 @@ class TaskJuggler
480
480
  end
481
481
 
482
482
  def quotedString(str)
483
- if str[-1] == ?\n
483
+ if str.include?("\n")
484
484
  "-8<-\n#{str}\n->8-"
485
485
  else
486
486
  escaped = str.gsub("\"", '\"')
@@ -225,8 +225,8 @@ requested attribute is scenario specific.
225
225
 
226
226
  * ''''end'''' : The end date of the report period of the current report.
227
227
 
228
- * ''''loadunit'''' : The [[loadunit]] that should be used in case the
229
- requested attribute is an effort or duration value.
228
+ * ''''loadunit'''' : The [[loadunit]] that should be used in
229
+ case the requested attribute is an effort or duration value.
230
230
 
231
231
  * ''''timeformat'''' : The [[timeformat]] used to format date attributes.
232
232
 
@@ -9,11 +9,15 @@ demonstrates most of the commonly used features of TaskJuggler. It
9
9
  also includes some of the more advanced concepts that you may or may
10
10
  not need for your projects. Don't get scared by them. You can use
11
11
  them once you are more familiar with TaskJuggler and your projects
12
- grow larger. The complete tutorial example can be downloaded
13
- [http://www.taskjuggler.org/tj3/examples/Tutorial/tutorial.tjp here].
14
- You can use any plain text editor to view and modify it. The
15
- resulting reports can be found
16
- [http://www.taskjuggler.org/tj3/examples/Tutorial/Overview.html here].
12
+ grow larger. The complete tutorial example comes with your
13
+ TaskJuggler software installation. You can use the following command
14
+ to find the base directory of the example projects.
15
+
16
+ ruby19 -e "puts Gem::Specification.find_by_name('taskjuggler').gem_dir"
17
+
18
+ The file for the tutorial project is called
19
+ ''''examples/Tutorial/tutorial.tjp''''. You can use any plain text
20
+ editor to view and modify it.
17
21
 
18
22
  === Starting the project ===
19
23
 
@@ -591,12 +595,12 @@ syntax uses, but also like to include the weekday. To change the date
591
595
  format, the [[timeformat]] attribute can be used.
592
596
 
593
597
  The project will last a few weeks. The most convenient unit to list
594
- efforts in is man or resource days. The [[loadunit]] attribute tells
595
- TaskJuggler to list the load of each task or resource in man days.
596
- Since this will just be a number without a unit, it is advisable to
597
- include a small hint for the reader that these values are indeed man
598
- or resource days. The caption of the table is a convenient place to
599
- put this information by using the [[caption]] attribute.
598
+ efforts in is man or resource days. The [[loadunit]] attribute
599
+ tells TaskJuggler to list the load of each task or resource in man
600
+ days. Since this will just be a number without a unit, it is
601
+ advisable to include a small hint for the reader that these values are
602
+ indeed man or resource days. The caption of the table is a convenient
603
+ place to put this information by using the [[caption]] attribute.
600
604
 
601
605
  <[example file="tutorial" tag="overview3"]>
602
606
 
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>Day_To_Day_Juggling</title>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>Getting_Started</title>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>How_To_Contribute</title>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>Installation</title>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>Intro</title>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>Reporting_Bugs</title>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>Rich_Text_Attributes</title>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>Software</title>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>TaskJuggler_2x_Migration</title>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>TaskJuggler_Internals</title>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>The_TaskJuggler_Syntax</title>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>Tutorial</title>
@@ -23,7 +23,10 @@
23
23
  <br/>
24
24
  <div style="width:90%; margin-left:5%; margin-right:5%"><div class="manual">
25
25
  <h1 class="manual" id="The_Tutorial_Your_first_Project">4 The Tutorial: Your first Project</h1>
26
- <p class="manual">We have mentioned already that TaskJuggler uses plain text files that capture the known parts of the project. As you will see now, the syntax of these files is easy to understand and very intuitive. This chapter will walk you step by step through your first project. You create the project plan for a made-up accounting software project. This project demonstrates most of the commonly used features of TaskJuggler. It also includes some of the more advanced concepts that you may or may not need for your projects. Don't get scared by them. You can use them once you are more familiar with TaskJuggler and your projects grow larger. The complete tutorial example can be downloaded <a href="http://www.taskjuggler.org/tj3/examples/Tutorial/tutorial.tjp" target="_top">here</a>. You can use any plain text editor to view and modify it. The resulting reports can be found <a href="http://www.taskjuggler.org/tj3/examples/Tutorial/Overview.html" target="_top">here</a>.</p>
26
+ <p class="manual">We have mentioned already that TaskJuggler uses plain text files that capture the known parts of the project. As you will see now, the syntax of these files is easy to understand and very intuitive. This chapter will walk you step by step through your first project. You create the project plan for a made-up accounting software project. This project demonstrates most of the commonly used features of TaskJuggler. It also includes some of the more advanced concepts that you may or may not need for your projects. Don't get scared by them. You can use them once you are more familiar with TaskJuggler and your projects grow larger. The complete tutorial example comes with your TaskJuggler software installation. You can use the following command to find the base directory of the example projects.</p>
27
+ <div class="manual" codesection="1"><pre class="manual" codesection="1"> ruby19 -e "puts Gem::Specification.find_by_name('taskjuggler').gem_dir"
28
+ </pre></div>
29
+ <p class="manual">The file for the tutorial project is called <code class="manual">examples/Tutorial/tutorial.tjp</code>. You can use any plain text editor to view and modify it.</p>
27
30
  <h2 class="manual" id="Starting_the_project">4.1 Starting the project</h2>
28
31
  <p class="manual">Every TaskJuggler project file must start with the <a href="project.html">project</a> property. It tells TaskJuggler the name of your project and a start and end date. The start and end dates don't need to be exact, but must fit all tasks of the project. It is the time interval the TaskJuggler scheduler will use to fit the tasks in. So, make it large enough for all your tasks to fit in. But don't make it too large, because this will result in longer scheduling times and higher memory consumption.</p>
29
32
  <div class="codeframe"><pre class="code">project acso "Accounting Software" 2002-01-16 +4m {
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>account</title>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>account.task</title>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>accountprefix</title>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>accountreport</title>
@@ -65,7 +65,7 @@
65
65
  <tr align="left">
66
66
  <td class="tag">Context</td>
67
67
  <td class="descr" colspan="2">
68
- <a href="accountreport.html">accountreport</a>, <a href="properties.html">properties</a>, <a href="resourcereport.html">resourcereport</a>, <a href="taskreport.html">taskreport</a>, <a href="textreport.html">textreport</a>, <a href="tracereport.html">tracereport</a>
68
+ <a href="accountreport.html">accountreport</a>, <a href="export.html">export</a>, <a href="properties.html">properties</a>, <a href="resourcereport.html">resourcereport</a>, <a href="taskreport.html">taskreport</a>, <a href="textreport.html">textreport</a>, <a href="tracereport.html">tracereport</a>
69
69
  </td>
70
70
  </tr>
71
71
  </table></p>
@@ -78,7 +78,7 @@
78
78
  <col width="20%"></col>
79
79
  </colgroup>
80
80
  <tr align="left">
81
- <td class="tag" rowspan="50">Attributes</td>
81
+ <td class="tag" rowspan="51">Attributes</td>
82
82
  <td class="tag">Name</td>
83
83
  <td class="tag">Scen. spec.</td>
84
84
  <td class="tag">Inh. fm. Global</td>
@@ -138,6 +138,12 @@
138
138
  <td align="center" class="descr"></td>
139
139
  <td align="center" class="descr">x</td>
140
140
  </tr>
141
+ <tr align="left">
142
+ <td align="left" class="descr"><a href="export.html">export</a></td>
143
+ <td align="center" class="descr"></td>
144
+ <td align="center" class="descr"></td>
145
+ <td align="center" class="descr"></td>
146
+ </tr>
141
147
  <tr align="left">
142
148
  <td align="left" class="descr"><a href="flags.report.html">flags (report)</a></td>
143
149
  <td align="center" class="descr"></td>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>accountroot</title>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>active</title>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>adopt.task</title>
@@ -38,8 +38,8 @@
38
38
  <tr align="left">
39
39
  <td class="tag">Purpose</td>
40
40
  <td class="descr" colspan="2"><div>
41
- <p>Add a previously defined task to the sub-tasks of this task. This can be used to create virtual sub projects that contain of task trees that were defined as sub tasks of other tasks. Adopted tasks don't inherit anything from their step parents. However, the adopting task is scheduled to fit all adopted childs as well.</p>
42
- <p>A top-level tasks must never include the same task more than once.</p>
41
+ <p>Add a previously defined task and its sub-tasks to this task. This can be used to create virtual projects that contain task (sub-)trees that are originally defined in another task context. Adopted tasks don't inherit anything from their step parents. However, the adopting task is scheduled to fit all adopted sub-tasks.</p>
42
+ <p>A top-level task and all its sub-tasks must never contain the same task more than once. All reports must use appropriate filters by setting <a href="taskroot.html">taskroot</a>, <a href="hidetask.html">hidetask</a> or <a href="rolluptask.html">rolluptask</a> to ensure that no tasks are contained more than once in the report.</p>
43
43
  </div></td>
44
44
  </tr>
45
45
  <tr align="left">
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>aggregate</title>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>alert</title>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>alertlevels</title>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>allocate</title>
@@ -36,7 +36,10 @@
36
36
  </colgroup>
37
37
  <tr align="left">
38
38
  <td class="tag">Purpose</td>
39
- <td class="descr" colspan="2"><div>Specify which resources should be allocated to the task. The attributes provide numerous ways to control which resource is used and when exactly it will be assigned to the task. Shifts and limits can be used to restrict the allocation to certain time intervals or to limit them to a certain maximum per time period. The purge statement can be used to remove inherited allocations or flags.</div></td>
39
+ <td class="descr" colspan="2"><div>
40
+ <p>Specify which resources should be allocated to the task. The attributes provide numerous ways to control which resource is used and when exactly it will be assigned to the task. Shifts and limits can be used to restrict the allocation to certain time intervals or to limit them to a certain maximum per time period. The purge statement can be used to remove inherited allocations or flags.</p>
41
+ <p>For effort-based tasks the task duration is clipped to only extend from the begining of the first allocation to the end of the last allocation. This is done to optimize for an overall minimum project duration as dependent tasks can potentially use the unallocated, clipped slots.</p>
42
+ </div></td>
40
43
  </tr>
41
44
  <tr align="left">
42
45
  <td class="tag">Syntax</td>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>TaskJuggler Syntax Reference Navigator</title>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE>
2
- <!-- This file has been generated by tj3man v3.2.0 -->
2
+ <!-- This file has been generated by tj3man v3.3.0 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>alternative</title>